<?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>11407</bug_id>
          
          <creation_ts>2006-10-24 16:28:05 -0700</creation_ts>
          <short_desc>[S60] Plugin scripting not working</short_desc>
          <delta_ts>2006-11-11 21:14:33 -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>Plug-ins</component>
          <version>312.x</version>
          <rep_platform>S60 Hardware</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sriram">sriram.yadavalli</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>50535</commentid>
    <comment_count>0</comment_count>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-24 16:28:05 -0700</bug_when>
    <thetext>Scriptable plugin is not working</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50536</commentid>
    <comment_count>1</comment_count>
      <attachid>11197</attachid>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-24 16:39:40 -0700</bug_when>
    <thetext>Created attachment 11197
Scriptable plugin and widget API implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50537</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2006-10-24 17:44:01 -0700</bug_when>
    <thetext>i&apos;m not sure what the policy is on exporting files to epoc32\include\oem. please check that first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49728</commentid>
    <comment_count>3</comment_count>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-25 07:23:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; i&apos;m not sure what the policy is on exporting files to epoc32\include\oem.
&gt; please check that first.
&gt; 

Exports in the new set up need to be handled as follows:
// Export Browser Control headers
..\BrowserControl\inc\BrCtlDefs.h            MW_LAYER_DOMAIN_EXPORT_PATH(BrCtlDefs.h)

This shouldnt be done for SDK build



</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49734</commentid>
    <comment_count>4</comment_count>
      <attachid>11210</attachid>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-25 11:47:35 -0700</bug_when>
    <thetext>Created attachment 11210
Added change for widget identifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49735</commentid>
    <comment_count>5</comment_count>
      <attachid>11210</attachid>
    <who name="alan">zalan</who>
    <bug_when>2006-10-25 12:55:37 -0700</bug_when>
    <thetext>Comment on attachment 11210
Added change for widget identifier

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49737</commentid>
    <comment_count>6</comment_count>
      <attachid>11210</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2006-10-25 13:20:19 -0700</bug_when>
    <thetext>Comment on attachment 11210
Added change for widget identifier

Webkit changes not ok. IMPORT_C and EXPORT_C missing from the brctl.h and cpp files. FileTransaction changes should not be checked in. Please use void* in webkit for KJS::ObjectImp*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49738</commentid>
    <comment_count>7</comment_count>
      <attachid>11211</attachid>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-25 14:07:39 -0700</bug_when>
    <thetext>Created attachment 11211
Remove FileTransaction changes to previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49739</commentid>
    <comment_count>8</comment_count>
      <attachid>11212</attachid>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-25 14:18:54 -0700</bug_when>
    <thetext>Created attachment 11212
Remove File Transaction and use void* for passing js objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49740</commentid>
    <comment_count>9</comment_count>
      <attachid>11213</attachid>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-25 14:55:45 -0700</bug_when>
    <thetext>Created attachment 11213
Fix SDK build break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49744</commentid>
    <comment_count>10</comment_count>
      <attachid>11215</attachid>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-25 15:38:47 -0700</bug_when>
    <thetext>Created attachment 11215
Fix SDK build break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49645</commentid>
    <comment_count>11</comment_count>
      <attachid>11218</attachid>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2006-10-25 17:59:27 -0700</bug_when>
    <thetext>Created attachment 11218
Fix build break in SDK

If buikd breaks, remove &quot;\ No newline at end of file&quot; for utility &amp; algorithm files located in X:\s60\JavaScriptCore\bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49587</commentid>
    <comment_count>12</comment_count>
      <attachid>11218</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2006-10-26 06:29:37 -0700</bug_when>
    <thetext>Comment on attachment 11218
Fix build break in SDK

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49588</commentid>
    <comment_count>13</comment_count>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2006-10-26 06:34:50 -0700</bug_when>
    <thetext>committed r17301</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11197</attachid>
            <date>2006-10-24 16:39:40 -0700</date>
            <delta_ts>2006-10-25 11:47:35 -0700</delta_ts>
            <desc>Scriptable plugin and widget API implementation</desc>
            <filename>WidgetApi.patch</filename>
            <type>text/plain</type>
            <size>554957</size>
            <attacher name="Sriram">sriram.yadavalli</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQ0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQkocmV2aXNpb24gMCkNCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9hbGdvcml0aG0JKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDE4
MCBAQA0KKy8vIEJpdHMgYW5kIHBpZWNlcyB1c2VkIGluIGFsZ29yaXRobXMgLSotIEMrKyAtKi0N
CisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8gc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlDQor
Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8v
IFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUNCisvLyBs
aWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVz
IGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0
aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUgYW5kIGxp
bmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMNCisv
LyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUg
dG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRo
aXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBvdGhlciBy
ZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENvcHlyaWdo
dCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQZXJtaXNz
aW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdh
cmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBn
cmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBz
dXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBtYWtlcyBu
bw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0
d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91
dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHlyaWdodCAo
YykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMu
DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFu
ZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBw
dXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQg
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICog
dGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBo
aWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBv
ZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFz
IGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisNCisjaWZu
ZGVmIF9fQUxHT1JJVEhNDQorI2RlZmluZSBfX0FMR09SSVRITQ0KKw0KKyNkZWZpbmUgX19nbGli
Y3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9fQSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc192
YWxpZF9yYW5nZShfX0EsIF9fQikNCisNCituYW1lc3BhY2Ugc3RkDQorew0KKw0KKyAgdHlwZWRl
ZiBpbnQgcHRyZGlmZl90Ow0KKw0KKyAgI3VuZGVmIG1pbg0KKyAgI3VuZGVmIG1heA0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAg
ICogIEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0g
IGIgIEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRo
ZSBsZXNzZXIgb2YgdGhlIHBhcmFtZXRlcnMuDQorICAgKg0KKyAgICogIFRoaXMgaXMgdGhlIHNp
bXBsZSBjbGFzc2ljIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICBJdCB3aWxsIHdvcmsgb24NCisg
ICAqICB0ZW1wb3JhcnkgZXhwcmVzc2lvbnMsIHNpbmNlIHRoZXkgYXJlIG9ubHkgZXZhbHVhdGVk
IG9uY2UsIHVubGlrZSBhDQorICAgKiAgcHJlcHJvY2Vzc29yIG1hY3JvLg0KKyAgKi8NCisgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgaW5saW5lIGNvbnN0IF9UcCYNCisgICAgbWluKGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikNCisgICAgew0KKyAgICAgIGlmIChfX2IgPCBf
X2EpDQorCXJldHVybiBfX2I7DQorICAgICAgcmV0dXJuIF9fYTsNCisgICAgfQ0KKw0KKyAgLyoq
DQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAgICog
IEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0gIGIg
IEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRoZSBn
cmVhdGVyIG9mIHRoZSBwYXJhbWV0ZXJzLg0KKyAgICoNCisgICAqICBUaGlzIGlzIHRoZSBzaW1w
bGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAgSXQgd2lsbCB3b3JrIG9uDQorICAg
KiAgdGVtcG9yYXJ5IGV4cHJlc3Npb25zLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGV2YWx1YXRlZCBv
bmNlLCB1bmxpa2UgYQ0KKyAgICogIHByZXByb2Nlc3NvciBtYWNyby4NCisgICovDQorICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+DQorICAgIGlubGluZSBjb25zdCBfVHAmDQorICAgIG1heChjb25z
dCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpDQorICAgIHsNCisgICAgICBpZiAoX19hIDwgX19i
KQ0KKwlyZXR1cm4gX19iOw0KKyAgICAgIHJldHVybiBfX2E7DQorICAgIH0NCisgICAgDQorICAv
KioNCisgICAqICBAYnJpZWYgU3dhcHMgdHdvIHZhbHVlcy4NCisgICAqICBAcGFyYW0gIGEgIEEg
dGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHBhcmFtICBiICBBbm90aGVyIHRoaW5n
IG9mIGFyYml0cmFyeSB0eXBlLg0KKyAgICogIEByZXR1cm4gICBOb3RoaW5nLg0KKyAgICoNCisg
ICAqICBUaGlzIGlzIHRoZSBzaW1wbGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAg
SXQgd2lsbCB3b3JrIG9uDQorICAgKiAgYW55IHR5cGUgd2hpY2ggaGFzIGEgY29weSBjb25zdHJ1
Y3RvciBhbmQgYW4gYXNzaWdubWVudCBvcGVyYXRvci4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+DQorICAgIGlubGluZSB2b2lkDQorICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19i
KQ0KKyAgICB7DQorICAgICAgY29uc3QgX1RwIF9fdG1wID0gX19hOw0KKyAgICAgIF9fYSA9IF9f
YjsNCisgICAgICBfX2IgPSBfX3RtcDsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBs
aWVkIHZlcnNpb24gb2YgbGlic3RkYysrICogc3RkOjpjb3B5LA0KKyAgICogc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIG91ciBwdXJwb3NlLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+DQorICAgIGlubGluZSBfT3V0
cHV0SXRlcmF0b3INCisgICAgY29weSggX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQgKQ0KKyAgICB7DQorICAgICAg
ICBmb3IoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0ICkNCisgICAg
ICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAgICAgIHJldHVybiBfX3Jlc3VsdDsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBsaWVkIHZlcnNpb24gb2YgbGlic3RkYysr
ICogc3RkOjpmaWxsLA0KKyAgICogc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nl
Lg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVl
Pg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBmaWxsKCBfSXRlcmF0b3IgX19zdGFydCwgX0l0ZXJh
dG9yIF9fZW5kLCBfVmFsdWUgX192YWwgKQ0KKyAgICB7DQorICAgICAgICBmb3IoOyBfX3N0YXJ0
ICE9IF9fZW5kOyArK19fc3RhcnQgKQ0KKyAgICAgICAgICAgICpfX3N0YXJ0ID0gX192YWw7DQor
ICAgIH0NCisgICAgDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCB0eXBlbmFtZSBDb21wYXJl
Pg0KKyAgICAgIGlubGluZSB2b2lkIHNvcnQoVHlwZSogYmVnaW4sIFR5cGUqIGVuZCwgQ29tcGFy
ZSBjb21wYXJlKQ0KKyAgICB7DQorICAgIHN0YWJsZV9zb3J0KGJlZ2luLGVuZCxjb21wYXJlKTsN
CisgICAgfQ0KKyAgICANCisgIC8vIEZJWE1FIGJ1YmJsZXNvcnQNCisgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGUsIHR5cGVuYW1lIENvbXBhcmU+DQorICAgIGlubGluZSB2b2lkIHN0YWJsZV9zb3J0
KFR5cGUqIGJlZ2luLCBUeXBlKiBlbmQsIENvbXBhcmUgY29tcGFyZSkNCisgICAgew0KKyAgICAg
ICAgVHlwZSogZSA9IGVuZDsNCisgICAgICAgIHdoaWxlIChlIT1iZWdpbikgew0KKyAgICAgICAg
ICAgIGJvb2wgc29ydGVkID0gdHJ1ZTsNCisgICAgICAgICAgICBmb3IgKFR5cGUqIGkgPSBiZWdp
bjsgaSE9ZTsgaSsrKSB7DQorICAgICAgICAgICAgICAgIGlmICghY29tcGFyZSgqaSwqKGkrMSkp
KSB7DQorICAgICAgICAgICAgICAgICAgICBUeXBlIHRlbXAgPSAqaTsNCisgICAgICAgICAgICAg
ICAgICAgICppID0gKihpKzEpOw0KKyAgICAgICAgICAgICAgICAgICAgKihpKzEpPXRlbXA7DQor
ICAgICAgICAgICAgICAgICAgICBzb3J0ZWQgPSBmYWxzZTsNCisgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoc29ydGVkKQ0K
KyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBlLS07DQorICAgICAgICB9DQor
ICAgIH0NCit9DQorDQorI2VuZGlmDQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTEsNSArMSw1IEBADQogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMTE0ICsyMCw5NSBAQA0KICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KLSNpbmNsdWRlIDxjX2NsYXNzLmg+Ci0jaW5jbHVkZSA8Y19pbnN0YW5jZS5oPgotI2lu
Y2x1ZGUgPGNfcnVudGltZS5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJjX2NsYXNzLmgiCiAKLWJvb2wgTlBOX0lzVmFs
aWRJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5hbWUpOworI2luY2x1ZGUgImNfaW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJjX3J1bnRpbWUuaCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgor
I2luY2x1ZGUgImlkZW50aWZpZXIuaCIKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25EZWxldGUoKSB7
Ci0gICAgQ0ZSZWxlYXNlIChfZmllbGRzKTsKLSAgICBDRlJlbGVhc2UgKF9tZXRob2RzKTsKLX0K
LSAgICAKKy8vIEZJWE1FOiBTaG91bGQgdXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBDRkRpY3Rpb25h
cnkgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgZm9yIHBvcnRhYmlsaXR5LgogCi12b2lkIEND
bGFzczo6X2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZvdGhlcikgewotICAgIF9pc2EgPSBvdGhl
ci5faXNhOwotICAgIF9tZXRob2RzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weSAoTlVMTCwgb3Ro
ZXIuX21ldGhvZHMpOwotICAgIF9maWVsZHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVDb3B5IChOVUxM
LCBvdGhlci5fZmllbGRzKTsKLX0KLSAgICAKK25hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25Jbml0IChOUENsYXNzICphQ2xhc3MpCitD
Q2xhc3M6OkNDbGFzcyhOUENsYXNzKiBhQ2xhc3MpCiB7CiAgICAgX2lzYSA9IGFDbGFzczsKLSAg
ICBfbWV0aG9kcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKLSAgICBfZmllbGRzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsIE5V
TEwpOwogfQogCi0KLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9
IDA7Ci0KLXN0YXRpYyB2b2lkIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCitDQ2xh
c3M6On5DQ2xhc3MoKQogewotICAgIGlmIChjbGFzc2VzQnlJc0EgPT0gMCkKLSAgICAgICAgY2xh
c3Nlc0J5SXNBID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgTlVMTCwgTlVM
TCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKF9tZXRob2RzKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMo
X2ZpZWxkcyk7CiB9CiAKLUNDbGFzcyAqQ0NsYXNzOjpjbGFzc0ZvcklzQSAoTlBDbGFzcyAqaXNh
KQordHlwZWRlZiBIYXNoTWFwPE5QQ2xhc3MqLCBDQ2xhc3MqPiBDbGFzc2VzQnlJc0FNYXA7Citz
dGF0aWMgQ2xhc3Nlc0J5SXNBTWFwKiBjbGFzc2VzQnlJc0EgPSAwOworCitDQ2xhc3MqIENDbGFz
czo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQogewotICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJ
Zk5lY2Vzc2FyeSgpOwotICAgIAotICAgIENDbGFzcyAqYUNsYXNzID0gKENDbGFzcyAqKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgaXNhKTsKLSAgICBpZiAoYUNsYXNzID09IE5V
TEwpIHsKLSAgICAgICAgYUNsYXNzID0gbmV3IENDbGFzcyAoaXNhKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUgKGNsYXNzZXNCeUlzQSwgaXNhLCBhQ2xhc3MpOworICAgIGlmICghY2xh
c3Nlc0J5SXNBKQorICAgICAgICBjbGFzc2VzQnlJc0EgPSBuZXcgQ2xhc3Nlc0J5SXNBTWFwOwor
CisgICAgQ0NsYXNzKiBhQ2xhc3MgPSBjbGFzc2VzQnlJc0EtPmdldChpc2EpOworICAgIGlmICgh
YUNsYXNzKSB7CisgICAgICAgIGFDbGFzcyA9IG5ldyBDQ2xhc3MoaXNhKTsKKyAgICAgICAgY2xh
c3Nlc0J5SXNBLT5zZXQoaXNhLCBhQ2xhc3MpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBh
Q2xhc3M7CiB9CiAKLQotQ0NsYXNzOjpDQ2xhc3MgKE5QQ2xhc3MgKmlzYSkKK2NvbnN0IGNoYXIq
IENDbGFzczo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgX2NvbW1vbkluaXQgKGlzYSk7Ci19Ci0KLWNv
bnN0IGNoYXIgKkNDbGFzczo6bmFtZSgpIGNvbnN0Ci17CiAgICAgcmV0dXJuICIiOwogfQogCi1N
ZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKl9uYW1lLCBJbnN0YW5j
ZSAqaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0
IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7CiAKLSAgICBD
RlN0cmluZ1JlZiBtZXRob2ROYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBf
bmFtZSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSk7Ci0gICAgTWV0aG9kICptZXRob2QgPSAoTWV0
aG9kICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKF9tZXRob2RzLCBtZXRob2ROYW1lKTsKKyAgICBN
ZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChhLmFyZXAoKSk7CiAgICAgaWYgKG1ldGhvZCkg
ewotICAgICAgICBDRlJlbGVhc2UgKG1ldGhvZE5hbWUpOwogICAgICAgICBtZXRob2RMaXN0LmFk
ZE1ldGhvZChtZXRob2QpOwogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9Ci0gICAg
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChfbmFt
ZSk7Ci0gICAgY29uc3QgQ0luc3RhbmNlICppbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3Rh
bmNlKj4oaW5zdGFuY2UpOwotICAgIE5QT2JqZWN0ICpvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsK
LSAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2EtPmhhc01ldGhvZCAob2JqLCBpZGVudCkp
ewotICAgICAgICBNZXRob2QgKmFNZXRob2QgPSBuZXcgQ01ldGhvZCAoaWRlbnQpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpX21ldGhvZHMs
IG1ldGhvZE5hbWUsIGFNZXRob2QpOwotICAgICAgICBtZXRob2RMaXN0LmFkZE1ldGhvZCAoYU1l
dGhvZCk7CisKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cihhLmFzY2lpKCkpOworICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNv
bnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKKyAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0
T2JqZWN0KCk7CisgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2Jq
LCBpZGVudCkpeworICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7
IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIF9tZXRob2RzLnNl
dChhLmFyZXAoKSwgYU1ldGhvZCk7CisgICAgICAgIG1ldGhvZExpc3QuYWRkTWV0aG9kKGFNZXRo
b2QpOwogICAgIH0KIAotICAgIENGUmVsZWFzZSAobWV0aG9kTmFtZSk7Ci0gICAgCiAgICAgcmV0
dXJuIG1ldGhvZExpc3Q7CiB9CiAKIAotRmllbGQgKkNDbGFzczo6ZmllbGROYW1lZChjb25zdCBj
aGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogQ0NsYXNzOjpmaWVs
ZE5hbWVkKGNvbnN0IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QK
IHsKLSAgICBDRlN0cmluZ1JlZiBmaWVsZE5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KE5VTEwsIG5hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwotICAgIEZpZWxkICphRmllbGQg
PSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoX2ZpZWxkcywgZmllbGROYW1lKTsKLSAg
ICBpZiAoYUZpZWxkKSB7Ci0gICAgICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKKyAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQoYS5h
cmVwKCkpOworICAgIGlmIChhRmllbGQpCiAgICAgICAgIHJldHVybiBhRmllbGQ7Ci0gICAgfQog
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1l
KTsKLSAgICBjb25zdCBDSW5zdGFuY2UgKmluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFu
Y2UqPihpbnN0YW5jZSk7Ci0gICAgTlBPYmplY3QgKm9iaiA9IGluc3QtPmdldE9iamVjdCgpOwot
ICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9wZXJ0eSAob2JqLCBpZGVu
dCkpewotICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkIChpZGVudCk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlICgoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilfZmllbGRzLCBmaWVsZE5h
bWUsIGFGaWVsZCk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIoYS5hc2NpaSgpKTsKKyAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CisgICAgTlBPYmplY3QqIG9iaiA9IGluc3Qt
PmdldE9iamVjdCgpOworICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9w
ZXJ0eShvYmosIGlkZW50KSl7CisgICAgICAgIGFGaWVsZCA9IG5ldyBDRmllbGQoaWRlbnQpOyAv
LyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBfZmllbGRzLnNldChh
LmFyZXAoKSwgYUZpZWxkKTsKICAgICB9Ci0gICAgCi0gICAgQ0ZSZWxlYXNlIChmaWVsZE5hbWUp
OwotCiAgICAgcmV0dXJuIGFGaWVsZDsKLX07Cit9CisKK30KK30KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvYy9jX2NsYXNzLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL2MvY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsMTIgKzIwLDEzIEBA
DQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogI2lmbmRlZiBfQklORElOR1NfT0JKQ19DTEFTU19IXwog
I2RlZmluZSBfQklORElOR1NfT0JKQ19DTEFTU19IXwogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlICJmYXN0X21hbGxvYy5oIgorI2luY2x1ZGUg
PEhhc2hNYXAuaD4KIAogCiAjaW5jbHVkZSA8cnVudGltZS5oPgpAQCAtMzksNTQgKzQwLDI4IEBA
DQogY2xhc3MgQ0NsYXNzIDogcHVibGljIEtKUzo6QmluZGluZ3M6OkNsYXNzCiB7CiAgICAgLy8g
VXNlIHRoZSBwdWJsaWMgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyB0byBnZXQgaW5zdGFuY2VzIG9m
IEphdmFDbGFzcy4KLSAgICAKKwogcHJvdGVjdGVkOgotICAgIHZvaWQgX2NvbW1vbkluaXQgKE5Q
Q2xhc3MgKmFDbGFzcyk7Ci0gICAgdm9pZCBfY29tbW9uQ29weShjb25zdCBDQ2xhc3MgJm90aGVy
KTsKLSAgICB2b2lkIF9jb21tb25EZWxldGUoKTsKLSAgICAgICAgCisgICAgQ0NsYXNzKE5QQ2xh
c3MqKTsgLy8gVXNlIGNsYXNzRm9ySXNBIHRvIGNyZWF0ZSBhIENDbGFzcy4KKwogcHVibGljOgot
ICAgIENDbGFzcyAoTlBDbGFzcyAqYUNsYXNzKTsKKyAgICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0Zv
cklzQShOUENsYXNzKik7CisgICAgdmlydHVhbCB+Q0NsYXNzKCk7CiAKLSAgICAvLyBSZXR1cm4g
dGhlIGNhY2hlZCBPYmpDIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAvL3N0YXRpYyBDQ2xh
c3MgKmNsYXNzRm9yTmFtZSAoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgc3RhdGljIENDbGFzcyAq
Y2xhc3NGb3JJc0EgKE5QQ2xhc3MgKmFDbGFzcyk7Ci0gICAgICAgICAgICAKLSAgICB+Q0NsYXNz
ICgpIHsKLSAgICAgICAgX2NvbW1vbkRlbGV0ZSgpOwotICAgIH0KLSAgICAKLSAgICBDQ2xhc3Mg
KGNvbnN0IENDbGFzcyAmb3RoZXIpIDogQ2xhc3MoKSB7Ci0gICAgICAgIF9jb21tb25Db3B5IChv
dGhlcik7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqLCBJbnN0YW5jZSop
IGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgY2hhciAqLCBJbnN0
YW5jZSopIGNvbnN0OwogCi0gICAgQ0NsYXNzICZvcGVyYXRvcj0oY29uc3QgQ0NsYXNzICZvdGhl
cikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgICAgIAotICAgICAgICBfY29tbW9uRGVsZXRlKCk7Ci0gICAgICAg
IF9jb21tb25Db3B5IChvdGhlcik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQorICAgIHZpcnR1YWwgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yQXQobG9uZykgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgbG9uZyBudW1Db25zdHJ1Y3RvcnMoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKLSAg
ICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKm5hbWUs
IEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBGaWVsZCAqZmll
bGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwotICAg
IAotICAgIHZpcnR1YWwgQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yQXQobG9uZyBpKSBjb25zdCB7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH07Ci0gICAgCi0gICAgdmlydHVhbCBsb25nIG51bUNv
bnN0cnVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07Ci0gICAgICAgIAogcHJpdmF0ZToKLSAg
ICBOUENsYXNzICpfaXNhOwotICAgIENGRGljdGlvbmFyeVJlZiBfbWV0aG9kczsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgX2ZpZWxkczsKKyAgICBDQ2xhc3MoY29uc3QgQ0NsYXNzJik7IC8vIHByb2hp
Yml0IGNvcHlpbmcKKyAgICBDQ2xhc3MmIG9wZXJhdG9yPShjb25zdCBDQ2xhc3MmKTsgLy8gcHJv
aGliaXQgYXNzaWdubWVudAorCisgICAgTlBDbGFzcyogX2lzYTsKKyAgICBtdXRhYmxlIE1ldGhv
ZE1hcCBfbWV0aG9kczsKKyAgICBtdXRhYmxlIEZpZWxkTWFwIF9maWVsZHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2lu
c3RhbmNlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19p
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMCw3ICsyMCw3IEBADQogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogI2luY2x1ZGUgPGNfY2xhc3MuaD4KICNpbmNsdWRlIDxjX2luc3Rh
bmNlLmg+CkBAIC0zMywzMiArMzMsMjkgQEANCiAjaWZkZWYgTkRFQlVHCiAjZGVmaW5lIENfTE9H
KGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQogI2Vsc2UKLSNkZWZpbmUgQ19MT0coZm9ybWF0
QW5kQXJncy4uLikgeyBcCi0gICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQgLS0gJXM6ICAiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IFwKLSAgICBmcHJpbnRmKHN0ZGVyciwg
Zm9ybWF0QW5kQXJncyk7IFwKLX0KKyNkZWZpbmUgQ19MT0coZm9ybWF0QW5kQXJncy4uLikgKCh2
b2lkKTApCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7CiB1c2luZyBu
YW1lc3BhY2UgS0pTOwogCi1DSW5zdGFuY2U6OkNJbnN0YW5jZSAoTlBPYmplY3QgKm8pIAorQ0lu
c3RhbmNlOjpDSW5zdGFuY2UgKE5QT2JqZWN0ICpvKQogewotICAgIF9vYmplY3QgPSBfTlBOX1Jl
dGFpbk9iamVjdCAobyk7CisgICAgX29iamVjdCA9IE5QTl9SZXRhaW5PYmplY3QgKG8pOwogICAg
IF9jbGFzcyA9IDA7CiAgICAgc2V0RXhlY3V0aW9uQ29udGV4dCAoMCk7CiB9OwogCi1DSW5zdGFu
Y2U6On5DSW5zdGFuY2UgKCkgCitDSW5zdGFuY2U6On5DSW5zdGFuY2UgKCkKIHsKLSAgICBfTlBO
X1JlbGVhc2VPYmplY3QgKF9vYmplY3QpOworICAgIE5QTl9SZWxlYXNlT2JqZWN0IChfb2JqZWN0
KTsKICAgICBkZWxldGUgX2NsYXNzOwogfQogCiAKLUNJbnN0YW5jZTo6Q0luc3RhbmNlIChjb25z
dCBDSW5zdGFuY2UgJm90aGVyKSA6IEluc3RhbmNlKCkgCitDSW5zdGFuY2U6OkNJbnN0YW5jZSAo
Y29uc3QgQ0luc3RhbmNlICZvdGhlcikgOiBJbnN0YW5jZSgpCiB7Ci0gICAgX29iamVjdCA9IF9O
UE5fUmV0YWluT2JqZWN0IChvdGhlci5fb2JqZWN0KTsKKyAgICBfb2JqZWN0ID0gTlBOX1JldGFp
bk9iamVjdCAob3RoZXIuX29iamVjdCk7CiAgICAgX2NsYXNzID0gMDsKICAgICBzZXRFeGVjdXRp
b25Db250ZXh0IChvdGhlci5leGVjdXRpb25Db250ZXh0KCkpOwogfTsKQEAgLTY2LDE5ICs2Mywx
OSBAQA0KIENJbnN0YW5jZSAmQ0luc3RhbmNlOjpvcGVyYXRvcj0oY29uc3QgQ0luc3RhbmNlICZv
dGhlcil7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgCisKICAgICBOUE9iamVjdCAqX29sZE9iamVjdCA9IF9vYmplY3Q7Ci0gICAgX29iamVjdD0g
X05QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3QpOwotICAgIF9OUE5fUmVsZWFzZU9iamVj
dCAoX29sZE9iamVjdCk7CisgICAgX29iamVjdD0gTlBOX1JldGFpbk9iamVjdCAob3RoZXIuX29i
amVjdCk7CisgICAgTlBOX1JlbGVhc2VPYmplY3QgKF9vbGRPYmplY3QpOwogICAgIF9jbGFzcyA9
IDA7Ci0gICAgCisKICAgICByZXR1cm4gKnRoaXM7CiB9OwogCiBDbGFzcyAqQ0luc3RhbmNlOjpn
ZXRDbGFzcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFfY2xhc3MpIHsKLSAgICAgICAgX2NsYXNzID0g
bmV3IENDbGFzcyAoX29iamVjdC0+X2NsYXNzKTsKKyAgICBpZiAoIV9jbGFzcyl7CisgICAgICAg
IF9jbGFzcyA9IENDbGFzczo6Y2xhc3NGb3JJc0EoX29iamVjdC0+X2NsYXNzKTsKICAgICB9CiAg
ICAgcmV0dXJuIF9jbGFzczsKIH0KQEAgLTEwNSw3ICsxMDIsNyBAQA0KICAgICBDTWV0aG9kICpt
ZXRob2QgPSAwOwogICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihtZXRob2RMaXN0
Lm1ldGhvZEF0KDApKTsKIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5n
SWRlbnRpZmllciAobWV0aG9kLT5uYW1lKCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IE5Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyIChtZXRob2QtPm5hbWUoKSk7CiAgICAgaWYgKCFfb2JqZWN0
LT5fY2xhc3MtPmhhc01ldGhvZCAoX29iamVjdCwgaWRlbnQpKSB7CiAgICAgICAgIHJldHVybiBV
bmRlZmluZWQoKTsKICAgICB9CkBAIC0xMTcsNyArMTE0LDcgQEANCiAgICAgICAgIGNBcmdzID0g
KE5QVmFyaWFudCAqKW1hbGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgIGVsc2UK
ICAgICAgICAgY0FyZ3MgPSBsb2NhbEJ1ZmZlcjsKLSAgICAKKwogICAgIGZvciAoaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChleGVjLCBh
cmdzLmF0KGkpLCAmY0FyZ3NbaV0pOwogICAgIH0KQEAgLTEyOCwyMCArMTI1LDIwIEBADQogICAg
IF9vYmplY3QtPl9jbGFzcy0+aW52b2tlIChfb2JqZWN0LCBpZGVudCwgY0FyZ3MsIGNvdW50LCAm
cmVzdWx0VmFyaWFudCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAg
ICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJnc1tpXSk7CisgICAgICAgIE5QTl9S
ZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOwogICAgIH0KIAogICAgIGlmIChjQXJncyAh
PSBsb2NhbEJ1ZmZlcikKICAgICAgICAgZnJlZSAoKHZvaWQgKiljQXJncyk7Ci0gICAgICAgICAg
ICAKKwogICAgIGlmICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAg
ICAgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoZXhlYywgJnJlc3VsdFZh
cmlhbnQpOwotICAgICAgICAKLSAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgIAorCisgICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVl
ICgmcmVzdWx0VmFyaWFudCk7CisKICAgICAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0KIApAQCAtMTUwLDcgKzE0Nyw3IEBA
DQogewogICAgIFZhbHVlIHJlc3VsdFZhbHVlOwogCi0gICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+
aW52b2tlRGVmYXVsdCkgeyAgICAgCisgICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+aW52b2tlRGVm
YXVsdCkgewogICAgICAgICB1bnNpZ25lZCBpLCBjb3VudCA9IGFyZ3Muc2l6ZSgpOwogICAgICAg
ICBOUFZhcmlhbnQgKmNBcmdzOwogICAgICAgICBOUFZhcmlhbnQgbG9jYWxCdWZmZXJbMTI4XTsK
QEAgLTE1OCw3ICsxNTUsNyBAQA0KICAgICAgICAgICAgIGNBcmdzID0gKE5QVmFyaWFudCAqKW1h
bGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjQXJncyA9IGxvY2FsQnVmZmVyOwotICAgICAgICAKKwogICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQgKGV4
ZWMsIGFyZ3MuYXQoaSksICZjQXJnc1tpXSk7CiAgICAgICAgIH0KQEAgLTE2OSwyMSArMTY2LDIx
IEBADQogICAgICAgICBfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQgKF9vYmplY3QsIGNB
cmdzLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJn
c1tpXSk7CisgICAgICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJmNBcmdzW2ldKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChjQXJncyAhPSBsb2NhbEJ1ZmZlcikKICAgICAgICAg
ICAgIGZyZWUgKCh2b2lkICopY0FyZ3MpOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgIGlm
ICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAgICAgICAgIHJlc3Vs
dFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUgKGV4ZWMsICZyZXN1bHRWYXJpYW50KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUgKCZyZXN1bHRWYXJpYW50KTsKKwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFZh
bHVlOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwog
fQogCkBAIC0xOTksMTQgKzE5NiwxNCBAQA0KICAgICBlbHNlIGlmIChoaW50ID09IEtKUzo6Qm9v
bGVhblR5cGUpIHsKICAgICAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZSgpOwogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB2YWx1ZU9mKCk7CiB9CiAKIEtKUzo6VmFsdWUgQ0luc3RhbmNlOjpzdHJp
bmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgY2hhciBidWZbMTAyNF07Ci0gICAgc25wcmludGYgKGJ1
ZiwgMTAyNCwgIk5QT2JqZWN0ICVwLCBOUENsYXNzICVwIiwgX29iamVjdCwgX29iamVjdC0+X2Ns
YXNzKTsKKyAgICAvL3NucHJpbnRmIChidWYsIDEwMjQsICJOUE9iamVjdCAlcCwgTlBDbGFzcyAl
cCIsIF9vYmplY3QsIF9vYmplY3QtPl9jbGFzcyk7CiAgICAgS0pTOjpTdHJpbmcgdihidWYpOwog
ICAgIHJldHVybiB2OwogfQpAQCAtMjI1LDcgKzIyMiw3IEBADQogICAgIHJldHVybiB2OwogfQog
Ci1LSlM6OlZhbHVlIENJbnN0YW5jZTo6dmFsdWVPZigpIGNvbnN0IAorS0pTOjpWYWx1ZSBDSW5z
dGFuY2U6OnZhbHVlT2YoKSBjb25zdAogewogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwogfTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19ydW50aW1lLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjUsNyArMjUsNyBAQA0KICNpZm5kZWYgX0JJTkRJTkdTX09CSkNfUlVOVElNRV9I
XwogI2RlZmluZSBfQklORElOR1NfT0JKQ19SVU5USU1FX0hfCiAKLSNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorLy8jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KIAogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1ZGUgPG5wcnVu
dGltZV9pbXBsLmg+CkBAIC01Miw3ICs1Miw3IEBADQogICAgIHZpcnR1YWwgS0pTOjpWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmlu
c3RhbmNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEtKUzo6
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEtKUzo6VmFs
dWUgJmFWYWx1ZSkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkg
Y29uc3QgeyByZXR1cm4gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIoX2ZpZWxkSWRlbnRpZmllcik7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBOUE5fVVRG
OEZyb21JZGVudGlmaWVyKF9maWVsZElkZW50aWZpZXIpOyB9CiAgICAgdmlydHVhbCBSdW50aW1l
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KICAgICAKIHByaXZhdGU6CkBAIC02Nyw3
ICs2Nyw3IEBADQogCiAgICAgQ01ldGhvZChOUElkZW50aWZpZXIgaWRlbnQpIDogTWV0aG9kKCks
IF9tZXRob2RJZGVudGlmaWVyKGlkZW50KSB7fTsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBfTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9k
SWRlbnRpZmllcik7IH07CisgICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9kSWRlbnRpZmllcik7IH07CiAKICAg
ICB2aXJ0dWFsIGxvbmcgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07CiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjAsMTAgKzIwLDEwIEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1
ZGUgPGNfaW5zdGFuY2UuaD4gCi0jaW5jbHVkZSA8Y191dGlsaXR5Lmg+IAorI2luY2x1ZGUgPGNf
aW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxjX3V0aWxpdHkuaD4KICNpbmNsdWRlIDxpbnRlcm5hbC5o
PgogI2luY2x1ZGUgPG5wcnVudGltZV9pbXBsLmg+CiAjaW5jbHVkZSA8bnBydW50aW1lX3ByaXYu
aD4KQEAgLTQ1LDIwICs0NSw1MCBAQA0KIC8vIFJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBV
VEYxNkNoYXJzLgogdm9pZCBjb252ZXJ0VVRGOFRvVVRGMTYgKGNvbnN0IE5QVVRGOCAqVVRGOENo
YXJzLCBpbnQgVVRGOExlbmd0aCwgTlBVVEYxNiAqKlVURjE2Q2hhcnMsIHVuc2lnbmVkIGludCAq
VVRGMTZMZW5ndGgpCiB7Ci0gICAgYXNzZXJ0IChVVEY4Q2hhcnMpOwotICAgIAogICAgIGlmIChV
VEY4TGVuZ3RoID09IC0xKQogICAgICAgICBVVEY4TGVuZ3RoID0gc3RybGVuKFVURjhDaGFycyk7
Ci0gICAgICAgIAotICAgIENGU3RyaW5nUmVmIHN0cmluZ1JlZiA9IENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzIChOVUxMLCAoY29uc3QgVUludDgqKVVURjhDaGFycywgKENGSW5kZXgpVVRGOExlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSk7CiAKLSAgICAqVVRGMTZMZW5ndGggPSAo
dW5zaWduZWQgaW50KUNGU3RyaW5nR2V0TGVuZ3RoIChzdHJpbmdSZWYpOwotICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2MgKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgp
KTsKKyAgICAqVVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoOwogCi0gICAgLy8gQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURjE2LgotICAgIENGUmFuZ2UgcmFuZ2UgPSB7IDAsICpVVEYxNkxlbmd0aCB9
OwotICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyAoc3RyaW5nUmVmLCByYW5nZSwgKFVuaUNoYXIg
KikqVVRGMTZDaGFycyk7Ci0gICAgQ0ZSZWxlYXNlIChzdHJpbmdSZWYpOworICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRGMTYpICogKCpVVEYxNkxlbmd0aCkp
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8ICpVVEYxNkxlbmd0aDsgaSsrKQorICAg
ICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKworICAgLyogYXNz
ZXJ0KFVURjhDaGFycyB8fCBVVEY4TGVuZ3RoID09IDApOworICAgIGFzc2VydChVVEYxNkNoYXJz
KTsKKworICAgIGlmIChVVEY4TGVuZ3RoID09IC0xKQorICAgICAgICBVVEY4TGVuZ3RoID0gc3Ry
bGVuKFVURjhDaGFycyk7CisKKyAgICAvLyBVVEYxNkxlbmd0aCBtYXhpbXVtIGxlbmd0aCBpcyB0
aGUgbGVuZ3RoIG9mIHRoZSBVVEY4IHN0cmluZywgcGx1cyBvbmUgdG8gaW5jbHVkZSB0ZXJtaW5h
dG9yCisgICAgLy8gV2l0aG91dCB0aGUgcGx1cyBvbmUsIGl0IHdpbGwgY29udmVydCBvaywgYnV0
IGEgd2FybmluZyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY29udmVydGVyIGFzCisgICAgLy8gdGhl
cmUgaXMgbm90IGVub3VnaCByb29tIGZvciBhIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICAq
VVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoICsgMTsKKworICAgICpVVEYxNkNoYXJzID0gMDsKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBVQ29udmVydGVyKiBjb252
ID0gdWNudl9vcGVuKCJ1dGY4IiwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMp
KSB7CisgICAgICAgICpVVEYxNkNoYXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRG
MTYpICogKCpVVEYxNkxlbmd0aCkpOworICAgICAgICB1Y252X3NldFRvVUNhbGxCYWNrKGNvbnYs
IFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QLCAwLCAwLCAwLCAmc3RhdHVzKTsKKyAgICAgICAgKlVU
RjE2TGVuZ3RoID0gdWNudl90b1VDaGFycyhjb252LCAoOjpVQ2hhciopKlVURjE2Q2hhcnMsICpV
VEYxNkxlbmd0aCwgVVRGOENoYXJzLCBVVEY4TGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgdWNu
dl9jbG9zZShjb252KTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGNvbnZl
cnNpb24gd2FzIHN1Y2Nlc3NmdWwKKyAgICAvLyBTb21lIHBsdWdpbnMgcmV0dXJuIGludmFsaWQg
VVRGLTggaW4gTlBWYXJpYW50VHlwZV9TdHJpbmcsIHNlZSA8aHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYzPgorICAgIC8vIFRoZXJlIGlzIG5vICJiYWQg
ZGF0YSIgZm9yIGxhdGluMS4gSXQgaXMgdW5saWtlbHkgdGhhdCB0aGUgcGx1Z2luIHdhcyByZWFs
bHkgc2VuZGluZyB0ZXh0IGluIHRoaXMgZW5jb2RpbmcsCisgICAgLy8gYnV0IGl0IHNob3VsZCBo
YXZlIHVzZWQgVVRGLTgsIGFuZCBub3cgd2UgYXJlIHNpbXBseSBhdm9pZGluZyBhIGNyYXNoLgor
ICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgKlVURjE2TGVuZ3RoID0gVVRG
OExlbmd0aDsKKworICAgICAgICBpZiAoISpVVEYxNkNoYXJzKSAgIC8vIElmIHRoZSBtZW1vcnkg
d2Fzbid0IGFsbG9jYXRlZCwgYWxsb2NhdGUgaXQuCisgICAgICAgICAgICAqVVRGMTZDaGFycyA9
IChOUFVURjE2ICopbWFsbG9jKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgpKTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKlVURjE2TGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKyAgICB9Ki8K
IH0KIAogLy8gVmFyaWFudCB2YWx1ZSBtdXN0IGJlIHJlbGVhc2VkIHdpdGggTlBSZWxlYXNlVmFy
aWFudFZhbHVlKCkKQEAgLTc0LDcgKzEwNCw3IEBADQogdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZh
cmlhbnQgKnJlc3VsdCkKIHsKICAgICBUeXBlIHR5cGUgPSB2YWx1ZS50eXBlKCk7Ci0gICAgCisK
ICAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlKSB7CiAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5n
LlVURjhTdHJpbmcoKTsKQEAgLTEwMCwzMSArMTMwLDMxIEBADQogICAgICAgICAgICAgQ0luc3Rh
bmNlICppbnN0YW5jZSA9IHN0YXRpY19jYXN0PENJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKICAgICAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3Qg
KHJlc3VsdCwgaW5zdGFuY2UtPmdldE9iamVjdCgpKTsKICAgICAgICAgfQotCWVsc2UgeworICAg
IGVsc2UgewogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gZXhl
Yy0+aW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgS0pTOjpJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJw
cmV0ZXIgPSBleGVjLT5pbnRlcnByZXRlcigpOwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6
OlJvb3RPYmplY3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIo
b3JpZ2luSW50ZXJwcmV0ZXIpOwogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKmludGVycHJldGVy
ID0gMDsKLQkgICAgaWYgKG9yaWdpbkludGVycHJldGVyLT5pc0dsb2JhbE9iamVjdCh2YWx1ZSkp
IHsKLQkJaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRlci0+aW50ZXJwcmV0ZXJGb3JHbG9i
YWxPYmplY3QgKHZhbHVlLmltcCgpKTsKLQkgICAgfQorICAgICAgICBLSlM6OkludGVycHJldGVy
ICppbnRlcnByZXRlciA9IDA7CisgICAgICAgIGlmIChvcmlnaW5JbnRlcnByZXRlci0+aXNHbG9i
YWxPYmplY3QodmFsdWUpKSB7CisgICAgICAgIGludGVycHJldGVyID0gb3JpZ2luSW50ZXJwcmV0
ZXItPmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0ICh2YWx1ZS5pbXAoKSk7CisgICAgICAgIH0K
IAotCSAgICBpZiAoIWludGVycHJldGVyKQotCQlpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJl
dGVyOwotCQkKKyAgICAgICAgaWYgKCFpbnRlcnByZXRlcikKKyAgICAgICAgaW50ZXJwcmV0ZXIg
PSBvcmlnaW5JbnRlcnByZXRlcjsKKwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RP
YmplY3QgKmV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIp
OwogICAgICAgICAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KSB7CiAgICAgICAgICAgICAgICAg
QmluZGluZ3M6OlJvb3RPYmplY3QgKm5ld0V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgS0pTOjpCaW5k
aW5nczo6Um9vdE9iamVjdCgwKTsKICAgICAgICAgICAgICAgICBuZXdFeGVjdXRpb25Db250ZXh0
LT5zZXRJbnRlcnByZXRlciAoaW50ZXJwcmV0ZXIpOwogICAgICAgICAgICAgICAgIGV4ZWN1dGlv
bkNvbnRleHQgPSBuZXdFeGVjdXRpb25Db250ZXh0OwogICAgICAgICAgICAgfQotICAgIAotCSAg
ICBOUE9iamVjdCAqb2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRl
TGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1
ZS50b09iamVjdChleGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4
dCk7Ci0JICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsK
LQkgICAgX05QTl9SZWxlYXNlT2JqZWN0IChvYmopOwotCX0KKworICAgICAgICBOUE9iamVjdCAq
b2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1ZS50b09iamVjdChl
eGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsKKyAgICAgICAg
TlBOX1JlbGVhc2VPYmplY3QgKG9iaik7CiAgICAgfQorICAgIH0KICAgICBlbHNlCiAgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudEFzVW5kZWZpbmVkKHJlc3VsdCk7CiB9CkBAIC0xNjcsNyAr
MTk3LDcgQEANCiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmpl
Y3QpIHsKICAgICAgICAgTlBPYmplY3QgKm9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
OwotICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RD
bGFzcykgewogICAgICAgICAgICAgLy8gR2V0IE9iamVjdEltcCBmcm9tIE5QX0phdmFTY3JpcHRP
YmplY3QuCiAgICAgICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvID0gKEphdmFTY3JpcHRPYmpl
Y3QgKilvYmo7CkBAIC0xNzgsNyArMjA4LDE2IEBADQogICAgICAgICAgICAgcmV0dXJuIEluc3Rh
bmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopb2Jq
KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0K
IAorSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5h
bWUpCit7CisgICAgTlBVVEYxNiAqbWV0aG9kTmFtZTsKKyAgICB1bnNpZ25lZCBVVEYxNkxlbmd0
aDsKKyAgICBjb252ZXJ0VVRGOFRvVVRGMTYobmFtZSwgLTEsICZtZXRob2ROYW1lLCAmVVRGMTZM
ZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgorICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5n
dGgpOworICAgIGZyZWUobWV0aG9kTmFtZSk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkocmV2aXNpb24gMTcwNjkp
DQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSA8cnVudGltZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWVfb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZV9yb290Lmg+CisjaW5jbHVkZSA8aWRl
bnRpZmllci5oPgogCiB0eXBlZGVmIHVpbnQxNl90IE5QVVRGMTY7CiBOUFVURjE2ICpOUE5fVVRG
MTZGcm9tU3RyaW5nIChOUFN0cmluZyAqb2JqKTsKQEAgLTUxLDYgKzUyLDcgQEANCiBleHRlcm4g
dm9pZCBjb2VyY2VWYWx1ZVRvTlBWYXJpYW50U3RyaW5nVHlwZSAoS0pTOjpFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4g
dm9pZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0
IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4gS0pTOjpWYWx1
ZSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5Q
VmFyaWFudCAqdmFyaWFudCk7CitLSlM6OklkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50
aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKTsKIAogdHlwZWRlZiBzdHJ1Y3QgCiB7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaENvdW50ZWRTZXQuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oCShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSwxNzggQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAt
Ki0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
Q29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICov
DQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX0NPVU5URURfU0VUX0gNCisjZGVmaW5lIEtYTUxD
T1JFX0hBU0hfQ09VTlRFRF9TRVRfSA0KKw0KKy8vI2luY2x1ZGUgIkFzc2VydGlvbnMuaCINCisj
aW5jbHVkZSAiSGFzaE1hcC5oIg0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucyA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPFZhbHVlPjo6SGFzaCwNCisgICAgICAgIHR5cGVuYW1lIFRyYWl0cyA9IEhhc2hUcmFp
dHM8VmFsdWU+ID4gY2xhc3MgSGFzaENvdW50ZWRTZXQgew0KKyAgICBwcml2YXRlOg0KKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFZhbHVlLCB1bnNpZ25lZCwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
PiBJbXBsVHlwZTsNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5
cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciBpdGVyYXRv
cjsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNv
bnN0X2l0ZXJhdG9yOw0KKw0KKyAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQ0KKw0KKyAgICAg
ICAgaW50IHNpemUoKSBjb25zdDsNCisgICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0Ow0KKyAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7DQorDQorICAgICAgICAvLyBpdGVyYXRvcnMgaXRl
cmF0ZSBvdmVyIHBhaXJzIG9mIHZhbHVlcyBhbmQgY291bnRzDQorICAgICAgICBpdGVyYXRvciBi
ZWdpbigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQor
DQorICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpOw0KKyAgICAg
ICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisg
ICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3Q7DQorICAg
ICAgICB1bnNpZ25lZCBjb3VudChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisNCisg
ICAgICAgIC8vIGluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFk
eSBwcmVzZW50DQorICAgICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBp
bnRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLA0KKyAgICAgICAgLy8gYW5kIGEg
Ym9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZA0KKyAgICAgICAgc3Rk
OjpwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSk7DQorDQor
ICAgICAgICAvLyByZWR1Y2VzIHRoZSBjb3VudCBvZiB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIGl0
IGlmIGNvdW50DQorICAgICAgICAvLyBnb2VzIGRvd24gdG8gemVybw0KKyAgICAgICAgdm9pZCBy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSk7DQorICAgICAgICB2b2lkIHJlbW92ZShpdGVy
YXRvciBpdCk7DQorDQorICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIEltcGxUeXBlIG1faW1wbDsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAg
aW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
c2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOw0KKyAg
ICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBpbnQgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNhcGFjaXR5KCkgY29uc3QNCisgICAgew0KKyAg
ICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHNpemUoKSA9
PSAwOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNo
Q291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmJlZ2luKCkNCisgICAgew0K
KyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdpbigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmVuZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7DQor
ICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSBjb25zdA0KKyAg
ICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZW5kKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdHlw
ZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJh
dG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNv
bnN0IFZhbHVlVHlwZSYgdmFsdWUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmlu
ZCh2YWx1ZSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVy
YXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9p
bXBsLmZpbmQodmFsdWUpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBi
b29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250YWlu
cyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
bV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBp
bmxpbmUgdW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OmNvdW50KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZ2V0KHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAg
ICBpbmxpbmUgc3RkOjpwYWlyPHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQ0KKyAgICB7
DQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVl
LCAwKTsNCisgICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNvbmQ7DQorICAgICAgICByZXR1cm4g
cmVzdWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkNCisgICAgew0KKyAgICAgICAgcmVtb3ZlKGZpbmQodmFsdWUpKTsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAgICB7
DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAg
ICAgICAgdW5zaWduZWQgb2xkVmFsID0gaXQtPnNlY29uZDsNCisgICAgICAgIC8vQVNTRVJUKG9s
ZFZhbCAhPSAwKTsNCisgICAgICAgIHVuc2lnbmVkIG5ld1ZhbCA9IG9sZFZhbCAtIDE7DQorICAg
ICAgICBpZiAobmV3VmFsID09IDApDQorICAgICAgICAgICAgbV9pbXBsLnJlbW92ZShpdCk7DQor
ICAgICAgICBlbHNlDQorICAgICAgICAgICAgaXQtPnNlY29uZCA9IG5ld1ZhbDsNCisgICAgfQ0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBtX2ltcGwu
Y2xlYXIoKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNlIGtodG1sDQorDQordXNpbmcgV1RG
OjpIYXNoQ291bnRlZFNldDsNCisNCisjZW5kaWYgLyogS1hNTENPUkVfSEFTSF9DT1VOVEVEX1NF
VF9IICovDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oCShy
ZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hGdW5jdGlvbnMuaAko
cmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTA1IEBADQorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxp
YnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
Lg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0K
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwNCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNf
SA0KKyNkZWZpbmUgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNfSA0KKw0KKyNpbmNsdWRlICJSZWZQ
dHIuaCINCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAg
IHRlbXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgSW50VHlwZXM7DQorICAgIHRlbXBsYXRlPD4g
c3RydWN0IEludFR5cGVzPDE+IHsgdHlwZWRlZiBpbnQ4X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1
aW50OF90IFVuc2lnbmVkVHlwZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50VHlwZXM8
Mj4geyB0eXBlZGVmIGludDE2X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50MTZfdCBVbnNpZ25l
ZFR5cGU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDQ+IHsgdHlwZWRlZiBp
bnQzMl90IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDMyX3QgVW5zaWduZWRUeXBlOyB9Ow0KKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw4PiB7IHR5cGVkZWYgaW50NjRfdCBTaWduZWRU
eXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2lnbmVkVHlwZTsgfTsNCisNCisgICAgLy8gaW50ZWdl
ciBoYXNoIGZ1bmN0aW9uDQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgMzIgQml0IE1peCBGdW5j
dGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFzaC5odG0NCisgICAg
aW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDMyX3Qga2V5KQ0KKyAgICB7DQorICAgICAgICBr
ZXkgKz0gfihrZXkgPDwgMTUpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4gMTApOw0KKyAgICAg
ICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiA2KTsNCisgICAg
ICAgIGtleSArPSB+KGtleSA8PCAxMSk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7DQor
ICAgICAgICByZXR1cm4ga2V5Ow0KKyAgICB9DQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgNjQg
Yml0IE1peCBGdW5jdGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFz
aC5odG0NCisgICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQ0KKyAgICB7
DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMzIpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4g
MjIpOw0KKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsNCisgICAgICAgIGtleSBePSAoa2V5
ID4+IDgpOw0KKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtl
eSA+PiAxNSk7DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMjcpOw0KKyAgICAgICAga2V5IF49
IChrZXkgPj4gMzEpOw0KKyAgICAgICAgcmV0dXJuIGtleTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSW50SGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChUIGtleSkgeyByZXR1cm4gaW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRU
eXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGU+KGtleSkpOyB9DQorICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChUIGEsIFQgYikgeyByZXR1cm4gYSA9PSBiOyB9DQorICAgIH07DQorDQorICAg
IC8vIHBvaW50ZXIgaWRlbnRpdHkgaGFzaCBmdW5jdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUHRySGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChU
IGtleSkgeyByZXR1cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihrZXkpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgUHRySGFzaDxSZWZQdHI8UD4gPiB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBSZWZQdHI8UD4mIGtleSkgeyByZXR1cm4gUHRySGFzaDxQKj46Omhhc2goa2V5Lmdl
dCgpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFA+JiBhLCBj
b25zdCBSZWZQdHI8UD4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKw0KKyAgICAv
LyBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIGVhY2ggdHlwZQ0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQorDQorICAgIC8vIG1ha2UgSW50SGFzaCB0
aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBtYW55IGludGVnZXIgdHlwZXMNCisNCisgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNp
Z25lZD4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
PiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBs
b25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNoOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nIGxvbmc+IHsgdHlwZWRlZiBJbnRIYXNoPHVu
c2lnbmVkIGxvbmcgbG9uZz4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
IGxvbmc+IEhhc2g7IH07DQorDQorICAgIC8vIG1ha2UgUHRySGFzaCB0aGUgZGVmYXVsdCBoYXNo
IGZ1bmN0aW9uIGZvciBwb2ludGVyIHR5cGVzIHRoYXQgZG9uJ3Qgc3BlY2lhbGl6ZQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UCo+IHsgdHlwZWRlZiBQ
dHJIYXNoPFAqPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8UmVmUHRyPFA+ID4geyB0eXBlZGVmIFB0ckhhc2g8UmVmUHRyPFA+ID4gSGFzaDsg
fTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6OkRlZmF1bHRIYXNoOw0K
K3VzaW5nIFdURjo6SW50SGFzaDsNCit1c2luZyBXVEY6OlB0ckhhc2g7DQorDQorI2VuZGlmIC8v
IEtYTE1DT1JFX0hBU0hfRlVOQ1RJT05TX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9IYXNoTWFwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNo
TWFwLmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaE1hcC5o
CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzMzIgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
bGlicmFyaWVzDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4NCisgKg0KKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisg
Kg0KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bw0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsDQorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisjaWZuZGVmIEtYTUxDT1JFX0hBU0hfTUFQ
X0gNCisjZGVmaW5lIEtYTUxDT1JFX0hBU0hfTUFQX0gNCisNCisjaW5jbHVkZSAiSGFzaFRhYmxl
LmgiDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJU
eXBlPiBzdHJ1Y3QgUGFpckZpcnN0RXh0cmFjdG9yOw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1l
IERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsDQorICAgICAgICB0eXBlbmFtZSBLZXlUcmFpdHNB
cmcgPSBIYXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hU
cmFpdHM8TWFwcGVkQXJnPiA+DQorICAgIGNsYXNzIEhhc2hNYXAgew0KKyAgICBwcml2YXRlOg0K
KyAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOw0KKyAgICAgICAgdHlwZWRl
ZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiBQYWlyQmFz
ZUhhc2hUcmFpdHM8S2V5VHJhaXRzLCBNYXBwZWRUcmFpdHM+IFZhbHVlVHJhaXRzOw0KKw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVRyYWl0czo6VHJhaXRUeXBl
IEtleVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6VHJhaXRU
eXBlIE1hcHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpU
cmFpdFR5cGUgVmFsdWVUeXBlOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgdHlwZWRlZiBI
YXNoQXJnIEhhc2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hL
ZXlTdG9yYWdlVHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46Okhhc2ggU3RvcmFnZUhh
c2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hLZXlTdG9yYWdl
VHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46OlRyYWl0cyBLZXlTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6OlN0b3JhZ2VUcmFpdHMg
TWFwcGVkU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8S2V5
U3RvcmFnZVRyYWl0cywgTWFwcGVkU3RvcmFnZVRyYWl0cz4gVmFsdWVTdG9yYWdlVHJhaXRzOw0K
Kw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBLZXlTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUg
S2V5U3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFN0b3JhZ2VU
cmFpdHM6OlRyYWl0VHlwZSBNYXBwZWRTdG9yYWdlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleVN0b3JhZ2VUeXBlLCBWYWx1ZVN0b3JhZ2VU
eXBlLCBQYWlyRmlyc3RFeHRyYWN0b3I8VmFsdWVTdG9yYWdlVHlwZT4sDQorICAgICAgICAgICAg
U3RvcmFnZUhhc2hGdW5jdGlvbnMsIFZhbHVlU3RvcmFnZVRyYWl0cywgS2V5U3RvcmFnZVRyYWl0
cz4gSGFzaFRhYmxlVHlwZTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxl
VHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsNCisNCisgICAgICAgIEhhc2hNYXAoKTsN
CisgICAgICAgIEhhc2hNYXAoY29uc3QgSGFzaE1hcCYpOw0KKyAgICAgICAgSGFzaE1hcCYgb3Bl
cmF0b3I9KGNvbnN0IEhhc2hNYXAmKTsNCisgICAgICAgIH5IYXNoTWFwKCk7DQorDQorICAgICAg
ICBpbnQgc2l6ZSgpIGNvbnN0Ow0KKyAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7DQorICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsNCisNCisgICAgICAgIC8vIGl0ZXJhdG9ycyBpdGVy
YXRlIG92ZXIgcGFpcnMgb2Yga2V5cyBhbmQgdmFsdWVzDQorICAgICAgICBpdGVyYXRvciBiZWdp
bigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQorDQor
ICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KKyAgICAgICAgYm9vbCBjb250YWlu
cyhjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAgICAgICBNYXBwZWRUeXBlIGdldChjb25zdCBL
ZXlUeXBlJikgY29uc3Q7DQorDQorICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtl
eSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50DQorICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMg
YSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCANCisgICAgICAgIC8v
IGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFk
ZGVkDQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIGNv
bnN0IE1hcHBlZFR5cGUmKTsgDQorDQorICAgICAgICAvLyBkb2VzIG5vdGhpbmcgaWYga2V5IGlz
IGFscmVhZHkgcHJlc2VudA0KKyAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0
aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgDQorICAgICAgICAvLyBhbmQgYSBib29s
ZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZA0KKyAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRU
eXBlJik7IA0KKw0KKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOw0KKyAgICAg
ICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpOw0KKyAgICAgICAgdm9pZCBjbGVhcigpOw0KKw0K
KyAgICBwcml2YXRlOg0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNv
bnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7DQorICAgICAgICB2b2lkIHJlZkFsbCgp
Ow0KKyAgICAgICAgdm9pZCBkZXJlZkFsbCgpOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlVHlwZSBt
X2ltcGw7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJUeXBlPiBzdHJ1
Y3QgUGFpckZpcnN0RXh0cmFjdG9yIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSBQ
YWlyVHlwZTo6Zmlyc3RfdHlwZSYgZXh0cmFjdChjb25zdCBQYWlyVHlwZSYgcCkgeyByZXR1cm4g
cC5maXJzdDsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTxib29sIGNhblJlcGxhY2VEZWxl
dGVkS2V5LCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0cywg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yOw0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFu
c2xhdG9yPHRydWUsIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHlwZTo6Zmlyc3RfdHlwZSBLZXlU
eXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1h
cHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6
VHJhaXRUeXBlIFZhbHVlU3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZh
bHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgS2V5U3RvcmFnZVRyYWl0czsNCisgICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgS2V5U3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIEtleVN0b3JhZ2VU
eXBlOw0KKw0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5VHlwZSYga2V5
KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0NCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IEtleVN0b3JhZ2VUeXBlJiBhLCBjb25zdCBLZXlUeXBlJiBiKSB7IHJl
dHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbCgqKEtleVR5cGUqKSZhLCBiKTsgfQ0KKyAgICAgICAg
c3RhdGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlU3RvcmFnZVR5cGUmIGxvY2F0aW9uLCBjb25zdCBL
ZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCwgdW5zaWduZWQpDQorICAgICAg
ICB7DQorICAgICAgICAgICAgKihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAg
ICAgICAgICAgKihNYXBwZWRUeXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAg
ICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIFZhbHVlU3RvcmFnZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3Ry
dWN0IEhhc2hNYXBUcmFuc2xhdG9yPGZhbHNlLCBWYWx1ZVR5cGUsIFZhbHVlU3RvcmFnZVRyYWl0
cywgSGFzaEZ1bmN0aW9ucz4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6
OmZpcnN0X3R5cGUgS2V5VHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUeXBl
OjpzZWNvbmRfdHlwZSBNYXBwZWRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1
ZVN0b3JhZ2VUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVN0b3JhZ2VUeXBlOw0KKyAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEtleVN0b3JhZ2VU
cmFpdHM7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVN0b3JhZ2VUcmFpdHM6OlRyYWl0
VHlwZSBLZXlTdG9yYWdlVHlwZTsNCisNCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9DQor
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXlTdG9yYWdlVHlwZSYgYSwgY29uc3Qg
S2V5VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoKihLZXlUeXBlKikmYSwg
Yik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZVN0b3JhZ2VUeXBlJiBs
b2NhdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiBtYXBwZWQsIHVu
c2lnbmVkKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChsb2NhdGlvbi5maXJzdCA9PSBL
ZXlTdG9yYWdlVHJhaXRzOjpkZWxldGVkVmFsdWUoKSkNCisgICAgICAgICAgICAgICAgbG9jYXRp
b24uZmlyc3QgPSBLZXlTdG9yYWdlVHJhaXRzOjplbXB0eVZhbHVlKCk7DQorICAgICAgICAgICAg
KihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAgICAgICAgICAgKihNYXBwZWRU
eXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZWZBbGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJs
ZVR5cGUsIFZhbHVlVHJhaXRzPjo6cmVmQWxsKG1faW1wbCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZGVyZWZB
bGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJsZVR5cGUs
IFZhbHVlVHJhaXRzPjo6ZGVyZWZBbGwobV9pbXBsKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6SGFzaE1hcCgpDQorICAg
IHsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6SGFzaE1hcChjb25zdCBIYXNoTWFwJiBvdGhlcikNCisgICAgICAgIDogbV9p
bXBsKG90aGVyLm1faW1wbCkNCisgICAgew0KKyAgICAgICAgcmVmQWxsKCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46Om9wZXJhdG9yPShjb25zdCBIYXNoTWFwJiBvdGhlcikNCisg
ICAgew0KKyAgICAgICAgSGFzaE1hcCB0bXAob3RoZXIpOw0KKyAgICAgICAgbV9pbXBsLnN3YXAo
dG1wLm1faW1wbCk7IA0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+DQorICAgIGlubGluZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp+SGFzaE1hcCgp
DQorICAgIHsNCisgICAgICAgIGRlcmVmQWxsKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4NCisgICAgaW5saW5lIGludCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QN
CisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+DQorICAgIGlubGluZSBpbnQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2Fw
YWNpdHkoKSBjb25zdA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgp
OyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5pc0VtcHR5KCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmJlZ2luKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdp
bigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpl
bmQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+Ojpjb25zdF9pdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0
DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsNCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkgY29uc3QNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBl
Kikma2V5KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBlKikma2V5KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIHJldHVybiBtX2ltcGwuY29udGFpbnMoKihjb25zdCBLZXlTdG9yYWdlVHlwZSopJmtleSk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHBhaXI8dHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+DQorICAgIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5
cGUmIG1hcHBlZCkgDQorICAgIHsgDQorI2lmbmRlZiBfX0FSTUNDX18NCisgICAgICAgIGNvbnN0
IGJvb2wgY2FuUmVwbGFjZURlbGV0ZWRLZXkgPSAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9u
IHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb247DQorICAgICAgICB0eXBlZGVm
IEhhc2hNYXBUcmFuc2xhdG9yPGNhblJlcGxhY2VEZWxldGVkS2V5LCBWYWx1ZVR5cGUsIFZhbHVl
U3RvcmFnZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7DQorI2Vsc2UNCisg
ICAgICAgIC8vIGdldCBhcm91bmQgDQorICAgICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xhdG9y
PCAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uIHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRz
RGVzdHJ1Y3Rpb24sIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiBUcmFuc2xhdG9yVHlwZTsNCisjZW5kaWYNCisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgYWRkPEtleVR5cGUsIE1hcHBlZFR5cGUsIFRyYW5zbGF0b3JUeXBlPihrZXksIG1hcHBlZCk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4NCisgICAgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKSAN
CisgICAgew0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsNCisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAg
ICAvLyBhZGQgY2FsbCBhYm92ZSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLCBzbyBzZXQgdGhlIG1h
cHBlZCB2YWx1ZQ0KKyAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbWFwcGVkOw0K
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAg
ICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPg0K
KyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBjb25z
dCBNYXBwZWRUeXBlJiBtYXBwZWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBtYXBwZWQpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4NCisg
ICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFw
cGVkVHlwZQ0KKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0
ID0gZmluZChrZXkpOw0KKyAgICAgICAgaWYgKGl0ID09IGVuZCgpKQ0KKyAgICAgICAgICAgIHJl
dHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKTsNCisgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkNCisgICAgew0KKyAgICAgICAg
aWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKyAg
ICAgICAgUmVmQ291bnRlcjxWYWx1ZVRyYWl0cywgVmFsdWVTdG9yYWdlVHJhaXRzPjo6ZGVyZWYo
Kml0Lm1faW1wbCk7DQorICAgICAgICBtX2ltcGwucmVtb3ZlKGl0Lm1faW1wbCk7DQorICAgIH0N
CisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkNCisgICAgew0KKyAgICAgICAgcmVtb3Zl
KGZpbmQoa2V5KSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZv
aWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBkZXJl
ZkFsbCgpOw0KKyAgICAgICAgbV9pbXBsLmNsZWFyKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWFwcGVkVHlwZSwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZT4NCisgICAgdm9p
ZCBkZWxldGVBbGxQYWlyU2Vjb25kcyhIYXNoVGFibGVUeXBlJiBjb2xsZWN0aW9uKQ0KKyAgICB7
DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXJhdG9yOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsNCisg
ICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkNCisgICAgICAgICAgICBkZWxldGUgKihNYXBwZWRUeXBlKikmaXQtPnNlY29uZDsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBkZWxldGVBbGxWYWx1
ZXMoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbikNCisgICAgew0KKyAg
ICAgICAgZGVsZXRlQWxsUGFpclNlY29uZHM8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6TWFwcGVkVHlwZT4oY29sbGVjdGlvbik7DQorICAgIH0NCisNCit9IC8vIG5hbWVzcGFjZSBX
VEYNCisNCit1c2luZyBXVEY6Okhhc2hNYXA7DQorDQorI2VuZGlmIC8qIEtYTUxDT1JFX0hBU0hf
TUFQX0ggKi8NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVGFibGUuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lv
biAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw5MzUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0K
KyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RBQkxFX0gNCisjZGVmaW5lIEtY
TUxDT1JFX0hBU0hfVEFCTEVfSA0KKw0KKyNpbmNsdWRlICJGYXN0X01hbGxvYy5oIg0KKyNpbmNs
dWRlICJIYXNoVHJhaXRzLmgiDQorI2luY2x1ZGUgPGFzc2VydC5oPg0KKw0KK25hbWVzcGFjZSBX
VEYgew0KKw0KKyNkZWZpbmUgRFVNUF9IQVNIVEFCTEVfU1RBVFMgMA0KKyNkZWZpbmUgQ0hFQ0tf
SEFTSFRBQkxFX0NPTlNJU1RFTkNZIDANCisNCisjaWZkZWYgTkRFQlVHDQorI2RlZmluZSBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTIDANCisjZWxzZQ0KKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUyAxDQorI2VuZGlmDQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorDQor
ICAgIHN0cnVjdCBIYXNoVGFibGVTdGF0cyB7DQorICAgICAgICB+SGFzaFRhYmxlU3RhdHMoKTsN
CisgICAgICAgIHN0YXRpYyBpbnQgbnVtQWNjZXNzZXM7DQorICAgICAgICBzdGF0aWMgaW50IG51
bUNvbGxpc2lvbnM7DQorICAgICAgICBzdGF0aWMgaW50IGNvbGxpc2lvbkdyYXBoWzQwOTZdOw0K
KyAgICAgICAgc3RhdGljIGludCBtYXhDb2xsaXNpb25zOw0KKyAgICAgICAgc3RhdGljIGludCBu
dW1SZWhhc2hlczsNCisgICAgICAgIHN0YXRpYyBpbnQgbnVtUmVtb3ZlczsNCisgICAgICAgIHN0
YXRpYyBpbnQgbnVtUmVpbnNlcnRzOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVjb3JkQ29sbGlz
aW9uQXRDb3VudChpbnQgY291bnQpOw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGU7DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJs
ZUl0ZXJhdG9yOw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNo
VGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+Kik7DQorI2Vsc2UNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKSB7IH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRl
cmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopIHsgfQ0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yIHsNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAgICB0eXBlZGVm
IEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1
ZVR5cGU7DQorICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlwZTsN
CisgICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsNCisNCisgICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47DQorICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz47DQorDQorICAgICAgICB2b2lkIHNraXBFbXB0eUJ1Y2tldHMoKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgICAgIHdoaWxlIChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24gJiYg
SGFzaFRhYmxlVHlwZTo6aXNFbXB0eU9yRGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlvbikpDQorICAg
ICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgICAgIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBl
IHBvc2l0aW9uLCBQb2ludGVyVHlwZSBlbmRQb3NpdGlvbikNCisgICAgICAgICAgICA6IG1fcG9z
aXRpb24ocG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKQ0KKyAgICAgICAgew0K
KyAgICAgICAgICAgIGFkZEl0ZXJhdG9yKHRhYmxlLCB0aGlzKTsNCisgICAgICAgICAgICBza2lw
RW1wdHlCdWNrZXRzKCk7DQorICAgICAgICB9DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGFkZEl0ZXJh
dG9yKDAsIHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gZGVmYXVsdCBjb3B5LCBh
c3NpZ25tZW50IGFuZCBkZXN0cnVjdG9yIGFyZSBPSyBpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTIGlzIDANCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAgICAgICAgfkhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJlbW92ZUl0
ZXJhdG9yKHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvcihjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpDQorICAgICAgICAgICAgOiBtX3Bvc2l0
aW9uKG90aGVyLm1fcG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKG90aGVyLm1fZW5kUG9zaXRpb24p
DQorICAgICAgICB7DQorICAgICAgICAgICAgYWRkSXRlcmF0b3Iob3RoZXIubV90YWJsZSwgdGhp
cyk7DQorICAgICAgICB9DQorDQorICAgICAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3I9KGNv
bnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikNCisgICAgICAgIHsNCisgICAgICAgICAgICBtX3Bv
c2l0aW9uID0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgICAgICBtX2VuZFBvc2l0aW9uID0g
b3RoZXIubV9lbmRQb3NpdGlvbjsNCisNCisgICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0aGlz
KTsNCisgICAgICAgICAgICBhZGRJdGVyYXRvcihvdGhlci5tX3RhYmxlLCB0aGlzKTsNCisNCisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgICAgICB9DQorI2VuZGlmDQorDQorICAgICAg
ICBQb2ludGVyVHlwZSBnZXQoKSBjb25zdA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNoZWNr
VmFsaWRpdHkoKTsNCisgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbjsNCisgICAgICAgIH0N
CisgICAgICAgIFJlZmVyZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9DQorICAgICAgICBQb2ludGVyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0NCisNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkNCisgICAgICAg
IHsNCisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7DQorICAgICAgICAgICAgYXNzZXJ0KG1f
cG9zaXRpb24gIT0gbV9lbmRQb3NpdGlvbik7DQorICAgICAgICAgICAgKyttX3Bvc2l0aW9uOw0K
KyAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsNCisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkg
b21pdHRlZA0KKw0KKyAgICAgICAgLy8gQ29tcGFyaXNvbi4NCisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQorICAg
ICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1fcG9z
aXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisgICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQor
ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1f
cG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgcHJpdmF0
ZToNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0DQorICAgICAgICB7DQorI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAgICAgICBhc3NlcnQobV90YWJsZSk7
DQorI2VuZGlmDQorICAgICAgICB9DQorDQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRP
UlMNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25zdF9pdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0DQorICAgICAgICB7DQorICAgICAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAg
ICAgICAgICAgIGFzc2VydChvdGhlci5tX3RhYmxlKTsNCisgICAgICAgICAgICBhc3NlcnQobV90
YWJsZSA9PSBvdGhlci5tX3RhYmxlKTsNCisgICAgICAgIH0NCisjZWxzZQ0KKyAgICAgICAgdm9p
ZCBjaGVja1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJikgY29uc3QgeyB9DQorI2VuZGlm
DQorDQorICAgICAgICBQb2ludGVyVHlwZSBtX3Bvc2l0aW9uOw0KKyAgICAgICAgUG9pbnRlclR5
cGUgbV9lbmRQb3NpdGlvbjsNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7
DQorICAgICAgICBtdXRhYmxlIGNvbnN0X2l0ZXJhdG9yKiBtX25leHQ7DQorICAgICAgICBtdXRh
YmxlIGNvbnN0X2l0ZXJhdG9yKiBtX3ByZXZpb3VzOw0KKyNlbmRpZg0KKyAgICB9Ow0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciB7DQorICAgIHByaXZhdGU6DQor
ICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOw0KKyAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFs
dWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7DQorICAg
ICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7DQorDQorICAgICAgICBmcmllbmQg
Y2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+Ow0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoSGFzaFRhYmxl
VHlwZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvcywgUG9pbnRlclR5cGUgZW5kKSA6IG1faXRlcmF0
b3IodGFibGUsIHBvcywgZW5kKSB7IH0NCisNCisgICAgcHVibGljOg0KKyAgICAgICAgSGFzaFRh
YmxlSXRlcmF0b3IoKSB7IH0NCisNCisgICAgICAgIC8vIGRlZmF1bHQgY29weSwgYXNzaWdubWVu
dCBhbmQgZGVzdHJ1Y3RvciBhcmUgT0sNCisNCisgICAgICAgIFBvaW50ZXJUeXBlIGdldCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KG1faXRlcmF0b3IuZ2V0KCkpOyB9
DQorICAgICAgICBSZWZlcmVuY2VUeXBlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQo
KTsgfQ0KKyAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9DQorDQorICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2l0ZXJhdG9y
OyByZXR1cm4gKnRoaXM7IH0NCisNCisgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxs
eSBvbWl0dGVkDQorDQorICAgICAgICAvLyBDb21wYXJpc29uLg0KKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9
PSBvdGhlci5tX2l0ZXJhdG9yOyB9DQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0
b3I7IH0NCisNCisgICAgICAgIG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvcjsgfQ0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgY29uc3RfaXRlcmF0
b3IgbV9pdGVyYXRvcjsNCisgICAgfTsNCisNCisgICAgdXNpbmcgc3RkOjpzd2FwOw0KKw0KKy8v
I2lmICFDT01QSUxFUihNU1ZDKQ0KKyAgICAvLyBWaXN1YWwgQysrIGhhcyBhIHN3YXAgZm9yIHBh
aXJzIGRlZmluZWQuDQorDQorICAgIC8vIHN3YXAgcGFpcnMgYnkgY29tcG9uZW50LCBpbiBjYXNl
IG9mIHBhaXIgbWVtYmVycyB0aGF0IHNwZWNpYWxpemUgc3dhcA0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBzd2FwKHBhaXI8VCwgVT4mIGEsIHBhaXI8
VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAgIHN3YXAoYS5maXJzdCwgYi5maXJzdCk7DQorICAg
ICAgICBzd2FwKGEuc2Vjb25kLCBiLnNlY29uZCk7DQorICAgIH0NCisvLyNlbmRpZg0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIHVzZVN3YXA+IHN0cnVjdCBNb3ZlcjsNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1vdmVyPFQsIHRydWU+IHsgc3RhdGljIHZvaWQg
bW92ZShUJiBmcm9tLCBUJiB0bykgeyBzd2FwKGZyb20sIHRvKTsgfSB9Ow0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTW92ZXI8VCwgZmFsc2U+IHsgc3RhdGljIHZvaWQgbW92ZShU
JiBmcm9tLCBUJiB0bykgeyB0byA9IGZyb207IH0gfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgSWRl
bnRpdHlIYXNoVHJhbnNsYXRvciB7DQorICAgIHB1YmxpYzoNCisgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtl
eSk7IH0NCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5
JiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQ0KKyAgICAgICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlJiBsb2NhdGlvbiwgY29uc3QgS2V5JiwgY29uc3QgVmFs
dWUmIHZhbHVlLCB1bnNpZ25lZCkgeyBsb2NhdGlvbiA9IHZhbHVlOyB9DQorICAgIH07DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJsZSB7DQorICAgIHB1YmxpYzoNCisgICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFRy
YWl0cyBWYWx1ZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNo
VHJhbnNsYXRvcjxLZXksIFZhbHVlLCBIYXNoRnVuY3Rpb25zPiBJZGVudGl0eVRyYW5zbGF0b3JU
eXBlOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlKCk7DQorICAgICAgICB+SGFzaFRhYmxlKCkgeyBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6
ZSk7IH0NCisNCisgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsNCisgICAgICAg
IHZvaWQgc3dhcChIYXNoVGFibGUmKTsNCisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNv
bnN0IEhhc2hUYWJsZSYpOw0KKw0KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBt
YWtlSXRlcmF0b3IobV90YWJsZSk7IH0NCisgICAgICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJu
IG1ha2VJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorICAgICAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKG1fdGFibGUp
OyB9DQorICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlQ29u
c3RJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorDQorICAgICAgICBpbnQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0NCisgICAgICAgIGludCBjYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9DQorICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9rZXlDb3VudDsgfQ0KKw0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxLZXlUeXBlLCBW
YWx1ZVR5cGUsIElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1
ZSksIHZhbHVlKTsgfQ0KKw0KKyAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRkKCkg
dGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZw0KKyAgICAgICAg
Ly8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVy
c2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkNCisgICAgICAgIC8vIGluIHRoZSB0YWJsZS4N
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29u
c3QgRXh0cmEmKTsNCisNCisgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOw0K
KyAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAg
ICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmKSBjb25zdDsNCisNCisgICAgICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9y
KTsNCisgICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1w
dHlCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRXh0cmFjdG9yOjpleHRy
YWN0KHZhbHVlKSA9PSBLZXlUcmFpdHM6OmVtcHR5VmFsdWUoKTsgfQ0KKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEV4
dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkgPT0gS2V5VHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0K
KyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5QnVja2V0KHZhbHVlKSB8fCBpc0RlbGV0ZWRCdWNr
ZXQodmFsdWUpOyB9DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBzdGF0aWMgVmFsdWVUeXBl
KiBhbGxvY2F0ZVRhYmxlKGludCBzaXplKTsNCisgICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2Nh
dGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCBpbnQgc2l6ZSk7DQorDQorICAgICAgICB0eXBlZGVm
IHBhaXI8VmFsdWVUeXBlKiwgYm9vbD4gTG9va3VwVHlwZTsNCisgICAgICAgIHR5cGVkZWYgcGFp
cjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7DQorDQorICAgICAgICBMb29r
dXBUeXBlIGxvb2t1cChjb25zdCBLZXkmIGtleSkgeyByZXR1cm4gbG9va3VwPEtleSwgSWRlbnRp
dHlUcmFuc2xhdG9yVHlwZT4oa2V5KS5maXJzdDsgfQ0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEZ1bGxMb29rdXBUeXBlIGxvb2t1cChjb25z
dCBUJik7DQorDQorICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsNCisNCisgICAgICAg
IGJvb2wgc2hvdWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0
ZWRDb3VudCkgKiBtX21heExvYWQgPj0gbV90YWJsZVNpemU7IH0NCisgICAgICAgIGJvb2wgbXVz
dFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwg
bV90YWJsZVNpemUgKiAyOyB9DQorICAgICAgICBib29sIHNob3VsZFNocmluaygpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3RhYmxlU2l6ZSAmJiBtX3RhYmxlU2l6
ZSA+IG1fbWluVGFibGVTaXplOyB9DQorICAgICAgICB2b2lkIGV4cGFuZCgpOw0KKyAgICAgICAg
dm9pZCBzaHJpbmsoKSB7IHJlaGFzaChtX3RhYmxlU2l6ZSAvIDIpOyB9DQorDQorICAgICAgICB2
b2lkIHJlaGFzaChpbnQgbmV3VGFibGVTaXplKTsNCisgICAgICAgIHZvaWQgcmVpbnNlcnQoVmFs
dWVUeXBlJik7DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQnVja2V0KFZhbHVl
VHlwZSYgYnVja2V0KSB7IC8qbmV3ICgmYnVja2V0KSBWYWx1ZVR5cGUoVHJhaXRzOjplbXB0eVZh
bHVlKCkpOyovIH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUJ1Y2tldChWYWx1ZVR5cGUm
IGJ1Y2tldCkgeyBhc3NpZ25EZWxldGVkPFZhbHVlVHlwZSwgVHJhaXRzPihidWNrZXQpOyB9DQor
DQorICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZhbHVlVHlwZSogcG9z
aXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpDQorICAgICAgICAgICAgeyByZXR1cm4g
RnVsbExvb2t1cFR5cGUoTG9va3VwVHlwZShwb3NpdGlvbiwgZm91bmQpLCBoYXNoKTsgfQ0KKw0K
KyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBp
dGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0NCisgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7IHJl
dHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0N
CisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZDQorICAgICAgICB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0Ow0KKyAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lz
dGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7DQorI2Vsc2UNCisgICAgICAgIHN0YXRpYyB2b2lkIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJs
ZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQ0KKyNlbmRpZg0KKw0KKyNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTDQorICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisj
ZWxzZQ0KKyAgICAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUl0ZXJhdG9ycygpIHsgfQ0KKyNl
bmRpZg0KKw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21pblRhYmxlU2l6ZSA9IDY0Ow0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heExvYWQgPSAyOw0KKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBtX21pbkxvYWQgPSA2Ow0KKw0KKyAgICAgICAgVmFsdWVUeXBlKiBtX3RhYmxl
Ow0KKyAgICAgICAgaW50IG1fdGFibGVTaXplOw0KKyAgICAgICAgaW50IG1fdGFibGVTaXplTWFz
azsNCisgICAgICAgIGludCBtX2tleUNvdW50Ow0KKyAgICAgICAgaW50IG1fZGVsZXRlZENvdW50
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHB1YmxpYzoNCisgICAg
ICAgIG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1faXRlcmF0b3JzOw0KKyNlbmRpZg0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQ0KKyAg
ICAgICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAs
IG1fdGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAs
IG1fZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAg
ICAgICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPg0K
KyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpGdWxsTG9va3VwVHlwZSBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Omxvb2t1cChjb25zdCBUJiBrZXkpDQorICAgIHsNCisgICAgICAgIGFzc2VydChtX3RhYmxlKTsN
CisNCisgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOw0KKyAg
ICAgICAgaW50IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOw0KKyAgICAgICAgaW50IGkgPSBo
ICYgc2l6ZU1hc2s7DQorICAgICAgICBpbnQgayA9IDA7DQorDQorI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTDQorICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsNCisgICAgICAg
IGludCBwcm9iZUNvdW50ID0gMDsNCisjZW5kaWYNCisNCisgICAgICAgIFZhbHVlVHlwZSAqdGFi
bGUgPSBtX3RhYmxlOw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeTsNCisgICAgICAgIFZhbHVl
VHlwZSAqZGVsZXRlZEVudHJ5ID0gMDsNCisgICAgICAgIHdoaWxlICghaXNFbXB0eUJ1Y2tldCgq
KGVudHJ5ID0gdGFibGUgKyBpKSkpIHsNCisgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0
KCplbnRyeSkpDQorICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Ow0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3Qo
KmVudHJ5KSwga2V5KSkNCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQo
ZW50cnksIHRydWUsIGgpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgICAg
ICsrcHJvYmVDb3VudDsNCisgICAgICAgICAgICBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlz
aW9uQXRDb3VudChwcm9iZUNvdW50KTsNCisjZW5kaWYNCisgICAgICAgICAgICBpZiAoayA9PSAw
KQ0KKyAgICAgICAgICAgICAgICBrID0gMSB8IChoICUgc2l6ZU1hc2spOw0KKyAgICAgICAgICAg
IGkgPSAoaSArIGspICYgc2l6ZU1hc2s7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4g
bWFrZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFs
c2UsIGgpOw0KKyAgICB9DQorDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4NCisgICAgaW5saW5l
IHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQo
Y29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSAmZXh0cmEpDQorICAgIHsNCisgICAgICAgIGludmFs
aWRhdGVJdGVyYXRvcnMoKTsNCisNCisgICAgICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAg
ICBleHBhbmQoKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAg
ICAgICAgRnVsbExvb2t1cFR5cGUgbG9va3VwUmVzdWx0ID0gbG9va3VwPFQsIEhhc2hUcmFuc2xh
dG9yPihrZXkpOw0KKw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeSA9IGxvb2t1cFJlc3VsdC5m
aXJzdC5maXJzdDsNCisgICAgICAgIGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vj
b25kOw0KKyAgICAgICAgdW5zaWduZWQgaCA9IGxvb2t1cFJlc3VsdC5zZWNvbmQ7DQorDQorICAg
ICAgICBpZiAoZm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJ
dGVyYXRvcihlbnRyeSksIGZhbHNlKTsNCisNCisgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50Ow0KKw0KKyAgICAgICAgSGFz
aFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIGtleSwgZXh0cmEsIGgpOw0KKyAgICAgICAg
KyttX2tleUNvdW50Ow0KKw0KKyAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKSB7DQorICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgbWFrZXMgYW4gZXh0cmEgY29weSBvbiBleHBhbmQuIFByb2Jh
Ymx5IG5vdCB0aGF0IGJhZCBzaW5jZQ0KKyAgICAgICAgICAgIC8vIGV4cGFuZCBpcyByYXJlLCBi
dXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYSB2ZXJzaW9uIG9mIGV4cGFuZCB0aGF0IGNhbg0K
KyAgICAgICAgICAgIC8vIGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBw
b3NpdGlvbg0KKyAgICAgICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0
cmFjdCgqZW50cnkpOw0KKyAgICAgICAgICAgIGV4cGFuZCgpOw0KKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsNCisgICAgICAgIH0NCisN
CisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcihlbnRyeSksIHRydWUpOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiBl
bnRyeSkNCisgICAgew0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAgICAgICAgYXNzZXJ0
KCFsb29rdXAoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuc2Vjb25kKTsNCisgICAgICAgIGFz
c2VydCghaXNEZWxldGVkQnVja2V0KCoobG9va3VwKEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkp
LmZpcnN0KSkpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgKytIYXNoVGFi
bGVTdGF0czo6bnVtUmVpbnNlcnRzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgTW92ZXI8VmFsdWVU
eXBlLCBUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24+Ojptb3ZlKGVudHJ5LCAqKGxvb2t1cChFeHRy
YWN0b3I6OmV4dHJhY3QoZW50cnkpKS5maXJzdCkpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQor
ICAgIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IEtl
eSYga2V5KQ0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAgICAgICAgcmV0
dXJuIGVuZCgpOw0KKw0KKyAgICAgICAgTG9va3VwVHlwZSByZXN1bHQgPSBsb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKHJlc3VsdC5maXJzdCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4NCisgICAgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OmZpbmQoY29uc3QgS2V5JiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICgh
bV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7DQorDQorICAgICAgICBMb29rdXBU
eXBlIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IocmVzdWx0LmZpcnN0KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KKw0KKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SGFzaFRh
YmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KS5zZWNvbmQ7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4N
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykNCisgICAgew0KKyAg
ICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3Rl
bmN5KCk7DQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorICAgICAgICArK0hhc2hUYWJs
ZVN0YXRzOjpudW1SZW1vdmVzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgZGVsZXRlQnVja2V0KCpw
b3MpOw0KKyAgICAgICAgKyttX2RlbGV0ZWRDb3VudDsNCisgICAgICAgIC0tbV9rZXlDb3VudDsN
CisNCisgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkNCisgICAgICAgICAgICBzaHJpbmsoKTsN
CisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAg
ICB7DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0K
KyAgICAgICAgcmVtb3ZlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bv
c2l0aW9uKSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQ0KKyAgICB7DQorICAgICAgICByZW1vdmUo
ZmluZChrZXkpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBWYWx1ZSAqSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjphbGxvY2F0ZVRhYmxlKGludCBzaXplKQ0KKyAgICB7DQorICAgICAgICAvLyB3b3VsZCB1c2Ug
YSB0ZW1wbGF0ZSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMg
aGVyZSwgYnV0DQorICAgICAgICAvLyBnY2MgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCB0aGF0
DQorICAgICAgICBpZiAoVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvKQ0KKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUgKj4oS0pTOjpranNfZmFzdF9jYWxsb2Moc2l6ZSwg
c2l6ZW9mKFZhbHVlVHlwZSkpKTsNCisgICAgICAgIFZhbHVlVHlwZSogcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VmFsdWVUeXBlKj4oS0pTOjpranNfZmFzdF9tYWxsb2Moc2l6ZSAqIHNpemVvZihWYWx1
ZVR5cGUpKSk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykNCisgICAg
ICAgICAgICBpbml0aWFsaXplQnVja2V0KHJlc3VsdFtpXSk7DQorICAgICAgICByZXR1cm4gcmVz
dWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9j
YXRlVGFibGUoVmFsdWVUeXBlICp0YWJsZSwgaW50IHNpemUpDQorICAgIHsNCisgICAgICAgIGlm
IChUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24pDQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyArK2kpDQorICAgICAgICAgICAgICAgIHRhYmxlW2ldLn5WYWx1ZVR5cGUoKTsN
CisgICAgICAgIEtKUzo6a2pzX2Zhc3RfZnJlZSh0YWJsZSk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZCgpDQorICAgIHsNCisgICAgICAgIGludCBu
ZXdTaXplOw0KKyAgICAgICAgaWYgKG1fdGFibGVTaXplID09IDApDQorICAgICAgICAgICAgbmV3
U2l6ZSA9IG1fbWluVGFibGVTaXplOw0KKyAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxh
Y2UoKSkNCisgICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemU7DQorICAgICAgICBlbHNl
DQorICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVTaXplICogMjsNCisNCisgICAgICAgIHJl
aGFzaChuZXdTaXplKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6cmVoYXNoKGludCBuZXdUYWJsZVNpemUpDQorICAgIHsNCisgICAgICAgIGNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsNCisNCisgICAgICAgIGludCBvbGRUYWJsZVNpemUgPSBt
X3RhYmxlU2l6ZTsNCisgICAgICAgIFZhbHVlVHlwZSAqb2xkVGFibGUgPSBtX3RhYmxlOw0KKw0K
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgaWYgKG9sZFRhYmxlU2l6ZSAhPSAw
KQ0KKyAgICAgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaGFzaGVzOw0KKyNlbmRpZg0K
Kw0KKyAgICAgICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7DQorICAgICAgICBtX3RhYmxl
U2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAxOw0KKyAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRl
VGFibGUobmV3VGFibGVTaXplKTsNCisNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICE9IG9s
ZFRhYmxlU2l6ZTsgKytpKQ0KKyAgICAgICAgICAgIGlmICghaXNFbXB0eU9yRGVsZXRlZEJ1Y2tl
dChvbGRUYWJsZVtpXSkpDQorICAgICAgICAgICAgICAgIHJlaW5zZXJ0KG9sZFRhYmxlW2ldKTsN
CisNCisgICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsNCisNCisgICAgICAgIGRlYWxsb2NhdGVU
YWJsZShvbGRUYWJsZSwgb2xkVGFibGVTaXplKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpj
bGVhcigpDQorICAgIHsNCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisgICAgICAg
IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7DQorICAgICAgICBtX3RhYmxl
ID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplTWFz
ayA9IDA7DQorICAgICAgICBtX2tleUNvdW50ID0gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0K
KyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQ0KKyAgICAg
ICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAsIG1f
dGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAg
ICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICAgICAgLy8gQ29weSB0aGUg
aGFzaCB0YWJsZSB0aGUgZHVtYiB3YXksIGJ5IGFkZGluZyBlYWNoIGVsZW1lbnQgdG8gdGhlIG5l
dyB0YWJsZS4NCisgICAgICAgIC8vIEl0IG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IHRvIGNvcHkg
dGhlIHRhYmxlIHNsb3RzLCBidXQgaXQncyBub3QgY2xlYXIgdGhhdCBlZmZpY2llbmN5IGlzIG5l
ZWRlZC4NCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCA9IG90aGVyLmVuZCgpOw0KKyAgICAg
ICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkNCisgICAgICAgICAgICBhZGQoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQ0KKyAgICB7DQorICAgICAgICBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3Jz
KCk7DQorDQorICAgICAgICBWYWx1ZVR5cGUgKnRtcF90YWJsZSA9IG1fdGFibGU7DQorICAgICAg
ICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsNCisgICAgICAgIG90aGVyLm1fdGFibGUgPSB0bXBf
dGFibGU7DQorDQorICAgICAgICBpbnQgdG1wX3RhYmxlU2l6ZSA9IG1fdGFibGVTaXplOw0KKyAg
ICAgICAgbV90YWJsZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsNCisgICAgICAgIG90aGVyLm1f
dGFibGVTaXplID0gdG1wX3RhYmxlU2l6ZTsNCisNCisgICAgICAgIGludCB0bXBfdGFibGVTaXpl
TWFzayA9IG1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG1fdGFibGVTaXplTWFzayA9IG90aGVy
Lm1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IHRtcF90
YWJsZVNpemVNYXNrOw0KKw0KKyAgICAgICAgaW50IHRtcF9rZXlDb3VudCA9IG1fa2V5Q291bnQ7
DQorICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsNCisgICAgICAgIG90aGVy
Lm1fa2V5Q291bnQgPSB0bXBfa2V5Q291bnQ7DQorDQorICAgICAgICBpbnQgdG1wX2RlbGV0ZWRD
b3VudCA9IG1fZGVsZXRlZENvdW50Ow0KKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5t
X2RlbGV0ZWRDb3VudDsNCisgICAgICAgIG90aGVyLm1fZGVsZXRlZENvdW50ID0gdG1wX2RlbGV0
ZWRDb3VudDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4mIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpDQorICAgIHsNCisgICAgICAgIEhh
c2hUYWJsZSB0bXAob3RoZXIpOw0KKyAgICAgICAgc3dhcCh0bXApOw0KKyAgICAgICAgcmV0dXJu
ICp0aGlzOw0KKyAgICB9DQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkg
Y29uc3QNCisgICAgew0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgp
Ow0KKyAgICAgICAgYXNzZXJ0KCFzaG91bGRFeHBhbmQoKSk7DQorICAgICAgICBhc3NlcnQoIXNo
b3VsZFNocmluaygpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm47DQorDQorICAgICAgICBpbnQg
Y291bnQgPSAwOw0KKyAgICAgICAgaW50IGRlbGV0ZWRDb3VudCA9IDA7DQorICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG1fdGFibGVTaXplOyArK2opIHsNCisgICAgICAgICAgICBWYWx1ZVR5
cGUgKmVudHJ5ID0gbV90YWJsZSArIGo7DQorICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAgICAgICAgaWYg
KGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7DQorICAgICAgICAgICAgICAgICsrZGVsZXRlZENv
dW50Ow0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorDQorICAg
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50
cnkpKTsNCisgICAgICAgICAgICBhc3NlcnQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7DQorICAg
ICAgICAgICAgKytjb3VudDsNCisgICAgICAgIH0NCisNCisgICAgICAgIGFzc2VydChjb3VudCA9
PSBtX2tleUNvdW50KTsNCisgICAgICAgIGFzc2VydChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVk
Q291bnQpOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGVTaXplID49IG1fbWluVGFibGVTaXplKTsN
CisgICAgICAgIGFzc2VydChtX3RhYmxlU2l6ZU1hc2spOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFi
bGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOw0KKyAgICB9DQorDQorI2VuZGlmIC8vIENI
RUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0
b3JzKCkNCisgICAgew0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5leHQ7DQorICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7DQorICAg
ICAgICAgICAgbmV4dCA9IHAtPm1fbmV4dDsNCisgICAgICAgICAgICBwLT5tX3RhYmxlID0gMDsN
CisgICAgICAgICAgICBwLT5tX25leHQgPSAwOw0KKyAgICAgICAgICAgIHAtPm1fcHJldmlvdXMg
PSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pdGVyYXRvcnMgPSAwOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiB0YWJsZSwN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQ0KKyAgICB7DQorICAgICAgICBp
dC0+bV90YWJsZSA9IHRhYmxlOw0KKyAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOw0KKw0KKyAg
ICAgICAgLy8gSW5zZXJ0IGl0ZXJhdG9yIGF0IGhlYWQgb2YgZG91Ymx5LWxpbmtlZCBsaXN0IG9m
IGl0ZXJhdG9ycy4NCisgICAgICAgIGlmICghdGFibGUpIHsNCisgICAgICAgICAgICBpdC0+bV9u
ZXh0ID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYXNzZXJ0KHRhYmxlLT5t
X2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAgaXQtPm1fbmV4dCA9IHRhYmxlLT5tX2l0
ZXJhdG9yczsNCisgICAgICAgICAgICB0YWJsZS0+bV9pdGVyYXRvcnMgPSBpdDsNCisgICAgICAg
ICAgICBpZiAoaXQtPm1fbmV4dCkgew0KKyAgICAgICAgICAgICAgICBhc3NlcnQoIWl0LT5tX25l
eHQtPm1fcHJldmlvdXMpOw0KKyAgICAgICAgICAgICAgICBpdC0+bV9uZXh0LT5tX3ByZXZpb3Vz
ID0gaXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
DQorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpDQor
ICAgIHsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorDQorICAg
ICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJvbSBkb3VibHktbGlua2VkIGxpc3Qgb2YgaXRlcmF0
b3JzLg0KKyAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgew0KKyAgICAgICAgICAgIGFzc2VydCgh
aXQtPm1fbmV4dCk7DQorICAgICAgICAgICAgYXNzZXJ0KCFpdC0+bV9wcmV2aW91cyk7DQorICAg
ICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7DQorICAgICAgICAg
ICAgICAgIGFzc2VydChpdC0+bV9uZXh0LT5tX3ByZXZpb3VzID09IGl0KTsNCisgICAgICAgICAg
ICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9IGl0LT5tX3ByZXZpb3VzOw0KKyAgICAgICAg
ICAgIH0NCisgICAgICAgICAgICBpZiAoaXQtPm1fcHJldmlvdXMpIHsNCisgICAgICAgICAgICAg
ICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAg
ICAgIGFzc2VydChpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0KTsNCisgICAgICAgICAgICAg
ICAgaXQtPm1fcHJldmlvdXMtPm1fbmV4dCA9IGl0LT5tX25leHQ7DQorICAgICAgICAgICAgfSBl
bHNlIHsNCisgICAgICAgICAgICAgICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9
PSBpdCk7DQorICAgICAgICAgICAgICAgIGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9IGl0LT5t
X25leHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaXQtPm1fdGFi
bGUgPSAwOw0KKyAgICAgICAgaXQtPm1fbmV4dCA9IDA7DQorICAgICAgICBpdC0+bV9wcmV2aW91
cyA9IDA7DQorICAgIH0NCisNCisjZW5kaWYgLy8gQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0K
Kw0KKyAgICAvLyBpdGVyYXRvciBhZGFwdGVycw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlciB7DQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcihj
b25zdCB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciYgaW1wbCkgOiBtX2lt
cGwoaW1wbCkge30NCisNCisgICAgICAgIGNvbnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gKGNvbnN0IFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9DQorICAgICAgICBjb25zdCBW
YWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KKyAgICAgICAg
Y29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0NCisN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyAr
K21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlv
bmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFk
YXB0ZXIgew0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1l
IEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KKw0KKyAg
ICAgICAgVmFsdWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2ltcGwu
Z2V0KCk7IH0NCisgICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KmdldCgpOyB9DQorICAgICAgICBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVy
biBnZXQoKTsgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRv
cisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsr
IGludGVudGlvbmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIHsNCisgICAgICAg
ICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOw0K
KyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdHlwZW5hbWUg
SGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5tX2ltcGwg
IT0gYi5tX2ltcGw7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4NCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYg
YikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9
DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBj
b25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAg
IHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsNCisgICAgfQ0KKw0KKyAgICAvLyByZWZlcmVu
Y2UgY291bnQgbWFuYWdlcg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzPiBzdHJ1Y3QgTmVlZHNSZWYgew0KKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBWYWx1ZVRyYWl0czo6bmVlZHNSZWYgJiYgIVZhbHVl
U3RvcmFnZVRyYWl0czo6bmVlZHNSZWY7DQorICAgIH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZpcnN0VHJhaXRzLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHMsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cz4NCisgICAgc3RydWN0IE5lZWRzUmVmPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRy
YWl0cywgU2Vjb25kVHJhaXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgRmlyc3RTdG9yYWdl
VHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OlNl
Y29uZFRyYWl0cyBTZWNvbmRTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgZmlyc3ROZWVkc1JlZiA9IE5lZWRzUmVmPEZpcnN0VHJhaXRzLCBGaXJzdFN0b3JhZ2VUcmFp
dHM+Ojp2YWx1ZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNlY29uZE5lZWRzUmVmID0g
TmVlZHNSZWY8U2Vjb25kVHJhaXRzLCBTZWNvbmRTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZpcnN0TmVlZHNSZWYgfHwgc2Vjb25kTmVl
ZHNSZWY7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPGJvb2wgbmVlZHNSZWYsIHR5cGVuYW1l
IFZhbHVlVHJhaXRzPiBzdHJ1Y3QgUmVmQ291bnRlckJhc2U7DQorDQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUmVmQ291bnRlckJhc2U8ZmFsc2UsIFZh
bHVlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFp
dFR5cGUgVmFsdWVUeXBlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlVHlw
ZSYpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3QgVmFsdWVUeXBlJikgeyB9
DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBz
dHJ1Y3QgUmVmQ291bnRlckJhc2U8dHJ1ZSwgVmFsdWVUcmFpdHM+IHsNCisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAgICBz
dGF0aWMgdm9pZCByZWYoY29uc3QgVmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpyZWYoKihj
b25zdCBWYWx1ZVR5cGUqKSZ2KTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3Qg
VmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpkZXJlZigqKGNvbnN0IFZhbHVlVHlwZSopJnYp
OyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBl
bmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+IHN0cnVjdCBSZWZDb3VudGVyIHsNCisgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlU3Rv
cmFnZVR5cGU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc1JlZiA9IE5lZWRzUmVm
PFZhbHVlVHJhaXRzLCBWYWx1ZVN0b3JhZ2VUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5cGVk
ZWYgUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIFZhbHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAg
c3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6cmVmKCoo
Y29uc3QgVmFsdWVUeXBlKikmdik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmKGNvbnN0
IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6ZGVyZWYoKihjb25zdCBWYWx1ZVR5cGUqKSZ2
KTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlw
ZW5hbWUgU2Vjb25kVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+DQorICAgIHN0
cnVjdCBSZWZDb3VudGVyPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRyYWl0cywgU2Vjb25kVHJh
aXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEZp
cnN0VHJhaXRzOjpUcmFpdFR5cGUgRmlyc3RUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZSBTZWNvbmRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEZpcnN0U3RvcmFnZVRyYWl0
czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpTZWNvbmRU
cmFpdHMgU2Vjb25kU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFs
dWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGZpcnN0TmVlZHNSZWYgPSBOZWVkc1JlZjxGaXJzdFRyYWl0cywgRmly
c3RTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzZWNv
bmROZWVkc1JlZiA9IE5lZWRzUmVmPFNlY29uZFRyYWl0cywgU2Vjb25kU3RvcmFnZVRyYWl0cz46
OnZhbHVlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxmaXJzdE5lZWRzUmVmLCBG
aXJzdFRyYWl0cz4gRmlyc3RCYXNlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxz
ZWNvbmROZWVkc1JlZiwgU2Vjb25kVHJhaXRzPiBTZWNvbmRCYXNlOw0KKyAgICAgICAgc3RhdGlj
IHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsNCisgICAgICAgICAgICBGaXJz
dEJhc2U6OnJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmlyc3QpOw0KKyAgICAgICAgICAgIFNl
Y29uZEJhc2U6OnJlZigqKGNvbnN0IFNlY29uZFR5cGUqKSZ2LnNlY29uZCk7DQorICAgICAgICB9
DQorICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZihjb25zdCBWYWx1ZVN0b3JhZ2VUeXBlJiB2KSB7
DQorICAgICAgICAgICAgRmlyc3RCYXNlOjpkZXJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmly
c3QpOw0KKyAgICAgICAgICAgIFNlY29uZEJhc2U6OmRlcmVmKCooY29uc3QgU2Vjb25kVHlwZSop
JnYuc2Vjb25kKTsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBu
ZWVkc1JlZiwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+IHN0
cnVjdCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHN0cnVjdCBIYXNoVGFi
bGVSZWZDb3VudGVyQmFzZTxmYWxzZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+DQorICAg
IHsNCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAg
ICAgICBzdGF0aWMgdm9pZCBkZXJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAgIH07DQor
DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJh
aXRzPg0KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxl
VHlwZSwgVmFsdWVUcmFpdHM+DQorICAgIHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aFRhYmxlVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFJlZkNvdW50
ZXI8VmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHJhaXRzPiBWYWx1
ZVJlZkNvdW50ZXI7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWZBbGwoSGFzaFRhYmxlVHlwZSYp
Ow0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZBbGwoSGFzaFRhYmxlVHlwZSYpOw0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1
ZVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTx0cnVlLCBIYXNoVGFi
bGVUeXBlLCBWYWx1ZVRyYWl0cz46OnJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAg
ew0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAg
IFZhbHVlUmVmQ291bnRlcjo6cmVmKCppdCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHZvaWQgSGFz
aFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+Ojpk
ZXJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAgew0KKyAgICAgICAgaXRlcmF0b3Ig
ZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gdGFibGUuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAgIFZhbHVlUmVmQ291bnRlcjo6ZGVy
ZWYoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
LCB0eXBlbmFtZSBWYWx1ZVRyYWl0cz4gc3RydWN0IEhhc2hUYWJsZVJlZkNvdW50ZXIgew0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYgPSBOZWVkc1JlZjxWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmQWxsKEhhc2hUYWJsZVR5
cGUmIHRhYmxlKSB7IEJhc2U6OnJlZkFsbCh0YWJsZSk7IH0NCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlcmVmQWxsKEhhc2hUYWJsZVR5cGUmIHRhYmxlKSB7IEJhc2U6OmRlcmVmQWxsKHRhYmxlKTsg
fQ0KKyAgICB9Ow0KKw0KK30gLy8gbmFtZXNwYWNlIFdURg0KKw0KKyNlbmRpZiAvLyBLWE1MQ09S
RV9IQVNIX1RBQkxFX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRz
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRzLmgJ
KHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaFRyYWl0cy5oCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxOTUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2lj
LW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGli
cmFyaWVzDQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
DQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLg0KKyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQor
I2RlZmluZSBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQorDQorI2luY2x1ZGUgIkhhc2hGdW5jdGlv
bnMuaCINCisjaW5jbHVkZSA8dXRpbGl0eT4NCisNCituYW1lc3BhY2UgV1RGIHsNCisNCisgICAg
dXNpbmcgc3RkOjpwYWlyOw0KKyAgICB1c2luZyBzdGQ6Om1ha2VfcGFpcjsNCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElzSW50ZWdlciAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVn
ZXI8Ym9vbD4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGNoYXI+ICAgICAgICAgICAgICAg
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IElzSW50ZWdlcjxzaWduZWQgY2hhcj4gICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQg
Y2hhcj4gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNob3J0PiAgICAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdl
cjx1bnNpZ25lZCBzaG9ydD4gICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8aW50PiAgICAgICAgICAgICAgICB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGludD4gICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxsb25nPiAgICAg
ICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgbG9uZz4gICAgICB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2Vy
PGxvbmcgbG9uZz4gICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+IHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVn
ZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U7DQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8dHJ1ZSwgVD4gew0K
KyAgICAgICAgdHlwZWRlZiBUIFRyYWl0VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRyYWl0
czx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQor
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7DQorICAg
IH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8ZmFsc2UsIFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUcmFpdFR5cGU7DQorICAgICAgICB0
eXBlZGVmIEhhc2hUcmFpdHM8VD4gU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4gew0KKyAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIFQoKTsgfQ0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYg
PSBmYWxzZTsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhh
c2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7IH07DQorDQorICAgIC8vIHNpZ25lZCBp
bnRlZ2VyIHRyYWl0cyBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBhbGwgdXNlcyBzaW5jZSB0
aGV5IGRpc2FsbG93IDAgYW5kIC0xIGFzIGtleXMNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxzaWduZWQgY2hhcj4gOiBHZW5lcmljSGFzaFRyYWl0czxpbnQ+IHsNCisgICAgICAg
IHN0YXRpYyBzaWduZWQgY2hhciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPHNob3J0PiA6IEdlbmVyaWNIYXNo
VHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIHNob3J0IGRlbGV0ZWRWYWx1ZSgpIHsgcmV0
dXJuIC0xOyB9DQorICAgIH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8aW50
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIGludCBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8bG9uZz4gew0KKyAgICAgICAgc3Rh
dGljIGxvbmcgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisgICAgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxsb25nIGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8
bG9uZyBsb25nPiB7DQorICAgICAgICBzdGF0aWMgbG9uZyBkZWxldGVkVmFsdWUoKSB7IHJldHVy
biAtMTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxQKj4gOiBHZW5lcmljSGFzaFRyYWl0czxQKj4gew0KKyAgICAgICAgdHlwZWRlZiBI
YXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9y
YWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7DQorICAgICAgICBzdGF0aWMgUCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxQKj4oLTEpOyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBIYXNoVHJhaXRzPFJlZlB0cjxQPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8UmVmUHRy
PFA+ID4gew0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNp
emVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc1JlZiA9IHRydWU7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWYoY29uc3QgUmVm
UHRyPFA+JiBwKSB7IGlmIChwKSBwLT5yZWYoKTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVy
ZWYoY29uc3QgUmVmUHRyPFA+JiBwKSB7IGlmIChwKSBwLT5kZXJlZigpOyB9DQorICAgIH07DQor
DQorICAgIC8vIHRlbXBsYXRlIHRvIHNldCBkZWxldGVkIHZhbHVlcw0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBEZWxldGVkVmFsdWVBc3NpZ25lciB7DQorICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUodHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5
cGUmIGxvY2F0aW9uKSB7IGxvY2F0aW9uID0gVHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0KKyAg
ICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGlubGlu
ZSB2b2lkIGFzc2lnbkRlbGV0ZWQoVCYgbG9jYXRpb24pDQorICAgIHsNCisgICAgICAgIERlbGV0
ZWRWYWx1ZUFzc2lnbmVyPFRyYWl0cz46OmFzc2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQor
ICAgIH0NCisNCisgICAgLy8gc3BlY2lhbCB0cmFpdHMgZm9yIHBhaXJzLCBoZWxwZnVsIGZvciB0
aGVpciB1c2UgaW4gSGFzaE1hcCBpbXBsZW1lbnRhdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGaXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPiBzdHJ1Y3QgUGFpckhhc2hU
cmFpdHM7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnLCB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHNBcmc+DQorICAgIHN0cnVjdCBQYWlyQmFzZUhhc2hUcmFpdHMgOiBHZW5l
cmljSGFzaFRyYWl0czxwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5
cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPiA+IHsNCisgICAgICAgIHR5cGVkZWYg
Rmlyc3RUcmFpdHNBcmcgRmlyc3RUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIFNlY29uZFRyYWl0
c0FyZyBTZWNvbmRUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIHBhaXI8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlRyYWl0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+IFRyYWl0
VHlwZTsNCisNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlN0b3JhZ2VUcmFpdHMsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6U3RvcmFnZVRyYWl0
cz4gU3RvcmFnZVRyYWl0czsNCisNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6
OmVtcHR5VmFsdWVJc1plcm87DQorDQorICAgICAgICBzdGF0aWMgVHJhaXRUeXBlIGVtcHR5VmFs
dWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoRmlyc3RUcmFp
dHM6OmVtcHR5VmFsdWUoKSwgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlKCkpOw0KKyAgICAgICAg
fQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlwZW5h
bWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUGFpckhhc2hUcmFpdHMgOiBQYWlyQmFzZUhh
c2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gew0KKyAgICAgICAgdHlwZWRlZiBw
YWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0
czo6VHJhaXRUeXBlPiBUcmFpdFR5cGU7DQorDQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gRmlyc3RUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgU2Vjb25k
VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uOw0KKw0KKyAgICAgICAgc3RhdGljIFRyYWl0VHlwZSBk
ZWxldGVkVmFsdWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBUcmFpdFR5cGUo
Rmlyc3RUcmFpdHM6OmRlbGV0ZWRWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7
DQorICAgICAgICB9DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUo
VHJhaXRUeXBlJiBsb2NhdGlvbikNCisgICAgICAgIHsNCisgICAgICAgICAgICBhc3NpZ25EZWxl
dGVkPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIEZpcnN0VHJhaXRzPihsb2NhdGlv
bi5maXJzdCk7DQorICAgICAgICAgICAgbG9jYXRpb24uc2Vjb25kID0gU2Vjb25kVHJhaXRzOjpl
bXB0eVZhbHVlKCk7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZpcnN0LCB0eXBlbmFtZSBTZWNvbmQ+DQorICAgIHN0cnVjdCBIYXNoVHJhaXRzPHBhaXI8
Rmlyc3QsIFNlY29uZD4gPiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEZpcnN0
PiwgSGFzaFRyYWl0czxTZWNvbmQ+ID4geyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
aXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZh
bHVlQXNzaWduZXI8UGFpckhhc2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gPg0K
KyAgICB7DQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjx0eXBl
bmFtZSBGaXJzdFRyYWl0czo6VHJhaXRUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OlRyYWl0
VHlwZT4mIGxvY2F0aW9uKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIFBhaXJIYXNoVHJhaXRz
PEZpcnN0VHJhaXRzLCBTZWNvbmRUcmFpdHM+Ojphc3NpZ25EZWxldGVkVmFsdWUobG9jYXRpb24p
Ow0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwg
dHlwZW5hbWUgU2Vjb25kPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZhbHVlQXNzaWduZXI8SGFzaFRy
YWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID4gPg0KKyAgICB7DQorICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjxGaXJzdCwgU2Vjb25kPiYgbG9jYXRpb24pDQorICAg
ICAgICB7DQorICAgICAgICAgICAgSGFzaFRyYWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID46OmFz
c2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAg
IC8vIGhhc3NoIGZ1bmN0aW9ucyBhbmQgdHJhaXRzIHRoYXQgYXJlIGVxdWl2YWxlbnQgKGZvciBj
b2RlIHNoYXJpbmcpDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IFRyYWl0c0FyZz4gc3RydWN0IEhhc2hLZXlTdG9yYWdlVHJhaXRzIHsNCisgICAgICAgIHR5cGVk
ZWYgSGFzaEFyZyBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBUcmFpdHNBcmcgVHJhaXRzOw0KKyAg
ICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFp
dHM8UHRySGFzaDxQKj4sIEhhc2hUcmFpdHM8UCo+ID4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBJbnRUeXBlczxzaXplb2YoUCopPjo6U2lnbmVkVHlwZSBJbnRUeXBlOw0KKyAgICAgICAg
dHlwZWRlZiBJbnRIYXNoPEludFR5cGU+IEhhc2g7DQorICAgICAgICB0eXBlZGVmIEhhc2hUcmFp
dHM8SW50VHlwZT4gVHJhaXRzOw0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFpdHM8UHRySGFzaDxSZWZQdHI8UD4gPiwgSGFzaFRyYWl0
czxSZWZQdHI8UD4gPiA+IHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW50VHlwZXM8c2l6
ZW9mKFAqKT46OlNpZ25lZFR5cGUgSW50VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSW50SGFzaDxJ
bnRUeXBlPiBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPEludFR5cGU+IFRyYWl0
czsNCisgICAgfTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6Okhhc2hU
cmFpdHM7DQordXNpbmcgV1RGOjpQYWlySGFzaFRyYWl0czsNCisNCisjZW5kaWYgLy8gS1hNTENP
UkVfSEFTSF9UUkFJVFNfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2l0ZXJhdG9y
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlz
aW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlzaW9uIDAp
DQpAQCAtMCwwICsxLDE3MCBAQA0KKy8vIFR5cGVzIHVzZWQgaW4gaXRlcmF0b3IgaW1wbGVtZW50
YXRpb24gLSotIEMrKyAtKi0NCisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8g
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg
dGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u
IDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhj
ZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUN
CisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVy
IGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5l
IGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUg
YW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRo
aXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1
dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBv
dGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkN
CisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENv
cHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQ
ZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMg
c29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhl
cmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRo
YXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisg
KiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBt
YWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhp
cyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIg
d2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHly
aWdodCAoYykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1z
LCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29u
IEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJp
bGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlk
ZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisN
CisvKiogQGZpbGUgc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaA0KKyAqICBUaGlzIGlzIGFuIGlu
dGVybmFsIGhlYWRlciBmaWxlLCBpbmNsdWRlZCBieSBvdGhlciBsaWJyYXJ5IGhlYWRlcnMuDQor
ICogIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gdXNlIGl0IGRpcmVjdGx5Lg0KKyAqDQorICog
IFRoaXMgZmlsZSBjb250YWlucyBhbGwgb2YgdGhlIGdlbmVyYWwgaXRlcmF0b3ItcmVsYXRlZCB1
dGlsaXR5IHR5cGVzLA0KKyAqICBzdWNoIGFzIGl0ZXJhdG9yX3RyYWl0cyBhbmQgc3RydWN0IGl0
ZXJhdG9yLg0KKyAqLw0KKw0KKyNpZm5kZWYgX0lURVJBVE9SX0JBU0VfVFlQRVNfSA0KKyNkZWZp
bmUgX0lURVJBVE9SX0JBU0VfVFlQRVNfSCAxDQorDQorLy8jcHJhZ21hIEdDQyBzeXN0ZW1faGVh
ZGVyDQorDQorbmFtZXNwYWNlIHN0ZA0KK3sNCisgIC8vQHsNCisgIC8qKg0KKyAgICogIEBkZWZn
cm91cCBpdGVyYXRvcl90YWdzIEl0ZXJhdG9yIFRhZ3MNCisgICAqICBUaGVzZSBhcmUgZW1wdHkg
dHlwZXMsIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGl0ZXJhdG9ycy4gIFRoZQ0KKyAg
ICogIGRpc3RpbmN0aW9uIGlzIG5vdCBtYWRlIGJ5IHdoYXQgdGhleSBjb250YWluLCBidXQgc2lt
cGx5IGJ5IHdoYXQgdGhleQ0KKyAgICogIGFyZS4gIERpZmZlcmVudCB1bmRlcmx5aW5nIGFsZ29y
aXRobXMgY2FuIHRoZW4gYmUgdXNlZCBiYXNlZCBvbiB0aGUNCisgICAqICBkaWZmZXJlbnQgb3Bl
cmF0aW9ucyBzdXBwb3JldGQgYnkgZGlmZmVyZW50IGl0ZXJhdG9yIHR5cGVzLg0KKyAgKi8NCisg
IC8vLyAgTWFya2luZyBpbnB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9Ow0KKyAgLy8vICBNYXJraW5nIG91dHB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3Qgb3V0
cHV0X2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vLyBGb3J3YXJkIGl0ZXJhdG9ycyBzdXBwb3J0IGEg
c3VwZXJzZXQgb2YgaW5wdXQgaXRlcmF0b3Igb3BlcmF0aW9ucy4NCisgIHN0cnVjdCBmb3J3YXJk
X2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcge307DQorICAvLy8gQmlk
aXJlY3Rpb25hbCBpdGVyYXRvcnMgc3VwcG9ydCBhIHN1cGVyc2V0IG9mIGZvcndhcmQgaXRlcmF0
b3INCisgIC8vLyBvcGVyYXRpb25zLg0KKyAgc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9Ow0KKyAgLy8vIFJhbmRvbS1hY2Nl
c3MgaXRlcmF0b3JzIHN1cHBvcnQgYSBzdXBlcnNldCBvZiBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9y
DQorICAvLy8gb3BlcmF0aW9ucy4NCisgIHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vQH0NCisNCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgQ29tbW9uICVpdGVyYXRvciBjbGFzcy4NCisgICAqDQor
ICAgKiAgVGhpcyBjbGFzcyBkb2VzIG5vdGhpbmcgYnV0IGRlZmluZSBuZXN0ZWQgdHlwZWRlZnMu
ICAlSXRlcmF0b3IgY2xhc3Nlcw0KKyAgICogIGNhbiBpbmhlcml0IGZyb20gdGhpcyBjbGFzcyB0
byBzYXZlIHNvbWUgd29yay4gIFRoZSB0eXBlZGVmcyBhcmUgdGhlbg0KKyAgICogIHVzZWQgaW4g
c3BlY2lhbGl6YXRpb25zIGFuZCBvdmVybG9hZGluZy4NCisgICAqDQorICAgKiAgSW4gcGFydGlj
dWxhciwgdGhlcmUgYXJlIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHJlcXVpcmVtZW50
cw0KKyAgICogIHN1Y2ggYXMgQGMgb3BlcmF0b3IrKyBhbmQgdGhlIGxpa2UuICAoSG93IGNvdWxk
IHRoZXJlIGJlPykNCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2F0ZWdvcnksIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0gcHRyZGlmZl90LA0KKyAgICAgICAgICAgdHlw
ZW5hbWUgX1BvaW50ZXIgPSBfVHAqLCB0eXBlbmFtZSBfUmVmZXJlbmNlID0gX1RwJj4NCisgICAg
c3RydWN0IGl0ZXJhdG9yDQorICAgIHsNCisgICAgICAvLy8gT25lIG9mIHRoZSBAbGluayBpdGVy
YXRvcl90YWdzIHRhZyB0eXBlc0BlbmRsaW5rLg0KKyAgICAgIHR5cGVkZWYgX0NhdGVnb3J5ICBp
dGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICAvLy8gVGhlIHR5cGUgInBvaW50ZWQgdG8iIGJ5IHRo
ZSBpdGVyYXRvci4NCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlwZTsNCisgICAg
ICAvLy8gRGlzdGFuY2UgYmV0d2VlbiBpdGVyYXRvcnMgaXMgcmVwcmVzZW50ZWQgYXMgdGhpcyB0
eXBlLg0KKyAgICAgIHR5cGVkZWYgX0Rpc3RhbmNlICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAg
Ly8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgcG9pbnRlci10by12YWx1ZV90eXBlLg0KKyAgICAg
IHR5cGVkZWYgX1BvaW50ZXIgICBwb2ludGVyOw0KKyAgICAgIC8vLyBUaGlzIHR5cGUgcmVwcmVz
ZW50cyBhIHJlZmVyZW5jZS10by12YWx1ZV90eXBlLg0KKyAgICAgIHR5cGVkZWYgX1JlZmVyZW5j
ZSByZWZlcmVuY2U7DQorICAgIH07DQorDQorICAvKioNCisgICAqICBUaGlzIGNsYXNzIGRvZXMg
bm90aGluZyBidXQgZGVmaW5lIG5lc3RlZCB0eXBlZGVmcy4gIFRoZSBnZW5lcmFsDQorICAgKiAg
dmVyc2lvbiBzaW1wbHkgImZvcndhcmRzIiB0aGUgbmVzdGVkIHR5cGVkZWZzIGZyb20gdGhlIEl0
ZXJhdG9yDQorICAgKiAgYXJndW1lbnQuICBTcGVjaWFsaXplZCB2ZXJzaW9ucyBmb3IgcG9pbnRl
cnMgYW5kIHBvaW50ZXJzLXRvLWNvbnN0DQorICAgKiAgcHJvdmlkZSB0aWdodGVyLCBtb3JlIGNv
cnJlY3Qgc2VtYW50aWNzLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4N
CisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0cw0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5Ow0KKyAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUg
ICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBv
aW50ZXIgICAgICAgICAgIHBvaW50ZXI7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0
b3I6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPg0KKyAgICB7
DQorICAgICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsNCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsNCisgICAgICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyOw0KKyAgICAgIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxjb25zdCBfVHAqPg0KKyAgICB7DQorICAgICAgdHlwZWRlZiByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICB0eXBlZGVmIF9U
cCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRy
ZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsNCisgICAgICB0eXBlZGVm
IGNvbnN0IF9UcCogICAgICAgICAgICAgICAgICBwb2ludGVyOw0KKyAgICAgIHR5cGVkZWYgY29u
c3QgX1RwJiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIC8qKg0K
KyAgICogIEBpZiBtYWludA0KKyAgICogIFRoaXMgZnVuY3Rpb24gaXMgbm90IGEgcGFydCBvZiB0
aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyBzeW50YWN0aWMNCisgICAqICBzdWdhciBmb3IgaW50ZXJu
YWwgbGlicmFyeSB1c2Ugb25seS4NCisgICAqICBAZW5kaWYNCisgICovDQorICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcj4NCisgICAgaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRl
cj46Oml0ZXJhdG9yX2NhdGVnb3J5DQorICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0
ZXImKQ0KKyAgICB7IHJldHVybiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVy
YXRvcl9jYXRlZ29yeSgpOyB9DQorDQorfSAvLyBuYW1lc3BhY2Ugc3RkDQorDQorI2VuZGlmIC8q
IF9JVEVSQVRPUl9CQVNFX1RZUEVTX0ggKi8NCisNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9uZXcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9uZXcJKHJl
dmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbmV3CShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSBAQA0KKyNpbmNsdWRlIDxlMzJjbW4uaD4NClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNvYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsNyArMjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KICNpbmNsdWRlIDxOUF9qc29iamVjdC5oPgogCkBAIC0zNSwxNSArMzUsMTUgQEANCiAKIHN0
YXRpYyBLSlM6Okxpc3QgbGlzdEZyb21WYXJpYW50QXJncyhLSlM6OkV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgTlBWYXJpYW50ICphcmdzLCB1bnNpZ25lZCBhcmdDb3VudCkKIHsKLSAgICBLSlM6Okxp
c3QgYUxpc3Q7IAorICAgIEtKUzo6TGlzdCBhTGlzdDsKICAgICB1bnNpZ25lZCBpOwogICAgIGNv
bnN0IE5QVmFyaWFudCAqdiA9IGFyZ3M7Ci0gICAgCisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJn
Q291bnQ7IGkrKykgewogICAgICAgICBhTGlzdC5hcHBlbmQgKGNvbnZlcnROUFZhcmlhbnRUb1Zh
bHVlIChleGVjLCB2KSk7CiAgICAgICAgIHYrKzsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
YUxpc3Q7CiB9CiAKQEAgLTU3LDEwICs1NywxMCBAQA0KICAgICBmcmVlIChvYmopOwogfQogCi1z
dGF0aWMgTlBDbGFzcyBfamF2YXNjcmlwdENsYXNzID0geyAKK3N0YXRpYyBOUENsYXNzIF9qYXZh
c2NyaXB0Q2xhc3MgPSB7CiAgICAgMSwKLSAgICBqc0FsbG9jYXRlLCAKLSAgICAoTlBEZWFsbG9j
YXRlRnVuY3Rpb25QdHIpanNEZWFsbG9jYXRlLCAKKyAgICBqc0FsbG9jYXRlLAorICAgIChOUERl
YWxsb2NhdGVGdW5jdGlvblB0cilqc0RlYWxsb2NhdGUsCiAgICAgMCwKICAgICAwLAogICAgIDAs
CkBAIC03MywxMjcgKzczLDEzMCBAQA0KIAogTlBDbGFzcyAqTlBTY3JpcHRPYmplY3RDbGFzcyA9
ICZfamF2YXNjcmlwdENsYXNzOwogCi1zdGF0aWMgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5Q
SWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpCi17Ci0gICAgTlBVVEYxNiAqbWV0aG9kTmFt
ZTsKLSAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7Ci0gICAgCi0gICAgY29udmVydFVURjhU
b1VURjE2IChuYW1lLCAtMSwgJm1ldGhvZE5hbWUsICZVVEYxNkxlbmd0aCk7IC8vIHJlcXVpcmVz
IGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCi0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyICgo
Y29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOwotICAgIGZyZWUgKCh2
b2lkICopbWV0aG9kTmFtZSk7Ci0gICAgCi0gICAgcmV0dXJuIGlkZW50aWZpZXI7Ci19CiAKIHN0
YXRpYyBib29sIF9pc1NhZmVTY3JpcHQoSmF2YVNjcmlwdE9iamVjdCAqb2JqKQogewogICAgIGlm
IChvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQpIHsKLQlJbnRlcnByZXRlciAqb3JpZ2luSW50
ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCk7Ci0J
aWYgKG9yaWdpbkludGVycHJldGVyKSB7Ci0JICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+
aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwotCX0K
KyAgICBJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCk7CisgICAgaWYgKG9yaWdpbkludGVycHJldGVyKSB7Cisg
ICAgICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwogICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK0VYUE9SVF9DCiBOUE9iamVjdCAqX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKE5Q
UCBucHAsIEtKUzo6T2JqZWN0SW1wICppbXAsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKmV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEph
dmFTY3JpcHRPYmplY3QgKilfTlBOX0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xh
c3MpOworICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopTlBO
X0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xhc3MpOwogCiAgICAgb2JqLT5pbXAg
PSBpbXA7Ci0gICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsgICAgCi0gICAgb2JqLT5leGVjdXRpb25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4
dDsgICAgCisgICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsKKyAgICBvYmotPmV4ZWN1dGlvbkNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0Owog
CiAgICAgYWRkTmF0aXZlUmVmZXJlbmNlIChleGVjdXRpb25Db250ZXh0LCBpbXApOwotICAgIAor
CiAgICAgcmV0dXJuIChOUE9iamVjdCAqKW9iajsKIH0KIAotYm9vbCBfTlBOX0ludm9rZURlZmF1
bHQgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90
IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKK0VYUE9SVF9DCitib29sIE5QTl9JbnZva2VE
ZWZhdWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50
MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9
PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAgIC8vIE5vIG5vdGlvbiBvZiBhIGRlZmF1
bHQgZnVuY3Rpb24gb24gSlMgb2JqZWN0cy4gIEp1c3QgcmV0dXJuIGZhbHNlLCBjYW4ndCBoYW5k
bGUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2Jq
ID0gKEphdmFTY3JpcHRPYmplY3QgKilvOworICAgICAgICBPYmplY3RJbXAgKmZ1bmNJbXAgPSBv
YmotPmltcDsKKyAgICAgICAgaWYgKCFmdW5jSW1wLT5pbXBsZW1lbnRzQ2FsbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgT2JqZWN0
IHRoaXNPYmogPSBPYmplY3QoY29uc3RfY2FzdDxPYmplY3RJbXAqPihvYmotPmltcCkpOworICAg
ICAgICBMaXN0IGFyZ0xpc3QgPSBsaXN0RnJvbVZhcmlhbnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0Nv
dW50KTsKKyAgICAgICAgVmFsdWUgcmVzdWx0ViA9IE9iamVjdChmdW5jSW1wKS5jYWxsIChleGVj
LCB0aGlzT2JqLCBhcmdMaXN0KTsKKworICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhl
IHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgY29udmVydFZhbHVlVG9OUFZh
cmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGVsc2UgewogICAgICAgICBpZiAoby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KSB7CiAg
ICAgICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0IChvLCBhcmdzLCBhcmdD
b3VudCwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIF9OUE5fSW52b2tlIChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQs
IE5QVmFyaWFudCAqcmVzdWx0KQorRVhQT1JUX0MKK2Jvb2wgTlBOX0ludm9rZSAoTlBQIG5wcCwg
TlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFy
Z3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKIHsKICAgICBpZiAoby0+
X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVj
dCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAgCi0JaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKLQkgICAgCisgICAgICAgIEphdmFTY3Jp
cHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKKworICAgIGlmICghX2lzU2Fm
ZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgUHJpdmF0ZUlk
ZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKiltZXRob2ROYW1lOwogICAgICAgICBp
ZiAoIWktPmlzU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Ci0JLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgotCWlmIChtZXRob2ROYW1lID09
IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcigiZXZhbCIpKSB7Ci0JICAgIGlmIChhcmdDb3VudCAh
PSAxKQotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIGlmIChhcmdzWzBdLnR5cGUgIT0gTlBWYXJpYW50
VHlwZV9TdHJpbmcpCi0JCXJldHVybiBmYWxzZTsKLQkgICAgCi0JICAgIHJldHVybiBfTlBOX0V2
YWx1YXRlIChucHAsIG8sIChOUFN0cmluZyAqKSZhcmdzWzBdLnZhbHVlLnN0cmluZ1ZhbHVlLCBy
ZXN1bHQpOwotCX0KLQllbHNlIHsKLQkgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBvYmplY3Qu
Ci0JICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0
ZXIoKS0+Z2xvYmFsRXhlYygpOwotCSAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKLQkgICAgVmFs
dWUgZnVuYyA9IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZykpOwogCi0JICAgIGlmIChmdW5jLmlzTnVsbCgpKSB7Ci0JCU5QTl9J
bml0aWFsaXplVmFyaWFudEFzTnVsbChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0g
ZWxzZSBpZiAoZnVuYy50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkgewotCQlOUE5fSW5pdGlhbGl6
ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0gZWxz
ZSB7Ci0JCS8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KLQkJT2JqZWN0SW1wICpmdW5jSW1w
ID0gc3RhdGljX2Nhc3Q8T2JqZWN0SW1wKj4oZnVuYy5pbXAoKSk7Ci0JCU9iamVjdCB0aGlzT2Jq
ID0gT2JqZWN0KGNvbnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKLQkJTGlzdCBhcmdM
aXN0ID0gbGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCk7Ci0JCVZhbHVl
IHJlc3VsdFYgPSBPYmplY3QoZnVuY0ltcCkuY2FsbCAoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7
CisgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgorICAgIGlmIChtZXRob2RO
YW1lID09IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKCJldmFsIikpIHsKKyAgICAgICAgaWYgKGFy
Z0NvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3NbMF0u
dHlwZSAhPSBOUFZhcmlhbnRUeXBlX1N0cmluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0J
CS8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgot
CQljb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwotCQlyZXR1
cm4gdHJ1ZTsKLQkgICAgfQotCX0KKyAgICAgICAgcmV0dXJuIE5QTl9FdmFsdWF0ZSAobnBwLCBv
LCAoTlBTdHJpbmcgKikmYXJnc1swXS52YWx1ZS5zdHJpbmdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICAgIC8vIExvb2t1cCB0aGUgZnVuY3Rpb24gb2JqZWN0LgorICAg
ICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVy
KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CisgICAgICAg
IFZhbHVlIGZ1bmMgPSBvYmotPmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRp
ZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKKworICAgICAgICBpZiAoZnVuYy5pc051bGwoKSkgewor
ICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc051bGwocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmMudHlwZSgpID09IFVuZGVmaW5lZFR5
cGUpIHsKKyAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNVbmRlZmluZWQocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAvLyBDYWxs
IHRoZSBmdW5jdGlvbiBvYmplY3QuCisgICAgICAgIE9iamVjdEltcCAqZnVuY0ltcCA9IHN0YXRp
Y19jYXN0PE9iamVjdEltcCo+KGZ1bmMuaW1wKCkpOworICAgICAgICBPYmplY3QgdGhpc09iaiA9
IE9iamVjdChjb25zdF9jYXN0PE9iamVjdEltcCo+KG9iai0+aW1wKSk7CisgICAgICAgIExpc3Qg
YXJnTGlzdCA9IGxpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQpOworICAg
ICAgICBWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXApLmNhbGwgKGV4ZWMsIHRoaXNPYmos
IGFyZ0xpc3QpOworCisgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9m
IHRoZSBmdW5jdGlvbiBjYWxsLgorICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCByZXN1bHRWLCByZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KICAgICB9IGVsc2UgaWYgKG8tPl9jbGFzcy0+aW52b2tlKQogICAgICAgICByZXR1cm4gby0+
X2NsYXNzLT5pbnZva2UgKG8sIG1ldGhvZE5hbWUsIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOwot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgX05QTl9FdmFsdWF0ZSAoTlBQIG5w
cCwgTlBPYmplY3QgKm8sIE5QU3RyaW5nICpzLCBOUFZhcmlhbnQgKnZhcmlhbnQpCitFWFBPUlRf
QworYm9vbCBOUE5fRXZhbHVhdGUgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUFN0cmluZyAqcywg
TlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmpl
Y3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnBy
ZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIE9iamVjdCB0aGlzT2JqID0gT2JqZWN0KGNv
bnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKICAgICAgICAgVmFsdWUgcmVzdWx0Owot
ICAgICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgTlBVVEYx
NiAqc2NyaXB0U3RyaW5nOwogICAgICAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7CiAgICAg
ICAgIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYgKHMsICZzY3JpcHRTdHJpbmcsICZVVEYxNkxlbmd0
aCk7ICAgIC8vIHJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCiAgICAgICAgIENv
bXBsZXRpb24gY29tcGxldGlvbiA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+ZXZhbHVhdGUoVVN0cmluZygpLCAwLCBVU3RyaW5nKChjb25zdCBVQ2hhciAqKXNjcmlwdFN0
cmluZyxVVEYxNkxlbmd0aCkpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24u
Y29tcGxUeXBlKCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0eXBlID09IE5vcm1hbCkgewog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcGxldGlvbi52YWx1ZSgpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkgewpAQCAtMjAyLDIzICsyMDUsMjQgQEANCiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gVW5kZWZpbmVkKCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBmcmVlICgodm9pZCAqKXNjcmlwdFN0cmluZyk7Ci0gICAgICAgIAorCiAg
ICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdCwgdmFyaWFudCk7Ci0g
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBfTlBOX0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MKK2Jvb2wgTlBO
X0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3Jp
cHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5p
bnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAKQEAgLTIzNSwxNCArMjM5LDE0IEBADQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgVmFsdWUgcmVz
dWx0OwogICAgICAgICBpZiAoaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBvYmot
PmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJp
bmcpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5pbXAtPmdldCAo
ZXhlYywgaS0+dmFsdWUubnVtYmVyKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHJlc3VsdC5p
c051bGwoKSkgewogICAgICAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNOdWxsKHZhcmlh
bnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY4LDEzICsyNzIsMTQgQEANCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIF9OUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5Q
T2JqZWN0ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZh
cmlhbnQpCitFWFBPUlRfQworYm9vbCBOUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0
ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKICAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CkBAIC0yODMsNyArMjg4LDcgQEANCiAg
ICAgICAgICAgICBvYmotPmltcC0+cHV0KGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZyksIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPnB1dChleGVjLCBpLT52YWx1
ZS5udW1iZXIsIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQpKTsKLSAgICAg
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPnNl
dFByb3BlcnR5KQogICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAobywgcHJv
cGVydHlOYW1lLCB2YXJpYW50KTsKQEAgLTI5MSwxMyArMjk2LDE0IEBADQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAq
bywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9DCitib29sIE5QTl9SZW1vdmVQ
cm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKIApAQCAtMzE4LDE5ICszMjQsMjAgQEANCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRl
UHJvcGVydHkgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmlu
ZykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRlUHJvcGVydHkg
KGV4ZWMsIGktPnZhbHVlLm51bWJlcik7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgX05QTl9IYXNQcm9wZXJ0eShO
UFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9D
Citib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xh
c3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOyAKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOwogCi0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+Z2xvYmFsRXhlYygpOwogCkBAIC0zMzksMjYgKzM0NiwyNyBAQA0KIAogICAgICAgICBpZiAo
aS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4
ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmluZykpOwotICAgICAg
ICAKKwogICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4ZWMsIGktPnZhbHVl
Lm51bWJlcik7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPmhhc1Byb3BlcnR5KQogICAgICAg
ICByZXR1cm4gby0+X2NsYXNzLT5oYXNQcm9wZXJ0eSAobywgcHJvcGVydHlOYW1lKTsKLSAgICAK
KwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBfTlBOX0hhc01ldGhvZChOUFAgbnBwLCBO
UE9iamVjdCAqbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCitFWFBPUlRfQworYm9vbCBOUE5f
SGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
IHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAg
Ci0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOwogCisgICAgaWYg
KCFfaXNTYWZlU2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKW1ldGhvZE5hbWU7CiAg
ICAgICAgIGlmICghaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAvLyBMb29rdXAgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAg
ICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigp
LT5nbG9iYWxFeGVjKCk7CiAKQEAgLTM2OCwyMSArMzc2LDIyIEBADQogICAgICAgICBpZiAoZnVu
Yy5pc051bGwoKSB8fCBmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAorCiAgICAgZWxzZSBpZiAoby0+X2NsYXNzLT5oYXNNZXRob2QpIHsK
ICAgICAgICAgcmV0dXJuIG8tPl9jbGFzcy0+aGFzTWV0aG9kIChvLCBtZXRob2ROYW1lKTsKICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRp
b24gKE5QT2JqZWN0ICpvLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpCitFWFBPUlRfQwordm9pZCBO
UE5fU2V0RXhjZXB0aW9uIChOUE9iamVjdCAqbywgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogewog
ICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87CiAgICAgICAgIEV4ZWNT
dGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFs
RXhlYygpOwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgT2JqZWN0IGVy
ciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDUsNiArNDUsNyBAQA0KICAgICBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVj
dXRpb25Db250ZXh0OwogfSBKYXZhU2NyaXB0T2JqZWN0OwogCitJTVBPUlRfQwogTlBPYmplY3Qg
Kl9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IChOUFAgbnBwLCBLSlM6Ok9iamVjdEltcCAqaW1wLCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW5FeGVjdXRpb25Db250ZXh0LCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0KTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucGFwaS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkocmV2aXNpb24g
MTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTEsMTAgKzEsMTEgQEANCisvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRl
bnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwogLyogKioqKiogQkVH
SU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwg
Mi4xCisgKiBWZXJzaW9uOiBOUEwgMS4xL0dQTCAyLjAvTEdQTCAyLjEKICAqCi0gKiBUaGUgY29u
dGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNl
bnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAotICogdGhlIExpY2Vuc2UuIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9NUEwvCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBO
ZXRzY2FwZSBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvTlBMLwogICoKICAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCiAgKiBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBT
ZWUgdGhlIExpY2Vuc2UKQEAgLTE5LDExMSArMjAsMjEwIEBADQogICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIENvbnRyaWJ1dG9yKHMpOgorICog
ICAgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIE5va2lhIENvcnBvcmF0aW9uCiAg
KgorICoKICAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJl
IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKICAqIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAi
TEdQTCIpLAogICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRo
ZSBMR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKICAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ug
d2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CiAgKiB1
bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8g
YWxsb3cgb3RoZXJzIHRvCi0gKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogdXNlIHlvdXIgdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBOUEwsIGluZGljYXRlIHlvdXIKICAq
IGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRo
ZW0gd2l0aCB0aGUgbm90aWNlCiAgKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0
aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQogICogdGhlIHByb3Zpc2lv
bnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1
bmRlcgotICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUg
TEdQTC4KKyAqIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZSBOUEwsIHRoZSBHUEwgb3IgdGhl
IExHUEwuCiAgKgogICogKioqKiogRU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8KLSAKLSAKLSAv
KgotICAqICBOZXRzY2FwZSBjbGllbnQgcGx1Zy1pbiBBUEkgc3BlYwotICAqLwotIAogCisvKiBO
T1RFUzoKKyAqIE5va2lhIG1vZGlmaWVkIHRoaXMgZmlsZSwgYnkgY2hhbmdpbmcgY2VydGFpbiB2
YXJpYWJsZXMgZm9yIHRoZSBwdXJwb3NlIG9mCisgKiBwb3J0aW5nIHRoZSBmaWxlIHRvIHRoZSBT
eW1iaWFuIHBsYXRmb3JtIG9uIE1heSAxc3QsIDIwMDQuCisgKi8KKworCisvKgorICogIG5wYXBp
LmggJFJldmlzaW9uJAorICogIE5ldHNjYXBlIGNsaWVudCBwbHVnLWluIEFQSSBzcGVjCisgKi8K
KwogI2lmbmRlZiBfTlBBUElfSF8KICNkZWZpbmUgX05QQVBJX0hfCiAKLSNpZmRlZiBJTkNMVURF
X0pBVkEKKyNpZmRlZiBfX09TMl9fCisjcHJhZ21hIHBhY2soMSkKKyNlbmRpZgorCisjaW5jbHVk
ZSAicHJ0eXBlcy5oIgorLyogQ29waWVkIGZyb20geHBfY29yZS5oICovCisvKiByZW1vdmVkICNp
ZmRlZiBmb3IgaHB1eCBkZWZpbmVkIGluIC91c3IvaW5jbHVkZS9tb2RlbC5oICovCisjaWZuZGVm
IFhQX01BQworI2lmbmRlZiBfSU5UMTYKKyNkZWZpbmUgX0lOVDE2CisjZW5kaWYKKyNpZm5kZWYg
X0lOVDMyCisjZGVmaW5lIF9JTlQzMgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMTYKKyNkZWZpbmUg
X1VJTlQxNgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMzIKKyNkZWZpbmUgX1VJTlQzMgorI2VuZGlm
CisjZW5kaWYKKworLyoKKyAqIE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVz
aW9uCisgKiBvZiBvYnNvbGV0ZS9wcm90eXBlcy5oLCB3aG9zZSBpbnQxNiwgdWludDE2LAorICog
aW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0aCB0aG9zZQorICogaW4gdGhp
cyBmaWxlLgorICovCisjaWZuZGVmIE5PX05TUFJfMTBfU1VQUE9SVAorI2RlZmluZSBOT19OU1BS
XzEwX1NVUFBPUlQKKyNlbmRpZgorI2lmZGVmIE9KSQogI2luY2x1ZGUgImpyaS5oIiAgICAgICAg
ICAgICAgICAvKiBKYXZhIFJ1bnRpbWUgSW50ZXJmYWNlICovCi0jZWxzZQotI2RlZmluZSBqcmVm
ICAgIHZvaWQgKgotI2RlZmluZSBKUklFbnYgIHZvaWQKICNlbmRpZgogCisjaWYgZGVmaW5lZCAo
X19PUzJfXyApIHx8IGRlZmluZWQgKE9TMikKKyMgaWZuZGVmIFhQX09TMgorIyAgIGRlZmluZSBY
UF9PUzIgMQorIyBlbmRpZiAvKiBYUF9PUzIgKi8KKyNlbmRpZiAvKiBfX09TMl9fICovCisKICNp
ZmRlZiBfV0lORE9XUwotIyAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICBkZWZpbmUgWFBfV0lO
IDEKLSMgICAgZW5kaWYgLyogWFBfV0lOICovCisjIGluY2x1ZGUgPHdpbmRlZi5oPgorIyBpZm5k
ZWYgWFBfV0lOCisjICAgZGVmaW5lIFhQX1dJTiAxCisjIGVuZGlmIC8qIFhQX1dJTiAqLwogI2Vu
ZGlmIC8qIF9XSU5ET1dTICovCiAKICNpZmRlZiBfX01XRVJLU19fCi0jICAgIGRlZmluZSBfZGVj
bHNwZWMgX19kZWNsc3BlYwotIyAgICBpZmRlZiBtYWNpbnRvc2gKLSMgICAgICAgIGlmbmRlZiBY
UF9NQUMKLSMgICAgICAgICAgICBkZWZpbmUgWFBfTUFDIDEKLSMgICAgICAgIGVuZGlmIC8qIFhQ
X01BQyAqLwotIyAgICBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KLSMgICAgaWZkZWYgX19JTlRFTF9f
Ci0jICAgICAgICB1bmRlZiBOVUxMCi0jICAgICAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICAg
ICAgZGVmaW5lIFhQX1dJTiAxCi0jICAgICAgICBlbmRpZiAvKiBfX0lOVEVMX18gKi8KLSMgICAg
ZW5kaWYgLyogWFBfUEMgKi8KKyMgZGVmaW5lIF9kZWNsc3BlYyBfX2RlY2xzcGVjCisjIGlmZGVm
IG1hY2ludG9zaAorIyAgIGlmbmRlZiBYUF9NQUMKKyMgICAgIGRlZmluZSBYUF9NQUMgMQorIyAg
IGVuZGlmIC8qIFhQX01BQyAqLworIyBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KKyMgaWZkZWYgX19J
TlRFTF9fCisjICAgdW5kZWYgTlVMTAorIyAgIGlmbmRlZiBYUF9XSU4KKyMgICAgIGRlZmluZSBY
UF9XSU4gMQorIyAgIGVuZGlmIC8qIFhQX1dJTiAqLworIyBlbmRpZiAvKiBfX0lOVEVMX18gKi8K
ICNlbmRpZiAvKiBfX01XRVJLU19fICovCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYg
IWRlZmluZWQoX19NQUNPU19DTEFTU0lDX18pCi0jICAgZGVmaW5lIFhQX01BQ09TWAorI2lmbmRl
ZiBfX1NZTUJJQU4zMl9fCisjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NY
KQorICAjaW5jbHVkZSA8UXVpY2tkcmF3Lmg+CisgICNpbmNsdWRlIDxFdmVudHMuaD4KICNlbmRp
ZgogCi0jaWZkZWYgWFBfTUFDCi0gICAgI2luY2x1ZGUgPFF1aWNrZHJhdy5oPgotICAgICNpbmNs
dWRlIDxFdmVudHMuaD4KKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjIGluY2x1ZGUgPHN0ZGlvLmg+
CisjIGlmIGRlZmluZWQoTU9aX1gxMSkKKyMgICBpbmNsdWRlIDxYMTEvWGxpYi5oPgorIyAgIGlu
Y2x1ZGUgPFgxMS9YdXRpbC5oPgorIyBlbmRpZgogI2VuZGlmCi0KLSNpZmRlZiBYUF9NQUNPU1gK
LSAgICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotICAgICNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNlbHNlCitjbGFzcyBURGVzQzg7Citj
bGFzcyBURGVzQzE2OworY2xhc3MgSEJ1ZkMxNjsKK2NsYXNzIENEZXNDQXJyYXk7CisjaW5jbHVk
ZSA8ZTMyZGVmLmg+CiAjZW5kaWYKIAotI2lmZGVmIFhQX1VOSVgKLSAgICAjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KLSAgICAjaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jZW5kaWYKLQotCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwotLyogICAgICAgICAgICAgUGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
UGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwogCiAjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMAotI2RlZmluZSBOUF9WRVJT
SU9OX01JTk9SIDE0CisjZGVmaW5lIE5QX1ZFUlNJT05fTUlOT1IgMTMKIAogCisvKiBUaGUgT1Mv
MiB2ZXJzaW9uIG9mIE5ldHNjYXBlIHVzZXMgUkNfREFUQSB0byBkZWZpbmUgdGhlCisgICBtaW1l
IHR5cGVzLCBmaWxlIGV4dGVudGlvbnMsIGV0YyB0aGF0IGFyZSByZXF1aXJlZC4KKyAgIFVzZSBh
IHZlcnRpY2FsIGJhciB0byBzZXBhcmF0ZSB0eXBlcywgZW5kIHR5cGVzIHdpdGggXDAuCisgICBG
aWxlVmVyc2lvbiBhbmQgUHJvZHVjdFZlcnNpb24gYXJlIDMyYml0IGludHMsIGFsbCBvdGhlcgor
ICAgZW50cmllcyBhcmUgc3RyaW5ncyB0aGUgTVVTVCBiZSB0ZXJtaW5hdGVkIHd3aXRoIGEgXDAu
CiAKK0FOIEVYQU1QTEU6CisKK1JDREFUQSBOUF9JTkZPX1Byb2R1Y3RWZXJzaW9uIHsgMSwwLDAs
MSx9CisKK1JDREFUQSBOUF9JTkZPX01JTUVUeXBlICAgIHsgInZpZGVvL3gtdmlkZW98IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpZGVvL3gtZmxpY2tcMCIgfQorUkNEQVRBIE5Q
X0lORk9fRmlsZUV4dGVudHMgeyAiYXZpfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmbGNcMCIgfQorUkNEQVRBIE5QX0lORk9fRmlsZU9wZW5OYW1leyAiTU1PUzIgdmlkZW8gcGxh
eWVyKCouYXZpKXwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTU1PUzIgRmxjL0Zs
aSBwbGF5ZXIoKi5mbGMpXDAiIH0KKworUkNEQVRBIE5QX0lORk9fRmlsZVZlcnNpb24gICAgICAg
eyAxLDAsMCwxIH0KK1JDREFUQSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgIHsgIk5ldHNjYXBl
IENvbW11bmljYXRpb25zXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVEZXNjcmlwdGlvbiAgIHsg
Ik5QQVZJMzIgRXh0ZW5zaW9uIERMTFwwIgorUkNEQVRBIE5QX0lORk9fSW50ZXJuYWxOYW1lICAg
ICAgeyAiTlBBVkkzMlwwIiApCitSQ0RBVEEgTlBfSU5GT19MZWdhbENvcHlyaWdodCAgICB7ICJD
b3B5cmlnaHQgTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgXDI1MSAxOTk2XDAiCitSQ0RBVEEgTlBf
SU5GT19PcmlnaW5hbEZpbGVuYW1lICB7ICJOVkFQSTMyLkRMTCIgfQorUkNEQVRBIE5QX0lORk9f
UHJvZHVjdE5hbWUgICAgICAgeyAiTlBBVkkzMiBEeW5hbWljIExpbmsgTGlicmFyeVwwIiB9CisK
KyovCisKKworLyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gcmVxdWlyZWQgKi8K
KyNkZWZpbmUgTlBfSU5GT19Qcm9kdWN0VmVyc2lvbiAgICAgIDEKKyNkZWZpbmUgTlBfSU5GT19N
SU1FVHlwZSAgICAgICAgICAgIDIKKyNkZWZpbmUgTlBfSU5GT19GaWxlT3Blbk5hbWUgICAgICAg
IDMKKyNkZWZpbmUgTlBfSU5GT19GaWxlRXh0ZW50cyAgICAgICAgIDQKKworLyogUkNfREFUQSB0
eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLworI2RlZmluZSBOUF9JTkZP
X0ZpbGVEZXNjcmlwdGlvbiAgICAgNQorI2RlZmluZSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAg
ICAgNgorCisvKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSBvcHRpb25hbCAqLwor
I2RlZmluZSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgICAgNworI2RlZmluZSBOUF9JTkZPX0Zp
bGVWZXJzaW9uICAgICAgICAgOAorI2RlZmluZSBOUF9JTkZPX0ludGVybmFsTmFtZSAgICAgICAg
OQorI2RlZmluZSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgICAgMTAKKyNkZWZpbmUgTlBfSU5G
T19PcmlnaW5hbEZpbGVuYW1lICAgIDExCisKKyNpZm5kZWYgUkNfSU5WT0tFRAorCisKKwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KLS8qICAgICAgICAgICAgIERlZmluaXRpb24gb2YgQmFzaWMgVHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgRGVmaW5pdGlvbiBvZiBCYXNpYyBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAqLwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KIAogI2lmbmRlZiBfVUlOVDE2CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHVpbnQxNjsKICNlbmRpZgorCiAjaWZuZGVmIF9VSU5UMzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEp
CisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsK
LSNlbHNlIC8qIF9fYWxwaGEgKi8KKyMgICAgZWxzZSAgLyogX19hbHBoYSAqLwogdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHVpbnQzMjsKLSNlbmRpZiAvKiBfX2FscGhhICovCisjICAgIGVuZGlmIC8q
IF9fYWxwaGEgKi8KICNlbmRpZgorCisvKgorICogQUlYIGRlZmluZXMgdGhlc2UgaW4gc3lzL2lu
dHR5cGVzLmggaW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAorICovCisjaWZuZGVmIEFJWAogI2lm
bmRlZiBfSU5UMTYKIHR5cGVkZWYgc2hvcnQgaW50MTY7CiAjZW5kaWYKKwogI2lmbmRlZiBfSU5U
MzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEpCisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVk
ZWYgaW50IGludDMyOwotI2Vsc2UgLyogX19hbHBoYSAqLworIyAgICBlbHNlICAvKiBfX2FscGhh
ICovCiB0eXBlZGVmIGxvbmcgaW50MzI7Ci0jZW5kaWYgLyogX19hbHBoYSAqLworIyAgICBlbmRp
ZiAvKiBfX2FscGhhICovCiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIEZBTFNFCiAjZGVmaW5l
IEZBTFNFICgwKQpAQCAtMTM1LDE1ICsyMzUsMTkgQEANCiAjZGVmaW5lIE5VTEwgKDBMKQogI2Vu
ZGlmCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBOUEJvb2w7Ci10eXBlZGVmIGludDE2ICAg
ICAgICAgICAgTlBFcnJvcjsKLXR5cGVkZWYgaW50MTYgICAgICAgICAgICBOUFJlYXNvbjsKLXR5
cGVkZWYgY2hhciogICAgICAgICAgICBOUE1JTUVUeXBlOwordHlwZWRlZiB1bnNpZ25lZCBjaGFy
IE5QQm9vbDsKK3R5cGVkZWYgaW50MTYgICAgIE5QRXJyb3I7Cit0eXBlZGVmIGludDE2ICAgICBO
UFJlYXNvbjsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordHlwZWRlZiBjaGFyKiAgICAgTlBNSU1F
VHlwZTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordHlwZWRlZiBjb25zdCBURGVzQzgmIE5Q
TUlNRVR5cGU7CisjZW5kaWYKIAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyAgICAgICAgICAgICAqLworLyogICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAg
ICAgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZmRlZiBYUF9NQUMKQEAgLTE1NSw0NyArMjU5
LDU2IEBADQogICovCiB0eXBlZGVmIHN0cnVjdCBfTlBQCiB7Ci0gICAgdm9pZCogICAgcGRhdGE7
ICAgICAgICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KLSAgICB2b2lkKiAgICBuZGF0
YTsgICAgICAgICAgICAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogcGRhdGE7
ICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogbmRhdGE7ICAgICAgLyog
bmV0c2NhcGUgcHJpdmF0ZSBkYXRhICovCiB9IE5QUF90OwogCi10eXBlZGVmIE5QUF90KiAgICBO
UFA7Cit0eXBlZGVmIE5QUF90KiAgTlBQOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUFN0cmVhbQog
ewotICAgIHZvaWQqICAgICAgICBwZGF0YTsgICAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRh
ICovCi0gICAgdm9pZCogICAgICAgIG5kYXRhOyAgICAgICAgLyogbmV0c2NhcGUgcHJpdmF0ZSBk
YXRhICovCi0gICAgY29uc3QgY2hhciogIHVybDsKLSAgICB1aW50MzIgICAgICAgZW5kOwotICAg
IHVpbnQzMiAgICAgICBsYXN0bW9kaWZpZWQ7Ci0gICAgdm9pZCogICAgICAgIG5vdGlmeURhdGE7
CisgIHZvaWQqICBwZGF0YTsgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogIG5k
YXRhOyAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
ICBjb25zdCAgY2hhciogdXJsOworI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovCisgIEhCdWZDMTYq
ICB1cmw7CisjZW5kaWYKKyAgdWludDMyIGVuZDsKKyAgdWludDMyIGxhc3Rtb2RpZmllZDsKKyAg
dm9pZCogIG5vdGlmeURhdGE7CiB9IE5QU3RyZWFtOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUEJ5
dGVSYW5nZQogewotICAgIGludDMyICAgICAgb2Zmc2V0OyAgICAgICAgIC8qIG5lZ2F0aXZlIG9m
ZnNldCBtZWFucyBmcm9tIHRoZSBlbmQgKi8KLSAgICB1aW50MzIgICAgIGxlbmd0aDsKLSAgICBz
dHJ1Y3QgX05QQnl0ZVJhbmdlKiBuZXh0OworICBpbnQzMiAgb2Zmc2V0OyAvKiBuZWdhdGl2ZSBv
ZmZzZXQgbWVhbnMgZnJvbSB0aGUgZW5kICovCisgIHVpbnQzMiBsZW5ndGg7CisgIHN0cnVjdCBf
TlBCeXRlUmFuZ2UqIG5leHQ7CiB9IE5QQnl0ZVJhbmdlOwogCiAKIHR5cGVkZWYgc3RydWN0IF9O
UFNhdmVkRGF0YQogewotICAgIGludDMyICAgIGxlbjsKLSAgICB2b2lkKiAgICBidWY7CisgIGlu
dDMyIGxlbjsKKyAgdm9pZCogYnVmOwogfSBOUFNhdmVkRGF0YTsKIAogCiB0eXBlZGVmIHN0cnVj
dCBfTlBSZWN0CiB7Ci0gICAgdWludDE2ICAgIHRvcDsKLSAgICB1aW50MTYgICAgbGVmdDsKLSAg
ICB1aW50MTYgICAgYm90dG9tOwotICAgIHVpbnQxNiAgICByaWdodDsKKyAgdWludDE2IHRvcDsK
KyAgdWludDE2IGxlZnQ7CisgIHVpbnQxNiBib3R0b207CisgIHVpbnQxNiByaWdodDsKIH0gTlBS
ZWN0OwogCit0eXBlZGVmIHN0cnVjdCBfTlBTaXplCit7CisgIGludDMyIHdpZHRoOworICBpbnQz
MiBoZWlnaHQ7Cit9IE5QU2l6ZTsKIAogI2lmZGVmIFhQX1VOSVgKIC8qCkBAIC0yMDgsNDggKzMy
MSw1MSBAQA0KICAqIFRoZXNlIGFyZSB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBwbGF0Zm9ybSBz
cGVjaWZpYyBpbmZvcm1hdGlvbi4KICAqLwogZW51bSB7Ci0gICAgTlBfU0VUV0lORE9XID0gMSwK
LSAgICBOUF9QUklOVAorICBOUF9TRVRXSU5ET1cgPSAxLAorICBOUF9QUklOVAogfTsKIAogdHlw
ZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAgICAgdHlwZTsKKyAgaW50MzIgdHlwZTsKIH0g
TlBBbnlDYWxsYmFja1N0cnVjdDsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAg
ICAgICAgdHlwZTsKLSAgICBEaXNwbGF5KiAgICAgICAgZGlzcGxheTsKLSAgICBWaXN1YWwqICAg
ICAgICAgdmlzdWFsOwotICAgIENvbG9ybWFwICAgICAgICBjb2xvcm1hcDsKLSAgICB1bnNpZ25l
ZCBpbnQgICAgZGVwdGg7CisgIGludDMyICAgICAgICB0eXBlOworI2lmZGVmIE1PWl9YMTEKKyAg
RGlzcGxheSogICAgIGRpc3BsYXk7CisgIFZpc3VhbCogICAgICB2aXN1YWw7CisgIENvbG9ybWFw
ICAgICBjb2xvcm1hcDsKKyAgdW5zaWduZWQgaW50IGRlcHRoOworI2VuZGlmCiB9IE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3Q7CiAKIHR5cGVkZWYgc3RydWN0CiB7Ci0gICAgaW50MzIgICAgICAg
ICAgICB0eXBlOwotICAgIEZJTEUqICAgICAgICAgICAgZnA7CisgIGludDMyIHR5cGU7CisgIEZJ
TEUqIGZwOwogfSBOUFByaW50Q2FsbGJhY2tTdHJ1Y3Q7CiAKICNlbmRpZiAvKiBYUF9VTklYICov
CiAKKwogLyoKLSAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWlu
IHBsYXRmb3JtcyB0byBOUE5WIGFuZCAKLSAqICAgTlBQViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFy
b3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4gTmV3ZXIgCi0gKiAgIGNvbXBpbGVycyBv
biBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QgCi0gKiAg
IGNvbXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lu
cyBmcm9tIAotICogICBub3QgdW5kZXJzdGFuZGluZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0aGVz
ZSBtYXNrcyBjaGFuZ2UgdGhlIAorICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVk
IG9uIGNlcnRhaW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRo
YXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyCisgKiAgIGNv
bXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBu
b3QKKyAqICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRl
ciBwbHVnaW5zIGZyb20KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFC
SSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZQogICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3Jz
IG9uIHRob3NlIHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcwotICogICBjb21wYXRpYmxl
IHdpdGggZGlmZmVyZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4gCisg
KiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBw
bHVnaW5zIGNhbgogICogICB1c2UgdGhlc2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5l
IGFuZCB1c2UgdGhlIGNvcnJlY3QgQysrCi0gKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4
cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBXaW5kb3dzIAorICogICBBQkkgdGhhdCB0
aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cwog
ICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuCiAgKi8K
IAogI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAwCiAvKgotICogICBnY2MgMy54
IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgg
CisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBpbmNv
bXBhdGlibGUgd2l0aAogICogICBwcmV2aW91cyBjb21waWxlcnMuCiAgKi8KICNpZiAoZGVmaW5l
ZCAoWFBfVU5JWCkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQpAQCAt
MjU4LDEzICszNzQsMTQgQEANCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX0dDQzMgMAogI2Vu
ZGlmCiAKKwogI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwCiAvKgogICogICBP
biBPU1gsIHRoZSBNYWNoLU8gZXhlY3V0YWJsZSBmb3JtYXQgaXMgc2lnbmlmaWNhbnRseQogICog
ICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGRpZmZlcmVudAog
ICogICBDKysgQUJJLCBpdCBhbHNvIGhhcyBoYXMgZGlmZmVyZW50IEMgY2FsbGluZyBjb252ZW50
aW9uLgogICogICBZb3UgbXVzdCB1c2UgZ2x1ZSBjb2RlIHdoZW4gY2FsbGluZyBiZXR3ZWVuIENG
TSBhbmQKLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiAKKyAqICAgTWFjaC1PIEMgZnVuY3Rpb25z
LgogICovCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JUX01BQ19NQUNITykpCiAjZGVmaW5lIF9OUF9B
QklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLCkBAIC0yNzksNTAgKzM5Niw0OCBA
QA0KICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QUF9HZXRWYWx1ZSBzaGFs
bCBiZSBpbXBsZW1lbnRlZAogICovCiB0eXBlZGVmIGVudW0gewotICAgIE5QUFZwbHVnaW5OYW1l
U3RyaW5nID0gMSwKLSAgICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCi0gICAgTlBQVnBs
dWdpbldpbmRvd0Jvb2wsCi0gICAgTlBQVnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVnBs
dWdpbk5hbWVTdHJpbmcgPSAxLAorICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCisgIE5Q
UFZwbHVnaW5XaW5kb3dCb29sLAorICBOUFBWcGx1Z2luVHJhbnNwYXJlbnRCb29sLAorICBOUFBW
amF2YUNsYXNzLCAgICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gTW96aWxsYSAx
LjAgKi8KKyAgTlBQVnBsdWdpbldpbmRvd1NpemUsCisgIE5QUFZwbHVnaW5UaW1lckludGVydmFs
LAogCi0gICAgTlBQVmphdmFDbGFzcywgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5XaW5kb3dTaXplLCAgICAgICAgIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1Z2luVGltZXJJbnRlcnZhbCwgICAg
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxl
SW5zdGFuY2UgPSAoMTAgfCBOUF9BQklfTUFTSyksCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlSUlE
ID0gMTEsCiAKLSAgICBOUFBWcGx1Z2luU2NyaXB0YWJsZUluc3RhbmNlID0gKDEwIHwgTlBfQUJJ
X01BU0spLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBQVnBsdWdpblNj
cmlwdGFibGVJSUQgPSAxMSwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotCi0gICAg
LyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3
aXRoIDAuOS45ICovCi0gICAgTlBQVmphdmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLCAgLyog
Tm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5LZWVwTGlicmFyeUlu
TWVtb3J5ID0gMTMsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1
Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovCi0KKyAgLyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBz
dGFydGluZyB3aXRoIDAuOS45ICovCisgIE5QUFZqYXZhc2NyaXB0UHVzaENhbGxlckJvb2wgPSAx
MiwKKyAgTlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUg
aW4gTW96aWxsYSAxLjAgKi8KKyAgTlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAxNCwg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwogICAgIC8qIEdldCB0aGUgTlBPYmplY3Qg
Zm9yIHNjcmlwdGluZyB0aGUgcGx1Z2luLiAqLwotICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QgID0gMTUKKyAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVjdCAgPSAxNQogfSBOUFBW
YXJpYWJsZTsKIAogLyoKICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QTl9H
ZXRWYWx1ZSBpcyBpbXBsZW1lbnRlZCBieSBNb3ppbGxhCiAgKi8KIHR5cGVkZWYgZW51bSB7Ci0g
ICAgTlBOVnhEaXNwbGF5ID0gMSwKLSAgICBOUE5WeHRBcHBDb250ZXh0LAotICAgIE5QTlZuZXRz
Y2FwZVdpbmRvdywKLSAgICBOUE5WamF2YXNjcmlwdEVuYWJsZWRCb29sLAotICAgIE5QTlZhc2RF
bmFibGVkQm9vbCwKLSAgICBOUE5WaXNPZmZsaW5lQm9vbCwKKyAgTlBOVnhEaXNwbGF5ID0gMSwK
KyAgTlBOVnh0QXBwQ29udGV4dCwKKyAgTlBOVm5ldHNjYXBlV2luZG93LAorICBOUE5WamF2YXNj
cmlwdEVuYWJsZWRCb29sLAorICBOUE5WYXNkRW5hYmxlZEJvb2wsCisgIE5QTlZpc09mZmxpbmVC
b29sLAogCi0gICAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxk
cyBzdGFydGluZyB3aXRoIDAuOS40ICovCi0gICAgTlBOVnNlcnZpY2VNYW5hZ2VyID0gKDEwIHwg
TlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QTlZE
T01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBp
biBXZWJLaXQgKi8KLSAgICBOUE5WRE9NV2luZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyks
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBOVlRvb2xraXQgICAgICAg
ID0gKDEzIHwgTlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwot
ICAgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBN
b3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3aXRoIDAuOS40ICovCisgIE5QTlZzZXJ2aWNlTWFuYWdl
ciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwKKyAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBf
QUJJX01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLworICBOUE5WRE9NV2lu
ZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyksCisgIE5QTlZUb29sa2l0ICAgICAgICA9ICgx
MyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgTlBO
VlN1cHBvcnRzWEVtYmVkQm9vbCA9IDE0LCAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwogCi0gICAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUg
YnJvd3NlciB3aW5kb3cuICovCi0gICAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCisgIC8qIEdl
dCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLworICBOUE5W
V2luZG93TlBPYmplY3QgPSAxNSwKIAotICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBm
b3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovCi0gICAgTlBOVlBsdWdpbkVsZW1lbnROUE9i
amVjdCAgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICAv
KiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50LiAq
LworICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ICAgICAgICAgICAgICAgICAvKiBOb3QgaW1w
bGVtZW50ZWQgaW4gV2ViS2l0ICovCiB9IE5QTlZhcmlhYmxlOwogCiAvKgpAQCAtMzMwLDcxICs0
NDUsNzggQEANCiAgKiByZXR1cm5lZCBpbiB0aGUgd2luZG93IGZpZWxkLgogICovCiB0eXBlZGVm
IGVudW0gewotICAgIE5QV2luZG93VHlwZVdpbmRvdyA9IDEsCi0gICAgTlBXaW5kb3dUeXBlRHJh
d2FibGUKKyAgTlBXaW5kb3dUeXBlV2luZG93ID0gMSwKKyAgTlBXaW5kb3dUeXBlRHJhd2FibGUK
IH0gTlBXaW5kb3dUeXBlOwogCiB0eXBlZGVmIHN0cnVjdCBfTlBXaW5kb3cKIHsKLSAgICB2b2lk
KiAgICB3aW5kb3c7ICAgICAvKiBQbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlICovCi0g
ICAgaW50MzIgICAgeDsgICAgICAgICAgICAvKiBQb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIg
cmVsYXRpdmUgKi8KLSAgICBpbnQzMiAgICB5OyAgICAgICAgICAgIC8qICAgIHRvIGEgbmV0c2Nh
cGUgcGFnZS4gICAgICAgICAgICAgICAgICAgICovCi0gICAgdWludDMyICAgIHdpZHRoOyAgICAg
ICAgLyogTWF4aW11bSB3aW5kb3cgc2l6ZSAqLwotICAgIHVpbnQzMiAgICBoZWlnaHQ7Ci0gICAg
TlBSZWN0ICAgIGNsaXBSZWN0OyAgICAvKiBDbGlwcGluZyByZWN0YW5nbGUgaW4gcG9ydCBjb29y
ZGluYXRlcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVXNlZCBieSBNQUMgb25seS4g
ICAgICAgICAgICAgICovCi0jaWZkZWYgWFBfVU5JWAotICAgIHZvaWQgKiAgICB3c19pbmZvOyAg
ICAvKiBQbGF0Zm9ybS1kZXBlbmRlbnQgYWRkaXRvbmFsIGRhdGEgKi8KKyAgdm9pZCogd2luZG93
OyAgLyogUGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSAqLworICAgICAgICAgICAgICAg
ICAvKiBPUy8yOiB4IC0gUG9zaXRpb24gb2YgYm90dG9tIGxlZnQgY29ybmVyICAqLworICAgICAg
ICAgICAgICAgICAvKiBPUy8yOiB5IC0gcmVsYXRpdmUgdG8gdmlzaWJsZSBuZXRzY2FwZSB3aW5k
b3cgKi8KKyAgaW50MzIgeDsgICAgICAgLyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJl
bGF0aXZlICovCisgIGludDMyIHk7ICAgICAgIC8qIHRvIGEgbmV0c2NhcGUgcGFnZS4gICAgICAg
ICAqLworICB1aW50MzIgd2lkdGg7ICAvKiBNYXhpbXVtIHdpbmRvdyBzaXplICovCisgIHVpbnQz
MiBoZWlnaHQ7CisgIE5QUmVjdCBjbGlwUmVjdDsgLyogQ2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBv
cnQgY29vcmRpbmF0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAvKiBVc2VkIGJ5IE1BQyBvbmx5
LiAgICAgICAqLworI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgIWRlZmluZWQoWFBfTUFDT1NYKQor
ICB2b2lkICogd3NfaW5mbzsgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFkZGl0b25hbCBkYXRhICov
CiAjZW5kaWYgLyogWFBfVU5JWCAqLwotICAgIE5QV2luZG93VHlwZSB0eXBlOyAgICAvKiBJcyB0
aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCisgIE5QV2luZG93VHlwZSB0eXBlOyAvKiBJ
cyB0aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCiB9IE5QV2luZG93OwogCiAKIHR5cGVk
ZWYgc3RydWN0IF9OUEZ1bGxQcmludAogewotICAgIE5QQm9vbCAgICBwbHVnaW5QcmludGVkOyAg
ICAvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBmdWxsc2NyZWVuICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogICAgcHJpbnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgTlBCb29sICAgIHByaW50T25lOyAgICAgICAgLyogVFJVRSBpZiBwbHVnaW4g
c2hvdWxkIHByaW50IG9uZSBjb3B5ICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
ICAgIHRvIGRlZmF1bHQgcHJpbnRlciAgICAgICAgICAgICAgICAgICAgICovCi0gICAgdm9pZCog
ICAgcGxhdGZvcm1QcmludDsgICAgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAq
LworICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBm
dWxsc2NyZWVuIHByaW50aW5nICovCisgIE5QQm9vbCBwcmludE9uZTsgICAgIC8qIFRSVUUgaWYg
cGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSB0byBkZWZhdWx0IHByaW50ZXIgKi8KKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEZ1bGxQcmludDsKIAogdHlwZWRlZiBzdHJ1Y3QgX05QRW1iZWRQcmludAogewotICAgIE5Q
V2luZG93ICAgIHdpbmRvdzsKLSAgICB2b2lkKiAgICBwbGF0Zm9ybVByaW50OyAgICAvKiBQbGF0
Zm9ybS1zcGVjaWZpYyBwcmludGluZyBpbmZvICovCisgIE5QV2luZG93IHdpbmRvdzsKKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEVtYmVkUHJpbnQ7CiAKIHR5cGVkZWYgc3RydWN0IF9OUFByaW50CiB7Ci0gICAgdWludDE2
ICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogTlBfRlVMTCBvciBOUF9FTUJFRCAq
LwotICAgIHVuaW9uCi0gICAgewotICAgICAgICBOUEZ1bGxQcmludCAgICAgZnVsbFByaW50OyAg
ICAgICAgLyogaWYgbW9kZSBpcyBOUF9GVUxMICovCi0gICAgICAgIE5QRW1iZWRQcmludCAgICBl
bWJlZFByaW50OyAgICAgICAgLyogaWYgbW9kZSBpcyBOUF9FTUJFRCAqLwotICAgIH0gcHJpbnQ7
CisgIHVpbnQxNiBtb2RlOyAgICAgICAgICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8K
KyAgdW5pb24KKyAgeworICAgIE5QRnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlz
IE5QX0ZVTEwgKi8KKyAgICBOUEVtYmVkUHJpbnQgZW1iZWRQcmludDsgLyogaWYgbW9kZSBpcyBO
UF9FTUJFRCAqLworICB9IHByaW50OwogfSBOUFByaW50OwogCiAjaWYgZGVmaW5lZChYUF9NQUMp
IHx8IGRlZmluZWQoWFBfTUFDT1NYKQotdHlwZWRlZiBFdmVudFJlY29yZCAgICBOUEV2ZW50Owor
dHlwZWRlZiBFdmVudFJlY29yZCBOUEV2ZW50OwogI2VsaWYgZGVmaW5lZChYUF9XSU4pCiB0eXBl
ZGVmIHN0cnVjdCBfTlBFdmVudAogewotICAgIHVpbnQxNiAgIGV2ZW50OwotICAgIHVpbnQzMiAg
IHdQYXJhbTsKLSAgICB1aW50MzIgICBsUGFyYW07CisgIHVpbnQxNiBldmVudDsKKyAgdWludDMy
IHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKIH0gTlBFdmVudDsKLSNlbGlmIGRlZmluZWQgKFhQ
X1VOSVgpCisjZWxpZiBkZWZpbmVkKFhQX09TMikKK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50Cit7
CisgIHVpbnQzMiBldmVudDsKKyAgdWludDMyIHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKK30g
TlBFdmVudDsKKyNlbGlmIGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoTU9aX1gxMSkKIHR5
cGVkZWYgWEV2ZW50IE5QRXZlbnQ7CiAjZWxzZQotdHlwZWRlZiB2b2lkKiAgICAgICAgICAgIE5Q
RXZlbnQ7Cit0eXBlZGVmIHZvaWQqICAgICBOUEV2ZW50OwogI2VuZGlmIC8qIFhQX01BQyAqLwog
CiAjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NYKQogdHlwZWRlZiBSZ25I
YW5kbGUgTlBSZWdpb247CiAjZWxpZiBkZWZpbmVkKFhQX1dJTikKIHR5cGVkZWYgSFJHTiBOUFJl
Z2lvbjsKLSNlbGlmIGRlZmluZWQoWFBfVU5JWCkKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkgJiYg
ZGVmaW5lZChNT1pfWDExKQogdHlwZWRlZiBSZWdpb24gTlBSZWdpb247CiAjZWxzZQogdHlwZWRl
ZiB2b2lkICpOUFJlZ2lvbjsKQEAgLTQwNywzNiArNTI5LDQ3IEBADQogCiB0eXBlZGVmIHN0cnVj
dCBOUF9Qb3J0CiB7Ci0gICAgQ0dyYWZQdHIgICAgIHBvcnQ7ICAgICAgICAvKiBHcmFmcG9ydCAq
LwotICAgIGludDMyICAgICAgICBwb3J0eDsgICAgICAgIC8qIHBvc2l0aW9uIGluc2lkZSB0aGUg
dG9wbW9zdCB3aW5kb3cgKi8KLSAgICBpbnQzMiAgICAgICAgcG9ydHk7CisgIENHcmFmUHRyIHBv
cnQ7IC8qIEdyYWZwb3J0ICovCisgIGludDMyIHBvcnR4OyAgIC8qIHBvc2l0aW9uIGluc2lkZSB0
aGUgdG9wbW9zdCB3aW5kb3cgKi8KKyAgaW50MzIgcG9ydHk7CiB9IE5QX1BvcnQ7CiAKIC8qCiAg
KiAgTm9uLXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVF
dmVudAogICovCi0jZGVmaW5lIGdldEZvY3VzRXZlbnQgICAgICAgIChvc0V2dCArIDE2KQotI2Rl
ZmluZSBsb3NlRm9jdXNFdmVudCAgICAgICAgKG9zRXZ0ICsgMTcpCi0jZGVmaW5lIGFkanVzdEN1
cnNvckV2ZW50ICAgKG9zRXZ0ICsgMTgpCiAKK2VudW0gTlBFdmVudFR5cGUgeworICBOUEV2ZW50
VHlwZV9HZXRGb2N1c0V2ZW50ID0gKG9zRXZ0ICsgMTYpLAorICBOUEV2ZW50VHlwZV9Mb3NlRm9j
dXNFdmVudCwKKyAgTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZlbnQsCisgIE5QRXZlbnRUeXBl
X01lbnVDb21tYW5kRXZlbnQsCisgIE5QRXZlbnRUeXBlX0NsaXBwaW5nQ2hhbmdlZEV2ZW50LAor
ICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdCZWdpbnNFdmVudCA9IDEwMDAsCisgIE5QRXZlbnRUeXBl
X1Njcm9sbGluZ0VuZHNFdmVudAorfTsKKworI2lmZGVmIE9CU09MRVRFCisjZGVmaW5lIGdldEZv
Y3VzRXZlbnQgICAgIChvc0V2dCArIDE2KQorI2RlZmluZSBsb3NlRm9jdXNFdmVudCAgICAob3NF
dnQgKyAxNykKKyNkZWZpbmUgYWRqdXN0Q3Vyc29yRXZlbnQgKG9zRXZ0ICsgMTgpCisjZW5kaWYK
ICNlbmRpZiAvKiBYUF9NQUMgKi8KIAotCiAvKgogICogVmFsdWVzIGZvciBtb2RlIHBhc3NlZCB0
byBOUFBfTmV3OgogICovCi0jZGVmaW5lIE5QX0VNQkVEICAgICAgICAxCi0jZGVmaW5lIE5QX0ZV
TEwgICAgICAgICAyCisjZGVmaW5lIE5QX0VNQkVEIDEKKyNkZWZpbmUgTlBfRlVMTCAgMgogCiAv
KgogICogVmFsdWVzIGZvciBzdHJlYW0gdHlwZSBwYXNzZWQgdG8gTlBQX05ld1N0cmVhbToKICAq
LwotI2RlZmluZSBOUF9OT1JNQUwgICAgICAgIDEKLSNkZWZpbmUgTlBfU0VFSyAgICAgICAgIDIK
LSNkZWZpbmUgTlBfQVNGSUxFICAgICAgICAzCi0jZGVmaW5lIE5QX0FTRklMRU9OTFkgICAgICAg
IDQKKyNkZWZpbmUgTlBfTk9STUFMICAgICAxCisjZGVmaW5lIE5QX1NFRUsgICAgICAgMgorI2Rl
ZmluZSBOUF9BU0ZJTEUgICAgIDMKKyNkZWZpbmUgTlBfQVNGSUxFT05MWSA0CiAKLSNkZWZpbmUg
TlBfTUFYUkVBRFkgICAgKCgodW5zaWduZWQpKH4wKTw8MSk+PjEpCisjZGVmaW5lIE5QX01BWFJF
QURZICgoKHVuc2lnbmVkKSh+MCk8PDEpPj4xKQogCiAjaWZkZWYgWFBfTUFDCiAjcHJhZ21hIG9w
dGlvbnMgYWxpZ249cmVzZXQKQEAgLTQ0NCwzOCArNTc3LDM4IEBADQogCiAKIC8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCi0vKiAgICAgICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlvbnMg
ICAgICAgICAgICAqLworLyogICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlv
bnMgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqICAgIFZhbHVlcyBvZiB0eXBl
IE5QRXJyb3I6CisgKiBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgogICovCi0jZGVmaW5lIE5QRVJS
X0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotI2RlZmluZSBOUEVSUl9OT19FUlJP
UiAgICAgICAgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMCkKLSNkZWZpbmUgTlBFUlJf
R0VORVJJQ19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQotI2RlZmlu
ZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDIpCi0j
ZGVmaW5lIE5QRVJSX0lOVkFMSURfRlVOQ1RBQkxFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSAr
IDMpCi0jZGVmaW5lIE5QRVJSX01PRFVMRV9MT0FEX0ZBSUxFRF9FUlJPUiAgICAgICAgKE5QRVJS
X0JBU0UgKyA0KQotI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQotI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgICAgIChOUEVSUl9CQVNFICsgNikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVHSU5fRElS
X0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDcpCi0jZGVmaW5lIE5QRVJSX0lOQ09NUEFUSUJM
RV9WRVJTSU9OX0VSUk9SICAgIChOUEVSUl9CQVNFICsgOCkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJ
RF9QQVJBTSAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDkpCi0jZGVmaW5lIE5QRVJSX0lO
VkFMSURfVVJMICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEwKQotI2RlZmluZSBO
UEVSUl9GSUxFX05PVF9GT1VORCAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQotI2Rl
ZmluZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAx
MikKLSNkZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAgICAgIChOUEVSUl9C
QVNFICsgMTMpCisjZGVmaW5lIE5QRVJSX0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgMAor
I2RlZmluZSBOUEVSUl9OT19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAw
KQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VSUk9SICAgICAgICAgICAgICAgKE5QRVJSX0JBU0Ug
KyAxKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgKE5QRVJSX0JB
U0UgKyAyKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0ZVTkNUQUJMRV9FUlJPUiAgICAgKE5QRVJS
X0JBU0UgKyAzKQorI2RlZmluZSBOUEVSUl9NT0RVTEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5Q
RVJSX0JBU0UgKyA0KQorI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgKE5QRVJSX0JBU0UgKyA2KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJS
T1IgICAgKE5QRVJSX0JBU0UgKyA3KQorI2RlZmluZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lP
Tl9FUlJPUiAgKE5QRVJSX0JBU0UgKyA4KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BBUkFNICAg
ICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAg
ICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMCkKKyNkZWZpbmUgTlBFUlJfRklMRV9OT1Rf
Rk9VTkQgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTEpCisjZGVmaW5lIE5QRVJSX05PX0RB
VEEgICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEyKQorI2RlZmluZSBOUEVSUl9T
VFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMykKIAogLyoKLSAqICAg
IFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgorICogVmFsdWVzIG9mIHR5cGUgTlBSZWFzb246CiAg
Ki8KLSNkZWZpbmUgTlBSRVNfQkFTRSAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIE5QUkVTX0RP
TkUgICAgICAgICAgICAgICAgICAgIChOUFJFU19CQVNFICsgMCkKLSNkZWZpbmUgTlBSRVNfTkVU
V09SS19FUlIgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDEpCi0jZGVmaW5lIE5QUkVTX1VTRVJf
QlJFQUsgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDIpCisjZGVmaW5lIE5QUkVTX0JBU0UgICAg
ICAgICAgMAorI2RlZmluZSBOUFJFU19ET05FICAgICAgICAgKE5QUkVTX0JBU0UgKyAwKQorI2Rl
ZmluZSBOUFJFU19ORVRXT1JLX0VSUiAgKE5QUkVTX0JBU0UgKyAxKQorI2RlZmluZSBOUFJFU19V
U0VSX0JSRUFLICAgKE5QUkVTX0JBU0UgKyAyKQogCiAvKgotICogICAgICBEb24ndCB1c2UgdGhl
c2Ugb2Jzb2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCisgKiBEb24ndCB1c2UgdGhlc2Ugb2Jz
b2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCiAgKi8KICNkZWZpbmUgTlBfTk9FUlIgIE5QX05P
RVJSX2lzX29ic29sZXRlX3VzZV9OUEVSUl9OT19FUlJPUgogI2RlZmluZSBOUF9FSU5WQUwgTlBf
RUlOVkFMX2lzX29ic29sZXRlX3VzZV9OUEVSUl9HRU5FUklDX0VSUk9SCkBAIC00ODQsMjYgKzYx
NywzMiBAQA0KIC8qCiAgKiBWZXJzaW9uIGZlYXR1cmUgaW5mb3JtYXRpb24KICAqLwotI2RlZmlu
ZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgOAotI2RlZmluZSBOUFZFUlNfSEFTX05PVElG
SUNBVElPTiAgICAgOQotI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVDT05ORUNUICAgICAgICA5Ci0j
ZGVmaW5lIE5QVkVSU19XSU4xNl9IQVNfTElWRUNPTk5FQ1QgICAgOQotI2RlZmluZSBOUFZFUlNf
NjhLX0hBU19MSVZFQ09OTkVDVCAgICAxMQotI2RlZmluZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1Mg
ICAgICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hBU19TVFJFQU1PVVRQVVQgICAgICA4CisjZGVmaW5l
IE5QVkVSU19IQVNfTk9USUZJQ0FUSU9OICAgICAgOQorI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVD
T05ORUNUICAgICAgIDkKKyNkZWZpbmUgTlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCA5Cisj
ZGVmaW5lIE5QVkVSU182OEtfSEFTX0xJVkVDT05ORUNUICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hB
U19XSU5ET1dMRVNTICAgICAgICAxMQorI2RlZmluZSBOUFZFUlNfSEFTX1hQQ09OTkVDVF9TQ1JJ
UFRJTkcgMTMKIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgRnVuY3Rpb24g
UHJvdG90eXBlcyAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICBG
dW5jdGlvbiBQcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCiAKICNpZiBkZWZpbmVkKF9XSU5ET1dTKSAmJiAhZGVmaW5lZChXSU4zMikKICNk
ZWZpbmUgTlBfTE9BRERTICBfbG9hZGRzCiAjZWxzZQorI2lmIGRlZmluZWQoX19PUzJfXykKKyNk
ZWZpbmUgTlBfTE9BRERTIF9TeXN0ZW0KKyNlbHNlCiAjZGVmaW5lIE5QX0xPQUREUwogI2VuZGlm
CisjZW5kaWYKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKKyNpZm5kZWYgX19T
WU1CSUFOMzJfXworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgog
I2VuZGlmCiAKIC8qCkBAIC01MTEsNzggKzY1MCwxNTAgQEANCiAgKi8KIAogI2lmZGVmIFhQX1VO
SVgKLWNoYXIqICAgICAgICAgICAgICAgICAgICBOUFBfR2V0TUlNRURlc2NyaXB0aW9uKHZvaWQp
OworY2hhciogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lkKTsKICNlbmRpZiAvKiBYUF9VTklY
ICovCiAKLU5QRXJyb3IgICAgIE5QUF9Jbml0aWFsaXplKHZvaWQpOwotdm9pZCAgICAgICAgTlBQ
X1NodXRkb3duKHZvaWQpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAgIE5QUF9OZXcoTlBNSU1F
VHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsK
LU5QRXJyb3IgICAgIE5QX0xPQUREUyAgICBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2
ZWREYXRhKiogc2F2ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX1NldFdpbmRvdyhO
UFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAg
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVr
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlw
ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlBSZWFzb24gcmVhc29uKTsKLWludDMyICAgICAgICBOUF9MT0FERFMgICAgTlBQ
X1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtKTsKLWludDMyICAgICAg
ICBOUF9MT0FERFMgICAgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwg
aW50MzIgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyIGxl
biwgdm9pZCogYnVmZmVyKTsKLXZvaWQgICAgICAgIE5QX0xPQUREUyAgICBOUFBfU3RyZWFtQXNG
aWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCAgICAgICAgTlBf
TE9BRERTICAgIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQp
OwotaW50MTYgICAgICAgICAgICBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBl
dmVudCk7Ci12b2lkICAgICAgICBOUF9MT0FERFMgICAgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFu
Y2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsKLWpyZWYgICAgICAgIE5QX0xP
QUREUyAgICAgICAgICAgIE5QUF9HZXRKYXZhQ2xhc3Modm9pZCk7Ci1OUEVycm9yICAgICBOUFBf
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yICAgICBOUFBf
U2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7CisjaWZkZWYgX19TWU1CSUFO
MzJfXworSU1QT1JUX0MgY29uc3QgVERlc0MxNiogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lk
KTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCiAKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9J
bml0aWFsaXplKHZvaWQpOworI2lmZGVmIF9fU1lNQklBTjMyX18KK0lNUE9SVF9DCisjZW5kaWYg
LyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQp
OworCisjaWZuZGVmIF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXcoTlBN
SU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbHNlCitO
UEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAorICAgICAgICAgICAgICB1aW50MTYgbW9kZSwgQ0Rlc0NBcnJheSogYXJnbiwKKyAgICAg
ICAgICAgICAgQ0Rlc0NBcnJheSogYXJndiwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbmRpZiAv
KiBfX1NZTUJJQU4zMl9fICovCisKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95KE5QUCBp
bnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRX
aW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKK05QRXJyb3IgTlBfTE9BRERT
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlwZSk7CitOUEVycm9y
IE5QX0xPQUREUyBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24p
OworaW50MzIgICBOUF9MT0FERFMgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVh
bSogc3RyZWFtKTsKK2ludDMyICAgTlBfTE9BRERTIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5Q
U3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7CisKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordm9p
ZCAgICBOUF9MT0FERFMgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZu
YW1lKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1N0
cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGZuYW1lKTsKKyNlbmRpZiAvKiBf
X1NZTUJJQU4zMl9fICovCisKK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9QcmludChOUFAgaW5zdGFu
Y2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOworaW50MTYgICBOUF9MT0FERFMgTlBQX0hhbmRs
ZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpOworCisjaWZuZGVmIF9fU1lNQklBTjMy
X18KK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBj
aGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNv
biwgdm9pZCogbm90aWZ5RGF0YSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK3ZvaWQgICAg
TlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCisjaWZkZWYgT0pJCitq
cmVmICAgIE5QX0xPQUREUyBOUFBfR2V0SmF2YUNsYXNzKHZvaWQpOworI2VuZGlmCisKKyNpZmRl
ZiBfX1NZTUJJQU4zMl9fCitJTVBPUlRfQworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KK05Q
RXJyb3IgTlBfTE9BRERTIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7CitOUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOworCiAvKgogICog
TlBOXyogZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBieSB0aGUgbmF2aWdhdG9yIGFuZCBjYWxsZWQg
YnkgdGhlIHBsdWdpbi4KICAqLwordm9pZCAgICBOUF9MT0FERFMgTlBOX1ZlcnNpb24oaW50KiBw
bHVnaW5fbWFqb3IsIGludCogcGx1Z2luX21pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBuZXRzY2FwZV9tYWpvciwgaW50KiBuZXRzY2FwZV9taW5vcik7CiAKLXZvaWQg
ICAgICAgIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQqIG5l
dHNjYXBlX21pbm9yKTsKLU5QRXJyb3IgICAgIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGlmeURhdGEpOwotTlBFcnJvciAgICAgTlBOX0dldFVS
TChOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7Ci1OUEVycm9yICAgICBOUE5fUG9zdFVSTE5vdGlmeShO
UFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsKLU5QRXJyb3IgICAg
IE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlKTsKLU5QRXJy
b3IgICAgIE5QTl9SZXF1ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFu
Z2VMaXN0KTsKLU5QRXJyb3IgICAgIE5QTl9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVU
eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJn
ZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKLWludDMyICAgICAgICBOUE5fV3JpdGUoTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQqIGJ1ZmZlcik7Ci1OUEVycm9yICAgICBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uKTsKLXZvaWQgICAgICAgIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLWNvbnN0IGNoYXIqICAgIE5QTl9Vc2VyQWdlbnQoTlBQ
IGluc3RhbmNlKTsKLXZvaWQqICAgICAgICBOUE5fTWVtQWxsb2ModWludDMyIHNpemUpOwotdm9p
ZCAgICAgICAgTlBOX01lbUZyZWUodm9pZCogcHRyKTsKLXVpbnQzMiAgICAgICAgTlBOX01lbUZs
dXNoKHVpbnQzMiBzaXplKTsKLXZvaWQgICAgICAgIE5QTl9SZWxvYWRQbHVnaW5zKE5QQm9vbCBy
ZWxvYWRQYWdlcyk7Ci1KUklFbnYqICAgICBOUE5fR2V0SmF2YUVudih2b2lkKTsKLWpyZWYgICAg
ICAgIE5QTl9HZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwotTlBFcnJvciAgICAgTlBOX0dldFZh
bHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnZhbHVlKTsKLU5QRXJyb3IgICAgIE5QTl9TZXRWYWx1ZShOUFAg
aW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICp2YWx1ZSk7Ci12b2lkICAgICAgICBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGlu
c3RhbmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsKLXZvaWQgICAgICAgIE5QTl9JbnZhbGlkYXRl
UmVnaW9uKE5QUCBpbnN0YW5jZSwgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Ci12b2lkICAgICAg
ICBOUE5fRm9yY2VSZWRyYXcoTlBQIGluc3RhbmNlKTsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
TlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFVSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNo
YXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
dGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRVUkwo
TlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTE5v
dGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsK
K05QRXJyb3IgTlBfTE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB1
aW50MzIgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVm
LCBOUEJvb2wgZmlsZSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK05QRXJyb3IgTlBfTE9B
RERTIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwg
dm9pZCogbm90aWZ5RGF0YSk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0
YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBURGVzQzE2KiB0YXJnZXQpOworTlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkxOb3Rp
ZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7CitOUEVy
cm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIHVy
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGJ1ZiwgTlBCb29s
IGZpbGUpOworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVz
Ci19ICAvKiBlbmQgZXh0ZXJuICJDIiAqLworTlBFcnJvciBOUF9MT0FERFMgTlBOX1JlcXVlc3RS
ZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiByYW5nZUxpc3QpOworCisjaWZuZGVm
IF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9OZXdTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRhcmdldCwgTlBTdHJlYW0qKiBzdHJlYW0pOworI2Vsc2UvKiBfX1NZTUJJQU4z
Ml9fICovCitOUEVycm9yIE5QX0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBN
SU1FVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVz
QzE2KiB0YXJnZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9f
ICovCisKK2ludDMyICAgTlBfTE9BRERTIE5QTl9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sIGludDMyIGxlbiwgdm9pZCogYnVmZmVyKTsKK05QRXJyb3IgTlBfTE9BRERTIE5Q
Tl9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24g
cmVhc29uKTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9fCit2b2lkICAgIE5QX0xPQUREUyBOUE5f
U3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogbWVzc2FnZSk7CisjZWxzZS8qIF9fU1lN
QklBTjMyX18gKi8KK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNlLCBj
b25zdCBURGVzQzE2JiBtZXNzYWdlKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCisKKyNp
Zm5kZWYgX19TWU1CSUFOMzJfXworY29uc3QgY2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQo
TlBQIGluc3RhbmNlKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLworY29uc3QgVERlc0MxNiog
TlBfTE9BRERTICBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7CisjZW5kaWYgLyogX19TWU1C
SUFOMzJfXyAqLworCisKK3ZvaWQqICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1aW50MzIgc2l6
ZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fTWVtRnJlZSh2b2lkKiBwdHIpOwordWludDMyICBO
UF9MT0FERFMgTlBOX01lbUZsdXNoKHVpbnQzMiBzaXplKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5Q
Tl9SZWxvYWRQbHVnaW5zKE5QQm9vbCByZWxvYWRQYWdlcyk7CisjaWZkZWYgT0pJCitKUklFbnYq
IE5QX0xPQUREUyBOUE5fR2V0SmF2YUVudih2b2lkKTsKK2pyZWYgICAgTlBfTE9BRERTIE5QTl9H
ZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwogI2VuZGlmCitOUEVycm9yIE5QX0xPQUREUyBOUE5f
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUp
OworTlBFcnJvciBOUF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9JbnZhbGlk
YXRlUmVjdChOUFAgaW5zdGFuY2UsIE5QUmVjdCAqaW52YWxpZFJlY3QpOwordm9pZCAgICBOUF9M
T0FERFMgTlBOX0ludmFsaWRhdGVSZWdpb24oTlBQIGluc3RhbmNlLCBOUFJlZ2lvbiBpbnZhbGlk
UmVnaW9uKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9Gb3JjZVJlZHJhdyhOUFAgaW5zdGFuY2Up
OwogCisjaWZuZGVmIF9fU1lNQklBTjMyX18KKyAjaWZkZWYgX19jcGx1c3BsdXMKKyB9ICAvKiBl
bmQgZXh0ZXJuICJDIiAqLworICNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBSQ19JTlZPS0VE
ICovCisjaWZkZWYgX19PUzJfXworI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorCiAjZW5kaWYgLyog
X05QQVBJX0hfICovCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTIwLDE1ICsyMCwxNiBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCisjaW5jbHVk
ZSA8SGFzaE1hcC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZV9pbXBsLmg+
CisjaW5jbHVkZSA8aWRlbnRpZmllci5oPgogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1
ZGUgPGNfdXRpbGl0eS5oPgogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lX2lt
cGwuaD4KLQorLyoKIHN0YXRpYyBCb29sZWFuIHN0cmluZ0lkZW50aWZpZXJFcXVhbChjb25zdCB2
b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVlMikKIHsKICAgICByZXR1cm4gc3RyY21wKChj
b25zdCBjaGFyICopdmFsdWUxLCAoY29uc3QgY2hhciAqKXZhbHVlMikgPT0gMDsKQEAgLTEwMCwx
NCArMTAxLDE0IEBADQogICAgIHJldHVybiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeTsKIH0KIAot
TlBJZGVudGlmaWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoY29uc3QgTlBVVEY4ICpuYW1l
KQorTlBJZGVudGlmaWVyIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5h
bWUpCiB7CiAgICAgYXNzZXJ0IChuYW1lKTsKLSAgICAKKwogICAgIGlmIChuYW1lKSB7CiAgICAg
ICAgIFByaXZhdGVJZGVudGlmaWVyICppZGVudGlmaWVyID0gMDsKLSAgICAgICAgCi0gICAgICAg
IGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAo
Z2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKiluYW1lKTsKKwor
ICAgICAgICAvL2lkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilu
YW1lKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgewogICAgICAgICAgICAgaWRlbnRp
ZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKW1hbGxvYyAoc2l6ZW9mKFByaXZhdGVJZGVudGlm
aWVyKSk7CiAgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMs
IHNvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwKQEAgLTExNiw2MCArMTE3LDEz
OCBAQA0KICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlkZW50aWZpZXJOYW1lID0gc3RyZHVwIChu
YW1lKTsKICAgICAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9IGlkZW50aWZpZXJO
YW1lOwogCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRp
ZmllckRpY3Rpb25hcnkoKSwgaWRlbnRpZmllck5hbWUsIChjb25zdCB2b2lkICopaWRlbnRpZmll
cik7CisgICAgICAgICAgICAvL0NGRGljdGlvbmFyeUFkZFZhbHVlIChnZXRTdHJpbmdJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCBpZGVudGlmaWVyTmFtZSwgKGNvbnN0IHZvaWQgKilpZGVudGlmaWVy
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCi12b2lkIF9OUE5fR2V0U3RyaW5nSWRl
bnRpZmllcnMgKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwgTlBJZGVu
dGlmaWVyICppZGVudGlmaWVycykKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIChjb25z
dCBOUFVURjggKipuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciAqaWRlbnRp
ZmllcnMpCiB7CiAgICAgYXNzZXJ0IChuYW1lcyk7CiAgICAgYXNzZXJ0IChpZGVudGlmaWVycyk7
Ci0gICAgCisKICAgICBpZiAobmFtZXMgJiYgaWRlbnRpZmllcnMpIHsKICAgICAgICAgaW50IGk7
Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykgewot
ICAgICAgICAgICAgaWRlbnRpZmllcnNbaV0gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG5h
bWVzW2ldKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIgKG5hbWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotTlBJZGVudGlmaWVyIF9O
UE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludGlkKQorTlBJZGVudGlmaWVyIE5QTl9HZXRJ
bnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCiB7CisvL2ZvcmNlIGFzc2VydAorCisKICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaWRlbnRpZmllciA9IDA7Ci0gICAgCi0gICAgaWRlbnRpZmllciA9
IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFyeUdldFZhbHVlIChnZXRJbnRJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWludGlkKTsKK2Fzc2VydCggaWRlbnRpZmll
ciApOworICAgIC8vaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFy
eUdldFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWlu
dGlkKTsKICAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7CiAgICAgICAgIGlkZW50aWZpZXIgPSAo
UHJpdmF0ZUlkZW50aWZpZXIgKiltYWxsb2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOwog
ICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMsIHNvIHRoaXMgZGlj
dGlvbmFyeSB3aWxsIGdyb3cuCiAgICAgICAgIGlkZW50aWZpZXItPmlzU3RyaW5nID0gZmFsc2U7
CiAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLm51bWJlciA9IGludGlkOwogCi0gICAgICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qg
dm9pZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOworICAgICAgICAvL0NGRGlj
dGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9p
ZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4g
KE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworfSovCisKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
S0pTOjpVU3RyaW5nOjpSZXA+LCBQcml2YXRlSWRlbnRpZmllcio+IFN0cmluZ0lkZW50aWZpZXJN
YXA7CisKK3N0YXRpYyBTdHJpbmdJZGVudGlmaWVyTWFwKiBnZXRTdHJpbmdJZGVudGlmaWVyTWFw
KCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nSWRlbnRpZmllck1hcCogc3RyaW5nSWRlbnRpZmllck1h
cCA9IDA7CisgICAgaWYgKCFzdHJpbmdJZGVudGlmaWVyTWFwKQorICAgICAgICBzdHJpbmdJZGVu
dGlmaWVyTWFwID0gbmV3IFN0cmluZ0lkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIHN0cmluZ0lk
ZW50aWZpZXJNYXA7CiB9CiAKLWJvb2wgX05QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit0eXBlZGVmIEhhc2hNYXA8aW50LCBQcml2YXRlSWRlbnRpZmllcio+
IEludElkZW50aWZpZXJNYXA7CisKK3N0YXRpYyBJbnRJZGVudGlmaWVyTWFwKiBnZXRJbnRJZGVu
dGlmaWVyTWFwKCkKIHsKKyAgICBzdGF0aWMgSW50SWRlbnRpZmllck1hcCogaW50SWRlbnRpZmll
ck1hcCA9IDA7CisgICAgaWYgKCFpbnRJZGVudGlmaWVyTWFwKQorICAgICAgICBpbnRJZGVudGlm
aWVyTWFwID0gbmV3IEludElkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIGludElkZW50aWZpZXJN
YXA7Cit9CisKK0VYUE9SVF9DCitOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
Y29uc3QgTlBVVEY4KiBuYW1lKQoreworICAgIGFzc2VydChuYW1lKTsKKworICAgIGlmIChuYW1l
KSB7CisgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsKKworICAgICAg
ICBpZGVudGlmaWVyID0gZ2V0U3RyaW5nSWRlbnRpZmllck1hcCgpLT5nZXQoaWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIobmFtZSkudXN0cmluZygpLmFyZXAoKSk7CisgICAgICAgIGlmIChpZGVu
dGlmaWVyID09IDApIHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZp
ZXIqKW1hbGxvYyhzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIC8vIFdl
IG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwg
Z3JvdywgYXMgd2lsbAorICAgICAgICAgICAgLy8gdGhlIG1lbW9yeSBmb3IgdGhlIGlkZW50aWZp
ZXIgbmFtZSBzdHJpbmdzLgorICAgICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSB0cnVl
OworICAgICAgICAgICAgaWRlbnRpZmllci0+dmFsdWUuc3RyaW5nID0gc3RyZHVwKG5hbWUpOwor
CisgICAgICAgICAgICBnZXRTdHJpbmdJZGVudGlmaWVyTWFwKCktPnNldChpZGVudGlmaWVyRnJv
bU5QSWRlbnRpZmllcihuYW1lKS51c3RyaW5nKCkuYXJlcCgpLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitFWFBPUlRfQwordm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cnMoY29uc3QgTlBVVEY4KiogbmFtZXMsIGludDMyX3QgbmFtZUNvdW50LCBOUElkZW50aWZpZXIq
IGlkZW50aWZpZXJzKQoreworICAgIGFzc2VydChuYW1lcyk7CisgICAgYXNzZXJ0KGlkZW50aWZp
ZXJzKTsKKworICAgIGlmIChuYW1lcyAmJiBpZGVudGlmaWVycykKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0g
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZXNbaV0pOworfQorCitFWFBPUlRfQworTlBJZGVu
dGlmaWVyIE5QTl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCit7CisgICAgUHJpdmF0
ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSAwOworCisgICAgaWRlbnRpZmllciA9IGdldEludElk
ZW50aWZpZXJNYXAoKS0+Z2V0KGludGlkKTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7Cisg
ICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKW1hbGxvYyhzaXplb2YoUHJp
dmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgLy8gV2UgbmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVy
IG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBncm93LgorICAgICAgICBpZGVudGlmaWVy
LT5pc1N0cmluZyA9IGZhbHNlOworICAgICAgICBpZGVudGlmaWVyLT52YWx1ZS5udW1iZXIgPSBp
bnRpZDsKKworICAgICAgICBnZXRJbnRJZGVudGlmaWVyTWFwKCktPnNldChpbnRpZCwgaWRlbnRp
Zmllcik7CisgICAgfQorICAgIHJldHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7Cit9CisK
K0VYUE9SVF9DCitib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIg
KilpZGVudGlmaWVyOwogICAgIHJldHVybiBpLT5pc1N0cmluZzsKIH0KIAotTlBVVEY4ICpfTlBO
X1VURjhGcm9tSWRlbnRpZmllciAoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQwor
TlBVVEY4ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyIChOUElkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBQcml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKWlkZW50
aWZpZXI7CiAgICAgaWYgKCFpLT5pc1N0cmluZyB8fCAhaS0+dmFsdWUuc3RyaW5nKQogICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICAgICAgCisKICAgICByZXR1cm4gKE5QVVRGOCAqKXN0cmR1cChp
LT52YWx1ZS5zdHJpbmcpOwogfQogCi1pbnQzMl90IF9OUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQworaW50MzJfdCBOUE5fSW50RnJvbUlkZW50
aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIg
KmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilpZGVudGlmaWVyOwogICAgIGlmICghaS0+aXNTdHJp
bmcpCkBAIC0yMjEsOSArMzAwLDkgQEANCiB7CiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgIT0gTlBW
YXJpYW50VHlwZV9Cb29sKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAg
KnJlc3VsdCA9IHZhcmlhbnQtPnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzMsNyArMzEyLDcgQEANCiAgICAgICAgIE5QU3RyaW5nIGVtcHR5U3Ry
aW5nID0geyAwLCAwIH07CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZzsKICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgIHJldHVybiB2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZTsKIH0KIApA
QCAtMjQ1LDcgKzMyNCw3IEBADQogICAgICAgICAqcmVzdWx0ID0gKGludDMyX3QpdmFyaWFudC0+
dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU3LDcgKzMzNiw3IEBADQogICAgICAgICAq
cmVzdWx0ID0gdmFyaWFudC0+dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY1LDkgKzM0
NCw5IEBADQogewogICAgIGlmICh2YXJpYW50LT50eXBlICE9IE5QVmFyaWFudFR5cGVfT2JqZWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKKwogICAgICpyZXN1bHQgPSB2
YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zMjEsNyArNDAwLDcgQEANCiB2b2lkIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmpl
Y3QgKE5QVmFyaWFudCAqdmFyaWFudCwgTlBPYmplY3QgKnZhbHVlKQogewogICAgIHZhcmlhbnQt
PnR5cGUgPSBOUFZhcmlhbnRUeXBlX09iamVjdDsKLSAgICB2YXJpYW50LT52YWx1ZS5vYmplY3RW
YWx1ZSA9IF9OUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CisgICAgdmFyaWFudC0+dmFsdWUub2Jq
ZWN0VmFsdWUgPSBOUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CiB9CiAKIHZvaWQgTlBOX0luaXRp
YWxpemVWYXJpYW50V2l0aFZhcmlhbnQgKE5QVmFyaWFudCAqZGVzdGluYXRpb24sIGNvbnN0IE5Q
VmFyaWFudCAqc291cmNlKQpAQCAtMzYyLDEyICs0NDEsMTMgQEANCiAgICAgfQogfQogCi12b2lk
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MK
K3ZvaWQgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKE5QVmFyaWFudCAqdmFyaWFudCkKIHsKICAg
ICBhc3NlcnQgKHZhcmlhbnQpOwotICAgIAorCiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgPT0gTlBW
YXJpYW50VHlwZV9PYmplY3QpIHsKLSAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CisgICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
ID0gMDsKICAgICB9CiAgICAgZWxzZSBpZiAodmFyaWFudC0+dHlwZSA9PSBOUFZhcmlhbnRUeXBl
X1N0cmluZykgewpAQCAtMzc1LDM0ICs0NTUsMzYgQEANCiAgICAgICAgIHZhcmlhbnQtPnZhbHVl
LnN0cmluZ1ZhbHVlLlVURjhDaGFyYWN0ZXJzID0gMDsKICAgICAgICAgdmFyaWFudC0+dmFsdWUu
c3RyaW5nVmFsdWUuVVRGOExlbmd0aCA9IDA7CiAgICAgfQotICAgIAorCiAgICAgdmFyaWFudC0+
dHlwZSA9IE5QVmFyaWFudFR5cGVfVm9pZDsKIH0KIAogCi1OUE9iamVjdCAqX05QTl9DcmVhdGVP
YmplY3QgKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcykKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBO
X0NyZWF0ZU9iamVjdCAoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKQogewogICAgIGFzc2VydCAo
YUNsYXNzKTsKIAogICAgIGlmIChhQ2xhc3MpIHsKICAgICAgICAgTlBPYmplY3QgKm9iajsKLSAg
ICAgICAgCisKICAgICAgICAgaWYgKGFDbGFzcy0+YWxsb2NhdGUgIT0gTlVMTCkKICAgICAgICAg
ICAgIG9iaiA9IGFDbGFzcy0+YWxsb2NhdGUgKG5wcCwgYUNsYXNzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgb2JqID0gKE5QT2JqZWN0ICopbWFsbG9jIChzaXplb2YoTlBPYmplY3QpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgIG9iai0+X2NsYXNzID0gYUNsYXNzOwogICAgICAgICBv
YmotPnJlZmVyZW5jZUNvdW50ID0gMTsKIAogICAgICAgICByZXR1cm4gb2JqOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiAwOwogfQogCiAKLU5QT2JqZWN0ICpfTlBOX1JldGFpbk9iamVjdCAo
TlBPYmplY3QgKm9iaikKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBOX1JldGFpbk9iamVjdCAoTlBP
YmplY3QgKm9iaikKIHsKICAgICBhc3NlcnQgKG9iaik7CiAKQEAgLTQxMywxNCArNDk1LDE1IEBA
DQogfQogCiAKLXZvaWQgX05QTl9SZWxlYXNlT2JqZWN0IChOUE9iamVjdCAqb2JqKQorRVhQT1JU
X0MKK3ZvaWQgTlBOX1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpvYmopCiB7CiAgICAgYXNzZXJ0
IChvYmopOwogICAgIGFzc2VydCAob2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKTsKIAogICAgIGlm
IChvYmogJiYgb2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKSB7CiAgICAgICAgIG9iai0+cmVmZXJl
bmNlQ291bnQtLTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5yZWZlcmVu
Y2VDb3VudCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUp
CiAgICAgICAgICAgICAgICAgb2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUgKG9iaik7CkBAIC00MzAs
MTIgKzUxMywxMyBAQA0KICAgICB9CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb25XaXRoVVRG
OCAoTlBPYmplY3QgKm9iaiwgY29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkK
K0VYUE9SVF9DCit2b2lkIE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOCAoTlBPYmplY3QgKm9iaiwg
Y29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkKIHsKICAgICBhc3NlcnQgKG9i
aik7CiAgICAgYXNzZXJ0IChtZXNzYWdlKTsKLSAKKwogICAgIGlmIChvYmogJiYgbWVzc2FnZSkg
ewotICAgICAgICBfTlBOX1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKKyAgICAgICAgTlBO
X1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKICAgICB9CiB9CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL25wcnVudGltZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTczLDYgKzczLDcgQEAN
CiAjZW5kaWYKIAogI2luY2x1ZGUgIm5wYXBpLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
c3RkaW50Lmg+CiAKIC8qCiAgICAgVGhpcyBBUEkgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGJpbmRp
bmcgY29kZSB3cml0dGVuIGluIEMgdG8gc2NyaXB0CkBAIC0xNTEsNiArMTUyLDcgQEANCiAgICAg
QWZ0ZXIgY2FsbGluZyBOUFJlbGVhc2VWYXJpYW50VmFsdWUsIHRoZSB0eXBlIG9mIHRoZSB2YXJp
YW50IHdpbGwKICAgICBiZSBzZXQgdG8gTlBWYXJpYW50VW5kZWZpbmVkVHlwZS4KICovCitJTVBP
UlRfQwogdm9pZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KTsK
IAogI2RlZmluZSBOUFZBUklBTlRfSVNfVk9JRChfdikgICAgKChfdikudHlwZSA9PSBOUFZhcmlh
bnRUeXBlX1ZvaWQpCkBAIC0yMTIsMjAgKzIxNCwyNiBAQA0KICAgICBjb21wYXJlZCB1c2luZyA9
PS4gIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhlIHJlcXVlc3RlZAogICAgIE5QSWRlbnRpZmll
cihzKSB3aWxsIGJlIE5VTEwuCiAqLworSU1QT1JUX0MKIE5QSWRlbnRpZmllciBOUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpOworSU1QT1JUX0MKIHZvaWQgTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3Vu
dCwgTlBJZGVudGlmaWVyICppZGVudGlmaWVycyk7CitJTVBPUlRfQwogTlBJZGVudGlmaWVyIE5Q
Tl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0lk
ZW50aWZpZXJJc1N0cmluZyhOUElkZW50aWZpZXIgaWRlbnRpZmllcik7CiAKIC8qCiAgICAgVGhl
IE5QVVRGOCByZXR1cm5lZCBmcm9tIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgU0hPVUxEIGJlIGZy
ZWVkLgogKi8KK0lNUE9SVF9DCiBOUFVURjggKk5QTl9VVEY4RnJvbUlkZW50aWZpZXIoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpOwogCiAvKgogICAgIEdldCB0aGUgaW50ZWdlciByZXByZXNlbnRl
ZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlzIG5vdCBhbgogICAgIGludGVnZXIgaWRl
bnRpZmllciwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCiAqLworSU1QT1JUX0MKIGludDMy
X3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKIAogLyoK
QEAgLTI5MSwxMSArMjk5LDEzIEBADQogICAgIGZ1bmN0aW9uIGl0IGlzIHRoZSByZXNwb25zaWJp
bGl0eSBvZiB0aGF0IGltcGxlbWVudGF0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCByZXRhaW4KICAg
ICBjb3VudCB0byAxLgogKi8KK0lNUE9SVF9DCiBOUE9iamVjdCAqTlBOX0NyZWF0ZU9iamVjdChO
UFAgbnBwLCBOUENsYXNzICphQ2xhc3MpOwogCiAvKgogICAgIEluY3JlbWVudCB0aGUgTlBPYmpl
Y3QncyByZWZlcmVuY2UgY291bnQuCiAqLworSU1QT1JUX0MKIE5QT2JqZWN0ICpOUE5fUmV0YWlu
T2JqZWN0IChOUE9iamVjdCAqb2JqKTsKIAogLyoKQEAgLTMwMyw2ICszMTMsNyBAQA0KICAgICBj
b3VudCBnb2VzIHRvIHplcm8sIHRoZSBjbGFzcydzIGRlc3Ryb3kgZnVuY3Rpb24gaXMgaW52b2tl
IGlmCiAgICAgc3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIG9iamVjdCBpcyBmcmVlZCBkaXJlY3Rs
eS4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fUmVsZWFzZU9iamVjdCAoTlBPYmplY3QgKm9iaik7
CiAKIC8qCkBAIC0zMTYsMTkgKzMyNywyOCBAQA0KICAgICBDYWxscyBtYWRlIGZyb20gcGx1Z2lu
IGNvZGUgdG8gc2NyaXB0IG11c3QgYmUgbWFkZSBmcm9tIHRoZSB0aHJlYWQKICAgICBvbiB3aGlj
aCB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZC4KICovCitJTVBPUlRfQwogYm9vbCBOUE5fSW52
b2tlKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNv
bnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0
KTsKK0lNUE9SVF9DCiBib29sIE5QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpu
cG9iaiwgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50
ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0V2YWx1YXRlKE5QUCBucHAsIE5QT2JqZWN0
ICpucG9iaiwgTlBTdHJpbmcgKnNjcmlwdCwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MK
IGJvb2wgTlBOX0dldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBO
X1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSwgY29uc3QgTlBWYXJpYW50ICp2YWx1ZSk7CitJTVBPUlRfQwogYm9vbCBOUE5fUmVt
b3ZlUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKTsKK0lNUE9SVF9DCiBib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVj
dCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOworSU1QT1JUX0MKIGJvb2wgTlBO
X0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKTsKIAogLyoKICAgICBOUE5fU2V0RXhjZXB0aW9uIG1heSBiZSBjYWxsZWQgdG8gdHJpZ2dl
ciBhIHNjcmlwdCBleGNlcHRpb24gdXBvbiByZXR1cm4KICAgICBmcm9tIGVudHJ5IHBvaW50cyBp
bnRvIE5QT2JqZWN0cy4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fU2V0RXhjZXB0aW9uIChOUE9i
amVjdCAqb2JqLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDE4OCBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQ0K
Ky8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICogIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUEFTU19SRUZfUFRSX0gNCisj
ZGVmaW5lIEtYTUxDT1JFX1BBU1NfUkVGX1BUUl9IDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFBh
c3NSZWZQdHI8VD4gYWRvcHRSZWYoVCAqcCk7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IA0KKyAgICBjbGFzcyBQYXNzUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAg
UGFzc1JlZlB0cigpIDogbV9wdHIoMCkge30NCisgICAgICAgIFBhc3NSZWZQdHIoVCAqcHRyKSA6
IG1fcHRyKHB0cikgeyBpZiAocHRyKSBwdHItPnJlZigpOyB9DQorICAgICAgICAvLyBJdCBzb21l
d2hhdCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFsbG93IHRyYW5zZmVyIG9mIG93bmVyc2hp
cCBvdXQgb2YNCisgICAgICAgIC8vIGEgY29uc3QgUGFzc1JlZlB0ci4gSG93ZXZlciwgaXQgbWFr
ZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NSZWZQdHINCisgICAgICAgIC8vIHRl
bXBvcmFyaWVzLCBhbmQgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYSBuZWVkIHRvIHVzZSByZWFsIGNv
bnN0IFBhc3NSZWZQdHJzIA0KKyAgICAgICAgLy8gYW55d2F5Lg0KKyAgICAgICAgUGFzc1JlZlB0
cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZSgpKSB7fQ0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykg
OiBtX3B0cihvLnJlbGVhc2UoKSkgeyB9DQorDQorICAgICAgICB+UGFzc1JlZlB0cigpIHsgaWYg
KFQgKnB0ciA9IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFU+IA0KKyAgICAgICAgUGFzc1JlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8p
IDogbV9wdHIoby5nZXQoKSkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisg
ICAgICAgIA0KKyAgICAgICAgVCAqZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisNCisg
ICAgICAgIFQgKnJlbGVhc2UoKSBjb25zdCB7IFQgKnRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7IHJl
dHVybiB0bXA7IH0NCisNCisgICAgICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpt
X3B0cjsgfQ0KKyAgICAgICAgVCAqb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9
DQorICAgICAgICANCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
cHRyOyB9DQorDQorICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGlt
cGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMu
DQorICAgICAgICB0eXBlZGVmIFQqIChQYXNzUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSko
KSBjb25zdDsNCisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3B0ciA/ICZQYXNzUmVmUHRyOjpnZXQgOiAwOyB9DQorICAgICAgICANCisgICAg
ICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShUICopOw0KKyAgICAgICAgUGFzc1JlZlB0ciYgb3Bl
cmF0b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8
VT4mKTsNCisNCisgICAgICAgIGZyaWVuZCBQYXNzUmVmUHRyIGFkb3B0UmVmPFQ+KFQgKik7DQor
ICAgIHByaXZhdGU6DQorICAgICAgICAvLyBhZG9wdGluZyBjb25zdHJ1Y3Rvcg0KKyAgICAgICAg
UGFzc1JlZlB0cihUICpwdHIsIGJvb2wpIDogbV9wdHIocHRyKSB7fQ0KKyAgICAgICAgbXV0YWJs
ZSBUICptX3B0cjsNCisgICAgfTsNCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46
Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mIG8pIA0KKyAgICB7DQorICAgICAgICBUKiBvcHRy
ID0gby5nZXQoKTsNCisgICAgICAgIGlmIChvcHRyKQ0KKyAgICAgICAgICAgIG9wdHItPnJlZigp
Ow0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG9wdHI7DQorICAg
ICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJldHVy
biAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikNCisgICAg
ew0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQorICAgICAg
ICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAgIGlmIChw
dHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0K
KyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxU
PiYgUGFzc1JlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIHJlZikNCisg
ICAgew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxl
YXNlKCk7DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisg
ICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiYgUGFzc1Jl
ZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHJlZikNCisgICAgew0KKyAg
ICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxlYXNlKCk7DQor
ICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJl
dHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwg
Y29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQo
KSA9PSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBj
b25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0g
Yi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNz
UmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0
KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpIA0KKyAg
ICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgDQorICAgIH0NCisgICAgDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
YSA9PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYg
YSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBh
LCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQ
YXNzUmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGIu
Z2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQq
IGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUICpwKQ0KKyAgICB7DQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxUPihwLCB0cnVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJf
Y2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihzdGF0aWNfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiBj
b25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgDQorICAgIHsgDQorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoY29uc3RfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAg
ICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpQYXNzUmVmUHRyOw0K
K3VzaW5nIFdURjo6YWRvcHRSZWY7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0K
K3VzaW5nIFdURjo6Y29uc3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9Q
QVNTX1JFRl9QVFJfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1JlZlB0ci5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9u
IDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9uIDApDQpA
QCAtMCwwICsxLDE4NSBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQ0KKy8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUkVGX1BUUl9IDQorI2Rl
ZmluZSBLWE1MQ09SRV9SRUZfUFRSX0gNCisNCisjaW5jbHVkZSA8YWxnb3JpdGhtPg0KKyNpbmNs
dWRlIDxQYXNzUmVmUHRyLmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAgUmVmUHRy
KCkgOiBtX3B0cigwKSB7fQ0KKyAgICAgICAgUmVmUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsg
aWYgKHB0cikgcHRyLT5yZWYoKTsgfQ0KKyAgICAgICAgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5yZWYoKTsgfQ0KKyAg
ICAgICAgLy8gc2VlIGNvbW1lbnQgaW4gUGFzc1JlZlB0ci5oIGZvciB3aHkgdGhpcyB0YWtlcyBj
b25zdCByZWZlcmVuY2UNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29u
c3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAgICAgflJlZlB0cigpIHsgaWYgKFQgKnB0ciA9
IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyBp
ZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgVCAq
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisgICAgICAgIA0KKyAgICAgICAgUGFzc1Jl
ZlB0cjxUPiByZWxlYXNlKCkgeyBQYXNzUmVmUHRyPFQ+IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsg
bV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9DQorDQorICAgICAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqbV9wdHI7IH0NCisgICAgICAgIFQgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQ0KKyAgICAgICAgDQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3B0cjsgfQ0KKyAgICANCisgICAgICAgIC8vIFRoaXMgY29udmVyc2lvbiBv
cGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3Ro
ZXIgaW50ZWdlciB0eXBlcy4NCisgICAgICAgIHR5cGVkZWYgVCAqIChSZWZQdHI6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKSgpIGNvbnN0Ow0KKyAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6Z2V0IDogMDsgfQ0KKyAgICAg
ICAgDQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsNCisgICAgICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFQgKik7DQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFQ+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAg
ICAgdm9pZCBzd2FwKFJlZlB0ciYpOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVCAqbV9w
dHI7DQorICAgIH07DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+
JiBvKQ0KKyAgICAgICAgOiBtX3B0cihvLnJlbGVhc2UoKSkNCisgICAgew0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9w
ZXJhdG9yPShjb25zdCBSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIG9wdHIgPSBv
LmdldCgpOw0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQor
ICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAg
IGlmIChwdHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0
aGlzOw0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxVPiYgbykNCisgICAgew0KKyAgICAgICAgVCogb3B0ciA9IG8uZ2V0KCk7DQorICAg
ICAgICBpZiAob3B0cikNCisgICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0
ciA9IG1fcHRyOw0KKyAgICAgICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisg
ICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0N
CisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQ0KKyAgICB7DQorICAgICAgICBpZiAob3B0cikNCisg
ICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAgICAg
ICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRl
cmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFBhc3NSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAg
ICAgICAgbV9wdHIgPSBvLnJlbGVhc2UoKTsNCisgICAgICAgIGlmIChwdHIpDQorICAgICAgICAg
ICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0
cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYgbykNCisgICAg
ew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgp
Ow0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAg
ICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIHN0
ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGlubGluZSB2b2lkIHN3YXAoUmVmUHRyPFQ+JiBhLCBSZWZQdHI8VD4mIGIpDQorICAgIHsN
CisgICAgICAgIGEuc3dhcChiKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEs
IGNvbnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09
IGIuZ2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYgYSwgVSogYikNCisg
ICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IA0KKyAgICB9DQorICAgIA0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25z
dCBSZWZQdHI8VT4mIGIpDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdl
dCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpDQorICAgIHsN
CisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IA0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIFJlZlB0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFJlZlB0cjxVPiYgcCkN
CisgICAgeyANCisgICAgICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgUmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHAp
DQorICAgIHsgDQorICAgICAgICByZXR1cm4gUmVmUHRyPFQ+KGNvbnN0X2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpS
ZWZQdHI7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0KK3VzaW5nIFdURjo6Y29u
c3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9SRUZfUFRSX0gNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI2
LDExICsyNiwxMSBAQA0KICNpbmNsdWRlIDxpbnRlcnByZXRlci5oPgogCiAjaW5jbHVkZSA8cnVu
dGltZV9vYmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KLSNpbmNsdWRlIDxvYmpj
X2luc3RhbmNlLmg+CisvLyNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KKy8vI2luY2x1ZGUgPG9i
amNfaW5zdGFuY2UuaD4KICNpbmNsdWRlIDxjX2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8TlBfanNv
YmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPGpuaV9qc29i
amVjdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIEtKUzo6Qmlu
ZGluZ3M7CkBAIC05OSwzMyArOTksMzUgQEANCiAgICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFu
Y2UgKGV4ZWMsIHRoaXMsIGFWYWx1ZSk7CiB9CiAKK0VYUE9SVF9DCiBJbnN0YW5jZSAqSW5zdGFu
Y2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChCaW5kaW5nTGFuZ3VhZ2UgbGFu
Z3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0ICpleGVjdXRpb25D
b250ZXh0KQogewogICAgIEluc3RhbmNlICpuZXdJbnN0YW5jZSA9IDA7CiAgICAgCiAgICAgc3dp
dGNoIChsYW5ndWFnZSkgewotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICBu
ZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJ
bnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4dCk7Ci0JICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3Rh
bmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGlu
Z3M6Ok9iamNJbnN0YW5jZSAoKHN0cnVjdCBvYmpjX29iamVjdCAqKW5hdGl2ZUluc3RhbmNlKTsK
LQkgICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogewotCSAgICBuZXdJ
bnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6Q0luc3RhbmNlICgoTlBPYmplY3QgKiluYXRpdmVJbnN0
YW5jZSk7Ci0JICAgIGJyZWFrOwotCX0KLQlkZWZhdWx0OgotCSAgICBicmVhazsKKyAgICBjYXNl
IEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBC
aW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEluc3RhbmNlOjpPYmpl
Y3RpdmVDTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6
T2JqY0luc3RhbmNlICgoc3RydWN0IG9iamNfb2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAg
ICAgIG5ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpDSW5zdGFuY2UgKChOUE9iamVjdCAqKW5h
dGl2ZUluc3RhbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGlmIChuZXdJbnN0YW5jZSkKLQluZXdJbnN0YW5jZS0+
c2V0RXhlY3V0aW9uQ29udGV4dCAoZXhlY3V0aW9uQ29udGV4dCk7Ci0JCisgICAgbmV3SW5zdGFu
Y2UtPnNldEV4ZWN1dGlvbkNvbnRleHQgKGV4ZWN1dGlvbkNvbnRleHQpOworICAgIAogICAgIHJl
dHVybiBuZXdJbnN0YW5jZTsKIH0KIAorRVhQT1JUX0MKIE9iamVjdCBJbnN0YW5jZTo6Y3JlYXRl
UnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0
YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBJbnN0YW5j
ZSAqaW50ZXJmYWNlT2JqZWN0ID0gSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUlu
c3RhbmNlIChsYW5ndWFnZSwgKHZvaWQgKiluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4
dCk7CkBAIC0xMzQsMzIgKzEzNiwzMyBAQA0KICAgICByZXR1cm4gT2JqZWN0KG5ldyBSdW50aW1l
T2JqZWN0SW1wKGludGVyZmFjZU9iamVjdCx0cnVlKSk7CiB9CiAKK0VYUE9SVF9DCiB2b2lkICpJ
bnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChFeGVjU3RhdGUgKmV4ZWMs
IEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgUm9v
dE9iamVjdCAqb3JpZ2luLCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KQogewogICAgIHZvaWQg
KnJlc3VsdCA9IDA7CiAgICAgCiAgICAgaWYgKHZhbHVlLnR5cGUoKSAhPSBPYmplY3RUeXBlKQot
CXJldHVybiAwOworICAgIHJldHVybiAwOwogCiAgICAgT2JqZWN0SW1wICppbXAgPSBzdGF0aWNf
Y2FzdDxPYmplY3RJbXAqPih2YWx1ZS5pbXAoKSk7CiAgICAgCiAgICAgc3dpdGNoIChsYW5ndWFn
ZSkgewotCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewotCSAgICByZXN1bHQg
PSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAodmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Ci0J
ICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3RhbmNlOjpDTGFuZ3VhZ2U6IHsKLQkgICAgcmVzdWx0
ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKDAsIGltcCwgb3JpZ2luLCBjdXJyZW50KTsKLQkg
ICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICAvLyBG
SVhNRTogIGZhY3RvciBjcmVhdGlvbiBvZiBqbmlfanNvYmplY3RzLCBhbHNvIHJlbW92ZSB1bm5l
Y2Vzc2FyeSB0aHJlYWQKLQkgICAgLy8gaW52b2NhdGlvbiBjb2RlLgotCSAgICBicmVhazsKLQl9
Ci0JZGVmYXVsdDoKLQkgICAgYnJlYWs7CisgICAgY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xh
bmd1YWdlOiB7CisgICAgICAgIC8vcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFsdWUg
KHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOworICAgICAgICBicmVhazsKICAgICB9CisgICAgY2Fz
ZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAgICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2Ny
aXB0T2JqZWN0ICgwLCBpbXAsIG9yaWdpbiwgY3VycmVudCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy8gRklYTUU6
ICBmYWN0b3IgY3JlYXRpb24gb2Ygam5pX2pzb2JqZWN0cywgYWxzbyByZW1vdmUgdW5uZWNlc3Nh
cnkgdGhyZWFkCisgICAgICAgIC8vIGludm9jYXRpb24gY29kZS4KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2luY2x1ZGUgImxpc3QuaCIKICNpbmNsdWRlICJv
YmplY3QuaCIKICNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImhhc2htYXAuaCIKIAogbmFt
ZXNwYWNlIEtKUyAKIHsKQEAgLTEzNiw5ICsxMzcsOSBAQA0KICAgICBzdGF0aWMgdm9pZCBzZXRE
aWRFeGVjdXRlRnVuY3Rpb24gKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKICAgICBz
dGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbiAoKTsKICAg
ICAKLSAgICBzdGF0aWMgSW5zdGFuY2UgKmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNl
IChCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBS
b290T2JqZWN0ICpyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFu
Y2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNv
bnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgUm9vdE9i
amVjdCAqY3VycmVudCk7Ci0gICAgc3RhdGljIE9iamVjdCBjcmVhdGVSdW50aW1lT2JqZWN0IChC
aW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290
T2JqZWN0ICpyID0gMCk7CisgICAgSU1QT1JUX0Mgc3RhdGljIEluc3RhbmNlICpjcmVhdGVCaW5k
aW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpu
YXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOworICAgIElNUE9SVF9DIHN0
YXRpYyB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhl
YywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBjb25zdCBPYmplY3QgJnZhbHVlLCBjb25zdCBS
b290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QgKmN1cnJlbnQpOworICAgIElNUE9S
VF9DIHN0YXRpYyBPYmplY3QgY3JlYXRlUnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxh
bmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOwog
CiAgICAgSW5zdGFuY2UgKCkgOiBfZXhlY3V0aW9uQ29udGV4dCgwKSB7fTsKICAgICAKQEAgLTE4
Nyw2ICsxODgsOSBAQA0KIAogY29uc3QgY2hhciAqc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25z
dCBLSlM6Okxpc3QgJmFMaXN0KTsKIAordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpS
ZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOwordHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVU3RyaW5nOjpSZXA+LCBGaWVsZCo+IEZpZWxkTWFwOwogfSAvLyBuYW1lc3BhY2UgQmluZGlu
Z3MKIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9y
dW50aW1lX29iamVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0LDcgKzU0
LDcgQEANCiAgICAgfQogfQogCi1SdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKEJp
bmRpbmdzOjpJbnN0YW5jZSAqaSwgYm9vbCBvaSkgOiBPYmplY3RJbXAgKChPYmplY3RJbXAgKikw
KQorRVhQT1JUX0MgUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChCaW5kaW5nczo6
SW5zdGFuY2UgKmksIGJvb2wgb2kpIDogT2JqZWN0SW1wICgoT2JqZWN0SW1wICopMCkKIHsKICAg
ICBvd25zSW5zdGFuY2UgPSBvaTsKICAgICBpbnN0YW5jZSA9IGk7CkBAIC04Myw3ICs4Myw3IEBA
DQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdCAobmV3IFJ1bnRpbWVNZXRob2RJbXAo
ZXhlYywgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQkKKyAgICAKICAgICAgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkg
ewogICAgICAgICAgICAgLy8gVHJ5IGEgZmFsbGJhY2sgb2JqZWN0LgogICAgICAgICAgICAgcmVz
dWx0ID0gYUNsYXNzLT5mYWxsYmFja09iamVjdCAoZXhlYywgaW5zdGFuY2UsIHByb3BlcnR5TmFt
ZSk7CkBAIC0xMDcsMTAgKzEwNywxMCBAQA0KICAgICAgICAgZ2V0SW50ZXJuYWxJbnN0YW5jZSgp
LT5zZXRWYWx1ZU9mRmllbGQoZXhlYywgYUZpZWxkLCB2YWx1ZSk7CiAgICAgfQogICAgIGVsc2Ug
ewotCWlmIChnZXRJbnRlcm5hbEluc3RhbmNlKCktPnN1cHBvcnRzU2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKCkpewotCSAgICBnZXRJbnRlcm5hbEluc3RhbmNlKCktPnNldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLQl9CisgICAgaWYgKGdldEludGVy
bmFsSW5zdGFuY2UoKS0+c3VwcG9ydHNTZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoKSl7CisgICAg
ICAgIGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0KKyAgICB9CiAKICAgICBpbnN0YW5jZS0+ZW5k
KCk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEANCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogCiAgICAg
aWYgKGFGaWVsZCkKLQlyZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9v
YmplY3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVf
b2JqZWN0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1
bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNyw3ICszNyw3IEBADQogICAgIAog
ICAgIH5SdW50aW1lT2JqZWN0SW1wKCk7CiAgICAgCi0gICAgUnVudGltZU9iamVjdEltcChCaW5k
aW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3RhbmNlID0gdHJ1ZSk7CisgICAgSU1QT1JU
X0MgUnVudGltZU9iamVjdEltcChCaW5kaW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3Rh
bmNlID0gdHJ1ZSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8gKmNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CiAKQEAgLTQ5LDcgKzQ5LDcgQEANCiAgICAgdmlydHVhbCBib29sIGNh
blB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLAot
CQkJICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC0yMCw5ICsyMCw5IEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1ZGUgPGpuaV9q
c29iamVjdC5oPgorLy8jaW5jbHVkZSA8am5pX2pzb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZV9yb290Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CkBAIC00Miw2ICs0Miw3IEBADQogLy8g
MSBPUiB0aGUgYXBwbGV0IGlzIHNodXRkb3duIHdlIGRlcmVmIHRoZSBKYXZhU2NyaXB0IGluc3Rh
bmNlLiAgQXBwbGV0IGluc3RhbmNlcwogLy8gYXJlIHJlcHJlc2VudGVkIGJ5IGEgamxvbmcuCiAK
Ky8qCiBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzQnlSb290RGljdGlv
bmFyeSA9IDA7CiAKIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGdldFJlZmVyZW5jZXNC
eVJvb3REaWN0aW9uYXJ5KCkKQEAgLTU1LDcgKzU2LDcgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkoKTsK
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gMDsKLSAg
ICAKKwogICAgIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKHJlZnNCeVJvb3QsIChjb25zdCB2b2lkICopcm9vdCk7CiAg
ICAgaWYgKCFyZWZlcmVuY2VzRGljdGlvbmFyeSkgewogICAgICAgICByZWZlcmVuY2VzRGljdGlv
bmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwgTlVMTCk7CkBA
IC02NSw3ICs2Niw3IEBADQogICAgIHJldHVybiByZWZlcmVuY2VzRGljdGlvbmFyeTsKIH0KIAot
Ly8gU2NhbiBhbGwgdGhlIGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9vdHMgdG8gc2VlIGlmIGFu
eSBoYXZlIGEgCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFyeSBmb3IgYWxsIHRoZSByb290cyB0
byBzZWUgaWYgYW55IGhhdmUgYQogLy8gcmVmZXJlbmNlIHRvIHRoZSBpbXAsIGFuZCBpZiBzbywg
cmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CiAvLyBkaWN0aW9uYXJ5LgogLy8gRklYTUU6ICBU
aGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxl
dHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKQEAgLTc0LDExICs3NSwxMSBAQA0KIHsKICAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290
RGljdGlvbmFyeSAoKTsKICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZvdW5kRGljdGlvbmFy
eSA9IDA7Ci0gICAgCisKICAgICBpZiAocmVmc0J5Um9vdCkgewogICAgICAgICBjb25zdCB2b2lk
ICoqYWxsVmFsdWVzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisK
ICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAg
ICAgYWxsVmFsdWVzID0gKGNvbnN0IHZvaWQgKiopbWFsbG9jIChzaXplb2Yodm9pZCAqKSAqIGNv
dW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyAocmVmc0J5Um9vdCwg
TlVMTCwgYWxsVmFsdWVzKTsKQEAgLTg5LDcgKzkwLDcgQEANCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAo
KHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KICAgICByZXR1cm4gZm91bmREaWN0aW9uYXJ5OwpA
QCAtMTAxLDEyICsxMDIsMTIgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZz
QnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgKCk7CiAgICAgY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKnJvb3RPYmplY3QgPSAwOwotICAgIAorCiAgICAgaWYgKHJlZnNC
eVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFsbFZhbHVlcyA9IDA7CiAgICAgICAgIGNv
bnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAg
ICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsK
ICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikg
KiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6
ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xMTgsNyArMTE5LDcgQEANCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMp
OwogICAgIH0KQEAgLTEyOSwxMiArMTMwLDEyIEBADQogewogICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3REaWN0aW9uYXJ5ICgpOwogICAg
IGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICphUm9vdE9iamVjdCA9IDAsICpyZXN1bHQgPSAw
OwotICAgIAorCiAgICAgaWYgKHJlZnNCeVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFs
bFZhbHVlcyA9IDA7CiAgICAgICAgIGNvbnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAg
Q0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25h
cnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoq
KW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChj
b25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xNDYsNyAr
MTQ3LDcgQEANCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KQEAgLTE1Nyw3ICsxNTgsNyBAQA0KIHsK
ICAgICBpZiAocm9vdCkgewogICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5j
ZXNEaWN0aW9uYXJ5ID0gZ2V0UmVmZXJlbmNlc0RpY3Rpb25hcnkgKHJvb3QpOwotICAgICAgICAK
KwogICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUmVmZXJlbmNlcyA9ICh1bnNpZ25lZCBpbnQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCBpbXApOwogICAgICAgICBp
ZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7CiAjaWYgIVVTRV9DT05TRVJWQVRJVkVfR0MKQEAgLTE2
Niw3ICsxNjcsNyBAQA0KICNpZiBVU0VfQ09OU0VSVkFUSVZFX0dDIHwgVEVTVF9DT05TRVJWQVRJ
VkVfR0MKICAgICAgICAgICAgIEludGVycHJldGVyTG9jayBsb2NrOwogICAgICAgICAgICAgZ2NQ
cm90ZWN0KGltcCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlIChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wLCAgKGNvbnN0IHZvaWQgKikxKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE3OCw4ICsxNzksOCBAQA0KIHZvaWQgS0pTOjpC
aW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJbXAgKmltcCkKIHsKICAgICBp
ZiAoIWltcCkKLQlyZXR1cm47Ci0JCisgICAgcmV0dXJuOworCiAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5IChp
bXApOwogCiAgICAgaWYgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5KSB7CkBAIC0xOTEsNyArMTkyLDcg
QEANCiAjaWYgVVNFX0NPTlNFUlZBVElWRV9HQyB8IFRFU1RfQ09OU0VSVkFUSVZFX0dDCiAgICAg
ICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgICAgIGdjVW5wcm90ZWN0KGlt
cCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVl
IChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsK
QEAgLTIyMywxMCArMjI0LDEwIEBADQogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUphdmFTY3JpcHRB
Y2Nlc3NMb2NrKCkKIHsKICAgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7Ci0gICAgCisKICAg
ICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZhdHRyKTsKICAgICBwdGhyZWFkX211dGV4YXR0cl9z
ZXR0eXBlICgmYXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUpOwotICAgIAorCiAgICAgcHRo
cmVhZF9tdXRleF9pbml0KCZqYXZhU2NyaXB0QWNjZXNzTG9jaywgJmF0dHIpOwogfQogCkBAIC0y
NjAsNyArMjYxLDcgQEANCiAgICAgLy8gY2FsbCBjb21wbGV0ZXMuCiAgICAgLy8KICAgICAvLyBG
SVhNRTogIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaXNzdWUuICBDcmVh
dGluZyBhbmQKLSAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNlcyBpcyBleHBlbnNpdmUuICBX
ZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZSAKKyAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNl
cyBpcyBleHBlbnNpdmUuICBXZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZQogICAgIC8vIHBlciB0
aHJlYWQsIGFzIG5lZWRlZCwgaW5zdGVhZC4KICAgICBjb250ZXh0LT5vcmlnaW5hdGluZ0xvb3Ag
PSBjdXJyZW50UnVuTG9vcDsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHNvdXJjZUNvbnRl
eHQgPSB7MCwgY29udGV4dCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgY29tcGxldGVkSmF2YVNjcmlwdEFjY2Vzc307CkBAIC0yNzIsNyArMjczLDcgQEANCiAgICAg
aWYgKENGUnVuTG9vcElzV2FpdGluZyhSb290T2JqZWN0OjpydW5Mb29wKCkpKSB7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChSb290T2JqZWN0OjpydW5Mb29wKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIC8vIFdhaXQgdW50aWwgdGhlIEphdmFTY3JpcHQgYWNjZXNzIHRocmVhZCBpcyBkb25lLgog
ICAgIENGUnVuTG9vcFJ1biAoKTsKIApAQCAtMjg2LDE1ICsyODcsMTUgQEANCiBzdGF0aWMgdm9p
ZCBwZXJmb3JtSmF2YVNjcmlwdEFjY2Vzcyh2b2lkICppKQogewogICAgIGFzc2VydCAoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpID09IFJvb3RPYmplY3Q6OnJ1bkxvb3AoKSk7Ci0gICAgCisKICAgICAv
LyBEaXNwYXRjaCBKYXZhU2NyaXB0IGNhbGxzIGhlcmUuCiAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBzb3VyY2VDb250ZXh0OwogICAgIENGUnVuTG9vcFNvdXJjZUdldENvbnRleHQgKGNvbXBs
ZXRpb25Tb3VyY2UsICZzb3VyY2VDb250ZXh0KTsKLSAgICBKU09iamVjdENhbGxDb250ZXh0ICpj
YWxsQ29udGV4dCA9IChKU09iamVjdENhbGxDb250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOyAg
ICAKKyAgICBKU09iamVjdENhbGxDb250ZXh0ICpjYWxsQ29udGV4dCA9IChKU09iamVjdENhbGxD
b250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOwogICAgIENGUnVuTG9vcFJlZiBvcmlnaW5hdGlu
Z0xvb3AgPSBjYWxsQ29udGV4dC0+b3JpZ2luYXRpbmdMb29wOwogCiAgICAgSlNPYmplY3Q6Omlu
dm9rZSAoY2FsbENvbnRleHQpOwotICAgIAorCiAgICAgLy8gU2lnbmFsIHRoZSBvcmlnaW5hdGlu
ZyB0aHJlYWQgdGhhdCB3ZSdyZSBkb25lLgogICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCAoY29t
cGxldGlvblNvdXJjZSk7CiAgICAgaWYgKENGUnVuTG9vcElzV2FpdGluZyhvcmlnaW5hdGluZ0xv
b3ApKSB7CkBAIC0zMTIsOCArMzEzLDggQEANCiAgICAgYXNzZXJ0IChfZmluZFJvb3RPYmplY3RG
b3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciA9PSAwKTsKIAogICAgIF9maW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyID0gYUZ1bmM7Ci0gICAgCi0gICAgLy8gQXNzdW1lIHRo
YXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJdCdsbCBtb3N0IAorCisg
ICAgLy8gQXNzdW1lIHRoYXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJ
dCdsbCBtb3N0CiAgICAgLy8gbGlrZWx5IChhbHdheXM/KSBiZSB0aGUgbWFpbiBsb29wLgogICAg
IF9ydW5Mb29wID0gKENGUnVuTG9vcFJlZilDRlJldGFpbiAoQ0ZSdW5Mb29wR2V0Q3VycmVudCAo
KSk7CiAKQEAgLTMyNCwxNSArMzI1LDE3IEBADQogICAgIENGUnVuTG9vcEFkZFNvdXJjZShCaW5k
aW5nczo6Um9vdE9iamVjdDo6X3J1bkxvb3AsIEJpbmRpbmdzOjpSb290T2JqZWN0OjpfcGVyZm9y
bUphdmFTY3JpcHRTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKKyovCiAvLyBN
dXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsZXQgaXMgc2h1dGRvd24uCitFWFBPUlRfQwogdm9p
ZCBSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpCiB7Ci0gICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGdldFJlZmVyZW5jZXNEaWN0
aW9uYXJ5ICh0aGlzKTsKLSAgICAKKy8qICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJl
bmNlc0RpY3Rpb25hcnkgPSBnZXRSZWZlcmVuY2VzRGljdGlvbmFyeSAodGhpcyk7CisKICAgICBp
ZiAocmVmZXJlbmNlc0RpY3Rpb25hcnkpIHsKICAgICAgICAgdm9pZCAqKmFsbEltcHMgPSAwOwog
ICAgICAgICBDRkluZGV4IGNvdW50LCBpOwotICAgICAgICAKKwogICAgICAgICBjb3VudCA9IENG
RGljdGlvbmFyeUdldENvdW50KHJlZmVyZW5jZXNEaWN0aW9uYXJ5KTsKICAgICAgICAgYWxsSW1w
cyA9ICh2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCAoY29uc3Qg
dm9pZCAqKilhbGxJbXBzLCBOVUxMKTsKQEAgLTM1NCwxMSArMzU3LDEyNyBAQA0KICAgICAgICAg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERp
Y3Rpb25hcnkoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUgKHJlZnNCeVJvb3Qs
IChjb25zdCB2b2lkICopdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0qLworfQor
CisKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCosIFJlZmVyZW5j
ZXNTZXQqPiBSZWZlcmVuY2VzQnlSb290TWFwOworCitzdGF0aWMgUmVmZXJlbmNlc0J5Um9vdE1h
cCogZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCgpCit7CisgICAgc3RhdGljIFJlZmVyZW5jZXNCeVJv
b3RNYXAqIHJlZmVyZW5jZXNCeVJvb3RNYXAgPSAwOworCisgICAgaWYgKCFyZWZlcmVuY2VzQnlS
b290TWFwKQorICAgICAgICByZWZlcmVuY2VzQnlSb290TWFwID0gbmV3IFJlZmVyZW5jZXNCeVJv
b3RNYXA7CisKKyAgICByZXR1cm4gcmVmZXJlbmNlc0J5Um9vdE1hcDsKK30KKworc3RhdGljIFJl
ZmVyZW5jZXNTZXQqIGdldFJlZmVyZW5jZXNTZXQoY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3QpCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdldFJlZmVy
ZW5jZXNCeVJvb3RNYXAoKTsKKyAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VzU2V0ID0gMDsK
KworICAgIHJlZmVyZW5jZXNTZXQgPSByZWZzQnlSb290LT5nZXQocm9vdCk7CisgICAgaWYgKCFy
ZWZlcmVuY2VzU2V0KSB7CisgICAgICAgIHJlZmVyZW5jZXNTZXQgID0gbmV3IFJlZmVyZW5jZXNT
ZXQ7CisgICAgICAgIHJlZnNCeVJvb3QtPmFkZChyb290LCByZWZlcmVuY2VzU2V0KTsKICAgICB9
CisgICAgcmV0dXJuIHJlZmVyZW5jZXNTZXQ7CiB9CiAKLXZvaWQgUm9vdE9iamVjdDo6c2V0SW50
ZXJwcmV0ZXIgKEtKUzo6SW50ZXJwcmV0ZXIgKmkpCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFy
eSBmb3IgYWxsIHRoZSByb290cyB0byBzZWUgaWYgYW55IGhhdmUgYQorLy8gcmVmZXJlbmNlIHRv
IHRoZSBpbXAsIGFuZCBpZiBzbywgcmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CisvLyBkaWN0
aW9uYXJ5LgorLy8gRklYTUU6ICBUaGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRs
ZW5lY2sgd2l0aCBtYW55IGFwcGxldHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGlt
cCB0byByb290IGRpY3Rpb25hcnkuCitSZWZlcmVuY2VzU2V0KiBLSlM6OkJpbmRpbmdzOjpmaW5k
UmVmZXJlbmNlU2V0KE9iamVjdEltcCAqaW1wKQogeworICAgIFJlZmVyZW5jZXNCeVJvb3RNYXAq
IHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290TWFwICgpOworICAgIGlmIChyZWZzQnlS
b290KSB7CisgICAgICAgIFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHJlZnNCeVJvb3QtPmVuZCgpOworICAgICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBSZWZlcmVuY2VzU2V0KiBzZXQgPSBpdC0+c2Vjb25kOworCisgICAgICAg
ICAgICBpZiAoc2V0LT5jb250YWlucyhpbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBzZXQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gRklYTUU6ICBUaGlz
IGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxldHMu
ICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGltcCB0byByb290IGRpY3Rpb25hcnkuCitj
b25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nczo6cm9vdEZvckltcCAoT2Jq
ZWN0SW1wICppbXApCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdl
dFJlZmVyZW5jZXNCeVJvb3RNYXAgKCk7CisgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3RPYmplY3QgPSAwOworCisgICAgaWYgKHJlZnNCeVJvb3QpIHsKKyAgICAgICAgUmVmZXJl
bmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVmc0J5Um9vdC0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoUmVmZXJlbmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWZz
QnlSb290LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlZmVyZW5j
ZXNTZXQqIHNldCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBpZiAoc2V0LT5jb250YWlucyhp
bXApKSB7CisgICAgICAgICAgICAgICAgcm9vdE9iamVjdCA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiByb290T2JqZWN0OworfQorCitjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpC
aW5kaW5nczo6cm9vdEZvckludGVycHJldGVyIChLSlM6OkludGVycHJldGVyICppbnRlcnByZXRl
cikKK3sKKyAgICBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNl
c0J5Um9vdE1hcCAoKTsKKworICAgIGlmIChyZWZzQnlSb290KSB7CisgICAgICAgIFJlZmVyZW5j
ZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlZnNCeVJvb3QtPmVuZCgpOworICAg
ICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5
Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjb25zdCBCaW5k
aW5nczo6Um9vdE9iamVjdCogYVJvb3RPYmplY3QgPSBpdC0+Zmlyc3Q7CisKKyAgICAgICAgICAg
IGlmIChhUm9vdE9iamVjdC0+aW50ZXJwcmV0ZXIoKSA9PSBpbnRlcnByZXRlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYVJvb3RPYmplY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVuY2UgKGNvbnN0
IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCkKK3sKKyAgICBpZiAo
cm9vdCkgeworICAgICAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VNYXAgPSBnZXRSZWZlcmVu
Y2VzU2V0IChyb290KTsKKworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlTWFwLT5jb3VudChpbXApOworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7Cisv
LyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NQcm90ZWN0KGltcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVmZXJlbmNlTWFwLT5hZGQoaW1wKTsKKyAgICB9Cit9CisKK0VY
UE9SVF9DIHZvaWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJ
bXAgKmltcCkKK3sKKyAgICBpZiAoIWltcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmZXJl
bmNlc1NldCAqcmVmZXJlbmNlc1NldCA9IGZpbmRSZWZlcmVuY2VTZXQoaW1wKTsKKyAgICBpZiAo
cmVmZXJlbmNlc1NldCkgeworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlc1NldC0+Y291bnQoaW1wKTsKKworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAxKSB7
CisvLyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NVbnByb3RlY3QoaW1w
KTsKKyAgICAgICAgfQorICAgICAgICByZWZlcmVuY2VzU2V0LT5yZW1vdmUoaW1wKTsKKyAgICB9
Cit9CisKK0VYUE9SVF9DIHZvaWQgUm9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIgKEtKUzo6SW50
ZXJwcmV0ZXIgKmkpCit7CiAgICAgX2ludGVycHJldGVyID0gaTsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Nyw4ICsyNyw5IEBADQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9vYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9qbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL2puaV9qc29i
amVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDxI
YXNoQ291bnRlZFNldC5oPgogCiBuYW1lc3BhY2UgS0pTIHsKIApAQCAtMzYsOSArMzcsMTEgQEAN
CiAKIGNsYXNzIFJvb3RPYmplY3Q7CiAKK3R5cGVkZWYgSGFzaENvdW50ZWRTZXQ8T2JqZWN0SW1w
Kj4gUmVmZXJlbmNlc1NldDsKIHR5cGVkZWYgUm9vdE9iamVjdCAqKCpGaW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyKSh2b2lkICopOwogCi1leHRlcm4gQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJbXAgKmltcCk7CisvL2V4
dGVybiBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5KE9iamVj
dEltcCAqaW1wKTsKK2V4dGVybiBSZWZlcmVuY2VzU2V0KiBmaW5kUmVmZXJlbmNlU2V0KE9iamVj
dEltcCAqaW1wKTsKIGV4dGVybiBjb25zdCBSb290T2JqZWN0ICpyb290Rm9ySW1wIChPYmplY3RJ
bXAgKmltcCk7CiBleHRlcm4gY29uc3QgUm9vdE9iamVjdCAqcm9vdEZvckludGVycHJldGVyIChJ
bnRlcnByZXRlciAqaW50ZXJwcmV0ZXIpOwogZXh0ZXJuIHZvaWQgYWRkTmF0aXZlUmVmZXJlbmNl
IChjb25zdCBSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCk7CkBAIC03NCwxMCArNzcs
MTAgQEANCiAgICAgCiAgICAgT2JqZWN0SW1wICpyb290T2JqZWN0SW1wKCkgY29uc3QgeyByZXR1
cm4gX2ltcDsgfQogICAgIAotICAgIHZvaWQgc2V0SW50ZXJwcmV0ZXIgKEludGVycHJldGVyICpp
KTsKKyAgICBJTVBPUlRfQyB2b2lkIHNldEludGVycHJldGVyIChJbnRlcnByZXRlciAqaSk7CiAg
ICAgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyKCkgY29uc3QgeyByZXR1cm4gX2ludGVycHJldGVy
OyB9CiAKLSAgICB2b2lkIHJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CisgICAgSU1QT1JU
X0Mgdm9pZCByZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpOwogCiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSB0aHJlYWQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWNjZXNzIEphdmFT
Y3JpcHQuCkBAIC04NiwxMSArODksMTEgQEANCiAgICAgICAgIHJldHVybiBfZmluZFJvb3RPYmpl
Y3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0cjsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENG
UnVuTG9vcFJlZiBydW5Mb29wKCkgeyByZXR1cm4gX3J1bkxvb3A7IH0KLSAgICBzdGF0aWMgQ0ZS
dW5Mb29wU291cmNlUmVmIHBlcmZvcm1KYXZhU2NyaXB0U291cmNlKCkgeyByZXR1cm4gX3BlcmZv
cm1KYXZhU2NyaXB0U291cmNlOyB9CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3Ao
KSB7IHJldHVybiBfcnVuTG9vcDsgfQorICAgIC8vc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBw
ZXJmb3JtSmF2YVNjcmlwdFNvdXJjZSgpIHsgcmV0dXJuIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJj
ZTsgfQorCisgICAgLy9zdGF0aWMgdm9pZCBkaXNwYXRjaFRvSmF2YVNjcmlwdFRocmVhZChKU09i
amVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRj
aFRvSmF2YVNjcmlwdFRocmVhZChKU09iamVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKLSAgICAK
ICAgICBjb25zdCB2b2lkICpuYXRpdmVIYW5kbGUoKSBjb25zdCB7IHJldHVybiBfbmF0aXZlSGFu
ZGxlOyB9CiAKIHByaXZhdGU6CkBAIC05OSw4ICsxMDIsOCBAQA0KICAgICBJbnRlcnByZXRlciAq
X2ludGVycHJldGVyOwogCiAgICAgc3RhdGljIEZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxl
RnVuY3Rpb25QdHIgX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25QdHI7Ci0g
ICAgc3RhdGljIENGUnVuTG9vcFJlZiBfcnVuTG9vcDsKLSAgICBzdGF0aWMgQ0ZSdW5Mb29wU291
cmNlUmVmIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJjZTsKKyAgICAvL3N0YXRpYyBDRlJ1bkxvb3BS
ZWYgX3J1bkxvb3A7CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIF9wZXJmb3JtSmF2
YVNjcmlwdFNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy91dGlsaXR5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvdXRpbGl0eQkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy91dGlsaXR5CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1NDkgQEANCisvLyBDb3B5cmln
aHQgKEMpIDIwMDEsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisv
LyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGli
cmFyeSBpcyBmcmVlDQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkgaXQgdW5kZXIgdGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIg
dmVyc2lvbi4NCisNCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs
b25nDQorLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisv
LyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBv
ZiBhIGZyZWUgc29mdHdhcmUNCisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVj
aWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVz
ZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBp
bGUNCisvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNl
IGFuIGV4ZWN1dGFibGUsIHRoaXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0
aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisv
LyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1p
Z2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQor
DQorLyoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBD
b21wYW55DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0
LVBhY2thcmQgQ29tcGFueSBtYWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUg
c3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlz
IHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQor
ICoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NiwxOTk3DQorICogU2lsaWNvbiBHcmFwaGlj
cyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRz
IGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQg
ZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFy
IGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3Vt
ZW50YXRpb24uICBTaWxpY29uIEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25z
IGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJw
b3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3
YXJyYW50eS4NCisgKi8NCisNCisvLyBoYWNrZWQgdG9nZXRoZXIgZnJvbSB2YXJpb3VzIHN0bCBw
YXJ0IHRvIG1ha2UgSlNDLCBXQyBjb21waWxlDQorDQorI2lmbmRlZiBfVVRJTElUWV9IDQorI2Rl
ZmluZSBfVVRJTElUWV9IIDENCisNCisjaW5jbHVkZSA8aXRlcmF0b3I+DQorDQorI2RlZmluZSBf
X2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoYSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9mdW5jdGlv
bl9yZXF1aXJlcyhhKQ0KKyNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlkX3JhbmdlKGEs
YikNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKGEsYikNCisNCituYW1lc3BhY2Ug
c3RkDQorew0KKyAgLy8vIHBhaXIgaG9sZHMgdHdvIG9iamVjdHMgb2YgYXJiaXRyYXJ5IHR5cGUu
DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgc3RydWN0IHBhaXINCisg
ICAgew0KKyAgICAgIHR5cGVkZWYgX1QxIGZpcnN0X3R5cGU7ICAgIC8vLzwgIEBjIGZpcnN0X3R5
cGUgaXMgdGhlIGZpcnN0IGJvdW5kIHR5cGUNCisgICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlw
ZTsgICAvLy88ICBAYyBzZWNvbmRfdHlwZSBpcyB0aGUgc2Vjb25kIGJvdW5kIHR5cGUNCisNCisg
ICAgICBfVDEgZmlyc3Q7ICAgICAgICAgICAgICAgICAvLy88IEBjIGZpcnN0IGlzIGEgY29weSBv
ZiB0aGUgZmlyc3Qgb2JqZWN0DQorICAgICAgX1QyIHNlY29uZDsgICAgICAgICAgICAgICAgLy8v
PCBAYyBzZWNvbmQgaXMgYSBjb3B5IG9mIHRoZSBzZWNvbmQgb2JqZWN0DQorDQorICAgICAgLy8g
X0dMSUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUw0KKyAgICAgIC8vIDI2NS4gIHN0ZDo6cGFpcjo6
cGFpcigpIGVmZmVjdHMgb3Zlcmx5IHJlc3RyaWN0aXZlDQorICAgICAgLyoqIFRoZSBkZWZhdWx0
IGNvbnN0cnVjdG9yIGNyZWF0ZXMgQGMgZmlyc3QgYW5kIEBjIHNlY29uZCB1c2luZyB0aGVpcg0K
KyAgICAgICAqICByZXNwZWN0aXZlIGRlZmF1bHQgY29uc3RydWN0b3JzLiAgKi8NCisgICAgICBw
YWlyKCkNCisgICAgICA6IGZpcnN0KCksIHNlY29uZCgpIHsgfQ0KKw0KKyAgICAgIC8qKiBUd28g
b2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGEgQGMgcGFpciBjb25zdHJ1Y3RvciB0byBiZSBjb3Bp
ZWQuICAqLw0KKyAgICAgIHBhaXIoY29uc3QgX1QxJiBfX2EsIGNvbnN0IF9UMiYgX19iKQ0KKyAg
ICAgIDogZmlyc3QoX19hKSwgc2Vjb25kKF9fYikgeyB9DQorDQorICAgICAgLyoqIFRoZXJlIGlz
IGFsc28gYSB0ZW1wbGF0ZWQgY29weSBjdG9yIGZvciB0aGUgQGMgcGFpciBjbGFzcyBpdHNlbGYu
ICAqLw0KKyAgICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyPg0KKyAgICAgICAgcGFp
cihjb25zdCBwYWlyPF9VMSwgX1UyPiYgX19wKQ0KKwk6IGZpcnN0KF9fcC5maXJzdCksIHNlY29u
ZChfX3Auc2Vjb25kKSB7IH0NCisgICAgfTsNCisNCisgIC8vLyBUd28gcGFpcnMgb2YgdGhlIHNh
bWUgdHlwZSBhcmUgZXF1YWwgaWZmIHRoZWlyIG1lbWJlcnMgYXJlIGVxdWFsLg0KKyAgdGVtcGxh
dGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQorICAgIGlubGluZSBib29sDQorICAgIG9wZXJhdG9y
PT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkN
CisgICAgeyByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9f
eS5zZWNvbmQ7IH0NCisNCisgIC8vLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli
c3RkYysrLzIwX3V0aWwvaG93dG8uaHRtbCNwYWlybHQ+DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEs
IGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wNCisgICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
IF9feC5maXJzdCA8IF9feS5maXJzdA0KKwkgICAgIHx8ICghKF9feS5maXJzdCA8IF9feC5maXJz
dCkgJiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyB9DQorDQorICAvLy8gVXNlcyBAYyBvcGVy
YXRvcj09IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3Mg
X1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1QxLCBf
VDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194
ID09IF9feSk7IH0NCisNCisgIC8vLyBVc2VzIEBjIG9wZXJhdG9yPCB0byBmaW5kIHRoZSByZXN1
bHQuDQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wN
CisgICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1Qx
LCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuIF9feSA8IF9feDsgfQ0KKw0KKyAgLy8vIFVzZXMg
QGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvcjw9KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
ICEoX195IDwgX194KTsgfQ0KKw0KKyAgLy8vIFVzZXMgQGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhl
IHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUg
Ym9vbA0KKyAgICBvcGVyYXRvcj49KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBh
aXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQ0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIEEgY29udmVuaWVuY2Ugd3JhcHBlciBmb3IgY3JlYXRpbmcgYSBw
YWlyIGZyb20gdHdvIG9iamVjdHMuDQorICAgKiAgQHBhcmFtICB4ICBUaGUgZmlyc3Qgb2JqZWN0
Lg0KKyAgICogIEBwYXJhbSAgeSAgVGhlIHNlY29uZCBvYmplY3QuDQorICAgKiAgQHJldHVybiAg
IEEgbmV3bHktY29uc3RydWN0ZWQgcGFpcjw+IG9iamVjdCBvZiB0aGUgYXBwcm9wcmlhdGUgdHlw
ZS4NCisgICAqDQorICAgKiAgVGhlIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgdGhlIG9iamVjdHMg
YmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS10by1jb25zdCwNCisgICAqICBidXQgTFdHIGlzc3VlICMx
ODEgc2F5cyB0aGV5IHNob3VsZCBiZSBwYXNzZWQgYnkgY29uc3QgdmFsdWUuICBXZSBmb2xsb3cN
CisgICAqICB0aGUgTFdHIGJ5IGRlZmF1bHQuDQorICAgKi8NCisgIC8vIF9HTElCQ1hYX1JFU09M
VkVfTElCX0RFRkVDVFMNCisgIC8vIDE4MS4gIG1ha2VfcGFpcigpIHVuaW50ZW5kZWQgYmVoYXZp
b3INCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgcGFpcjxf
VDEsIF9UMj4NCisgICAgbWFrZV9wYWlyKF9UMSBfX3gsIF9UMiBfX3kpDQorICAgIHsgcmV0dXJu
IHBhaXI8X1QxLCBfVDI+KF9feCwgX195KTsgfQ0KKw0KKw0KKw0KKyAgLy8gaXNfaGVhcCwgYSBw
cmVkaWNhdGUgdGVzdGluZyB3aGV0aGVyIG9yIG5vdCBhIHJhbmdlIGlzDQorICAvLyBhIGhlYXAu
ICBUaGlzIGZ1bmN0aW9uIGlzIGFuIGV4dGVuc2lvbiwgbm90IHBhcnQgb2YgdGhlIEMrKw0KKyAg
Ly8gc3RhbmRhcmQuDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9EaXN0YW5jZT4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX24pDQorICAgIHsNCisgICAgICBfRGlz
dGFuY2UgX19wYXJlbnQgPSAwOw0KKyAgICAgIGZvciAoX0Rpc3RhbmNlIF9fY2hpbGQgPSAxOyBf
X2NoaWxkIDwgX19uOyArK19fY2hpbGQpDQorCXsNCisJICBpZiAoX19maXJzdFtfX3BhcmVudF0g
PCBfX2ZpcnN0W19fY2hpbGRdKQ0KKwkgICAgcmV0dXJuIGZhbHNlOw0KKwkgIGlmICgoX19jaGls
ZCAmIDEpID09IDApDQorCSAgICArK19fcGFyZW50Ow0KKwl9DQorICAgICAgcmV0dXJuIHRydWU7
DQorICAgIH0NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLA0KKyAgICAgICAgICAgdHlwZW5hbWUgX1N0cmljdFdlYWtPcmRl
cmluZz4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
Zmlyc3QsIF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wLA0KKwkgICAgICBfRGlzdGFuY2UgX19u
KQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsNCisgICAgICBmb3IgKF9E
aXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKQ0KKwl7DQorCSAg
aWYgKF9fY29tcChfX2ZpcnN0W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpDQorCSAgICBy
ZXR1cm4gZmFsc2U7DQorCSAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkNCisJICAgICsrX19wYXJl
bnQ7DQorCX0NCisgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKw0KKyAgLyp0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQorICAgIGJvb2wNCisgICAgX19pc19oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0KQ0KKyAgICB7IHJldHVybiBzdGQ6Ol9faXNfaGVhcChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCkpOyB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9TdHJpY3RXZWFrT3JkZXJpbmc+DQorICAgIGJvb2wNCisg
ICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0LA0KKwkgICAgX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApDQorICAg
IHsgcmV0dXJuIHN0ZDo6X19pc19oZWFwKF9fZmlyc3QsIF9fY29tcCwgc3RkOjpkaXN0YW5jZShf
X2ZpcnN0LCBfX2xhc3QpKTsgfSovDQorDQorICAvLyBIZWFwLW1hbmlwdWxhdGlvbiBmdW5jdGlv
bnM6IHB1c2hfaGVhcCwgcG9wX2hlYXAsIG1ha2VfaGVhcCwgc29ydF9oZWFwLg0KKw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2Us
IHR5cGVuYW1lIF9UcD4NCisgICAgdm9pZA0KKyAgICBfX3B1c2hfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwNCisJCV9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9f
dG9wSW5kZXgsIF9UcCBfX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50
ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9f
dG9wSW5kZXggJiYgKihfX2ZpcnN0ICsgX19wYXJlbnQpIDwgX192YWx1ZSkNCisJew0KKwkgICoo
X19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hv
bGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAy
Ow0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAg
fQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQdXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAu
DQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxh
c3QgICBFbmQgb2YgaGVhcCArIGVsZW1lbnQuDQorICAgKiAgQGluZ3JvdXAgaGVhcA0KKyAgICoN
CisgICAqICBUaGlzIG9wZXJhdGlvbiBwdXNoZXMgdGhlIGVsZW1lbnQgYXQgbGFzdC0xIG9udG8g
dGhlIHZhbGlkIGhlYXAgb3ZlciB0aGUNCisgICAqICByYW5nZSBbZmlyc3QsbGFzdC0xKS4gIEFm
dGVyIGNvbXBsZXRpb24sIFtmaXJzdCxsYXN0KSBpcyBhIHZhbGlkIGhlYXAuDQorICAqLw0KKyAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPg0KKyAgICBpbmxpbmUgdm9p
ZA0KKyAgICBwdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QpDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlDQorCSAgX1Zh
bHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VUeXBlOw0KKw0K
KyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9u
X3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVz
KF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4
eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIC8vICAgICAg
X19nbGliY3h4X3JlcXVpcmVzX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSk7DQorDQorICAgICAg
c3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0
KSAtIDEpLA0KKwkJICAgICAgIF9EaXN0YW5jZVR5cGUoMCksIF9WYWx1ZVR5cGUoKihfX2xhc3Qg
LSAxKSkpOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwLA0KKwkgICAgdHlwZW5hbWUg
X0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwNCisJCV9EaXN0YW5jZSBfX3RvcElu
ZGV4LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAgICAgX0Rpc3Rh
bmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hv
bGVJbmRleCA+IF9fdG9wSW5kZXgNCisJICAgICAmJiBfX2NvbXAoKihfX2ZpcnN0ICsgX19wYXJl
bnQpLCBfX3ZhbHVlKSkNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19m
aXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hvbGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFy
ZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19o
b2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQ
dXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAgdXNpbmcgY29tcGFyaXNvbiBmdW5jdG9yLg0KKyAg
ICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAg
RW5kIG9mIGhlYXAgKyBlbGVtZW50Lg0KKyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24g
ZnVuY3Rvci4NCisgICAqICBAaW5ncm91cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3BlcmF0
aW9uIHB1c2hlcyB0aGUgZWxlbWVudCBhdCBsYXN0LTEgb250byB0aGUgdmFsaWQgaGVhcCBvdmVy
IHRoZQ0KKyAgICogIHJhbmdlIFtmaXJzdCxsYXN0LTEpLiAgQWZ0ZXIgY29tcGxldGlvbiwgW2Zp
cnN0LGxhc3QpIGlzIGEgdmFsaWQgaGVhcC4NCisgICAqICBDb21wYXJlIG9wZXJhdGlvbnMgYXJl
IHBlcmZvcm1lZCB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGluZSB2b2lkDQor
ICAgIHB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQor
CSAgX0Rpc3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAg
ICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVy
YXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0IC0gMSwgX19jb21wKTsNCisN
CisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZVR5cGUoKF9fbGFzdCAt
IF9fZmlyc3QpIC0gMSksDQorCQkgICAgICAgX0Rpc3RhbmNlVHlwZSgwKSwgX1ZhbHVlVHlwZSgq
KF9fbGFzdCAtIDEpKSwgX19jb21wKTsNCisgICAgfQ0KKw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsIHR5cGVuYW1lIF9UcD4N
CisgICAgdm9pZA0KKyAgICBfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsDQorCQkgIF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9f
dmFsdWUpDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRleCA9IF9faG9s
ZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4
ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7DQorCSAgaWYg
KCooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQpIDwgKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQg
LSAxKSkpDQorCSAgICBfX3NlY29uZENoaWxkLS07DQorCSAgKihfX2ZpcnN0ICsgX19ob2xlSW5k
ZXgpID0gKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7DQorCSAgX19ob2xlSW5kZXggPSBfX3Nl
Y29uZENoaWxkOw0KKwkgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsN
CisJfQ0KKyAgICAgIGlmIChfX3NlY29uZENoaWxkID09IF9fbGVuKQ0KKwl7DQorCSAgKihfX2Zp
cnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSk7DQor
CSAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsNCisJfQ0KKyAgICAgIHN0ZDo6X19w
dXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUpOw0KKyAg
ICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVu
YW1lIF9UcD4NCisgICAgaW5saW5lIHZvaWQNCisgICAgX19wb3BfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdCwgX1RwIF9fdmFsdWUpDQorICAgIHsNCisg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2UoMCks
IF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSk7DQorICAgIH0NCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgUG9wIGFuIGVsZW1lbnQgb2ZmIGEgaGVhcC4NCisgICAq
ICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVu
ZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhpcyBvcGVy
YXRpb24gcG9wcyB0aGUgdG9wIG9mIHRoZSBoZWFwLiAgVGhlIGVsZW1lbnRzIGZpcnN0IGFuZCBs
YXN0LTENCisgICAqICBhcmUgc3dhcHBlZCBhbmQgW2ZpcnN0LGxhc3QtMSkgaXMgbWFkZSBpbnRv
IGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+DQorICAgIGlubGluZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
dmFsdWVfdHlwZQ0KKwlfVmFsdWVUeXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1l
bnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAg
ICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0
PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2Zp
cnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9f
bGFzdCk7DQorDQorICAgICAgc3RkOjpfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9f
bGFzdCAtIDEsDQorCQkgICAgICBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpKTsNCisgICAgfQ0K
Kw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
RGlzdGFuY2UsDQorCSAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZv
aWQNCisgICAgX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rp
c3RhbmNlIF9faG9sZUluZGV4LA0KKwkJICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlLCBf
Q29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRl
eCA9IF9faG9sZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9f
aG9sZUluZGV4ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7
DQorCSAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwNCisJCSAgICAgKihf
X2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQ0KKwkgICAgX19zZWNvbmRDaGlsZC0tOw0K
KwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQp
Ow0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsNCisJICBfX3NlY29uZENoaWxkID0g
MiAqIChfX3NlY29uZENoaWxkICsgMSk7DQorCX0NCisgICAgICBpZiAoX19zZWNvbmRDaGlsZCA9
PSBfX2xlbikNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCAr
IChfX3NlY29uZENoaWxkIC0gMSkpOw0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZCAt
IDE7DQorCX0NCisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBf
X3RvcEluZGV4LCBfX3ZhbHVlLCBfX2NvbXApOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBh
cmU+DQorICAgIGlubGluZSB2b2lkDQorICAgIF9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsDQorCSAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXAp
DQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpf
X3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBf
RGlzdGFuY2UoMCksIF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSwg
X19jb21wKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQb3AgYW4gZWxlbWVu
dCBvZmYgYSBoZWFwIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZp
cnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0K
KyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAg
QGluZ3JvdXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBwb3BzIHRoZSB0b3Ag
b2YgdGhlIGhlYXAuICBUaGUgZWxlbWVudHMgZmlyc3QgYW5kIGxhc3QtMQ0KKyAgICogIGFyZSBz
d2FwcGVkIGFuZCBbZmlyc3QsbGFzdC0xKSBpcyBtYWRlIGludG8gYSBoZWFwLiAgQ29tcGFyaXNv
bnMgYXJlDQorICAgKiAgbWFkZSB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGlu
ZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LA0KKwkg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkNCisgICAg
ew0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0
aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlk
X3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX2hlYXBf
cHJlZChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7DQorDQorICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQ0KKwlf
VmFsdWVUeXBlOw0KKyAgICAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBf
X2xhc3QgLSAxLA0KKwkJICAgICAgX1ZhbHVlVHlwZSgqKF9fbGFzdCAtIDEpKSwgX19jb21wKTsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBDb25zdHJ1Y3QgYSBoZWFwIG92ZXIg
YSByYW5nZS4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQor
ICAgKiAgVGhpcyBvcGVyYXRpb24gbWFrZXMgdGhlIGVsZW1lbnRzIGluIFtmaXJzdCxsYXN0KSBp
bnRvIGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+DQorICAgIHZvaWQNCisgICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFs
dWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQorCSAgX0Rp
c3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9f
Z2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNv
bmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDxfVmFsdWVUeXBlPikN
CisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsN
CisNCisgICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIpDQorCXJldHVybjsNCisNCisgICAg
ICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsNCisgICAgICBf
RGlzdGFuY2VUeXBlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikgLyAyOw0KKyAgICAgIHdoaWxlICh0
cnVlKQ0KKwl7DQorCSAgc3RkOjpfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xl
biwNCisJCQkgICAgIF9WYWx1ZVR5cGUoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7DQorCSAgaWYg
KF9fcGFyZW50ID09IDApDQorCSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAg
ICB9DQorDQorICAvKioNCisgICAqICBAYnJpZWYgIENvbnN0cnVjdCBhIGhlYXAgb3ZlciBhIHJh
bmdlIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFy
dCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAgQGluZ3JvdXAg
aGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBtYWtlcyB0aGUgZWxlbWVudHMgaW4g
W2ZpcnN0LGxhc3QpIGludG8gYSBoZWFwLg0KKyAgICogIENvbXBhcmlzb25zIGFyZSBtYWRlIHVz
aW5nIGNvbXAuDQorICAqLw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4NCisgICAgaW5saW5lIHZvaWQNCisgICAgbWFrZV9oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LA0KKwkgICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
DQorCSAgX1ZhbHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VU
eXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4
X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwN
CisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVz
X3ZhbGlkX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAgICAgaWYgKF9fbGFzdCAtIF9f
Zmlyc3QgPCAyKQ0KKwlyZXR1cm47DQorDQorICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xl
biA9IF9fbGFzdCAtIF9fZmlyc3Q7DQorICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChf
X2xlbiAtIDIpIC8gMjsNCisgICAgICB3aGlsZSAodHJ1ZSkNCisJew0KKwkgIHN0ZDo6X19hZGp1
c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sDQorCQkJICAgICBfVmFsdWVUeXBlKCoo
X19maXJzdCArIF9fcGFyZW50KSksIF9fY29tcCk7DQorCSAgaWYgKF9fcGFyZW50ID09IDApDQor
CSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAgICB9DQorDQorICAvKioNCisg
ICAqICBAYnJpZWYgIFNvcnQgYSBoZWFwLg0KKyAgICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9m
IGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAgRW5kIG9mIGhlYXAuDQorICAgKiAgQGluZ3Jv
dXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBzb3J0cyB0aGUgdmFsaWQgaGVh
cCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4NCisgICAgdm9pZA0KKyAgICBzb3J0X2hlYXAoX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpDQor
ICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQor
CSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9y
ZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDwNCisJICAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPikNCisgICAgICBf
X2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsNCisgICAgICAv
LyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAg
ICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQ0KKwlzdGQ6OnBvcF9oZWFwKF9fZmlyc3Qs
IF9fbGFzdC0tKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBTb3J0IGEgaGVh
cCB1c2luZyBjb21wYXJpc29uIGZ1bmN0b3IuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQg
b2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAcGFy
YW0gIGNvbXAgICBDb21wYXJpc29uIGZ1bmN0b3IgdG8gdXNlLg0KKyAgICogIEBpbmdyb3VwIGhl
YXANCisgICAqDQorICAgKiAgVGhpcyBvcGVyYXRpb24gc29ydHMgdGhlIHZhbGlkIGhlYXAgaW4g
dGhlIHJhbmdlIFtmaXJzdCxsYXN0KS4NCisgICAqICBDb21wYXJpc29ucyBhcmUgbWFkZSB1c2lu
ZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgc29ydF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LA0KKwkg
ICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVt
ZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21B
Y2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0LCBfX2NvbXAp
Ow0KKw0KKyAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkNCisJc3RkOjpwb3BfaGVh
cChfX2ZpcnN0LCBfX2xhc3QtLSwgX19jb21wKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNl
IHN0ZA0KKw0KKw0KKw0KKyNlbmRpZiANClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyNzIpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDMyNiBAQA0KKzIwMDYtMTAtMjQgIHlhZGF2
YWxsICA8c2V0IEVNQUlMX0FERFJFU1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIERFU0M6IAorICAgICAgICBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0KKworICAgICAgICAqIENoYW5nZUxv
ZzoKKyAgICAgICAgKiBiaW5kaW5ncy9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChsaXN0RnJv
bVZhcmlhbnRBcmdzKToKKyAgICAgICAgKF9pc1NhZmVTY3JpcHQpOgorICAgICAgICAoX05QTl9D
cmVhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAoTlBOX0ludm9rZURlZmF1bHQpOgorICAgICAg
ICAoTlBOX0ludm9rZSk6CisgICAgICAgIChOUE5fRXZhbHVhdGUpOgorICAgICAgICAoTlBOX0dl
dFByb3BlcnR5KToKKyAgICAgICAgKE5QTl9TZXRQcm9wZXJ0eSk6CisgICAgICAgIChOUE5fUmVt
b3ZlUHJvcGVydHkpOgorICAgICAgICAoTlBOX0hhc1Byb3BlcnR5KToKKyAgICAgICAgKE5QTl9I
YXNNZXRob2QpOgorICAgICAgICAoTlBOX1NldEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvTlBfanNvYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfY2xhc3MuY3BwOgorICAg
ICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpDQ2xhc3MpOgorICAgICAgICAoS0pTOjpCaW5k
aW5nczo6Q0NsYXNzOjp+Q0NsYXNzKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6
Y2xhc3NGb3JJc0EpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpuYW1lKToKKyAg
ICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEtK
Uzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgICogYmluZGluZ3MvYy9j
X2NsYXNzLmg6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6OmNvbnN0cnVjdG9yQXQp
OgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpudW1Db25zdHJ1Y3RvcnMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChDSW5zdGFuY2U6OkNJ
bnN0YW5jZSk6CisgICAgICAgIChDSW5zdGFuY2U6On5DSW5zdGFuY2UpOgorICAgICAgICAoQ0lu
c3RhbmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoQ0luc3RhbmNlOjpnZXRDbGFzcyk6CisgICAg
ICAgIChDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgIChDSW5zdGFuY2U6Omludm9r
ZURlZmF1bHRNZXRob2QpOgorICAgICAgICAoQ0luc3RhbmNlOjpkZWZhdWx0VmFsdWUpOgorICAg
ICAgICAoQ0luc3RhbmNlOjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChDSW5zdGFuY2U6OnZhbHVl
T2YpOgorICAgICAgICAqIGJpbmRpbmdzL2MvY19ydW50aW1lLmg6CisgICAgICAgIChLSlM6OkJp
bmRpbmdzOjpDRmllbGQ6Om5hbWUpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q01ldGhvZDo6
bmFtZSk6CisgICAgICAgICogYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoY29u
dmVydFVURjhUb1VURjE2KToKKyAgICAgICAgKGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToKKyAg
ICAgICAgKGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKToKKyAgICAgICAgKGlkZW50aWZpZXJGcm9t
TlBJZGVudGlmaWVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfdXRpbGl0eS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL25wYXBpLmg6CisgICAgICAgIChfTlBQcmludDo6KToKKyAgICAgICAgKiBi
aW5kaW5ncy9ucHJ1bnRpbWUuY3BwOgorICAgICAgICAoZ2V0U3RyaW5nSWRlbnRpZmllck1hcCk6
CisgICAgICAgIChnZXRJbnRJZGVudGlmaWVyTWFwKToKKyAgICAgICAgKE5QTl9HZXRTdHJpbmdJ
ZGVudGlmaWVyKToKKyAgICAgICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyk6CisgICAgICAg
IChOUE5fR2V0SW50SWRlbnRpZmllcik6CisgICAgICAgIChOUE5fSWRlbnRpZmllcklzU3RyaW5n
KToKKyAgICAgICAgKE5QTl9VVEY4RnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoTlBOX0ludEZy
b21JZGVudGlmaWVyKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9Cb29sKToKKyAgICAgICAgKE5Q
Tl9WYXJpYW50VG9TdHJpbmcpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb0ludDMyKToKKyAgICAg
ICAgKE5QTl9WYXJpYW50VG9Eb3VibGUpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb09iamVjdCk6
CisgICAgICAgIChOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoT2JqZWN0KToKKyAgICAgICAgKE5Q
Tl9SZWxlYXNlVmFyaWFudFZhbHVlKToKKyAgICAgICAgKE5QTl9DcmVhdGVPYmplY3QpOgorICAg
ICAgICAoTlBOX1JldGFpbk9iamVjdCk6CisgICAgICAgIChOUE5fUmVsZWFzZU9iamVjdCk6Cisg
ICAgICAgIChOUE5fU2V0RXhjZXB0aW9uV2l0aFVURjgpOgorICAgICAgICAqIGJpbmRpbmdzL25w
cnVudGltZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUuY3BwOgorICAgICAgICAoSW5z
dGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlKToKKyAgICAgICAgKEluc3Rh
bmNlOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3J1bnRpbWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5jcHA6CisgICAg
ICAgIChSdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKToKKyAgICAgICAgKFJ1bnRp
bWVPYmplY3RJbXA6OmdldCk6CisgICAgICAgIChSdW50aW1lT2JqZWN0SW1wOjpwdXQpOgorICAg
ICAgICAoUnVudGltZU9iamVjdEltcDo6Y2FuUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50
aW1lX29iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHA6CisgICAg
ICAgIChSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzKToKKyAgICAgICAgKGdl
dFJlZmVyZW5jZXNCeVJvb3RNYXApOgorICAgICAgICAoZ2V0UmVmZXJlbmNlc1NldCk6CisgICAg
ICAgIChLSlM6OkJpbmRpbmdzOjpmaW5kUmVmZXJlbmNlU2V0KToKKyAgICAgICAgKEtKUzo6Qmlu
ZGluZ3M6OnJvb3RGb3JJbXApOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6cm9vdEZvckludGVy
cHJldGVyKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OmFkZE5hdGl2ZVJlZmVyZW5jZSk6Cisg
ICAgICAgIChLSlM6OkJpbmRpbmdzOjpyZW1vdmVOYXRpdmVSZWZlcmVuY2UpOgorICAgICAgICAo
Um9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVf
cm9vdC5oOgorICAgICAgICAqIGdyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRjoKKyAg
ICAgICAgKiBncm91cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWY6CisgICAgICAgICogZ3JvdXAv
SmF2YVNjcmlwdENvcmUubW1wOgorICAgICAgICAqIGdyb3VwL2JsZC5pbmY6CisgICAgICAgICog
a2pzL2ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEludGVycHJldGVyOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChJbnRlcnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToKKyAg
ICAgICAgKFNhdmVkQnVpbHRpbnM6OlNhdmVkQnVpbHRpbnMpOgorICAgICAgICAqIGtqcy9pbnRl
cnByZXRlci5oOgorICAgICAgICAqIGtqcy9zdGRpbnQuaDoKKyAgICAgICAgKiBranMvdXN0cmlu
Zy5oOgorICAgICAgICAoS0pTOjpVU3RyaW5nOjphcmVwKToKKworMjAwNi0xMC0yNCAgeWFkYXZh
bGwgIDxzcmlyYW0ueWFkYXZhbGxpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBa
YWxhbiBCdWp0YXMgKHpidWp0YXNAZ21haWwuY29tKS4KKyAgICAgICAgREVTQzogU2NyaXB0YWJs
ZSBwbHVnaW4gYW5kIHdpZGdldCBvYmplY3Qgc3VwcG9ydAorICAgICAgICBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNworICAgICAgICBXQVJOSU5HOiBOTyBURVNU
IENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICAqIENoYW5nZUxvZzoKKyAgICAgICAg
KiBiaW5kaW5ncy9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChsaXN0RnJvbVZhcmlhbnRBcmdz
KToKKyAgICAgICAgKF9pc1NhZmVTY3JpcHQpOgorICAgICAgICAoX05QTl9DcmVhdGVTY3JpcHRP
YmplY3QpOgorICAgICAgICAoTlBOX0ludm9rZURlZmF1bHQpOgorICAgICAgICAoTlBOX0ludm9r
ZSk6CisgICAgICAgIChOUE5fRXZhbHVhdGUpOgorICAgICAgICAoTlBOX0dldFByb3BlcnR5KToK
KyAgICAgICAgKE5QTl9TZXRQcm9wZXJ0eSk6CisgICAgICAgIChOUE5fUmVtb3ZlUHJvcGVydHkp
OgorICAgICAgICAoTlBOX0hhc1Byb3BlcnR5KToKKyAgICAgICAgKE5QTl9IYXNNZXRob2QpOgor
ICAgICAgICAoTlBOX1NldEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvTlBfanNvYmpl
Y3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoS0pTOjpC
aW5kaW5nczo6Q0NsYXNzOjpDQ2xhc3MpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNz
Ojp+Q0NsYXNzKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6Y2xhc3NGb3JJc0Ep
OgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpuYW1lKToKKyAgICAgICAgKEtKUzo6
QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6
OkNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgICogYmluZGluZ3MvYy9jX2NsYXNzLmg6Cisg
ICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6OmNvbnN0cnVjdG9yQXQpOgorICAgICAgICAo
S0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpudW1Db25zdHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRp
bmdzL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChDSW5zdGFuY2U6OkNJbnN0YW5jZSk6Cisg
ICAgICAgIChDSW5zdGFuY2U6On5DSW5zdGFuY2UpOgorICAgICAgICAoQ0luc3RhbmNlOjpvcGVy
YXRvcj0pOgorICAgICAgICAoQ0luc3RhbmNlOjpnZXRDbGFzcyk6CisgICAgICAgIChDSW5zdGFu
Y2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgIChDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRo
b2QpOgorICAgICAgICAoQ0luc3RhbmNlOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoQ0luc3Rh
bmNlOjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChDSW5zdGFuY2U6OnZhbHVlT2YpOgorICAgICAg
ICAqIGJpbmRpbmdzL2MvY19ydW50aW1lLmg6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDRmll
bGQ6Om5hbWUpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q01ldGhvZDo6bmFtZSk6CisgICAg
ICAgICogYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoY29udmVydFVURjhUb1VU
RjE2KToKKyAgICAgICAgKGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToKKyAgICAgICAgKGNvbnZl
cnROUFZhcmlhbnRUb1ZhbHVlKToKKyAgICAgICAgKGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfdXRpbGl0eS5oOgorICAgICAgICAqIGJpbmRpbmdz
L25wYXBpLmg6CisgICAgICAgIChfTlBQcmludDo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9ucHJ1
bnRpbWUuY3BwOgorICAgICAgICAoZ2V0U3RyaW5nSWRlbnRpZmllck1hcCk6CisgICAgICAgIChn
ZXRJbnRJZGVudGlmaWVyTWFwKToKKyAgICAgICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKToK
KyAgICAgICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyk6CisgICAgICAgIChOUE5fR2V0SW50
SWRlbnRpZmllcik6CisgICAgICAgIChOUE5fSWRlbnRpZmllcklzU3RyaW5nKToKKyAgICAgICAg
KE5QTl9VVEY4RnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoTlBOX0ludEZyb21JZGVudGlmaWVy
KToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9Cb29sKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9T
dHJpbmcpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb0ludDMyKToKKyAgICAgICAgKE5QTl9WYXJp
YW50VG9Eb3VibGUpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb09iamVjdCk6CisgICAgICAgIChO
UE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoT2JqZWN0KToKKyAgICAgICAgKE5QTl9SZWxlYXNlVmFy
aWFudFZhbHVlKToKKyAgICAgICAgKE5QTl9DcmVhdGVPYmplY3QpOgorICAgICAgICAoTlBOX1Jl
dGFpbk9iamVjdCk6CisgICAgICAgIChOUE5fUmVsZWFzZU9iamVjdCk6CisgICAgICAgIChOUE5f
U2V0RXhjZXB0aW9uV2l0aFVURjgpOgorICAgICAgICAqIGJpbmRpbmdzL25wcnVudGltZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUuY3BwOgorICAgICAgICAoSW5zdGFuY2U6OmNyZWF0
ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlKToKKyAgICAgICAgKEluc3RhbmNlOjpjcmVhdGVM
YW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChSdW50aW1l
T2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6
OmdldCk6CisgICAgICAgIChSdW50aW1lT2JqZWN0SW1wOjpwdXQpOgorICAgICAgICAoUnVudGlt
ZU9iamVjdEltcDo6Y2FuUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5o
OgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgIChSb290T2Jq
ZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzKToKKyAgICAgICAgKGdldFJlZmVyZW5jZXNC
eVJvb3RNYXApOgorICAgICAgICAoZ2V0UmVmZXJlbmNlc1NldCk6CisgICAgICAgIChLSlM6OkJp
bmRpbmdzOjpmaW5kUmVmZXJlbmNlU2V0KToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OnJvb3RG
b3JJbXApOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6cm9vdEZvckludGVycHJldGVyKToKKyAg
ICAgICAgKEtKUzo6QmluZGluZ3M6OmFkZE5hdGl2ZVJlZmVyZW5jZSk6CisgICAgICAgIChLSlM6
OkJpbmRpbmdzOjpyZW1vdmVOYXRpdmVSZWZlcmVuY2UpOgorICAgICAgICAoUm9vdE9iamVjdDo6
c2V0SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5oOgorICAg
ICAgICAqIGdyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRjoKKyAgICAgICAgKiBncm91
cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWY6CisgICAgICAgICogZ3JvdXAvSmF2YVNjcmlwdENv
cmUubW1wOgorICAgICAgICAqIGdyb3VwL2JsZC5pbmY6CisgICAgICAgICoga2pzL2ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEludGVycHJldGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChJbnRl
cnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToKKyAgICAgICAgKFNhdmVk
QnVpbHRpbnM6OlNhdmVkQnVpbHRpbnMpOgorICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5oOgor
ICAgICAgICAqIGtqcy9zdGRpbnQuaDoKKyAgICAgICAgKiBranMvdXN0cmluZy5oOgorICAgICAg
ICAoS0pTOjpVU3RyaW5nOjphcmVwKToKKworMjAwNi0xMC0yNCAgeWFkYXZhbGwgIDxzZXQgRU1B
SUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgREVTQzogCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPQorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAq
IGJpbmRpbmdzL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKGxpc3RGcm9tVmFyaWFudEFyZ3Mp
OgorICAgICAgICAoX2lzU2FmZVNjcmlwdCk6CisgICAgICAgIChfTlBOX0NyZWF0ZVNjcmlwdE9i
amVjdCk6CisgICAgICAgIChOUE5fSW52b2tlRGVmYXVsdCk6CisgICAgICAgIChOUE5fSW52b2tl
KToKKyAgICAgICAgKE5QTl9FdmFsdWF0ZSk6CisgICAgICAgIChOUE5fR2V0UHJvcGVydHkpOgor
ICAgICAgICAoTlBOX1NldFByb3BlcnR5KToKKyAgICAgICAgKE5QTl9SZW1vdmVQcm9wZXJ0eSk6
CisgICAgICAgIChOUE5fSGFzUHJvcGVydHkpOgorICAgICAgICAoTlBOX0hhc01ldGhvZCk6Cisg
ICAgICAgIChOUE5fU2V0RXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9OUF9qc29iamVj
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL2MvY19jbGFzcy5jcHA6CisgICAgICAgIChLSlM6OkJp
bmRpbmdzOjpDQ2xhc3M6OkNDbGFzcyk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6
On5DQ2xhc3MpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpjbGFzc0ZvcklzQSk6
CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6Om5hbWUpOgorICAgICAgICAoS0pTOjpC
aW5kaW5nczo6Q0NsYXNzOjptZXRob2RzTmFtZWQpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6
Q0NsYXNzOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfY2xhc3MuaDoKKyAg
ICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6Y29uc3RydWN0b3JBdCk6CisgICAgICAgIChL
SlM6OkJpbmRpbmdzOjpDQ2xhc3M6Om51bUNvbnN0cnVjdG9ycyk6CisgICAgICAgICogYmluZGlu
Z3MvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKENJbnN0YW5jZTo6Q0luc3RhbmNlKToKKyAg
ICAgICAgKENJbnN0YW5jZTo6fkNJbnN0YW5jZSk6CisgICAgICAgIChDSW5zdGFuY2U6Om9wZXJh
dG9yPSk6CisgICAgICAgIChDSW5zdGFuY2U6OmdldENsYXNzKToKKyAgICAgICAgKENJbnN0YW5j
ZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKENJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhv
ZCk6CisgICAgICAgIChDSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChDSW5zdGFu
Y2U6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKENJbnN0YW5jZTo6dmFsdWVPZik6CisgICAgICAg
ICogYmluZGluZ3MvYy9jX3J1bnRpbWUuaDoKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNGaWVs
ZDo6bmFtZSk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDTWV0aG9kOjpuYW1lKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9jL2NfdXRpbGl0eS5jcHA6CisgICAgICAgIChjb252ZXJ0VVRGOFRvVVRG
MTYpOgorICAgICAgICAoY29udmVydFZhbHVlVG9OUFZhcmlhbnQpOgorICAgICAgICAoY29udmVy
dE5QVmFyaWFudFRvVmFsdWUpOgorICAgICAgICAoaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2MvY191dGlsaXR5Lmg6CisgICAgICAgICogYmluZGluZ3Mv
bnBhcGkuaDoKKyAgICAgICAgKF9OUFByaW50OjopOgorICAgICAgICAqIGJpbmRpbmdzL25wcnVu
dGltZS5jcHA6CisgICAgICAgIChnZXRTdHJpbmdJZGVudGlmaWVyTWFwKToKKyAgICAgICAgKGdl
dEludElkZW50aWZpZXJNYXApOgorICAgICAgICAoTlBOX0dldFN0cmluZ0lkZW50aWZpZXIpOgor
ICAgICAgICAoTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzKToKKyAgICAgICAgKE5QTl9HZXRJbnRJ
ZGVudGlmaWVyKToKKyAgICAgICAgKE5QTl9JZGVudGlmaWVySXNTdHJpbmcpOgorICAgICAgICAo
TlBOX1VURjhGcm9tSWRlbnRpZmllcik6CisgICAgICAgIChOUE5fSW50RnJvbUlkZW50aWZpZXIp
OgorICAgICAgICAoTlBOX1ZhcmlhbnRUb0Jvb2wpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb1N0
cmluZyk6CisgICAgICAgIChOUE5fVmFyaWFudFRvSW50MzIpOgorICAgICAgICAoTlBOX1Zhcmlh
bnRUb0RvdWJsZSk6CisgICAgICAgIChOUE5fVmFyaWFudFRvT2JqZWN0KToKKyAgICAgICAgKE5Q
Tl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QpOgorICAgICAgICAoTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUpOgorICAgICAgICAoTlBOX0NyZWF0ZU9iamVjdCk6CisgICAgICAgIChOUE5fUmV0
YWluT2JqZWN0KToKKyAgICAgICAgKE5QTl9SZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKE5QTl9T
ZXRFeGNlcHRpb25XaXRoVVRGOCk6CisgICAgICAgICogYmluZGluZ3MvbnBydW50aW1lLmg6Cisg
ICAgICAgICogYmluZGluZ3MvcnVudGltZS5jcHA6CisgICAgICAgIChJbnN0YW5jZTo6Y3JlYXRl
QmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UpOgorICAgICAgICAoSW5zdGFuY2U6OmNyZWF0ZUxh
bmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvcnVudGltZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKFJ1bnRpbWVP
YmplY3RJbXA6OlJ1bnRpbWVPYmplY3RJbXApOgorICAgICAgICAoUnVudGltZU9iamVjdEltcDo6
Z2V0KToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OnB1dCk6CisgICAgICAgIChSdW50aW1l
T2JqZWN0SW1wOjpjYW5QdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0Lmg6
CisgICAgICAgICogYmluZGluZ3MvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAgKFJvb3RPYmpl
Y3Q6OnJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMpOgorICAgICAgICAoZ2V0UmVmZXJlbmNlc0J5
Um9vdE1hcCk6CisgICAgICAgIChnZXRSZWZlcmVuY2VzU2V0KToKKyAgICAgICAgKEtKUzo6Qmlu
ZGluZ3M6OmZpbmRSZWZlcmVuY2VTZXQpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6cm9vdEZv
ckltcCk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpyb290Rm9ySW50ZXJwcmV0ZXIpOgorICAg
ICAgICAoS0pTOjpCaW5kaW5nczo6YWRkTmF0aXZlUmVmZXJlbmNlKToKKyAgICAgICAgKEtKUzo6
QmluZGluZ3M6OnJlbW92ZU5hdGl2ZVJlZmVyZW5jZSk6CisgICAgICAgIChSb290T2JqZWN0Ojpz
ZXRJbnRlcnByZXRlcik6CisgICAgICAgICogYmluZGluZ3MvcnVudGltZV9yb290Lmg6CisgICAg
ICAgICogZ3JvdXAvQndpbnNjdy9KQVZBU0NSSVBUQ09SRVUuREVGOgorICAgICAgICAqIGdyb3Vw
L0VBQkkvSmF2YXNjcmlwdENvcmVVLmRlZjoKKyAgICAgICAgKiBncm91cC9KYXZhU2NyaXB0Q29y
ZS5tbXA6CisgICAgICAgICogZ3JvdXAvYmxkLmluZjoKKyAgICAgICAgKiBranMvaW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKEludGVy
cHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOgorICAgICAgICAoU2F2ZWRC
dWlsdGluczo6U2F2ZWRCdWlsdGlucyk6CisgICAgICAgICoga2pzL2ludGVycHJldGVyLmg6Cisg
ICAgICAgICoga2pzL3N0ZGludC5oOgorICAgICAgICAqIGtqcy91c3RyaW5nLmg6CisgICAgICAg
IChLSlM6OlVTdHJpbmc6OmFyZXApOgorCisKIDIwMDYtMTAtMDQgIHNhcmVlbiAgPHNoeWFtLnNh
cmVlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvZ3JvdXAvYmxkLmluZg0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL2dyb3VwL2JsZC5pbmYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2dyb3VwL2JsZC5pbmYJKHdvcmtpbmcgY29weSkNCkBAIC0yMSw2ICsyMSwyMSBAQA0KIFBSSl9Q
TEFURk9STVMNCiBERUZBVUxUDQogDQorUFJKX0VYUE9SVFMNCisuLlxranNcaW50ZXJuYWwuaCAg
ICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcaW50ZXJuYWwuaA0K
Ky4uXGtqc1xpbnRlcnByZXRlci5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZh
c2NyaXB0Y29yZVxpbnRlcnByZXRlci5oDQorLi5ca2pzXG9iamVjdC5oICAgICAgICAgICAgXGVw
b2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxvYmplY3QuaA0KKy4uXGtqc1xwcm90ZWN0
LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHByb3RlY3Qu
aA0KKy4uXGtqc1xzdGRpbnQuaCAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2Ny
aXB0Y29yZVxzdGRpbnQuaA0KKw0KKy4uXGJpbmRpbmdzXG5wcnVudGltZS5oICAgICAgICAgICAg
XGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxucHJ1bnRpbWUuaA0KKy4uXGJpbmRp
bmdzXG5wcnVudGltZV9pbXBsLmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFz
Y3JpcHRjb3JlXG5wcnVudGltZV9pbXBsLmgNCisuLlxiaW5kaW5nc1xucHJ1bnRpbWVfcHJpdi5o
ICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxucHJ1bnRpbWVf
cHJpdi5oDQorLi5cYmluZGluZ3NccnVudGltZS5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRl
XG9lbVxqYXZhc2NyaXB0Y29yZVxydW50aW1lLmgNCisuLlxiaW5kaW5nc1xydW50aW1lX29iamVj
dC5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxydW50aW1l
X29iamVjdC5oDQorLi5cYmluZGluZ3NccnVudGltZV9yb290LmggICAgICAgICAgICBcZXBvYzMy
XGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHJ1bnRpbWVfcm9vdC5oDQorLi5cYmluZGluZ3Nc
TlBfanNvYmplY3QuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNv
cmVcTlBfanNvYmplY3QuaA0KKy4uXGJpbmRpbmdzXGNcY191dGlsaXR5LmggICAgICAgICAgICBc
ZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXGNfdXRpbGl0eS5oDQogUFJKX01NUEZJ
TEVTDQogcGNyZS5tbXANCiBKYXZhU2NyaXB0Q29yZS5tbXANCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ncm91cC9Cd2luc2N3L0pBVkFTQ1JJUFRDT1JFVS5ERUYNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9ncm91cC9Cd2luc2N3L0pBVkFTQ1JJUFRDT1JFVS5ERUYJKHJldmlzaW9uIDE3
MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRF
Rgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMTM5ICsxLDE2OCBAQA0KIEVYUE9SVFMNCi0JPz8wQm9v
bGVhbkBLSlNAQFFBRUBfTkBaIEAgMSBOT05BTUUgOyBLSlM6OkJvb2xlYW46OkJvb2xlYW4oYm9v
bCkNCi0JPz8wSW50ZXJwcmV0ZXJAS0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAyIE5PTkFNRSA7
IEtKUzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYp
DQotCT8/MExpc3RAS0pTQEBRQUVAWFogQCAzIE5PTkFNRSA7IEtKUzo6TGlzdDo6TGlzdCh2b2lk
KQ0KLQk/PzBOdWxsQEtKU0BAUUFFQFhaIEAgNCBOT05BTUUgOyBLSlM6Ok51bGw6Ok51bGwodm9p
ZCkNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQEhAWiBAIDUgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51
bWJlcihpbnQpDQotCT8/ME51bWJlckBLSlNAQFFBRUBJQFogQCA2IE5PTkFNRSA7IEtKUzo6TnVt
YmVyOjpOdW1iZXIodW5zaWduZWQgaW50KQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVASkBaIEAgNyBO
T05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGxvbmcpDQotCT8/ME51bWJlckBLSlNAQFFBRUBL
QFogQCA4IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgbG9uZykNCi0JPz8w
TnVtYmVyQEtKU0BAUUFFQE5AWiBAIDkgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihkb3Vi
bGUpDQotCT8/ME9iamVjdEltcEBLSlNAQFFBRUBBQlZPYmplY3RAMUBAWiBAIDEwIE5PTkFNRSA7
IEtKUzo6T2JqZWN0SW1wOjpPYmplY3RJbXAoY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJikNCi0J
Pz8wT2JqZWN0SW1wQEtKU0BAUUFFQFhaIEAgMTEgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6Ok9i
amVjdEltcCh2b2lkKQ0KLQk/PzBTdHJpbmdAS0pTQEBRQUVAQUJWVVN0cmluZ0AxQEBaIEAgMTIg
Tk9OQU1FIDsgS0pTOjpTdHJpbmc6OlN0cmluZyhjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikN
Ci0JPz8wVVN0cmluZ0BLSlNAQFFBRUBBQlYwMUAwQFogQCAxMyBOT05BTUUgOyBLSlM6OlVTdHJp
bmc6OlVTdHJpbmcoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmlu
ZyBjb25zdCAmKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQERAWiBAIDE0IE5PTkFNRSA7IEtKUzo6
VVN0cmluZzo6VVN0cmluZyhjaGFyKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBBVVVDaGFyQDFA
SF9OQFogQCAxNSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoc3RydWN0IEtKUzo6VUNo
YXIgKiwgaW50LCBib29sKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBCREBaIEAgMTYgTk9OQU1F
IDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIgY29uc3QgKikNCi0JPz8wVVN0cmluZ0BLSlNA
QFFBRUBQQlVVQ2hhckAxQEhAWiBAIDE3IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhz
dHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQotCT8/MFVTdHJpbmdAS0pTQEBRQUVAWFog
QCAxOCBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcodm9pZCkNCi0JPz8wVW5kZWZpbmVk
QEtKU0BAUUFFQFhaIEAgMTkgTk9OQU1FIDsgS0pTOjpVbmRlZmluZWQ6OlVuZGVmaW5lZCh2b2lk
KQ0KLQk/PzBWYWx1ZUBLSlNAQFFBRUBBQlYwMUBAWiBAIDIwIE5PTkFNRSA7IEtKUzo6VmFsdWU6
OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JPz8wVmFsdWVAS0pTQEBRQUVAUEFW
VmFsdWVJbXBAMUBAWiBAIDIxIE5PTkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6
VmFsdWVJbXAgKikNCi0JPz8xSW50ZXJwcmV0ZXJAS0pTQEBVQUVAWFogQCAyMiBOT05BTUUgOyBL
SlM6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIodm9pZCkNCi0JPz8xT2JqZWN0SW1wQEtKU0BA
VUFFQFhaIEAgMjMgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6On5PYmplY3RJbXAodm9pZCkNCi0J
Pz8xVmFsdWVAS0pTQEBRQUVAWFogQCAyNCBOT05BTUUgOyBLSlM6OlZhbHVlOjp+VmFsdWUodm9p
ZCkNCi0JPz8yVmFsdWVJbXBAS0pTQEBTQVBBWElAWiBAIDI1IE5PTkFNRSA7IHZvaWQgKiBLSlM6
OlZhbHVlSW1wOjpvcGVyYXRvciBuZXcodW5zaWduZWQgaW50KQ0KLQk/PzNWYWx1ZUltcEBLSlNA
QFNBWFBBWEBaIEAgMjYgTk9OQU1FIDsgdm9pZCBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBkZWxl
dGUodm9pZCAqKQ0KLQk/PzRDU3RyaW5nQEtKU0BAUUFFQUFWMDFAUEJEQFogQCAyNyBOT05BTUUg
OyBjbGFzcyBLSlM6OkNTdHJpbmcgJiBLSlM6OkNTdHJpbmc6Om9wZXJhdG9yPShjaGFyIGNvbnN0
ICopDQotCT8/NExpc3RAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDI4IE5PTkFNRSA7IGNsYXNz
IEtKUzo6TGlzdCAmIEtKUzo6TGlzdDo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6TGlzdCBjb25zdCAm
KQ0KLQk/PzRTY29wZUNoYWluQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAyOSBOT05BTUUgOyBj
bGFzcyBLSlM6OlNjb3BlQ2hhaW4gJiBLSlM6OlNjb3BlQ2hhaW46Om9wZXJhdG9yPShjbGFzcyBL
SlM6OlNjb3BlQ2hhaW4gY29uc3QgJikNCi0JPz80VVN0cmluZ0BLSlNAQFFBRUFBVjAxQEFCVjAx
QEBaIEAgMzAgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjpvcGVy
YXRvcj0oY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQotCT8/NFZhbHVlQEtKU0BAUUFFQUFW
MDFAQUJWMDFAQFogQCAzMSBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlICYgS0pTOjpWYWx1ZTo6
b3BlcmF0b3I9KGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JPz84S0pTQEBZQV9OQUJWVVN0
cmluZ0AwQFBCREBaIEAgMzIgTk9OQU1FIDsgYm9vbCBLSlM6Om9wZXJhdG9yPT0oY2xhc3MgS0pT
OjpVU3RyaW5nIGNvbnN0ICYsIGNoYXIgY29uc3QgKikNCi0JP2FkZEBJZGVudGlmaWVyQEtKU0BA
Q0FQQVVSZXBAVVN0cmluZ0AyQFBBVTM0MkBAWiBAIDMzIE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVT
dHJpbmc6OlJlcCAqIEtKUzo6SWRlbnRpZmllcjo6YWRkKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJl
cCAqKQ0KLQk/YWRkQElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJAUEJEQFogQCAz
NCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OklkZW50aWZpZXI6OmFk
ZChjaGFyIGNvbnN0ICopDQotCT9hcHBlbmRATGlzdEBLSlNAQFFBRVhQQVZWYWx1ZUltcEAyQEBa
IEAgMzUgTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OmFwcGVuZChjbGFzcyBLSlM6OlZhbHVlSW1w
ICopDQotCT9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQEFCVjEyQEBaIEAgMzYgTk9OQU1F
IDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2xhc3MgS0pTOjpV
U3RyaW5nIGNvbnN0ICYpDQotCT9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQFBCREBaIEAg
MzcgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2hh
ciBjb25zdCAqKQ0KLQk/YXNjaWlAVVN0cmluZ0BLSlNAQFFCRVBBRFhaIEAgMzggTk9OQU1FIDsg
Y2hhciAqIEtKUzo6VVN0cmluZzo6YXNjaWkodm9pZCkgY29uc3QNCi0JP2F0dGFjaE51bGxAVVN0
cmluZ0BLSlNAQEFBRVhYWiBAIDM5IE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjphdHRhY2hO
dWxsKHZvaWQpDQotCT9idWlsdGluQXJyYXlASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RA
MkBYWiBAIDQwIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1
aWx0aW5BcnJheSh2b2lkKSBjb25zdA0KLQk/YnVpbHRpbkZ1bmN0aW9uQEludGVycHJldGVyQEtK
U0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0MSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6
OkludGVycHJldGVyOjpidWlsdGluRnVuY3Rpb24odm9pZCkgY29uc3QNCi0JP2J1aWx0aW5PYmpl
Y3RASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQyIE5PTkFNRSA7IGNsYXNz
IEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3Qodm9pZCkgY29uc3QN
Ci0JP2J1aWx0aW5PYmplY3RQcm90b3R5cGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RA
MkBYWiBAIDQzIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1
aWx0aW5PYmplY3RQcm90b3R5cGUodm9pZCkgY29uc3QNCi0JP2NhbGxAT2JqZWN0QEtKU0BAUUFF
P0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQVYxMkBBQlZMaXN0QDJAQFogQCA0NCBOT05BTUUg
OyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0OjpjYWxsKGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KLQk/Y2Fs
bEBPYmplY3RJbXBAS0pTQEBVQUU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFBVk9iamVjdEAy
QEFCVkxpc3RAMkBAWiBAIDQ1IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJ
bXA6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmplY3QgJiwgY2xh
c3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jYW5QdXRAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZF
eGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA0NiBOT05BTUUgOyBib29sIEtKUzo6T2Jq
ZWN0SW1wOjpjYW5QdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYpIGNvbnN0DQotCT9jbGFzc0luZm9AT2JqZWN0SW1wQEtKU0BAVUJFUEJVQ2xh
c3NJbmZvQDJAWFogQCA0NyBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKiBL
SlM6Ok9iamVjdEltcDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQotCT9jbGFzc05hbWVAT2JqZWN0
SW1wQEtKU0BAVUJFP0FWVVN0cmluZ0AyQFhaIEAgNDggTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3Ry
aW5nIEtKUzo6T2JqZWN0SW1wOjpjbGFzc05hbWUodm9pZCkgY29uc3QNCi0JP2NvbGxlY3RAQ29s
bGVjdG9yQEtKU0BAU0FfTlhaIEAgNDkgTk9OQU1FIDsgYm9vbCBLSlM6OkNvbGxlY3Rvcjo6Y29s
bGVjdCh2b2lkKQ0KLQk/Y29tcGF0TW9kZUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVzRDb21wYXRN
b2RlQDEyQFhaIEAgNTAgTk9OQU1FIDsgZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2Rl
IEtKUzo6SW50ZXJwcmV0ZXI6OmNvbXBhdE1vZGUodm9pZCkgY29uc3QNCi0JP2NvbnN0cnVjdEBP
YmplY3RJbXBAS0pTQEBVQUU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZMaXN0QDJAQFog
QCA1MSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3RydWN0
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KLQk/Y29u
c3RydWN0QE9iamVjdEltcEBLSlNAQFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxp
c3RAMkBBQlZVU3RyaW5nQDJASEBaIEAgNTIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pT
OjpPYmplY3RJbXA6OmNvbnN0cnVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6
Okxpc3QgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCkNCi0JP2NvcHlU
YWlsQExpc3RAS0pTQEBRQkU/QVYxMkBYWiBAIDUzIE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCBL
SlM6Okxpc3Q6OmNvcHlUYWlsKHZvaWQpIGNvbnN0DQotCT9jcmVhdGVARXJyb3JAS0pTQEBTQT9B
Vk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQFc0RXJyb3JUeXBlQDJAUEJESEhQQlZVU3RyaW5nQDJA
QFogQCA1NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkVycm9yOjpjcmVhdGUoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OkVycm9yVHlwZSwgY2hhciBjb25zdCAqLCBp
bnQsIGludCwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICopDQotCT9jcmVhdGVAUmVwQFVTdHJp
bmdAS0pTQEBTQVBBVTEyM0BQQVVVQ2hhckAzQEhAWiBAIDU1IE5PTkFNRSA7IHN0cnVjdCBLSlM6
OlVTdHJpbmc6OlJlcCAqIEtKUzo6VVN0cmluZzo6UmVwOjpjcmVhdGUoc3RydWN0IEtKUzo6VUNo
YXIgKiwgaW50KQ0KLQk/Y3JlYXRlQ29weWluZ0BSZXBAVVN0cmluZ0BLSlNAQFNBUEFVMTIzQFBC
VVVDaGFyQDNASEBaIEAgNTYgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pT
OjpVU3RyaW5nOjpSZXA6OmNyZWF0ZUNvcHlpbmcoc3RydWN0IEtKUzo6VUNoYXIgY29uc3QgKiwg
aW50KQ0KLQk/ZGVmYXVsdFZhbHVlQE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhl
Y1N0YXRlQDJAVzRUeXBlQDJAQFogQCA1NyBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6
T2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6
OlR5cGUpIGNvbnN0DQotCT9kZWxldGVBbGxQcm9wZXJ0aWVzQE9iamVjdEltcEBLSlNAQFFBRVhQ
QVZFeGVjU3RhdGVAMkBAWiBAIDU4IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OmRlbGV0
ZUFsbFByb3BlcnRpZXMoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikNCi0JP2RlbGV0ZVByb3BlcnR5
QE9iamVjdEltcEBLSlNAQFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
NTkgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpDQotCT9kZWxldGVQ
cm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDYwIE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIHVuc2lnbmVkIGludCkNCi0JP2RlcmVmVmFsdWVzQExpc3RAS0pTQEBBQUVYWFogQCA2
MSBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6ZGVyZWZWYWx1ZXModm9pZCkNCi0JP2Rlc3Ryb3lA
UmVwQFVTdHJpbmdAS0pTQEBRQUVYWFogQCA2MiBOT05BTUUgOyB2b2lkIEtKUzo6VVN0cmluZzo6
UmVwOjpkZXN0cm95KHZvaWQpDQotCT9kaXNwYXRjaFRvT2JqZWN0QFZhbHVlSW1wQEtKU0BAUUJF
P0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9i
amVjdCBLSlM6OlZhbHVlSW1wOjpkaXNwYXRjaFRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICopIGNvbnN0DQotCT9keW5hbWljQ2FzdEBPYmplY3RAS0pTQEBTQT9BVjEyQEFCVlZhbHVlQDJA
QFogQCA2NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdDo6ZHluYW1pY0Nh
c3QoY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/ZXF1YWxASWRlbnRpZmllckBLSlNAQENB
X05QQVVSZXBAVVN0cmluZ0AyQFBCREBaIEAgNjUgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZp
ZXI6OmVxdWFsKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqLCBjaGFyIGNvbnN0ICopDQotCT9l
cXVhbEBJZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJVVUNoYXJAMkBIQFog
QCA2NiBOT05BTUUgOyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtKUzo6VVN0
cmluZzo6UmVwICosIHN0cnVjdCBLSlM6OlVDaGFyIGNvbnN0ICosIGludCkNCi0JP2V2YWx1YXRl
QEludGVycHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBBQlZWYWx1
ZUAyQDBAWiBAIDY3IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6OkludGVycHJl
dGVyOjpldmFsdWF0ZShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1
ZSBjb25zdCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0JP2V2YWx1YXRlQEludGVy
cHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBIMEFCVlZhbHVlQDJA
QFogQCA2OCBOT05BTUUgOyBjbGFzcyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJbnRlcnByZXRlcjo6
ZXZhbHVhdGUoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCwgY2xhc3MgS0pTOjpVU3Ry
aW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JP2ZpbmRFbnRyeUBMb29r
dXBAS0pTQEBTQVBCVkhhc2hFbnRyeUAyQFBCVkhhc2hUYWJsZUAyQEFCVklkZW50aWZpZXJAMkBA
WiBAIDY5IE5PTkFNRSA7IGNsYXNzIEtKUzo6SGFzaEVudHJ5IGNvbnN0ICogS0pTOjpMb29rdXA6
OmZpbmRFbnRyeShjbGFzcyBLSlM6Okhhc2hUYWJsZSBjb25zdCAqLCBjbGFzcyBLSlM6OklkZW50
aWZpZXIgY29uc3QgJikNCi0JP2Zyb21AVVN0cmluZ0BLSlNAQFNBP0FWMTJASkBaIEAgNzAgTk9O
QU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6VVN0cmluZzo6ZnJvbShsb25nKQ0KLQk/Z2V0
QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEBaIEAgNzEgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Z2V0
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBj
b25zdA0KLQk/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJA
SUBaIEAgNzIgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Z2V0KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2dldEBQcm9wZXJ0
eU1hcEBLSlNAQFFCRVBBVlZhbHVlSW1wQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzMgTk9OQU1F
IDsgY2xhc3MgS0pTOjpWYWx1ZUltcCAqIEtKUzo6UHJvcGVydHlNYXA6OmdldChjbGFzcyBLSlM6
OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCi0JP2dsb2JhbEV4ZWNASW50ZXJwcmV0ZXJAS0pT
QEBRQUVQQVZFeGVjU3RhdGVAMkBYWiBAIDc0IE5PTkFNRSA7IGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICogS0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFsRXhlYyh2b2lkKQ0KLQk/Z2xvYmFsT2JqZWN0QElu
dGVycHJldGVyQEtKU0BAUUJFQUFWT2JqZWN0QDJAWFogQCA3NSBOT05BTUUgOyBjbGFzcyBLSlM6
Ok9iamVjdCAmIEtKUzo6SW50ZXJwcmV0ZXI6Omdsb2JhbE9iamVjdCh2b2lkKSBjb25zdA0KLQk/
aGFzSW5zdGFuY2VAT2JqZWN0SW1wQEtKU0BAVUFFP0FWQm9vbGVhbkAyQFBBVkV4ZWNTdGF0ZUAy
QEFCVlZhbHVlQDJAQFogQCA3NiBOT05BTUUgOyBjbGFzcyBLSlM6OkJvb2xlYW4gS0pTOjpPYmpl
Y3RJbXA6Omhhc0luc3RhbmNlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6VmFs
dWUgY29uc3QgJikNCi0JP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0
YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzcgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6
aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVf
TlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDc4IE5PTkFNRSA7IGJvb2wgS0pT
OjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNz
IEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/aGFzT3duUHJvcGVydHlAT2JqZWN0
SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA3OSBOT05BTUUgOyBib29sIEtKUzo6
T2JqZWN0SW1wOjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25l
ZCBpbnQpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0
ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDgwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhh
c1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBj
b25zdCAmKSBjb25zdA0KLQk/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3Rh
dGVAMkBJQFogQCA4MSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNQcm9wZXJ0eShjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBP
YmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDgy
IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/aGFzUHJv
cGVydHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4MyBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0SW1wOjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
LCB1bnNpZ25lZCBpbnQpIGNvbnN0DQotCT9pbXBBdEBMaXN0QEtKU0BAUUJFUEFWVmFsdWVJbXBA
MkBIQFogQCA4NCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlSW1wICogS0pTOjpMaXN0OjppbXBB
dChpbnQpIGNvbnN0DQotCT9pbXBsZW1lbnRzQ2FsbEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAg
ODUgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0NhbGwodm9pZCkgY29u
c3QNCi0JP2ltcGxlbWVudHNDb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUJFX05YWiBAIDg2IE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmltcGxlbWVudHNDb25zdHJ1Y3Qodm9pZCkgY29u
c3QNCi0JP2ltcGxlbWVudHNIYXNJbnN0YW5jZUBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgODcg
Tk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0hhc0luc3RhbmNlKHZvaWQp
IGNvbnN0DQotCT9pbmNTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDg4
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5jU3RhdGVtZW50Q291bnQodm9pZCkN
Ci0JP2luaGVyaXRzQE9iamVjdEltcEBLSlNAQFFCRV9OUEJVQ2xhc3NJbmZvQDJAQFogQCA4OSBO
T05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbmhlcml0cyhzdHJ1Y3QgS0pTOjpDbGFzc0lu
Zm8gY29uc3QgKikgY29uc3QNCi0JP2luaXRHbG9iYWxPYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBR
QUVYWFogQCA5MCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmluaXRHbG9iYWxPYmpl
Y3Qodm9pZCkNCi0JP2lzTnVsbEBVU3RyaW5nQEtKU0BAUUJFX05YWiBAIDkxIE5PTkFNRSA7IGJv
b2wgS0pTOjpVU3RyaW5nOjppc051bGwodm9pZCkgY29uc3QNCi0JP2xlbmd0aFByb3BlcnR5QEtK
U0BAWUFBQlZJZGVudGlmaWVyQDFAWFogQCA5MiBOT05BTUUgOyBjbGFzcyBLSlM6OklkZW50aWZp
ZXIgY29uc3QgJiBLSlM6Omxlbmd0aFByb3BlcnR5KHZvaWQpDQotCT9sZXhpY2FsSW50ZXJwcmV0
ZXJARXhlY1N0YXRlQEtKU0BAUUJFUEFWSW50ZXJwcmV0ZXJAMkBYWiBAIDkzIE5PTkFNRSA7IGNs
YXNzIEtKUzo6SW50ZXJwcmV0ZXIgKiBLSlM6OkV4ZWNTdGF0ZTo6bGV4aWNhbEludGVycHJldGVy
KHZvaWQpIGNvbnN0DQotCT9sb2NrQEludGVycHJldGVyQEtKU0BAU0FYWFogQCA5NCBOT05BTUUg
OyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmxvY2sodm9pZCkNCi0JP21hcmtAT2JqZWN0SW1wQEtK
U0BAVUFFWFhaIEAgOTUgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6bWFyayh2b2lkKQ0K
LQk/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDk2IE5PTkFNRSA7IGJvb2wgS0pTOjpW
YWx1ZUltcDo6bWFya2VkKHZvaWQpIGNvbnN0DQotCT9tZXNzYWdlUHJvcGVydHlAS0pTQEBZQUFC
VklkZW50aWZpZXJAMUBYWiBAIDk3IE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmIEtKUzo6bWVzc2FnZVByb3BlcnR5KHZvaWQpDQotCT9wcm9wTGlzdEBPYmplY3RAS0pTQEBR
QUU/QVZSZWZlcmVuY2VMaXN0QDJAUEFWRXhlY1N0YXRlQDJAX05AWiBAIDk4IE5PTkFNRSA7IGNs
YXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgYm9vbCkNCi0JP3Byb3BMaXN0QE9iamVjdEltcEBLSlNAQFVBRT9BVlJlZmVy
ZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgOTkgTk9OQU1FIDsgY2xhc3MgS0pTOjpS
ZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0SW1wOjpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCBib29sKQ0KLQk/cHJvdG90eXBlQE9iamVjdEltcEBLSlNAQFFCRT9BVlZhbHVlQDJAWFog
QCAxMDAgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6cHJvdG90eXBl
KHZvaWQpIGNvbnN0DQotCT9wdXNoQFNjb3BlQ2hhaW5AS0pTQEBRQUVYQUJWMTJAQFogQCAxMDEg
Tk9OQU1FIDsgdm9pZCBLSlM6OlNjb3BlQ2hhaW46OnB1c2goY2xhc3MgS0pTOjpTY29wZUNoYWlu
IGNvbnN0ICYpDQotCT9wdXNoQFNjb3BlQ2hhaW5AS0pTQEBRQUVYUEFWT2JqZWN0SW1wQDJAQFog
QCAxMDIgTk9OQU1FIDsgdm9pZCBLSlM6OlNjb3BlQ2hhaW46OnB1c2goY2xhc3MgS0pTOjpPYmpl
Y3RJbXAgKikNCi0JP3B1dEBPYmplY3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUJWSWRl
bnRpZmllckAyQEFCVlZhbHVlQDJASEBaIEAgMTAzIE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJ
bXA6OnB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29u
c3QgJiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmLCBpbnQpDQotCT9wdXRAT2JqZWN0SW1wQEtK
U0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQElBQlZWYWx1ZUAyQEhAWiBAIDEwNCBOT05BTUUgOyB2b2lk
IEtKUzo6T2JqZWN0SW1wOjpwdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50
LCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGludCkNCi0JP3B1dERpcmVjdEBPYmplY3RJbXBA
S0pTQEBRQUVYQUJWSWRlbnRpZmllckAyQEhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBLSlM6Ok9i
amVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBpbnQsIGlu
dCkNCi0JP3B1dERpcmVjdEBPYmplY3RJbXBAS0pTQEBRQUVYQUJWSWRlbnRpZmllckAyQFBBVlZh
bHVlSW1wQDJASEBaIEAgMTA2IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dERpcmVj
dChjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1ZUltcCAqLCBp
bnQpDQotCT9yZWZWYWx1ZXNATGlzdEBLSlNAQEFBRVhYWiBAIDEwNyBOT05BTUUgOyB2b2lkIEtK
Uzo6TGlzdDo6cmVmVmFsdWVzKHZvaWQpDQotCT9yZWxlYXNlQExpc3RAS0pTQEBBQUVYWFogQCAx
MDggTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OnJlbGVhc2Uodm9pZCkNCi0JP3JlbGVhc2VAU2Nv
cGVDaGFpbkBLSlNAQEFBRVhYWiBAIDEwOSBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6
cmVsZWFzZSh2b2lkKQ0KLQk/cmVzZXRTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFB
RVhYWiBAIDExMCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnJlc2V0U3RhdGVtZW50
Q291bnQodm9pZCkNCi0JP3Jlc3RvcmVAUHJvcGVydHlNYXBAS0pTQEBRQUVYQUJWU2F2ZWRQcm9w
ZXJ0aWVzQDJAQFogQCAxMTEgTk9OQU1FIDsgdm9pZCBLSlM6OlByb3BlcnR5TWFwOjpyZXN0b3Jl
KGNsYXNzIEtKUzo6U2F2ZWRQcm9wZXJ0aWVzIGNvbnN0ICYpDQotCT9yZXN0b3JlQnVpbHRpbnNA
SW50ZXJwcmV0ZXJAS0pTQEBRQUVYQUJWU2F2ZWRCdWlsdGluc0AyQEBaIEAgMTEyIE5PTkFNRSA7
IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzdG9yZUJ1aWx0aW5zKGNsYXNzIEtKUzo6U2F2ZWRC
dWlsdGlucyBjb25zdCAmKQ0KLQk/c2F2ZUBQcm9wZXJ0eU1hcEBLSlNAQFFCRVhBQVZTYXZlZFBy
b3BlcnRpZXNAMkBAWiBAIDExMyBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnNhdmUo
Y2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMgJikgY29uc3QNCi0JP3NhdmVCdWlsdGluc0BJbnRl
cnByZXRlckBLSlNAQFFCRVhBQVZTYXZlZEJ1aWx0aW5zQDJAQFogQCAxMTQgTk9OQU1FIDsgdm9p
ZCBLSlM6OkludGVycHJldGVyOjpzYXZlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5z
ICYpIGNvbnN0DQotCT9zZXRDb21wYXRNb2RlQEludGVycHJldGVyQEtKU0BAUUFFWFc0Q29tcGF0
TW9kZUAxMkBAWiBAIDExNSBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNldENvbXBh
dE1vZGUoZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2RlKQ0KLQk/c2V0UHJvdG90eXBl
QE9iamVjdEltcEBLSlNAQFFBRVhBQlZWYWx1ZUAyQEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgS0pT
OjpPYmplY3RJbXA6OnNldFByb3RvdHlwZShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQotCT9z
ZXRTaG91bGRQcmludEV4Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQVhfTkBaIEAgMTE3IE5P
TkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJv
b2wpDQotCT9zaG91bGRQcmludEV4Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQV9OWFogQCAx
MTggTk9OQU1FIDsgYm9vbCBLSlM6OkludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMo
dm9pZCkNCi0JP3RvQXJyYXlJbmRleEBVU3RyaW5nQEtKU0BAUUJFSVBBX05AWiBAIDExOSBOT05B
TUUgOyB1bnNpZ25lZCBpbnQgS0pTOjpVU3RyaW5nOjp0b0FycmF5SW5kZXgoYm9vbCAqKSBjb25z
dA0KLQk/dG9Cb29sZWFuQE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQFogQCAx
MjAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6dG9Cb29sZWFuKGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICopIGNvbnN0DQotCT90b0ludDMyQFZhbHVlSW1wQEtKU0BAUUJFSlBBVkV4ZWNTdGF0
ZUAyQEBaIEAgMTIxIE5PTkFNRSA7IGxvbmcgS0pTOjpWYWx1ZUltcDo6dG9JbnQzMihjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9JbnRlZ2VyQFZhbHVlSW1wQEtKU0BAUUJFTlBB
VkV4ZWNTdGF0ZUAyQEBaIEAgMTIyIE5PTkFNRSA7IGRvdWJsZSBLSlM6OlZhbHVlSW1wOjp0b0lu
dGVnZXIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvTnVtYmVyQE9iamVjdElt
cEBLSlNAQFVCRU5QQVZFeGVjU3RhdGVAMkBAWiBAIDEyMyBOT05BTUUgOyBkb3VibGUgS0pTOjpP
YmplY3RJbXA6OnRvTnVtYmVyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b09i
amVjdEBPYmplY3RJbXBAS0pTQEBVQkU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWiBAIDEy
NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6dG9PYmplY3QoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvUHJpbWl0aXZlQE9iamVjdEltcEBLSlNA
QFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFogQCAxMjUgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6dG9QcmltaXRpdmUoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgZW51bSBLSlM6OlR5cGUpIGNvbnN0DQotCT90b1N0cmluZ0BPYmplY3RJbXBA
S0pTQEBVQkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFogQCAxMjYgTk9OQU1FIDsgY2xh
c3MgS0pTOjpVU3RyaW5nIEtKUzo6T2JqZWN0SW1wOjp0b1N0cmluZyhjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqKSBjb25zdA0KLQk/dG9VSW50MTZAVmFsdWVJbXBAS0pTQEBRQkVHUEFWRXhlY1N0YXRl
QDJAQFogQCAxMjcgTk9OQU1FIDsgdW5zaWduZWQgc2hvcnQgS0pTOjpWYWx1ZUltcDo6dG9VSW50
MTYoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvVUludDMyQFZhbHVlSW1wQEtK
U0BARUJFX05BQUlAWiBAIDEyOCBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6OnRvVUludDMy
KHVuc2lnbmVkIGludCAmKSBjb25zdA0KLQk/dG9VSW50MzJAVmFsdWVJbXBAS0pTQEBRQkVLUEFW
RXhlY1N0YXRlQDJAQFogQCAxMjkgTk9OQU1FIDsgdW5zaWduZWQgbG9uZyBLSlM6OlZhbHVlSW1w
Ojp0b1VJbnQzMihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9VTG9uZ0BVU3Ry
aW5nQEtKU0BAUUJFS1BBX05AWiBAIDEzMCBOT05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6VVN0
cmluZzo6dG9VTG9uZyhib29sICopIGNvbnN0DQotCT90eXBlQE9iamVjdEltcEBLSlNAQFVCRT9B
VzRUeXBlQDJAWFogQCAxMzEgTk9OQU1FIDsgZW51bSBLSlM6OlR5cGUgS0pTOjpPYmplY3RJbXA6
OnR5cGUodm9pZCkgY29uc3QNCi0JP3VubG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTMy
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dW5sb2NrKHZvaWQpDQotCT92YWx1ZUBT
dHJpbmdAS0pTQEBRQkU/QVZVU3RyaW5nQDJAWFogQCAxMzMgTk9OQU1FIDsgY2xhc3MgS0pTOjpV
U3RyaW5nIEtKUzo6U3RyaW5nOjp2YWx1ZSh2b2lkKSBjb25zdA0KLQk/dmlydHVhbF9ob29rQElu
dGVycHJldGVyQEtKU0BATUFFWEhQQVhAWiBAIDEzNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJw
cmV0ZXI6OnZpcnR1YWxfaG9vayhpbnQsIHZvaWQgKikNCi0Ja2pzX3N0cnRvZCBAIDEzNSBOT05B
TUUNCi0JP2NsYXNzSW5mb0BPYmplY3RAS0pTQEBRQkVQQlVDbGFzc0luZm9AMkBYWiBAIDEzNiBO
T05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdDo6Y2xhc3NJ
bmZvKHZvaWQpIGNvbnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4
ZWNTdGF0ZUAyQElAWiBAIDEzNyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9w
ZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID8/
MEJvb2xlYW5AS0pTQEBRQUVAX05AWiBAIDEgTk9OQU1FIDsgS0pTOjpCb29sZWFuOjpCb29sZWFu
KGJvb2wpDQorICAgID8/MEludGVycHJldGVyQEtKU0BAUUFFQEFCVk9iamVjdEAxQEBaIEAgMiBO
T05BTUUgOyBLSlM6OkludGVycHJldGVyOjpJbnRlcnByZXRlcihjbGFzcyBLSlM6Ok9iamVjdCBj
b25zdCAmKQ0KKyAgICA/PzBMaXN0QEtKU0BAUUFFQFhaIEAgMyBOT05BTUUgOyBLSlM6Okxpc3Q6
Okxpc3Qodm9pZCkNCisgICAgPz8wTnVsbEBLSlNAQFFBRUBYWiBAIDQgTk9OQU1FIDsgS0pTOjpO
dWxsOjpOdWxsKHZvaWQpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBIQFogQCA1IE5PTkFNRSA7
IEtKUzo6TnVtYmVyOjpOdW1iZXIoaW50KQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBRQUVASUBaIEAg
NiBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKHVuc2lnbmVkIGludCkNCisgICAgPz8wTnVt
YmVyQEtKU0BAUUFFQEpAWiBAIDcgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihsb25nKQ0K
KyAgICA/PzBOdW1iZXJAS0pTQEBRQUVAS0BaIEAgOCBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVt
YmVyKHVuc2lnbmVkIGxvbmcpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBOQFogQCA5IE5PTkFN
RSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIoZG91YmxlKQ0KKyAgICA/PzBPYmplY3RJbXBAS0pTQEBR
QUVAQUJWT2JqZWN0QDFAQFogQCAxMCBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6T2JqZWN0SW1w
KGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYpDQorICAgID8/ME9iamVjdEltcEBLSlNAQFFBRUBY
WiBAIDExIE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjpPYmplY3RJbXAodm9pZCkNCisgICAgPz8w
UnVudGltZU9iamVjdEltcEBLSlNAQFFBRUBQQVZJbnN0YW5jZUBCaW5kaW5nc0AxQF9OQFogQCAx
MiBOT05BTUUgOyBLSlM6OlJ1bnRpbWVPYmplY3RJbXA6OlJ1bnRpbWVPYmplY3RJbXAoY2xhc3Mg
S0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKiwgYm9vbCkNCisgICAgPz8wU3RyaW5nQEtKU0BAUUFF
QEFCVlVTdHJpbmdAMUBAWiBAIDEzIE5PTkFNRSA7IEtKUzo6U3RyaW5nOjpTdHJpbmcoY2xhc3Mg
S0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID8/MFVTdHJpbmdAS0pTQEBRQUVAQUJWMDFAMEBa
IEAgMTQgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNsYXNzIEtKUzo6VVN0cmluZyBj
b25zdCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCisgICAgPz8wVVN0cmluZ0BLSlNA
QFFBRUBEQFogQCAxNSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2hhcikNCisgICAg
Pz8wVVN0cmluZ0BLSlNAQFFBRUBQQVVVQ2hhckAxQEhfTkBaIEAgMTYgTk9OQU1FIDsgS0pTOjpV
U3RyaW5nOjpVU3RyaW5nKHN0cnVjdCBLSlM6OlVDaGFyICosIGludCwgYm9vbCkNCisgICAgPz8w
VVN0cmluZ0BLSlNAQFFBRUBQQkRAWiBAIDE3IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmlu
ZyhjaGFyIGNvbnN0ICopDQorICAgID8/MFVTdHJpbmdAS0pTQEBRQUVAUEJVVUNoYXJAMUBIQFog
QCAxOCBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoc3RydWN0IEtKUzo6VUNoYXIgY29u
c3QgKiwgaW50KQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQFhaIEAgMTkgTk9OQU1FIDsgS0pT
OjpVU3RyaW5nOjpVU3RyaW5nKHZvaWQpDQorICAgID8/MFVuZGVmaW5lZEBLSlNAQFFBRUBYWiBA
IDIwIE5PTkFNRSA7IEtKUzo6VW5kZWZpbmVkOjpVbmRlZmluZWQodm9pZCkNCisgICAgPz8wVmFs
dWVAS0pTQEBRQUVAQUJWMDFAQFogQCAyMSBOT05BTUUgOyBLSlM6OlZhbHVlOjpWYWx1ZShjbGFz
cyBLSlM6OlZhbHVlIGNvbnN0ICYpDQorICAgID8/MFZhbHVlQEtKU0BAUUFFQFBBVlZhbHVlSW1w
QDFAQFogQCAyMiBOT05BTUUgOyBLSlM6OlZhbHVlOjpWYWx1ZShjbGFzcyBLSlM6OlZhbHVlSW1w
ICopDQorICAgID8/MUludGVycHJldGVyQEtKU0BAVUFFQFhaIEAgMjMgTk9OQU1FIDsgS0pTOjpJ
bnRlcnByZXRlcjo6fkludGVycHJldGVyKHZvaWQpDQorICAgID8/MU9iamVjdEltcEBLSlNAQFVB
RUBYWiBAIDI0IE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjp+T2JqZWN0SW1wKHZvaWQpDQorICAg
ID8/MVZhbHVlQEtKU0BAUUFFQFhaIEAgMjUgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6flZhbHVlKHZv
aWQpDQorICAgID8/MlZhbHVlSW1wQEtKU0BAU0FQQVhJQFogQCAyNiBOT05BTUUgOyB2b2lkICog
S0pTOjpWYWx1ZUltcDo6b3BlcmF0b3IgbmV3KHVuc2lnbmVkIGludCkNCisgICAgPz8zVmFsdWVJ
bXBAS0pTQEBTQVhQQVhAWiBAIDI3IE5PTkFNRSA7IHZvaWQgS0pTOjpWYWx1ZUltcDo6b3BlcmF0
b3IgZGVsZXRlKHZvaWQgKikNCisgICAgPz80Q1N0cmluZ0BLSlNAQFFBRUFBVjAxQFBCREBaIEAg
MjggTk9OQU1FIDsgY2xhc3MgS0pTOjpDU3RyaW5nICYgS0pTOjpDU3RyaW5nOjpvcGVyYXRvcj0o
Y2hhciBjb25zdCAqKQ0KKyAgICA/PzRMaXN0QEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAyOSBO
T05BTUUgOyBjbGFzcyBLSlM6Okxpc3QgJiBLSlM6Okxpc3Q6Om9wZXJhdG9yPShjbGFzcyBLSlM6
Okxpc3QgY29uc3QgJikNCisgICAgPz80U2NvcGVDaGFpbkBLSlNAQFFBRUFBVjAxQEFCVjAxQEBa
IEAgMzAgTk9OQU1FIDsgY2xhc3MgS0pTOjpTY29wZUNoYWluICYgS0pTOjpTY29wZUNoYWluOjpv
cGVyYXRvcj0oY2xhc3MgS0pTOjpTY29wZUNoYWluIGNvbnN0ICYpDQorICAgID8/NFVTdHJpbmdA
S0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDMxIE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyAm
IEtKUzo6VVN0cmluZzo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KKyAg
ICA/PzRWYWx1ZUBLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAgMzIgTk9OQU1FIDsgY2xhc3MgS0pT
OjpWYWx1ZSAmIEtKUzo6VmFsdWU6Om9wZXJhdG9yPShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYp
DQorICAgID8/OEtKU0BAWUFfTkFCVlVTdHJpbmdAMEBQQkRAWiBAIDMzIE5PTkFNRSA7IGJvb2wg
S0pTOjpvcGVyYXRvcj09KGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBjaGFyIGNvbnN0ICop
DQorICAgID9OUE5fU2V0RXhjZXB0aW9uV2l0aFVURjhAQFlBWFBBVU5QT2JqZWN0QEBQQkRIQFog
QCAzNCBOT05BTUUgOyB2b2lkIE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOChzdHJ1Y3QgTlBPYmpl
Y3QgKiwgY2hhciBjb25zdCAqLCBpbnQpDQorICAgID9hZGRASWRlbnRpZmllckBLSlNAQENBUEFV
UmVwQFVTdHJpbmdAMkBQQVUzNDJAQFogQCAzNSBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5n
OjpSZXAgKiBLSlM6OklkZW50aWZpZXI6OmFkZChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKikN
CisgICAgP2FkZEBJZGVudGlmaWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBCREBaIEAgMzYg
Tk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpJZGVudGlmaWVyOjphZGQo
Y2hhciBjb25zdCAqKQ0KKyAgICA/YXBwZW5kQExpc3RAS0pTQEBRQUVYUEFWVmFsdWVJbXBAMkBA
WiBAIDM3IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjphcHBlbmQoY2xhc3MgS0pTOjpWYWx1ZUlt
cCAqKQ0KKyAgICA/YXBwZW5kQFVTdHJpbmdAS0pTQEBRQUVBQVYxMkBBQlYxMkBAWiBAIDM4IE5P
TkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyAmIEtKUzo6VVN0cmluZzo6YXBwZW5kKGNsYXNzIEtK
Uzo6VVN0cmluZyBjb25zdCAmKQ0KKyAgICA/YXBwZW5kQFVTdHJpbmdAS0pTQEBRQUVBQVYxMkBQ
QkRAWiBAIDM5IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyAmIEtKUzo6VVN0cmluZzo6YXBw
ZW5kKGNoYXIgY29uc3QgKikNCisgICAgP2FzY2lpQFVTdHJpbmdAS0pTQEBRQkVQQURYWiBAIDQw
IE5PTkFNRSA7IGNoYXIgKiBLSlM6OlVTdHJpbmc6OmFzY2lpKHZvaWQpIGNvbnN0DQorICAgID9h
dHRhY2hOdWxsQFVTdHJpbmdAS0pTQEBBQUVYWFogQCA0MSBOT05BTUUgOyB2b2lkIEtKUzo6VVN0
cmluZzo6YXR0YWNoTnVsbCh2b2lkKQ0KKyAgICA/YnVpbHRpbkFycmF5QEludGVycHJldGVyQEtK
U0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0MiBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6
OkludGVycHJldGVyOjpidWlsdGluQXJyYXkodm9pZCkgY29uc3QNCisgICAgP2J1aWx0aW5GdW5j
dGlvbkBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDMgTk9OQU1FIDsgY2xh
c3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbkZ1bmN0aW9uKHZvaWQpIGNv
bnN0DQorICAgID9idWlsdGluT2JqZWN0QEludGVycHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJA
WFogQCA0NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJldGVyOjpidWls
dGluT2JqZWN0KHZvaWQpIGNvbnN0DQorICAgID9idWlsdGluT2JqZWN0UHJvdG90eXBlQEludGVy
cHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0NSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9i
amVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGluT2JqZWN0UHJvdG90eXBlKHZvaWQpIGNvbnN0
DQorICAgID9jYWxsQE9iamVjdEBLSlNAQFFBRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUFW
MTJAQUJWTGlzdEAyQEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVj
dDo6Y2FsbChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Ok9iamVjdCAmLCBjbGFz
cyBLSlM6Okxpc3QgY29uc3QgJikNCisgICAgP2NhbGxAT2JqZWN0SW1wQEtKU0BAVUFFP0FWVmFs
dWVAMkBQQVZFeGVjU3RhdGVAMkBBQVZPYmplY3RAMkBBQlZMaXN0QDJAQFogQCA0NyBOT05BTUUg
OyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpjYWxsKGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIGNsYXNzIEtKUzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAg
ICA/Y2FuUHV0QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEBaIEAgNDggTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6Y2FuUHV0KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAg
ICA/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgNDkgTk9OQU1F
IDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pTOjpPYmplY3Q6OmNsYXNzSW5mbyh2
b2lkKSBjb25zdA0KKyAgICA/Y2xhc3NJbmZvQE9iamVjdEltcEBLSlNAQFVCRVBCVUNsYXNzSW5m
b0AyQFhaIEAgNTAgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pTOjpP
YmplY3RJbXA6OmNsYXNzSW5mbyh2b2lkKSBjb25zdA0KKyAgICA/Y2xhc3NOYW1lQE9iamVjdElt
cEBLSlNAQFVCRT9BVlVTdHJpbmdAMkBYWiBAIDUxIE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmlu
ZyBLSlM6Ok9iamVjdEltcDo6Y2xhc3NOYW1lKHZvaWQpIGNvbnN0DQorICAgID9jb2xsZWN0QENv
bGxlY3RvckBLSlNAQFNBX05YWiBAIDUyIE5PTkFNRSA7IGJvb2wgS0pTOjpDb2xsZWN0b3I6OmNv
bGxlY3Qodm9pZCkNCisgICAgP2NvbXBhdE1vZGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVc0Q29t
cGF0TW9kZUAxMkBYWiBAIDUzIE5PTkFNRSA7IGVudW0gS0pTOjpJbnRlcnByZXRlcjo6Q29tcGF0
TW9kZSBLSlM6OkludGVycHJldGVyOjpjb21wYXRNb2RlKHZvaWQpIGNvbnN0DQorICAgID9jb25z
dHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUFFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWTGlz
dEAyQEBaIEAgNTQgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJbXA6OmNv
bnN0cnVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJikN
CisgICAgP2NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZPYmplY3RAMkBQQVZFeGVjU3Rh
dGVAMkBBQlZMaXN0QDJAQUJWVVN0cmluZ0AyQEhAWiBAIDU1IE5PTkFNRSA7IGNsYXNzIEtKUzo6
T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjpjb25zdHJ1Y3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
Y2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBpbnQp
DQorICAgID9jb3B5VGFpbEBMaXN0QEtKU0BAUUJFP0FWMTJAWFogQCA1NiBOT05BTUUgOyBjbGFz
cyBLSlM6Okxpc3QgS0pTOjpMaXN0Ojpjb3B5VGFpbCh2b2lkKSBjb25zdA0KKyAgICA/Y3JlYXRl
QEVycm9yQEtKU0BAU0E/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBXNEVycm9yVHlwZUAyQFBC
REhIUEJWVVN0cmluZ0AyQEBaIEAgNTcgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpF
cnJvcjo6Y3JlYXRlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpFcnJvclR5cGUs
IGNoYXIgY29uc3QgKiwgaW50LCBpbnQsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAqKQ0KKyAg
ICA/Y3JlYXRlQFJlcEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEFVVUNoYXJAM0BIQFogQCA1OCBO
T05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3Jl
YXRlKHN0cnVjdCBLSlM6OlVDaGFyICosIGludCkNCisgICAgP2NyZWF0ZUJpbmRpbmdGb3JMYW5n
dWFnZUluc3RhbmNlQEluc3RhbmNlQEJpbmRpbmdzQEtKU0BAU0FQQVYxMjNAVzRCaW5kaW5nTGFu
Z3VhZ2VAMTIzQFBBWFBCVlJvb3RPYmplY3RAMjNAQFogQCA1OSBOT05BTUUgOyBjbGFzcyBLSlM6
OkJpbmRpbmdzOjpJbnN0YW5jZSAqIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpjcmVhdGVCaW5k
aW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZShlbnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpCaW5k
aW5nTGFuZ3VhZ2UsIHZvaWQgKiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25z
dCAqKQ0KKyAgICA/Y3JlYXRlQ29weWluZ0BSZXBAVVN0cmluZ0BLSlNAQFNBUEFVMTIzQFBCVVVD
aGFyQDNASEBaIEAgNjAgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpV
U3RyaW5nOjpSZXA6OmNyZWF0ZUNvcHlpbmcoc3RydWN0IEtKUzo6VUNoYXIgY29uc3QgKiwgaW50
KQ0KKyAgICA/Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlQEluc3RhbmNlQEJpbmRpbmdz
QEtKU0BAU0FQQVhQQVZFeGVjU3RhdGVAM0BXNEJpbmRpbmdMYW5ndWFnZUAxMjNAQUJWT2JqZWN0
QDNAUEJWUm9vdE9iamVjdEAyM0AzQFogQCA2MSBOT05BTUUgOyB2b2lkICogS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2U6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZShjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2Us
IGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYsIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgY29uc3QgKiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAg
ICA/Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlQEludGVycHJldGVyQEtKU0BAVUFFUEFY
UEFWRXhlY1N0YXRlQDJAVzRCaW5kaW5nTGFuZ3VhZ2VASW5zdGFuY2VAQmluZGluZ3NAMkBBQlZP
YmplY3RAMkBQQlZSb290T2JqZWN0QDYyQDNAWiBAIDYyIE5PTkFNRSA7IHZvaWQgKiBLSlM6Oklu
dGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUoY2xhc3MgS0pTOjpFeGVj
U3RhdGUgKiwgZW51bSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6QmluZGluZ0xhbmd1YWdlLCBj
bGFzcyBLSlM6Ok9iamVjdCBjb25zdCAmLCBjbGFzcyBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0
IGNvbnN0ICosIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKikNCisgICAg
P2NyZWF0ZVJ1bnRpbWVPYmplY3RASW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQT9BVk9iamVjdEAz
QFc0QmluZGluZ0xhbmd1YWdlQDEyM0BQQVhQQlZSb290T2JqZWN0QDIzQEBaIEAgNjMgTk9OQU1F
IDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZVJ1bnRp
bWVPYmplY3QoZW51bSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6QmluZGluZ0xhbmd1YWdlLCB2
b2lkICosIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKikNCisgICAgP2Rl
ZmF1bHRWYWx1ZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQFc0
VHlwZUAyQEBaIEAgNjQgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6
ZGVmYXVsdFZhbHVlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpUeXBlKSBjb25z
dA0KKyAgICA/ZGVsZXRlQWxsUHJvcGVydGllc0BPYmplY3RJbXBAS0pTQEBRQUVYUEFWRXhlY1N0
YXRlQDJAQFogQCA2NSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpkZWxldGVBbGxQcm9w
ZXJ0aWVzKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopDQorICAgID9kZWxldGVQcm9wZXJ0eUBPYmpl
Y3RJbXBAS0pTQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDY2IE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKQ0KKyAgICA/ZGVsZXRlUHJv
cGVydHlAT2JqZWN0SW1wQEtKU0BAVUFFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA2NyBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCB1bnNpZ25lZCBpbnQpDQorICAgID9kZXJlZlZhbHVlc0BMaXN0QEtKU0BAQUFFWFhaIEAg
NjggTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OmRlcmVmVmFsdWVzKHZvaWQpDQorICAgID9kZXN0
cm95QFJlcEBVU3RyaW5nQEtKU0BAUUFFWFhaIEAgNjkgTk9OQU1FIDsgdm9pZCBLSlM6OlVTdHJp
bmc6OlJlcDo6ZGVzdHJveSh2b2lkKQ0KKyAgICA/ZGlzcGF0Y2hUb09iamVjdEBWYWx1ZUltcEBL
SlNAQFFCRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgNzAgTk9OQU1FIDsgY2xhc3Mg
S0pTOjpPYmplY3QgS0pTOjpWYWx1ZUltcDo6ZGlzcGF0Y2hUb09iamVjdChjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/ZHluYW1pY0Nhc3RAT2JqZWN0QEtKU0BAU0E/QVYxMkBB
QlZWYWx1ZUAyQEBaIEAgNzEgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3Q6
OmR5bmFtaWNDYXN0KGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2VxdWFsQElkZW50
aWZpZXJAS0pTQEBDQV9OUEFVUmVwQFVTdHJpbmdAMkBQQkRAWiBAIDcyIE5PTkFNRSA7IGJvb2wg
S0pTOjpJZGVudGlmaWVyOjplcXVhbChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiwgY2hhciBj
b25zdCAqKQ0KKyAgICA/ZXF1YWxASWRlbnRpZmllckBLSlNAQENBX05QQVVSZXBAVVN0cmluZ0Ay
QFBCVVVDaGFyQDJASEBaIEAgNzMgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZpZXI6OmVxdWFs
KHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqLCBzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBp
bnQpDQorICAgID9ldmFsdWF0ZUBJbnRlcnByZXRlckBLSlNAQFFBRT9BVkNvbXBsZXRpb25AMkBB
QlZVU3RyaW5nQDJAQUJWVmFsdWVAMkAwQFogQCA3NCBOT05BTUUgOyBjbGFzcyBLSlM6OkNvbXBs
ZXRpb24gS0pTOjpJbnRlcnByZXRlcjo6ZXZhbHVhdGUoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0
ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYp
DQorICAgID9ldmFsdWF0ZUBJbnRlcnByZXRlckBLSlNAQFFBRT9BVkNvbXBsZXRpb25AMkBBQlZV
U3RyaW5nQDJASDBBQlZWYWx1ZUAyQEBaIEAgNzUgTk9OQU1FIDsgY2xhc3MgS0pTOjpDb21wbGV0
aW9uIEtKUzo6SW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAm
LCBpbnQsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0
ICYpDQorICAgID9maW5kRW50cnlATG9va3VwQEtKU0BAU0FQQlZIYXNoRW50cnlAMkBQQlZIYXNo
VGFibGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3NiBOT05BTUUgOyBjbGFzcyBLSlM6Okhhc2hF
bnRyeSBjb25zdCAqIEtKUzo6TG9va3VwOjpmaW5kRW50cnkoY2xhc3MgS0pTOjpIYXNoVGFibGUg
Y29uc3QgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpDQorICAgID9mcm9tQFVTdHJp
bmdAS0pTQEBTQT9BVjEyQEpAWiBAIDc3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBLSlM6
OlVTdHJpbmc6OmZyb20obG9uZykNCisgICAgP2dldEBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1
ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDc4IE5PTkFNRSA7IGNsYXNz
IEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmdldChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBj
bGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2dldEBPYmplY3RJbXBA
S0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQElAWiBAIDc5IE5PTkFNRSA7IGNsYXNz
IEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmdldChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1
bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9nZXRAUHJvcGVydHlNYXBAS0pTQEBRQkVQQVZWYWx1
ZUltcEAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDgwIE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWVJ
bXAgKiBLSlM6OlByb3BlcnR5TWFwOjpnZXQoY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYp
IGNvbnN0DQorICAgID9nbG9iYWxFeGVjQEludGVycHJldGVyQEtKU0BAUUFFUEFWRXhlY1N0YXRl
QDJAWFogQCA4MSBOT05BTUUgOyBjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqIEtKUzo6SW50ZXJwcmV0
ZXI6Omdsb2JhbEV4ZWModm9pZCkNCisgICAgP2dsb2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNA
QFFCRUFBVk9iamVjdEAyQFhaIEAgODIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgJiBLSlM6
OkludGVycHJldGVyOjpnbG9iYWxPYmplY3Qodm9pZCkgY29uc3QNCisgICAgP2hhc0luc3RhbmNl
QE9iamVjdEltcEBLSlNAQFVBRT9BVkJvb2xlYW5AMkBQQVZFeGVjU3RhdGVAMkBBQlZWYWx1ZUAy
QEBaIEAgODMgTk9OQU1FIDsgY2xhc3MgS0pTOjpCb29sZWFuIEtKUzo6T2JqZWN0SW1wOjpoYXNJ
bnN0YW5jZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYp
DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBAWiBAIDg0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blBy
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmKSBjb25zdA0KKyAgICA/aGFzT3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBJQFogQCA4NSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0
eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9oYXNP
d25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZp
ZXJAMkBAWiBAIDg2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBj
b25zdA0KKyAgICA/aGFzT3duUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3Rh
dGVAMkBJQFogQCA4NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpoYXNPd25Qcm9wZXJ0
eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9oYXNQ
cm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBA
WiBAIDg4IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/
aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4OSBOT05B
TUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
LCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBV
QkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDkwIE5PTkFNRSA7IGJvb2wg
S0pTOjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNz
IEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0
SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA5MSBOT05BTUUgOyBib29sIEtKUzo6
T2JqZWN0SW1wOjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBp
bnQpIGNvbnN0DQorICAgID9pbXBBdEBMaXN0QEtKU0BAUUJFUEFWVmFsdWVJbXBAMkBIQFogQCA5
MiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlSW1wICogS0pTOjpMaXN0OjppbXBBdChpbnQpIGNv
bnN0DQorICAgID9pbXBsZW1lbnRzQ2FsbEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgOTMgTk9O
QU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0NhbGwodm9pZCkgY29uc3QNCisg
ICAgP2ltcGxlbWVudHNDb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUJFX05YWiBAIDk0IE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmltcGxlbWVudHNDb25zdHJ1Y3Qodm9pZCkgY29uc3QN
CisgICAgP2ltcGxlbWVudHNIYXNJbnN0YW5jZUBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgOTUg
Tk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0hhc0luc3RhbmNlKHZvaWQp
IGNvbnN0DQorICAgID9pbmNTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBA
IDk2IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5jU3RhdGVtZW50Q291bnQodm9p
ZCkNCisgICAgP2luaGVyaXRzQE9iamVjdEltcEBLSlNAQFFCRV9OUEJVQ2xhc3NJbmZvQDJAQFog
QCA5NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbmhlcml0cyhzdHJ1Y3QgS0pTOjpD
bGFzc0luZm8gY29uc3QgKikgY29uc3QNCisgICAgP2luaXRHbG9iYWxPYmplY3RASW50ZXJwcmV0
ZXJAS0pTQEBRQUVYWFogQCA5OCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmluaXRH
bG9iYWxPYmplY3Qodm9pZCkNCisgICAgP2lzTnVsbEBVU3RyaW5nQEtKU0BAUUJFX05YWiBAIDk5
IE5PTkFNRSA7IGJvb2wgS0pTOjpVU3RyaW5nOjppc051bGwodm9pZCkgY29uc3QNCisgICAgP2xl
bmd0aFByb3BlcnR5QEtKU0BAWUFBQlZJZGVudGlmaWVyQDFAWFogQCAxMDAgTk9OQU1FIDsgY2xh
c3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjpsZW5ndGhQcm9wZXJ0eSh2b2lkKQ0KKyAg
ICA/bGV4aWNhbEludGVycHJldGVyQEV4ZWNTdGF0ZUBLSlNAQFFCRVBBVkludGVycHJldGVyQDJA
WFogQCAxMDEgTk9OQU1FIDsgY2xhc3MgS0pTOjpJbnRlcnByZXRlciAqIEtKUzo6RXhlY1N0YXRl
OjpsZXhpY2FsSW50ZXJwcmV0ZXIodm9pZCkgY29uc3QNCisgICAgP2xvY2tASW50ZXJwcmV0ZXJA
S0pTQEBTQVhYWiBAIDEwMiBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmxvY2sodm9p
ZCkNCisgICAgP21hcmtAT2JqZWN0SW1wQEtKU0BAVUFFWFhaIEAgMTAzIE5PTkFNRSA7IHZvaWQg
S0pTOjpPYmplY3RJbXA6Om1hcmsodm9pZCkNCisgICAgP21hcmtlZEBWYWx1ZUltcEBLSlNAQFFC
RV9OWFogQCAxMDQgTk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjptYXJrZWQodm9pZCkgY29u
c3QNCisgICAgP21lc3NhZ2VQcm9wZXJ0eUBLSlNAQFlBQUJWSWRlbnRpZmllckAxQFhaIEAgMTA1
IE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmIEtKUzo6bWVzc2FnZVByb3Bl
cnR5KHZvaWQpDQorICAgID9wcm9wTGlzdEBPYmplY3RAS0pTQEBRQUU/QVZSZWZlcmVuY2VMaXN0
QDJAUEFWRXhlY1N0YXRlQDJAX05AWiBAIDEwNiBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5j
ZUxpc3QgS0pTOjpPYmplY3Q6OnByb3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wp
DQorICAgID9wcm9wTGlzdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZSZWZlcmVuY2VMaXN0QDJAUEFW
RXhlY1N0YXRlQDJAX05AWiBAIDEwNyBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5jZUxpc3Qg
S0pTOjpPYmplY3RJbXA6OnByb3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wpDQor
ICAgID9wcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUJFP0FWVmFsdWVAMkBYWiBAIDEwOCBOT05B
TUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpwcm90b3R5cGUodm9pZCkgY29u
c3QNCisgICAgP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhBQlYxMkBAWiBAIDEwOSBOT05BTUUg
OyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3Qg
JikNCisgICAgP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhQQVZPYmplY3RJbXBAMkBAWiBAIDEx
MCBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6Ok9iamVjdElt
cCAqKQ0KKyAgICA/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQQVZFeGVjU3RhdGVAMkBBQlZJZGVu
dGlmaWVyQDJAQUJWVmFsdWVAMkBIQFogQCAxMTEgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdElt
cDo6cHV0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGludCkNCisgICAgP3B1dEBPYmplY3RJbXBA
S0pTQEBVQUVYUEFWRXhlY1N0YXRlQDJASUFCVlZhbHVlQDJASEBaIEAgMTEyIE5PTkFNRSA7IHZv
aWQgS0pTOjpPYmplY3RJbXA6OnB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBp
bnQsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJiwgaW50KQ0KKyAgICA/cHV0RGlyZWN0QE9iamVj
dEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVyQDJASEhAWiBAIDExMyBOT05BTUUgOyB2b2lkIEtK
Uzo6T2JqZWN0SW1wOjpwdXREaXJlY3QoY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGlu
dCwgaW50KQ0KKyAgICA/cHV0RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVy
QDJAUEFWVmFsdWVJbXBAMkBIQFogQCAxMTQgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6
cHV0RGlyZWN0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVl
SW1wICosIGludCkNCisgICAgP3JlZlZhbHVlc0BMaXN0QEtKU0BAQUFFWFhaIEAgMTE1IE5PTkFN
RSA7IHZvaWQgS0pTOjpMaXN0OjpyZWZWYWx1ZXModm9pZCkNCisgICAgP3JlbGVhc2VATGlzdEBL
SlNAQEFBRVhYWiBAIDExNiBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6cmVsZWFzZSh2b2lkKQ0K
KyAgICA/cmVsZWFzZUBTY29wZUNoYWluQEtKU0BAQUFFWFhaIEAgMTE3IE5PTkFNRSA7IHZvaWQg
S0pTOjpTY29wZUNoYWluOjpyZWxlYXNlKHZvaWQpDQorICAgID9yZW1vdmVBbGxOYXRpdmVSZWZl
cmVuY2VzQFJvb3RPYmplY3RAQmluZGluZ3NAS0pTQEBRQUVYWFogQCAxMTggTk9OQU1FIDsgdm9p
ZCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzKHZv
aWQpDQorICAgID9yZW1vdmVOYXRpdmVSZWZlcmVuY2VAQmluZGluZ3NAS0pTQEBZQVhQQVZPYmpl
Y3RJbXBAMkBAWiBAIDExOSBOT05BTUUgOyB2b2lkIEtKUzo6QmluZGluZ3M6OnJlbW92ZU5hdGl2
ZVJlZmVyZW5jZShjbGFzcyBLSlM6Ok9iamVjdEltcCAqKQ0KKyAgICA/cmVzZXRTdGF0ZW1lbnRD
b3VudEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDEyMCBOT05BTUUgOyB2b2lkIEtKUzo6SW50
ZXJwcmV0ZXI6OnJlc2V0U3RhdGVtZW50Q291bnQodm9pZCkNCisgICAgP3Jlc3RvcmVAUHJvcGVy
dHlNYXBAS0pTQEBRQUVYQUJWU2F2ZWRQcm9wZXJ0aWVzQDJAQFogQCAxMjEgTk9OQU1FIDsgdm9p
ZCBLSlM6OlByb3BlcnR5TWFwOjpyZXN0b3JlKGNsYXNzIEtKUzo6U2F2ZWRQcm9wZXJ0aWVzIGNv
bnN0ICYpDQorICAgID9yZXN0b3JlQnVpbHRpbnNASW50ZXJwcmV0ZXJAS0pTQEBRQUVYQUJWU2F2
ZWRCdWlsdGluc0AyQEBaIEAgMTIyIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVz
dG9yZUJ1aWx0aW5zKGNsYXNzIEtKUzo6U2F2ZWRCdWlsdGlucyBjb25zdCAmKQ0KKyAgICA/c2F2
ZUBQcm9wZXJ0eU1hcEBLSlNAQFFCRVhBQVZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDEyMyBOT05B
TUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnNhdmUoY2xhc3MgS0pTOjpTYXZlZFByb3BlcnRp
ZXMgJikgY29uc3QNCisgICAgP3NhdmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFCRVhBQVZT
YXZlZEJ1aWx0aW5zQDJAQFogQCAxMjQgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpz
YXZlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zICYpIGNvbnN0DQorICAgID9zZXRD
b21wYXRNb2RlQEludGVycHJldGVyQEtKU0BAUUFFWFc0Q29tcGF0TW9kZUAxMkBAWiBAIDEyNSBO
T05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNldENvbXBhdE1vZGUoZW51bSBLSlM6Oklu
dGVycHJldGVyOjpDb21wYXRNb2RlKQ0KKyAgICA/c2V0SW50ZXJwcmV0ZXJAUm9vdE9iamVjdEBC
aW5kaW5nc0BLSlNAQFFBRVhQQVZJbnRlcnByZXRlckAzQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQg
S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIoY2xhc3MgS0pTOjpJbnRl
cnByZXRlciAqKQ0KKyAgICA/c2V0UHJvdG90eXBlQE9iamVjdEltcEBLSlNAQFFBRVhBQlZWYWx1
ZUAyQEBaIEAgMTI3IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnNldFByb3RvdHlwZShj
bGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQorICAgID9zZXRTaG91bGRQcmludEV4Y2VwdGlvbnNA
SW50ZXJwcmV0ZXJAS0pTQEBTQVhfTkBaIEAgMTI4IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnBy
ZXRlcjo6c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJvb2wpDQorICAgID9zaG91bGRQcmludEV4
Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQV9OWFogQCAxMjkgTk9OQU1FIDsgYm9vbCBLSlM6
OkludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnModm9pZCkNCisgICAgP3RvQXJyYXlJ
bmRleEBVU3RyaW5nQEtKU0BAUUJFSVBBX05AWiBAIDEzMCBOT05BTUUgOyB1bnNpZ25lZCBpbnQg
S0pTOjpVU3RyaW5nOjp0b0FycmF5SW5kZXgoYm9vbCAqKSBjb25zdA0KKyAgICA/dG9Cb29sZWFu
QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQFogQCAxMzEgTk9OQU1FIDsgYm9v
bCBLSlM6Ok9iamVjdEltcDo6dG9Cb29sZWFuKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0
DQorICAgID90b0ludDMyQFZhbHVlSW1wQEtKU0BAUUJFSFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTMy
IE5PTkFNRSA7IGludCBLSlM6OlZhbHVlSW1wOjp0b0ludDMyKGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICopIGNvbnN0DQorICAgID90b0ludGVnZXJAVmFsdWVJbXBAS0pTQEBRQkVOUEFWRXhlY1N0YXRl
QDJAQFogQCAxMzMgTk9OQU1FIDsgZG91YmxlIEtKUzo6VmFsdWVJbXA6OnRvSW50ZWdlcihjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9OdW1iZXJAT2JqZWN0SW1wQEtKU0BA
VUJFTlBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM0IE5PTkFNRSA7IGRvdWJsZSBLSlM6Ok9iamVjdElt
cDo6dG9OdW1iZXIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvT2JqZWN0
QE9iamVjdEltcEBLSlNAQFVCRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM1IE5P
TkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjp0b09iamVjdChjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9QcmltaXRpdmVAT2JqZWN0SW1wQEtKU0BA
VUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFR5cGVAMkBAWiBAIDEzNiBOT05BTUUgOyBj
bGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjp0b1ByaW1pdGl2ZShjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkgY29uc3QNCisgICAgP3RvU3RyaW5nQE9iamVjdElt
cEBLSlNAQFVCRT9BVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWiBAIDEzNyBOT05BTUUgOyBj
bGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpPYmplY3RJbXA6OnRvU3RyaW5nKGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICopIGNvbnN0DQorICAgID90b1VJbnQxNkBWYWx1ZUltcEBLSlNAQFFCRUdQQVZFeGVj
U3RhdGVAMkBAWiBAIDEzOCBOT05BTUUgOyB1bnNpZ25lZCBzaG9ydCBLSlM6OlZhbHVlSW1wOjp0
b1VJbnQxNihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9VSW50MzJAVmFs
dWVJbXBAS0pTQEBFQkVfTkFBSUBaIEAgMTM5IE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6
dG9VSW50MzIodW5zaWduZWQgaW50ICYpIGNvbnN0DQorICAgID90b1VJbnQzMkBWYWx1ZUltcEBL
SlNAQFFCRUlQQVZFeGVjU3RhdGVAMkBAWiBAIDE0MCBOT05BTUUgOyB1bnNpZ25lZCBpbnQgS0pT
OjpWYWx1ZUltcDo6dG9VSW50MzIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAg
P3RvVUxvbmdAVVN0cmluZ0BLSlNAQFFCRUtQQV9OQFogQCAxNDEgTk9OQU1FIDsgdW5zaWduZWQg
bG9uZyBLSlM6OlVTdHJpbmc6OnRvVUxvbmcoYm9vbCAqKSBjb25zdA0KKyAgICA/dHlwZUBPYmpl
Y3RJbXBAS0pTQEBVQkU/QVc0VHlwZUAyQFhaIEAgMTQyIE5PTkFNRSA7IGVudW0gS0pTOjpUeXBl
IEtKUzo6T2JqZWN0SW1wOjp0eXBlKHZvaWQpIGNvbnN0DQorICAgID91bmxvY2tASW50ZXJwcmV0
ZXJAS0pTQEBTQVhYWiBAIDE0MyBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnVubG9j
ayh2b2lkKQ0KKyAgICA/dmFsdWVAU3RyaW5nQEtKU0BAUUJFP0FWVVN0cmluZ0AyQFhaIEAgMTQ0
IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBLSlM6OlN0cmluZzo6dmFsdWUodm9pZCkgY29u
c3QNCisgICAgP3ZpcnR1YWxfaG9va0BJbnRlcnByZXRlckBLSlNAQE1BRVhIUEFYQFogQCAxNDUg
Tk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjp2aXJ0dWFsX2hvb2soaW50LCB2b2lkICop
DQorICAgIE5QTl9DcmVhdGVPYmplY3QgQCAxNDYgTk9OQU1FDQorICAgIE5QTl9FdmFsdWF0ZSBA
IDE0NyBOT05BTUUNCisgICAgTlBOX0dldEludElkZW50aWZpZXIgQCAxNDggTk9OQU1FDQorICAg
IE5QTl9HZXRQcm9wZXJ0eSBAIDE0OSBOT05BTUUNCisgICAgTlBOX0dldFN0cmluZ0lkZW50aWZp
ZXIgQCAxNTAgTk9OQU1FDQorICAgIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyBAIDE1MSBOT05B
TUUNCisgICAgTlBOX0hhc01ldGhvZCBAIDE1MiBOT05BTUUNCisgICAgTlBOX0hhc1Byb3BlcnR5
IEAgMTUzIE5PTkFNRQ0KKyAgICBOUE5fSWRlbnRpZmllcklzU3RyaW5nIEAgMTU0IE5PTkFNRQ0K
KyAgICBOUE5fSW50RnJvbUlkZW50aWZpZXIgQCAxNTUgTk9OQU1FDQorICAgIE5QTl9JbnZva2Ug
QCAxNTYgTk9OQU1FDQorICAgIE5QTl9JbnZva2VEZWZhdWx0IEAgMTU3IE5PTkFNRQ0KKyAgICBO
UE5fUmVsZWFzZU9iamVjdCBAIDE1OCBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUgQCAxNTkgTk9OQU1FDQorICAgIE5QTl9SZW1vdmVQcm9wZXJ0eSBAIDE2MCBOT05BTUUNCisg
ICAgTlBOX1JldGFpbk9iamVjdCBAIDE2MSBOT05BTUUNCisgICAgTlBOX1NldEV4Y2VwdGlvbiBA
IDE2MiBOT05BTUUNCisgICAgTlBOX1NldFByb3BlcnR5IEAgMTYzIE5PTkFNRQ0KKyAgICBOUE5f
VVRGOEZyb21JZGVudGlmaWVyIEAgMTY0IE5PTkFNRQ0KKyAgICBfTlBOX0NyZWF0ZVNjcmlwdE9i
amVjdCBAIDE2NSBOT05BTUUNCisgICAga2pzX3N0cnRvZCBAIDE2NiBOT05BTUUNCiANCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ncm91cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWYNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ncm91cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWYJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2dyb3VwL0VBQkkvSmF2YXNjcmlwdENv
cmVVLmRlZgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMzkwICsxLDQzNCBAQA0KIEVYUE9SVFMNCi0J
X1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEtjIEAgMSBOT05BTUUNCi0JX1pOM0tKUzEwSWRlbnRp
ZmllcjNhZGRFUE5TXzdVU3RyaW5nM1JlcEUgQCAyIE5PTkFNRQ0KLQlfWk4zS0pTMTBJZGVudGlm
aWVyNWVxdWFsRVBOU183VVN0cmluZzNSZXBFUEtOU181VUNoYXJFaSBAIDMgTk9OQU1FDQotCV9a
TjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQS2MgQCA0IE5PTkFNRQ0K
LQlfWk4zS0pTMTBTY29wZUNoYWluNHB1c2hFUE5TXzlPYmplY3RJbXBFIEAgNSBOT05BTUUNCi0J
X1pOM0tKUzEwU2NvcGVDaGFpbjdyZWxlYXNlRXYgQCA2IE5PTkFNRQ0KLQlfWk4zS0pTMTBTY29w
ZUNoYWluYVNFUktTMF8gQCA3IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjEwZ2xvYmFs
RXhlY0V2IEAgOCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxMnZpcnR1YWxfaG9va0Vp
UHYgQCA5IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjEzc2V0Q29tcGF0TW9kZUVOUzBf
MTBDb21wYXRNb2RlRSBAIDEwIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjE1cmVzdG9y
ZUJ1aWx0aW5zRVJLTlNfMTNTYXZlZEJ1aWx0aW5zRSBAIDExIE5PTkFNRQ0KLQlfWk4zS0pTMTFJ
bnRlcnByZXRlcjE2aW5pdEdsb2JhbE9iamVjdEV2IEAgMTIgTk9OQU1FDQotCV9aTjNLSlMxMUlu
dGVycHJldGVyMTdpbmNTdGF0ZW1lbnRDb3VudEV2IEAgMTMgTk9OQU1FDQotCV9aTjNLSlMxMUlu
dGVycHJldGVyMTlyZXNldFN0YXRlbWVudENvdW50RXYgQCAxNCBOT05BTUUNCi0JX1pOM0tKUzEx
SW50ZXJwcmV0ZXIyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2IEAgMTUgTk9OQU1FDQotCV9aTjNL
SlMxMUludGVycHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYiBAIDE2IE5PTkFNRQ0K
LQlfWk4zS0pTMTFJbnRlcnByZXRlcjRsb2NrRXYgQCAxNyBOT05BTUUNCi0JX1pOM0tKUzExSW50
ZXJwcmV0ZXI2dW5sb2NrRXYgQCAxOCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZh
bHVhdGVFUktOU183VVN0cmluZ0VSS05TXzVWYWx1ZUVTM18gQCAxOSBOT05BTUUNCi0JX1pOM0tK
UzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VpUzNfUktOU181VmFsdWVFIEAg
MjAgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyQzFFUktOU182T2JqZWN0RSBAIDIxIE5P
TkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlckMyRVJLTlNfNk9iamVjdEUgQCAyMiBOT05BTUUN
Ci0JX1pOM0tKUzExSW50ZXJwcmV0ZXJEMEV2IEAgMjMgTk9OQU1FDQotCV9aTjNLSlMxMUludGVy
cHJldGVyRDFFdiBAIDI0IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlckQyRXYgQCAyNSBO
T05BTUUNCi0JX1pOM0tKUzExUHJvcGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQcm9wZXJ0
aWVzRSBAIDI2IE5PTkFNRQ0KLQlfWk4zS0pTMTRsZW5ndGhQcm9wZXJ0eUV2IEAgMjcgTk9OQU1F
DQotCV9aTjNLSlMxNW1lc3NhZ2VQcm9wZXJ0eUV2IEAgMjggTk9OQU1FDQotCV9aTjNLSlM0TGlz
dDExZGVyZWZWYWx1ZXNFdiBAIDI5IE5PTkFNRQ0KLQlfWk4zS0pTNExpc3Q2YXBwZW5kRVBOU184
VmFsdWVJbXBFIEAgMzAgTk9OQU1FDQotCV9aTjNLSlM0TGlzdDdyZWxlYXNlRXYgQCAzMSBOT05B
TUUNCi0JX1pOM0tKUzRMaXN0OXJlZlZhbHVlc0V2IEAgMzIgTk9OQU1FDQotCV9aTjNLSlM0TGlz
dEMxRXYgQCAzMyBOT05BTUUNCi0JX1pOM0tKUzRMaXN0QzJFdiBAIDM0IE5PTkFNRQ0KLQlfWk4z
S0pTNExpc3RhU0VSS1MwXyBAIDM1IE5PTkFNRQ0KLQlfWk4zS0pTNE51bGxDMUV2IEAgMzYgTk9O
QU1FDQotCV9aTjNLSlM0TnVsbEMyRXYgQCAzNyBOT05BTUUNCi0JX1pOM0tKUzVFcnJvcjZjcmVh
dGVFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2NpaVBLTlNfN1VTdHJpbmdFIEAgMzgg
Tk9OQU1FDQotCV9aTjNLSlM1VmFsdWVDMUVQTlNfOFZhbHVlSW1wRSBAIDM5IE5PTkFNRQ0KLQlf
Wk4zS0pTNVZhbHVlQzFFUktTMF8gQCA0MCBOT05BTUUNCi0JX1pOM0tKUzVWYWx1ZUMyRVBOU184
VmFsdWVJbXBFIEAgNDEgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVDMkVSS1MwXyBAIDQyIE5PTkFN
RQ0KLQlfWk4zS0pTNVZhbHVlRDFFdiBAIDQzIE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlRDJFdiBA
IDQ0IE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlYVNFUktTMF8gQCA0NSBOT05BTUUNCi0JX1pOM0tK
UzZMb29rdXA5ZmluZEVudHJ5RVBLTlNfOUhhc2hUYWJsZUVSS05TXzEwSWRlbnRpZmllckUgQCA0
NiBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVkIEAgNDcgTk9OQU1FDQotCV9aTjNLSlM2TnVt
YmVyQzFFaSBAIDQ4IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMxRWogQCA0OSBOT05BTUUNCi0J
X1pOM0tKUzZOdW1iZXJDMUVsIEAgNTAgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzFFbSBAIDUx
IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRWQgQCA1MiBOT05BTUUNCi0JX1pOM0tKUzZOdW1i
ZXJDMkVpIEAgNTMgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzJFaiBAIDU0IE5PTkFNRQ0KLQlf
Wk4zS0pTNk51bWJlckMyRWwgQCA1NSBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMkVtIEAgNTYg
Tk9OQU1FDQotCV9aTjNLSlM2T2JqZWN0MTFkeW5hbWljQ2FzdEVSS05TXzVWYWx1ZUUgQCA1NyBO
T05BTUUNCi0JX1pOM0tKUzZPYmplY3Q0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSUzBfUktOU180TGlz
dEUgQCA1OCBOT05BTUUNCi0JX1pOM0tKUzZTdHJpbmdDMUVSS05TXzdVU3RyaW5nRSBAIDU5IE5P
TkFNRQ0KLQlfWk4zS0pTNlN0cmluZ0MyRVJLTlNfN1VTdHJpbmdFIEAgNjAgTk9OQU1FDQotCV9a
TjNLSlM3Qm9vbGVhbkMxRWIgQCA2MSBOT05BTUUNCi0JX1pOM0tKUzdCb29sZWFuQzJFYiBAIDYy
IE5PTkFNRQ0KLQlfWk4zS0pTN0NTdHJpbmdhU0VQS2MgQCA2MyBOT05BTUUNCi0JX1pOM0tKUzdV
U3RyaW5nMTBhdHRhY2hOdWxsRXYgQCA2NCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nM1JlcDEz
Y3JlYXRlQ29weWluZ0VQS05TXzVVQ2hhckVpIEAgNjUgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmlu
ZzNSZXA2Y3JlYXRlRVBOU181VUNoYXJFaSBAIDY2IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmcz
UmVwN2Rlc3Ryb3lFdiBAIDY3IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmc0ZnJvbUVsIEAgNjgg
Tk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUEtjIEAgNjkgTk9OQU1FDQotCV9aTjNL
SlM3VVN0cmluZzZhcHBlbmRFUktTMF8gQCA3MCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzFF
UEtOU181VUNoYXJFaSBAIDcxIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQS2MgQCA3MiBO
T05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzFFUE5TXzVVQ2hhckVpYiBAIDczIE5PTkFNRQ0KLQlf
Wk4zS0pTN1VTdHJpbmdDMUVSS1MwX1MyXyBAIDc0IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdD
MUVjIEAgNzUgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRXYgQCA3NiBOT05BTUUNCi0JX1pO
M0tKUzdVU3RyaW5nQzJFUEtOU181VUNoYXJFaSBAIDc3IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJp
bmdDMkVQS2MgQCA3OCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzJFUE5TXzVVQ2hhckVpYiBA
IDc5IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVSS1MwX1MyXyBAIDgwIE5PTkFNRQ0KLQlf
Wk4zS0pTN1VTdHJpbmdDMkVjIEAgODEgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRXYgQCA4
MiBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nYVNFUktTMF8gQCA4MyBOT05BTUUNCi0JX1pOM0tK
UzhWYWx1ZUltcGRsRVB2IEAgODQgTk9OQU1FDQotCV9aTjNLSlM4VmFsdWVJbXBud0VqIEAgODUg
Tk9OQU1FDQotCV9aTjNLSlM5Q29sbGVjdG9yN2NvbGxlY3RFdiBAIDg2IE5PTkFNRQ0KLQlfWk4z
S0pTOU9iamVjdEltcDExaGFzSW5zdGFuY2VFUE5TXzlFeGVjU3RhdGVFUktOU181VmFsdWVFIEAg
ODcgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wMTJzZXRQcm90b3R5cGVFUktOU181VmFsdWVF
IEAgODggTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wMTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCA4OSBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJ
bXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCA5MCBOT05BTUUNCi0JX1pOM0tK
UzlPYmplY3RJbXAxOWRlbGV0ZUFsbFByb3BlcnRpZXNFUE5TXzlFeGVjU3RhdGVFIEAgOTEgTk9O
QU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wM3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckVSS05TXzVWYWx1ZUVpIEAgOTIgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wM3B1dEVQ
TlNfOUV4ZWNTdGF0ZUVqUktOU181VmFsdWVFaSBAIDkzIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVj
dEltcDRjYWxsRVBOU185RXhlY1N0YXRlRVJOU182T2JqZWN0RVJLTlNfNExpc3RFIEAgOTQgTk9O
QU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wNG1hcmtFdiBAIDk1IE5PTkFNRQ0KLQlfWk4zS0pTOU9i
amVjdEltcDhwcm9wTGlzdEVQTlNfOUV4ZWNTdGF0ZUViIEAgOTYgTk9OQU1FDQotCV9aTjNLSlM5
T2JqZWN0SW1wOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RSBAIDk3IE5PTkFN
RQ0KLQlfWk4zS0pTOU9iamVjdEltcDljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVFUktOU180TGlz
dEVSS05TXzdVU3RyaW5nRWkgQCA5OCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA5cHV0RGly
ZWN0RVJLTlNfMTBJZGVudGlmaWVyRVBOU184VmFsdWVJbXBFaSBAIDk5IE5PTkFNRQ0KLQlfWk4z
S0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFaWkgQCAxMDAgTk9OQU1F
DQotCV9aTjNLSlM5T2JqZWN0SW1wQzFFUktOU182T2JqZWN0RSBAIDEwMSBOT05BTUUNCi0JX1pO
M0tKUzlPYmplY3RJbXBDMUV2IEAgMTAyIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEMyRVJL
TlNfNk9iamVjdEUgQCAxMDMgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wQzJFdiBAIDEwNCBO
T05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBEMEV2IEAgMTA1IE5PTkFNRQ0KLQlfWk4zS0pTOU9i
amVjdEltcEQxRXYgQCAxMDYgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wRDJFdiBAIDEwNyBO
T05BTUUNCi0JX1pOM0tKUzlVbmRlZmluZWRDMUV2IEAgMTA4IE5PTkFNRQ0KLQlfWk4zS0pTOVVu
ZGVmaW5lZEMyRXYgQCAxMDkgTk9OQU1FDQotCV9aTjNLSlNlcUVSS05TXzdVU3RyaW5nRVBLYyBA
IDExMCBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTBjb21wYXRNb2RlRXYgQCAxMTEg
Tk9OQU1FDQotCV9aTkszS0pTMTFJbnRlcnByZXRlcjEyYnVpbHRpbkFycmF5RXYgQCAxMTIgTk9O
QU1FDQotCV9aTkszS0pTMTFJbnRlcnByZXRlcjEyZ2xvYmFsT2JqZWN0RXYgQCAxMTMgTk9OQU1F
DQotCV9aTkszS0pTMTFJbnRlcnByZXRlcjEyc2F2ZUJ1aWx0aW5zRVJOU18xM1NhdmVkQnVpbHRp
bnNFIEAgMTE0IE5PTkFNRQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIxM2J1aWx0aW5PYmplY3RF
diBAIDExNSBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTVidWlsdGluRnVuY3Rpb25F
diBAIDExNiBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMjJidWlsdGluT2JqZWN0UHJv
dG90eXBlRXYgQCAxMTcgTk9OQU1FDQotCV9aTkszS0pTMTFQcm9wZXJ0eU1hcDNnZXRFUktOU18x
MElkZW50aWZpZXJFIEAgMTE4IE5PTkFNRQ0KLQlfWk5LM0tKUzExUHJvcGVydHlNYXA0c2F2ZUVS
TlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMTE5IE5PTkFNRQ0KLQlfWk5LM0tKUzRMaXN0NWltcEF0
RWkgQCAxMjAgTk9OQU1FDQotCV9aTkszS0pTNExpc3Q4Y29weVRhaWxFdiBAIDEyMSBOT05BTUUN
Ci0JX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUgQCAxMjIgTk9OQU1FDQotCV9aTkszS0pTNk9iamVjdDExaGFzUHJvcGVydHlFUE5T
XzlFeGVjU3RhdGVFaiBAIDEyMyBOT05BTUUNCi0JX1pOSzNLSlM2T2JqZWN0MTRoYXNPd25Qcm9w
ZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxMjQgTk9OQU1FDQotCV9a
TkszS0pTNlN0cmluZzV2YWx1ZUV2IEAgMTI1IE5PTkFNRQ0KLQlfWk5LM0tKUzdVU3RyaW5nMTJ0
b0FycmF5SW5kZXhFUGIgQCAxMjYgTk9OQU1FDQotCV9aTkszS0pTN1VTdHJpbmc1YXNjaWlFdiBA
IDEyNyBOT05BTUUNCi0JX1pOSzNLSlM3VVN0cmluZzZpc051bGxFdiBAIDEyOCBOT05BTUUNCi0J
X1pOSzNLSlM3VVN0cmluZzd0b1VMb25nRVBiIEAgMTI5IE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1
ZUltcDE2ZGlzcGF0Y2hUb09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzAgTk9OQU1FDQotCV9a
TkszS0pTOFZhbHVlSW1wNm1hcmtlZEV2IEAgMTMxIE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUlt
cDd0b0ludDMyRVBOU185RXhlY1N0YXRlRSBAIDEzMiBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJ
bXA4dG9VSW50MTZFUE5TXzlFeGVjU3RhdGVFIEAgMTMzIE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1
ZUltcDh0b1VJbnQzMkVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzQgTk9OQU1FDQotCV9aTkszS0pTOFZh
bHVlSW1wOHRvVUludDMyRVJqIEAgMTM1IE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDl0b0lu
dGVnZXJFUE5TXzlFeGVjU3RhdGVFIEAgMTM2IE5PTkFNRQ0KLQlfWk5LM0tKUzlFeGVjU3RhdGUx
OGxleGljYWxJbnRlcnByZXRlckV2IEAgMTM3IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAx
MWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDEzOCBOT05B
TUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAg
MTM5IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxMXRvUHJpbWl0aXZlRVBOU185RXhlY1N0
YXRlRU5TXzRUeXBlRSBAIDE0MCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTJkZWZhdWx0
VmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTQxIE5PTkFNRQ0KLQlfWk5LM0tKUzlP
YmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RSBAIDE0MiBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTRoYXNPd25Qcm9wZXJ0eUVQTlNf
OUV4ZWNTdGF0ZUVqIEAgMTQzIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxNGltcGxlbWVu
dHNDYWxsRXYgQCAxNDQgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE5aW1wbGVtZW50c0Nv
bnN0cnVjdEV2IEAgMTQ1IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAyMWltcGxlbWVudHNI
YXNJbnN0YW5jZUV2IEAgMTQ2IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE0NyBOT05BTUUNCi0JX1pOSzNLSlM5T2Jq
ZWN0SW1wM2dldEVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTQ4IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmpl
Y3RJbXA0dHlwZUV2IEAgMTQ5IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA2Y2FuUHV0RVBO
U185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE1MCBOT05BTUUNCi0JX1pOSzNLSlM5
T2JqZWN0SW1wOGluaGVyaXRzRVBLTlNfOUNsYXNzSW5mb0UgQCAxNTEgTk9OQU1FDQotCV9aTksz
S0pTOU9iamVjdEltcDh0b051bWJlckVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTIgTk9OQU1FDQotCV9a
TkszS0pTOU9iamVjdEltcDh0b09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTMgTk9OQU1FDQot
CV9aTkszS0pTOU9iamVjdEltcDh0b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUgQCAxNTQgTk9OQU1F
DQotCV9aTkszS0pTOU9iamVjdEltcDljbGFzc0luZm9FdiBAIDE1NSBOT05BTUUNCi0JX1pOSzNL
SlM5T2JqZWN0SW1wOWNsYXNzTmFtZUV2IEAgMTU2IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJ
bXA5cHJvdG90eXBlRXYgQCAxNTcgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDl0b0Jvb2xl
YW5FUE5TXzlFeGVjU3RhdGVFIEAgMTU4IE5PTkFNRQ0KLQlfWlRJTjNLSlMxMEFzc2lnbk5vZGVF
IEAgMTU5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwQm9vbGVhbkltcEUg
QCAxNjAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBEZWxldGVOb2RlRSBA
IDE2MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxME5lZ2F0ZU5vZGVFIEAg
MTYyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwTnVtYmVyTm9kZUUgQCAx
NjMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBQcmVmaXhOb2RlRSBAIDE2
NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFJlZ0V4cE5vZGVFIEAgMTY1
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwUmV0dXJuTm9kZUUgQCAxNjYg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBTdHJpbmdOb2RlRSBAIDE2NyBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFN3aXRjaE5vZGVFIEAgMTY4IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwVHlwZU9mTm9kZUUgQCAxNjkgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFCaXRPcGVyTm9kZUUgQCAxNzAgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFCb29sZWFuTm9kZUUgQCAxNzEgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFEb1doaWxlTm9kZUUgQCAxNzIgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFFbGVtZW50Tm9kZUUgQCAxNzMgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFGaW5hbGx5Tm9kZUUgQCAxNzQgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFGdW5jdGlvbkltcEUgQCAxNzUgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFJbnRlcnByZXRlckUgQCAxNzYgTk9O
QU1FIERBVEEgOCA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMU1hdGhGdW5jSW1wRSBAIDE3NyBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDE3OCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMVBvc3RmaXhOb2RlRSBAIDE3OSBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMVJlc29sdmVOb2RlRSBAIDE4MCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMVZhckRlY2xOb2RlRSBAIDE4MSBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMkNvbnRpbnVlTm9kZUUgQCAxODIgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJGdW5jRGVjbE5vZGVFIEAgMTgzIE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDE4NCBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMlByb3BlcnR5Tm9kZUUgQCAxODUg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJTdGF0TGlzdE5vZGVFIEAgMTg2
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEyVW5kZWZpbmVkSW1wRSBAIDE4
NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAg
MTg4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzQWNjZXNzb3JOb2RlMkUg
QCAxODkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNBY3RpdmF0aW9uSW1w
RSBAIDE5MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0FyZ3VtZW50c05v
ZGVFIEAgMTkxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzQ2FzZUJsb2Nr
Tm9kZUUgQCAxOTIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNEYXRlT2Jq
ZWN0SW1wRSBAIDE5MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0dsb2Jh
bEZ1bmNJbXBFIEAgMTk0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzTWF0
aE9iamVjdEltcEUgQCAxOTUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNQ
YXJhbWV0ZXJOb2RlRSBAIDE5NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
M1N0YXRlbWVudE5vZGVFIEAgMTk3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzEzVW5hcnlQbHVzTm9kZUUgQCAxOTggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4z
S0pTMTRBcnJheU9iamVjdEltcEUgQCAxOTkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTRBc3NpZ25FeHByTm9kZUUgQCAyMDAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTMTRCaXR3aXNlTm90Tm9kZUUgQCAyMDEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTRDYXNlQ2xhdXNlTm9kZUUgQCAyMDIgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTRDbGF1c2VMaXN0Tm9kZUUgQCAyMDMgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTRFcnJvck9iamVjdEltcEUgQCAyMDQgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAyMDUgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTROYXRpdmVFcnJvckltcEUgQCAyMDYgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRSZWxhdGlvbmFsTm9kZUUgQCAyMDcgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMjA4IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1TnVtYmVyT2JqZWN0SW1wRSBAIDIw
OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNU9iamVjdE9iamVjdEltcEUg
QCAyMTAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVSZWdFeHBPYmplY3RJ
bXBFIEAgMjExIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1U3RyaW5nT2Jq
ZWN0SW1wRSBAIDIxMiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNVZhckRl
Y2xMaXN0Tm9kZUUgQCAyMTMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZB
cmd1bWVudExpc3ROb2RlRSBAIDIxNCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxNkFycmF5SW5zdGFuY2VJbXBFIEAgMjE1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAyMTYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTZEYXRlUHJvdG9GdW5jSW1wRSBAIDIxNyBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxNkRhdGVQcm90b3R5cGVJbXBFIEAgMjE4IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAyMTkgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBAIDIyMCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNlZhclN0YXRlbWVudE5vZGVFIEAgMjIx
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBF
IEAgMjIyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3QXJyYXlQcm90b3R5
cGVJbXBFIEAgMjIzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3QmluYXJ5
TG9naWNhbE5vZGVFIEAgMjI0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3
RGF0ZU9iamVjdEZ1bmNJbXBFIEAgMjI1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzE3RXJyb3JQcm90b0Z1bmNJbXBFIEAgMjI2IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMjI3IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzE3RnVuY3Rpb25PYmplY3RJbXBFIEAgMjI4IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzE3T2JqZWN0TGl0ZXJhbE5vZGVFIEAgMjI5IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3UHJvcGVydHlWYWx1ZU5vZGVFIEAgMjMwIE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3U3RyaW5nSW5zdGFuY2VJbXBFIEAg
MjMxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4RW1wdHlTdGF0ZW1lbnRO
b2RlRSBAIDIzMiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOE51bWJlclBy
b3RvRnVuY0ltcEUgQCAyMzMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThP
YmplY3RQcm90b0Z1bmNJbXBFIEAgMjM0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzE4UmVnRXhwUHJvdG9GdW5jSW1wRSBAIDIzNSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAyMzYgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMThTdHJpbmdQcm90b0Z1bmNJbXBFIEAgMjM3IE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4U3RyaW5nUHJvdG90eXBlSW1wRSBAIDIzOCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBFIEAg
MjM5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE5RGVjbGFyZWRGdW5jdGlv
bkltcEUgQCAyNDAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTlJbnRlcm5h
bEZ1bmN0aW9uSW1wRSBAIDI0MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
OVN0cmluZ09iamVjdEZ1bmNJbXBFIEAgMjQyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzIwRnVuY3Rpb25Qcm90b0Z1bmNJbXBFIEAgMjQzIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzIwRnVuY3Rpb25Qcm90b3R5cGVJbXBFIEAgMjQ0IE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzROb2RlRSBAIDI0NSBOT05BTUUgREFUQSA4IDsgIzxU
ST4jDQotCV9aVElOM0tKUzZJZk5vZGVFIEAgMjQ2IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzdBZGROb2RlRSBAIDI0NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlM3Rm9yTm9kZUUgQCAyNDggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
N051bGxJbXBFIEAgMjQ5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzdUcnlO
b2RlRSBAIDI1MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4RGVidWdnZXJF
IEAgMjUxIE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pUSU4zS0pTOE11bHROb2RlRSBAIDI1
MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4TnVsbE5vZGVFIEAgMjUzIE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzhUaGlzTm9kZUUgQCAyNTQgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTOFZhbHVlSW1wRSBAIDI1NSBOT05BTUUgREFU
QSA4IDsgIzxUST4jDQotCV9aVElOM0tKUzhWb2lkTm9kZUUgQCAyNTYgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTOFdpdGhOb2RlRSBAIDI1NyBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlM5QXJyYXlOb2RlRSBAIDI1OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlM5QmxvY2tOb2RlRSBAIDI1OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlM5QnJlYWtOb2RlRSBAIDI2MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlM5Q2F0Y2hOb2RlRSBAIDI2MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlM5Q29tbWFOb2RlRSBAIDI2MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlM5RXF1YWxOb2RlRSBAIDI2MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5
Rm9ySW5Ob2RlRSBAIDI2NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5R3Jv
dXBOb2RlRSBAIDI2NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5TGFiZWxO
b2RlRSBAIDI2NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5TnVtYmVySW1w
RSBAIDI2NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5T2JqZWN0SW1wRSBA
IDI2OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5UmVnRXhwSW1wRSBAIDI2
OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5U2hpZnROb2RlRSBAIDI3MCBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5U3RyaW5nSW1wRSBAIDI3MSBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5VGhyb3dOb2RlRSBAIDI3MiBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5V2hpbGVOb2RlRSBAIDI3MyBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRWTjNLSlMxMEFzc2lnbk5vZGVFIEAgMjc0IE5PTkFNRSBEQVRB
IDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwQm9vbGVhbkltcEUgQCAyNzUgTk9OQU1FIERBVEEg
NDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBEZWxldGVOb2RlRSBAIDI3NiBOT05BTUUgREFUQSAz
NiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxME5lZ2F0ZU5vZGVFIEAgMjc3IE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwTnVtYmVyTm9kZUUgQCAyNzggTk9OQU1FIERBVEEgMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBQcmVmaXhOb2RlRSBAIDI3OSBOT05BTUUgREFUQSAzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFJlZ0V4cE5vZGVFIEAgMjgwIE5PTkFNRSBEQVRBIDM2IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzEwUmV0dXJuTm9kZUUgQCAyODEgTk9OQU1FIERBVEEgNDQgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTMTBTdHJpbmdOb2RlRSBAIDI4MiBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxMFN3aXRjaE5vZGVFIEAgMjgzIE5PTkFNRSBEQVRBIDQ0IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzEwVHlwZU9mTm9kZUUgQCAyODQgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTFCaXRPcGVyTm9kZUUgQCAyODUgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTFCb29sZWFuTm9kZUUgQCAyODYgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTFEb1doaWxlTm9kZUUgQCAyODcgTk9OQU1FIERBVEEgNDQgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTFFbGVtZW50Tm9kZUUgQCAyODggTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTFGaW5hbGx5Tm9kZUUgQCAyODkgTk9OQU1FIERBVEEgNDQgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTFGdW5jdGlvbkltcEUgQCAyOTAgTk9OQU1FIERBVEEgMTQ4IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzExSW50ZXJwcmV0ZXJFIEAgMjkxIE5PTkFNRSBEQVRBIDQwIDsgIzxW
VD4jDQotCV9aVFZOM0tKUzExTWF0aEZ1bmNJbXBFIEAgMjkyIE5PTkFNRSBEQVRBIDEzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDI5MyBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxMVBvc3RmaXhOb2RlRSBAIDI5NCBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxMVJlc29sdmVOb2RlRSBAIDI5NSBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxMVZhckRlY2xOb2RlRSBAIDI5NiBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxMkNvbnRpbnVlTm9kZUUgQCAyOTcgTk9OQU1FIERBVEEgNDQgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTMTJGdW5jRGVjbE5vZGVFIEAgMjk4IE5PTkFNRSBEQVRBIDQ0IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDI5OSBOT05BTUUgREFUQSAzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMlByb3BlcnR5Tm9kZUUgQCAzMDAgTk9OQU1FIERBVEEgMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJTdGF0TGlzdE5vZGVFIEAgMzAxIE5PTkFNRSBEQVRBIDQ0
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEyVW5kZWZpbmVkSW1wRSBAIDMwMiBOT05BTUUgREFUQSA0
OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAgMzAzIE5PTkFNRSBEQVRB
IDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMkUgQCAzMDQgTk9OQU1FIERB
VEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNBY3RpdmF0aW9uSW1wRSBAIDMwNSBOT05BTUUg
REFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNBcmd1bWVudHNOb2RlRSBAIDMwNiBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM0Nhc2VCbG9ja05vZGVFIEAgMzA3IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzRGF0ZU9iamVjdEltcEUgQCAzMDgg
Tk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzR2xvYmFsRnVuY0ltcEUgQCAz
MDkgTk9OQU1FIERBVEEgMTQwIDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzTWF0aE9iamVjdEltcEUg
QCAzMTAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzUGFyYW1ldGVyTm9k
ZUUgQCAzMTEgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNTdGF0ZW1lbnRO
b2RlRSBAIDMxMiBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM1VuYXJ5UGx1
c05vZGVFIEAgMzEzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0QXJyYXlP
YmplY3RJbXBFIEAgMzE0IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNEFz
c2lnbkV4cHJOb2RlRSBAIDMxNSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
NEJpdHdpc2VOb3ROb2RlRSBAIDMxNiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxNENhc2VDbGF1c2VOb2RlRSBAIDMxNyBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxNENsYXVzZUxpc3ROb2RlRSBAIDMxOCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDMxOSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAzMjAgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTROYXRpdmVFcnJvckltcEUgQCAzMjEgTk9OQU1FIERBVEEgMTM2IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzE0UmVsYXRpb25hbE5vZGVFIEAgMzIyIE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1Q29uZGl0aW9uYWxOb2RlRSBAIDMyMyBOT05BTUUgREFU
QSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNU51bWJlck9iamVjdEltcEUgQCAzMjQgTk9OQU1F
IERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDMyNSBO
T05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVSZWdFeHBPYmplY3RJbXBFIEAg
MzI2IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNVN0cmluZ09iamVjdElt
cEUgQCAzMjcgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1VmFyRGVjbExp
c3ROb2RlRSBAIDMyOCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNkFyZ3Vt
ZW50TGlzdE5vZGVFIEAgMzI5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2
QXJyYXlJbnN0YW5jZUltcEUgQCAzMzAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAzMzEgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzE2RGF0ZVByb3RvRnVuY0ltcEUgQCAzMzIgTk9OQU1FIERBVEEgMTM2IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAzMzMgTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAzMzQgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBAIDMzNSBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNlZhclN0YXRlbWVudE5vZGVFIEAgMzM2
IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBF
IEAgMzM3IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0FycmF5UHJvdG90
eXBlSW1wRSBAIDMzOCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdCaW5h
cnlMb2dpY2FsTm9kZUUgQCAzMzkgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTdEYXRlT2JqZWN0RnVuY0ltcEUgQCAzNDAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzE3RXJyb3JQcm90b0Z1bmNJbXBFIEAgMzQxIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlMxN0V4cHJTdGF0ZW1lbnROb2RlRSBAIDM0MiBOT05BTUUgREFUQSA0NCA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDM0MyBOT05BTUUgREFU
QSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAzNDQgTk9O
QU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAz
NDUgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdTdHJpbmdJbnN0YW5jZUlt
cEUgQCAzNDYgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4RW1wdHlTdGF0
ZW1lbnROb2RlRSBAIDM0NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOE51
bWJlclByb3RvRnVuY0ltcEUgQCAzNDggTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzE4T2JqZWN0UHJvdG9GdW5jSW1wRSBAIDM0OSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMzUwIE5PTkFNRSBEQVRBIDEzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAzNTEgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThTdHJpbmdQcm90b0Z1bmNJbXBFIEAgMzUyIE5P
TkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFN0cmluZ1Byb3RvdHlwZUltcEUg
QCAzNTMgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5Qm9vbGVhblByb3Rv
RnVuY0ltcEUgQCAzNTQgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5RGVj
bGFyZWRGdW5jdGlvbkltcEUgQCAzNTUgTk9OQU1FIERBVEEgMTQ4IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzE5SW50ZXJuYWxGdW5jdGlvbkltcEUgQCAzNTYgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE5U3RyaW5nT2JqZWN0RnVuY0ltcEUgQCAzNTcgTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzIwRnVuY3Rpb25Qcm90b0Z1bmNJbXBFIEAgMzU4IE5PTkFN
RSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMyMEZ1bmN0aW9uUHJvdG90eXBlSW1wRSBA
IDM1OSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTNE5vZGVFIEAgMzYwIE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzZJZk5vZGVFIEAgMzYxIE5PTkFNRSBE
QVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzdBZGROb2RlRSBAIDM2MiBOT05BTUUgREFUQSAz
NiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM3Rm9yTm9kZUUgQCAzNjMgTk9OQU1FIERBVEEgNDQgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTN051bGxJbXBFIEAgMzY0IE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzdUcnlOb2RlRSBAIDM2NSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlM4RGVidWdnZXJFIEAgMzY2IE5PTkFNRSBEQVRBIDQwIDsgIzxWVD4jDQotCV9aVFZO
M0tKUzhNdWx0Tm9kZUUgQCAzNjcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
OE51bGxOb2RlRSBAIDM2OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4VGhp
c05vZGVFIEAgMzY5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhWYWx1ZUlt
cEUgQCAzNzAgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOFZvaWROb2RlRSBA
IDM3MSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4V2l0aE5vZGVFIEAgMzcy
IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlBcnJheU5vZGVFIEAgMzczIE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlCbG9ja05vZGVFIEAgMzc0IE5PTkFN
RSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlCcmVha05vZGVFIEAgMzc1IE5PTkFNRSBE
QVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlDYXRjaE5vZGVFIEAgMzc2IE5PTkFNRSBEQVRB
IDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlDb21tYU5vZGVFIEAgMzc3IE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlFcXVhbE5vZGVFIEAgMzc4IE5PTkFNRSBEQVRBIDM2IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzlGb3JJbk5vZGVFIEAgMzc5IE5PTkFNRSBEQVRBIDQ0IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzlHcm91cE5vZGVFIEAgMzgwIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzlMYWJlbE5vZGVFIEAgMzgxIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzlOdW1iZXJJbXBFIEAgMzgyIE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzlPYmplY3RJbXBFIEAgMzgzIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlM5UmVnRXhwSW1wRSBAIDM4NCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTOVNoaWZ0Tm9kZUUgQCAzODUgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
OVN0cmluZ0ltcEUgQCAzODYgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOVRo
cm93Tm9kZUUgQCAzODcgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOVdoaWxl
Tm9kZUUgQCAzODggTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCisgICAgTlBOX0NyZWF0ZU9iamVj
dCBAIDEgTk9OQU1FDQorICAgIE5QTl9FdmFsdWF0ZSBAIDIgTk9OQU1FDQorICAgIE5QTl9HZXRJ
bnRJZGVudGlmaWVyIEAgMyBOT05BTUUNCisgICAgTlBOX0dldFByb3BlcnR5IEAgNCBOT05BTUUN
CisgICAgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgQCA1IE5PTkFNRQ0KKyAgICBOUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcnMgQCA2IE5PTkFNRQ0KKyAgICBOUE5fSGFzTWV0aG9kIEAgNyBOT05BTUUN
CisgICAgTlBOX0hhc1Byb3BlcnR5IEAgOCBOT05BTUUNCisgICAgTlBOX0lkZW50aWZpZXJJc1N0
cmluZyBAIDkgTk9OQU1FDQorICAgIE5QTl9JbnRGcm9tSWRlbnRpZmllciBAIDEwIE5PTkFNRQ0K
KyAgICBOUE5fSW52b2tlIEAgMTEgTk9OQU1FDQorICAgIE5QTl9JbnZva2VEZWZhdWx0IEAgMTIg
Tk9OQU1FDQorICAgIE5QTl9SZWxlYXNlT2JqZWN0IEAgMTMgTk9OQU1FDQorICAgIE5QTl9SZWxl
YXNlVmFyaWFudFZhbHVlIEAgMTQgTk9OQU1FDQorICAgIE5QTl9SZW1vdmVQcm9wZXJ0eSBAIDE1
IE5PTkFNRQ0KKyAgICBOUE5fUmV0YWluT2JqZWN0IEAgMTYgTk9OQU1FDQorICAgIE5QTl9TZXRF
eGNlcHRpb24gQCAxNyBOT05BTUUNCisgICAgTlBOX1NldFByb3BlcnR5IEAgMTggTk9OQU1FDQor
ICAgIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgQCAxOSBOT05BTUUNCisgICAgX05QTl9DcmVhdGVT
Y3JpcHRPYmplY3QgQCAyMCBOT05BTUUNCisgICAgX1oyNE5QTl9TZXRFeGNlcHRpb25XaXRoVVRG
OFA4TlBPYmplY3RQS2NpIEAgMjEgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZpZXIzYWRk
RVBLYyBAIDIyIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQTlNfN1VTdHJp
bmczUmVwRSBAIDIzIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBJZGVudGlmaWVyNWVxdWFsRVBOU183
VVN0cmluZzNSZXBFUEtOU181VUNoYXJFaSBAIDI0IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBJZGVu
dGlmaWVyNWVxdWFsRVBOU183VVN0cmluZzNSZXBFUEtjIEAgMjUgTk9OQU1FDQorICAgIF9aTjNL
SlMxMFNjb3BlQ2hhaW40cHVzaEVQTlNfOU9iamVjdEltcEUgQCAyNiBOT05BTUUNCisgICAgX1pO
M0tKUzEwU2NvcGVDaGFpbjdyZWxlYXNlRXYgQCAyNyBOT05BTUUNCisgICAgX1pOM0tKUzEwU2Nv
cGVDaGFpbmFTRVJLUzBfIEAgMjggTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMTBn
bG9iYWxFeGVjRXYgQCAyOSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxMnZpcnR1
YWxfaG9va0VpUHYgQCAzMCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxM3NldENv
bXBhdE1vZGVFTlMwXzEwQ29tcGF0TW9kZUUgQCAzMSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50
ZXJwcmV0ZXIxNXJlc3RvcmVCdWlsdGluc0VSS05TXzEzU2F2ZWRCdWlsdGluc0UgQCAzMiBOT05B
TUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxNmluaXRHbG9iYWxPYmplY3RFdiBAIDMzIE5P
TkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE3aW5jU3RhdGVtZW50Q291bnRFdiBAIDM0
IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE5cmVzZXRTdGF0ZW1lbnRDb3VudEV2
IEAgMzUgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMjFzaG91bGRQcmludEV4Y2Vw
dGlvbnNFdiBAIDM2IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjI0c2V0U2hvdWxk
UHJpbnRFeGNlcHRpb25zRWIgQCAzNyBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIz
MGNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU184QmluZGlu
Z3M4SW5zdGFuY2UxNUJpbmRpbmdMYW5ndWFnZUVSS05TXzZPYmplY3RFUEtOUzNfMTBSb290T2Jq
ZWN0RVNCXyBAIDM4IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjRsb2NrRXYgQCAz
OSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXI2dW5sb2NrRXYgQCA0MCBOT05BTUUN
CisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VSS05TXzVW
YWx1ZUVTM18gQCA0MSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVF
UktOU183VVN0cmluZ0VpUzNfUktOU181VmFsdWVFIEAgNDIgTk9OQU1FDQorICAgIF9aTjNLSlMx
MUludGVycHJldGVyQzFFUktOU182T2JqZWN0RSBAIDQzIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJ
bnRlcnByZXRlckMyRVJLTlNfNk9iamVjdEUgQCA0NCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50
ZXJwcmV0ZXJEMEV2IEAgNDUgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyRDFFdiBA
IDQ2IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlckQyRXYgQCA0NyBOT05BTUUNCisg
ICAgX1pOM0tKUzExUHJvcGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQcm9wZXJ0aWVzRSBA
IDQ4IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTRsZW5ndGhQcm9wZXJ0eUV2IEAgNDkgTk9OQU1FDQor
ICAgIF9aTjNLSlMxNW1lc3NhZ2VQcm9wZXJ0eUV2IEAgNTAgTk9OQU1FDQorICAgIF9aTjNLSlMx
NlJ1bnRpbWVPYmplY3RJbXBDMUVQTlNfOEJpbmRpbmdzOEluc3RhbmNlRWIgQCA1MSBOT05BTUUN
CisgICAgX1pOM0tKUzE2UnVudGltZU9iamVjdEltcEMyRVBOU184QmluZGluZ3M4SW5zdGFuY2VF
YiBAIDUyIE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3QxMWRlcmVmVmFsdWVzRXYgQCA1MyBOT05B
TUUNCisgICAgX1pOM0tKUzRMaXN0NmFwcGVuZEVQTlNfOFZhbHVlSW1wRSBAIDU0IE5PTkFNRQ0K
KyAgICBfWk4zS0pTNExpc3Q3cmVsZWFzZUV2IEAgNTUgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlz
dDlyZWZWYWx1ZXNFdiBAIDU2IE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3RDMUV2IEAgNTcgTk9O
QU1FDQorICAgIF9aTjNLSlM0TGlzdEMyRXYgQCA1OCBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0
YVNFUktTMF8gQCA1OSBOT05BTUUNCisgICAgX1pOM0tKUzROdWxsQzFFdiBAIDYwIE5PTkFNRQ0K
KyAgICBfWk4zS0pTNE51bGxDMkV2IEAgNjEgTk9OQU1FDQorICAgIF9aTjNLSlM1RXJyb3I2Y3Jl
YXRlRVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFUEtjaWlQS05TXzdVU3RyaW5nRSBAIDYy
IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlQzFFUE5TXzhWYWx1ZUltcEUgQCA2MyBOT05BTUUN
CisgICAgX1pOM0tKUzVWYWx1ZUMxRVJLUzBfIEAgNjQgTk9OQU1FDQorICAgIF9aTjNLSlM1VmFs
dWVDMkVQTlNfOFZhbHVlSW1wRSBAIDY1IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlQzJFUktT
MF8gQCA2NiBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUQxRXYgQCA2NyBOT05BTUUNCisgICAg
X1pOM0tKUzVWYWx1ZUQyRXYgQCA2OCBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZWFTRVJLUzBf
IEAgNjkgTk9OQU1FDQorICAgIF9aTjNLSlM2TG9va3VwOWZpbmRFbnRyeUVQS05TXzlIYXNoVGFi
bGVFUktOU18xMElkZW50aWZpZXJFIEAgNzAgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzFF
ZCBAIDcxIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMxRWkgQCA3MiBOT05BTUUNCisgICAg
X1pOM0tKUzZOdW1iZXJDMUVqIEAgNzMgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzFFbCBA
IDc0IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMxRW0gQCA3NSBOT05BTUUNCisgICAgX1pO
M0tKUzZOdW1iZXJDMkVkIEAgNzYgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzJFaSBAIDc3
IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWogQCA3OCBOT05BTUUNCisgICAgX1pOM0tK
UzZOdW1iZXJDMkVsIEAgNzkgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzJFbSBAIDgwIE5P
TkFNRQ0KKyAgICBfWk4zS0pTNk9iamVjdDExZHluYW1pY0Nhc3RFUktOU181VmFsdWVFIEAgODEg
Tk9OQU1FDQorICAgIF9aTjNLSlM2T2JqZWN0NGNhbGxFUE5TXzlFeGVjU3RhdGVFUlMwX1JLTlNf
NExpc3RFIEAgODIgTk9OQU1FDQorICAgIF9aTjNLSlM2U3RyaW5nQzFFUktOU183VVN0cmluZ0Ug
QCA4MyBOT05BTUUNCisgICAgX1pOM0tKUzZTdHJpbmdDMkVSS05TXzdVU3RyaW5nRSBAIDg0IE5P
TkFNRQ0KKyAgICBfWk4zS0pTN0Jvb2xlYW5DMUViIEAgODUgTk9OQU1FDQorICAgIF9aTjNLSlM3
Qm9vbGVhbkMyRWIgQCA4NiBOT05BTUUNCisgICAgX1pOM0tKUzdDU3RyaW5nYVNFUEtjIEAgODcg
Tk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzEwYXR0YWNoTnVsbEV2IEAgODggTk9OQU1FDQor
ICAgIF9aTjNLSlM3VVN0cmluZzNSZXAxM2NyZWF0ZUNvcHlpbmdFUEtOU181VUNoYXJFaSBAIDg5
IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmczUmVwNmNyZWF0ZUVQTlNfNVVDaGFyRWkgQCA5
MCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nM1JlcDdkZXN0cm95RXYgQCA5MSBOT05BTUUN
CisgICAgX1pOM0tKUzdVU3RyaW5nNGZyb21FbCBAIDkyIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VT
dHJpbmc2YXBwZW5kRVBLYyBAIDkzIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmc2YXBwZW5k
RVJLUzBfIEAgOTQgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MxRVBLTlNfNVVDaGFyRWkg
QCA5NSBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFFUEtjIEAgOTYgTk9OQU1FDQorICAg
IF9aTjNLSlM3VVN0cmluZ0MxRVBOU181VUNoYXJFaWIgQCA5NyBOT05BTUUNCisgICAgX1pOM0tK
UzdVU3RyaW5nQzFFUktTMF9TMl8gQCA5OCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFF
YyBAIDk5IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUV2IEAgMTAwIE5PTkFNRQ0KKyAg
ICBfWk4zS0pTN1VTdHJpbmdDMkVQS05TXzVVQ2hhckVpIEAgMTAxIE5PTkFNRQ0KKyAgICBfWk4z
S0pTN1VTdHJpbmdDMkVQS2MgQCAxMDIgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVBO
U181VUNoYXJFaWIgQCAxMDMgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVJLUzBfUzJf
IEAgMTA0IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMkVjIEAgMTA1IE5PTkFNRQ0KKyAg
ICBfWk4zS0pTN1VTdHJpbmdDMkV2IEAgMTA2IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdh
U0VSS1MwXyBAIDEwNyBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczEwUm9vdE9iamVjdDE0
c2V0SW50ZXJwcmV0ZXJFUE5TXzExSW50ZXJwcmV0ZXJFIEAgMTA4IE5PTkFNRQ0KKyAgICBfWk4z
S0pTOEJpbmRpbmdzMTBSb290T2JqZWN0MjVyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzRXYgQCAx
MDkgTk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGluZ3MyMXJlbW92ZU5hdGl2ZVJlZmVyZW5jZUVQ
TlNfOU9iamVjdEltcEUgQCAxMTAgTk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGluZ3M4SW5zdGFu
Y2UxOWNyZWF0ZVJ1bnRpbWVPYmplY3RFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVB2UEtOUzBfMTBS
b290T2JqZWN0RSBAIDExMSBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczhJbnN0YW5jZTMw
Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlRVBOU185RXhlY1N0YXRlRU5TMV8xNUJpbmRp
bmdMYW5ndWFnZUVSS05TXzZPYmplY3RFUEtOUzBfMTBSb290T2JqZWN0RVNBXyBAIDExMiBOT05B
TUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczhJbnN0YW5jZTMyY3JlYXRlQmluZGluZ0Zvckxhbmd1
YWdlSW5zdGFuY2VFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVB2UEtOUzBfMTBSb290T2JqZWN0RSBA
IDExMyBOT05BTUUNCisgICAgX1pOM0tKUzhWYWx1ZUltcGRsRVB2IEAgMTE0IE5PTkFNRQ0KKyAg
ICBfWk4zS0pTOFZhbHVlSW1wbndFaiBAIDExNSBOT05BTUUNCisgICAgX1pOM0tKUzlDb2xsZWN0
b3I3Y29sbGVjdEV2IEAgMTE2IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDExaGFzSW5z
dGFuY2VFUE5TXzlFeGVjU3RhdGVFUktOU181VmFsdWVFIEAgMTE3IE5PTkFNRQ0KKyAgICBfWk4z
S0pTOU9iamVjdEltcDEyc2V0UHJvdG90eXBlRVJLTlNfNVZhbHVlRSBAIDExOCBOT05BTUUNCisg
ICAgX1pOM0tKUzlPYmplY3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRSBAIDExOSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAxNGRlbGV0
ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxMjAgTk9OQU1FDQorICAgIF9aTjNLSlM5T2Jq
ZWN0SW1wMTlkZWxldGVBbGxQcm9wZXJ0aWVzRVBOU185RXhlY1N0YXRlRSBAIDEyMSBOT05BTUUN
CisgICAgX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVJLTlNfNVZhbHVlRWkgQCAxMjIgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wM3B1
dEVQTlNfOUV4ZWNTdGF0ZUVqUktOU181VmFsdWVFaSBAIDEyMyBOT05BTUUNCisgICAgX1pOM0tK
UzlPYmplY3RJbXA0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSTlNfNk9iamVjdEVSS05TXzRMaXN0RSBA
IDEyNCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA0bWFya0V2IEAgMTI1IE5PTkFNRQ0K
KyAgICBfWk4zS0pTOU9iamVjdEltcDhwcm9wTGlzdEVQTlNfOUV4ZWNTdGF0ZUViIEAgMTI2IE5P
TkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVFUktO
U180TGlzdEUgQCAxMjcgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RVJLTlNfN1VTdHJpbmdFaSBAIDEyOCBOT05BTUUNCisg
ICAgX1pOM0tKUzlPYmplY3RJbXA5cHV0RGlyZWN0RVJLTlNfMTBJZGVudGlmaWVyRVBOU184VmFs
dWVJbXBFaSBAIDEyOSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA5cHV0RGlyZWN0RVJL
TlNfMTBJZGVudGlmaWVyRWlpIEAgMTMwIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEMx
RVJLTlNfNk9iamVjdEUgQCAxMzEgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wQzFFdiBA
IDEzMiBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBDMkVSS05TXzZPYmplY3RFIEAgMTMz
IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEMyRXYgQCAxMzQgTk9OQU1FDQorICAgIF9a
TjNLSlM5T2JqZWN0SW1wRDBFdiBAIDEzNSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBE
MUV2IEAgMTM2IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEQyRXYgQCAxMzcgTk9OQU1F
DQorICAgIF9aTjNLSlM5VW5kZWZpbmVkQzFFdiBAIDEzOCBOT05BTUUNCisgICAgX1pOM0tKUzlV
bmRlZmluZWRDMkV2IEAgMTM5IE5PTkFNRQ0KKyAgICBfWk4zS0pTZXFFUktOU183VVN0cmluZ0VQ
S2MgQCAxNDAgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRlcjEwY29tcGF0TW9kZUV2
IEAgMTQxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMmJ1aWx0aW5BcnJheUV2
IEAgMTQyIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMmdsb2JhbE9iamVjdEV2
IEAgMTQzIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMnNhdmVCdWlsdGluc0VS
TlNfMTNTYXZlZEJ1aWx0aW5zRSBAIDE0NCBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJl
dGVyMTNidWlsdGluT2JqZWN0RXYgQCAxNDUgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnBy
ZXRlcjE1YnVpbHRpbkZ1bmN0aW9uRXYgQCAxNDYgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRl
cnByZXRlcjIyYnVpbHRpbk9iamVjdFByb3RvdHlwZUV2IEAgMTQ3IE5PTkFNRQ0KKyAgICBfWk5L
M0tKUzExUHJvcGVydHlNYXAzZ2V0RVJLTlNfMTBJZGVudGlmaWVyRSBAIDE0OCBOT05BTUUNCisg
ICAgX1pOSzNLSlMxMVByb3BlcnR5TWFwNHNhdmVFUk5TXzE1U2F2ZWRQcm9wZXJ0aWVzRSBAIDE0
OSBOT05BTUUNCisgICAgX1pOSzNLSlM0TGlzdDVpbXBBdEVpIEAgMTUwIE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzRMaXN0OGNvcHlUYWlsRXYgQCAxNTEgTk9OQU1FDQorICAgIF9aTkszS0pTNk9iamVj
dDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTUyIE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzZPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWog
QCAxNTMgTk9OQU1FDQorICAgIF9aTkszS0pTNk9iamVjdDE0aGFzT3duUHJvcGVydHlFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTU0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzZT
dHJpbmc1dmFsdWVFdiBAIDE1NSBOT05BTUUNCisgICAgX1pOSzNLSlM3VVN0cmluZzEydG9BcnJh
eUluZGV4RVBiIEAgMTU2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzdVU3RyaW5nNWFzY2lpRXYgQCAx
NTcgTk9OQU1FDQorICAgIF9aTkszS0pTN1VTdHJpbmc2aXNOdWxsRXYgQCAxNTggTk9OQU1FDQor
ICAgIF9aTkszS0pTN1VTdHJpbmc3dG9VTG9uZ0VQYiBAIDE1OSBOT05BTUUNCisgICAgX1pOSzNL
SlM4VmFsdWVJbXAxNmRpc3BhdGNoVG9PYmplY3RFUE5TXzlFeGVjU3RhdGVFIEAgMTYwIE5PTkFN
RQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDZtYXJrZWRFdiBAIDE2MSBOT05BTUUNCisgICAgX1pO
SzNLSlM4VmFsdWVJbXA3dG9JbnQzMkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjIgTk9OQU1FDQorICAg
IF9aTkszS0pTOFZhbHVlSW1wOHRvVUludDE2RVBOU185RXhlY1N0YXRlRSBAIDE2MyBOT05BTUUN
CisgICAgX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MzJFUE5TXzlFeGVjU3RhdGVFIEAgMTY0IE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQzMkVSaiBAIDE2NSBOT05BTUUNCisg
ICAgX1pOSzNLSlM4VmFsdWVJbXA5dG9JbnRlZ2VyRVBOU185RXhlY1N0YXRlRSBAIDE2NiBOT05B
TUUNCisgICAgX1pOSzNLSlM5RXhlY1N0YXRlMThsZXhpY2FsSW50ZXJwcmV0ZXJFdiBAIDE2NyBO
T05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNjggTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdElt
cDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDE2OSBOT05BTUUNCisgICAgX1pOSzNL
SlM5T2JqZWN0SW1wMTF0b1ByaW1pdGl2ZUVQTlNfOUV4ZWNTdGF0ZUVOU180VHlwZUUgQCAxNzAg
Tk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDEyZGVmYXVsdFZhbHVlRVBOU185RXhlY1N0
YXRlRU5TXzRUeXBlRSBAIDE3MSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTRoYXNP
d25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNzIgTk9OQU1F
DQorICAgIF9aTkszS0pTOU9iamVjdEltcDE0aGFzT3duUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVF
aiBAIDE3MyBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTRpbXBsZW1lbnRzQ2FsbEV2
IEAgMTc0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxOWltcGxlbWVudHNDb25zdHJ1
Y3RFdiBAIDE3NSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMjFpbXBsZW1lbnRzSGFz
SW5zdGFuY2VFdiBAIDE3NiBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wM2dldEVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNzcgTk9OQU1FDQorICAgIF9aTkszS0pT
OU9iamVjdEltcDNnZXRFUE5TXzlFeGVjU3RhdGVFaiBAIDE3OCBOT05BTUUNCisgICAgX1pOSzNL
SlM5T2JqZWN0SW1wNHR5cGVFdiBAIDE3OSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1w
NmNhblB1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxODAgTk9OQU1FDQor
ICAgIF9aTkszS0pTOU9iamVjdEltcDhpbmhlcml0c0VQS05TXzlDbGFzc0luZm9FIEAgMTgxIE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA4dG9OdW1iZXJFUE5TXzlFeGVjU3RhdGVFIEAg
MTgyIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA4dG9PYmplY3RFUE5TXzlFeGVjU3Rh
dGVFIEAgMTgzIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA4dG9TdHJpbmdFUE5TXzlF
eGVjU3RhdGVFIEAgMTg0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA5Y2xhc3NJbmZv
RXYgQCAxODUgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDljbGFzc05hbWVFdiBAIDE4
NiBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wOXByb3RvdHlwZUV2IEAgMTg3IE5PTkFN
RQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA5dG9Cb29sZWFuRVBOU185RXhlY1N0YXRlRSBAIDE4
OCBOT05BTUUNCisgICAgX1pUSU4zS0pTMTBBc3NpZ25Ob2RlRSBAIDE4OSBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMTBCb29sZWFuSW1wRSBAIDE5MCBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTBEZWxldGVOb2RlRSBAIDE5MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMTBOZWdhdGVOb2RlRSBAIDE5MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTBOdW1iZXJOb2RlRSBAIDE5MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBQcmVm
aXhOb2RlRSBAIDE5NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBSZWdFeHBOb2Rl
RSBAIDE5NSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBSZXR1cm5Ob2RlRSBAIDE5
NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBTdHJpbmdOb2RlRSBAIDE5NyBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBTd2l0Y2hOb2RlRSBAIDE5OCBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTBUeXBlT2ZOb2RlRSBAIDE5OSBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTMTFCaXRPcGVyTm9kZUUgQCAyMDAgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzExQm9vbGVhbk5vZGVFIEAgMjAxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxMURvV2hpbGVOb2RlRSBAIDIwMiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTFFbGVtZW50Tm9kZUUgQCAyMDMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExRmlu
YWxseU5vZGVFIEAgMjA0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUZ1bmN0aW9u
SW1wRSBAIDIwNSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFJbnRlcnByZXRlckUg
QCAyMDYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExTWF0aEZ1bmNJbXBFIEAgMjA3
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDIwOCBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFQb3N0Zml4Tm9kZUUgQCAyMDkgTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMjEwIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxMVZhckRlY2xOb2RlRSBAIDIxMSBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTJDb250aW51ZU5vZGVFIEAgMjEyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAyMTMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzEyRnVuY0V4cHJOb2RlRSBAIDIxNCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTJQcm9wZXJ0eU5vZGVFIEAgMjE1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMlN0
YXRMaXN0Tm9kZUUgQCAyMTYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyVW5kZWZp
bmVkSW1wRSBAIDIxNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBY2Nlc3Nvck5v
ZGUxRSBAIDIxOCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBY2Nlc3Nvck5vZGUy
RSBAIDIxOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBY3RpdmF0aW9uSW1wRSBA
IDIyMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBcmd1bWVudHNOb2RlRSBAIDIy
MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNDYXNlQmxvY2tOb2RlRSBAIDIyMiBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDIyMyBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDIyNCBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDIyNSBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDIyNiBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMTNTdGF0ZW1lbnROb2RlRSBAIDIyNyBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTMTNVbmFyeVBsdXNOb2RlRSBAIDIyOCBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAyMjkgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMjMwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDIzMSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMTRDYXNlQ2xhdXNlTm9kZUUgQCAyMzIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE0Q2xhdXNlTGlzdE5vZGVFIEAgMjMzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxNEVycm9yT2JqZWN0SW1wRSBAIDIzNCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTRMb2dpY2FsTm90Tm9kZUUgQCAyMzUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0
TmF0aXZlRXJyb3JJbXBFIEAgMjM2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNFJl
bGF0aW9uYWxOb2RlRSBAIDIzNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVDb25k
aXRpb25hbE5vZGVFIEAgMjM4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNU51bWJl
ck9iamVjdEltcEUgQCAyMzkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1T2JqZWN0
T2JqZWN0SW1wRSBAIDI0MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVSZWdFeHBP
YmplY3RJbXBFIEAgMjQxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNVJ1bnRpbWVB
cnJheUltcEUgQCAyNDIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1U3RyaW5nT2Jq
ZWN0SW1wRSBAIDI0MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVWYXJEZWNsTGlz
dE5vZGVFIEAgMjQ0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkFyZ3VtZW50TGlz
dE5vZGVFIEAgMjQ1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkFycmF5SW5zdGFu
Y2VJbXBFIEAgMjQ2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkJvb2xlYW5PYmpl
Y3RJbXBFIEAgMjQ3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkRhdGVQcm90b0Z1
bmNJbXBFIEAgMjQ4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkRhdGVQcm90b3R5
cGVJbXBFIEAgMjQ5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkZ1bmN0aW9uQm9k
eU5vZGVFIEAgMjUwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkZ1bmN0aW9uQ2Fs
bE5vZGVFIEAgMjUxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlJ1bnRpbWVNZXRo
b2RJbXBFIEAgMjUyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlJ1bnRpbWVPYmpl
Y3RJbXBFIEAgMjUzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlZhclN0YXRlbWVu
dE5vZGVFIEAgMjU0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0FycmF5UHJvdG9G
dW5jSW1wRSBAIDI1NSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdBcnJheVByb3Rv
dHlwZUltcEUgQCAyNTYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3QmluYXJ5TG9n
aWNhbE5vZGVFIEAgMjU3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0RhdGVPYmpl
Y3RGdW5jSW1wRSBAIDI1OCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdFcnJvclBy
b3RvRnVuY0ltcEUgQCAyNTkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3RXhwclN0
YXRlbWVudE5vZGVFIEAgMjYwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0Z1bmN0
aW9uT2JqZWN0SW1wRSBAIDI2MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdPYmpl
Y3RMaXRlcmFsTm9kZUUgQCAyNjIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3UHJv
cGVydHlWYWx1ZU5vZGVFIEAgMjYzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN1N0
cmluZ0luc3RhbmNlSW1wRSBAIDI2NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThF
bXB0eVN0YXRlbWVudE5vZGVFIEAgMjY1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
OE51bWJlclByb3RvRnVuY0ltcEUgQCAyNjYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzE4T2JqZWN0UHJvdG9GdW5jSW1wRSBAIDI2NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMjY4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAyNjkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzE4U3RyaW5nUHJvdG9GdW5jSW1wRSBAIDI3MCBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAgMjcxIE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBFIEAgMjcyIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxOURlY2xhcmVkRnVuY3Rpb25JbXBFIEAgMjczIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAgMjc0IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxOVN0cmluZ09iamVjdEZ1bmNJbXBFIEAgMjc1IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMyMEZ1bmN0aW9uUHJvdG9GdW5jSW1wRSBAIDI3NiBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMjBGdW5jdGlvblByb3RvdHlwZUltcEUgQCAyNzcg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzROb2RlRSBAIDI3OCBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTNklmTm9kZUUgQCAyNzkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzdBZGROb2RlRSBAIDI4MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN0Zv
ck5vZGVFIEAgMjgxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM3TnVsbEltcEUgQCAy
ODIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzdUcnlOb2RlRSBAIDI4MyBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOEJpbmRpbmdzNkNDbGFzc0UgQCAyODQgTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzhCaW5kaW5nczZDRmllbGRFIEAgMjg1IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlM4QmluZGluZ3M4SW5zdGFuY2VFIEAgMjg2IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlM4QmluZGluZ3M5Q0luc3RhbmNlRSBAIDI4NyBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTOERlYnVnZ2VyRSBAIDI4OCBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTOE11bHROb2RlRSBAIDI4OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTOE51bGxOb2RlRSBAIDI5MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFRoaXNO
b2RlRSBAIDI5MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFZhbHVlSW1wRSBAIDI5
MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFZvaWROb2RlRSBAIDI5MyBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFdpdGhOb2RlRSBAIDI5NCBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTOUFycmF5Tm9kZUUgQCAyOTUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzlCbG9ja05vZGVFIEAgMjk2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5
QnJlYWtOb2RlRSBAIDI5NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUNhdGNoTm9k
ZUUgQCAyOTggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlDb21tYU5vZGVFIEAgMjk5
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5RXF1YWxOb2RlRSBAIDMwMCBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUZvckluTm9kZUUgQCAzMDEgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzlHcm91cE5vZGVFIEAgMzAyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlM5TGFiZWxOb2RlRSBAIDMwMyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
OU51bWJlckltcEUgQCAzMDQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlPYmplY3RJ
bXBFIEAgMzA1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5UmVnRXhwSW1wRSBAIDMw
NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOVNoaWZ0Tm9kZUUgQCAzMDcgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlTdHJpbmdJbXBFIEAgMzA4IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlM5VGhyb3dOb2RlRSBAIDMwOSBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTOVdoaWxlTm9kZUUgQCAzMTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVFZOM0tK
UzEwQXNzaWduTm9kZUUgQCAzMTEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwQm9v
bGVhbkltcEUgQCAzMTIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwRGVsZXRlTm9k
ZUUgQCAzMTMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwTmVnYXRlTm9kZUUgQCAz
MTQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwTnVtYmVyTm9kZUUgQCAzMTUgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwUHJlZml4Tm9kZUUgQCAzMTYgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzEwUmVnRXhwTm9kZUUgQCAzMTcgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzEwUmV0dXJuTm9kZUUgQCAzMTggTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzEwU3RyaW5nTm9kZUUgQCAzMTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzEwU3dpdGNoTm9kZUUgQCAzMjAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEw
VHlwZU9mTm9kZUUgQCAzMjEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExQml0T3Bl
ck5vZGVFIEAgMzIyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMUJvb2xlYW5Ob2Rl
RSBAIDMyMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFEb1doaWxlTm9kZUUgQCAz
MjQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExRWxlbWVudE5vZGVFIEAgMzI1IE5P
TkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMUZpbmFsbHlOb2RlRSBAIDMyNiBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFGdW5jdGlvbkltcEUgQCAzMjcgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzExSW50ZXJwcmV0ZXJFIEAgMzI4IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxMU1hdGhGdW5jSW1wRSBAIDMyOSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTFOZXdFeHByTm9kZUUgQCAzMzAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzExUG9zdGZpeE5vZGVFIEAgMzMxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMx
MVJlc29sdmVOb2RlRSBAIDMzMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFWYXJE
ZWNsTm9kZUUgQCAzMzMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEyQ29udGludWVO
b2RlRSBAIDMzNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJGdW5jRGVjbE5vZGVF
IEAgMzM1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMkZ1bmNFeHByTm9kZUUgQCAz
MzYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEyUHJvcGVydHlOb2RlRSBAIDMzNyBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJTdGF0TGlzdE5vZGVFIEAgMzM4IE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMlVuZGVmaW5lZEltcEUgQCAzMzkgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMUUgQCAzNDAgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMkUgQCAzNDEgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzEzQWN0aXZhdGlvbkltcEUgQCAzNDIgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzEzQXJndW1lbnRzTm9kZUUgQCAzNDMgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzEzQ2FzZUJsb2NrTm9kZUUgQCAzNDQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzEzRGF0ZU9iamVjdEltcEUgQCAzNDUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzEzR2xvYmFsRnVuY0ltcEUgQCAzNDYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzEzTWF0aE9iamVjdEltcEUgQCAzNDcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEz
UGFyYW1ldGVyTm9kZUUgQCAzNDggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzU3Rh
dGVtZW50Tm9kZUUgQCAzNDkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzVW5hcnlQ
bHVzTm9kZUUgQCAzNTAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0QXJyYXlPYmpl
Y3RJbXBFIEAgMzUxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNEFzc2lnbkV4cHJO
b2RlRSBAIDM1MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRCaXR3aXNlTm90Tm9k
ZUUgQCAzNTMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0Q2FzZUNsYXVzZU5vZGVF
IEAgMzU0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNENsYXVzZUxpc3ROb2RlRSBA
IDM1NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRFcnJvck9iamVjdEltcEUgQCAz
NTYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0TG9naWNhbE5vdE5vZGVFIEAgMzU3
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNE5hdGl2ZUVycm9ySW1wRSBAIDM1OCBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRSZWxhdGlvbmFsTm9kZUUgQCAzNTkgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1Q29uZGl0aW9uYWxOb2RlRSBAIDM2MCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVOdW1iZXJPYmplY3RJbXBFIEAgMzYxIE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNU9iamVjdE9iamVjdEltcEUgQCAzNjIgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1UmVnRXhwT2JqZWN0SW1wRSBAIDM2MyBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVSdW50aW1lQXJyYXlJbXBFIEAgMzY0IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNVN0cmluZ09iamVjdEltcEUgQCAzNjUgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzE1VmFyRGVjbExpc3ROb2RlRSBAIDM2NiBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZBcmd1bWVudExpc3ROb2RlRSBAIDM2NyBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZBcnJheUluc3RhbmNlSW1wRSBAIDM2OCBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZCb29sZWFuT2JqZWN0SW1wRSBAIDM2OSBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZEYXRlUHJvdG9GdW5jSW1wRSBAIDM3MCBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZEYXRlUHJvdG90eXBlSW1wRSBAIDM3MSBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZGdW5jdGlvbkJvZHlOb2RlRSBAIDM3MiBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBAIDM3MyBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZSdW50aW1lTWV0aG9kSW1wRSBAIDM3NCBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZSdW50aW1lT2JqZWN0SW1wRSBAIDM3NSBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTZWYXJTdGF0ZW1lbnROb2RlRSBAIDM3NiBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAzNzcgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzE3QXJyYXlQcm90b3R5cGVJbXBFIEAgMzc4IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0JpbmFyeUxvZ2ljYWxOb2RlRSBAIDM3OSBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUgQCAzODAgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3RXJyb3JQcm90b0Z1bmNJbXBFIEAgMzgxIE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0V4cHJTdGF0ZW1lbnROb2RlRSBAIDM4MiBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdGdW5jdGlvbk9iamVjdEltcEUgQCAzODMgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3T2JqZWN0TGl0ZXJhbE5vZGVFIEAgMzg0IE5P
TkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN1Byb3BlcnR5VmFsdWVOb2RlRSBAIDM4NSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdTdHJpbmdJbnN0YW5jZUltcEUgQCAzODYg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4RW1wdHlTdGF0ZW1lbnROb2RlRSBAIDM4
NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThOdW1iZXJQcm90b0Z1bmNJbXBFIEAg
Mzg4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOE9iamVjdFByb3RvRnVuY0ltcEUg
QCAzODkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4UmVnRXhwUHJvdG9GdW5jSW1w
RSBAIDM5MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThTb3VyY2VFbGVtZW50c05v
ZGVFIEAgMzkxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOFN0cmluZ1Byb3RvRnVu
Y0ltcEUgQCAzOTIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4U3RyaW5nUHJvdG90
eXBlSW1wRSBAIDM5MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlCb29sZWFuUHJv
dG9GdW5jSW1wRSBAIDM5NCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlEZWNsYXJl
ZEZ1bmN0aW9uSW1wRSBAIDM5NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlJbnRl
cm5hbEZ1bmN0aW9uSW1wRSBAIDM5NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlT
dHJpbmdPYmplY3RGdW5jSW1wRSBAIDM5NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MjBGdW5jdGlvblByb3RvRnVuY0ltcEUgQCAzOTggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzIwRnVuY3Rpb25Qcm90b3R5cGVJbXBFIEAgMzk5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlM0Tm9kZUUgQCA0MDAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzZJZk5v
ZGVFIEAgNDAxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM3QWRkTm9kZUUgQCA0MDIg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzdGb3JOb2RlRSBAIDQwMyBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTN051bGxJbXBFIEAgNDA0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlM3VHJ5Tm9kZUUgQCA0MDUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzhCaW5kaW5nczZDQ2xhc3NFIEAgNDA2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4
QmluZGluZ3M2Q0ZpZWxkRSBAIDQwNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOEJp
bmRpbmdzOEluc3RhbmNlRSBAIDQwOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOEJp
bmRpbmdzOUNJbnN0YW5jZUUgQCA0MDkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhE
ZWJ1Z2dlckUgQCA0MTAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhNdWx0Tm9kZUUg
QCA0MTEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhOdWxsTm9kZUUgQCA0MTIgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhUaGlzTm9kZUUgQCA0MTMgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzhWYWx1ZUltcEUgQCA0MTQgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzhWb2lkTm9kZUUgQCA0MTUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzhXaXRoTm9kZUUgQCA0MTYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlBcnJheU5v
ZGVFIEAgNDE3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5QmxvY2tOb2RlRSBAIDQx
OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUJyZWFrTm9kZUUgQCA0MTkgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlDYXRjaE5vZGVFIEAgNDIwIE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlM5Q29tbWFOb2RlRSBAIDQyMSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTOUVxdWFsTm9kZUUgQCA0MjIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzlGb3JJbk5vZGVFIEAgNDIzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5R3JvdXBO
b2RlRSBAIDQyNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUxhYmVsTm9kZUUgQCA0
MjUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlOdW1iZXJJbXBFIEAgNDI2IE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5T2JqZWN0SW1wRSBAIDQyNyBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOVJlZ0V4cEltcEUgQCA0MjggTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzlTaGlmdE5vZGVFIEAgNDI5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlM5U3RyaW5nSW1wRSBAIDQzMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVRocm93
Tm9kZUUgQCA0MzEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlXaGlsZU5vZGVFIEAg
NDMyIE5PTkFNRSA7ICM8VlQ+Iw0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0phdmFT
Y3JpcHRDb3JlLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3VwL0phdmFT
Y3JpcHRDb3JlLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAv
SmF2YVNjcmlwdENvcmUubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNDgsNiArNDgsOSBAQA0KIA0K
IA0KIFNZU1RFTUlOQ0xVREUgLi5ca2pzDQorVVNFUklOQ0xVREUgLi5cYmluZGluZ3MNCitTWVNU
RU1JTkNMVURFIC4uXGJpbmRpbmdzDQorU1lTVEVNSU5DTFVERSAuLlxiaW5kaW5nc1xjDQogU1lT
VEVNSU5DTFVERSAuLlxwY3JlDQogU1lTVEVNSU5DTFVERSAuLlwuLlxNZW1vcnlNYW5hZ2VyXGlu
Yw0KICNpZm5kZWYgX19CUk9XU0VSX1NESw0KQEAgLTEwMiw2ICsxMDUsMjQgQEANCiBTT1VSQ0Ug
dmFsdWUuY3BwDQogLy9TT1VSQ0UgV3J0U3RhdGljcy5jcHANCiANCitTT1VSQ0VQQVRIICAuLlxi
aW5kaW5ncw0KKw0KK1NPVVJDRSBucHJ1bnRpbWUuY3BwDQorU09VUkNFIE5QX2pzb2JqZWN0LmNw
cCANCitTT1VSQ0UgcnVudGltZS5jcHAgDQorU09VUkNFIHJ1bnRpbWVfYXJyYXkuY3BwIA0KK1NP
VVJDRSBydW50aW1lX21ldGhvZC5jcHAgDQorU09VUkNFIHJ1bnRpbWVfb2JqZWN0LmNwcCANCitT
T1VSQ0UgcnVudGltZV9yb290LmNwcCANCisvL1NPVVJDRSBzb2Z0bGlua2luZy5jIA0KKw0KK1NP
VVJDRVBBVEggIC4uXGJpbmRpbmdzXGMNCisNCitTT1VSQ0UgY19jbGFzcy5jcHANCitTT1VSQ0Ug
Y19pbnN0YW5jZS5jcHANCitTT1VSQ0UgY19ydW50aW1lLmNwcA0KK1NPVVJDRSBjX3V0aWxpdHku
Y3BwDQorDQogTElCUkFSWSAgICAgICAgIGVzdGxpYi5saWINCiBMSUJSQVJZICAgICAgICAgZXVz
ZXIubGliDQogDQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC0xMzUsMTIgKzEzNSwxMiBAQA0KICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsK
ICAgICBFeGVjU3RhdGUgKmV4ZWMgPSByZXAtPmdsb2JhbEV4ZWMoKTsKICNpZm5kZWYgX19PT01f
XwotCS8vRklYTUU6IG1ha2UgYSBtZW1vcnltYW5hZ2VyIHZlcnNpb24gZm9yIHN0cmR1cAorICAg
IC8vRklYTUU6IG1ha2UgYSBtZW1vcnltYW5hZ2VyIHZlcnNpb24gZm9yIHN0cmR1cAogICAgIGNo
YXIgKmYgPSBzdHJkdXAoc291cmNlVVJMLmFzY2lpKCkpOwogI2Vsc2UKLQljb25zdCBjaGFyKiBz
cyA9IHNvdXJjZVVSTC5hc2NpaSgpOworICAgIGNvbnN0IGNoYXIqIHNzID0gc291cmNlVVJMLmFz
Y2lpKCk7CiAgICAgY2hhciAqZiA9IChjaGFyKilNZW1vcnlNYW5hZ2VyOjpDYWxsb2MoIHN0cmxl
bihzcykgKyAxLCBzaXplb2YoIGNoYXIgKSApOwotCW1lbWNweSggZiwgc3MsIHN0cmxlbiggc3Mg
KSApOworICAgIG1lbWNweSggZiwgc3MsIHN0cmxlbiggc3MgKSApOwogI2VuZGlmCiAgICAgY29u
c3QgY2hhciAqbWVzc2FnZSA9IGNvbXAudmFsdWUoKS50b09iamVjdChleGVjKS50b1N0cmluZyhl
eGVjKS5hc2NpaSgpOwogI2lmbmRlZiBOT0tJQV9DSEFOR0VTCkBAIC0zNjIsMTIgKzM2MiwxMSBA
QA0KICAgcHJpbnRFeGNlcHRpb25zID0gcHJpbnQ7CiB9CiAKLSNpZm5kZWYgTk9LSUFfQ0hBTkdF
UworRVhQT1JUX0MKIHZvaWQgKkludGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9y
VmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3Vh
Z2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IEJpbmRpbmdzOjpSb290T2Jq
ZWN0ICpvcmlnaW4sIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpjdXJyZW50KQogewogICAg
IHJldHVybiBCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1
ZSAoZXhlYywgbGFuZ3VhZ2UsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwogfQotI2VuZGlmCiAK
ICNlbmRpZgogCkBAIC0zODEsNyArMzgwLDcgQEANCiAgIHJlcC0+cmVzdG9yZUJ1aWx0aW5zKGJ1
aWx0aW5zKTsKIH0KIAotU2F2ZWRCdWlsdGluczo6U2F2ZWRCdWlsdGlucygpIDogCitTYXZlZEJ1
aWx0aW5zOjpTYXZlZEJ1aWx0aW5zKCkgOgogICBfaW50ZXJuYWwoMCkKIHsKIH0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUva2pzL2ludGVycHJldGVyLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9pbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNyArMjgsNyBAQA0K
ICNpbmNsdWRlICJvYmplY3QuaCIKICNpbmNsdWRlICJ0eXBlcy5oIgogCi0jaWYgQVBQTEVfQ0hB
TkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKIAogI2luY2x1ZGUgInJ1
bnRpbWUuaCIKIApAQCAtMTE0LDcgKzExNCw3IEBADQogICBjbGFzcyBTYXZlZEJ1aWx0aW5zSW50
ZXJuYWw7CiAKICAgY2xhc3MgU2F2ZWRCdWlsdGlucyB7Ci0JT09NX05FV19ERUxFVEUKKyAgICBP
T01fTkVXX0RFTEVURQogICAgIGZyaWVuZCBjbGFzcyBJbnRlcnByZXRlckltcDsKICAgcHVibGlj
OgogICAgIFNhdmVkQnVpbHRpbnMoKTsKQEAgLTIwNSw4ICsyMDUsOCBAQA0KICAgICAgKi8KICAg
ICBJTVBPUlRfQyBDb21wbGV0aW9uIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCwg
aW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgVVN0cmluZyAmY29kZSwgY29uc3QgVmFsdWUg
JnRoaXNWID0gVmFsdWUoKSk7CiAKLQkvLyBPdmVybG9hZCBvZiBldmFsdWF0ZSB0byBrZWVwIEph
dmFTY3JpcHRHbHVlIGJvdGggc291cmNlIGFuZCBiaW5hcnkgY29tcGF0aWJsZS4KLQlJTVBPUlRf
QyBDb21wbGV0aW9uIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcgJmNvZGUsIGNvbnN0IFZhbHVlICZ0
aGlzViA9IFZhbHVlKCksIGNvbnN0IFVTdHJpbmcgJnNvdXJjZUZpbGVuYW1lID0gVVN0cmluZygp
KTsKKyAgICAvLyBPdmVybG9hZCBvZiBldmFsdWF0ZSB0byBrZWVwIEphdmFTY3JpcHRHbHVlIGJv
dGggc291cmNlIGFuZCBiaW5hcnkgY29tcGF0aWJsZS4KKyAgICBJTVBPUlRfQyBDb21wbGV0aW9u
IGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcgJmNvZGUsIGNvbnN0IFZhbHVlICZ0aGlzViA9IFZhbHVl
KCksIGNvbnN0IFVTdHJpbmcgJnNvdXJjZUZpbGVuYW1lID0gVVN0cmluZygpKTsKIAogICAgIC8q
KgogICAgICAqIEBpbnRlcm5hbApAQCAtMzQwLDcgKzM0MCw3IEBADQogCiAjaWZkZWYgTk9LSUFf
Q0hBTkdFUwogICAgIElNUE9SVF9DIHZvaWQgaW5jU3RhdGVtZW50Q291bnQoKTsKLQlJTVBPUlRf
QyB2b2lkIHJlc2V0U3RhdGVtZW50Q291bnQoKTsKKyAgICBJTVBPUlRfQyB2b2lkIHJlc2V0U3Rh
dGVtZW50Q291bnQoKTsKICAgICBpbnQgc3RhdGVtZW50Q291bnQoKSBjb25zdDsKICNlbmRpZgog
CkBAIC0zODMsOCArMzgzLDggQEANCiAgICAgICogc2VjdXJpdHkgY2hlY2tzLgogICAgICAqLwog
ICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdChjb25zdCBWYWx1ZSAmdikgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICAKLSAgICAvKiogCisKKyAgICAvKioKICAgICAgKiBGaW5kIHRoZSBpbnRl
cnByZXRlciBmb3IgYSBwYXJ0aWN1bGFyIGdsb2JhbCBvYmplY3QuICBUaGlzIHNob3VsZCByZWFs
bHkKICAgICAgKiBiZSBhIHN0YXRpYyBtZXRob2QsIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0IGlzIEMr
Ky4gIEFnYWluLCBhcyB3aXRoIGlzR2xvYmFsT2JqZWN0KCkKICAgICAgKiBpbXBsZW1lbnRhdGlv
biByZWFsbHkgbmVlZCB0byBrbm93IGFib3V0IGFsbCBpbnN0YW5jZXMgb2YgSW50ZXJwcmV0ZXIK
QEAgLTM5Miw3ICszOTIsNyBAQA0KICAgICAgKiBvdmVycmlkZSBvZiB0aGlzIG1ldGhvZCBpcyBj
dXJyZW50bHkgaW4gV2ViQ29yZS4KICAgICAgKi8KICAgICB2aXJ0dWFsIEludGVycHJldGVyICpp
bnRlcnByZXRlckZvckdsb2JhbE9iamVjdCAoY29uc3QgVmFsdWVJbXAgKmltcCkgeyByZXR1cm4g
MDsgfQotICAgIAorCiAgICAgLyoqCiAgICAgICogRGV0ZXJtaW5lIGlmIHRoZSBpdCBpcyAnc2Fm
ZScgdG8gZXhlY3V0ZSBjb2RlIGluIHRoZSB0YXJnZXQgaW50ZXJwcmV0ZXIgZnJvbSBhbgogICAg
ICAqIG9iamVjdCB0aGF0IG9yaWdpbmF0ZWQgaW4gdGhpcyBpbnRlcnByZXRlci4gIFRoaXMgY2hl
Y2sgaXMgdXNlZCB0byBlbmZvcmNlIFdlYkNvcmUKQEAgLTQwMSwxMSArNDAxLDEwIEBADQogICAg
ICAqLwogICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVTY3JpcHQgKGNvbnN0IEludGVycHJldGVyICp0
YXJnZXQpIHsgcmV0dXJuIHRydWU7IH0KIAotI2lmbmRlZiBOT0tJQV9DSEFOR0VTICAgIAorICAg
IElNUE9SVF9DCiAgICAgdmlydHVhbCB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFs
dWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2Ug
bGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0
ICpvcmlnaW4sIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpjdXJyZW50KTsKICNlbmRpZgot
I2VuZGlmCi0gICAgCisKICAgcHJpdmF0ZToKICAgICBJbnRlcnByZXRlckltcCAqcmVwOwogCkBA
IC00MzIsNyArNDMxLDcgQEANCiAgICAqIGFuZCBhbHNvIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBz
dGF0ZSBjb250ZXh0LgogICAgKi8KICAgY2xhc3MgRXhlY1N0YXRlIHsKLQlPT01fTkVXX0RFTEVU
RQorICAgIE9PTV9ORVdfREVMRVRFCiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJldGVySW1wOwog
ICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkltcDsKICNpZiBBUFBMRV9DSEFOR0VTCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvc3RkaW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvc3RkaW50LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy9z
dGRpbnQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDM2ICsyNSwzMyBAQA0KIA0KICNpbmNsdWRl
IDxlMzJkZWYuaD4NCiANCi0jaWZuZGVmIHVpbnQzMl90DQotI2RlZmluZSB1aW50MzJfdCBUVWlu
dDMyDQotI2RlZmluZSBpbnQzMl90CVRJbnQzMg0KLSNlbmRpZg0KK3R5cGVkZWYgdW5zaWduZWQg
Y2hhciB1aW50OF90Ow0KK3R5cGVkZWYgc2lnbmVkIGNoYXIgaW50OF90Ow0KK3R5cGVkZWYgdW5z
aWduZWQgc2hvcnQgdWludDE2X3Q7DQordHlwZWRlZiBzaG9ydCBpbnQxNl90Ow0KK3R5cGVkZWYg
dW5zaWduZWQgaW50IHVpbnQzMl90Ow0KK3R5cGVkZWYgaW50IGludDMyX3Q7DQordHlwZWRlZiBs
b25nIGxvbmcgaW50NjRfdDsNCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50NjRfdDsN
CiANCi0jaWZuZGVmIHVpbnQxNl90DQotI2RlZmluZSB1aW50MTZfdCBUVWludDE2DQotI2RlZmlu
ZSBpbnQxNl90CVRJbnQxNg0KLSNlbmRpZg0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRy
X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGludHB0cl90Ow0KIA0KLSNpZm5kZWYgdWludDhf
dA0KLSNkZWZpbmUgdWludDhfdCBUVWludDgNCi0jZGVmaW5lIGludDhfdAlUSW50OA0KLSNlbmRp
Zg0KLQ0KICNlbHNlDQogDQogI2lmbmRlZiB1aW50MzJfdA0KICNkZWZpbmUgdWludDMyX3QgdW5z
aWduZWQgaW50DQotI2RlZmluZSBpbnQzMl90CWludA0KKyNkZWZpbmUgaW50MzJfdCAgICBpbnQN
CiAjZW5kaWYNCiANCiAjaWZuZGVmIHVpbnQxNl90DQogI2RlZmluZSB1aW50MTZfdCB1bnNpZ25l
ZCBzaG9ydCBpbnQNCi0jZGVmaW5lIGludDE2X3QJIHNob3J0IGludA0KKyNkZWZpbmUgaW50MTZf
dCAgICAgc2hvcnQgaW50DQogI2VuZGlmDQogDQogI2lmbmRlZiB1aW50OF90DQogI2RlZmluZSB1
aW50OF90IHVuc2lnbmVkIGNoYXINCi0jZGVmaW5lIGludDhfdAljaGFyDQorI2RlZmluZSBpbnQ4
X3QgICAgY2hhcg0KICNlbmRpZg0KIA0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy91c3Ry
aW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtNDc3LDYgKzQ3Nyw3IEBADQogICAgICAqLwogICAgIHN0YXRpYyB2b2lkIGdsb2Jh
bENsZWFyKCk7CiAjZW5kaWYKKyAgICBSZXAgKmFyZXAoKSBjb25zdCB7IHJldHVybiByZXA7IH0K
ICAgcHJpdmF0ZToKICAgICBVU3RyaW5nKFJlcCAqcikgeyBhdHRhY2gocik7IH0KICAgICB2b2lk
IGF0dGFjaChSZXAgKnIpIHsgcmVwID0gcjsgci0+cmVmKCk7IH0KSW5kZXg6IFdlYkNvcmUvYnJp
ZGdlL1dlYkNvcmVCcmlkZ2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2Vi
Q29yZUJyaWRnZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvYnJpZGdlL1dlYkNv
cmVCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTY1LDcgKzE2NSw3IEBADQogICAgIH0N
CiAgICAgaVBhcnQtPnNldEJyaWRnZSgwKTsNCiAgICAgaVBhcnQtPmRlcmVmKCk7DQotICAgIA0K
Kw0KICAgICBkZWxldGUgaVNtYXJ0VGV4dEJ1ZmZlcjsNCiAgICAgfQ0KIA0KQEAgLTI5MSw3ICsy
OTEsNyBAQA0KIEVYUE9SVF9DDQogdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q3JlYXRlRG9jdW1lbnRX
aXRoRW5jb2RpbmcoY29uc3QgVERlc0MmIGFFbmNvZGluZywgVEJvb2wgYVVzZXJDaG9zZW4pDQog
ew0KLSAgICBpU21hcnRMaW5rTm9kZSA9IE5VTEw7ICAgIA0KKyAgICBpU21hcnRMaW5rTm9kZSA9
IE5VTEw7DQogICAgIGlQYXJ0LT5zZXRFbmNvZGluZyhRU3RyaW5nOjpGcm9tRGVzKGFFbmNvZGlu
ZyksIGFVc2VyQ2hvc2VuKTsNCiAgICAgQ2xpZW50KCkuRG9jdW1lbnRTdGFydGVkKCk7DQogfQ0K
QEAgLTEzMjYsNiArMTMyNiwxMiBAQA0KIA0KICovDQogRVhQT1JUX0MNCitOUE9iamVjdCogQ1dl
YkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KCkNCit7DQorICAgIHJldHVybiBpUGFy
dC0+d2luZG93U2NyaXB0TlBPYmplY3QoKTsNCit9DQorDQorRVhQT1JUX0MNCiB2b2lkIENXZWJD
b3JlQnJpZGdlOjpTZXROYW1lKGNvbnN0IFREZXNDJiBhTmFtZSkNCiB7DQogICAgIGlQYXJ0LT5L
SFRNTFBhcnQ6OnNldE5hbWUoUVN0cmluZzo6RnJvbURlcyhhTmFtZSkpOw0KQEAgLTE0MjYsMTIg
KzE0MzIsMTIgQEANCiBUUHRyQyBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGb3JT
bWFydExpbmtzTChUQm9vbCYgYUNvbnRpbnVlKQ0KIHsNCiANCi0gICAgaWYoKCFpUGFydCkgfHwg
KCFpUGFydC0+eG1sRG9jSW1wbCgpKSkgDQorICAgIGlmKCghaVBhcnQpIHx8ICghaVBhcnQtPnht
bERvY0ltcGwoKSkpDQogICAgICAgICB7DQogICAgICAgICBhQ29udGludWUgPSBFRmFsc2U7DQog
ICAgICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAgICAgIH0NCi0gIA0KKw0KICAgICBpZiAoaVNt
YXJ0TGlua05vZGUgPT0gTlVMTCkNCiAgICAgICAgIHsNCiAgICAgICAgIGlTbWFydExpbmtOb2Rl
ID0gaVBhcnQtPnhtbERvY0ltcGwoKTsNCkBAIC0xNDQxLDEwICsxNDQ3LDEwIEBADQogICAgICAg
ICAgICAgfQ0KICAgICAgICAgLy9hZGQgcmVmDQogICAgICAgICB9DQotICAgIGVsc2UgDQotICAg
ICAgICB7ICAgDQorICAgIGVsc2UNCisgICAgICAgIHsNCiAgICAgICAgIERPTTo6Tm9kZUltcGwq
IG5vZGVUZW1wID0gaVNtYXJ0TGlua05vZGU7DQotICAgICAgICBpU21hcnRMaW5rTm9kZSA9IGlT
bWFydExpbmtOb2RlLT50cmF2ZXJzZU5leHROb2RlKCk7ICANCisgICAgICAgIGlTbWFydExpbmtO
b2RlID0gaVNtYXJ0TGlua05vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsNCiAgICAgICAgIGlmKGlT
bWFydExpbmtOb2RlKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICBpU21hcnRMaW5rTm9k
ZS0+cmVmKCk7DQpAQCAtMTQ2MCwxNiArMTQ2NiwxNiBAQA0KICAgICAgICAgaWYoaVNtYXJ0TGlu
a05vZGUtPnJlbmRlcmVyKCktPmlzVGV4dCgpKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICBhQ29udGludWUgPSBFVHJ1ZTsNCi0gICAgICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVy
ZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGlTbWFydExpbmtOb2RlLT5yZW5kZXJlcigp
KTsgICAgICAgICAgIA0KKyAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0
YXRpY19jYXN0PFJlbmRlclRleHQgKj4oaVNtYXJ0TGlua05vZGUtPnJlbmRlcmVyKCkpOw0KICAg
ICAgICAgICAgIGRlbGV0ZSBpU21hcnRUZXh0QnVmZmVyOw0KICAgICAgICAgICAgIGlTbWFydFRl
eHRCdWZmZXIgPSBOVUxMOw0KLSAgICAgICAgICAgIGlTbWFydFRleHRCdWZmZXIgPSB0ZXh0UmVu
ZGVyZXItPmRhdGEoKS5zdHJpbmcoKS5EZXMoKS5BbGxvY0woKTsgICAgICAgICAgICAgICAgDQor
ICAgICAgICAgICAgaVNtYXJ0VGV4dEJ1ZmZlciA9IHRleHRSZW5kZXJlci0+ZGF0YSgpLnN0cmlu
ZygpLkRlcygpLkFsbG9jTCgpOw0KICAgICAgICAgICAgIHJldHVybiBpU21hcnRUZXh0QnVmZmVy
LT5QdHIoKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogDQogICAgIERPTTo6Tm9kZUlt
cGwqIG5vZGVUZW1wID0gaVNtYXJ0TGlua05vZGU7DQotICAgIGlTbWFydExpbmtOb2RlID0gaVNt
YXJ0TGlua05vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsgICANCisgICAgaVNtYXJ0TGlua05vZGUg
PSBpU21hcnRMaW5rTm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOw0KICAgICBpZihpU21hcnRMaW5r
Tm9kZSkNCiAgICAgICAgIHsNCiAgICAgICAgIGlTbWFydExpbmtOb2RlLT5yZWYoKTsNCkBAIC0x
NDc5LDEzICsxNDg1LDEzIEBADQogICAgIH0NCiANCiAgICAgYUNvbnRpbnVlID0gRUZhbHNlOw0K
LSAgICByZXR1cm4gVFB0ckMoKTsgICAgDQorICAgIHJldHVybiBUUHRyQygpOw0KIH0NCiANCiBF
WFBPUlRfQw0KIHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKGNvbnN0IFRE
ZXNDJiBhVGV4dCwgUkFycmF5PFRSZWN0PiYgYVJlY3QpDQogew0KLSAgaVBhcnQtPmdldFJlbmRl
clRleHRSZWN0QXJyYXkoYVRleHQsIE5vZGUoaVNtYXJ0TGlua05vZGUpLCBhUmVjdCk7ICAgDQor
ICBpUGFydC0+Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShhVGV4dCwgTm9kZShpU21hcnRMaW5rTm9k
ZSksIGFSZWN0KTsNCiB9DQogDQogDQpAQCAtMjA5Myw3ICsyMDk5LDcgQEANCiAgICAgICAgIG5l
dyhFTGVhdmUpIENBcnJheVB0ckZsYXQ8Q1dlYkNvcmVQYWdlRGF0YUl0ZW0+KDEwKTsNCiAgICAg
Q2xlYW51cFN0YWNrOjpQdXNoTCggaXRlbUFycmF5ICk7DQogICAgIENXZWJDb3JlUGFnZURhdGFJ
dGVtKiBkYXRhSXRlbSA9IE5VTEw7DQotICAgIA0KKw0KICAgICAvLyBnZXQgcGFnZSBtYXJrdXAg
ZG9jdW1lbnQgaWYgcmVxdWVzdGVkDQogICAgIGlmKGFUeXBlTWFzayAmIENXZWJDb3JlUGFnZURh
dGFJdGVtOjpFTWFya3VwKQ0KICAgICAgICAgew0KQEAgLTIxMDEsOCArMjEwNyw4IEBADQogICAg
ICAgICBkYXRhSXRlbSA9IENXZWJDb3JlUGFnZURhdGFJdGVtOjpOZXdMKENXZWJDb3JlUGFnZURh
dGFJdGVtOjpFTWFya3VwKTsNCiAgICAgICAgIENsZWFudXBTdGFjazo6UHVzaEwoIGRhdGFJdGVt
ICk7DQogICAgICAgICBkYXRhSXRlbS0+U2V0VXJsTChpUGFydC0+cmVxdWVzdGVkVVJMU3RyaW5n
KCkuRGVzKCkpOw0KLSAgICAgICAgZGF0YUl0ZW0tPlNldENvbnRlbnRUeXBlTChfTCgidGV4dC9o
dG1sIikpOyAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICAgICAgZGF0YUl0ZW0tPlNldENo
YXJzZXRMKF9MKCJ1Y3MtMiIpKTsgDQorICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVudFR5cGVM
KF9MKCJ0ZXh0L2h0bWwiKSk7DQorICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVj
cy0yIikpOw0KICAgICAgICAgZGF0YUl0ZW0tPlNldERhdGFMKCBwYWdlTWFya3VwUS5EZXMoKSAp
Ow0KICAgICAgICAgaXRlbUFycmF5LT5BcHBlbmRMKGRhdGFJdGVtKTsNCiAgICAgICAgIENsZWFu
dXBTdGFjazo6UG9wKCBkYXRhSXRlbSApOw0KQEAgLTIxMjQsOSArMjEzMCw5IEBADQogICAgICAg
ICAgICAgICAgIENsZWFudXBTdGFjazo6UHVzaEwoIGRhdGFJdGVtICk7DQogICAgICAgICAgICAg
ICAgIGRhdGFJdGVtLT5TZXRVcmxMKHNoZWV0VXJsLnN0cmluZygpLkRlcygpKTsNCiAgICAgICAg
ICAgICAgICAgZGF0YUl0ZW0tPlNldENvbnRlbnRUeXBlTChkU3R5bGVzaGVldC50eXBlKCkuc3Ry
aW5nKCkuRGVzKCkpOw0KLSAgICAgICAgICAgICAgICAvL0NoYXJzZXQgaXMgcmVxdWlyZWQgZm9y
IHNhdmVkIHBhZ2VzLiAgIA0KKyAgICAgICAgICAgICAgICAvL0NoYXJzZXQgaXMgcmVxdWlyZWQg
Zm9yIHNhdmVkIHBhZ2VzLg0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwo
X0woInVjcy0yIikpOw0KLSAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoa1N0eWxl
U2hlZXQtPnNoZWV0KCkuc3RyaW5nKCkuRGVzKCkpOyAgICAgICAgICAgICAgICANCisgICAgICAg
ICAgICAgICAgZGF0YUl0ZW0tPlNldERhdGFMKGtTdHlsZVNoZWV0LT5zaGVldCgpLnN0cmluZygp
LkRlcygpKTsNCiAgICAgICAgICAgICAgICAgaXRlbUFycmF5LT5BcHBlbmRMKGRhdGFJdGVtICk7
DQogICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCBkYXRhSXRlbSApOw0KICAgICAg
ICAgICAgICAgICB9DQpAQCAtMjE1Myw3ICsyMTU5LDcgQEANCiAgICAgICAgICAgICAgICAgQ2xl
YW51cFN0YWNrOjpQdXNoTCggZGF0YUl0ZW0gKTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0t
PlNldFVybEwoc2NyaXB0VXJsLnN0cmluZygpLkRlcygpKTsNCiAgICAgICAgICAgICAgICAgZGF0
YUl0ZW0tPlNldENvbnRlbnRUeXBlTChfTCgiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IikpOw0K
LSAgICAgICAgICAgICAgICAvLyBDaGFyc2V0IGlzIHJlcXVpcmVkIGZvciBzYXZlZCBwYWdlcy4g
DQorICAgICAgICAgICAgICAgIC8vIENoYXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2Vz
Lg0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVjcy0yIikpOw0K
ICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoa1NjcmlwdC0+c2NyaXB0KCkuc3Ry
aW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAgICAgICBpdGVtQXJyYXktPkFwcGVuZEwoZGF0YUl0
ZW0pOw0KQEAgLTI4NTksMTQgKzI4NjUsMTQgQEANCiB7DQogICAgIGlmKCFpUGFydCB8fCAhaVBh
cnQtPnhtbERvY0ltcGwoKSkgcmV0dXJuIEVGYWxzZTsNCiAgICAgaWYoYUluaXRpYWxpemUpIHsN
Ci0gICAgICAgIA0KKw0KICAgICAgICAgaWYgKGlQYXJ0LT54bWxEb2NJbXBsKCkgJiYgaVBhcnQt
PnhtbERvY0ltcGwoKS0+Zm9jdXNOb2RlKCkpew0KICAgICAgICAgICAgIFFQb2ludCBjcChpUGFy
dC0+eG1sRG9jSW1wbCgpLT5mb2N1c05vZGUoKS0+Z2V0UmVjdCgpLmNlbnRlcigpKTsNCiAgICAg
ICAgICAgICBpUGFydC0+c2V0Q3Vyc29yUG9zaXRpb24oY3ApOw0KICAgICAgICAgICAgIGlQYXJ0
LT52aWV3KCktPkdldERvY3VtZW50VmlldygpLlNldEZvY3VzKEVUcnVlKTsNCiAgICAgICAgICAg
ICByZXR1cm4gRVRydWU7DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAgICAgIFFQdHJM
aXN0PEtQYXJ0czo6UmVhZE9ubHlQYXJ0PiBjaGlsZFBhcnRMaXN0ID0gaVBhcnQtPmZyYW1lcygp
Ow0KICAgICAgICAgZm9yKEtQYXJ0czo6UmVhZE9ubHlQYXJ0KiBjaGlsZFBhcnQgPSBjaGlsZFBh
cnRMaXN0LmZpcnN0KCk7Y2hpbGRQYXJ0O2NoaWxkUGFydCA9IGNoaWxkUGFydExpc3QubmV4dCgp
KXsNCiAgICAgICAgICAgICBLSFRNTFBhcnQgKmtodG1sX3BhcnQgPSBzdGF0aWNfY2FzdDxLSFRN
TFBhcnQgKj4oY2hpbGRQYXJ0KTsNCkBAIC0yODg0LDcgKzI4OTAsNyBAQA0KICAgICAgICAgaVBh
cnQtPnRhYmJlZE5hdmlnYXRpb24oMCwxLGFFbFR5cGUsIGFJbml0aWFsaXplKTsNCiAgICAgICAg
IHJldHVybiBFVHJ1ZTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgaW50IGxyID0gKGFEaXJlY3Rp
b24gPT0gRVdlYk5hdkxlZnQpID8gLTEgOiAoYURpcmVjdGlvbiA9PSBFV2ViTmF2UmlnaHQpID8g
MSA6IDAgOw0KICAgICBpbnQgdGIgPSAobHIgIT0gMCkgPyAwOiAoYURpcmVjdGlvbiA9PSBFV2Vi
TmF2VXApID8gLTEgOiAxIDsNCiAgICAgYm9vbCBmb3VuZCA9IGlQYXJ0LT50YWJiZWROYXZpZ2F0
aW9uKGxyLHRiLGFFbFR5cGUsYUluaXRpYWxpemUpOw0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL1dl
YkNvcmVCcmlkZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlk
Z2UuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMTMzLDYgKzEzMywxMyBAQA0KIGNsYXNzIEtIVE1MVmlldzsN
CiBjbGFzcyBSZW5kZXJBcmVuYTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK25h
bWVzcGFjZSBLSlMgew0KKyAgICBjbGFzcyBFeGVjU3RhdGU7DQorICAgIGNsYXNzIE9iamVjdElt
cDsNCisgICAgY2xhc3MgUHJvdGVjdGVkVmFsdWU7DQorfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJf
V0lER0VUUw0KIG5hbWVzcGFjZSBraHRtbCB7DQogICAgIGNsYXNzIFJlbmRlclBhcnQ7DQogICAg
IGNsYXNzIFJlbmRlck9iamVjdDsNCkBAIC0xNTksNiArMTY2LDcgQEANCiANCiBjbGFzcyBDV2Vi
Q29yZUdyYXBoaWNzQ29udGV4dDsNCiBjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbTsNCitjbGFz
cyBOUE9iamVjdDsNCiANCiB0eXBlZGVmIGtodG1sOjpSZW5kZXJQYXJ0IEtIVE1MUmVuZGVyUGFy
dDsNCiANCkBAIC0yNDUsOCArMjUzLDggQEANCiAgICAgICAgIElNUE9SVF9DIFRQdHJDIFJlZmVy
cmVyKCkgY29uc3Q7DQogICAgICAgICBJTVBPUlRfQyBUUHRyQyBEb21haW4oKSBjb25zdDsNCiAg
ICAgICAgIElNUE9SVF9DIEhCdWZDKiBHZXRUZXh0Q29udGVudEwoKTsNCi0gICAgICAgICAgICAg
ICAgDQotICAgICAgICBJTVBPUlRfQyBUUHRyQyBHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlu
a3NMKFRCb29sJiBhS2VlcEdvaW5nKTsgICAgDQorDQorICAgICAgICBJTVBPUlRfQyBUUHRyQyBH
ZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKFRCb29sJiBhS2VlcEdvaW5nKTsNCiAgICAg
ICAgIElNUE9SVF9DIHZvaWQgR2V0UmVuZGVyVGV4dEFyZWEoY29uc3QgVERlc0MmIGFUZXh0LCBS
QXJyYXk8VFJlY3Q+JiBhUmVjdCk7DQogDQogICAgICAgICBJTVBPUlRfQyB2b2lkIEluc3RhbGxJ
bkZyYW1lKE1XZWJDb3JlU2Nyb2xsVmlldyYgYVZpZXcpOw0KQEAgLTQ0Miw2ICs0NTAsNyBAQA0K
ICAgICAgICAgLy92b2lkIGVuc3VyZUNhcmV0VmlzaWJsZTsNCiANCiAgICAgICAgIC8vLSAoV2Vi
U2NyaXB0T2JqZWN0ICopd2luZG93U2NyaXB0T2JqZWN0Ow0KKyAgICAgICAgSU1QT1JUX0MgTlBP
YmplY3QqIFdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7DQogDQogICAgICAgICAvLy0gKE5TRHJhZ09w
ZXJhdGlvbilkcmFnT3BlcmF0aW9uRm9yRHJhZ2dpbmdJbmZvKGlkIDxOU0RyYWdnaW5nSW5mbz4p
aW5mbzsNCiAgICAgICAgIC8vdm9pZCBkcmFnRXhpdGVkV2l0aERyYWdnaW5nSW5mbyhpZCA8TlNE
cmFnZ2luZ0luZm8+KWluZm87DQpAQCAtNTEyLDExICs1MjEsMTEgQEANCiAgICAgICAgIFRCb29s
IGlTaG91bGRDcmVhdGVSZW5kZXJlcnM7DQogICAgICAgICAvLyBwb2ludGVyIHRvIHRoZSBjbGll
bnQgc2lkZSBicmlkZ2UgaW50ZXJmYWNlDQogICAgICAgICBNV2ViQ2xpZW50QnJpZGdlKiBpQ2xp
ZW50QnJpZGdlOw0KLSAgICAgICAgLy9wb2ludGVyIGZvciByZW5kZXIgdGV4dCBvYmplY3QgZm9y
IHNtYXJ0IGxpbmsgcGFyc2luZyANCisgICAgICAgIC8vcG9pbnRlciBmb3IgcmVuZGVyIHRleHQg
b2JqZWN0IGZvciBzbWFydCBsaW5rIHBhcnNpbmcNCiAgICAgICAgIERPTTo6Tm9kZUltcGwqIGlT
bWFydExpbmtOb2RlOw0KICAgICAgICAgLy9wb2ludGVyIGZvciBzbWFydCB0ZXh0IGJ1ZmZlcg0K
ICAgICAgICAgSEJ1ZkMqIGlTbWFydFRleHRCdWZmZXI7DQotICAgICAgICANCisNCiAgICAgfTsN
CiANCiANCkBAIC02MTQsNyArNjIzLDcgQEANCiAgICAgdmlydHVhbCBUQm9vbCBEZWZlcnNMb2Fk
aW5nKCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgU2V0RGVmZXJzTG9hZGluZyhUQm9vbCBhTG9h
ZGluZykgPSAwOw0KIA0KLSAgICB2aXJ0dWFsIHZvaWQgU2F2ZUZvcm1EYXRhKGNvbnN0IENBcnJh
eVB0ckZsYXQ8Q1dlYkNvcmVGb3JtRGF0YUVsZW1lbnQ+JiBhRm9ybURhdGEpID0gMDsgDQorICAg
IHZpcnR1YWwgdm9pZCBTYXZlRm9ybURhdGEoY29uc3QgQ0FycmF5UHRyRmxhdDxDV2ViQ29yZUZv
cm1EYXRhRWxlbWVudD4mIGFGb3JtRGF0YSkgPSAwOw0KIA0KICAgICB2aXJ0dWFsIHZvaWQgU2F2
ZURvY3VtZW50U3RhdGUoY29uc3QgVEFycmF5PFRQdHJDPiYgYURvY3VtZW50U3RhdGUpID0gMDsN
CiAgICAgdmlydHVhbCBUQXJyYXk8VFB0ckM+KiBEb2N1bWVudFN0YXRlKCkgY29uc3QgPSAwOw0K
QEAgLTcxNyw2ICs3MjYsOSBAQA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0Rm9ybUNvbnRyb2xUZXh0
QnlOYW1lKGNvbnN0IFREZXNDJiBhTmFtZSwgY29uc3QgVERlc0MmIGFWYWx1ZSkgPSAwOw0KIA0K
ICAgICB2aXJ0dWFsIFRCb29sIENhbmNlbEluUHJvZ3Jlc3MoKSA9IDA7DQorI2lmZGVmICBSRF9C
Uk9XU0VSX1dJREdFVFMNCisgICAgdmlydHVhbCBLSlM6Ok9iamVjdEltcCogY3JlYXRlV2lkZ2V0
T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKSA9IDA7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9X
SURHRVRTDQogfTsNCiANCiAjZW5kaWYgICAgICAvLyBXRUJDT1JFQlJJREdFX0gNCkluZGV4OiBX
ZWJDb3JlL2JyaWRnZS9XZWJDb3JlV2lkZ2V0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Jy
aWRnZS9XZWJDb3JlV2lkZ2V0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvYnJpZGdl
L1dlYkNvcmVXaWRnZXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTk0LDYgKzk0LDcgQEANCiAgICAg
dmlydHVhbCB2b2lkIFNldE91dGxpbmVXaWR0aChUVWludDggKSB7fQ0KIA0KICAgICB2aXJ0dWFs
IHZvaWQgU2V0V3JpdGluZ0RpcmVjdGlvblJ0bChUQm9vbCkge30NCisgICAgdmlydHVhbCB2b2lk
KiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCkgeyByZXR1cm4gMDsgfQ0KICAgfTsNCiANCiANCklu
ZGV4OiBXZWJDb3JlL0JXSU5TL1dFQkNPUkVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
QldJTlMvV0VCQ09SRVUuREVGCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL0JXSU5TL1dF
QkNPUkVVLkRFRgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMTU5ICsxLDE2MCBAQA0KIEVYUE9SVFMN
Ci0JPz8xQ1dlYkNvcmVTZXR0aW5nc0BAVUFFQFhaIEAgMSBOT05BTUUgOyBDV2ViQ29yZVNldHRp
bmdzOjp+Q1dlYkNvcmVTZXR0aW5ncyh2b2lkKQ0KLQk/QWN0aXZhdGVBY2Nlc3NLZXlzQENXZWJD
b3JlQnJpZGdlQEBRQUVYVVRLZXlFdmVudEBAQFogQCAyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OkFjdGl2YXRlQWNjZXNzS2V5cyhzdHJ1Y3QgVEtleUV2ZW50KQ0KLQk/QWN0aXZhdGVF
dmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVlRQb2ludEBAQFogQCAzIE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OkFjdGl2YXRlRXZlbnQoY2xhc3MgVFBvaW50ICYpDQotCT9BZGREYXRh
QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6QWRkRGF0YShjbGFzcyBURGVzQzggY29uc3QgJikNCi0JP0FkZEl0ZW1Ub0Nh
Y2hlTEBUV2ViQ29yZUNhY2hlQEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5mb0BA
QUFWVERlc0M4QEBIQFogQCA1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6QWRkSXRlbVRv
Q2FjaGVMKGNsYXNzIE1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNsYXNzIFREZXND
OCAmLCBpbnQpDQotCT9BZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50
QEBAWiBAIDYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250YWN0cyhjbGFz
cyBUUG9pbnQgJikNCi0JP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA3
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZvaWQpDQotCT9B
bHRUZXh0QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDggTk9OQU1F
IDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRUZXh0KHZvaWQpDQot
CT9BdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgOSBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVkKHZvaWQpIGNvbnN0DQot
CT9Cb2R5QmFja2dyb3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdiQEBYWiBAIDEw
IE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJvZHlCYWNrZ3JvdW5kQ29sb3Io
dm9pZCkNCi0JP0NhbkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgMTEgTk9OQU1F
IDsgaW50IENXZWJDb3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uodm9pZCkgY29uc3QNCi0JP0NsZWFy
RmluZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMTIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJy
aWRnZTo6Q2xlYXJGaW5kKHZvaWQpDQotCT9DbGllbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUFBVk1X
ZWJDbGllbnRCcmlkZ2VAQFhaIEAgMTMgTk9OQU1FIDsgY2xhc3MgTVdlYkNsaWVudEJyaWRnZSAm
IENXZWJDb3JlQnJpZGdlOjpDbGllbnQodm9pZCkNCi0JP0Nsb3NlVVJMQENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCAxNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbG9zZVVSTCh2b2lk
KQ0KLQk/Q29va2llQWRhcHRlckBUV2ViQ29yZUNvb2tpZUZhY3RvcnlAQFNBUEFWTVdlYkNvcmVD
b29raWVBZGFwdGVyQEBYWiBAIDE1IE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlQ29va2llQWRhcHRl
ciAqIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6Q29va2llQWRhcHRlcih2b2lkKQ0KLQk/Q3JlYXRl
RG9jdW1lbnRXaXRoRW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIQFog
QCAxNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNv
ZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCkNCi0JP0NyZWF0ZUtIVE1MVmlld0BDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFBVk1XZWJDb3JlU2Nyb2xsVmlld0BASEhAWiBAIDE3IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZUtIVE1MVmlldyhjbGFzcyBNV2ViQ29yZVNjcm9s
bFZpZXcgJiwgaW50LCBpbnQpDQotCT9DdXJzaXZlRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdz
QEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE4IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVT
ZXR0aW5nczo6Q3Vyc2l2ZUZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0RlQWN0aXZhdGVFdmVu
dEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkRlQWN0aXZhdGVFdmVudChpbnQpDQotCT9EZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkVIWFogQCAyMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVm
YXVsdEZpeGVkRm9udFNpemUodm9pZCkgY29uc3QNCi0JP0RlZmF1bHRGb250U2l6ZUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkVIWFogQCAyMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVm
YXVsdEZvbnRTaXplKHZvaWQpIGNvbnN0DQotCT9EZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3Jl
U2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMjIgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBD
V2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQotCT9EZWZl
cnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpEZWZlcnNUaW1lcnModm9pZCkNCi0JP0RldGVybWluZUN1cnNvclBvc2l0aW9uQENX
ZWJDb3JlQnJpZGdlQEBRQUVIQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVj
dEBAMUFBVlRQb2ludEBASEBaIEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpEZXRl
cm1pbmVDdXJzb3JQb3NpdGlvbihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGNs
YXNzIFRSZWN0ICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQpDQotCT9EaWRO
b3RPcGVuVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAyNSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3Qg
JikNCi0JP0RvbWFpbkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCAyNiBOT05B
TUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkgY29uc3QNCi0J
P0RyYXdSZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNXZWJDb3JlR3JhcGhp
Y3NDb250ZXh0QEBAWiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRyYXdSZWN0
KGNsYXNzIFRSZWN0IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICYpDQot
CT9EdW1wUmVuZGVyVHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjggTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCi0JP0VuZEBDV2ViQ29yZUJy
aWRnZUBAUUFFWFhaIEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RW5kKHZvaWQp
DQotCT9FeGVjdXRlU2NyaXB0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAz
MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVjdXRlU2NyaXB0KGNsYXNzIFREZXND
MTYgY29uc3QgJikNCi0JP0ZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNBUEFW
TVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFhaIEAgMzEgTk9OQU1FIDsgY2xhc3MgTVdlYkNv
cmVGb3JtQ29udHJvbEZhY3RvcnkgKiBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6RmFjdG9y
eSh2b2lkKQ0KLQk/RmFjdG9yeUBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QEBTQVBBVk1X
ZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFhaIEAgMzIgTk9OQU1FIDsgY2xhc3MgTVdlYkNv
cmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk6OkZh
Y3Rvcnkodm9pZCkNCi0JP0ZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVBB
Vk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMyBOT05BTUUgOyBjbGFzcyBNV2Vi
Q29yZVRleHRSZW5kZXJlckZhY3RvcnkgKiBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6OkZh
Y3Rvcnkodm9pZCkNCi0JP0ZhbnRhc3lGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9B
VlRQdHJDMTZAQFhaIEAgMzQgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdz
OjpGYW50YXN5Rm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/RmFzdEZpcnN0RGlzcGxheU1vZGVA
Q1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDM1IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6
RmFzdEZpcnN0RGlzcGxheU1vZGUodm9pZCkgY29uc3QNCi0JP0ZpbmRMaW5rc09mVHlwZUBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFVUV2ViQ29yZUxpbmtJdGVt
QEBAQEBaIEAgMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RmluZExpbmtzT2ZUeXBl
KGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PHN0cnVjdCBUV2ViQ29yZUxpbmtJ
dGVtPiAmKQ0KLQk/Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJD
MTZAQFhaIEAgMzcgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGaXhl
ZEZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAzOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpGb3JjZUxheW91dEFkanVzdGluZ1ZpZXdTaXplKGludCkNCi0JP0dldFBhZ2VEYXRhTEBDV2Vi
Q29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlQdHJAVkNXZWJDb3JlUGFnZURhdGFJdGVtQEBAQEhA
WiBAIDM5IE5PTkFNRSA7IGNsYXNzIENBcnJheVB0cjxjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRl
bT4gKiBDV2ViQ29yZUJyaWRnZTo6R2V0UGFnZURhdGFMKGludCkNCi0JP0dldFRleHRDb250ZW50
TEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAWFogQCA0MCBOT05BTUUgOyBjbGFzcyBI
QnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KLQk/R2V0VXJs
T2ZOb2RlSW5Gb2N1c0xAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFBVlRQb2ludEBA
QFogQCA0MSBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFVybE9m
Tm9kZUluRm9jdXNMKGNsYXNzIFRQb2ludCAmKSBjb25zdA0KLQk/SGFzUGVuZGluZ0xheW91dEBD
V2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpI
YXNQZW5kaW5nTGF5b3V0KHZvaWQpIGNvbnN0DQotCT9IaXN0b3J5UHJvdmlkZXJAVFdlYkNvcmVI
aXN0b3J5QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5PTkFNRSA7IGNs
YXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpIaXN0b3J5UHJv
dmlkZXIodm9pZCkNCi0JP0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhIQFogQCA0NCBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KLQk/SW1hZ2VUeXBl
QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5PTkFNRSA7IGNs
YXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZvaWQpDQotCT9J
bWFnZXNJblJlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4RmxhdEBWVFdlYkNv
cmVJbWFnZUNhcnJpZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0FycmF5Rml4RmxhdDxj
bGFzcyBUV2ViQ29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VzSW5SZWN0
KGludCkNCi0JP0luaXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVkNXZWJD
b3JlU2V0dGluZ3NAQEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5pdGlh
bGl6ZVNldHRpbmdzKGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3QgJikNCi0JP0luc3RhbGxJ
bkZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDQ4
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJbkZyYW1lKGNsYXNzIE1XZWJD
b3JlU2Nyb2xsVmlldyAmKQ0KLQk/SXNGcmFtZVNldEBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAg
NDkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpJc0ZyYW1lU2V0KHZvaWQpIGNvbnN0DQot
CT9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1MCBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTEg
Tk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRFbmFibGVkQENXZWJDb3JlU2V0
dGluZ3NAQFFCRUhYWiBAIDUyIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhU2Ny
aXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KLQk/SnVtcFRvU2VsZWN0aW9uQENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCA1MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpKdW1wVG9TZWxlY3Rp
b24odm9pZCkNCi0JP0tleUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVIVVRLZXlFdmVudEBASEBa
IEAgNTQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpLZXlFdmVudChzdHJ1Y3QgVEtleUV2
ZW50LCBpbnQpDQotCT9Mb2FkSW1hZ2VzQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1NSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpMb2FkSW1hZ2VzKHZvaWQpDQotCT9Mb2FkZXJDb250
YWluZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBUEFWTVdlYkNvcmVMb2FkZXJDb250YWlu
ZXJAQFhaIEAgNTYgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKiBUV2Vi
Q29yZUxvYWRlckNvbnRhaW5lcjo6TG9hZGVyQ29udGFpbmVyKHZvaWQpDQotCT9NaW5pbXVtRm9u
dFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTcgTk9OQU1FIDsgaW50IENXZWJDb3Jl
U2V0dGluZ3M6Ok1pbmltdW1Gb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/TWluaW11bUxvZ2ljYWxG
b250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1OCBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVTZXR0aW5nczo6TWluaW11bUxvZ2ljYWxGb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/TmFtZUBD
V2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA1OSBOT05BTUUgOyBjbGFzcyBUUHRy
QzE2IENXZWJDb3JlQnJpZGdlOjpOYW1lKHZvaWQpIGNvbnN0DQotCT9OYXZpZ2FibGVOb2RlVW5k
ZXJDdXJzb3JAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhBQVZUUG9pbnRAQEFBVzRUV2ViQ29yZUZvY3Vz
ZWRFbGVtZW50VHlwZUBAQUFWVFJlY3RAQEBaIEAgNjAgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpOYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdlYkNv
cmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCi0JP05lZWRzTGF5
b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6Ok5lZWRzTGF5b3V0KHZvaWQpIGNvbnN0DQotCT9OZXdMQENXZWJDb3JlQnJpZGdlQEBTQVBB
VjFAQUFWTVdlYkNsaWVudEJyaWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUJy
aWRnZSAqIENXZWJDb3JlQnJpZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlkZ2UgJikNCi0J
P05ld0xAQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0R2NAQFBBVkNG
YnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBD
V2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpOZXdMKGNs
YXNzIENGYnNCaXRHYyAmLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xs
VmlldyAqKQ0KLQk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQFBBVkNGYnNC
aXRtYXBEZXZpY2VAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2
NCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhp
Y3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3MgQ0Zic0JpdG1h
cCAqLCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgKikNCi0JP05ld0xAQ1dlYkNvcmVTZXR0aW5n
c0BAU0FQQVYxQFhaIEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyAqIENXZWJD
b3JlU2V0dGluZ3M6Ok5ld0wodm9pZCkNCi0JP05vdGlmeURlY29kaW5nRXJyb3JAQ1dlYkNvcmVJ
bWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUlt
YWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZvaWQpDQotCT9Ob3RpZnlG
aW5pc2hlZEBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NyBOT05BTUUg
OyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeUZpbmlzaGVkKHZvaWQp
DQotCT9Ob3RpZnlVcGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAg
NjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlVcGRh
dGUodm9pZCkNCi0JP051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0BDV2ViQ29yZUJyaWRnZUBA
UUFFSFhaIEAgNjkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOdW1QZW5kaW5nT3JMb2Fk
aW5nUmVxdWVzdHModm9pZCkNCi0JP09wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVz
QzE2QEBIMDBBQlZURGF0ZVRpbWVAQEBaIEAgNzAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6T3BlblVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgY2xhc3MgVERlc0MxNiBjb25z
dCAmLCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRlVGltZSBjb25zdCAmKQ0KLQk/
UGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBUEFWTVdlYkNvcmVQbHVnaW5I
YW5kbGVyQEBYWiBAIDcxIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAqIFRX
ZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2luSGFuZGxlcih2b2lkKQ0KLQk/UGx1Z2luc0VuYWJs
ZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNzIgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0
dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9Qb2ludGVyRXZlbnRAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhVVFBvaW50ZXJFdmVudEBAQFogQCA3MyBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoc3RydWN0IFRQb2ludGVyRXZlbnQpDQotCT9Qb2ludGVy
RXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhXNFRUeXBlQFRQb2ludGVyRXZlbnRAQEFCVlRQb2lu
dEBAQFogQCA3NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoZW51
bSBUUG9pbnRlckV2ZW50OjpUVHlwZSwgY2xhc3MgVFBvaW50IGNvbnN0ICYpDQotCT9QcmVwYXJl
Rm9yRXhpdEBDV2ViQ29yZUJyaWRnZUBAU0FYWFogQCA3NSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpQcmVwYXJlRm9yRXhpdCh2b2lkKQ0KLQk/UHJvdmlzaW9uYWxMb2FkU3RhcnRlZEBD
V2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2b2lkKQ0KLQk/UmF3RGF0YUBUV2ViQ29yZUltYWdlQ2Fy
cmllckBAUUFFQUFWVFB0ckM4QEBYWiBAIDc3IE5PTkFNRSA7IGNsYXNzIFRQdHJDOCAmIFRXZWJD
b3JlSW1hZ2VDYXJyaWVyOjpSYXdEYXRhKHZvaWQpDQotCT9SZWFwcGx5U3R5bGVzRm9yRGV2aWNl
VHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDc4IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlKGVu
dW0gVFdlYkNvcmVEZXZpY2VUeXBlKQ0KLQk/UmVmZXJyZXJAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9B
VlRQdHJDMTZAQFhaIEAgNzkgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6
UmVmZXJyZXIodm9pZCkgY29uc3QNCi0JP1JlbW92ZUZpbGVOYW1lQENXZWJDb3JlQnJpZGdlQEBR
QUVYQUFWVFBvaW50QEBAWiBAIDgwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92
ZUZpbGVOYW1lKGNsYXNzIFRQb2ludCAmKQ0KLQk/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3JlQnJp
ZGdlQEBRQUVYWFogQCA4MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZW1vdmVGcm9t
RnJhbWUodm9pZCkNCi0JP1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVjBraHRtbEBA
WFogQCA4MiBOT05BTUUgOyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJDb3JlQnJpZGdl
OjpSZW5kZXJQYXJ0KHZvaWQpIGNvbnN0DQotCT9SZW5kZXJlckBUV2ViQ29yZUltYWdlQ2Fycmll
ckBAUUFFUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7IGNsYXNzIE1X
ZWJDb3JlSW1hZ2VSZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5kZXJlcih2b2lk
KQ0KLQk/UmVzb2x2ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMxNkBAQUJWVERlc0Mx
NkBAMEBaIEAgODQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpSZXNv
bHZlVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0J
P1Jlc3RvcmVEb2N1bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4NSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0ZSh2b2lkKQ0KLQk/U2Fu
c1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDg2
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2Fuc1NlcmlmRm9udEZh
bWlseSh2b2lkKSBjb25zdA0KLQk/U2F2ZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhYWiBAIDg3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNhdmVEb2N1bWVudFN0YXRl
KHZvaWQpDQotCT9TYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAg
ODggTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlNhdmVSYXdEYXRhRW5hYmxlZCh2b2lk
KSBjb25zdA0KLQk/U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFog
QCA4OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY2FsaW5nRmFjdG9yQ2hhbmdlZChp
bnQpDQotCT9TY3JvbGxUb0FuY2hvckBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEBa
IEAgOTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2Nyb2xsVG9BbmNob3IoY2xhc3Mg
VERlc0MxNiBjb25zdCAmKQ0KLQk/U2Nyb2xsVG9BbmNob3JXaXRoVVJMQENXZWJDb3JlQnJpZGdl
QEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpT
Y3JvbGxUb0FuY2hvcldpdGhVUkwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2VhcmNoQWdh
aW5AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkyIE5PTkFNRSA7IGlu
dCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoQWdhaW4oY2xhc3MgVERlc0MxNiBjb25zdCAmLCBpbnQs
IGludCwgaW50KQ0KLQk/U2VhcmNoRm9yQENXZWJDb3JlQnJpZGdlQEBRQUVIQUJWVERlc0MxNkBA
SEhIQFogQCA5MyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlNlYXJjaEZvcihjbGFzcyBU
RGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQotCT9TZWxlY3Rpb25Db2xvckBDV2ViQ29y
ZUJyaWRnZUBAUUFFP0FWVFJnYkBAWFogQCA5NCBOT05BTUUgOyBjbGFzcyBUUmdiIENXZWJDb3Jl
QnJpZGdlOjpTZWxlY3Rpb25Db2xvcih2b2lkKQ0KLQk/U2VuZFJlc2l6ZUV2ZW50QENXZWJDb3Jl
QnJpZGdlQEBRQUVYWFogQCA5NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kUmVz
aXplRXZlbnQodm9pZCkNCi0JP1NlbmRTY3JvbGxFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFha
IEAgOTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2VuZFNjcm9sbEV2ZW50KHZvaWQp
DQotCT9TZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFog
QCA5NyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9udEZh
bWlseSh2b2lkKSBjb25zdA0KLQk/U2V0QXV0b1JlZnJlc2hFbmFibGVkQENXZWJDb3JlU2V0dGlu
Z3NAQFFBRVhIQFogQCA5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEF1dG9S
ZWZyZXNoRW5hYmxlZChpbnQpDQotCT9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdlQ2FsbGJhY2tX
cmFwcGVyQEBRQUVYUEFWQ2FjaGVkSW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5OSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNrKGNsYXNzIGto
dG1sOjpDYWNoZWRJbWFnZUNhbGxiYWNrICopDQotCT9TZXRDb29raWVBZGFwdGVyQFRXZWJDb3Jl
Q29va2llRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDEwMCBOT05B
TUUgOyB2b2lkIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRlcihjbGFzcyBN
V2ViQ29yZUNvb2tpZUFkYXB0ZXIgKikNCi0JP1NldEN1cnNpdmVGb250RmFtaWx5QENXZWJDb3Jl
U2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
U2V0dGluZ3M6OlNldEN1cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0J
P1NldERlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMDIg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRGb250U2l6ZShp
bnQpDQotCT9TZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEw
MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGb250U2l6ZShpbnQp
DQotCT9TZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVz
QzE2QEBAWiBAIDEwNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRU
ZXh0RW5jb2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RGVmZXJzVGltZXJzQENX
ZWJDb3JlQnJpZGdlQEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
U2V0RGVmZXJzVGltZXJzKGludCkNCi0JP1NldERyYXdzQmFja2dyb3VuZEBDV2ViQ29yZUJyaWRn
ZUBAUUFFWEhAWiBAIDEwNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXREcmF3c0Jh
Y2tncm91bmQoaW50KQ0KLQk/U2V0RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEFCVlREZXNDMTZAQEBaIEAgMTA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0RmFudGFzeUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RmFzdEZp
cnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMDggTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6U2V0RmFzdEZpcnN0RGlzcGxheU1vZGUoaW50KQ0KLQk/U2V0Rml4
ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwOSBO
T05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEZpeGVkRm9udEZhbWlseShjbGFzcyBU
RGVzQzE2IGNvbnN0ICYpDQotCT9TZXRGb250U2l6ZUxldmVsQENXZWJDb3JlQnJpZGdlQEBRQUVY
SEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvbnRTaXplTGV2ZWwo
aW50KQ0KLQk/U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJW
VERlc0MxNkBAMEBaIEAgMTExIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvcm1D
b250cm9sVGV4dEJ5TmFtZShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29u
c3QgJikNCi0JP1NldEhpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBWFBBVk1XZWJD
b3JlSGlzdG9yeVByb3ZpZGVyQEBAWiBAIDExMiBOT05BTUUgOyB2b2lkIFRXZWJDb3JlSGlzdG9y
eTo6U2V0SGlzdG9yeVByb3ZpZGVyKGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICopDQot
CT9TZXRKYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTEzIE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YUVuYWJsZWQoaW50KQ0KLQk/U2V0SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBa
IEAgMTE0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseShpbnQpDQotCT9TZXRKYXZhU2NyaXB0RW5hYmxlZEBDV2Vi
Q29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0SmF2YVNjcmlwdEVuYWJsZWQoaW50KQ0KLQk/U2V0TWF4QmlkaVdpZHRoQENXZWJDb3Jl
QnJpZGdlQEBRQUVYSEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE1h
eEJpZGlXaWR0aChpbnQpDQotCT9TZXRNaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEhAWiBAIDExNyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1G
b250U2l6ZShpbnQpDQotCT9TZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGlu
Z3NAQFFBRVhIQFogQCAxMTggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRNaW5p
bXVtTG9naWNhbEZvbnRTaXplKGludCkNCi0JP1NldE5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhB
QlZURGVzQzE2QEBAWiBAIDExOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROYW1l
KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldE5lZWRzTGF5b3V0QENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCAxMjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TmVlZHNMYXlv
dXQodm9pZCkNCi0JP1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAxMjEg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENXZWJDb3JlQnJp
ZGdlICopDQotCT9TZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAg
MTIyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQoaW50
KQ0KLQk/U2V0UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVlJlbmRlclBhcnRAa2h0
bWxAQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFJlbmRlclBhcnQo
Y2xhc3Mga2h0bWw6OlJlbmRlclBhcnQgKikNCi0JP1NldFNhbnNTZXJpZkZvbnRGYW1pbHlAQ1dl
YkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVTZXR0aW5nczo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0
ICYpDQotCT9TZXRTYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDEyNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFNhdmVSYXdEYXRhRW5hYmxl
ZChpbnQpDQotCT9TZXRTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlRE
ZXNDMTZAQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2VyaWZG
b250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFNob3VsZENyZWF0ZVJlbmRl
cmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEyNyBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoaW50KQ0KLQk/U2V0U2hvdWxkUHJpbnRC
YWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTI4IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhpbnQpDQotCT9TZXRT
dGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAg
MTI5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U3RhbmRhcmRGb250RmFtaWx5
KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dl
YkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTMwIE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVTZXR0aW5nczo6U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjbGFzcyBURGVzQzE2IGNv
bnN0ICYpDQotCT9TZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QFRXZWJDb3JlRm9ybUNvbnRy
b2xGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAQFogQCAxMzEgTk9O
QU1FIDsgdm9pZCBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6U2V0V2ViQ29yZUZvcm1Db250
cm9sRmFjdG9yeShjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqKQ0KLQk/U2V0V2Vi
Q29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNB
WFBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTMyIE5PTkFNRSA7IHZvaWQg
VFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTo6U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0
b3J5KGNsYXNzIE1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgKikNCi0JP1NldFdlYkNvcmVM
b2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBWFBBVk1XZWJDb3JlTG9h
ZGVyQ29udGFpbmVyQEBAWiBAIDEzMyBOT05BTUUgOyB2b2lkIFRXZWJDb3JlTG9hZGVyQ29udGFp
bmVyOjpTZXRXZWJDb3JlTG9hZGVyQ29udGFpbmVyKGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29udGFp
bmVyICopDQotCT9TZXRXZWJDb3JlUGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJA
QFNBWFBBVk1XZWJDb3JlUGx1Z2luSGFuZGxlckBAQFogQCAxMzQgTk9OQU1FIDsgdm9pZCBUV2Vi
Q29yZVBsdWdpbkhhbmRsZXI6OlNldFdlYkNvcmVQbHVnaW5IYW5kbGVyKGNsYXNzIE1XZWJDb3Jl
UGx1Z2luSGFuZGxlciAqKQ0KLQk/U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAVFdlYkNv
cmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlA
QEBaIEAgMTM1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5OjpTZXRX
ZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeShjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rv
cnkgKikNCi0JP1NldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYSEBaIEAgMTM2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0V2lsbExv
YWRJbWFnZXNBdXRvbWF0aWNhbGx5KGludCkNCi0JP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2Vi
Q29yZUJyaWRnZUBAUUFFSFhaIEAgMTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2hv
dWxkQ3JlYXRlUmVuZGVyZXJzKHZvaWQpDQotCT9TaG91bGRQcmludEJhY2tncm91bmRzQENXZWJD
b3JlU2V0dGluZ3NAQFFCRUhYWiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6
U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyh2b2lkKSBjb25zdA0KLQk/U2hvd2luZ0Zhc3RQcmV2aWV3
QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdl
OjpTaG93aW5nRmFzdFByZXZpZXcodm9pZCkgY29uc3QNCi0JP1N0YW5kYXJkRm9udEZhbWlseUBD
V2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUgOyBjbGFzcyBU
UHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lkKSBjb25zdA0K
LQk/VGFiYmVkTmF2aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdlYk5hdkRpcmVjdGlv
bkBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEgTk9OQU1FIDsgaW50
IENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5hdkRpcmVjdGlvbiwg
ZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQotCT9UZXh0RW5jb2RpbmdA
Q1dlYkNvcmVCcmlkZ2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNpZ25lZCBpbnQgQ1dlYkNv
cmVCcmlkZ2U6OlRleHRFbmNvZGluZyh2b2lkKSBjb25zdA0KLQk/VVJMQENXZWJDb3JlQnJpZGdl
QEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3Jl
QnJpZGdlOjpVUkwodm9pZCkgY29uc3QNCi0JP1VSTFdpdGhSZWxhdGl2ZVN0cmluZ0BDV2ViQ29y
ZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAQFogQCAxNDQgTk9OQU1FIDsgY2xh
c3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpVUkxXaXRoUmVsYXRpdmVTdHJpbmcoY2xhc3Mg
VERlc0MxNiBjb25zdCAmKQ0KLQk/VXBkYXRlQWxsVmlld3NAQ1dlYkNvcmVCcmlkZ2VAQFNBWFha
IEAgMTQ1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlVwZGF0ZUFsbFZpZXdzKHZvaWQp
DQotCT9VcmxAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgMTQ2IE5P
TkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6VXJsKHZvaWQpDQot
CT9Vc2VyU3R5bGVTaGVldExvY2F0aW9uQENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZA
QFhaIEAgMTQ3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6VXNlclN0
eWxlU2hlZXRMb2NhdGlvbih2b2lkKSBjb25zdA0KLQk/V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNh
bGx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDE0OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVT
ZXR0aW5nczo6V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KHZvaWQpIGNvbnN0DQotCT9oYXNP
d25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJA
MkBAWiBAIDE0OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QN
Ci0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRp
ZmllckAyQEBaIEAgMTUwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25z
dA0KLQk/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDE1MSBOT05BTUUgOyBib29sIEtK
Uzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lkKSBjb25zdA0KLQk/Y2xhc3NJbmZvQE9iamVjdEBLSlNA
QFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgMTUyIE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5m
byBjb25zdCAqIEtKUzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0JP2hhc093blBy
b3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTUzIE5PTkFNRSA7
IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFW
RXhlY1N0YXRlQDJASUBaIEAgMTU0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3Bl
cnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP3Byb3BM
aXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBa
IEAgMTU1IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJv
cExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCi0JP0dldE5leHRSZW5kZXJUZXh0
Rm9yU21hcnRMaW5rc0xAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFBSEBaIEAgMTU2
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRSZW5kZXJUZXh0
Rm9yU21hcnRMaW5rc0woaW50ICYpDQotCT9HZXRSZW5kZXJUZXh0QXJlYUBDV2ViQ29yZUJyaWRn
ZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1NyBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBURGVzQzE2IGNv
bnN0ICYsIGNsYXNzIFJBcnJheTxjbGFzcyBUUmVjdD4gJikNCisgICAgPz8xQ1dlYkNvcmVTZXR0
aW5nc0BAVUFFQFhaIEAgMSBOT05BTUUgOyBDV2ViQ29yZVNldHRpbmdzOjp+Q1dlYkNvcmVTZXR0
aW5ncyh2b2lkKQ0KKyAgICA/QWN0aXZhdGVBY2Nlc3NLZXlzQENXZWJDb3JlQnJpZGdlQEBRQUVY
VVRLZXlFdmVudEBAQFogQCAyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFjdGl2YXRl
QWNjZXNzS2V5cyhzdHJ1Y3QgVEtleUV2ZW50KQ0KKyAgICA/QWN0aXZhdGVFdmVudEBDV2ViQ29y
ZUJyaWRnZUBAUUFFWEFBVlRQb2ludEBAQFogQCAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkFjdGl2YXRlRXZlbnQoY2xhc3MgVFBvaW50ICYpDQorICAgID9BZGREYXRhQENXZWJDb3Jl
QnJpZGdlQEBRQUVYQUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6QWRkRGF0YShjbGFzcyBURGVzQzggY29uc3QgJikNCisgICAgP0FkZEl0ZW1Ub0NhY2hlTEBU
V2ViQ29yZUNhY2hlQEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5mb0BAQUFWVERl
c0M4QEBIQFogQCA1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6QWRkSXRlbVRvQ2FjaGVM
KGNsYXNzIE1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNsYXNzIFREZXNDOCAmLCBp
bnQpDQorICAgID9BZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBA
WiBAIDYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250YWN0cyhjbGFzcyBU
UG9pbnQgJikNCisgICAgP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA3
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZvaWQpDQorICAg
ID9BbHRUZXh0QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDggTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRUZXh0KHZvaWQp
DQorICAgID9BdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgOSBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVkKHZvaWQpIGNv
bnN0DQorICAgID9Cb2R5QmFja2dyb3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdi
QEBYWiBAIDEwIE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJvZHlCYWNrZ3Jv
dW5kQ29sb3Iodm9pZCkNCisgICAgP0NhbkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFha
IEAgMTEgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uodm9pZCkgY29u
c3QNCisgICAgP0NsZWFyRmluZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMTIgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6Q2xlYXJGaW5kKHZvaWQpDQorICAgID9DbGllbnRAQ1dlYkNv
cmVCcmlkZ2VAQFFBRUFBVk1XZWJDbGllbnRCcmlkZ2VAQFhaIEAgMTMgTk9OQU1FIDsgY2xhc3Mg
TVdlYkNsaWVudEJyaWRnZSAmIENXZWJDb3JlQnJpZGdlOjpDbGllbnQodm9pZCkNCisgICAgP0Ns
b3NlVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxNCBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpDbG9zZVVSTCh2b2lkKQ0KKyAgICA/Q29va2llQWRhcHRlckBUV2ViQ29yZUNvb2tp
ZUZhY3RvcnlAQFNBUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBYWiBAIDE1IE5PTkFNRSA7IGNs
YXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6Q29va2ll
QWRhcHRlcih2b2lkKQ0KKyAgICA/Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIQFogQCAxNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGlu
dCkNCisgICAgP0NyZWF0ZUtIVE1MVmlld0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVk1XZWJDb3Jl
U2Nyb2xsVmlld0BASEhAWiBAIDE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0
ZUtIVE1MVmlldyhjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgJiwgaW50LCBpbnQpDQorICAgID9D
dXJzaXZlRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE4
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6Q3Vyc2l2ZUZvbnRGYW1p
bHkodm9pZCkgY29uc3QNCisgICAgP0RlQWN0aXZhdGVFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFF
WEhAWiBAIDE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRlQWN0aXZhdGVFdmVudChp
bnQpDQorICAgID9EZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFog
QCAyMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZpeGVkRm9udFNpemUo
dm9pZCkgY29uc3QNCisgICAgP0RlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVI
WFogQCAyMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXplKHZv
aWQpIGNvbnN0DQorICAgID9EZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFC
RT9BVlRQdHJDMTZAQFhaIEAgMjIgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRp
bmdzOjpEZWZhdWx0VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQorICAgID9EZWZlcnNUaW1lcnNA
Q1dlYkNvcmVCcmlkZ2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpE
ZWZlcnNUaW1lcnModm9pZCkNCisgICAgP0RldGVybWluZUN1cnNvclBvc2l0aW9uQENXZWJDb3Jl
QnJpZGdlQEBRQUVIQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBAMUFB
VlRQb2ludEBASEBaIEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpEZXRlcm1pbmVD
dXJzb3JQb3NpdGlvbihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGNsYXNzIFRS
ZWN0ICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQpDQorICAgID9EaWROb3RP
cGVuVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAyNSBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3QgJikN
CisgICAgP0RvbWFpbkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCAyNiBOT05B
TUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkgY29uc3QNCisg
ICAgP0RyYXdSZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNXZWJDb3JlR3Jh
cGhpY3NDb250ZXh0QEBAWiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRyYXdS
ZWN0KGNsYXNzIFRSZWN0IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICYp
DQorICAgID9EdW1wUmVuZGVyVHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjggTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCisgICAgP0VuZEBD
V2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
RW5kKHZvaWQpDQorICAgID9FeGVjdXRlU2NyaXB0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERl
c0MxNkBAQFogQCAzMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVjdXRlU2NyaXB0
KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP0ZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJv
bEZhY3RvcnlAQFNBUEFWTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFhaIEAgMzEgTk9OQU1F
IDsgY2xhc3MgTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgKiBUV2ViQ29yZUZvcm1Db250cm9s
RmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29yZUltYWdlUmVuZGVy
ZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFhaIEAgMzIgTk9O
QU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlSW1hZ2VS
ZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhY3RvcnlAVFdlYkNvcmVUZXh0
UmVuZGVyZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAWFogQCAz
MyBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKiBUV2ViQ29yZVRl
eHRSZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhbnRhc3lGb250RmFtaWx5
QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzQgTk9OQU1FIDsgY2xhc3Mg
VFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGYW50YXN5Rm9udEZhbWlseSh2b2lkKSBjb25zdA0K
KyAgICA/RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDM1IE5P
TkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6RmFzdEZpcnN0RGlzcGxheU1vZGUodm9pZCkgY29u
c3QNCisgICAgP0ZpbmRMaW5rc09mVHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZA
QEFBVj8kUkFycmF5QFVUV2ViQ29yZUxpbmtJdGVtQEBAQEBaIEAgMzYgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZUJyaWRnZTo6RmluZExpbmtzT2ZUeXBlKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xh
c3MgUkFycmF5PHN0cnVjdCBUV2ViQ29yZUxpbmtJdGVtPiAmKQ0KKyAgICA/Rml4ZWRGb250RmFt
aWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzcgTk9OQU1FIDsgY2xh
c3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGaXhlZEZvbnRGYW1pbHkodm9pZCkgY29uc3QN
CisgICAgP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhI
QFogQCAzOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGb3JjZUxheW91dEFkanVzdGlu
Z1ZpZXdTaXplKGludCkNCisgICAgP0dldFBhZ2VEYXRhTEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFW
PyRDQXJyYXlQdHJAVkNXZWJDb3JlUGFnZURhdGFJdGVtQEBAQEhAWiBAIDM5IE5PTkFNRSA7IGNs
YXNzIENBcnJheVB0cjxjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbT4gKiBDV2ViQ29yZUJyaWRn
ZTo6R2V0UGFnZURhdGFMKGludCkNCisgICAgP0dldFRleHRDb250ZW50TEBDV2ViQ29yZUJyaWRn
ZUBAUUFFUEFWSEJ1ZkMxNkBAWFogQCA0MCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNv
cmVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KKyAgICA/R2V0VXJsT2ZOb2RlSW5Gb2N1
c0xAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFBVlRQb2ludEBAQFogQCA0MSBOT05B
TUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFVybE9mTm9kZUluRm9jdXNM
KGNsYXNzIFRQb2ludCAmKSBjb25zdA0KKyAgICA/SGFzUGVuZGluZ0xheW91dEBDV2ViQ29yZUJy
aWRnZUBAUUJFSFhaIEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpIYXNQZW5kaW5n
TGF5b3V0KHZvaWQpIGNvbnN0DQorICAgID9IaXN0b3J5UHJvdmlkZXJAVFdlYkNvcmVIaXN0b3J5
QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5PTkFNRSA7IGNsYXNzIE1X
ZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpIaXN0b3J5UHJvdmlkZXIo
dm9pZCkNCisgICAgP0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhIQFogQCA0NCBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KKyAgICA/SW1hZ2VUeXBl
QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5PTkFNRSA7IGNs
YXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZvaWQpDQorICAg
ID9JbWFnZXNJblJlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4RmxhdEBWVFdl
YkNvcmVJbWFnZUNhcnJpZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0FycmF5Rml4Rmxh
dDxjbGFzcyBUV2ViQ29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VzSW5S
ZWN0KGludCkNCisgICAgP0luaXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFC
VkNXZWJDb3JlU2V0dGluZ3NAQEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
SW5pdGlhbGl6ZVNldHRpbmdzKGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3QgJikNCisgICAg
P0luc3RhbGxJbkZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3
QEBAWiBAIDQ4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJbkZyYW1lKGNs
YXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmKQ0KKyAgICA/SXNGcmFtZVNldEBDV2ViQ29yZUJyaWRn
ZUBAUUJFSFhaIEAgNDkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpJc0ZyYW1lU2V0KHZv
aWQpIGNvbnN0DQorICAgID9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1
MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QN
CisgICAgP0phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0
aW5nc0BAUUJFSFhaIEAgNTEgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCisgICAgP0phdmFTY3Jp
cHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUyIE5PTkFNRSA7IGludCBDV2Vi
Q29yZVNldHRpbmdzOjpKYXZhU2NyaXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KKyAgICA/SnVtcFRv
U2VsZWN0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1MyBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpKdW1wVG9TZWxlY3Rpb24odm9pZCkNCisgICAgP0tleUV2ZW50QENXZWJDb3Jl
QnJpZGdlQEBRQUVIVVRLZXlFdmVudEBASEBaIEAgNTQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpLZXlFdmVudChzdHJ1Y3QgVEtleUV2ZW50LCBpbnQpDQorICAgID9Mb2FkSW1hZ2VzQENX
ZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpM
b2FkSW1hZ2VzKHZvaWQpDQorICAgID9Mb2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250
YWluZXJAQFNBUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJAQFhaIEAgNTYgTk9OQU1FIDsgY2xh
c3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKiBUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjo6TG9h
ZGVyQ29udGFpbmVyKHZvaWQpDQorICAgID9NaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5n
c0BAUUJFSFhaIEAgNTcgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Ok1pbmltdW1Gb250
U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/TWluaW11bUxvZ2ljYWxGb250U2l6ZUBDV2ViQ29yZVNl
dHRpbmdzQEBRQkVIWFogQCA1OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6TWluaW11
bUxvZ2ljYWxGb250U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/TmFtZUBDV2ViQ29yZUJyaWRnZUBA
UUJFP0FWVFB0ckMxNkBAWFogQCA1OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJp
ZGdlOjpOYW1lKHZvaWQpIGNvbnN0DQorICAgID9OYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JAQ1dl
YkNvcmVCcmlkZ2VAQFFCRUhBQVZUUG9pbnRAQEFBVzRUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlw
ZUBAQUFWVFJlY3RAQEBaIEAgNjAgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOYXZpZ2Fi
bGVOb2RlVW5kZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdlYkNvcmVGb2N1c2VkRWxl
bWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCisgICAgP05lZWRzTGF5b3V0QENXZWJD
b3JlQnJpZGdlQEBRQkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5lZWRz
TGF5b3V0KHZvaWQpIGNvbnN0DQorICAgID9OZXdMQENXZWJDb3JlQnJpZGdlQEBTQVBBVjFAQUFW
TVdlYkNsaWVudEJyaWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUJyaWRnZSAq
IENXZWJDb3JlQnJpZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlkZ2UgJikNCisgICAgP05l
d0xAQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0R2NAQFBBVkNGYnNC
aXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBDV2Vi
Q29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpOZXdMKGNsYXNz
IENGYnNCaXRHYyAmLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmll
dyAqKQ0KKyAgICA/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQFBBVkNGYnNC
aXRtYXBEZXZpY2VAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2
NCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhp
Y3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3MgQ0Zic0JpdG1h
cCAqLCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgKikNCisgICAgP05ld0xAQ1dlYkNvcmVTZXR0
aW5nc0BAU0FQQVYxQFhaIEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyAqIENX
ZWJDb3JlU2V0dGluZ3M6Ok5ld0wodm9pZCkNCisgICAgP05vdGlmeURlY29kaW5nRXJyb3JAQ1dl
YkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZvaWQpDQorICAg
ID9Ob3RpZnlGaW5pc2hlZEBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2
NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeUZpbmlz
aGVkKHZvaWQpDQorICAgID9Ob3RpZnlVcGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBl
ckBAUUFFWFhaIEAgNjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVy
OjpOb3RpZnlVcGRhdGUodm9pZCkNCisgICAgP051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0BD
V2ViQ29yZUJyaWRnZUBAUUFFSFhaIEAgNjkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpO
dW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHModm9pZCkNCisgICAgP09wZW5VUkxAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIMDBBQlZURGF0ZVRpbWVAQEBaIEAgNzAgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6T3BlblVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwg
Y2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRl
VGltZSBjb25zdCAmKQ0KKyAgICA/UGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJA
QFNBUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBYWiBAIDcxIE5PTkFNRSA7IGNsYXNzIE1XZWJD
b3JlUGx1Z2luSGFuZGxlciAqIFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2luSGFuZGxlcih2
b2lkKQ0KKyAgICA/UGx1Z2luc0VuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNzIg
Tk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZvaWQpIGNvbnN0
DQorICAgID9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhVVFBvaW50ZXJFdmVudEBA
QFogQCA3MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoc3RydWN0
IFRQb2ludGVyRXZlbnQpDQorICAgID9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhX
NFRUeXBlQFRQb2ludGVyRXZlbnRAQEFCVlRQb2ludEBAQFogQCA3NCBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoZW51bSBUUG9pbnRlckV2ZW50OjpUVHlwZSwgY2xh
c3MgVFBvaW50IGNvbnN0ICYpDQorICAgID9QcmVwYXJlRm9yRXhpdEBDV2ViQ29yZUJyaWRnZUBA
U0FYWFogQCA3NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcmVwYXJlRm9yRXhpdCh2
b2lkKQ0KKyAgICA/UHJvdmlzaW9uYWxMb2FkU3RhcnRlZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFha
IEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZCh2b2lkKQ0KKyAgICA/UmF3RGF0YUBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFQUFWVFB0ckM4
QEBYWiBAIDc3IE5PTkFNRSA7IGNsYXNzIFRQdHJDOCAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpS
YXdEYXRhKHZvaWQpDQorICAgID9SZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUBDV2ViQ29yZUJy
aWRnZUBAUUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDc4IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlKGVudW0gVFdlYkNvcmVEZXZp
Y2VUeXBlKQ0KKyAgICA/UmVmZXJyZXJAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZAQFha
IEAgNzkgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6UmVmZXJyZXIodm9p
ZCkgY29uc3QNCisgICAgP1JlbW92ZUZpbGVOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBv
aW50QEBAWiBAIDgwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92ZUZpbGVOYW1l
KGNsYXNzIFRQb2ludCAmKQ0KKyAgICA/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3JlQnJpZGdlQEBR
QUVYWFogQCA4MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZW1vdmVGcm9tRnJhbWUo
dm9pZCkNCisgICAgP1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVjBraHRtbEBAWFog
QCA4MiBOT05BTUUgOyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJDb3JlQnJpZGdlOjpS
ZW5kZXJQYXJ0KHZvaWQpIGNvbnN0DQorICAgID9SZW5kZXJlckBUV2ViQ29yZUltYWdlQ2Fycmll
ckBAUUFFUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7IGNsYXNzIE1X
ZWJDb3JlSW1hZ2VSZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5kZXJlcih2b2lk
KQ0KKyAgICA/UmVzb2x2ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMxNkBAQUJWVERl
c0MxNkBAMEBaIEAgODQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpS
ZXNvbHZlVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikN
CisgICAgP1Jlc3RvcmVEb2N1bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4NSBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0ZSh2b2lkKQ0K
KyAgICA/U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2
QEBYWiBAIDg2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2Fuc1Nl
cmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/U2F2ZURvY3VtZW50U3RhdGVAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhYWiBAIDg3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNhdmVE
b2N1bWVudFN0YXRlKHZvaWQpDQorICAgID9TYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0
aW5nc0BAUUJFSFhaIEAgODggTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlNhdmVSYXdE
YXRhRW5hYmxlZCh2b2lkKSBjb25zdA0KKyAgICA/U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhIQFogQCA4OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY2Fs
aW5nRmFjdG9yQ2hhbmdlZChpbnQpDQorICAgID9TY3JvbGxUb0FuY2hvckBDV2ViQ29yZUJyaWRn
ZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgOTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
U2Nyb2xsVG9BbmNob3IoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2Nyb2xsVG9BbmNo
b3JXaXRoVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hvcldpdGhVUkwoY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KKyAgICA/U2VhcmNoQWdhaW5AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVz
QzE2QEBISEhAWiBAIDkyIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoQWdhaW4o
Y2xhc3MgVERlc0MxNiBjb25zdCAmLCBpbnQsIGludCwgaW50KQ0KKyAgICA/U2VhcmNoRm9yQENX
ZWJDb3JlQnJpZGdlQEBRQUVIQUJWVERlc0MxNkBASEhIQFogQCA5MyBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVCcmlkZ2U6OlNlYXJjaEZvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBp
bnQpDQorICAgID9TZWxlY3Rpb25Db2xvckBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFJnYkBAWFog
QCA5NCBOT05BTUUgOyBjbGFzcyBUUmdiIENXZWJDb3JlQnJpZGdlOjpTZWxlY3Rpb25Db2xvcih2
b2lkKQ0KKyAgICA/U2VuZFJlc2l6ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA5NSBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kUmVzaXplRXZlbnQodm9pZCkNCisgICAg
P1NlbmRTY3JvbGxFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgOTYgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6U2VuZFNjcm9sbEV2ZW50KHZvaWQpDQorICAgID9TZXJpZkZvbnRG
YW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCA5NyBOT05BTUUgOyBj
bGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9udEZhbWlseSh2b2lkKSBjb25z
dA0KKyAgICA/U2V0QXV0b1JlZnJlc2hFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFog
QCA5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEF1dG9SZWZyZXNoRW5hYmxl
ZChpbnQpDQorICAgID9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBR
QUVYUEFWQ2FjaGVkSW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5OSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNrKGNsYXNzIGtodG1sOjpDYWNo
ZWRJbWFnZUNhbGxiYWNrICopDQorICAgID9TZXRDb29raWVBZGFwdGVyQFRXZWJDb3JlQ29va2ll
RmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDEwMCBOT05BTUUgOyB2
b2lkIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRlcihjbGFzcyBNV2ViQ29y
ZUNvb2tpZUFkYXB0ZXIgKikNCisgICAgP1NldEN1cnNpdmVGb250RmFtaWx5QENXZWJDb3JlU2V0
dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0
dGluZ3M6OlNldEN1cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAg
P1NldERlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMDIg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRGb250U2l6ZShp
bnQpDQorICAgID9TZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDEwMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGb250U2l6ZShp
bnQpDQorICAgID9TZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhB
QlZURGVzQzE2QEBAWiBAIDEwNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERl
ZmF1bHRUZXh0RW5jb2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0RGVmZXJz
VGltZXJzQENXZWJDb3JlQnJpZGdlQEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6U2V0RGVmZXJzVGltZXJzKGludCkNCisgICAgP1NldERyYXdzQmFja2dyb3VuZEBD
V2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEwNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpTZXREcmF3c0JhY2tncm91bmQoaW50KQ0KKyAgICA/U2V0RmFudGFzeUZvbnRGYW1pbHlAQ1dl
YkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA3IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVTZXR0aW5nczo6U2V0RmFudGFzeUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAm
KQ0KKyAgICA/U2V0RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFog
QCAxMDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0RmFzdEZpcnN0RGlzcGxheU1v
ZGUoaW50KQ0KKyAgICA/U2V0Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhB
QlZURGVzQzE2QEBAWiBAIDEwOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEZp
eGVkRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRGb250U2l6ZUxl
dmVsQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OlNldEZvbnRTaXplTGV2ZWwoaW50KQ0KKyAgICA/U2V0Rm9ybUNvbnRyb2xUZXh0QnlO
YW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAMEBaIEAgMTExIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvcm1Db250cm9sVGV4dEJ5TmFtZShjbGFzcyBURGVzQzE2
IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldEhpc3RvcnlQcm92aWRl
ckBUV2ViQ29yZUhpc3RvcnlAQFNBWFBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBAWiBAIDEx
MiBOT05BTUUgOyB2b2lkIFRXZWJDb3JlSGlzdG9yeTo6U2V0SGlzdG9yeVByb3ZpZGVyKGNsYXNz
IE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICopDQorICAgID9TZXRKYXZhRW5hYmxlZEBDV2ViQ29y
ZVNldHRpbmdzQEBRQUVYSEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0SmF2YUVuYWJsZWQoaW50KQ0KKyAgICA/U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE0IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxs
eShpbnQpDQorICAgID9TZXRKYXZhU2NyaXB0RW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVY
SEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdEVu
YWJsZWQoaW50KQ0KKyAgICA/U2V0TWF4QmlkaVdpZHRoQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBa
IEAgMTE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE1heEJpZGlXaWR0aChpbnQp
DQorICAgID9TZXRNaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEx
NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Gb250U2l6ZShpbnQp
DQorICAgID9TZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhI
QFogQCAxMTggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRNaW5pbXVtTG9naWNh
bEZvbnRTaXplKGludCkNCisgICAgP1NldE5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVz
QzE2QEBAWiBAIDExOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROYW1lKGNsYXNz
IFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldE5lZWRzTGF5b3V0QENXZWJDb3JlQnJpZGdlQEBR
QUVYWFogQCAxMjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TmVlZHNMYXlvdXQo
dm9pZCkNCisgICAgP1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAxMjEg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENXZWJDb3JlQnJp
ZGdlICopDQorICAgID9TZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBa
IEAgMTIyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQo
aW50KQ0KKyAgICA/U2V0UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVlJlbmRlclBh
cnRAa2h0bWxAQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFJlbmRl
clBhcnQoY2xhc3Mga2h0bWw6OlJlbmRlclBhcnQgKikNCisgICAgP1NldFNhbnNTZXJpZkZvbnRG
YW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShjbGFzcyBURGVz
QzE2IGNvbnN0ICYpDQorICAgID9TZXRTYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEhAWiBAIDEyNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFNhdmVS
YXdEYXRhRW5hYmxlZChpbnQpDQorICAgID9TZXRTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0
aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0
aW5nczo6U2V0U2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1Nl
dFNob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEyNyBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoaW50KQ0K
KyAgICA/U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBa
IEAgMTI4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxkUHJpbnRCYWNr
Z3JvdW5kcyhpbnQpDQorICAgID9TZXRTdGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0U3RhbmRhcmRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1Nl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZA
QEBaIEAgMTMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRXZWJDb3JlRm9ybUNv
bnRyb2xGYWN0b3J5QFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUZv
cm1Db250cm9sRmFjdG9yeUBAQFogQCAxMzEgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUZvcm1Db250
cm9sRmFjdG9yeTo6U2V0V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeShjbGFzcyBNV2ViQ29yZUZv
cm1Db250cm9sRmFjdG9yeSAqKQ0KKyAgICA/U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5
QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJl
ckZhY3RvcnlAQEBaIEAgMTMyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFj
dG9yeTo6U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlSW1hZ2VS
ZW5kZXJlckZhY3RvcnkgKikNCisgICAgP1NldFdlYkNvcmVMb2FkZXJDb250YWluZXJAVFdlYkNv
cmVMb2FkZXJDb250YWluZXJAQFNBWFBBVk1XZWJDb3JlTG9hZGVyQ29udGFpbmVyQEBAWiBAIDEz
MyBOT05BTUUgOyB2b2lkIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpTZXRXZWJDb3JlTG9hZGVy
Q29udGFpbmVyKGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29udGFpbmVyICopDQorICAgID9TZXRXZWJD
b3JlUGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBWFBBVk1XZWJDb3JlUGx1
Z2luSGFuZGxlckBAQFogQCAxMzQgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVBsdWdpbkhhbmRsZXI6
OlNldFdlYkNvcmVQbHVnaW5IYW5kbGVyKGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAqKQ0K
KyAgICA/U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJG
YWN0b3J5QEBTQVhQQVZNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTM1IE5PTkFN
RSA7IHZvaWQgVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3JlVGV4dFJlbmRl
cmVyRmFjdG9yeShjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKikNCisgICAgP1Nl
dFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAg
MTM2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0V2lsbExvYWRJbWFnZXNBdXRv
bWF0aWNhbGx5KGludCkNCisgICAgP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRn
ZUBAUUFFSFhaIEAgMTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2hvdWxkQ3JlYXRl
UmVuZGVyZXJzKHZvaWQpDQorICAgID9TaG91bGRQcmludEJhY2tncm91bmRzQENXZWJDb3JlU2V0
dGluZ3NAQFFCRUhYWiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2hvdWxk
UHJpbnRCYWNrZ3JvdW5kcyh2b2lkKSBjb25zdA0KKyAgICA/U2hvd2luZ0Zhc3RQcmV2aWV3QENX
ZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpT
aG93aW5nRmFzdFByZXZpZXcodm9pZCkgY29uc3QNCisgICAgP1N0YW5kYXJkRm9udEZhbWlseUBD
V2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUgOyBjbGFzcyBU
UHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lkKSBjb25zdA0K
KyAgICA/VGFiYmVkTmF2aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdlYk5hdkRpcmVj
dGlvbkBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEgTk9OQU1FIDsg
aW50IENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5hdkRpcmVjdGlv
biwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQorICAgID9UZXh0RW5j
b2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNpZ25lZCBpbnQg
Q1dlYkNvcmVCcmlkZ2U6OlRleHRFbmNvZGluZyh2b2lkKSBjb25zdA0KKyAgICA/VVJMQENXZWJD
b3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2
IENXZWJDb3JlQnJpZGdlOjpVUkwodm9pZCkgY29uc3QNCisgICAgP1VSTFdpdGhSZWxhdGl2ZVN0
cmluZ0BDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAQFogQCAxNDQg
Tk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpVUkxXaXRoUmVsYXRpdmVT
dHJpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/VXBkYXRlQWxsVmlld3NAQ1dlYkNv
cmVCcmlkZ2VAQFNBWFhaIEAgMTQ1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlVwZGF0
ZUFsbFZpZXdzKHZvaWQpDQorICAgID9VcmxAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQ
dHJDMTZAQFhaIEAgMTQ2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fy
cmllcjo6VXJsKHZvaWQpDQorICAgID9Vc2VyU3R5bGVTaGVldExvY2F0aW9uQENXZWJDb3JlU2V0
dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQ3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dl
YkNvcmVTZXR0aW5nczo6VXNlclN0eWxlU2hlZXRMb2NhdGlvbih2b2lkKSBjb25zdA0KKyAgICA/
V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDE0
OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNh
bGx5KHZvaWQpIGNvbnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBB
VkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDE0OSBOT05BTUUgOyBib29sIEtKUzo6
T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6
OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNA
QFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTUwIE5PTkFNRSA7IGJv
b2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNz
IEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/bWFya2VkQFZhbHVlSW1wQEtK
U0BAUUJFX05YWiBAIDE1MSBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lk
KSBjb25zdA0KKyAgICA/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0AyQFha
IEAgMTUyIE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0
OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNA
QFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTUzIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6
Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29u
c3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBa
IEAgMTU0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP3Byb3BMaXN0QE9iamVjdEBL
SlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTU1IE5PTkFN
RSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP0dldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRM
aW5rc0xAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFBSEBaIEAgMTU2IE5PTkFNRSA7
IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRM
aW5rc0woaW50ICYpDQorICAgID9HZXRSZW5kZXJUZXh0QXJlYUBDV2ViQ29yZUJyaWRnZUBAUUFF
WEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1NyBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBURGVzQzE2IGNvbnN0ICYs
IGNsYXNzIFJBcnJheTxjbGFzcyBUUmVjdD4gJikNCisgICAgICAgID9XaW5kb3dTY3JpcHROUE9i
amVjdEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWTlBPYmplY3RAQFhaIEAgMTU4IE5PTkFNRSA7IGNs
YXNzIE5QT2JqZWN0ICogQ1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KHZvaWQp
DQogDQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMTcyNzIpDQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkNCkBAIC0xLDMgKzEsODIgQEANCisyMDA2LTEwLTI0ICB5YWRhdmFsbCAgPHNyaXJhbS55
YWRhdmFsbGlAbm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFz
ICh6YnVqdGFzQGdtYWlsLmNvbSkuDQorICAgICAgICBERVNDOiBTY3JpcHRhYmxlIHBsdWdpbiBh
bmQgd2lkZ2V0IG9iamVjdCBzdXBwb3J0DQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTQwNw0KKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBB
RERFRCBPUiBDSEFOR0VEDQorDQorICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVE
IE9SIENIQU5HRUQNCisNCisgICAgICAgICogQldJTlMvV0VCQ09SRVUuREVGOg0KKyAgICAgICAg
KiBFQUJJL1dlYkNvcmVVLkRFRjoNCisgICAgICAgICogYnJpZGdlL1dlYkNvcmVCcmlkZ2UuY3Bw
Og0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjp+Q1dlYkNvcmVCcmlkZ2UpOg0KKyAgICAgICAg
KENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZyk6DQorICAgICAgICAo
Q1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KToNCisgICAgICAgIChDV2ViQ29y
ZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTCk6DQorICAgICAgICAoQ1dl
YkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRn
ZTo6R2V0UGFnZURhdGFMKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6VGFiYmVkTmF2aWdh
dGlvbik6DQorICAgICAgICAqIGJyaWRnZS9XZWJDb3JlQnJpZGdlLmg6DQorICAgICAgICAqIGJy
aWRnZS9XZWJDb3JlV2lkZ2V0Lmg6DQorICAgICAgICAoTVdlYkNvcmVXaWRnZXQ6OlBsdWdpblNj
cmlwdGFibGVPYmplY3QpOg0KKyAgICAgICAgKiBncm91cC9LSFRNTC5tbXA6DQorICAgICAgICAq
IGdyb3VwL0tXUS5tbXA6DQorICAgICAgICAqIGdyb3VwL1dlYkNvcmUubW1wOg0KKyAgICAgICAg
KiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcDoNCisgICAgICAgIChLSlM6OlNjcmlwdEludGVy
cHJldGVyOjppc0dsb2JhbE9iamVjdCk6DQorICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRl
cjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToNCisgICAgICAgICoga2h0bWwvZWNt
YS9ranNfYmluZGluZy5oOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19kb20uY3BwOg0KKyAg
ICAgICAgKERPTU5vZGU6Om1hcmspOg0KKyAgICAgICAgKERPTU5vZGU6OmdldFZhbHVlUHJvcGVy
dHkpOg0KKyAgICAgICAgKERPTU5vZGU6OmdldExpc3RlbmVyKToNCisgICAgICAgIChET01Ob2Rl
UHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01Ob2RlTGlzdDo6Y2FsbCk6DQorICAg
ICAgICAoRE9NRG9jdW1lbnQ6OkRPTURvY3VtZW50KToNCisgICAgICAgIChET01Eb2N1bWVudFBy
b3RvRnVuYzo6dHJ5Q2FsbCk6DQorICAgICAgICAoRE9NRWxlbWVudDo6RE9NRWxlbWVudCk6DQor
ICAgICAgICAoRE9NRWxlbWVudFByb3RvRnVuYzo6dHJ5Q2FsbCk6DQorICAgICAgICAoRE9NRE9N
SW1wbGVtZW50YXRpb246OkRPTURPTUltcGxlbWVudGF0aW9uKToNCisgICAgICAgIChET01OYW1l
ZE5vZGVNYXA6OkRPTU5hbWVkTm9kZU1hcCk6DQorICAgICAgICAoS0pTOjpnZXRET01Eb2N1bWVu
dE5vZGUpOg0KKyAgICAgICAgKEtKUzo6Y2hlY2tOb2RlU2VjdXJpdHkpOg0KKyAgICAgICAgKEtK
Uzo6Z2V0UnVudGltZU9iamVjdCk6DQorICAgICAgICAoRE9NTmFtZWROb2Rlc0NvbGxlY3Rpb246
OnRyeUdldCk6DQorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6RE9NQ2hhcmFjdGVyRGF0YSk6
DQorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YVByb3RvRnVuYzo6dHJ5Q2FsbCk6DQorICAgICAg
ICAoRE9NVGV4dDo6RE9NVGV4dCk6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX3dpbmRvdy5j
cHA6DQorICAgICAgICAoV2luZG93OjpXaW5kb3cpOg0KKyAgICAgICAgKFdpbmRvdzo6bWFyayk6
DQorICAgICAgICAoV2luZG93OjpnZXQpOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193aW5k
b3cuaDoNCisgICAgICAgIChLSlM6OldpbmRvdzo6KToNCisgICAgICAgIChLSlM6OlNlbGVjdGlv
bjo6KToNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oOg0KKyAgICAgICAg
KEtKUzo6KToNCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwOg0KKyAg
ICAgICAgKEhUTUxBcHBsZXRFbGVtZW50SW1wbDo6Z2V0QXBwbGV0SW5zdGFuY2UpOg0KKyAgICAg
ICAgKEhUTUxFbWJlZEVsZW1lbnRJbXBsOjpIVE1MRW1iZWRFbGVtZW50SW1wbCk6DQorICAgICAg
ICAoSFRNTEVtYmVkRWxlbWVudEltcGw6OmdldEVtYmVkSW5zdGFuY2UpOg0KKyAgICAgICAgKiBr
aHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5oOg0KKyAgICAgICAgKiBrd3EvS1dRS0hUTUxQYXJ0
LmNwcDoNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OktXUUtIVE1MUGFydCk6DQorICAgICAgICAo
S1dRS0hUTUxQYXJ0OjpzdWJtaXRGb3JtKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OmJpbmRp
bmdSb290T2JqZWN0KToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OmdldFJlbmRlclRleHRSZWN0
QXJyYXkpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6YWRkUGx1Z2luUm9vdE9iamVjdCk6DQor
ICAgICAgICAoS1dRS0hUTUxQYXJ0OjpjbGVhbnVwUGx1Z2luUm9vdE9iamVjdHMpOg0KKyAgICAg
ICAgKEtXUUtIVE1MUGFydDo6Z2V0TmV3VGFiYmVkQ3Vyc29yUG9zaXRpb24pOg0KKyAgICAgICAg
KEtXUUtIVE1MUGFydDo6dGFiYmVkTmF2aWdhdGlvbik6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0
OjpwcmVwYXJlRm9yVXNlckFjdGlvbik6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpjcmVhdGVX
aWRnZXRPYmplY3QpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0RW1iZWRJbnN0YW5jZUZv
clZpZXcpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3
KToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OndpbmRvd1NjcmlwdE5QT2JqZWN0KToNCisgICAg
ICAgICoga3dxL0tXUUtIVE1MUGFydC5oOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0QXBw
bGV0SW5zdGFuY2VGb3JWaWV3KToNCisNCiAyMDA2LTEwLTIzICBuYWd1byAgPGdlb3JnZS5ndW9A
bm9raWEuY29tPg0KIA0KICAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4uDQpJbmRleDogV2ViQ29y
ZS9FQUJJL1dlYkNvcmVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvRUFCSS9XZWJDb3Jl
VS5ERUYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvRUFCSS9XZWJDb3JlVS5ERUYJKHdv
cmtpbmcgY29weSkNCkBAIC0xLDE2MiArMSwxNjMgQEANCiBFWFBPUlRTDQotCV9aTjEzVFdlYkNv
cmVDYWNoZTE1QWRkSXRlbVRvQ2FjaGVMRVIyOU1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZv
UjZURGVzQzhpIEAgMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEwSW1hZ2VDb3VudEVp
IEAgMiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEwTG9hZEltYWdlc0V2IEAgMyBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTExUmVzb2x2ZVVybExFUks3VERlc0MxNlMyXyBAIDQg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMVNlYXJjaEFnYWluRVJLN1REZXNDMTZpaWkg
QCA1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTJEZWZlcnNUaW1lcnNFdiBAIDYgTk9O
QU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkdldFBhZ2VEYXRhTEVpIEAgNyBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTEySW1hZ2VzSW5SZWN0RWkgQCA4IE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlMTJQb2ludGVyRXZlbnRFMTNUUG9pbnRlckV2ZW50IEAgOSBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTEyUG9pbnRlckV2ZW50RU4xM1RQb2ludGVyRXZlbnQ1VFR5cGVF
Uks2VFBvaW50IEAgMTAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0FjdGl2YXRlRXZl
bnRFUjZUUG9pbnQgQCAxMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEzQWRkVG9Db250
YWN0c0VSNlRQb2ludCBAIDEyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNEaWROb3RP
cGVuVVJMRVJLN1REZXNDMTYgQCAxMyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEzRXhl
Y3V0ZVNjcmlwdEVSSzdURGVzQzE2IEAgMTQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
M1NldFJlbmRlclBhcnRFUE41a2h0bWwxMFJlbmRlclBhcnRFIEAgMTUgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNEFkanVzdFZpZXdTaXplRXYgQCAxNiBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTE0RHVtcFJlbmRlclRyZWVFdiBAIDE3IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3Jl
QnJpZGdlMTRJbnN0YWxsSW5GcmFtZUVSMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxOCBOT05BTUUN
Ci0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0UHJlcGFyZUZvckV4aXRFdiBAIDE5IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMTRSZW1vdmVGaWxlTmFtZUVSNlRQb2ludCBAIDIwIE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlMTRTY3JvbGxUb0FuY2hvckVSSzdURGVzQzE2IEAgMjEgTk9O
QU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNlbGVjdGlvbkNvbG9yRXYgQCAyMiBOT05BTUUN
Ci0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2V0TmVlZHNMYXlvdXRFdiBAIDIzIE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMTRVcGRhdGVBbGxWaWV3c0V2IEAgMjQgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNUNyZWF0ZUtIVE1MVmlld0VSMThNV2ViQ29yZVNjcm9sbFZpZXdpaSBA
IDI1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVEZUFjdGl2YXRlRXZlbnRFaSBAIDI2
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVGaW5kTGlua3NPZlR5cGVFUks3VERlc0Mx
NlI2UkFycmF5STE2VFdlYkNvcmVMaW5rSXRlbUUgQCAyNyBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTE1R2V0VGV4dENvbnRlbnRMRXYgQCAyOCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJy
aWRnZTE1SnVtcFRvU2VsZWN0aW9uRXYgQCAyOSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTE1UmVtb3ZlRnJvbUZyYW1lRXYgQCAzMCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1
U2VuZFJlc2l6ZUV2ZW50RXYgQCAzMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1U2Vu
ZFNjcm9sbEV2ZW50RXYgQCAzMiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1U2V0RGVm
ZXJzVGltZXJzRWkgQCAzMyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1U2V0TWF4Qmlk
aVdpZHRoRWkgQCAzNCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE2U2V0Rm9udFNpemVM
ZXZlbEVpIEAgMzUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNlRhYmJlZE5hdmlnYXRp
b25FMTZUV2ViTmF2RGlyZWN0aW9uUjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVpIEAgMzYg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxN1NhdmVEb2N1bWVudFN0YXRlRXYgQCAzNyBO
T05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4QWN0aXZhdGVBY2Nlc3NLZXlzRTlUS2V5RXZl
bnQgQCAzOCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4SW5pdGlhbGl6ZVNldHRpbmdz
RVJLMTZDV2ViQ29yZVNldHRpbmdzIEAgMzkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
OFNldERyYXdzQmFja2dyb3VuZEVpIEAgNDAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
OUJvZHlCYWNrZ3JvdW5kQ29sb3JFdiBAIDQxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdl
MjBSZXN0b3JlRG9jdW1lbnRTdGF0ZUV2IEAgNDIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UyMFNjYWxpbmdGYWN0b3JDaGFuZ2VkRWkgQCA0MyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJy
aWRnZTIxU2Nyb2xsVG9BbmNob3JXaXRoVVJMRVJLN1REZXNDMTYgQCA0NCBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTIxU2hvdWxkQ3JlYXRlUmVuZGVyZXJzRXYgQCA0NSBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTIxVVJMV2l0aFJlbGF0aXZlU3RyaW5nRVJLN1REZXNDMTYgQCA0
NiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZEV2
IEAgNDcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyM0RldGVybWluZUN1cnNvclBvc2l0
aW9uRVIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlUjVUUmVjdFMzX1I2VFBvaW50aSBAIDQ4
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjNTZXRGYXN0Rmlyc3REaXNwbGF5TW9kZUVp
IEAgNDkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyNFNldEZvcm1Db250cm9sVGV4dEJ5
TmFtZUVSSzdURGVzQzE2UzJfIEAgNTAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyNFNl
dFNob3VsZENyZWF0ZVJlbmRlcmVyc0VpIEAgNTEgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UyNkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nRVJLN1REZXNDMTZpIEAgNTIgTk9OQU1FDQot
CV9aTjE0Q1dlYkNvcmVCcmlkZ2UyNlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlRTE4VFdlYkNv
cmVEZXZpY2VUeXBlIEAgNTMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyN051bVBlbmRp
bmdPckxvYWRpbmdSZXF1ZXN0c0V2IEAgNTQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Uy
OEZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVFaSBAIDU1IE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlM0VuZEV2IEAgNTYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U0TmV3TEVS
MTZNV2ViQ2xpZW50QnJpZGdlIEAgNTcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U2Q2xp
ZW50RXYgQCA1OCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTdBZGREYXRhRVJLNlREZXND
OCBAIDU5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlN09wZW5VUkxFUks3VERlc0MxNmlT
Ml9TMl9SSzlURGF0ZVRpbWUgQCA2MCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTdTZXRO
YW1lRVJLN1REZXNDMTYgQCA2MSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZThDbG9zZVVS
TEV2IEAgNjIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U4RHJhd1JlY3RFUks1VFJlY3RS
MjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDYzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlOEtleUV2ZW50RTlUS2V5RXZlbnRpIEAgNjQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2U5Q2xlYXJGaW5kRXYgQCA2NSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTlTZWFyY2hG
b3JFUks3VERlc0MxNmlpaSBAIDY2IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlOVNldFBh
cmVudEVQU18gQCA2NyBOT05BTUUNCi0JX1pOMTVUV2ViQ29yZUhpc3RvcnkxNUhpc3RvcnlQcm92
aWRlckV2IEAgNjggTk9OQU1FDQotCV9aTjE1VFdlYkNvcmVIaXN0b3J5MThTZXRIaXN0b3J5UHJv
dmlkZXJFUDIzTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgQCA2OSBOT05BTUUNCi0JX1pOMTZDV2Vi
Q29yZVNldHRpbmdzMTRTZXRKYXZhRW5hYmxlZEVpIEAgNzAgTk9OQU1FDQotCV9aTjE2Q1dlYkNv
cmVTZXR0aW5nczE3U2V0UGx1Z2luc0VuYWJsZWRFaSBAIDcxIE5PTkFNRQ0KLQlfWk4xNkNXZWJD
b3JlU2V0dGluZ3MxOFNldERlZmF1bHRGb250U2l6ZUVpIEAgNzIgTk9OQU1FDQotCV9aTjE2Q1dl
YkNvcmVTZXR0aW5nczE4U2V0Rml4ZWRGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3MyBOT05BTUUN
Ci0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRNaW5pbXVtRm9udFNpemVFaSBAIDc0IE5PTkFN
RQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldFNlcmlmRm9udEZhbWlseUVSSzdURGVzQzE2
IEAgNzUgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0Q3Vyc2l2ZUZvbnRGYW1p
bHlFUks3VERlc0MxNiBAIDc2IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNldEZh
bnRhc3lGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3NyBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNl
dHRpbmdzMjBTZXRKYXZhU2NyaXB0RW5hYmxlZEVpIEAgNzggTk9OQU1FDQotCV9aTjE2Q1dlYkNv
cmVTZXR0aW5nczIxU2V0QXV0b1JlZnJlc2hFbmFibGVkRWkgQCA3OSBOT05BTUUNCi0JX1pOMTZD
V2ViQ29yZVNldHRpbmdzMjFTZXRTYXZlUmF3RGF0YUVuYWJsZWRFaSBAIDgwIE5PTkFNRQ0KLQlf
Wk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldFN0YW5kYXJkRm9udEZhbWlseUVSSzdURGVzQzE2IEAg
ODEgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIyU2V0RGVmYXVsdFRleHRFbmNvZGlu
Z0VSSzdURGVzQzE2IEAgODIgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIyU2V0U2Fu
c1NlcmlmRm9udEZhbWlseUVSSzdURGVzQzE2IEAgODMgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVT
ZXR0aW5nczIzU2V0RGVmYXVsdEZpeGVkRm9udFNpemVFaSBAIDg0IE5PTkFNRQ0KLQlfWk4xNkNX
ZWJDb3JlU2V0dGluZ3MyNVNldE1pbmltdW1Mb2dpY2FsRm9udFNpemVFaSBAIDg1IE5PTkFNRQ0K
LQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFNob3VsZFByaW50QmFja2dyb3VuZHNFaSBAIDg2
IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b25FUks3VERlc0MxNiBAIDg3IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MzMFNldFdp
bGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUVpIEAgODggTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVT
ZXR0aW5nczQwU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUVpIEAgODkg
Tk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczROZXdMRXYgQCA5MCBOT05BTUUNCi0JX1pO
MTZDV2ViQ29yZVNldHRpbmdzRDBFdiBAIDkxIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGlu
Z3NEMUV2IEAgOTIgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nc0QyRXYgQCA5MyBOT05B
TUUNCi0JX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjNVcmxFdiBAIDk0IE5PTkFNRQ0KLQlfWk4y
MFRXZWJDb3JlSW1hZ2VDYXJyaWVyN0FsdFRleHRFdiBAIDk1IE5PTkFNRQ0KLQlfWk4yMFRXZWJD
b3JlSW1hZ2VDYXJyaWVyN1Jhd0RhdGFFdiBAIDk2IE5PTkFNRQ0KLQlfWk4yMFRXZWJDb3JlSW1h
Z2VDYXJyaWVyOFJlbmRlcmVyRXYgQCA5NyBOT05BTUUNCi0JX1pOMjBUV2ViQ29yZUltYWdlQ2Fy
cmllcjlJbWFnZVR5cGVFdiBAIDk4IE5PTkFNRQ0KLQlfWk4yMVRXZWJDb3JlQ29va2llRmFjdG9y
eTEzQ29va2llQWRhcHRlckV2IEAgOTkgTk9OQU1FDQotCV9aTjIxVFdlYkNvcmVDb29raWVGYWN0
b3J5MTZTZXRDb29raWVBZGFwdGVyRVAyMU1XZWJDb3JlQ29va2llQWRhcHRlciBAIDEwMCBOT05B
TUUNCi0JX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIxM1BsdWdpbkhhbmRsZXJFdiBAIDEwMSBO
T05BTUUNCi0JX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIyM1NldFdlYkNvcmVQbHVnaW5IYW5k
bGVyRVAyMU1XZWJDb3JlUGx1Z2luSGFuZGxlciBAIDEwMiBOT05BTUUNCi0JX1pOMjNDV2ViQ29y
ZUdyYXBoaWNzQ29udGV4dDROZXdMRVAxNkNGYnNCaXRtYXBEZXZpY2VQMTBDRmJzQml0bWFwUDE4
TVdlYkNvcmVTY3JvbGxWaWV3IEAgMTAzIE5PTkFNRQ0KLQlfWk4yM0NXZWJDb3JlR3JhcGhpY3ND
b250ZXh0NE5ld0xFUjlDRmJzQml0R2NQMTBDRmJzQml0bWFwUDE4TVdlYkNvcmVTY3JvbGxWaWV3
IEAgMTA0IE5PTkFNRQ0KLQlfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVyMTVMb2FkZXJDb250
YWluZXJFdiBAIDEwNSBOT05BTUUNCi0JX1pOMjNUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjI1U2V0
V2ViQ29yZUxvYWRlckNvbnRhaW5lckVQMjNNV2ViQ29yZUxvYWRlckNvbnRhaW5lciBAIDEwNiBO
T05BTUUNCi0JX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTI4U2V0V2ViQ29yZUZvcm1D
b250cm9sRmFjdG9yeUVQMjZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSBAIDEwNyBOT05BTUUN
Ci0JX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTdGYWN0b3J5RXYgQCAxMDggTk9OQU1F
DQotCV9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5MjlTZXRXZWJDb3JlVGV4dFJlbmRl
cmVyRmFjdG9yeUVQMjdNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgQCAxMDkgTk9OQU1FDQot
CV9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5N0ZhY3RvcnlFdiBAIDExMCBOT05BTUUN
Ci0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTFTZXRDYWxsYmFja0VQTjVraHRt
bDE5Q2FjaGVkSW1hZ2VDYWxsYmFja0UgQCAxMTEgTk9OQU1FDQotCV9aTjI4Q1dlYkNvcmVJbWFn
ZUNhbGxiYWNrV3JhcHBlcjEyTm90aWZ5VXBkYXRlRXYgQCAxMTIgTk9OQU1FDQotCV9aTjI4Q1dl
YkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjE0Tm90aWZ5RmluaXNoZWRFdiBAIDExMyBOT05BTUUN
Ci0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTlOb3RpZnlEZWNvZGluZ0Vycm9y
RXYgQCAxMTQgTk9OQU1FDQotCV9aTjI4VFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTMwU2V0
V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5RVAyOE1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rv
cnkgQCAxMTUgTk9OQU1FDQotCV9aTjI4VFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTdGYWN0
b3J5RXYgQCAxMTYgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTBJc0ZyYW1lU2V0RXYg
QCAxMTcgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTBSZW5kZXJQYXJ0RXYgQCAxMTgg
Tk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTFOZWVkc0xheW91dEV2IEAgMTE5IE5PTkFN
RQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTEyQ2FuQ2FjaGVQYWdlRXYgQCAxMjAgTk9OQU1FDQot
CV9aTksxNENXZWJDb3JlQnJpZGdlMTJUZXh0RW5jb2RpbmdFdiBAIDEyMSBOT05BTUUNCi0JX1pO
SzE0Q1dlYkNvcmVCcmlkZ2UxNkhhc1BlbmRpbmdMYXlvdXRFdiBAIDEyMiBOT05BTUUNCi0JX1pO
SzE0Q1dlYkNvcmVCcmlkZ2UxOFNob3dpbmdGYXN0UHJldmlld0V2IEAgMTIzIE5PTkFNRQ0KLQlf
Wk5LMTRDV2ViQ29yZUJyaWRnZTIwRmFzdEZpcnN0RGlzcGxheU1vZGVFdiBAIDEyNCBOT05BTUUN
Ci0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyMEdldFVybE9mTm9kZUluRm9jdXNMRVI2VFBvaW50IEAg
MTI1IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTI0TmF2aWdhYmxlTm9kZVVuZGVyQ3Vy
c29yRVI2VFBvaW50UjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVSNVRSZWN0IEAgMTI2IE5P
TkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTNVUkxFdiBAIDEyNyBOT05BTUUNCi0JX1pOSzE0
Q1dlYkNvcmVCcmlkZ2U0TmFtZUV2IEAgMTI4IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRn
ZTZEb21haW5FdiBAIDEyOSBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2U4UmVmZXJyZXJF
diBAIDEzMCBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczExSmF2YUVuYWJsZWRFdiBA
IDEzMSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE0UGx1Z2luc0VuYWJsZWRFdiBA
IDEzMiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1RGVmYXVsdEZvbnRTaXplRXYg
QCAxMzMgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNUZpeGVkRm9udEZhbWlseUV2
IEAgMTM0IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVNaW5pbXVtRm9udFNpemVF
diBAIDEzNSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1U2VyaWZGb250RmFtaWx5
RXYgQCAxMzYgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0N1cnNpdmVGb250RmFt
aWx5RXYgQCAxMzcgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0ZhbnRhc3lGb250
RmFtaWx5RXYgQCAxMzggTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0phdmFTY3Jp
cHRFbmFibGVkRXYgQCAxMzkgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOEF1dG9S
ZWZyZXNoRW5hYmxlZEV2IEAgMTQwIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThT
YXZlUmF3RGF0YUVuYWJsZWRFdiBAIDE0MSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5n
czE4U3RhbmRhcmRGb250RmFtaWx5RXYgQCAxNDIgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0
dGluZ3MxOURlZmF1bHRUZXh0RW5jb2RpbmdFdiBAIDE0MyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNv
cmVTZXR0aW5nczE5U2Fuc1NlcmlmRm9udEZhbWlseUV2IEAgMTQ0IE5PTkFNRQ0KLQlfWk5LMTZD
V2ViQ29yZVNldHRpbmdzMjBEZWZhdWx0Rml4ZWRGb250U2l6ZUV2IEAgMTQ1IE5PTkFNRQ0KLQlf
Wk5LMTZDV2ViQ29yZVNldHRpbmdzMjJNaW5pbXVtTG9naWNhbEZvbnRTaXplRXYgQCAxNDYgTk9O
QU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMlNob3VsZFByaW50QmFja2dyb3VuZHNFdiBA
IDE0NyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIyVXNlclN0eWxlU2hlZXRMb2Nh
dGlvbkV2IEAgMTQ4IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjdXaWxsTG9hZElt
YWdlc0F1dG9tYXRpY2FsbHlFdiBAIDE0OSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5n
czM3SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUV2IEAgMTUwIE5PTkFNRQ0K
LQlfWlRJMTRDV2ViQ29yZUJyaWRnZSBAIDE1MSBOT05BTUUgOyAjPFRJPiMNCi0JX1pUSTE2Q1dl
YkNvcmVTZXR0aW5ncyBAIDE1MiBOT05BTUUgOyAjPFRJPiMNCi0JX1pUSTIwQ1dlYkNvcmVQYWdl
RGF0YUl0ZW0gQCAxNTMgTk9OQU1FIDsgIzxUST4jDQotCV9aVEkyM0NXZWJDb3JlR3JhcGhpY3ND
b250ZXh0IEAgMTU0IE5PTkFNRSA7ICM8VEk+Iw0KLQlfWlRWMTRDV2ViQ29yZUJyaWRnZSBAIDE1
NSBOT05BTUUgOyAjPFZUPiMNCi0JX1pUVjE2Q1dlYkNvcmVTZXR0aW5ncyBAIDE1NiBOT05BTUUg
OyAjPFZUPiMNCi0JX1pUVjIwQ1dlYkNvcmVQYWdlRGF0YUl0ZW0gQCAxNTcgTk9OQU1FIDsgIzxW
VD4jDQotCV9aVFYyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgMTU4IE5PTkFNRSA7ICM8VlQ+
Iw0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTdHZXRSZW5kZXJUZXh0QXJlYUVSSzdURGVzQzE2UjZS
QXJyYXlJNVRSZWN0RSBAIDE1OSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTMxR2V0TmV4
dFJlbmRlclRleHRGb3JTbWFydExpbmtzTEVSaSBAIDE2MCBOT05BTUUNCisgICAgX1pOMTNUV2Vi
Q29yZUNhY2hlMTVBZGRJdGVtVG9DYWNoZUxFUjI5TVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlcklu
Zm9SNlREZXNDOGkgQCAxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTBJbWFnZUNv
dW50RWkgQCAyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTBMb2FkSW1hZ2VzRXYg
QCAzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTFSZXNvbHZlVXJsTEVSSzdURGVz
QzE2UzJfIEAgNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTExU2VhcmNoQWdhaW5F
Uks3VERlc0MxNmlpaSBAIDUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkRlZmVy
c1RpbWVyc0V2IEAgNiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEyR2V0UGFnZURh
dGFMRWkgQCA3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTJJbWFnZXNJblJlY3RF
aSBAIDggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMlBvaW50ZXJFdmVudEUxM1RQ
b2ludGVyRXZlbnQgQCA5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTJQb2ludGVy
RXZlbnRFTjEzVFBvaW50ZXJFdmVudDVUVHlwZUVSSzZUUG9pbnQgQCAxMCBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTEzQWN0aXZhdGVFdmVudEVSNlRQb2ludCBAIDExIE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNBZGRUb0NvbnRhY3RzRVI2VFBvaW50IEAgMTIgTk9O
QU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0RpZE5vdE9wZW5VUkxFUks3VERlc0MxNiBA
IDEzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNFeGVjdXRlU2NyaXB0RVJLN1RE
ZXNDMTYgQCAxNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEzU2V0UmVuZGVyUGFy
dEVQTjVraHRtbDEwUmVuZGVyUGFydEUgQCAxNSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTE0QWRqdXN0Vmlld1NpemVFdiBAIDE2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlMTREdW1wUmVuZGVyVHJlZUV2IEAgMTcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxNEluc3RhbGxJbkZyYW1lRVIxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDE4IE5PTkFNRQ0KKyAg
ICBfWk4xNENXZWJDb3JlQnJpZGdlMTRQcmVwYXJlRm9yRXhpdEV2IEAgMTkgTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFJlbW92ZUZpbGVOYW1lRVI2VFBvaW50IEAgMjAgTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNjcm9sbFRvQW5jaG9yRVJLN1REZXNDMTYgQCAy
MSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2VsZWN0aW9uQ29sb3JFdiBAIDIy
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRTZXROZWVkc0xheW91dEV2IEAgMjMg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFVwZGF0ZUFsbFZpZXdzRXYgQCAyNCBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE1Q3JlYXRlS0hUTUxWaWV3RVIxOE1XZWJD
b3JlU2Nyb2xsVmlld2lpIEAgMjUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNURl
QWN0aXZhdGVFdmVudEVpIEAgMjYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUZp
bmRMaW5rc09mVHlwZUVSSzdURGVzQzE2UjZSQXJyYXlJMTZUV2ViQ29yZUxpbmtJdGVtRSBAIDI3
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVHZXRUZXh0Q29udGVudExFdiBAIDI4
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVKdW1wVG9TZWxlY3Rpb25FdiBAIDI5
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVSZW1vdmVGcm9tRnJhbWVFdiBAIDMw
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kUmVzaXplRXZlbnRFdiBAIDMx
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kU2Nyb2xsRXZlbnRFdiBAIDMy
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXREZWZlcnNUaW1lcnNFaSBAIDMz
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXRNYXhCaWRpV2lkdGhFaSBAIDM0
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTZTZXRGb250U2l6ZUxldmVsRWkgQCAz
NSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE2VGFiYmVkTmF2aWdhdGlvbkUxNlRX
ZWJOYXZEaXJlY3Rpb25SMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZWkgQCAzNiBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE3U2F2ZURvY3VtZW50U3RhdGVFdiBAIDM3IE5PTkFN
RQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMThBY3RpdmF0ZUFjY2Vzc0tleXNFOVRLZXlFdmVu
dCBAIDM4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMThJbml0aWFsaXplU2V0dGlu
Z3NFUksxNkNXZWJDb3JlU2V0dGluZ3MgQCAzOSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTE4U2V0RHJhd3NCYWNrZ3JvdW5kRWkgQCA0MCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTE5Qm9keUJhY2tncm91bmRDb2xvckV2IEAgNDEgTk9OQU1FDQorICAgIF9aTjE0Q1dl
YkNvcmVCcmlkZ2UyMFJlc3RvcmVEb2N1bWVudFN0YXRlRXYgQCA0MiBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTIwU2NhbGluZ0ZhY3RvckNoYW5nZWRFaSBAIDQzIE5PTkFNRQ0KKyAg
ICBfWk4xNENXZWJDb3JlQnJpZGdlMjFTY3JvbGxUb0FuY2hvcldpdGhVUkxFUks3VERlc0MxNiBA
IDQ0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjFTaG91bGRDcmVhdGVSZW5kZXJl
cnNFdiBAIDQ1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjFVUkxXaXRoUmVsYXRp
dmVTdHJpbmdFUks3VERlc0MxNiBAIDQ2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdl
MjJQcm92aXNpb25hbExvYWRTdGFydGVkRXYgQCA0NyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTIzRGV0ZXJtaW5lQ3Vyc29yUG9zaXRpb25FUjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVu
dFR5cGVSNVRSZWN0UzNfUjZUUG9pbnRpIEAgNDggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVC
cmlkZ2UyM1NldEZhc3RGaXJzdERpc3BsYXlNb2RlRWkgQCA0OSBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTI0U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lRVJLN1REZXNDMTZTMl8gQCA1
MCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0U2hvdWxkQ3JlYXRlUmVuZGVy
ZXJzRWkgQCA1MSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI2Q3JlYXRlRG9jdW1l
bnRXaXRoRW5jb2RpbmdFUks3VERlc0MxNmkgQCA1MiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTI2UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGVFMThUV2ViQ29yZURldmljZVR5cGUg
QCA1MyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI3TnVtUGVuZGluZ09yTG9hZGlu
Z1JlcXVlc3RzRXYgQCA1NCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI4Rm9yY2VM
YXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUVpIEAgNTUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVC
cmlkZ2UzRW5kRXYgQCA1NiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTROZXdMRVIx
Nk1XZWJDbGllbnRCcmlkZ2UgQCA1NyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTZD
bGllbnRFdiBAIDU4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlN0FkZERhdGFFUks2
VERlc0M4IEAgNTkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U3T3BlblVSTEVSSzdU
RGVzQzE2aVMyX1MyX1JLOVREYXRlVGltZSBAIDYwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlN1NldE5hbWVFUks3VERlc0MxNiBAIDYxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlOENsb3NlVVJMRXYgQCA2MiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZThE
cmF3UmVjdEVSSzVUUmVjdFIyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgNjMgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U4S2V5RXZlbnRFOVRLZXlFdmVudGkgQCA2NCBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTlDbGVhckZpbmRFdiBAIDY1IE5PTkFNRQ0KKyAgICBf
Wk4xNENXZWJDb3JlQnJpZGdlOVNlYXJjaEZvckVSSzdURGVzQzE2aWlpIEAgNjYgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U5U2V0UGFyZW50RVBTXyBAIDY3IE5PTkFNRQ0KKyAgICBf
Wk4xNVRXZWJDb3JlSGlzdG9yeTE1SGlzdG9yeVByb3ZpZGVyRXYgQCA2OCBOT05BTUUNCisgICAg
X1pOMTVUV2ViQ29yZUhpc3RvcnkxOFNldEhpc3RvcnlQcm92aWRlckVQMjNNV2ViQ29yZUhpc3Rv
cnlQcm92aWRlciBAIDY5IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MxNFNldEph
dmFFbmFibGVkRWkgQCA3MCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMTdTZXRQ
bHVnaW5zRW5hYmxlZEVpIEAgNzEgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4
U2V0RGVmYXVsdEZvbnRTaXplRWkgQCA3MiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRp
bmdzMThTZXRGaXhlZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDczIE5PTkFNRQ0KKyAgICBfWk4x
NkNXZWJDb3JlU2V0dGluZ3MxOFNldE1pbmltdW1Gb250U2l6ZUVpIEAgNzQgTk9OQU1FDQorICAg
IF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0U2VyaWZGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3
NSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRDdXJzaXZlRm9udEZhbWls
eUVSSzdURGVzQzE2IEAgNzYgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0
RmFudGFzeUZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc3IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJD
b3JlU2V0dGluZ3MyMFNldEphdmFTY3JpcHRFbmFibGVkRWkgQCA3OCBOT05BTUUNCisgICAgX1pO
MTZDV2ViQ29yZVNldHRpbmdzMjFTZXRBdXRvUmVmcmVzaEVuYWJsZWRFaSBAIDc5IE5PTkFNRQ0K
KyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldFNhdmVSYXdEYXRhRW5hYmxlZEVpIEAgODAg
Tk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0U3RhbmRhcmRGb250RmFtaWx5
RVJLN1REZXNDMTYgQCA4MSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjJTZXRE
ZWZhdWx0VGV4dEVuY29kaW5nRVJLN1REZXNDMTYgQCA4MiBOT05BTUUNCisgICAgX1pOMTZDV2Vi
Q29yZVNldHRpbmdzMjJTZXRTYW5zU2VyaWZGb250RmFtaWx5RVJLN1REZXNDMTYgQCA4MyBOT05B
TUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjNTZXREZWZhdWx0Rml4ZWRGb250U2l6ZUVp
IEAgODQgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0TWluaW11bUxvZ2lj
YWxGb250U2l6ZUVpIEAgODUgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0
U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0VpIEAgODYgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVT
ZXR0aW5nczI1U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSSzdURGVzQzE2IEAgODcgTk9OQU1F
DQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczMwU2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNh
bGx5RWkgQCA4OCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzNDBTZXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RWkgQCA4OSBOT05BTUUNCisgICAgX1pOMTZD
V2ViQ29yZVNldHRpbmdzNE5ld0xFdiBAIDkwIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0
dGluZ3NEMEV2IEAgOTEgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nc0QxRXYgQCA5
MiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzRDJFdiBAIDkzIE5PTkFNRQ0KKyAg
ICBfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyM1VybEV2IEAgOTQgTk9OQU1FDQorICAgIF9aTjIw
VFdlYkNvcmVJbWFnZUNhcnJpZXI3QWx0VGV4dEV2IEAgOTUgTk9OQU1FDQorICAgIF9aTjIwVFdl
YkNvcmVJbWFnZUNhcnJpZXI3UmF3RGF0YUV2IEAgOTYgTk9OQU1FDQorICAgIF9aTjIwVFdlYkNv
cmVJbWFnZUNhcnJpZXI4UmVuZGVyZXJFdiBAIDk3IE5PTkFNRQ0KKyAgICBfWk4yMFRXZWJDb3Jl
SW1hZ2VDYXJyaWVyOUltYWdlVHlwZUV2IEAgOTggTk9OQU1FDQorICAgIF9aTjIxVFdlYkNvcmVD
b29raWVGYWN0b3J5MTNDb29raWVBZGFwdGVyRXYgQCA5OSBOT05BTUUNCisgICAgX1pOMjFUV2Vi
Q29yZUNvb2tpZUZhY3RvcnkxNlNldENvb2tpZUFkYXB0ZXJFUDIxTVdlYkNvcmVDb29raWVBZGFw
dGVyIEAgMTAwIE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3JlUGx1Z2luSGFuZGxlcjEzUGx1Z2lu
SGFuZGxlckV2IEAgMTAxIE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3JlUGx1Z2luSGFuZGxlcjIz
U2V0V2ViQ29yZVBsdWdpbkhhbmRsZXJFUDIxTVdlYkNvcmVQbHVnaW5IYW5kbGVyIEAgMTAyIE5P
TkFNRQ0KKyAgICBfWk4yM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0NE5ld0xFUDE2Q0Zic0JpdG1h
cERldmljZVAxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxMDMgTk9OQU1FDQor
ICAgIF9aTjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0TmV3TEVSOUNGYnNCaXRHY1AxMENGYnNC
aXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxMDQgTk9OQU1FDQorICAgIF9aTjIzVFdlYkNv
cmVMb2FkZXJDb250YWluZXIxNUxvYWRlckNvbnRhaW5lckV2IEAgMTA1IE5PTkFNRQ0KKyAgICBf
Wk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVyMjVTZXRXZWJDb3JlTG9hZGVyQ29udGFpbmVyRVAy
M01XZWJDb3JlTG9hZGVyQ29udGFpbmVyIEAgMTA2IE5PTkFNRQ0KKyAgICBfWk4yNlRXZWJDb3Jl
Rm9ybUNvbnRyb2xGYWN0b3J5MjhTZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5RVAyNk1XZWJD
b3JlRm9ybUNvbnRyb2xGYWN0b3J5IEAgMTA3IE5PTkFNRQ0KKyAgICBfWk4yNlRXZWJDb3JlRm9y
bUNvbnRyb2xGYWN0b3J5N0ZhY3RvcnlFdiBAIDEwOCBOT05BTUUNCisgICAgX1pOMjdUV2ViQ29y
ZVRleHRSZW5kZXJlckZhY3RvcnkyOVNldFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5RVAyN01X
ZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSBAIDEwOSBOT05BTUUNCisgICAgX1pOMjdUV2ViQ29y
ZVRleHRSZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTEwIE5PTkFNRQ0KKyAgICBfWk4yOENX
ZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxMVNldENhbGxiYWNrRVBONWtodG1sMTlDYWNoZWRJ
bWFnZUNhbGxiYWNrRSBAIDExMSBOT05BTUUNCisgICAgX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJh
Y2tXcmFwcGVyMTJOb3RpZnlVcGRhdGVFdiBAIDExMiBOT05BTUUNCisgICAgX1pOMjhDV2ViQ29y
ZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTROb3RpZnlGaW5pc2hlZEV2IEAgMTEzIE5PTkFNRQ0KKyAg
ICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxOU5vdGlmeURlY29kaW5nRXJyb3JF
diBAIDExNCBOT05BTUUNCisgICAgX1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5MzBT
ZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlFUDI4TVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFj
dG9yeSBAIDExNSBOT05BTUUNCisgICAgX1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5
N0ZhY3RvcnlFdiBAIDExNiBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMElzRnJh
bWVTZXRFdiBAIDExNyBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMFJlbmRlclBh
cnRFdiBAIDExOCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMU5lZWRzTGF5b3V0
RXYgQCAxMTkgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMTJDYW5DYWNoZVBhZ2VF
diBAIDEyMCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMlRleHRFbmNvZGluZ0V2
IEAgMTIxIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTE2SGFzUGVuZGluZ0xheW91
dEV2IEAgMTIyIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTE4U2hvd2luZ0Zhc3RQ
cmV2aWV3RXYgQCAxMjMgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMjBGYXN0Rmly
c3REaXNwbGF5TW9kZUV2IEAgMTI0IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTIw
R2V0VXJsT2ZOb2RlSW5Gb2N1c0xFUjZUUG9pbnQgQCAxMjUgTk9OQU1FDQorICAgIF9aTksxNENX
ZWJDb3JlQnJpZGdlMjROYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JFUjZUUG9pbnRSMjZUV2ViQ29y
ZUZvY3VzZWRFbGVtZW50VHlwZVI1VFJlY3QgQCAxMjYgTk9OQU1FDQorICAgIF9aTksxNENXZWJD
b3JlQnJpZGdlM1VSTEV2IEAgMTI3IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTRO
YW1lRXYgQCAxMjggTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlNkRvbWFpbkV2IEAg
MTI5IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZThSZWZlcnJlckV2IEAgMTMwIE5P
TkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTFKYXZhRW5hYmxlZEV2IEAgMTMxIE5P
TkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTRQbHVnaW5zRW5hYmxlZEV2IEAgMTMy
IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVEZWZhdWx0Rm9udFNpemVFdiBA
IDEzMyBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1Rml4ZWRGb250RmFtaWx5
RXYgQCAxMzQgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNU1pbmltdW1Gb250
U2l6ZUV2IEAgMTM1IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVTZXJpZkZv
bnRGYW1pbHlFdiBAIDEzNiBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3Q3Vy
c2l2ZUZvbnRGYW1pbHlFdiBAIDEzNyBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5n
czE3RmFudGFzeUZvbnRGYW1pbHlFdiBAIDEzOCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVT
ZXR0aW5nczE3SmF2YVNjcmlwdEVuYWJsZWRFdiBAIDEzOSBOT05BTUUNCisgICAgX1pOSzE2Q1dl
YkNvcmVTZXR0aW5nczE4QXV0b1JlZnJlc2hFbmFibGVkRXYgQCAxNDAgTk9OQU1FDQorICAgIF9a
TksxNkNXZWJDb3JlU2V0dGluZ3MxOFNhdmVSYXdEYXRhRW5hYmxlZEV2IEAgMTQxIE5PTkFNRQ0K
KyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThTdGFuZGFyZEZvbnRGYW1pbHlFdiBAIDE0MiBO
T05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE5RGVmYXVsdFRleHRFbmNvZGluZ0V2
IEAgMTQzIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTlTYW5zU2VyaWZGb250
RmFtaWx5RXYgQCAxNDQgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMERlZmF1
bHRGaXhlZEZvbnRTaXplRXYgQCAxNDUgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGlu
Z3MyMk1pbmltdW1Mb2dpY2FsRm9udFNpemVFdiBAIDE0NiBOT05BTUUNCisgICAgX1pOSzE2Q1dl
YkNvcmVTZXR0aW5nczIyU2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0V2IEAgMTQ3IE5PTkFNRQ0KKyAg
ICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJVc2VyU3R5bGVTaGVldExvY2F0aW9uRXYgQCAxNDgg
Tk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MyN1dpbGxMb2FkSW1hZ2VzQXV0b21h
dGljYWxseUV2IEAgMTQ5IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMzdKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RXYgQCAxNTAgTk9OQU1FDQorICAgIF9a
VEkxNENXZWJDb3JlQnJpZGdlIEAgMTUxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJMTZDV2Vi
Q29yZVNldHRpbmdzIEAgMTUyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJMjBDV2ViQ29yZVBh
Z2VEYXRhSXRlbSBAIDE1MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSTIzQ1dlYkNvcmVHcmFw
aGljc0NvbnRleHQgQCAxNTQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVFYxNENXZWJDb3JlQnJp
ZGdlIEAgMTU1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWMTZDV2ViQ29yZVNldHRpbmdzIEAg
MTU2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWMjBDV2ViQ29yZVBhZ2VEYXRhSXRlbSBAIDE1
NyBOT05BTUUgOyAjPFZUPiMNCisgICAgICAgIF9aVFYyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0
IEAgMTU4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICAgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE3R2V0
UmVuZGVyVGV4dEFyZWFFUks3VERlc0MxNlI2UkFycmF5STVUUmVjdEUgQCAxNTkgTk9OQU1FDQor
ICAgICAgICBfWk4xNENXZWJDb3JlQnJpZGdlMzFHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlu
a3NMRVJpIEAgMTYwIE5PTkFNRQ0KKyAgICAgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIwV2luZG93
U2NyaXB0TlBPYmplY3RFdiBAIDE2MSBOT05BTUUNCiANCkluZGV4OiBXZWJDb3JlL2dyb3VwL0tI
VE1MLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZ3JvdXAvS0hUTUwubW1wCShyZXZpc2lv
biAxNzA2OSkNCisrKyBXZWJDb3JlL2dyb3VwL0tIVE1MLm1tcAkod29ya2luZyBjb3B5KQ0KQEAg
LTU5LDYgKzU5LDcgQEANCiBTWVNURU1JTkNMVURFICAgICAgIC4uXC4uXC4NCiBTWVNURU1JTkNM
VURFICAgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGtqcw0KIFNZU1RFTUlOQ0xVREUgICAgICAg
Li5cLi5cSmF2YVNjcmlwdENvcmVccGNyZQ0KK1NZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cSmF2
YVNjcmlwdENvcmVcYmluZGluZ3MNCiBTWVNURU1JTkNMVURFICAgICAgIC4uXC4uXE1lbW9yeU1h
bmFnZXJcSW5jDQogI2lmbmRlZiBfX0JST1dTRVJfU0RLDQogU1lTVEVNSU5DTFVERSAgICAgICBc
UzYwXGxpYnhtbDJwYXJzZXJceG1sZW5naW5lXGluY1xsaWJ4bWwNCkluZGV4OiBXZWJDb3JlL2dy
b3VwL0tXUS5tbXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2dyb3VwL0tXUS5tbXAJKHJldmlz
aW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvZ3JvdXAvS1dRLm1tcAkod29ya2luZyBjb3B5KQ0KQEAg
LTYyLDYgKzYyLDcgQEANCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZQ0K
IFNZU1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGtqcw0KIFNZU1RFTUlOQ0xV
REUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXHBjcmUNCitTWVNURU1JTkNMVURFICAgICAuLlwu
LlxKYXZhU2NyaXB0Q29yZVxiaW5kaW5ncw0KIFNZU1RFTUlOQ0xVREUgICAgIC4uXC4uXE1lbW9y
eU1hbmFnZXJcSW5jDQogDQogT1BUSU9OIENXIC1wcmVmaXggcHJhZ21hcy5wcmVmDQpJbmRleDog
V2ViQ29yZS9ncm91cC9XZWJDb3JlLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZ3JvdXAv
V2ViQ29yZS5tbXAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvZ3JvdXAvV2ViQ29yZS5t
bXAJKHdvcmtpbmcgY29weSkNCkBAIC02Myw2ICs2Myw3IEBADQogU1lTVEVNSU5DTFVERSAgICAg
ICAuLlxraHRtbFxlZGl0aW5nDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENv
cmVca2pzDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVccGNyZQ0KK1NZ
U1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGJpbmRpbmdzDQogU1lTVEVNSU5D
TFVERSAgICAgLi5cLi5cTWVtb3J5TWFuYWdlclxJbmMNCiANCiANCkluZGV4OiBXZWJDb3JlL2to
dG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9l
Y21hL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9raHRtbC9l
Y21hL2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM2MSwxMyArMzYxLDEzIEBA
DQogICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFO
R0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogYm9vbCBTY3JpcHRJbnRlcnByZXRlcjo6aXNHbG9iYWxP
YmplY3QoY29uc3QgVmFsdWUgJnYpCiB7CiAgICAgaWYgKHYudHlwZSgpID09IE9iamVjdFR5cGUp
IHsKLQlPYmplY3QgbyA9IHYudG9PYmplY3QgKGdsb2JhbEV4ZWMoKSk7Ci0JaWYgKG8uY2xhc3NJ
bmZvKCkgPT0gJldpbmRvdzo6aW5mbykKLQkgICAgcmV0dXJuIHRydWU7CisgICAgT2JqZWN0IG8g
PSB2LnRvT2JqZWN0IChnbG9iYWxFeGVjKCkpOworICAgIGlmIChvLmNsYXNzSW5mbygpID09ICZX
aW5kb3c6OmluZm8pCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CkBAIC0zODksMTEgKzM4OSwxMiBAQA0KIHsKICAgICB2b2lkICpyZXN1bHQgPSAwOwog
CisjaWYgIU5PS0lBX0NIQU5HRVMKICAgICBpZiAobGFuZ3VhZ2UgPT0gQmluZGluZ3M6Okluc3Rh
bmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UpCi0JcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9y
VmFsdWUgKGV4ZWMsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwotCisgICAgcmVzdWx0ID0gY3Jl
YXRlT2JqY0luc3RhbmNlRm9yVmFsdWUgKGV4ZWMsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwor
I2VuZGlmCiAgICAgaWYgKCFyZXN1bHQpCi0JcmVzdWx0ID0gSW50ZXJwcmV0ZXI6OmNyZWF0ZUxh
bmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgbGFuZ3VhZ2UsIHZhbHVlLCBvcmlnaW4sIGN1
cnJlbnQpOworICAgIHJlc3VsdCA9IEludGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNl
Rm9yVmFsdWUgKGV4ZWMsIGxhbmd1YWdlLCB2YWx1ZSwgb3JpZ2luLCBjdXJyZW50KTsKIAogICAg
IHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5oCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTMxLDcgKzMxLDcgQEANCiAjaW5jbHVkZSA8a2pzL2xvb2t1cC5oPgogI2lu
Y2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFO
R0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWUu
aD4KICNlbmRpZgogCkBAIC0xNDAsNyArMTQwLDcgQEANCiAKICAgICBET006OkV2ZW50ICpnZXRD
dXJyZW50RXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2V2dDsgfQogCi0jaWYgQVBQTEVfQ0hBTkdF
UyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICAgICB2aXJ0dWFsIGJvb2wg
aXNHbG9iYWxPYmplY3QoY29uc3QgVmFsdWUgJnYpOwogICAgIHZpcnR1YWwgSW50ZXJwcmV0ZXIg
KmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0IChjb25zdCBWYWx1ZUltcCAqaW1wKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNTYWZlU2NyaXB0IChjb25zdCBJbnRlcnByZXRlciAqdGFyZ2V0KTsKSW5k
ZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9r
aHRtbC9lY21hL2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDMsNyArNDMsNyBAQA0K
IAogI2luY2x1ZGUgIm1pc2MvaHRtbHRhZ3MuaCIKIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5P
S0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
cnVudGltZV9vYmplY3QuaD4KICNlbmRpZgogCkBAIC01OCwyMSArNTgsMjEgQEANCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvKiBTb3VyY2UgZm9yIERPTU5vZGVQcm90b1RhYmxlLiBVc2UgIm1ha2Ug
aGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Ob2RlUHJvdG9UYWJsZSAxMwot
ICBpbnNlcnRCZWZvcmUJRE9NTm9kZTo6SW5zZXJ0QmVmb3JlCURvbnREZWxldGV8RnVuY3Rpb24g
MgotICByZXBsYWNlQ2hpbGQJRE9NTm9kZTo6UmVwbGFjZUNoaWxkCURvbnREZWxldGV8RnVuY3Rp
b24gMgotICByZW1vdmVDaGlsZAlET01Ob2RlOjpSZW1vdmVDaGlsZAlEb250RGVsZXRlfEZ1bmN0
aW9uIDEKLSAgYXBwZW5kQ2hpbGQJRE9NTm9kZTo6QXBwZW5kQ2hpbGQJRG9udERlbGV0ZXxGdW5j
dGlvbiAxCi0gIGhhc0F0dHJpYnV0ZXMJRE9NTm9kZTo6SGFzQXR0cmlidXRlcwlEb250RGVsZXRl
fEZ1bmN0aW9uIDAKLSAgaGFzQ2hpbGROb2RlcwlET01Ob2RlOjpIYXNDaGlsZE5vZGVzCURvbnRE
ZWxldGV8RnVuY3Rpb24gMAotICBjbG9uZU5vZGUJRE9NTm9kZTo6Q2xvbmVOb2RlCURvbnREZWxl
dGV8RnVuY3Rpb24gMQorICBpbnNlcnRCZWZvcmUgIERPTU5vZGU6Okluc2VydEJlZm9yZSAgIERv
bnREZWxldGV8RnVuY3Rpb24gMgorICByZXBsYWNlQ2hpbGQgIERPTU5vZGU6OlJlcGxhY2VDaGls
ZCAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZW1vdmVDaGlsZCAgIERPTU5vZGU6OlJlbW92
ZUNoaWxkICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBhcHBlbmRDaGlsZCAgIERPTU5vZGU6
OkFwcGVuZENoaWxkICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBoYXNBdHRyaWJ1dGVzIERP
TU5vZGU6Okhhc0F0dHJpYnV0ZXMgIERvbnREZWxldGV8RnVuY3Rpb24gMAorICBoYXNDaGlsZE5v
ZGVzIERPTU5vZGU6Okhhc0NoaWxkTm9kZXMgIERvbnREZWxldGV8RnVuY3Rpb24gMAorICBjbG9u
ZU5vZGUgRE9NTm9kZTo6Q2xvbmVOb2RlICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICMgRE9NMgot
ICBub3JtYWxpemUJRE9NTm9kZTo6Tm9ybWFsaXplCURvbnREZWxldGV8RnVuY3Rpb24gMAotICBp
c1N1cHBvcnRlZCAgIERPTU5vZGU6OklzU3VwcG9ydGVkCURvbnREZWxldGV8RnVuY3Rpb24gMgor
ICBub3JtYWxpemUgRE9NTm9kZTo6Tm9ybWFsaXplICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKKyAg
aXNTdXBwb3J0ZWQgICBET01Ob2RlOjpJc1N1cHBvcnRlZCAgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDIKICMgZnJvbSB0aGUgRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gIGFkZEV2ZW50TGlzdGVuZXIJ
RE9NTm9kZTo6QWRkRXZlbnRMaXN0ZW5lcglEb250RGVsZXRlfEZ1bmN0aW9uIDMKLSAgcmVtb3Zl
RXZlbnRMaXN0ZW5lcglET01Ob2RlOjpSZW1vdmVFdmVudExpc3RlbmVyCURvbnREZWxldGV8RnVu
Y3Rpb24gMwotICBkaXNwYXRjaEV2ZW50CQlET01Ob2RlOjpEaXNwYXRjaEV2ZW50CURvbnREZWxl
dGV8RnVuY3Rpb24gMQotICBjb250YWlucwlET01Ob2RlOjpDb250YWlucwkJRG9udERlbGV0ZXxG
dW5jdGlvbiAxCisgIGFkZEV2ZW50TGlzdGVuZXIgIERPTU5vZGU6OkFkZEV2ZW50TGlzdGVuZXIg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgcmVtb3ZlRXZlbnRMaXN0ZW5lciAgIERPTU5vZGU6
OlJlbW92ZUV2ZW50TGlzdGVuZXIgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCisgIGRpc3BhdGNo
RXZlbnQgICAgIERPTU5vZGU6OkRpc3BhdGNoRXZlbnQgIERvbnREZWxldGV8RnVuY3Rpb24gMQor
ICBjb250YWlucyAgRE9NTm9kZTo6Q29udGFpbnMgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAx
CiAjICJET00gbGV2ZWwgMCIgKGZyb20gR2Vja28gRE9NIHJlZmVyZW5jZTsgYWxzbyBpbiBXaW5J
RSkKICAgaXRlbSAgICAgICAgICBET01Ob2RlOjpJdGVtICAgICAgICAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDEKIEBlbmQKQEAgLTExMyw3ICsxMTMsNyBAQA0KICAgICBET01PYmplY3Q6Om1hcmso
KTsKICAgICByZXR1cm47CiAgIH0KLSAgCisKICAgLy8gVGhpcyBpcyBhIG5vZGUgb3V0c2lkZSB0
aGUgZG9jdW1lbnQsIHNvIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXQgaXMgaW4sCiAgIC8v
IGFuZCBzdGFydCBtYXJraW5nIGZyb20gdGhlcmUuCiAgIE5vZGVJbXBsICpyb290ID0gbm9kZS5o
YW5kbGUoKTsKQEAgLTE2Myw3NSArMTYzLDc1IEBADQogCiAvKiBTb3VyY2UgZm9yIERPTU5vZGVU
YWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NTm9k
ZVRhYmxlIDY3Ci0gIG5vZGVOYW1lCURPTU5vZGU6Ok5vZGVOYW1lCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgbm9kZVZhbHVlCURPTU5vZGU6Ok5vZGVWYWx1ZQlEb250RGVsZXRlCi0gIG5vZGVUeXBl
CURPTU5vZGU6Ok5vZGVUeXBlCURvbnREZWxldGV8UmVhZE9ubHkKLSAgcGFyZW50Tm9kZQlET01O
b2RlOjpQYXJlbnROb2RlCURvbnREZWxldGV8UmVhZE9ubHkKLSAgcGFyZW50RWxlbWVudAlET01O
b2RlOjpQYXJlbnRFbGVtZW50CURvbnREZWxldGV8UmVhZE9ubHkKLSAgY2hpbGROb2RlcwlET01O
b2RlOjpDaGlsZE5vZGVzCURvbnREZWxldGV8UmVhZE9ubHkKLSAgZmlyc3RDaGlsZAlET01Ob2Rl
OjpGaXJzdENoaWxkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgbGFzdENoaWxkCURPTU5vZGU6Okxh
c3RDaGlsZAlEb250RGVsZXRlfFJlYWRPbmx5CisgIG5vZGVOYW1lICBET01Ob2RlOjpOb2RlTmFt
ZSAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgbm9kZVZhbHVlIERPTU5vZGU6Ok5vZGVWYWx1ZSAg
RG9udERlbGV0ZQorICBub2RlVHlwZSAgRE9NTm9kZTo6Tm9kZVR5cGUgICBEb250RGVsZXRlfFJl
YWRPbmx5CisgIHBhcmVudE5vZGUgICAgRE9NTm9kZTo6UGFyZW50Tm9kZSBEb250RGVsZXRlfFJl
YWRPbmx5CisgIHBhcmVudEVsZW1lbnQgRE9NTm9kZTo6UGFyZW50RWxlbWVudCAgRG9udERlbGV0
ZXxSZWFkT25seQorICBjaGlsZE5vZGVzICAgIERPTU5vZGU6OkNoaWxkTm9kZXMgRG9udERlbGV0
ZXxSZWFkT25seQorICBmaXJzdENoaWxkICAgIERPTU5vZGU6OkZpcnN0Q2hpbGQgRG9udERlbGV0
ZXxSZWFkT25seQorICBsYXN0Q2hpbGQgRE9NTm9kZTo6TGFzdENoaWxkICBEb250RGVsZXRlfFJl
YWRPbmx5CiAgIHByZXZpb3VzU2libGluZyAgRE9NTm9kZTo6UHJldmlvdXNTaWJsaW5nIERvbnRE
ZWxldGV8UmVhZE9ubHkKLSAgbmV4dFNpYmxpbmcJRE9NTm9kZTo6TmV4dFNpYmxpbmcJRG9udERl
bGV0ZXxSZWFkT25seQotICBhdHRyaWJ1dGVzCURPTU5vZGU6OkF0dHJpYnV0ZXMJRG9udERlbGV0
ZXxSZWFkT25seQotICBuYW1lc3BhY2VVUkkJRE9NTm9kZTo6TmFtZXNwYWNlVVJJCURvbnREZWxl
dGV8UmVhZE9ubHkKKyAgbmV4dFNpYmxpbmcgICBET01Ob2RlOjpOZXh0U2libGluZyAgICBEb250
RGVsZXRlfFJlYWRPbmx5CisgIGF0dHJpYnV0ZXMgICAgRE9NTm9kZTo6QXR0cmlidXRlcyBEb250
RGVsZXRlfFJlYWRPbmx5CisgIG5hbWVzcGFjZVVSSSAgRE9NTm9kZTo6TmFtZXNwYWNlVVJJICAg
RG9udERlbGV0ZXxSZWFkT25seQogIyBET00yCi0gIHByZWZpeAlET01Ob2RlOjpQcmVmaXgJCURv
bnREZWxldGUKLSAgbG9jYWxOYW1lCURPTU5vZGU6OkxvY2FsTmFtZQlEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIG93bmVyRG9jdW1lbnQJRE9NTm9kZTo6T3duZXJEb2N1bWVudAlEb250RGVsZXRlfFJl
YWRPbmx5CisgIHByZWZpeCAgICBET01Ob2RlOjpQcmVmaXggICAgIERvbnREZWxldGUKKyAgbG9j
YWxOYW1lIERPTU5vZGU6OkxvY2FsTmFtZSAgRG9udERlbGV0ZXxSZWFkT25seQorICBvd25lckRv
Y3VtZW50IERPTU5vZGU6Ok93bmVyRG9jdW1lbnQgIERvbnREZWxldGV8UmVhZE9ubHkKICMKLSAg
b25hYm9ydAlET01Ob2RlOjpPbkFib3J0CQlEb250RGVsZXRlCi0gIG9uYmx1cglET01Ob2RlOjpP
bkJsdXIJCQlEb250RGVsZXRlCi0gIG9uY2hhbmdlCURPTU5vZGU6Ok9uQ2hhbmdlCQlEb250RGVs
ZXRlCi0gIG9uY2xpY2sJRE9NTm9kZTo6T25DbGljawkJRG9udERlbGV0ZQotICBvbmNvbnRleHRt
ZW51CURPTU5vZGU6Ok9uQ29udGV4dE1lbnUJCURvbnREZWxldGUKLSAgb25kYmxjbGljawlET01O
b2RlOjpPbkRibENsaWNrCQlEb250RGVsZXRlCi0gIG9uYmVmb3JlY3V0CURPTU5vZGU6Ok9uQmVm
b3JlQ3V0CQlEb250RGVsZXRlCisgIG9uYWJvcnQgICBET01Ob2RlOjpPbkFib3J0ICAgICAgICBE
b250RGVsZXRlCisgIG9uYmx1ciAgICBET01Ob2RlOjpPbkJsdXIgICAgICAgICBEb250RGVsZXRl
CisgIG9uY2hhbmdlICBET01Ob2RlOjpPbkNoYW5nZSAgICAgICBEb250RGVsZXRlCisgIG9uY2xp
Y2sgICBET01Ob2RlOjpPbkNsaWNrICAgICAgICBEb250RGVsZXRlCisgIG9uY29udGV4dG1lbnUg
RE9NTm9kZTo6T25Db250ZXh0TWVudSAgICAgIERvbnREZWxldGUKKyAgb25kYmxjbGljayAgICBE
T01Ob2RlOjpPbkRibENsaWNrICAgICBEb250RGVsZXRlCisgIG9uYmVmb3JlY3V0ICAgRE9NTm9k
ZTo6T25CZWZvcmVDdXQgICAgICAgIERvbnREZWxldGUKICAgb25jdXQgICAgICAgICBET01Ob2Rl
OjpPbkN1dCAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25iZWZvcmVjb3B5CURPTU5v
ZGU6Ok9uQmVmb3JlQ29weQkJRG9udERlbGV0ZQotICBvbmNvcHkJRE9NTm9kZTo6T25Db3B5ICAg
ICAgICAgICAgICAgICBEb250RGVsZXRlCi0gIG9uYmVmb3JlcGFzdGUJRE9NTm9kZTo6T25CZWZv
cmVQYXN0ZQkJRG9udERlbGV0ZQotICBvbnBhc3RlCURPTU5vZGU6Ok9uUGFzdGUJCURvbnREZWxl
dGUKLSAgb25kcmFnCURPTU5vZGU6Ok9uRHJhZwkJCURvbnREZWxldGUKLSAgb25kcmFnZHJvcAlE
T01Ob2RlOjpPbkRyYWdEcm9wCQlEb250RGVsZXRlCi0gIG9uZHJhZ2VuZAlET01Ob2RlOjpPbkRy
YWdFbmQJCURvbnREZWxldGUKLSAgb25kcmFnZW50ZXIJRE9NTm9kZTo6T25EcmFnRW50ZXIJCURv
bnREZWxldGUKLSAgb25kcmFnbGVhdmUJRE9NTm9kZTo6T25EcmFnTGVhdmUJCURvbnREZWxldGUK
LSAgb25kcmFnb3ZlcglET01Ob2RlOjpPbkRyYWdPdmVyCQlEb250RGVsZXRlCi0gIG9uZHJhZ3N0
YXJ0CURPTU5vZGU6Ok9uRHJhZ1N0YXJ0CQlEb250RGVsZXRlCi0gIG9uZHJvcAlET01Ob2RlOjpP
bkRyb3AgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25lcnJvcglET01Ob2RlOjpPbkVy
cm9yCQlEb250RGVsZXRlCi0gIG9uZm9jdXMJRE9NTm9kZTo6T25Gb2N1cyAgICAgICAJCURvbnRE
ZWxldGUKKyAgb25iZWZvcmVjb3B5ICBET01Ob2RlOjpPbkJlZm9yZUNvcHkgICAgICAgRG9udERl
bGV0ZQorICBvbmNvcHkgICAgRE9NTm9kZTo6T25Db3B5ICAgICAgICAgICAgICAgICBEb250RGVs
ZXRlCisgIG9uYmVmb3JlcGFzdGUgRE9NTm9kZTo6T25CZWZvcmVQYXN0ZSAgICAgIERvbnREZWxl
dGUKKyAgb25wYXN0ZSAgIERPTU5vZGU6Ok9uUGFzdGUgICAgICAgIERvbnREZWxldGUKKyAgb25k
cmFnICAgIERPTU5vZGU6Ok9uRHJhZyAgICAgICAgIERvbnREZWxldGUKKyAgb25kcmFnZHJvcCAg
ICBET01Ob2RlOjpPbkRyYWdEcm9wICAgICBEb250RGVsZXRlCisgIG9uZHJhZ2VuZCBET01Ob2Rl
OjpPbkRyYWdFbmQgICAgICBEb250RGVsZXRlCisgIG9uZHJhZ2VudGVyICAgRE9NTm9kZTo6T25E
cmFnRW50ZXIgICAgICAgIERvbnREZWxldGUKKyAgb25kcmFnbGVhdmUgICBET01Ob2RlOjpPbkRy
YWdMZWF2ZSAgICAgICAgRG9udERlbGV0ZQorICBvbmRyYWdvdmVyICAgIERPTU5vZGU6Ok9uRHJh
Z092ZXIgICAgIERvbnREZWxldGUKKyAgb25kcmFnc3RhcnQgICBET01Ob2RlOjpPbkRyYWdTdGFy
dCAgICAgICAgRG9udERlbGV0ZQorICBvbmRyb3AgICAgRE9NTm9kZTo6T25Ecm9wICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlCisgIG9uZXJyb3IgICBET01Ob2RlOjpPbkVycm9yICAgICAgICBE
b250RGVsZXRlCisgIG9uZm9jdXMgICBET01Ob2RlOjpPbkZvY3VzICAgICAgICAgICAgRG9udERl
bGV0ZQogICBvbmlucHV0ICAgICAgIERPTU5vZGU6Ok9uSW5wdXQgICAgICAgICAgICAgICAgRG9u
dERlbGV0ZQotICBvbmtleWRvd24JRE9NTm9kZTo6T25LZXlEb3duCQlEb250RGVsZXRlCi0gIG9u
a2V5cHJlc3MJRE9NTm9kZTo6T25LZXlQcmVzcwkJRG9udERlbGV0ZQotICBvbmtleXVwCURPTU5v
ZGU6Ok9uS2V5VXAJCURvbnREZWxldGUKLSAgb25sb2FkCURPTU5vZGU6Ok9uTG9hZAkJCURvbnRE
ZWxldGUKLSAgb25tb3VzZWRvd24JRE9NTm9kZTo6T25Nb3VzZURvd24JCURvbnREZWxldGUKLSAg
b25tb3VzZW1vdmUJRE9NTm9kZTo6T25Nb3VzZU1vdmUJCURvbnREZWxldGUKLSAgb25tb3VzZW91
dAlET01Ob2RlOjpPbk1vdXNlT3V0CQlEb250RGVsZXRlCi0gIG9ubW91c2VvdmVyCURPTU5vZGU6
Ok9uTW91c2VPdmVyCQlEb250RGVsZXRlCi0gIG9ubW91c2V1cAlET01Ob2RlOjpPbk1vdXNlVXAJ
CURvbnREZWxldGUKLSAgb25tb3VzZXdoZWVsCURPTU5vZGU6Ok9uTW91c2VXaGVlbAkJRG9udERl
bGV0ZQotICBvbm1vdmUJRE9NTm9kZTo6T25Nb3ZlCQkJRG9udERlbGV0ZQotICBvbnJlc2V0CURP
TU5vZGU6Ok9uUmVzZXQJCURvbnREZWxldGUKLSAgb25yZXNpemUJRE9NTm9kZTo6T25SZXNpemUJ
CURvbnREZWxldGUKKyAgb25rZXlkb3duIERPTU5vZGU6Ok9uS2V5RG93biAgICAgIERvbnREZWxl
dGUKKyAgb25rZXlwcmVzcyAgICBET01Ob2RlOjpPbktleVByZXNzICAgICBEb250RGVsZXRlCisg
IG9ua2V5dXAgICBET01Ob2RlOjpPbktleVVwICAgICAgICBEb250RGVsZXRlCisgIG9ubG9hZCAg
ICBET01Ob2RlOjpPbkxvYWQgICAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2Vkb3duICAgRE9N
Tm9kZTo6T25Nb3VzZURvd24gICAgICAgIERvbnREZWxldGUKKyAgb25tb3VzZW1vdmUgICBET01O
b2RlOjpPbk1vdXNlTW92ZSAgICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNlb3V0ICAgIERPTU5v
ZGU6Ok9uTW91c2VPdXQgICAgIERvbnREZWxldGUKKyAgb25tb3VzZW92ZXIgICBET01Ob2RlOjpP
bk1vdXNlT3ZlciAgICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNldXAgRE9NTm9kZTo6T25Nb3Vz
ZVVwICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNld2hlZWwgIERPTU5vZGU6Ok9uTW91c2VXaGVl
bCAgICAgICBEb250RGVsZXRlCisgIG9ubW92ZSAgICBET01Ob2RlOjpPbk1vdmUgICAgICAgICBE
b250RGVsZXRlCisgIG9ucmVzZXQgICBET01Ob2RlOjpPblJlc2V0ICAgICAgICBEb250RGVsZXRl
CisgIG9ucmVzaXplICBET01Ob2RlOjpPblJlc2l6ZSAgICAgICBEb250RGVsZXRlCiAgIG9uc2Ny
b2xsICAgICAgRE9NTm9kZTo6T25TY3JvbGwgICAgICAgICAgICAgICBEb250RGVsZXRlCiAgIG9u
c2VhcmNoICAgICAgRE9NTm9kZTo6T25TZWFyY2ggICAgICAgICAgICAgICBEb250RGVsZXRlCi0g
IG9uc2VsZWN0CURPTU5vZGU6Ok9uU2VsZWN0CQlEb250RGVsZXRlCi0gIG9uc2VsZWN0c3RhcnQJ
RE9NTm9kZTo6T25TZWxlY3RTdGFydAkJRG9udERlbGV0ZQotICBvbnN1Ym1pdAlET01Ob2RlOjpP
blN1Ym1pdAkJRG9udERlbGV0ZQotICBvbnVubG9hZAlET01Ob2RlOjpPblVubG9hZAkJRG9udERl
bGV0ZQorICBvbnNlbGVjdCAgRE9NTm9kZTo6T25TZWxlY3QgICAgICAgRG9udERlbGV0ZQorICBv
bnNlbGVjdHN0YXJ0IERPTU5vZGU6Ok9uU2VsZWN0U3RhcnQgICAgICBEb250RGVsZXRlCisgIG9u
c3VibWl0ICBET01Ob2RlOjpPblN1Ym1pdCAgICAgICBEb250RGVsZXRlCisgIG9udW5sb2FkICBE
T01Ob2RlOjpPblVubG9hZCAgICAgICBEb250RGVsZXRlCiAjIElFIGV4dGVuc2lvbnMKLSAgb2Zm
c2V0TGVmdAlET01Ob2RlOjpPZmZzZXRMZWZ0CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG9mZnNl
dFRvcAlET01Ob2RlOjpPZmZzZXRUb3AJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgb2Zmc2V0V2lk
dGgJRE9NTm9kZTo6T2Zmc2V0V2lkdGgJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgb2Zmc2V0SGVp
Z2h0CURPTU5vZGU6Ok9mZnNldEhlaWdodAkJRG9udERlbGV0ZXxSZWFkT25seQotICBvZmZzZXRQ
YXJlbnQJRE9NTm9kZTo6T2Zmc2V0UGFyZW50CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGNsaWVu
dFdpZHRoCURPTU5vZGU6OkNsaWVudFdpZHRoCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGNsaWVu
dEhlaWdodAlET01Ob2RlOjpDbGllbnRIZWlnaHQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgc2Ny
b2xsTGVmdAlET01Ob2RlOjpTY3JvbGxMZWZ0CQlEb250RGVsZXRlCi0gIHNjcm9sbFRvcAlET01O
b2RlOjpTY3JvbGxUb3AJCURvbnREZWxldGUKKyAgb2Zmc2V0TGVmdCAgICBET01Ob2RlOjpPZmZz
ZXRMZWZ0ICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9mZnNldFRvcCBET01Ob2RlOjpPZmZz
ZXRUb3AgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9mZnNldFdpZHRoICAgRE9NTm9kZTo6
T2Zmc2V0V2lkdGggICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb2Zmc2V0SGVpZ2h0ICBE
T01Ob2RlOjpPZmZzZXRIZWlnaHQgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBvZmZzZXRQ
YXJlbnQgIERPTU5vZGU6Ok9mZnNldFBhcmVudCAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Cisg
IGNsaWVudFdpZHRoICAgRE9NTm9kZTo6Q2xpZW50V2lkdGggICAgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkKKyAgY2xpZW50SGVpZ2h0ICBET01Ob2RlOjpDbGllbnRIZWlnaHQgICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQorICBzY3JvbGxMZWZ0ICAgIERPTU5vZGU6OlNjcm9sbExlZnQgICAgIERv
bnREZWxldGUKKyAgc2Nyb2xsVG9wIERPTU5vZGU6OlNjcm9sbFRvcCAgICAgIERvbnREZWxldGUK
ICAgc2Nyb2xsV2lkdGggICBET01Ob2RlOjpTY3JvbGxXaWR0aCAgICAgICAgICAgIERvbnREZWxl
dGV8UmVhZE9ubHkKICAgc2Nyb2xsSGVpZ2h0ICBET01Ob2RlOjpTY3JvbGxIZWlnaHQgICAgICAg
ICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKQEAgLTMxNCw5ICszMTQsOSBAQA0KICAgY2Fz
ZSBPbk1vdXNlT3ZlcjoKICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudEltcGw6Ok1P
VVNFT1ZFUl9FVkVOVCk7CiAgIGNhc2UgT25Nb3VzZVVwOgotICAgIHJldHVybiBnZXRMaXN0ZW5l
cihET006OkV2ZW50SW1wbDo6TU9VU0VVUF9FVkVOVCk7ICAgICAgCisgICAgcmV0dXJuIGdldExp
c3RlbmVyKERPTTo6RXZlbnRJbXBsOjpNT1VTRVVQX0VWRU5UKTsKICAgY2FzZSBPbk1vdXNlV2hl
ZWw6Ci0gICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpNT1VTRVdIRUVMX0VW
RU5UKTsgICAgICAKKyAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudEltcGw6Ok1PVVNF
V0hFRUxfRVZFTlQpOwogICBjYXNlIE9uQmVmb3JlQ3V0OgogICAgIHJldHVybiBnZXRMaXN0ZW5l
cihET006OkV2ZW50SW1wbDo6QkVGT1JFQ1VUX0VWRU5UKTsKICAgY2FzZSBPbkN1dDoKQEAgLTYw
Myw5ICs2MDMsOSBAQA0KICAgICBET006OkV2ZW50TGlzdGVuZXIgKmxpc3RlbmVyID0gbm9kZS5o
YW5kbGUoKS0+Z2V0SFRNTEV2ZW50TGlzdGVuZXIoZXZlbnRJZCk7CiAgICAgSlNFdmVudExpc3Rl
bmVyICpqc0xpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNFdmVudExpc3RlbmVyKj4obGlzdGVuZXIp
OwogICAgIGlmICgganNMaXN0ZW5lciAmJiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iakltcCgpICkK
LQlyZXR1cm4ganNMaXN0ZW5lci0+bGlzdGVuZXJPYmooKTsKKyAgICByZXR1cm4ganNMaXN0ZW5l
ci0+bGlzdGVuZXJPYmooKTsKICAgICBlbHNlCi0JcmV0dXJuIE51bGwoKTsKKyAgICByZXR1cm4g
TnVsbCgpOwogfQogCiB2b2lkIERPTU5vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3Rh
dGUgKiwgU2NvcGVDaGFpbiAmKSBjb25zdApAQCAtNjU4LDEzICs2NTgsMTMgQEANCiAgICAgY2Fz
ZSBET01Ob2RlOjpDb250YWluczoKICAgICB7CiAgICAgICAgIGludCBleGNlcHRpb25jb2RlPTA7
Ci0JRE9NOjpOb2RlIG90aGVyID0gdG9Ob2RlKGFyZ3NbMF0pOwotCWlmICghb3RoZXIuaXNOdWxs
KCkgJiYgbm9kZS5ub2RlVHlwZSgpPT1ET006Ok5vZGU6OkVMRU1FTlRfTk9ERSkKLQl7Ci0JICAg
IERPTTo6Tm9kZUJhc2VJbXBsICppbXBsID0gc3RhdGljX2Nhc3Q8RE9NOjpOb2RlQmFzZUltcGwg
Kj4obm9kZS5oYW5kbGUoKSk7Ci0JICAgIGJvb2wgcmV0dmFsID0gIWltcGwtPmNoZWNrTm9Pd25l
cihvdGhlci5oYW5kbGUoKSxleGNlcHRpb25jb2RlKTsKLQkgICAgcmV0dXJuIEJvb2xlYW4ocmV0
dmFsICYmIGV4Y2VwdGlvbmNvZGUgPT0gMCk7Ci0JfQorICAgIERPTTo6Tm9kZSBvdGhlciA9IHRv
Tm9kZShhcmdzWzBdKTsKKyAgICBpZiAoIW90aGVyLmlzTnVsbCgpICYmIG5vZGUubm9kZVR5cGUo
KT09RE9NOjpOb2RlOjpFTEVNRU5UX05PREUpCisgICAgeworICAgICAgICBET006Ok5vZGVCYXNl
SW1wbCAqaW1wbCA9IHN0YXRpY19jYXN0PERPTTo6Tm9kZUJhc2VJbXBsICo+KG5vZGUuaGFuZGxl
KCkpOworICAgICAgICBib29sIHJldHZhbCA9ICFpbXBsLT5jaGVja05vT3duZXIob3RoZXIuaGFu
ZGxlKCksZXhjZXB0aW9uY29kZSk7CisgICAgICAgIHJldHVybiBCb29sZWFuKHJldHZhbCAmJiBl
eGNlcHRpb25jb2RlID09IDApOworICAgIH0KICAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwog
ICAgIH0KICAgICBjYXNlIERPTU5vZGU6Okl0ZW06CkBAIC03NDksOCArNzQ5LDggQEANCiAgICAg
T2JqZWN0IGVyciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCAiRXhjZXB0aW9u
IGZyb20gRE9NTm9kZUxpc3QiKTsKICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXJyKTsKICAgICBE
T006Ol9leGNlcHRpb25jb2RlID0gMDsKLSAgfSAgCi0jZWxzZSAgICAgCisgIH0KKyNlbHNlCiAg
IHRyeSB7CiAgICAgdmFsID0gdHJ5Q2FsbChleGVjLCB0aGlzT2JqLCBhcmdzKTsKICAgfQpAQCAt
NzU5LDcgKzc1OSw3IEBADQogICAgIE9iamVjdCBlcnIgPSBFcnJvcjo6Y3JlYXRlKGV4ZWMsIEdl
bmVyYWxFcnJvciwgIkV4Y2VwdGlvbiBmcm9tIERPTU5vZGVMaXN0Iik7CiAgICAgZXhlYy0+c2V0
RXhjZXB0aW9uKGVycik7CiAgIH0KLSNlbmRpZiAgCisjZW5kaWYKICAgcmV0dXJuIHZhbDsKIH0K
IApAQCAtODA1LDEwICs4MDUsMTAgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NQXR0clRhYmxlLiBV
c2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01BdHRyVGFibGUg
NQotICBuYW1lCQlET01BdHRyOjpOYW1lCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHNwZWNpZmll
ZAlET01BdHRyOjpTcGVjaWZpZWQJRG9udERlbGV0ZXxSZWFkT25seQotICB2YWx1ZQkJRE9NQXR0
cjo6VmFsdWVQcm9wZXJ0eQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG93bmVyRWxlbWVudAlET01B
dHRyOjpPd25lckVsZW1lbnQJRG9udERlbGV0ZXxSZWFkT25seQorICBuYW1lICAgICAgRE9NQXR0
cjo6TmFtZSAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHNwZWNpZmllZCBET01BdHRyOjpT
cGVjaWZpZWQgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgdmFsdWUgICAgIERPTUF0dHI6OlZhbHVl
UHJvcGVydHkgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb3duZXJFbGVtZW50ICBET01BdHRyOjpP
d25lckVsZW1lbnQgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwogVmFsdWUgRE9NQXR0
cjo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1l
KSBjb25zdApAQCAtOTA3LDE0ICs5MDcsMTQgQEANCiAqLwogCiBET01Eb2N1bWVudDo6RE9NRG9j
dW1lbnQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006OkRvY3VtZW50ICZkKQotICA6IERPTU5v
ZGUoZCkgCi17IAorICA6IERPTU5vZGUoZCkKK3sKICAgc2V0UHJvdG90eXBlKERPTURvY3VtZW50
UHJvdG86OnNlbGYoZXhlYykpOwogfQogCiBET01Eb2N1bWVudDo6RE9NRG9jdW1lbnQoY29uc3Qg
RE9NOjpEb2N1bWVudCAmZCkKLSAgOiBET01Ob2RlKGQpIAoteyAKKyAgOiBET01Ob2RlKGQpCit7
CiB9CiAKIERPTURvY3VtZW50Ojp+RE9NRG9jdW1lbnQoKQpAQCAtMTA4OCw3ICsxMDg4LDcgQEAN
CiAgICAgLy8gIklmIG5vdCBzdXBwb3J0ZWQgW2ZvciBhIGNvbW1hbmQgaWRlbnRpZmllcl0sIHRo
aXMgbWV0aG9kIHJldHVybnMgYSBCb29sZWFuIHNldCB0byBmYWxzZS4iCiAgICAgaWYgKGNvbW1h
bmRWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEJvb2xlYW4oZmFsc2UpOwotICAgIGVs
c2UgCisgICAgZWxzZQogICAgICAgICByZXR1cm4gU3RyaW5nKGNvbW1hbmRWYWx1ZSk7CiAgIH0K
ICAgZGVmYXVsdDoKQEAgLTExMDIsMjEgKzExMDIsMjEgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9N
RWxlbWVudFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgog
QGJlZ2luIERPTUVsZW1lbnRQcm90b1RhYmxlIDE3Ci0gIGdldEF0dHJpYnV0ZQkJRE9NRWxlbWVu
dDo6R2V0QXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBzZXRBdHRyaWJ1dGUJCURP
TUVsZW1lbnQ6OlNldEF0dHJpYnV0ZQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcmVtb3ZlQXR0
cmlidXRlCURPTUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZQlEb250RGVsZXRlfEZ1bmN0aW9uIDEK
LSAgZ2V0QXR0cmlidXRlTm9kZQlET01FbGVtZW50OjpHZXRBdHRyaWJ1dGVOb2RlCURvbnREZWxl
dGV8RnVuY3Rpb24gMQotICBzZXRBdHRyaWJ1dGVOb2RlCURPTUVsZW1lbnQ6OlNldEF0dHJpYnV0
ZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlbW92ZUF0dHJpYnV0ZU5vZGUJRE9NRWxl
bWVudDo6UmVtb3ZlQXR0cmlidXRlTm9kZQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgZ2V0RWxl
bWVudHNCeVRhZ05hbWUJRE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWUJRG9udERlbGV0
ZXxGdW5jdGlvbiAxCi0gIGhhc0F0dHJpYnV0ZQkJRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlCURv
bnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRBdHRyaWJ1dGVOUwlET01FbGVtZW50OjpHZXRBdHRy
aWJ1dGVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgc2V0QXR0cmlidXRlTlMJRE9NRWxlbWVu
dDo6U2V0QXR0cmlidXRlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIHJlbW92ZUF0dHJpYnV0
ZU5TCURPTUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMgot
ICBnZXRBdHRyaWJ1dGVOb2RlTlMJRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTm9kZU5TCURvbnRE
ZWxldGV8RnVuY3Rpb24gMgotICBzZXRBdHRyaWJ1dGVOb2RlTlMJRE9NRWxlbWVudDo6U2V0QXR0
cmlidXRlTm9kZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRFbGVtZW50c0J5VGFnTmFt
ZU5TIERPTUVsZW1lbnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1lTlMJRG9udERlbGV0ZXxGdW5jdGlv
biAyCi0gIGhhc0F0dHJpYnV0ZU5TCURPTUVsZW1lbnQ6Okhhc0F0dHJpYnV0ZU5TCURvbnREZWxl
dGV8RnVuY3Rpb24gMgorICBnZXRBdHRyaWJ1dGUgICAgICBET01FbGVtZW50OjpHZXRBdHRyaWJ1
dGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHNldEF0dHJpYnV0ZSAgICAgIERPTUVsZW1l
bnQ6OlNldEF0dHJpYnV0ZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgcmVtb3ZlQXR0cmli
dXRlICAgRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlIERvbnREZWxldGV8RnVuY3Rpb24gMQor
ICBnZXRBdHRyaWJ1dGVOb2RlICBET01FbGVtZW50OjpHZXRBdHRyaWJ1dGVOb2RlICAgIERvbnRE
ZWxldGV8RnVuY3Rpb24gMQorICBzZXRBdHRyaWJ1dGVOb2RlICBET01FbGVtZW50OjpTZXRBdHRy
aWJ1dGVOb2RlICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZW1vdmVBdHRyaWJ1dGVOb2Rl
ICAgRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlTm9kZSBEb250RGVsZXRlfEZ1bmN0aW9uIDEK
KyAgZ2V0RWxlbWVudHNCeVRhZ05hbWUgIERPTUVsZW1lbnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1l
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBoYXNBdHRyaWJ1dGUgICAgICBET01FbGVtZW50
OjpIYXNBdHRyaWJ1dGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGdldEF0dHJpYnV0ZU5T
ICAgIERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAg
c2V0QXR0cmlidXRlTlMgICAgRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlTlMgIERvbnREZWxldGV8
RnVuY3Rpb24gMworICByZW1vdmVBdHRyaWJ1dGVOUyBET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1
dGVOUyAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBnZXRBdHRyaWJ1dGVOb2RlTlMgICAgRE9N
RWxlbWVudDo6R2V0QXR0cmlidXRlTm9kZU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgc2V0
QXR0cmlidXRlTm9kZU5TICAgIERPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZU5vZGVOUyAgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCisgIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMgRE9NRWxlbWVudDo6R2V0
RWxlbWVudHNCeVRhZ05hbWVOUyBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgaGFzQXR0cmlidXRl
TlMgICAgRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlTlMgIERvbnREZWxldGV8RnVuY3Rpb24gMgog
ICBzY3JvbGxJbnRvVmlldyAgICAgICAgRE9NRWxlbWVudDo6U2Nyb2xsSW50b1ZpZXcgICAgICBE
b250RGVsZXRlfEZ1bmN0aW9uIDEKICAgZm9jdXMgICAgICAgICAgICAgICAgIERPTUVsZW1lbnQ6
OkVsZW1lbnRGb2N1cyAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCiAgIGJsdXIgICAgICAg
ICAgICAgICAgICBET01FbGVtZW50OjpFbGVtZW50Qmx1ciAgICAgICAgIERvbnREZWxldGV8RnVu
Y3Rpb24gMApAQCAtMTEzNCwxOSArMTEzNCwxOSBAQA0KIGNvbnN0IENsYXNzSW5mbyBET01FbGVt
ZW50OjppbmZvID0geyAiRWxlbWVudCIsICZET01Ob2RlOjppbmZvLCAmRE9NRWxlbWVudFRhYmxl
LCAwIH07CiAvKiBTb3VyY2UgZm9yIERPTUVsZW1lbnRUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJs
ZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRWxlbWVudFRhYmxlIDMKLSAgdGFnTmFtZQlE
T01FbGVtZW50OjpUYWdOYW1lICAgICAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkKLSAgc3R5bGUJCURPTUVsZW1lbnQ6OlN0eWxlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQorICB0YWdOYW1lICAgRE9NRWxlbWVudDo6VGFnTmFtZSAg
ICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHN0eWxlICAgICBE
T01FbGVtZW50OjpTdHlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkKIEBlbmQKICovCiBET01FbGVtZW50OjpET01FbGVtZW50KEV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgRE9NOjpFbGVtZW50ICZlKQotICA6IERPTU5vZGUoZSkgCisgIDogRE9NTm9kZShlKQog
ewogICBzZXRQcm90b3R5cGUoRE9NRWxlbWVudFByb3RvOjpzZWxmKGV4ZWMpKTsKIH0KIAogRE9N
RWxlbWVudDo6RE9NRWxlbWVudChjb25zdCBET006OkVsZW1lbnQgJmUpCi0gIDogRE9NTm9kZShl
KSAKLXsgCisgIDogRE9NTm9kZShlKQorewogfQogCiBWYWx1ZSBET01FbGVtZW50Ojp0cnlHZXQo
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBA
IC0xMjMxLDcgKzEyMzEsNyBAQA0KICAgICAgIHJldHVybiBnZXRET01Ob2RlTGlzdChleGVjLGVs
ZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhhcmdzWzBdLnRvU3RyaW5nKGV4ZWMpLnN0cmlu
ZygpLGFyZ3NbMV0udG9TdHJpbmcoZXhlYykuc3RyaW5nKCkpKTsKICAgICBjYXNlIERPTUVsZW1l
bnQ6Okhhc0F0dHJpYnV0ZU5TOiAvLyBET00yCiAgICAgICByZXR1cm4gQm9vbGVhbihlbGVtZW50
Lmhhc0F0dHJpYnV0ZU5TKGFyZ3NbMF0udG9TdHJpbmcoZXhlYykuc3RyaW5nKCksYXJnc1sxXS50
b1N0cmluZyhleGVjKS5zdHJpbmcoKSkpOwotICAgIGNhc2UgRE9NRWxlbWVudDo6U2Nyb2xsSW50
b1ZpZXc6IAorICAgIGNhc2UgRE9NRWxlbWVudDo6U2Nyb2xsSW50b1ZpZXc6CiAgICAgICAoYXJn
c1swXS50eXBlKCkgIT0gVW5kZWZpbmVkVHlwZSAmJiBhcmdzWzBdLnR5cGUoKSAhPSBOdWxsVHlw
ZSkgPyBlbGVtZW50LnNjcm9sbEludG9WaWV3KGFyZ3NbMF0udG9Cb29sZWFuKGV4ZWMpKSA6IGVs
ZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7CiAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAg
ICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxCeUxpbmVzOgpAQCAtMTI0MCw3ICsxMjQwLDcgQEAN
CiAgICAgICAgIERPTTo6RG9jdW1lbnRJbXBsKiBkb2NpbXBsID0gbm9kZS5oYW5kbGUoKS0+Z2V0
RG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGRvY2ltcGwpIHsKICAgICAgICAgICAgIGRvY2ltcGwt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotICAgICAgICB9ICAgICAg
ICAgICAgCisgICAgICAgIH0KICAgICAgICAga2h0bWw6OlJlbmRlck9iamVjdCAqcmVuZCA9IG5v
ZGUuaGFuZGxlKCkgPyBub2RlLmhhbmRsZSgpLT5yZW5kZXJlcigpIDogMEw7CiAgICAgICAgIGlm
IChyZW5kICYmIHJlbmQtPmhhc092ZXJmbG93Q2xpcCgpKSB7CiAgICAgICAgICAgICBLV1FTY3Jv
bGxEaXJlY3Rpb24gZGlyZWN0aW9uID0gS1dRU2Nyb2xsRG93bjsKQEAgLTEyNTMsNyArMTI1Myw3
IEBADQogICAgICAgICAgICAgcmVuZC0+bGF5ZXIoKS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVs
YXJpdHksIG11bHRpcGxpZXIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBVbmRlZmluZWQo
KTsKLSAgICAgICAgCisKICAgICB9CiAgICAgY2FzZSBET01FbGVtZW50OjpFbGVtZW50Rm9jdXM6
CiAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKQEAgLTEyNzAsMTEgKzEyNzAsMTEgQEANCiAKIC8q
IFNvdXJjZSBmb3IgRE9NRE9NSW1wbGVtZW50YXRpb25Qcm90b1RhYmxlLiBVc2UgIm1ha2UgaGFz
aHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01ET01JbXBsZW1lbnRhdGlvblByb3Rv
VGFibGUgNQotICBoYXNGZWF0dXJlCQlET01ET01JbXBsZW1lbnRhdGlvbjo6SGFzRmVhdHVyZQkJ
RG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGhhc0ZlYXR1cmUgICAgICAgIERPTURPTUltcGxlbWVu
dGF0aW9uOjpIYXNGZWF0dXJlICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKICMgRE9NMgot
ICBjcmVhdGVDU1NTdHlsZVNoZWV0CURPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVDU1NTdHls
ZVNoZWV0CURvbnREZWxldGV8RnVuY3Rpb24gMgotICBjcmVhdGVEb2N1bWVudFR5cGUJRE9NRE9N
SW1wbGVtZW50YXRpb246OkNyZWF0ZURvY3VtZW50VHlwZQlEb250RGVsZXRlfEZ1bmN0aW9uIDMK
LSAgY3JlYXRlRG9jdW1lbnQJRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZURvY3VtZW50CQlE
b250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgY3JlYXRlQ1NTU3R5bGVTaGVldCAgIERPTURPTUltcGxl
bWVudGF0aW9uOjpDcmVhdGVDU1NTdHlsZVNoZWV0ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisg
IGNyZWF0ZURvY3VtZW50VHlwZSAgICBET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1l
bnRUeXBlICAgIERvbnREZWxldGV8RnVuY3Rpb24gMworICBjcmVhdGVEb2N1bWVudCAgICBET01E
T01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1lbnQgICAgICAgIERvbnREZWxldGV8RnVuY3Rp
b24gMwogICBjcmVhdGVIVE1MRG9jdW1lbnQgICAgRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0
ZUhUTUxEb2N1bWVudCAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiBAZW5kCiAqLwpAQCAt
MTI4NSw4ICsxMjg1LDggQEANCiBjb25zdCBDbGFzc0luZm8gRE9NRE9NSW1wbGVtZW50YXRpb246
OmluZm8gPSB7ICJET01JbXBsZW1lbnRhdGlvbiIsIDAsIDAsIDAgfTsKIAogRE9NRE9NSW1wbGVt
ZW50YXRpb246OkRPTURPTUltcGxlbWVudGF0aW9uKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9N
OjpET01JbXBsZW1lbnRhdGlvbiAmaSkKLSAgOiBpbXBsZW1lbnRhdGlvbihpKSAKLXsgCisgIDog
aW1wbGVtZW50YXRpb24oaSkKK3sKICAgc2V0UHJvdG90eXBlKERPTURPTUltcGxlbWVudGF0aW9u
UHJvdG86OnNlbGYoZXhlYykpOwogfQogCkBAIC0xMzI4LDEzICsxMzI4LDEzIEBADQogCiAvKiBT
b3VyY2UgZm9yIERPTURvY3VtZW50VHlwZVRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8g
cmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Eb2N1bWVudFR5cGVUYWJsZSA2Ci0gIG5hbWUJCQlET01E
b2N1bWVudFR5cGU6Ok5hbWUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgZW50aXRpZXMJCURPTURv
Y3VtZW50VHlwZTo6RW50aXRpZXMJRG9udERlbGV0ZXxSZWFkT25seQotICBub3RhdGlvbnMJCURP
TURvY3VtZW50VHlwZTo6Tm90YXRpb25zCURvbnREZWxldGV8UmVhZE9ubHkKKyAgbmFtZSAgICAg
ICAgICBET01Eb2N1bWVudFR5cGU6Ok5hbWUgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBl
bnRpdGllcyAgICAgIERPTURvY3VtZW50VHlwZTo6RW50aXRpZXMgICBEb250RGVsZXRlfFJlYWRP
bmx5CisgIG5vdGF0aW9ucyAgICAgRE9NRG9jdW1lbnRUeXBlOjpOb3RhdGlvbnMgIERvbnREZWxl
dGV8UmVhZE9ubHkKICMgRE9NMgotICBwdWJsaWNJZAkJRE9NRG9jdW1lbnRUeXBlOjpQdWJsaWNJ
ZAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHN5c3RlbUlkCQlET01Eb2N1bWVudFR5cGU6OlN5c3Rl
bUlkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgaW50ZXJuYWxTdWJzZXQJRE9NRG9jdW1lbnRUeXBl
OjpJbnRlcm5hbFN1YnNldAlEb250RGVsZXRlfFJlYWRPbmx5CisgIHB1YmxpY0lkICAgICAgRE9N
RG9jdW1lbnRUeXBlOjpQdWJsaWNJZCAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3lzdGVtSWQg
ICAgICBET01Eb2N1bWVudFR5cGU6OlN5c3RlbUlkICAgRG9udERlbGV0ZXxSZWFkT25seQorICBp
bnRlcm5hbFN1YnNldCAgICBET01Eb2N1bWVudFR5cGU6OkludGVybmFsU3Vic2V0IERvbnREZWxl
dGV8UmVhZE9ubHkKIEBlbmQKICovCiBET01Eb2N1bWVudFR5cGU6OkRPTURvY3VtZW50VHlwZShF
eGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6RG9jdW1lbnRUeXBlICZkdCkKQEAgLTEzNzEsMTQg
KzEzNzEsMTQgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NTmFtZWROb2RlTWFwUHJvdG9UYWJsZS4g
VXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NTmFtZWROb2Rl
TWFwUHJvdG9UYWJsZSA3Ci0gIGdldE5hbWVkSXRlbQkJRE9NTmFtZWROb2RlTWFwOjpHZXROYW1l
ZEl0ZW0JCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBzZXROYW1lZEl0ZW0JCURPTU5hbWVkTm9k
ZU1hcDo6U2V0TmFtZWRJdGVtCQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgcmVtb3ZlTmFtZWRJ
dGVtCURPTU5hbWVkTm9kZU1hcDo6UmVtb3ZlTmFtZWRJdGVtCURvbnREZWxldGV8RnVuY3Rpb24g
MQotICBpdGVtCQkJRE9NTmFtZWROb2RlTWFwOjpJdGVtCQkJRG9udERlbGV0ZXxGdW5jdGlvbiAx
CisgIGdldE5hbWVkSXRlbSAgICAgIERPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJdGVtICAgICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMQorICBzZXROYW1lZEl0ZW0gICAgICBET01OYW1lZE5vZGVN
YXA6OlNldE5hbWVkSXRlbSAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgcmVtb3ZlTmFt
ZWRJdGVtICAgRE9NTmFtZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0ZW0gICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAxCisgIGl0ZW0gICAgICAgICAgRE9NTmFtZWROb2RlTWFwOjpJdGVtICAgICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICMgRE9NMgotICBnZXROYW1lZEl0ZW1OUwlET01OYW1l
ZE5vZGVNYXA6OkdldE5hbWVkSXRlbU5TCQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgc2V0TmFt
ZWRJdGVtTlMJRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW1OUwkJRG9udERlbGV0ZXxGdW5j
dGlvbiAxCi0gIHJlbW92ZU5hbWVkSXRlbU5TCURPTU5hbWVkTm9kZU1hcDo6UmVtb3ZlTmFtZWRJ
dGVtTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGdldE5hbWVkSXRlbU5TICAgIERPTU5hbWVk
Tm9kZU1hcDo6R2V0TmFtZWRJdGVtTlMgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBzZXRO
YW1lZEl0ZW1OUyAgICBET01OYW1lZE5vZGVNYXA6OlNldE5hbWVkSXRlbU5TICAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKKyAgcmVtb3ZlTmFtZWRJdGVtTlMgRE9NTmFtZWROb2RlTWFwOjpSZW1v
dmVOYW1lZEl0ZW1OUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiBAZW5kCiAqLwogREVGSU5FX1BS
T1RPVFlQRSgiTmFtZWROb2RlTWFwIiwgRE9NTmFtZWROb2RlTWFwUHJvdG8pCkBAIC0xMzg4LDgg
KzEzODgsOCBAQA0KIGNvbnN0IENsYXNzSW5mbyBET01OYW1lZE5vZGVNYXA6OmluZm8gPSB7ICJO
YW1lZE5vZGVNYXAiLCAwLCAwLCAwIH07CiAKIERPTU5hbWVkTm9kZU1hcDo6RE9NTmFtZWROb2Rl
TWFwKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpOYW1lZE5vZGVNYXAgJm0pCi0gIDogbWFw
KG0pIAoteyAKKyAgOiBtYXAobSkKK3sKICAgc2V0UHJvdG90eXBlKERPTU5hbWVkTm9kZU1hcFBy
b3RvOjpzZWxmKGV4ZWMpKTsKIH0KIApAQCAtMTQ1OSw5ICsxNDU5LDkgQEANCiAKIC8qIFNvdXJj
ZSBmb3IgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVz
IiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvblRhYmxlIDMK
LSAgdGFyZ2V0CURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6VGFyZ2V0CURvbnREZWxldGV8UmVh
ZE9ubHkKLSAgZGF0YQkJRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpEYXRhCQlEb250RGVsZXRl
Ci0gIHNoZWV0CQlET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlNoZWV0CQlEb250RGVsZXRlfFJl
YWRPbmx5CisgIHRhcmdldCAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlRhcmdldCAgICBE
b250RGVsZXRlfFJlYWRPbmx5CisgIGRhdGEgICAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OkRhdGEgICAgICBEb250RGVsZXRlCisgIHNoZWV0ICAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246OlNoZWV0ICAgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwogVmFsdWUgRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjp0cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlm
aWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0xNDk5LDggKzE0OTksOCBAQA0KIAogLyogU291
cmNlIGZvciBET01Ob3RhdGlvblRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5l
cmF0ZS4KIEBiZWdpbiBET01Ob3RhdGlvblRhYmxlIDIKLSAgcHVibGljSWQJCURPTU5vdGF0aW9u
OjpQdWJsaWNJZAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHN5c3RlbUlkCQlET01Ob3RhdGlvbjo6
U3lzdGVtSWQJRG9udERlbGV0ZXxSZWFkT25seQorICBwdWJsaWNJZCAgICAgIERPTU5vdGF0aW9u
OjpQdWJsaWNJZCAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3lzdGVtSWQgICAgICBET01Ob3Rh
dGlvbjo6U3lzdGVtSWQgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwogVmFsdWUgRE9N
Tm90YXRpb246OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3Bl
cnR5TmFtZSkgY29uc3QKQEAgLTE1MjcsOSArMTUyNyw5IEBADQogCiAvKiBTb3VyY2UgZm9yIERP
TUVudGl0eVRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdp
biBET01FbnRpdHlUYWJsZSAyCi0gIHB1YmxpY0lkCQlET01FbnRpdHk6OlB1YmxpY0lkCQlEb250
RGVsZXRlfFJlYWRPbmx5Ci0gIHN5c3RlbUlkCQlET01FbnRpdHk6OlN5c3RlbUlkCQlEb250RGVs
ZXRlfFJlYWRPbmx5Ci0gIG5vdGF0aW9uTmFtZQkJRE9NRW50aXR5OjpOb3RhdGlvbk5hbWUJRG9u
dERlbGV0ZXxSZWFkT25seQorICBwdWJsaWNJZCAgICAgIERPTUVudGl0eTo6UHVibGljSWQgICAg
IERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3lzdGVtSWQgICAgICBET01FbnRpdHk6OlN5c3RlbUlk
ICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG5vdGF0aW9uTmFtZSAgICAgIERPTUVudGl0eTo6
Tm90YXRpb25OYW1lIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBET01FbnRp
dHk6OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFt
ZSkgY29uc3QKQEAgLTE1NjgsNyArMTU2OCw3IEBADQogICAgIHJldCA9IG5ldyBET01Eb2N1bWVu
dChleGVjLCBuKTsKIAogICBWYWx1ZSB2YWwocmV0KTsKLSAgCisKICAgLy8gTWFrZSBzdXJlIHRo
ZSBkb2N1bWVudCBpcyBrZXB0IGFyb3VuZCBieSB0aGUgd2luZG93IG9iamVjdCwgYW5kIHdvcmtz
IHJpZ2h0IHdpdGggdGhlCiAgIC8vIGJhY2svZm9yd2FyZCBjYWNoZS4KICAgaWYgKG4udmlldygp
KSB7CkBAIC0xNTgzLDcgKzE1ODMsNyBAQA0KIAogYm9vbCBLSlM6OmNoZWNrTm9kZVNlY3VyaXR5
KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpOb2RlJiBuKQogewotICBpZiAoIW4uaGFuZGxl
KCkpIAorICBpZiAoIW4uaGFuZGxlKCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIC8vIENoZWNr
IHRvIHNlZSBpZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBpbnRlcnByZXRlciBpcyBhbGxvd2Vk
IHRvIGFjY2VzcyB0aGUgc3BlY2lmaWVkIG5vZGUKQEAgLTE2NjAsMTMgKzE2NjAsMTIgQEANCiAK
IFZhbHVlIEtKUzo6Z2V0UnVudGltZU9iamVjdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6
Tm9kZSAmbm9kZSkKIHsKLSNpZiAhTk9LSUFfQ0hBTkdFUyAgCiAgICAgRE9NOjpIVE1MRWxlbWVu
dCBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NOjpIVE1MRWxlbWVudD4obm9kZSk7CiAKICAgICBp
ZiAoIW5vZGUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKG5vZGUuaGFuZGxlKCktPmlkKCkgPT0g
SURfQVBQTEVUKSB7CiAgICAgICAgICAgICBET006OkhUTUxBcHBsZXRFbGVtZW50SW1wbCAqYXBw
bGV0RWxlbWVudCA9IHN0YXRpY19jYXN0PERPTTo6SFRNTEFwcGxldEVsZW1lbnRJbXBsICo+KGVs
ZW1lbnQuaGFuZGxlKCkpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhcHBsZXRF
bGVtZW50LT5nZXRBcHBsZXRJbnN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGlu
c3RhbmNlIGlzIG93bmVkIGJ5IHRoZSBhcHBsZXQgZWxlbWVudC4KICAgICAgICAgICAgICAgICBS
dW50aW1lT2JqZWN0SW1wICphcHBsZXRJbXAgPSBuZXcgUnVudGltZU9iamVjdEltcChhcHBsZXRF
bGVtZW50LT5nZXRBcHBsZXRJbnN0YW5jZSgpLCBmYWxzZSk7CkBAIC0xNjc1LDcgKzE2NzQsNyBA
QA0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChub2RlLmhhbmRsZSgpLT5pZCgpID09IElE
X0VNQkVEKSB7CiAgICAgICAgICAgICBET006OkhUTUxFbWJlZEVsZW1lbnRJbXBsICplbWJlZEVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhUTUxFbWJlZEVsZW1lbnRJbXBsICo+KGVsZW1lbnQu
aGFuZGxlKCkpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChlbWJlZEVsZW1lbnQt
PmdldEVtYmVkSW5zdGFuY2UoKSkgewogICAgICAgICAgICAgICAgIFJ1bnRpbWVPYmplY3RJbXAg
KnJ1bnRpbWVJbXAgPSBuZXcgUnVudGltZU9iamVjdEltcChlbWJlZEVsZW1lbnQtPmdldEVtYmVk
SW5zdGFuY2UoKSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBWYWx1ZShydW50aW1l
SW1wKTsKQEAgLTE2ODMsMTQgKzE2ODIsMTMgQEANCiAgICAgICAgIH0KICAgICAgICAgZWxzZSBp
ZiAobm9kZS5oYW5kbGUoKS0+aWQoKSA9PSBJRF9PQkpFQ1QpIHsKICAgICAgICAgICAgIERPTTo6
SFRNTE9iamVjdEVsZW1lbnRJbXBsICpvYmplY3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NOjpI
VE1MT2JqZWN0RWxlbWVudEltcGwgKj4oZWxlbWVudC5oYW5kbGUoKSk7Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgaWYgKG9iamVjdEVsZW1lbnQtPmdldE9iamVjdEluc3RhbmNlKCkpIHsK
ICAgICAgICAgICAgICAgICBSdW50aW1lT2JqZWN0SW1wICpydW50aW1lSW1wID0gbmV3IFJ1bnRp
bWVPYmplY3RJbXAob2JqZWN0RWxlbWVudC0+Z2V0T2JqZWN0SW5zdGFuY2UoKSwgZmFsc2UpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBWYWx1ZShydW50aW1lSW1wKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KLSNlbmRpZiAgICAKICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEg
cnVudGltZSBvYmplY3QgcmV0dXJuIHRoZSBhIFZhbHVlIHRoYXQgcmVwb3J0cyBpc051bGwoKSA9
PSB0cnVlLgogICAgIHJldHVybiBWYWx1ZSgpOwogfQpAQCAtMTcxMCwxOCArMTcwOCwxOCBAQA0K
IGNvbnN0IENsYXNzSW5mbyBOb2RlQ29uc3RydWN0b3I6OmluZm8gPSB7ICJOb2RlQ29uc3RydWN0
b3IiLCAwLCAmTm9kZUNvbnN0cnVjdG9yVGFibGUsIDAgfTsKIC8qIFNvdXJjZSBmb3IgTm9kZUNv
bnN0cnVjdG9yVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJl
Z2luIE5vZGVDb25zdHJ1Y3RvclRhYmxlIDExCi0gIEVMRU1FTlRfTk9ERQkJRE9NOjpOb2RlOjpF
TEVNRU5UX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgQVRUUklCVVRFX05PREUJRE9NOjpO
b2RlOjpBVFRSSUJVVEVfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQotICBURVhUX05PREUJCURP
TTo6Tm9kZTo6VEVYVF9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIENEQVRBX1NFQ1RJT05f
Tk9ERQlET006Ok5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERQlEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IEVOVElUWV9SRUZFUkVOQ0VfTk9ERQlET006Ok5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERQlE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIEVOVElUWV9OT0RFCQlET006Ok5vZGU6OkVOVElUWV9OT0RF
CQlEb250RGVsZXRlfFJlYWRPbmx5CisgIEVMRU1FTlRfTk9ERSAgICAgIERPTTo6Tm9kZTo6RUxF
TUVOVF9OT0RFICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIEFUVFJJQlVURV9OT0RFICAgIERP
TTo6Tm9kZTo6QVRUUklCVVRFX05PREUgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBURVhU
X05PREUgICAgIERPTTo6Tm9kZTo6VEVYVF9OT0RFICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5
CisgIENEQVRBX1NFQ1RJT05fTk9ERSAgICBET006Ok5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERSAg
IERvbnREZWxldGV8UmVhZE9ubHkKKyAgRU5USVRZX1JFRkVSRU5DRV9OT0RFIERPTTo6Tm9kZTo6
RU5USVRZX1JFRkVSRU5DRV9OT0RFICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgRU5USVRZX05P
REUgICAgICAgRE9NOjpOb2RlOjpFTlRJVFlfTk9ERSAgICAgIERvbnREZWxldGV8UmVhZE9ubHkK
ICAgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFIERPTTo6Tm9kZTo6UFJPQ0VTU0lOR19JTlNU
UlVDVElPTl9OT0RFIERvbnREZWxldGV8UmVhZE9ubHkKLSAgQ09NTUVOVF9OT0RFCQlET006Ok5v
ZGU6OkNPTU1FTlRfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQotICBET0NVTUVOVF9OT0RFCQlE
T006Ok5vZGU6OkRPQ1VNRU5UX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgRE9DVU1FTlRf
VFlQRV9OT0RFCURPTTo6Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSBET006Ok5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREUJRG9udERlbGV0ZXxSZWFkT25seQotICBOT1RBVElPTl9OT0RFCQlET006Ok5vZGU6Ok5P
VEFUSU9OX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkKKyAgQ09NTUVOVF9OT0RFICAgICAgRE9N
OjpOb2RlOjpDT01NRU5UX05PREUgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgRE9DVU1FTlRf
Tk9ERSAgICAgRE9NOjpOb2RlOjpET0NVTUVOVF9OT0RFICAgICAgICBEb250RGVsZXRlfFJlYWRP
bmx5CisgIERPQ1VNRU5UX1RZUEVfTk9ERSAgICBET006Ok5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9E
RSAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSBET006Ok5v
ZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgTk9UQVRJ
T05fTk9ERSAgICAgRE9NOjpOb2RlOjpOT1RBVElPTl9OT0RFICAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5CiBAZW5kCiAqLwogVmFsdWUgTm9kZUNvbnN0cnVjdG9yOjp0cnlHZXQoRXhlY1N0YXRl
ICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0xNzc3LDIx
ICsxNzc1LDIxIEBADQogCiAvKiBTb3VyY2UgZm9yIERPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yVGFi
bGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTUV4Y2Vw
dGlvbkNvbnN0cnVjdG9yVGFibGUgMTUKLSAgSU5ERVhfU0laRV9FUlIJCURPTTo6RE9NRXhjZXB0
aW9uOjpJTkRFWF9TSVpFX0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQotICBET01TVFJJTkdfU0la
RV9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpET01TVFJJTkdfU0laRV9FUlIJRG9udERlbGV0ZXxS
ZWFkT25seQotICBISUVSQVJDSFlfUkVRVUVTVF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpISUVS
QVJDSFlfUkVRVUVTVF9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBXUk9OR19ET0NVTUVOVF9F
UlIJCURPTTo6RE9NRXhjZXB0aW9uOjpXUk9OR19ET0NVTUVOVF9FUlIJRG9udERlbGV0ZXxSZWFk
T25seQotICBJTlZBTElEX0NIQVJBQ1RFUl9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElE
X0NIQVJBQ1RFUl9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBOT19EQVRBX0FMTE9XRURfRVJS
CQlET006OkRPTUV4Y2VwdGlvbjo6Tk9fREFUQV9BTExPV0VEX0VSUglEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUglET006OkRPTUV4Y2VwdGlvbjo6Tk9f
TU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSCURvbnREZWxldGV8UmVhZE9ubHkKLSAgTk9UX0ZPVU5E
X0VSUgkJCURPTTo6RE9NRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSCQlEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIE5PVF9TVVBQT1JURURfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6Tk9UX1NVUFBPUlRF
RF9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBJTlVTRV9BVFRSSUJVVEVfRVJSCQlET006OkRP
TUV4Y2VwdGlvbjo6SU5VU0VfQVRUUklCVVRFX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIElO
VkFMSURfU1RBVEVfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9TVEFURV9FUlIJRG9u
dERlbGV0ZXxSZWFkT25seQotICBTWU5UQVhfRVJSCQkJRE9NOjpET01FeGNlcHRpb246OlNZTlRB
WF9FUlIJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSCURP
TTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIJRG9udERlbGV0ZXxSZWFk
T25seQotICBOQU1FU1BBQ0VfRVJSCQkJRE9NOjpET01FeGNlcHRpb246Ok5BTUVTUEFDRV9FUlIJ
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9BQ0NFU1NfRVJSCQlET006OkRPTUV4Y2Vw
dGlvbjo6SU5WQUxJRF9BQ0NFU1NfRVJSCURvbnREZWxldGV8UmVhZE9ubHkKKyAgSU5ERVhfU0la
RV9FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUiAgICAgICBEb250
RGVsZXRlfFJlYWRPbmx5CisgIERPTVNUUklOR19TSVpFX0VSUiAgICAgICAgRE9NOjpET01FeGNl
cHRpb246OkRPTVNUUklOR19TSVpFX0VSUiAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgSElFUkFS
Q0hZX1JFUVVFU1RfRVJSICAgICBET006OkRPTUV4Y2VwdGlvbjo6SElFUkFSQ0hZX1JFUVVFU1Rf
RVJSICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgV1JPTkdfRE9DVU1FTlRfRVJSICAgICAgICBE
T006OkRPTUV4Y2VwdGlvbjo6V1JPTkdfRE9DVU1FTlRfRVJSICAgRG9udERlbGV0ZXxSZWFkT25s
eQorICBJTlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElE
X0NIQVJBQ1RFUl9FUlIgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBOT19EQVRBX0FMTE9XRURf
RVJSICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT19EQVRBX0FMTE9XRURfRVJSICBEb250RGVs
ZXRlfFJlYWRPbmx5CisgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgIERPTTo6RE9NRXhj
ZXB0aW9uOjpOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkK
KyAgTk9UX0ZPVU5EX0VSUiAgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJS
ICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5PVF9TVVBQT1JURURfRVJSICAgICBET006
OkRPTUV4Y2VwdGlvbjo6Tk9UX1NVUFBPUlRFRF9FUlIgICAgRG9udERlbGV0ZXxSZWFkT25seQor
ICBJTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTlVTRV9BVFRS
SUJVVEVfRVJSICBEb250RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURfU1RBVEVfRVJSICAgICBE
T006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9TVEFURV9FUlIgICAgRG9udERlbGV0ZXxSZWFkT25s
eQorICBTWU5UQVhfRVJSICAgICAgICAgICAgRE9NOjpET01FeGNlcHRpb246OlNZTlRBWF9FUlIg
ICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBJTlZBTElEX01PRElGSUNBVElPTl9FUlIgIERP
TTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIgRG9udERlbGV0ZXxSZWFk
T25seQorICBOQU1FU1BBQ0VfRVJSICAgICAgICAgRE9NOjpET01FeGNlcHRpb246Ok5BTUVTUEFD
RV9FUlIgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgSU5WQUxJRF9BQ0NFU1NfRVJSICAg
ICAgICBET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9BQ0NFU1NfRVJSICAgRG9udERlbGV0ZXxS
ZWFkT25seQogQGVuZAogKi8KIApAQCAtMTg3OCwxNiArMTg3NiwxNiBAQA0KICAgICAgIERPTTo6
Tm9kZSBub2RlID0gKml0OwogICAgICAgRE9NOjpOYW1lZE5vZGVNYXAgYXR0cmlidXRlcyA9IG5v
ZGUuYXR0cmlidXRlcygpOwogICAgICAgaWYgKGF0dHJpYnV0ZXMuaXNOdWxsKCkpIHsKLQljb250
aW51ZTsKKyAgICBjb250aW51ZTsKICAgICAgIH0KIAogICAgICAgRE9NOjpOb2RlIGlkQXR0ciA9
IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJpZCIpOwogICAgICAgaWYgKGlkQXR0ci5pc051bGwo
KSkgewotCWNvbnRpbnVlOworICAgIGNvbnRpbnVlOwogICAgICAgfQogCiAgICAgICBpZiAoaWRB
dHRyLm5vZGVWYWx1ZSgpID09IHByb3BlcnR5TmFtZS5zdHJpbmcoKSkgewotCXJldHVybiBnZXRE
T01Ob2RlKGV4ZWMsbm9kZSk7CisgICAgcmV0dXJuIGdldERPTU5vZGUoZXhlYyxub2RlKTsKICAg
ICAgIH0KICAgICB9CiAgIH0KQEAgLTE4OTgsMTggKzE4OTYsMTggQEANCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIGNvbnN0IENsYXNzSW5mbyBET01DaGFyYWN0ZXJEYXRhOjppbmZvID0geyAiQ2hh
cmFjdGVySW1wIiwKLQkJCQkJICAmRE9NTm9kZTo6aW5mbywgJkRPTUNoYXJhY3RlckRhdGFUYWJs
ZSwgMCB9OworICAgICAgICAgICAgICAgICAgICAgICZET01Ob2RlOjppbmZvLCAmRE9NQ2hhcmFj
dGVyRGF0YVRhYmxlLCAwIH07CiAvKgogQGJlZ2luIERPTUNoYXJhY3RlckRhdGFUYWJsZSAyCi0g
IGRhdGEJCURPTUNoYXJhY3RlckRhdGE6OkRhdGEJCURvbnREZWxldGUKLSAgbGVuZ3RoCURPTUNo
YXJhY3RlckRhdGE6Okxlbmd0aAlEb250RGVsZXRlfFJlYWRPbmx5CisgIGRhdGEgICAgICBET01D
aGFyYWN0ZXJEYXRhOjpEYXRhICAgICAgRG9udERlbGV0ZQorICBsZW5ndGggICAgRE9NQ2hhcmFj
dGVyRGF0YTo6TGVuZ3RoICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKIEBiZWdpbiBET01D
aGFyYWN0ZXJEYXRhUHJvdG9UYWJsZSA3Ci0gIHN1YnN0cmluZ0RhdGEJRE9NQ2hhcmFjdGVyRGF0
YTo6U3Vic3RyaW5nRGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgYXBwZW5kRGF0YQlET01D
aGFyYWN0ZXJEYXRhOjpBcHBlbmREYXRhCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBpbnNlcnRE
YXRhCURPTUNoYXJhY3RlckRhdGE6Okluc2VydERhdGEJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0g
IGRlbGV0ZURhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6RGVsZXRlRGF0YQlEb250RGVsZXRlfEZ1bmN0
aW9uIDIKLSAgcmVwbGFjZURhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6UmVwbGFjZURhdGEJRG9udERl
bGV0ZXxGdW5jdGlvbiAyCisgIHN1YnN0cmluZ0RhdGEgRE9NQ2hhcmFjdGVyRGF0YTo6U3Vic3Ry
aW5nRGF0YSBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgYXBwZW5kRGF0YSAgICBET01DaGFyYWN0
ZXJEYXRhOjpBcHBlbmREYXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBpbnNlcnREYXRh
ICAgIERPTUNoYXJhY3RlckRhdGE6Okluc2VydERhdGEgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAy
CisgIGRlbGV0ZURhdGEgICAgRE9NQ2hhcmFjdGVyRGF0YTo6RGVsZXRlRGF0YSAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDIKKyAgcmVwbGFjZURhdGEgICBET01DaGFyYWN0ZXJEYXRhOjpSZXBsYWNl
RGF0YSAgIERvbnREZWxldGV8RnVuY3Rpb24gMgogQGVuZAogKi8KIERFRklORV9QUk9UT1RZUEUo
IkRPTUNoYXJhY3RlckRhdGEiLERPTUNoYXJhY3RlckRhdGFQcm90bykKQEAgLTE5MTcsMTMgKzE5
MTUsMTMgQEANCiBJTVBMRU1FTlRfUFJPVE9UWVBFX1dJVEhfUEFSRU5UKERPTUNoYXJhY3RlckRh
dGFQcm90byxET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jLCBET01Ob2RlUHJvdG8pCiAKIERPTUNo
YXJhY3RlckRhdGE6OkRPTUNoYXJhY3RlckRhdGEoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006
OkNoYXJhY3RlckRhdGEgJmQpCi0gOiBET01Ob2RlKGQpIAorIDogRE9NTm9kZShkKQogewogICBz
ZXRQcm90b3R5cGUoRE9NQ2hhcmFjdGVyRGF0YVByb3RvOjpzZWxmKGV4ZWMpKTsKIH0KIAogRE9N
Q2hhcmFjdGVyRGF0YTo6RE9NQ2hhcmFjdGVyRGF0YShjb25zdCBET006OkNoYXJhY3RlckRhdGEg
JmQpCi0gOiBET01Ob2RlKGQpIAorIDogRE9NTm9kZShkKQogewogfQogCkBAIC0xOTc0LDkgKzE5
NzIsOSBAQA0KICAgICAgICAgRE9NOjpfZXhjZXB0aW9uY29kZSA9IERPTUV4Y2VwdGlvbjo6SU5E
RVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAgICAgIH0KLSNlbHNl
ICAgICAgCisjZWxzZQogICAgICAgICB0aHJvdyBET01FeGNlcHRpb24oRE9NRXhjZXB0aW9uOjpJ
TkRFWF9TSVpFX0VSUik7Ci0jZW5kaWYgICAgICAgIAorI2VuZGlmCiAgICAgICByZXR1cm4gZ2V0
U3RyaW5nT3JOdWxsKGRhdGEuc3Vic3RyaW5nRGF0YShhcmdzWzBdLnRvSW50MzIoZXhlYyksIGNv
dW50KSk7CiAgICAgfQogICAgIGNhc2UgRE9NQ2hhcmFjdGVyRGF0YTo6QXBwZW5kRGF0YToKQEAg
LTE5OTMsOSArMTk5MSw5IEBADQogICAgICAgICBET006Ol9leGNlcHRpb25jb2RlID0gRE9NRXhj
ZXB0aW9uOjpJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwogICAg
ICAgfQotI2Vsc2UgICAgIAorI2Vsc2UKICAgICAgICAgdGhyb3cgRE9NRXhjZXB0aW9uKERPTUV4
Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlIpOwotI2VuZGlmICAKKyNlbmRpZgogICAgICAgZGF0YS5k
ZWxldGVEYXRhKGFyZ3NbMF0udG9JbnQzMihleGVjKSwgY291bnQpOwogICAgICAgcmV0dXJuIFVu
ZGVmaW5lZCgpOwogICAgIH0KQEAgLTIwMDcsOSArMjAwNSw5IEBADQogICAgICAgICBET006Ol9l
eGNlcHRpb25jb2RlID0gRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0
dXJuIFVuZGVmaW5lZCgpOwogICAgICAgfQotI2Vsc2UgICAgICAKKyNlbHNlCiAgICAgICAgIHRo
cm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSKTsKLSNlbmRpZiAg
CisjZW5kaWYKICAgICAgIGRhdGEucmVwbGFjZURhdGEoYXJnc1swXS50b0ludDMyKGV4ZWMpLCBj
b3VudCwgYXJnc1syXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSk7CiAgICAgICByZXR1cm4gVW5k
ZWZpbmVkKCk7CiAgICAgfQpAQCAtMjAyMSwxMCArMjAxOSwxMCBAQA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIERPTVRleHQ6OmluZm8gPSB7ICJUZXh0IiwKLQkJCQkg
JkRPTUNoYXJhY3RlckRhdGE6OmluZm8sIDAsIDAgfTsKKyAgICAgICAgICAgICAgICAgJkRPTUNo
YXJhY3RlckRhdGE6OmluZm8sIDAsIDAgfTsKIC8qCiBAYmVnaW4gRE9NVGV4dFByb3RvVGFibGUg
MQotICBzcGxpdFRleHQJRE9NVGV4dDo6U3BsaXRUZXh0CURvbnREZWxldGV8RnVuY3Rpb24gMQor
ICBzcGxpdFRleHQgRE9NVGV4dDo6U3BsaXRUZXh0ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKIEBl
bmQKICovCiBERUZJTkVfUFJPVE9UWVBFKCJET01UZXh0IixET01UZXh0UHJvdG8pCkBAIC0yMDMy
LDggKzIwMzAsOCBAQA0KIElNUExFTUVOVF9QUk9UT1RZUEVfV0lUSF9QQVJFTlQoRE9NVGV4dFBy
b3RvLERPTVRleHRQcm90b0Z1bmMsRE9NQ2hhcmFjdGVyRGF0YVByb3RvKQogCiBET01UZXh0OjpE
T01UZXh0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpUZXh0ICZ0KQotICA6IERPTUNoYXJh
Y3RlckRhdGEodCkgCi17IAorICA6IERPTUNoYXJhY3RlckRhdGEodCkKK3sKICAgc2V0UHJvdG90
eXBlKERPTVRleHRQcm90bzo6c2VsZihleGVjKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUva2h0bWwv
ZWNtYS9ranNfd2luZG93LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9r
anNfd2luZG93LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tq
c193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzIyLDYgKzMyMiw5IEBADQogICAsIGhp
c3RvcnkoMCkKICAgLCBmcmFtZXMoMCkKICAgLCBsb2MoMCkKKyNpZmRlZiBOT0tJQV9DSEFOR0VT
ICYmIFJEX0JST1dTRVJfV0lER0VUUworICAsIG1fd2lkZ2V0KDApCisjZW5kaWYKICAgLCBtX3Nl
bGVjdGlvbigwKQogICAsIG1fbG9jYXRpb25iYXIoMCkKICAgLCBtX21lbnViYXIoMCkKQEAgLTQ4
Myw2ICs0ODYsMTAgQEANCiAgICAgbV9zdGF0dXNiYXItPm1hcmsoKTsKICAgaWYgKG1fdG9vbGJh
ciAmJiAhbV90b29sYmFyLT5tYXJrZWQoKSkKICAgICBtX3Rvb2xiYXItPm1hcmsoKTsKKyNpZmRl
ZiBOT0tJQV9DSEFOR0VTICYmIFJEX0JST1dTRVJfV0lER0VUUworICBpZiAobV93aWRnZXQgJiYg
IW1fd2lkZ2V0LT5tYXJrZWQoKSkKKyAgICBtX3dpZGdldC0+bWFyaygpOworI2VuZGlmCiB9CiAK
IFVTdHJpbmcgV2luZG93Ojp0b1N0cmluZyhFeGVjU3RhdGUgKikgY29uc3QKQEAgLTgwNyw2ICs4
MTQsMTIgQEANCiAjZW5kaWYKICAgICBjYXNlIExvY2F0aW9uYmFyOgogICAgICAgcmV0dXJuIFZh
bHVlKGxvY2F0aW9uYmFyKGV4ZWMpKTsKKyNpZmRlZiBOT0tJQV9DSEFOR0VTICYmIFJEX0JST1dT
RVJfV0lER0VUUworICAgIGNhc2UgX1dpZGdldDoKKyAgICAgICAgcmV0dXJuIFZhbHVlKG1fd2lk
Z2V0ID8gbV93aWRnZXQgOgorICAgICAgICAgICAgICAgICAgIChjb25zdF9jYXN0PFdpbmRvdyo+
KHRoaXMpLT5tX3dpZGdldCA9IEtXUShtX3BhcnQpLT5jcmVhdGVXaWRnZXRPYmplY3QoZXhlYykp
KTsKKworI2VuZGlmCiAgICAgY2FzZSBNZW51YmFyOgogICAgICAgcmV0dXJuIFZhbHVlKG1lbnVi
YXIoZXhlYykpOwogICAgIGNhc2UgT2Zmc2NyZWVuQnVmZmVyaW5nOgpJbmRleDogV2ViQ29yZS9r
aHRtbC9lY21hL2tqc193aW5kb3cuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNt
YS9ranNfd2luZG93LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9r
anNfd2luZG93LmgJKHdvcmtpbmcgY29weSkNCkBAIC0xMDEsMTMgKzEwMSwxMyBAQA0KICAgICBi
b29sIGhhc1RpbWVvdXRzKCk7CiAgICAgUU1hcDxpbnQsIFNjaGVkdWxlZEFjdGlvbio+ICpwYXVz
ZVRpbWVvdXRzKGNvbnN0IHZvaWQgKmtleSk7CiAgICAgdm9pZCByZXN1bWVUaW1lb3V0cyhRTWFw
PGludCwgU2NoZWR1bGVkQWN0aW9uKj4qc2EsIGNvbnN0IHZvaWQgKmtleSk7Ci0gICAgCisKICAg
ICBLSlM6OkludGVycHJldGVyICppbnRlcnByZXRlcigpIGNvbnN0OwogCiAgICAgc3RhdGljIGJv
b2wgaXNTYWZlU2NyaXB0IChjb25zdCBLSlM6OlNjcmlwdEludGVycHJldGVyICpvcmlnaW4sIGNv
bnN0IEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXIgKnRhcmdldCk7CiAjZW5kaWYKICAgICB2b2lkIHNj
aGVkdWxlQ2xvc2UoKTsKLSAgICAgICAgCisKICAgICBib29sIGlzU2FmZVNjcmlwdChFeGVjU3Rh
dGUgKmV4ZWMpIGNvbnN0OwogICAgIExvY2F0aW9uICpsb2NhdGlvbigpIGNvbnN0OwogICAgIFNl
bGVjdGlvbiAqc2VsZWN0aW9uKCkgY29uc3Q7CkBAIC0xNDEsMTMgKzE0MSwxNyBAQA0KICAgICAg
ICAgICAgU2NyZWVuVG9wLCBTY3JlZW5MZWZ0LAogICAgICAgICAgICBTY3JvbGxUbywgU2Nyb2xs
WCwgU2Nyb2xsWSwgTW92ZUJ5LCBNb3ZlVG8sIFJlc2l6ZUJ5LCBSZXNpemVUbywgU2VsZiwgX1dp
bmRvdywgVG9wLCBfU2NyZWVuLAogICAgICAgICAgICBJbWFnZSwgT3B0aW9uLCBBbGVydCwgQ29u
ZmlybSwgUHJvbXB0LCBPcGVuLCBQcmludCwgU2V0VGltZW91dCwgQ2xlYXJUaW1lb3V0LAotICAg
ICAgICAgICBGb2N1cywgR2V0U2VsZWN0aW9uLCBCbHVyLCBDbG9zZSwgU2V0SW50ZXJ2YWwsIENs
ZWFySW50ZXJ2YWwsIENhcHR1cmVFdmVudHMsIAorICAgICAgICAgICBGb2N1cywgR2V0U2VsZWN0
aW9uLCBCbHVyLCBDbG9zZSwgU2V0SW50ZXJ2YWwsIENsZWFySW50ZXJ2YWwsIENhcHR1cmVFdmVu
dHMsCiAgICAgICAgICAgIFJlbGVhc2VFdmVudHMsIEFkZEV2ZW50TGlzdGVuZXIsIFJlbW92ZUV2
ZW50TGlzdGVuZXIsIFhNTEh0dHBSZXF1ZXN0LCBYTUxTZXJpYWxpemVyLCBET01QYXJzZXIsCi0g
ICAgIE9uYWJvcnQsIE9uYmx1ciwgT25jaGFuZ2UsIE9uY2xpY2ssIE9uZGJsY2xpY2ssIE9uZHJh
Z2Ryb3AsIE9uZXJyb3IsIAorICAgICBPbmFib3J0LCBPbmJsdXIsIE9uY2hhbmdlLCBPbmNsaWNr
LCBPbmRibGNsaWNrLCBPbmRyYWdkcm9wLCBPbmVycm9yLAogICAgICBPbmZvY3VzLCBPbmtleWRv
d24sIE9ua2V5cHJlc3MsIE9ua2V5dXAsIE9ubG9hZCwgT25tb3VzZWRvd24sIE9ubW91c2Vtb3Zl
LAogICAgICAgICAgICBPbm1vdXNlb3V0LCBPbm1vdXNlb3ZlciwgT25tb3VzZXVwLCBPbldpbmRv
d01vdXNlV2hlZWwsIE9ubW92ZSwgT25yZXNldCwgT25yZXNpemUsIE9uc2Nyb2xsLCBPbnNlYXJj
aCwKICAgICAgICAgICAgT25zZWxlY3QsIE9uc3VibWl0LCBPbnVubG9hZCwgT25iZWZvcmV1bmxv
YWQsCi0gICAgICAgICAgIFN0YXR1c2JhciwgVG9vbGJhciwgRnJhbWVFbGVtZW50LCBTaG93TW9k
YWxEaWFsb2cgfTsKKyAgICAgICAgICAgU3RhdHVzYmFyLCBUb29sYmFyLCBGcmFtZUVsZW1lbnQs
IFNob3dNb2RhbERpYWxvZworI2lmZGVmIE5PS0lBX0NIQU5HRVMKKyAgICAgICAgICAgLF9XaWRn
ZXQKKyNlbmRpZgorICAgICAgICAgICB9OwogICBwcm90ZWN0ZWQ6CiAgICAgVmFsdWUgZ2V0TGlz
dGVuZXIoRXhlY1N0YXRlICpleGVjLCBpbnQgZXZlbnRJZCkgY29uc3Q7CiAgICAgdm9pZCBzZXRM
aXN0ZW5lcihFeGVjU3RhdGUgKmV4ZWMsIGludCBldmVudElkLCBWYWx1ZSBmdW5jKTsKQEAgLTE1
NSw2ICsxNTksOSBAQA0KICAgICB2b2lkIHVwZGF0ZUxheW91dChib29sIGlnbm9yZVN0eWxlc2hl
ZXRzID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBRR3VhcmRlZFB0cjxLSFRNTFBhcnQ+IG1fcGFydDsK
KyNpZmRlZiBOT0tJQV9DSEFOR0VTICYmIFJEX0JST1dTRVJfV0lER0VUUworICAgIE9iamVjdElt
cCAqbV93aWRnZXQ7CisjZW5kaWYKICAgICBTY3JlZW4gKnNjcmVlbjsKICAgICBIaXN0b3J5ICpo
aXN0b3J5OwogICAgIEZyYW1lQXJyYXkgKmZyYW1lczsKQEAgLTI0MSw4ICsyNDgsOCBAQA0KICAg
ICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJv
cGVydHlOYW1lLCBjb25zdCBWYWx1ZSAmdmFsdWUsIGludCBhdHRyID0gTm9uZSk7CiAgICAgdmly
dHVhbCBWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIFR5cGUgcHJlZmVycmVkKSBj
b25zdDsKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlICpleGVjKSBjb25z
dDsKLSAgICBlbnVtIHsgQW5jaG9yTm9kZSwgQW5jaG9yT2Zmc2V0LCBGb2N1c05vZGUsIEZvY3Vz
T2Zmc2V0LCBCYXNlTm9kZSwgQmFzZU9mZnNldCwgRXh0ZW50Tm9kZSwgRXh0ZW50T2Zmc2V0LCAK
LSAgICAgICAgICAgSXNDb2xsYXBzZWQsIF9UeXBlLCBFcXVhbEVxdWFsLCBDb2xsYXBzZSwgQ29s
bGFwc2VUb0VuZCwgQ29sbGFwc2VUb1N0YXJ0LCBFbXB0eSwgVG9TdHJpbmcsIAorICAgIGVudW0g
eyBBbmNob3JOb2RlLCBBbmNob3JPZmZzZXQsIEZvY3VzTm9kZSwgRm9jdXNPZmZzZXQsIEJhc2VO
b2RlLCBCYXNlT2Zmc2V0LCBFeHRlbnROb2RlLCBFeHRlbnRPZmZzZXQsCisgICAgICAgICAgIElz
Q29sbGFwc2VkLCBfVHlwZSwgRXF1YWxFcXVhbCwgQ29sbGFwc2UsIENvbGxhcHNlVG9FbmQsIENv
bGxhcHNlVG9TdGFydCwgRW1wdHksIFRvU3RyaW5nLAogICAgICAgICAgICBTZXRCYXNlQW5kRXh0
ZW50LCBTZXRQb3NpdGlvbiwgTW9kaWZ5IH07CiAgICAgS0hUTUxQYXJ0ICpwYXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJ0OyB9CiAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5m
bygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pz
X3dpbmRvdy5sdXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2lu
ZG93Lmx1dC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dp
bmRvdy5sdXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDEwICsyOSwxMCBAQA0KICAgIHsgIkNT
U1J1bGUiLCBXaW5kb3c6OkNTU1J1bGUsIERvbnREZWxldGUsIDAsICZXaW5kb3dUYWJsZUVudHJp
ZXNbMTEyXSB9LAogICAgeyAibGVuZ3RoIiwgV2luZG93OjpMZW5ndGgsIERvbnREZWxldGV8UmVh
ZE9ubHksIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9LAorICAgeyAid2lkZ2V0IiwgV2lu
ZG93OjpfV2lkZ2V0LCBEb250RGVsZXRlfEZ1bmN0aW9uLCAwLCAwIH0sCiAgICB7IDAsIDAsIDAs
IDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9LAogICAgeyAwLCAwLCAwLCAwLCAwIH0sCi0g
ICB7IDAsIDAsIDAsIDAsIDAgfSwKICAgIHsgInByaW50IiwgV2luZG93OjpQcmludCwgRG9udERl
bGV0ZXxGdW5jdGlvbiwgMiwgJldpbmRvd1RhYmxlRW50cmllc1sxMTFdIH0sCiAgICB7ICJvcGVu
ZXIiLCBXaW5kb3c6Ok9wZW5lciwgRG9udERlbGV0ZXxSZWFkT25seSwgMCwgMCB9LAogICAgeyAi
cGFyZW50IiwgV2luZG93OjpQYXJlbnQsIERvbnREZWxldGV8UmVhZE9ubHksIDAsIDAgfSwKSW5k
ZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHAJKHJldmlzaW9uIDE3MDY5
KQ0KKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtMTk5LDcgKzE5OSw2IEBADQogfQogCiAjaWYgQVBQTEVfQ0hBTkdFUwotI2lmICFO
T0tJQV9DSEFOR0VTCiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqSFRNTEFwcGxldEVsZW1lbnRJ
bXBsOjpnZXRBcHBsZXRJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgS0hUTUxQYXJ0KiBwYXJ0ID0g
Z2V0RG9jdW1lbnQoKS0+cGFydCgpOwpAQCAtMjA4LDcgKzIwNyw3IEBADQogCiAgICAgaWYgKGFw
cGxldEluc3RhbmNlKQogICAgICAgICByZXR1cm4gYXBwbGV0SW5zdGFuY2U7Ci0KKyNpZiAhTk9L
SUFfQ0hBTkdFUwogICAgIFJlbmRlckFwcGxldCAqciA9IHN0YXRpY19jYXN0PFJlbmRlckFwcGxl
dCo+KG1fcmVuZGVyKTsKICAgICBpZiAocikgewogICAgICAgICByLT5jcmVhdGVXaWRnZXRJZk5l
Y2Vzc2FyeSgpOwpAQCAtMjE5LDkgKzIxOCw5IEBADQogICAgICAgICAgICAgYXBwbGV0SW5zdGFu
Y2UgPSBLV1EocGFydCktPmdldEFwcGxldEluc3RhbmNlRm9yVmlldygoTlNWaWV3ICopX3ZpZXcp
OwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGFwcGxldEluc3RhbmNlOwog
fQotI2VuZGlmCiAKIHZvaWQgSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpjbG9zZVJlbmRlcmVyKCkK
IHsKQEAgLTI0Myw5ICsyNDIsNyBAQA0KIAogSFRNTEVtYmVkRWxlbWVudEltcGw6OkhUTUxFbWJl
ZEVsZW1lbnRJbXBsKERvY3VtZW50UHRyICpkb2MpCiAgICAgOiBIVE1MRWxlbWVudEltcGwoZG9j
KQotI2lmICFOT0tJQV9DSEFOR0VTCiAgICAgLCBlbWJlZEluc3RhbmNlKDApCi0jZW5kaWYKIHsK
ICNpZiBOT0tJQV9DSEFOR0VTCiAgIG5lZWRXaWRnZXRVcGRhdGUgPSBmYWxzZTsKQEAgLTI2MSw3
ICsyNTgsNyBAQA0KICAgICByZXR1cm4gSURfRU1CRUQ7CiB9CiAKLSNpZiBBUFBMRV9DSEFOR0VT
ICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogS0pTOjpCaW5kaW5nczo6SW5z
dGFuY2UgKkhUTUxFbWJlZEVsZW1lbnRJbXBsOjpnZXRFbWJlZEluc3RhbmNlKCkgY29uc3QKIHsK
ICAgICBLSFRNTFBhcnQqIHBhcnQgPSBnZXREb2N1bWVudCgpLT5wYXJ0KCk7CkBAIC0yNzcsMTAg
KzI3NCwxNyBAQA0KICAgICAgICAgICAgIC8vIENhbGwgaW50byB0aGUgcGFydCAoYW5kIG92ZXIg
dGhlIGJyaWRnZSkgdG8gcHVsbCB0aGUgQmluZGluZ3M6Okluc3RhbmNlCiAgICAgICAgICAgICAv
LyBmcm9tIHRoZSBndXRzIG9mIHRoZSBKYXZhIFZNLgogICAgICAgICAgICAgdm9pZCAqX3ZpZXcg
PSByLT53aWRnZXQoKS0+Z2V0VmlldygpOworI2lmIE5PS0lBX0NIQU5HRVMKKyAgICAgICAgICAg
IGVtYmVkSW5zdGFuY2UgPSBLV1EocGFydCktPmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3KChNV2Vi
Q29yZVdpZGdldCAqKV92aWV3KTsKKyAgICAgICAgICAgIC8vIEFwcGxldCBtYXkgc3BlY2lmaWVk
IHdpdGggPGVtYmVkPiB0YWcuCisgICAgICAgICAgICBpZiAoIWVtYmVkSW5zdGFuY2UpCisgICAg
ICAgICAgICAgICAgZW1iZWRJbnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0QXBwbGV0SW5zdGFuY2VG
b3JWaWV3KChNV2ViQ29yZVdpZGdldCAqKV92aWV3KTsKKyNlbHNlCiAgICAgICAgICAgICBlbWJl
ZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRFbWJlZEluc3RhbmNlRm9yVmlldygoTlNWaWV3ICop
X3ZpZXcpOwogICAgICAgICAgICAgLy8gQXBwbGV0IG1heSBzcGVjaWZpZWQgd2l0aCA8ZW1iZWQ+
IHRhZy4KICAgICAgICAgICAgIGlmICghZW1iZWRJbnN0YW5jZSkKICAgICAgICAgICAgICAgICBl
bWJlZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcoKE5TVmll
dyAqKV92aWV3KTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBlbWJlZElu
c3RhbmNlOwpAQCAtNTY4LDcgKzU3Miw3IEBADQogICAgIHJldHVybiBJRF9PQkpFQ1Q7CiB9CiAK
LSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwog
S0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKkhUTUxPYmplY3RFbGVtZW50SW1wbDo6Z2V0T2JqZWN0
SW5zdGFuY2UoKSBjb25zdAogewogICAgIEtIVE1MUGFydCogcGFydCA9IGdldERvY3VtZW50KCkt
PnBhcnQoKTsKQEAgLTU4MSw3ICs1ODUsMTEgQEANCiAgICAgaWYgKFJlbmRlck9iamVjdCAqciA9
IG1fcmVuZGVyKSB7CiAgICAgICAgIGlmIChyLT5pc1dpZGdldCgpKSB7CiAgICAgICAgICAgICBp
ZiAoUVdpZGdldCAqd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyV2lkZ2V0ICo+KHIpLT53aWRn
ZXQoKSkgeworI2lmIE5PS0lBX0NIQU5HRVMgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgaWYgKE1XZWJDb3JlV2lkZ2V0ICp2aWV3ID0gd2lkZ2V0LT5nZXRWaWV3KCkpICB7CisjZWxz
ZQogICAgICAgICAgICAgICAgIGlmIChOU1ZpZXcgKnZpZXcgPSB3aWRnZXQtPmdldFZpZXcoKSkg
IHsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGludG8gdGhlIHBhcnQgKGFu
ZCBvdmVyIHRoZSBicmlkZ2UpIHRvIHB1bGwgdGhlIEJpbmRpbmdzOjpJbnN0YW5jZQogICAgICAg
ICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBndXRzIG9mIHRoZSBwbHVnaW4uCiAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRPYmplY3RJbnN0YW5jZUZv
clZpZXcodmlldyk7CkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmgJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTY0LDE5ICs2NCwxNiBAQA0KICNpZiBBUFBMRV9DSEFOR0VTCiAg
ICAgdmlydHVhbCBib29sIGFsbFBhcmFtc0F2YWlsYWJsZSgpOwogICAgIHZvaWQgc2V0dXBBcHBs
ZXQoKSBjb25zdDsKLSNpZiAhTk9LSUFfQ0hBTkdFUworCiAgICAgS0pTOjpCaW5kaW5nczo6SW5z
dGFuY2UgKmdldEFwcGxldEluc3RhbmNlKCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRpZgogCiBwcm90
ZWN0ZWQ6CiAgICAga2h0bWw6OlZBbGlnbiB2YWxpZ247CiAKIHByaXZhdGU6CiAjaWYgQVBQTEVf
Q0hBTkdFUwotI2lmICFOT0tJQV9DSEFOR0VTCiAgICAgbXV0YWJsZSBLSlM6OkJpbmRpbmdzOjpJ
bnN0YW5jZSAqYXBwbGV0SW5zdGFuY2U7Ci0jZW5kaWYKICAgICBib29sIG1fYWxsUGFyYW1zQXZh
aWxhYmxlOwogI2VuZGlmCiB9OwpAQCAtMTEzLDcgKzExMCw3IEBADQogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50SW1wbCAqZXZ0KTsKICNlbmRpZgogCi0jaWYgQVBQ
TEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICAgICBLSlM6
OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0RW1iZWRJbnN0YW5jZSgpIGNvbnN0OwogI2VuZGlmCiAK
QEAgLTEyNCw3ICsxMjEsNyBAQA0KICAgYm9vbCBuZWVkV2lkZ2V0VXBkYXRlOwogICAgIEhUTUxJ
bWFnZUxvYWRlciogbV9pbWFnZUxvYWRlcjsKICNlbmRpZgotI2lmIEFQUExFX0NIQU5HRVMgJiYg
IU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiBwcml2YXRlOgogICAgIG11dGFibGUg
S0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmVtYmVkSW5zdGFuY2U7CiAjZW5kaWYKQEAgLTE4Niw3
ICsxODMsNyBAQA0KIAogICAgIHZvaWQgcmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CiAKLSNpZiBB
UFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogICAgIEtK
Uzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRPYmplY3RJbnN0YW5jZSgpIGNvbnN0OwogI2VuZGlm
CiAKQEAgLTE5Nyw3ICsxOTQsNyBAQA0KICAgICBib29sIG1fdXNlRmFsbGJhY2tDb250ZW50IDog
MTsKICAgICBIVE1MSW1hZ2VMb2FkZXIqIG1faW1hZ2VMb2FkZXI7CiAKLSNpZiBBUFBMRV9DSEFO
R0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogcHJpdmF0ZToKICAgICBt
dXRhYmxlIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpvYmplY3RJbnN0YW5jZTsKICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUva3dxL0tXUUtIVE1MUGFydC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva3dx
L0tXUUtIVE1MUGFydC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02Miw2ICs2Miw4IEBADQogI2lu
Y2x1ZGUgImtqc193aW5kb3cuaCIKICNlbmRpZgogCisjaW5jbHVkZSAicHJvdGVjdC5oIgorI2lu
Y2x1ZGUgImtqc193aW5kb3cuaCIKICNpbmNsdWRlICJyZW5kZXJfY2FudmFzLmgiCiAjaW5jbHVk
ZSAicmVuZGVyX2ZyYW1lcy5oIgogI2luY2x1ZGUgInJlbmRlcl9pbWFnZS5oIgpAQCAtMjE5LDEw
ICsyMjEsOSBAQA0KICAgICAsIF91c2VzSW5hY3RpdmVUZXh0QmFja2dyb3VuZENvbG9yKGZhbHNl
KQogICAgICwgX3Nob3dzRmlyc3RSZXNwb25kZXIodHJ1ZSkKICAgICAsIF9kcmF3U2VsZWN0aW9u
T25seShmYWxzZSkKLSNpZiAhS0hUTUxfTk9fU0NSSVBUSU5HCi0vLyAgICAsIF9iaW5kaW5nUm9v
dCgwKQorICAgICwgX3dpbmRvd1NjcmlwdE5QT2JqZWN0KDApCisgICAgLCBfYmluZGluZ1Jvb3Qo
MCkKICAgICAsIF93aW5kb3dTY3JpcHRPYmplY3QoMCkKLSNlbmRpZgogLy8gICAgLCBfZHJhZ1Ny
YygwKQogLy8gICAgLCBfZHJhZ0NsaXBib2FyZCgwKQogICAgICwgX2VsZW1lbnRUb0RyYXcoMCkK
QEAgLTc0OSw3ICs3NTAsNyBAQA0KICAgICAvLyBGSVhNRTogRnJhbWUgdGFyZ2V0aW5nIGlzIG9u
bHkgb25lIG9mIHRoZSB3YXlzIHRoZSBzdWJtaXNzaW9uIGNvdWxkIGVuZCB1cCBkb2luZyBzb21l
dGhpbmcgb3RoZXIKICAgICAvLyB0aGFuIHJlcGxhY2luZyB0aGlzIGZyYW1lJ3MgY29udGVudCwg
c28gdGhpcyBjaGVjayBpcyBmbGF3ZWQuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgY2hlY2sgaXMg
aGFyZGx5CiAgICAgLy8gbmVlZGVkIGFueSBtb3JlIG5vdyB0aGF0IHdlIHJlc2V0IF9zdWJtaXR0
ZWRGb3JtVVJMIG9uIGVhY2ggbW91c2Ugb3Iga2V5IGRvd24gZXZlbnQuCi0gICAgCisKICAgICBD
V2ViQ29yZUJyaWRnZSAqdGFyZ2V0ID0gYXJncy5mcmFtZU5hbWUuaXNFbXB0eSgpID8gX2JyaWRn
ZSA6IF9icmlkZ2UtPkNsaWVudCgpLkZpbmRGcmFtZU5hbWVkKGFyZ3MuZnJhbWVOYW1lLkRlcygp
KTsKICAgICBLSFRNTFBhcnQgKnRhcmdldFBhcnQgPSB0YXJnZXQtPlBhcnQoKTsKICAgICBib29s
IHdpbGxSZXBsYWNlVGhpc0ZyYW1lID0gZmFsc2U7CkBAIC03NTksNyArNzYwLDcgQEANCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmICh3aWxsUmVw
bGFjZVRoaXNGcmFtZSkgewogICAgICAgICBpZiAoX3N1Ym1pdHRlZEZvcm1VUkwgPT0gdXJsKSB7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjYwLDggKzEyNjEsNyBAQA0KICAgfQogfQogCi0j
aWYgIUtIVE1MX05PX1NDUklQVElORwotLypLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpLV1FL
SFRNTFBhcnQ6OmJpbmRpbmdSb290T2JqZWN0KCkKK0tKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Qg
KktXUUtIVE1MUGFydDo6YmluZGluZ1Jvb3RPYmplY3QoKQogewogICAgIGlmICghX2JpbmRpbmdS
b290KSB7CiAgICAgICAgIF9iaW5kaW5nUm9vdCA9IG5ldyBLSlM6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0KDApOyAgICAvLyBUaGUgcm9vdCBnZXRzIGRlbGV0ZWQgYnkgSmF2YVNjcmlwdENvcmUuCkBA
IC0xMjczLDcgKzEyNzMsOCBAQA0KICAgICByZXR1cm4gX2JpbmRpbmdSb290OwogfQogCi1XZWJT
Y3JpcHRPYmplY3QgKktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0T2JqZWN0KCkKKworLypXZWJT
Y3JpcHRPYmplY3QgKktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0T2JqZWN0KCkKIHsKICAgICBp
ZiAoIV93aW5kb3dTY3JpcHRPYmplY3QpIHsKICAgICAgICAgS0pTOjpPYmplY3RJbXAgKndpbiA9
IHN0YXRpY19jYXN0PEtKUzo6T2JqZWN0SW1wICo+KEtKUzo6V2luZG93OjpyZXRyaWV2ZVdpbmRv
dyh0aGlzKSk7CkBAIC0xMjgyLDcgKzEyODMsNiBAQA0KIAogICAgIHJldHVybiBfd2luZG93U2Ny
aXB0T2JqZWN0OwogfSovCi0jZW5kaWYKIAogdm9pZCBLV1FLSFRNTFBhcnQ6OnBhcnRDbGVhcmVk
SW5CZWdpbigpCiB7CkBAIC0yOTU5LDQ2ICsyOTU5LDQ2IEBADQogCiB2b2lkIEtXUUtIVE1MUGFy
dDo6Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShjb25zdCBURGVzQyYgYVRleHRFbnRyeSwgY29uc3Qg
RE9NOjpOb2RlJiBhTm9kZSwgUkFycmF5PFRSZWN0PiYgYUVudHJ5UmVjdExpc3QpCiB7Ci0gIAot
ICAgIFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZzo6RnJvbURlcyhhVGV4dEVudHJ5KTsgICAgCi0g
ICAgCisKKyAgICBRU3RyaW5nIHRhcmdldCA9IFFTdHJpbmc6OkZyb21EZXMoYVRleHRFbnRyeSk7
CisKICAgICBjb25zdCBsb25nIHN0YXJ0ID0gMDsKLSAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVy
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihhTm9kZS5oYW5kbGUoKS0+cmVuZGVyZXIoKSk7
ICAgICAgICAgICAKKyAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyVGV4dCAqPihhTm9kZS5oYW5kbGUoKS0+cmVuZGVyZXIoKSk7CiAgIGNvbnN0IGxvbmcgb2Zm
c2V0ID0gdGV4dFJlbmRlcmVyLT5sZW5ndGgoKTsKLSAgICBSYW5nZSBzZWFyY2hSYW5nZShhTm9k
ZSwgc3RhcnQsIGFOb2RlLCBvZmZzZXQpOyAgICAgCi0gICAgICAgIAorICAgIFJhbmdlIHNlYXJj
aFJhbmdlKGFOb2RlLCBzdGFydCwgYU5vZGUsIG9mZnNldCk7CisKICAgICBSYW5nZSByZXN1bHRS
YW5nZSA9IGtodG1sOjpmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRy
dWUpOwogCiAgIHdoaWxlICghcmVzdWx0UmFuZ2UuY29sbGFwc2VkKCkpCiAgICAgewotICAgICAg
ICAKKwogICAgIHNldFNlbGVjdGlvbihraHRtbDo6U2VsZWN0aW9uKHJlc3VsdFJhbmdlLCBraHRt
bDo6RE9XTlNUUkVBTSwga2h0bWw6OlNFTF9QUkVGRVJfVVBTVFJFQU1fQUZGSU5JVFkpLCBmYWxz
ZSk7Ci0gICAgCi0gICAgCi0gICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxs
KCkpIAorCisKKyAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkKICAg
ICAgIHsKLSAgICAgIGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIo
KSAmJiBkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkp
ICAgICAgICAgICAgIAorICAgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5y
ZW5kZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5p
c1RleHQoKSkKICAgICAgICAgewotICAgICAgICAvL2dldCB0aGUgc2VsZWN0aW9uIHJlY3QgICAg
Ci0gICAgICAgIFJlbmRlclRleHQgKnJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihkLT5t
X3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgCi0gICAgICAgICAg
ICAgIGlmIChydCkgCisgICAgICAgIC8vZ2V0IHRoZSBzZWxlY3Rpb24gcmVjdAorICAgICAgICBS
ZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24u
c3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgICBpZiAocnQpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgUVJlY3QgclNlbGVjdGlvbiA9IHJ0LT5z
ZWxlY3Rpb25SZWN0KCk7Ci0gICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBl
bmQoclNlbGVjdGlvbik7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgX2ZvY3Vz
YWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVjdGlvbik7CiAgICAgICAgICAgICAgICAgICBhRW50
cnlSZWN0TGlzdC5BcHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9w
KCksIHJTZWxlY3Rpb24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20oKSkpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgfSAgICAgCi0gICAgICAKLSAgICAKLSAgICAgICAg
c2VhcmNoUmFuZ2Uuc2V0U3RhcnQoYU5vZGUsIHJlc3VsdFJhbmdlLmVuZE9mZnNldCgpKTsgICAg
ICAgICAgICAgCisgICAgICB9CisKKworICAgICAgICBzZWFyY2hSYW5nZS5zZXRTdGFydChhTm9k
ZSwgcmVzdWx0UmFuZ2UuZW5kT2Zmc2V0KCkpOwogICAgICAgICBzZWFyY2hSYW5nZS5zZXRFbmQo
YU5vZGUsIG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgCi0gICAgICByZXN1bHRSYW5n
ZSA9IGtodG1sOjpmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUp
OyAgICAKLSAgICB9ICAgCiAKKyAgICAgIHJlc3VsdFJhbmdlID0ga2h0bWw6OmZpbmRQbGFpblRl
eHQoc2VhcmNoUmFuZ2UsIHRhcmdldCwgdHJ1ZSwgdHJ1ZSk7CisgICAgfQorCiAgICAgY2xlYXJT
ZWxlY3Rpb24oKTsKLSAgICAgIAorCiB9CiAKIC8qCkBAIC0zMDA5LDUyICszMDA5LDUyIEBADQog
ICAgICAgewogICAgICAgICBkLT5tX2ZpcnN0Rm91bmQgPSBkLT5tX3NlbGVjdGlvbjsKICAgICAg
IH0KLSAgICBlbHNlIAotICAgICAgeyAgICAgICAgCisgICAgZWxzZQorICAgICAgewogICAgICAg
ICBkLT5tX2ZpcnN0Rm91bmQgPSBraHRtbDo6U2VsZWN0aW9uKCk7CiAgICAgICB9Ci0gICAgCisK
ICAga2h0bWw6OlNlbGVjdGlvbiBmaXJzdEZvdW5kKGQtPm1fZmlyc3RGb3VuZCk7CiAgIGtodG1s
OjpTZWxlY3Rpb24gbGFzdEZvdW5kKGQtPm1fbGFzdEZvdW5kKTsKICAga2h0bWw6OlNlbGVjdGlv
biBjdXJzZWxlY3Rpb24oZC0+bV9zZWxlY3Rpb24pOwogCiAKICAgICBUSW50IHJlc3VsdCA9IEZp
bmRTdHJpbmcoYVRleHRFbnRyeSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gIAorCiAgIHdo
aWxlIChyZXN1bHQgPT0gVEJyQ3RsRGVmczo6RUZpbmRNYXRjaCkKICAgICB7CiAKLSAgICBpZiAo
ZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkgCisgICAgaWYgKGQtPm1fc2VsZWN0
aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkpCiAgICAgICB7Ci0gICAgICBpZiAoZC0+bV9zZWxlY3Rp
b24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5u
b2RlKCktPnJlbmRlcmVyKCktPmlzVGV4dCgpKSAgICAgICAgICAgICAKKyAgICAgIGlmIChkLT5t
X3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkLT5tX3NlbGVjdGlvbi5z
dGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpCiAgICAgICAgIHsKLSAgICAgICAg
Ly9nZXQgdGhlIHNlbGVjdGlvbiByZWN0ICAgIAotICAgICAgICBSZW5kZXJUZXh0ICpydCA9IHN0
YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJl
bmRlcmVyKCkpOyAgICAgIAotICAgICAgICAgICAgICBpZiAocnQpIAorICAgICAgICAvL2dldCB0
aGUgc2VsZWN0aW9uIHJlY3QKKyAgICAgICAgUmVuZGVyVGV4dCAqcnQgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUZXh0ICo+KGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpKTsK
KyAgICAgICAgICAgICAgaWYgKHJ0KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgIFFSZWN0IHJTZWxlY3Rpb24gPSBydC0+c2VsZWN0aW9uUmVjdCgpOwogCiAgICAgICAgICAg
Ym9vbCBiRXhpc3RzID0gRUZhbHNlOwotICAgICAgICAgICAgZm9yKGludCBpID0gMDtpIDwgX2Zv
Y3VzYWJsZU5vZGVMaXN0LT5jb3VudCgpO2krKykgCisgICAgICAgICAgICBmb3IoaW50IGkgPSAw
O2kgPCBfZm9jdXNhYmxlTm9kZUxpc3QtPmNvdW50KCk7aSsrKQogICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgUVJlY3QgbnIgPSBfZm9jdXNhYmxlTm9kZUxpc3QtPm9wZXJhdG9yW10o
aSk7CiAgICAgICAgICAgICAgICAgaWYoIW5yLmludGVyc2VjdHMoclNlbGVjdGlvbikpCi0gICAg
ICAgICAgICAgICAgICB7ICAgICAKKyAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgIGJFeGlzdHMgPSBFVHJ1ZTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAKKwogICAgICAgICAgIGlmICghYkV4aXN0cykKLSAgICAgICAg
ICAgIHsgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5h
cHBlbmQoclNlbGVjdGlvbik7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBfZm9jdXNhYmxlTm9kZUxpc3QtPmFwcGVuZChyU2VsZWN0aW9uKTsKICAg
ICAgICAgICAgIH0KLSAgICAgIAorCiAgICAgICAgICAgICAgICAgICBhRW50cnlSZWN0TGlzdC5B
cHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9wKCksIHJTZWxlY3Rp
b24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20oKSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgfQotICAgICAgCisKICAgICByZXN1bHQgPSBGaW5kU3RyaW5nKGFUZXh0
RW50cnksIHRydWUsIHRydWUsIHRydWUsIHRydWUpOwogICAgIH0KIApAQCAtMzA2Miw3ICszMDYy
LDcgQEANCiAgIGQtPm1fZmlyc3RGb3VuZCA9IGZpcnN0Rm91bmQ7CiAgIGQtPm1fbGFzdEZvdW5k
ID0gbGFzdEZvdW5kOwogICBkLT5tX3NlbGVjdGlvbiA9IGN1cnNlbGVjdGlvbjsKLSAgICAgICAg
CisKIH0KICovCiAvLyByZXR1cm5zIE5TUmVjdCBiZWNhdXNlIGdvaW5nIHRocm91Z2ggUVJlY3Qg
d291bGQgdHJ1bmNhdGUgYW55IGZsb2F0cwpAQCAtMzM1NiwyMyArMzM1NiwyMSBAQA0KICAgICB9
CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYKIAogdm9pZCBLV1FLSFRNTFBhcnQ6OmFkZFBsdWdp
blJvb3RPYmplY3QoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdCkKIHsKICAg
ICByb290T2JqZWN0cy5hcHBlbmQgKHJvb3QpOwogfQotI2VuZGlmCiAKIHZvaWQgS1dRS0hUTUxQ
YXJ0OjpjbGVhbnVwUGx1Z2luUm9vdE9iamVjdHMoKQogewogLy8gIyMjIE5PVCBJTVBMRU1FTlRF
RCBzY3JpcHRpbmcsIHBsdWdpbnMKLS8qCiAgICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAq
cm9vdDsKICAgICB3aGlsZSAoKHJvb3QgPSByb290T2JqZWN0cy5nZXRMYXN0KCkpKSB7CiAgICAg
ICAgIHJvb3QtPnJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CiAgICAgICAgIHJvb3RPYmpl
Y3RzLnJlbW92ZUxhc3QoKTsKICAgICB9Ci0qLwogfQogCiAKQEAgLTM3OTMsNyArMzc5MSw3IEBA
DQogICAgICAgICAgIFFQb2ludCBucCA9IG5lYXJlc3RQb2ludEluUmVjdChfY3Vyc29yUG9zaXRp
b24saW50ZXJzZWN0UmVjdCk7CiAgICAgICAgICAgaW50IHggPSAobnAueCgpIC0gX2N1cnNvclBv
c2l0aW9uLngoKSk7CiAgICAgICAgICAgaW50IHkgPSAobnAueSgpIC0gX2N1cnNvclBvc2l0aW9u
LnkoKSk7Ci0gICAgICAgICAgCisKICAgICAgICAgICBpZihsciAhPSAwICYmIEFicyh5KSA+IHZp
ZXcoKS0+dmlzaWJsZUhlaWdodCgpLzQpIGNvbnRpbnVlOwogCiAgICAgICAgICAgaWYoIWZvY3Vz
UmFuZ2UuaXNFbXB0eSgpICYmICFmb2N1c1JlY3QuaXNFbXB0eSgpKSB7CkBAIC0zOTgyLDcgKzM5
ODAsNyBAQA0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihmb2N1c1JlY3QuaXNF
bXB0eSgpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgCisKICAgICAgICBmb2N1c2VkRnJhbWVQYXJ0
LT5icmlkZ2UoKS0+UG9pbnRlckV2ZW50KFRQb2ludGVyRXZlbnQ6OkVNb3ZlLGZvY3VzUmVjdC5j
ZW50ZXIoKS5Qb2ludCgpKTsKIAogICAgICAgIFFSZWN0IHZpZXdSZWN0KGZvY3VzZWRGcmFtZVBh
cnQtPnZpZXcoKS0+Y29udGVudHNYKCksZm9jdXNlZEZyYW1lUGFydC0+dmlldygpLT5jb250ZW50
c1koKSwKQEAgLTQwNjQsNCArNDA2MiwzNyBAQA0KICAgICAvLyBSZXNldCB0aGUgbXVsdGlwbGUg
Zm9ybSBzdWJtaXNzaW9uIHByb3RlY3Rpb24gY29kZS4KICAgICAvLyBXZSdsbCBsZXQgeW91IHN1
Ym1pdCB0aGUgc2FtZSBmb3JtIHR3aWNlIGlmIHlvdSBkbyB0d28gc2VwYXJhdGUgdXNlciBhY3Rp
b25zLgogICAgIF9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOwotfQ0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlDQorfQorCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUworS0pTOjpPYmpl
Y3RJbXAqIEtXUUtIVE1MUGFydDo6Y3JlYXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBl
eGVjKQoreworICAgIHJldHVybiBfYnJpZGdlLT5DbGllbnQoKS5jcmVhdGVXaWRnZXRPYmplY3Qo
ZXhlYyk7Cit9CisjZW5kaWYKKworS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKktXUUtIVE1MUGFy
dDo6Z2V0RW1iZWRJbnN0YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICphVmlldykKK3sKKyAg
ICByZXR1cm4gZ2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3KGFWaWV3KTsKK30KKworS0pTOjpCaW5k
aW5nczo6SW5zdGFuY2UgKktXUUtIVE1MUGFydDo6Z2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3IChN
V2ViQ29yZVdpZGdldCAqYVZpZXcpCit7CisgICAgdm9pZCogb2JqZWN0ID0gYVZpZXctPlBsdWdp
blNjcmlwdGFibGVPYmplY3QoKTsKKyAgICBpZiAob2JqZWN0KSB7CisgICAgICAgIC8vS0pTOjpC
aW5kaW5nczo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCA9IEtKUzo6QmluZGluZ3M6OlJv
b3RPYmplY3Q6OmZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb24gKCkoYVZpZXcp
OworICAgICAgICAvL3JldHVybiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlQmluZGlu
Z0Zvckxhbmd1YWdlSW5zdGFuY2UgKEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpDTGFuZ3VhZ2Us
IG9iamVjdCwgZXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIHJldHVybiBLSlM6OkJpbmRpbmdz
OjpJbnN0YW5jZTo6Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UgKEtKUzo6QmluZGlu
Z3M6Okluc3RhbmNlOjpDTGFuZ3VhZ2UsIG9iamVjdCk7CisgICAgfQorfQorCitOUE9iamVjdCAq
S1dRS0hUTUxQYXJ0Ojp3aW5kb3dTY3JpcHROUE9iamVjdCgpCit7CisgICAgaWYgKCFfd2luZG93
U2NyaXB0TlBPYmplY3QpIHsKKyAgICAgICAgS0pTOjpPYmplY3RJbXAgKndpbiA9IHN0YXRpY19j
YXN0PEtKUzo6T2JqZWN0SW1wICo+KEtKUzo6V2luZG93OjpyZXRyaWV2ZVdpbmRvdyh0aGlzKSk7
CisgICAgICAgIF93aW5kb3dTY3JpcHROUE9iamVjdCA9IF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0
ICgwLCB3aW4sIGJpbmRpbmdSb290T2JqZWN0KCksIGJpbmRpbmdSb290T2JqZWN0KCkpOworICAg
IH0KKworICAgIHJldHVybiBfd2luZG93U2NyaXB0TlBPYmplY3Q7Cit9CisKSW5kZXg6IFdlYkNv
cmUva3dxL0tXUUtIVE1MUGFydC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9rd3EvS1dRS0hU
TUxQYXJ0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMzQsNiArMzQsNyBAQA0KICNpbmNsdWRlICJkb21fbm9kZWlt
cGwuaCIKICNpbmNsdWRlICJodG1sX2Zvcm1pbXBsLmgiCiAjaW5jbHVkZSAiaHRtbF90YWJsZWlt
cGwuaCIKKyNpbmNsdWRlICJvYmplY3QuaCIKIAogI2luY2x1ZGUgIldlYkNvcmVLZXlib2FyZEFj
Y2Vzcy5oIgogI2luY2x1ZGUgIldlYkNvcmVLZXlWYWx1ZVBhaXIuaCIKQEAgLTQxLDYgKzQyLDkg
QEANCiAKICNpbmNsdWRlIDxlMzJiYXNlLmg+CiAjaW5jbHVkZSA8dzMyc3RkLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
TlBfanNvYmplY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+CiAKICNp
bmNsdWRlICJLV1FEaWN0LmgiCiAjaW5jbHVkZSAiS1dRQ2xpcGJvYXJkLmgiCkBAIC01OCw2ICs2
Miw3IEBADQogICAgIGNsYXNzIFNhdmVkUHJvcGVydGllczsKICAgICBjbGFzcyBTYXZlZEJ1aWx0
aW5zOwogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKKyAgICBjbGFzcyBQcm90ZWN0ZWRWYWx1
ZTsKIH0KIAogY2xhc3MgQ1dlYkNvcmVCcmlkZ2U7CkBAIC0yMDMsNyArMjA4LDcgQEANCiAKICAg
ICBRUmVjdCBzZWxlY3Rpb25SZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBnZXRSZW5kZXJUZXh0UmVj
dEFycmF5KGNvbnN0IFREZXNDJiBhVGV4dEVudHJ5LCBjb25zdCBET006Ok5vZGUmIGFOb2RlLCBS
QXJyYXk8VFJlY3Q+JiBhRW50cnlSZWN0TGlzdCk7Ci0gICAgCisKIC8vICAgIE5TUmVjdCB2aXNp
YmxlU2VsZWN0aW9uUmVjdCgpIGNvbnN0OwogLy8gICAgTlNJbWFnZSAqc2VsZWN0aW9uSW1hZ2Uo
KSBjb25zdDsKIC8vICAgIE5TSW1hZ2UgKnNuYXBzaG90RHJhZ0ltYWdlKERPTTo6Tm9kZSBub2Rl
LCBOU1JlY3QgKmltYWdlUmVjdCwgTlNSZWN0ICplbGVtZW50UmVjdCkgY29uc3Q7CkBAIC0yMjIs
NiArMjI3LDkgQEANCiAgICAgYm9vbCBLZXlFdmVudChjb25zdCBUS2V5RXZlbnQmIGV2ZW50LCBi
b29sIHVwKTsKICAgICAvL2Jvb2wgTGFzdEV2ZW50SXNNb3VzZVVwKCk7CiAKKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTCisgICAgS0pTOjpPYmplY3RJbXAqIGNyZWF0ZVdpZGdldE9iamVjdChL
SlM6OkV4ZWNTdGF0ZSogZXhlYykgOworI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTCiAKICAg
ICAvL01ldGhvZHMgdG8gdXBkYXRlIGZvY3VzYWJsZSBub2RlIGxpc3QKICAgICB2b2lkIHVwZGF0
ZUZvY3VzYWJsZVJlY3RMaXN0KCk7CkBAIC0yODksOSArMjk3LDEzIEBADQogICAgIHZvaWQgZGlk
VGVsbEJyaWRnZUFib3V0TG9hZChjb25zdCBRU3RyaW5nICZ1cmxTdHJpbmcpOwogICAgIGJvb2wg
aGF2ZVRvbGRCcmlkZ2VBYm91dExvYWQoY29uc3QgUVN0cmluZyAmdXJsU3RyaW5nKTsKIAotLy8g
ICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3IChOU1Zp
ZXcgKmFWaWV3KTsKLS8vICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRBcHBsZXRJbnN0
YW5jZUZvclZpZXcgKE5TVmlldyAqYVZpZXcpOwotLy8gICAgdm9pZCBhZGRQbHVnaW5Sb290T2Jq
ZWN0KGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKnJvb3QpOworICAgIEtKUzo6Qmlu
ZGluZ3M6Okluc3RhbmNlICpnZXRFbWJlZEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVXaWRnZXQg
KmFWaWV3KTsKKyAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0T2JqZWN0SW5zdGFuY2VG
b3JWaWV3KE1XZWJDb3JlV2lkZ2V0ICphVmlldyk7CisgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2UgKmdldEFwcGxldEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVXaWRnZXQgKikgeyByZXR1cm4g
MDsgfQorICAgIHZvaWQgYWRkUGx1Z2luUm9vdE9iamVjdChjb25zdCBLSlM6OkJpbmRpbmdzOjpS
b290T2JqZWN0ICpyb290KTsKKyAgICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpiaW5kaW5n
Um9vdE9iamVjdCgpOworICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKmV4ZWN1dGlvbkNv
bnRleHRGb3JET00oKTsKKyAgICBOUE9iamVjdCAqd2luZG93U2NyaXB0TlBPYmplY3QoKTsKICAg
ICB2b2lkIGNsZWFudXBQbHVnaW5Sb290T2JqZWN0cygpOwogCiAgICAgdm9pZCByZWdpc3RlckNv
bW1hbmRGb3JVbmRvKGNvbnN0IGtodG1sOjpFZGl0Q29tbWFuZFB0ciAmKTsKQEAgLTQyNyw5ICs0
MzksMTAgQEANCiAKICAgICBmcmllbmQgY2xhc3MgS0hUTUxQYXJ0OwogCi0vLyAgICBLSlM6OkJp
bmRpbmdzOjpSb290T2JqZWN0ICpfYmluZGluZ1Jvb3Q7ICAvLyBUaGUgcm9vdCBvYmplY3QgdXNl
ZCBmb3Igb2JqZWN0cworICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKl9iaW5kaW5nUm9v
dDsgIC8vIFRoZSByb290IG9iamVjdCB1c2VkIGZvciBvYmplY3RzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdW5kIG91dHNpZGUgdGhlIGNvbnRleHQg
b2YgYSBwbHVnaW4uCi0vLyAgICBRUHRyTGlzdDxLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0PiBy
b290T2JqZWN0czsKKyAgICBOUE9iamVjdCAqX3dpbmRvd1NjcmlwdE5QT2JqZWN0OworICAgIFFQ
dHJMaXN0PEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3RPYmplY3RzOwogICAgIENXZWJT
Y3JpcHRPYmplY3QgKl93aW5kb3dTY3JpcHRPYmplY3Q7CiAKICAgICBET006Ok5vZGUgX2RyYWdT
cmM7ICAgICAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3Vy
cmVudCBtb3VzZSBnZXN0dXJlCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3Rs
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGwuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTcyMyw2ICs3MjMsMTIgQEANCiAgICAgICAgICovDQogICAgICAgICBU
Qm9vbCBTZW5kQ29tbWFuZHNUb0NsaWVudChUQnJDdGxEZWZzOjpUQnJDdGxDbGllbnRDb21tYW5k
cyBhQ29tbWFuZCwgY29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZXNOYW1lcywNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0FycmF5Rml4PFRQdHJD
PiYgYUF0dHJpYnV0ZVZhbHVlcyk7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAg
ICAgIC8qKg0KKyAgICAgICAgKiBDcmVhdGVzIHRoZSB3aWRnZXQgZXh0ZW5zaW9uIG9iamVjdA0K
KyAgICAgICAgKi8NCisgICAgICAgIE1XaWRnZXRFeHRlbnNpb24qIENyZWF0ZVdpZGdldEV4dGVu
c2lvbkwoTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spIDsNCisjZW5kaWYgLy9SRF9C
Uk9XU0VSX1dJREdFVFMNCiAgICAgcHJvdGVjdGVkOiAgLy8gRnVuY3Rpb25zIGZyb20gQ0NvZUNv
bnRyb2wNCiANCiAgICAgICAgIC8qKg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMv
QnJDdGxEZWZzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0Jy
Q3RsRGVmcy5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5j
L0JyQ3RsRGVmcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNjAzLDcgKzYwMyw3IEBADQogDQogICAg
ICAgICAgICAgRUVsZW1lbnRNb3VzZUJ1dHRvbkxpc3RlbmVyLCAvLy88IEEgTW91c2UgYnV0dG9u
IGxpc3RlbmVyDQogICAgICAgICAgICAgRUVsZW1lbnRTY3JvbGxCYXIsICAgIC8vLzwgQSBzY3Jv
bGwgYmFyDQotICAgICAgICAgICAgDQorDQogICAgICAgICAgICAgRUVsZW1lbnRTbWFydExpbmtU
ZWwsIC8vLzwgQSB0ZWxlcGhvbmUgbnVtYmVyIGluIHRoZSBwYWdlLg0KICAgICAgICAgICAgIEVF
bGVtZW50U21hcnRMaW5rRW1haWwgLy8vPCBhbiBlbWFpbCBhZGRyZXNzIGluIHRoZSBwYWdlLg0K
ICAgICAgICAgfTsNCkBAIC03MTYsNiArNzE2LDE3IEBADQogICAgICAgICBFQ2xpZW50Q29tbWFu
ZExhdW5jaEZpbmRLZXl3b3JkID0gMCwNCiAgICAgICAgIEVDbGllbnRDb21tYW5kU3Vic2NyaWJl
VG9GZWVkcw0KICAgICAgICAgfTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAv
KioNCisgICAgKiBUaGUgd2lkZ2V0IHBhcmFtcy4NCisgICAgKi8NCisgICAgZW51bSBUQnJDdGxX
aWRnZXRQYXJhbXMNCisgICAgICAgIHsNCisgICAgICAgIEVXaWRnZXRJZGVudGlmaWVyID0gMCwN
CisgICAgICAgIEVXaWRnZXRCdW5kbGVJZCwNCisgICAgICAgIEVXaWRnZXRCYXNlUGF0aA0KKyAg
ICAgICAgfTsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfTsNCiANCiAjZW5k
aWYgICAgICAvLyBCUkNUTERFRlNfSA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMv
QnJDdGxJbnRlcmZhY2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29udHJvbC9p
bmMvQnJDdGxJbnRlcmZhY2UuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJD
b250cm9sL2luYy9CckN0bEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzEsNyArNzEs
MTAgQEANCiBjbGFzcyBUQnJDdGxTdWJzY3JpYmVUbzsNCiBjbGFzcyBNQnJDdGxTdGF0ZUNoYW5n
ZU9ic2VydmVyOw0KIGNsYXNzIE1CckN0bENvbW1hbmRPYnNlcnZlcjsNCi0NCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KK2NsYXNzIE1XaWRnZXRDYWxsYmFjazsNCitjbGFzcyBNV2lkZ2V0
RXh0ZW5zaW9uOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIGNsYXNzIENCckN0bElu
dGVyZmFjZTsNCiBjbGFzcyBDUGx1Z2luSW5mbzsNCiANCkBAIC01OTYsNiArNTk5LDE1IEBADQog
ICAgICAgICAqLw0KICAgICAgICAgSU1QT1JUX0MgdmlydHVhbCB2b2lkIFJlbW92ZUNvbW1hbmRP
YnNlcnZlcihNQnJDdGxDb21tYW5kT2JzZXJ2ZXIqIGFCckN0bENvbW1hbmRPYnNlcnZlcikgPSAw
Ow0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAg
ICogVW5yZWdpc3RlciBhIGNsaWVudCBjb21tYW5kIGludGVyZmFjZSBmb3IgdGhlIGJyb3dzZXIg
ZW5naW5lDQorICAgICAgICAqIEBzaW5jZSAzLjENCisgICAgICAgICogQHBhcmFtIFRoZSBvYnNl
cnZlciB0byB1bnJlZ2lzdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8N
CisgICAgICAgIElNUE9SVF9DIHZpcnR1YWwgTVdpZGdldEV4dGVuc2lvbiogQ3JlYXRlV2lkZ2V0
RXh0ZW5zaW9uTChNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykgPSAwOw0KKyNlbmRp
ZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9Ow0KIA0KIA0KQEAgLTg2OCw2ICs4ODAsNDkg
QEANCiAgICAgICAgIHZpcnR1YWwgdm9pZCBIYW5kbGVDb21tYW5kTChUQnJDdGxEZWZzOjpUQnJD
dGxDbGllbnRDb21tYW5kcyBhQ29tbWFuZCwgY29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJp
YnV0ZXNOYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZVZhbHVlcykgPSAwOw0KICAgICB9Ow0KKyNpZmRl
ZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorLy8gQ0xBU1MgREVDTEFSQVRJT04NCisvKioNCisqICBU
aGlzIGNsYXNzIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciB0aGUgYnJvd3NlciBlbmdpbmUgdG8g
aW50ZXJhY3Qgd2l0aCB0aGUgd2lkZ2V0IGhvc3QgYXBwbGljYXRpb24NCisqDQorKiAgQGxpYiBC
cm93c2VyRW5naW5lLmxpYg0KKyogIEBzaW5jZSAzLjINCisqLw0KK2NsYXNzIE1XaWRnZXRDYWxs
YmFjaw0KKyAgICB7DQorICAgIHB1YmxpYzogLy8gTmV3IGZ1bmN0aW9ucw0KKw0KKyAgICAgICAg
Ly9UTyBCRSBJTVBMRU1FTlRFRA0KKyAgICB9Ow0KKy8vIENMQVNTIERFQ0xBUkFUSU9ODQorLyoq
DQorKiAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbiBleHRlbnNpb24gbWVjaGFuaXNtIGZvciB0aGUg
d2lkZ2V0IGhvc3QgYXBwIHRvIGludGVyYWN0IHdpdGggdGhlIGJyb3dzZXIgZW5naW5lDQorKiAg
VGhpcyBjbGFzcyBpbmNsdWRlcyB0aGUgV2lkZ2V0IHNwZWNpZmljIGV4dGVuc2lvbiBuZWVkZWQg
aW4gdGhlIGJyb3dzZXIgZW5naW5lDQorKiAgQGxpYiBCcm93c2VyRW5naW5lLmxpYg0KKyogIEBz
aW5jZSAzLjINCisqLw0KK2NsYXNzIE1XaWRnZXRFeHRlbnNpb24NCisgICAgew0KKyAgICBwdWJs
aWM6IC8vIE5ldyBmdW5jdGlvbnMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgdG8g
c2V0IHBhcmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQorICAgICAgICAqIEBzaW5jZSAz
LjINCisgICAgICAgICogQHBhcmFtIFRoZSB3aWRnZXQgaWRlbnRpZmllcg0KKyAgICAgICAgKiBA
cGFyYW0gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW1hdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9p
ZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZpcnR1YWwgdm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVm
czo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgY29uc3QgVERlc0MmIGFWYWx1ZSkgPSAwOw0K
Kw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0
aGUgYnJvd3NlciBlbmdpbmUNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFy
YW0gVGhlIHdpZGdldCBwYXJhbWV0ZXIgYVBhcmFtDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFs
dWUgZm9yIHRoZSBwYXJhbWF0ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAq
Lw0KKyAgICAgICAgdmlydHVhbCB2b2lkIFNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRn
ZXRQYXJhbXMgYVBhcmFtLCBUVWludCBhVmFsdWUpID0gMDsNCisgICAgfTsNCisjZW5kaWYgLy9S
RF9CUk9XU0VSX1dJREdFVFMNCiAjZW5kaWYgICAgICAvLyBCUkNUTElOVEVSRkFDRV9IDQogDQog
Ly8gRW5kIG9mIEZpbGUNCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwCShy
ZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcAko
d29ya2luZyBjb3B5KQ0KQEAgLTc3LDYgKzc3LDkgQEANCiAjaW5jbHVkZSAiRmF2aWNvbi5oIg0K
ICNpbmNsdWRlICJVcmxSZXF1ZXN0SW5mby5oIg0KICNpbmNsdWRlICJUb29sQmFyLmgiDQorI2lm
ZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQor
I2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogI2lmZGVmIFJEXzMyX0JST1dTRVINCiAj
aW5jbHVkZSAiU21hcnRMaW5rSGFuZGxlci5oIg0KQEAgLTg3Niw2ICs4NzksMTcgQEANCiAgICAg
ICAgICAgICAgICAgVFBsdWdpbkNvbnRyb2wgcGx1Z2luQ29udHJvbCgqaVdlYktpdENvbnRyb2wp
Ow0KICAgICAgICAgICAgICAgICBwbHVnaW5Db250cm9sLkhhbmRsZVBsdWdpbkNvbW1hbmRMKGFD
b21tYW5kKTsNCiAgICAgICAgICAgICAgICAgfQ0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRT
DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAg
IENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5z
aW9uKCk7DQorICAgICAgICAgICAgICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAgICAgICAgICAgICAg
ICAgew0KKyAgICAgICAgICAgICAgICAgICAgd2RndEV4dC0+T3B0aW9uc01lbnVJdGVtU2VsZWN0
ZWQoYUNvbW1hbmQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBi
cmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0K
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0gICAvLyBlbmQg
b2Ygc3dpdGNoDQpAQCAtMTEwNiw2ICsxMTIwLDEzIEBADQogICAgIC8vIEJhc2Ugd2UncmUgdXNp
bmcgZm9yIHRoZSBwbHVnLWlucw0KICAgICBUUGx1Z2luQ29udHJvbCBwbHVnaW5Db250cm9sKCpp
V2ViS2l0Q29udHJvbCk7DQogICAgIHBsdWdpbkNvbnRyb2wuQWRkUGx1Z2luT3B0aW9uTWVudUl0
ZW1zTChhTWVudVBhbmUsIFRCckN0bERlZnM6OkVDb21tYW5kSWRQbHVnaW5CYXNlLCBhQWZ0ZXIp
Ow0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdk
Z3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0
RXh0KQ0KKyAgICAgICAgew0KKyAgICAgICAgd2RndEV4dC0+QWRkT3B0aW9uTWVudUl0ZW1zTChh
TWVudVBhbmUpOw0KKyAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAg
ICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0yMzYzLDQgKzIzODQsMTYgQEAN
CiAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdF
VFMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0
ZW5zaW9uDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorTVdpZGdldEV4dGVu
c2lvbiogQ0JyQ3RsOjpDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdp
ZGdldENhbGxiYWNrKQ0KKyAgICB7DQorICAgIHJldHVybiBpV2ViS2l0Q29udHJvbC0+Q3JlYXRl
V2lkZ2V0RXh0ZW5zaW9uTChhV2lkZ2V0Q2FsbGJhY2spOw0KKyAgICAgICAgfQ0KKw0KKyNlbmRp
ZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIC8vICBFbmQgb2YgRmlsZQ0KSW5kZXg6IFdlYktpdC9C
cm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJv
d3NlclZpZXcvaW5jL3dlYmtpdGJyaWRnZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQv
QnJvd3NlclZpZXcvaW5jL3dlYmtpdGJyaWRnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTUsNiAr
NTUsMTIgQEANCiBjbGFzcyBDV2ViS2l0Q29udHJvbDsNCiBjbGFzcyBNQnJDdGxEaWFsb2dzUHJv
dmlkZXI7DQogY2xhc3MgTUJyQ3RsTG9hZEV2ZW50T2JzZXJ2ZXI7DQorI2lmZGVmICBSRF9CUk9X
U0VSX1dJREdFVFMNCituYW1lc3BhY2UgS0pTew0KKyAgICBjbGFzcyBFeGVjU3RhdGU7DQorICAg
IGNsYXNzIE9iamVjdEltcDsNCit9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQog
Ly9DT05TVEFOVFMNCiANCkBAIC05MCw2ICs5Niw5IEBADQogICAgICAgICB2b2lkIENvbnN0cnVj
dEwoKTsNCiANCiAgICAgcHVibGljOiAvLyBNZXRob2RzIEZyb20gTVdlYkNsaWVudEJyaWRnZQ0K
KyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICBLSlM6Ok9iamVjdEltcCogY3Jl
YXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKTsNCisjZW5kaWYgLy9SRF9CUk9X
U0VSX1dJREdFVFMNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBDaGlsZEZyYW1lcw0KSW5k
ZXg6IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJvbC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmgJKHJldmlzaW9uIDE3MDY5
KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJvbC5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtOTAsNiArOTAsOSBAQA0KIGNsYXNzIENIdHRwQ2FjaGVNYW5hZ2VyOw0KIGNsYXNz
IENTdGF0aWNJbWFnZURlY29kZXI7DQogY2xhc3MgQ1BsdWdpbkNvbnRlbnRQbGF5ZXI7DQorI2lm
ZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitjbGFzcyBDV2lkZ2V0RXh0ZW5zaW9uOw0KKyNlbmRp
ZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0KIC8vIENMQVNTIERFQ0xBUkFUSU9ODQogLyoqDQpA
QCAtMzExLDYgKzMxNCwxNiBAQA0KICAgICAgICAgKi8NCiAgICAgICAgIENXZWJLaXRWaWV3KiBD
cmVhdGVXaW5kb3coY29uc3QgVERlc0MmIGFGcmFtZU5hbWUsVEJvb2wgYVVzZXJJbml0aWF0ZWQp
Ow0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAg
ICogQ3JlYXRlV2lkZ2V0RXh0ZW5zaW9uDQorICAgICAgICAqIFB1cnBvc2U6IENyZWF0ZXMgdGhl
IHdpZGdldCBleHRlbnNpb24gb2JqZWN0DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHBhcmFtIE1XaWRnZXRDYWxsYmFjayogYVdpZGdldENhbGxiYWNrDQorICAgICAgICAqIEBy
ZXR1cm4gTVdpZGdldEV4dGVuc2lvbioNCisgICAgICAgICovDQorICAgICAgICBNV2lkZ2V0RXh0
ZW5zaW9uKiBDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENh
bGxiYWNrKSA7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogICAgICAgICAvKioN
CiAgICAgICAgICogRmluZFdpbmRvd05hbWVkDQpAQCAtNDkzLDcgKzUwNiwxNiBAQA0KICAgICAg
ICAgKi8NCiAgICAgICAgIENCckN0bCYgQnJDdGwoKSBjb25zdCB7IHJldHVybiAqaUJyQ3RsOyB9
DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgICAgIC8qKg0KKyAgICAgICAg
KiBBc3NvY2lhdGVkIGJyb3dzZXIgY29udHJvbA0KKyAgICAgICAgKiBAc2luY2UgMy4wDQorICAg
ICAgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gQnJDdGwNCisgICAgICAgICovDQorICAgICAg
ICBDV2lkZ2V0RXh0ZW5zaW9uKiBXaWRnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBpV2lk
Z2V0RXh0ZW5zaW9uOyB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQorDQorICAgICAg
ICAvKioNCiAgICAgICAgICogUmVzb3VyY2UgbG9hZGVyIHNldHRpbmdzIGNvbnRyb2xsZXINCiAg
ICAgICAgICogQHNpbmNlIDMuMA0KICAgICAgICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlDQpAQCAt
ODkzLDYgKzkxNSw5IEBADQogICAgICAgICAvLyBwbHVnaW4gcGxheWVyDQogICAgICAgICBDUGx1
Z2luQ29udGVudFBsYXllciogICAgICAgaVBsdWdpblBsYXllcjsNCiAjZW5kaWYNCisjaWZkZWYg
IFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogaVdpZGdldEV4
dGVuc2lvbjsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfTsNCiANCiAjZW5k
aWYgICAgICAvLyBXRUJLSVRDT05UUk9MX0gNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5j
L1dpZGdldEV4dGVuc2lvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2lu
Yy9XaWRnZXRFeHRlbnNpb24uaAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcv
aW5jL1dpZGdldEV4dGVuc2lvbi5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzNDggQEANCisv
Kg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRn
ZXRJbnRlcmZhY2UuaA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldElu
dGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0K
KyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVy
aWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRl
ciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAg
Tm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyog
IGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcs
IGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0
dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNv
IGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUg
ZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2Vu
dCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQor
DQorI2lmbmRlZiBfX1dJREdFVEVOR0lORUNBTExCQUNLDQorI2RlZmluZSBfX1dJREdFVEVOR0lO
RUNBTExCQUNLDQorDQorLy8gIElOQ0xVREVTDQorI2luY2x1ZGUgPGUzMmJhc2UuaD4NCisjaW5j
bHVkZSA8ZTMyaGFzaHRhYi5oPg0KKyNpbmNsdWRlIDxCckN0bEludGVyZmFjZS5oPg0KKyNpbmNs
dWRlICJXaWRnZXRFbmdpbmVCcmlkZ2UuaCINCisNCisvLyBDT05TVEFOVFMNCisNCisvLyBNQUNS
T1MNCisNCisvLyBEQVRBIFRZUEVTDQorDQorLy8gRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8v
IEZPUldBUkQgREVDTEFSQVRJT04NCitjbGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2lkZ2V0
UHJlZmVyZW5jZXM7DQorY2xhc3MgVFdpZGdldFJlbmRlcmVyOw0KK2NsYXNzIENFaWtNZW51UGFu
ZTsNCisNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKy8qKg0KKyogIENXaWRnZXRFeHRlbnNpb24N
CisqDQorKiAgQGxpYiBicm93c2VyZW5naW5lLmRsbA0KKyogIEBzaW5jZSAzLjINCisqLw0KK2Ns
YXNzIENXaWRnZXRFeHRlbnNpb246IHB1YmxpYyBDQmFzZSwgcHVibGljIE1XaWRnZXRFbmdpbmVD
YWxsQmFjaywgcHVibGljIE1XaWRnZXRFeHRlbnNpb24NCisgICAgew0KKyAgICBwdWJsaWM6DQor
ICAgICAgICAvKioNCisgICAgICAgICogQ29uc3RydWN0b3INCisgICAgICAgICogQHNpbmNlIDMu
Mg0KKyAgICAgICAgKiBAcGFyYW0gV2Via2l0Vmlldw0KKyAgICAgICAgKiBAcGFyYW0gV2lkZ2V0
Q2FsbGJhY2sgaW50ZXJmYWNlDQorICAgICAgICAqIEByZXR1cm4gQ1dpZGdldEV4dGVuc2lvbiBv
YmplY3QuDQorICAgICAgICAqLw0KKyAgICAgICAgc3RhdGljIENXaWRnZXRFeHRlbnNpb24qIE5l
d0woQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3LE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxi
YWNrKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBEZXN0cnVjdG9yLg0KKyAgICAgICAg
Ki8NCisgICAgICAgIHZpcnR1YWwgfkNXaWRnZXRFeHRlbnNpb24oKTsNCisNCisgICAgcHVibGlj
Og0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBBZGRPcHRpb25NZW51SXRlbXNMDQor
ICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSBvcHRpb25zIG1lbnUN
CisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLyAgICAgICAgDQorICAgICAgICB2
b2lkIEFkZE9wdGlvbk1lbnVJdGVtc0woIENFaWtNZW51UGFuZSYgYU1lbnVQYW5lICk7DQorICAg
ICAgICANCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT3B0aW9uc01lbnVJdGVtU2Vs
ZWN0ZWQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIG9wdGlv
bnMgbWVudSBjb21tYW5kDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisg
ICAgICAgIHZvaWQgT3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQoIFRJbnQgYUNvbW1hbmQgKTsNCisN
CisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT25IaWRlU2VsZWN0ZWQNCisgICAgICAg
ICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAg
ICAgICB2b2lkIE9uSGlkZVNlbGVjdGVkKCk7DQorICAgICAgICANCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBNZXRob2QgT25SZW1vdmVTZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT25SZW1v
dmVTZWxlY3RlZCgpOw0KKyAgICAgICAgDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9k
IE9uU2hvd1NlbGVjdGVkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFt
IFRoZSB3aWRnZXQgaWRlbnRpZmllcg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHZhbHVlIGZvciB0
aGUgcGFyYW1hdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAg
ICAgIHZvaWQgT25TaG93U2VsZWN0ZWQoKTsNCisNCisgICAgcHVibGljOiAvLyBGcm9tIE1XaWRn
ZXRFbmdpbmVDYWxsQmFjaw0KKyAgICANCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2Qg
T3BlbkFwcGxpY2F0aW9uDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFt
IFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBvcGVuDQorICAgICAgICAqIEByZXR1cm4g
dm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT3BlbkFwcGxpY2F0aW9uKGNvbnN0IFRE
ZXNDJiBhQXBwTmFtZSwgY29uc3QgVERlc0MmIGFQYXJhbSk7DQorICAgIA0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCBPcGVuVXJsDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAg
ICAgICogQHBhcmFtIFRoZSB1cmwgdG8gb3Blbg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisg
ICAgICAgICovDQorICAgICAgICB2b2lkIE9wZW5VcmwoY29uc3QgVERlc0MmIGFVcmwpOw0KKw0K
KyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBQcmVmZXJlbmNlRm9yS2V5DQorICAgICAg
ICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSBwcmVmZXJlbmNlIGtleQ0KKyAg
ICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVuY2UgdmFsdWUNCisgICAgICAgICogQHJldHVybiB2
b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgVEludCBQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFRE
ZXNDJiBhS2V5LCBUUHRyQyYgYVZhbHVlKTsNCisgICAgICAgIA0KKyAgICAgICAgLyoqDQorICAg
ICAgICAqIE1ldGhvZCBQcmVwYXJlRm9yVHJhbnNpdGlvbg0KKyAgICAgICAgKiBAc2luY2UgMy4y
DQorICAgICAgICAqIEBwYXJhbSBUaGUgdHJhbnNpdGlvbiB0eXBlDQorICAgICAgICAqIEByZXR1
cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgUHJlcGFyZUZvclRyYW5zaXRpb24o
Y29uc3QgVERlc0MmIGFUcmFuc2l0aW9uKTsNCisgICAgICAgIA0KKyAgICAgICAgLyoqDQorICAg
ICAgICAqIE1ldGhvZCBQZXJmb3JtVHJhbnNpdGlvbg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgUGVyZm9y
bVRyYW5zaXRpb24oKTsNCisgICAgICAgIA0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhv
ZCBTZXRQcmVmZXJlbmNlRm9yS2V5DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICog
QHBhcmFtIFRoZSBwcmVmZXJlbmNlIGtleQ0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVu
Y2UgdmFsdWUNCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAg
dm9pZCBTZXRQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXNDJiBhS2V5LCBjb25zdCBURGVzQyYg
YVZhbHVlKTsNCisgICAgICAgIA0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBBZGRP
cHRpb25zTWVudUl0ZW0NCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0g
TmFtZSBvZiBvcHRpb25zIG1lbnUgaXRlbSAgICAgICAgDQorICAgICAgICAqIEByZXR1cm4gY29t
bWFuZCBpZA0KKyAgICAgICAgKi8NCisgICAgICAgIFRJbnQgQWRkT3B0aW9uc01lbnVJdGVtKGNv
bnN0IFREZXNDJiBhTmFtZSk7DQorICAgICAgICANCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBN
ZXRob2QgQ2xlYXJPcHRpb25zTWVudQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAq
IEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQ2xlYXJPcHRpb25zTWVu
dSgpOw0KKyAgICAgICAgDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIEdldFdpZGdl
dElkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiBUaGUgd2lkZ2V0
IGlkZW50aWZpZXINCisgICAgICAgICovDQorICAgICAgICBUSW50IEdldFdpZGdldElkKCkgeyBy
ZXR1cm4gaVdpZGdldElkOyB9DQorICAgICAgICANCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBN
ZXRob2QgU2V0U2Nyb2xsQmFyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBh
cmFtIFRCb29sIHZpc2libGUNCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0K
KyAgICAgICAgdm9pZCBTZXRTY3JvbGxCYXIoVEJvb2wgYVZpc2libGUpOw0KKw0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCBTZXROYXZpZ2F0aW9uRW5hYmxlZA0KKyAgICAgICAgKiBA
c2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUQm9vbCBlbmFibGVkDQorICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0TmF2aWdhdGlvbkVuYWJs
ZWQoVEJvb2wgYUVuYWJsZSk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFNl
dE9wdGlvbnNNZW51TGlzdGVuZXINCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBA
cGFyYW0gQ1dpZGdldEV2ZW50SGFuZGxlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAg
ICAgICovDQorICAgICAgICB2b2lkIFNldE9wdGlvbnNNZW51TGlzdGVuZXIoQ1dpZGdldEV2ZW50
SGFuZGxlciogYUNhbGxiYWNrKTsNCisgICAgICAgIA0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IE1ldGhvZCBTZXRPbkhpZGVMaXN0ZW5lcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAg
ICAqIEBwYXJhbSBDV2lkZ2V0RXZlbnRIYW5kbGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0K
KyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0T25IaWRlTGlzdGVuZXIoQ1dpZGdldEV2ZW50
SGFuZGxlciogYUNhbGxiYWNrKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2Qg
U2V0T25SZW1vdmVMaXN0ZW5lcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBw
YXJhbSBDV2lkZ2V0RXZlbnRIYW5kbGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAg
ICAgKi8NCisgICAgICAgIHZvaWQgU2V0T25SZW1vdmVMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5k
bGVyKiBhQ2FsbGJhY2spOw0KKyAgICAgICAgDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIFNldE9uU2hvd0xpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICog
QHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAg
ICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPblNob3dMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5k
bGVyKiBhQ2FsbGJhY2spOw0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICAvKioNCisgICAgICAg
ICogTWV0aG9kIFdpZGdldFJlbmRlcmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHJldHVybiB3aWRnZXQgcmVuZGVyZXINCisgICAgICAgICovDQorICAgICAgICBUV2lkZ2V0
UmVuZGVyZXIqIFdpZGdldFJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gaVdpZGdldFJlbmRlcmVy
OyB9DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFdpZGdldEVuZ2luZUJyaWRn
ZXQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHdpZGdldCBlbmdp
bmUgYnJpZGdlDQorICAgICAgICAqLw0KKyAgICAgICAgTVdpZGdldEVuZ2luZUJyaWRnZSYgV2lk
Z2V0RW5naW5lQnJpZGdlKCkgY29uc3QgeyByZXR1cm4gKmlXaWRnZXRFbmdpbmVCcmlkZ2U7IH0N
CisgICAgICAgIA0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBOYXZpZ2F0aW9uRW5h
YmxlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gYm9vbA0KKyAg
ICAgICAgKi8NCisgICAgICAgIFRCb29sIE5hdmlnYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gaU5hdmlnYXRpb25FbmFibGVkOyB9DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIFdpZGdldEJhc2VQYXRoDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJl
dHVybiBURGVzQyB3aWRnZXQgYmFzZSBwYXRoDQorICAgICAgICAqLw0KKyAgICAgICAgVERlc0Mm
IFdpZGdldEJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gKmlXaWRnZXRCYXNlUGF0aDsgfQ0KKw0K
Kw0KKyAgICBwdWJsaWM6IC8vIE5ldyBmdW5jdGlvbnMNCisgICAgICAgIA0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJvd3NlciBlbmdp
bmUNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHdpZGdldCBp
ZGVudGlmaWVyDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBwYXJhbWF0ZXIN
CisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRQ
YXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgY29uc3QgVERlc0Mm
IGFWYWx1ZSk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIHRvIHNldCBwYXJh
bWV0ZXJzIGluIHRoZSBicm93c2VyIGVuZ2luZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAg
ICAgICAqIEBwYXJhbSBUaGUgd2lkZ2V0IHBhcmFtZXRlciBhUGFyYW0NCisgICAgICAgICogQHBh
cmFtIFRoZSB2YWx1ZSBmb3IgdGhlIHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQN
CisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxX
aWRnZXRQYXJhbXMgYVBhcmFtLCBUVWludCBhVmFsdWUpOw0KKw0KKyAgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBNZXRob2QgY3JlYXRlV2lkZ2V0T2JqZWN0DQorICAgICAgICAqIEBzaW5jZSAzLjIN
CisgICAgICAgICogQHBhcmFtIA0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICov
DQorICAgICAgICBLSlM6Ok9iamVjdEltcCogY3JlYXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0
YXRlKiBleGVjKTsNCisNCisgICAgcHJpdmF0ZTogICAgICAgICAgDQorICAgICAgICAgLyoqDQor
ICAgICAgICAqIE1ldGhvZCBMb2FkV2lkZ2V0RW5naW5lRGxsTA0KKyAgICAgICAgKiBAc2luY2Ug
My4yICAgICAgICANCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAg
ICAgdm9pZCBMb2FkV2lkZ2V0RW5naW5lRGxsTCgpOw0KKw0KKyAgICAgICAgIC8qKg0KKyAgICAg
ICAgKiBNZXRob2QgQ3JlYXRlQXBwSGFzaFRhYmxlTA0KKyAgICAgICAgKiBAc2luY2UgMy4yICAg
ICAgICANCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9p
ZCBDcmVhdGVBcHBIYXNoVGFibGVMKCk7DQorDQorICAgICAgICAvKg0KKyAgICAgICAgKiBNZXRo
b2QgTGF1bmNoQXBwbGljYXRpb25MDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICog
QHBhcmFtIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBvcGVuDQorICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgTGF1bmNoQXBwbGljYXRpb25M
KGNvbnN0IFRVaWQmIGFVaWQsIGNvbnN0IFREZXNDJiBhUGFyYW0pOw0KKw0KKyAgICBwcm90ZWN0
ZWQ6DQorICAgICAgICAvKioNCisgICAgICAgICogMm5kIHBoYXNlIGNvbnN0cnVjdG9yLg0KKyAg
ICAgICAgKi8gICAgDQorICAgICAgICB2b2lkIENvbnN0cnVjdEwoKTsNCisgICAgICAgIA0KKyAg
ICAgICAgLyoqDQorICAgICAgICAqIEMrKyBjb25zdHJ1Y3Rvci4NCisgICAgICAgICovDQorICAg
ICAgICBDV2lkZ2V0RXh0ZW5zaW9uKCBDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsTVdpZGdldENh
bGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2sgKTsNCisNCisgICAgICAgIA0KKyAgICBwcml2YXRlOg0K
KyAgICAgICAgQ1dlYktpdFZpZXcqIGlXZWJLaXRWaWV3OyAgICAgICAgICAgICAgICAgICAgLy9u
b3Qgb3duZWQNCisNCisgICAgICAgIENXaWRnZXRQcmVmZXJlbmNlcyogaVByZWZlcmVuY2VzOw0K
KyAgICAgICAgVFdpZGdldFJlbmRlcmVyKiBpV2lkZ2V0UmVuZGVyZXI7DQorDQorICAgICAgICBz
dHJ1Y3QgVE1lbnVJdGVtDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIEhCdWZDKiBpVGV4
dDsNCisgICAgICAgICAgICBUSW50IGlDbWRJZDsNCisgICAgICAgICAgICB9Ow0KKw0KKyAgICAg
ICAgUkFycmF5PFRNZW51SXRlbT4gaU1lbnVJdGVtczsgICAgICAgICAgICAgICAgDQorICAgICAg
ICANCisgICAgICAgIFRJbnQgICAgaVdpZGdldElkOyAgICAgICAgDQorICAgICAgICBUQm9vbCAg
IGlOYXZpZ2F0aW9uRW5hYmxlZDsNCisgICAgICAgIFRCb29sICAgaVBhZ2VTY2FsZXJXYXNFbmFi
bGVkOw0KKyAgICAgICAgSEJ1ZkMqICBpV2lkZ2V0QmFzZVBhdGg7DQorDQorICAgICAgICBNV2lk
Z2V0RW5naW5lQnJpZGdlKiBpV2lkZ2V0RW5naW5lQnJpZGdlOw0KKyAgICAgICAgTVdpZGdldENh
bGxiYWNrKiBpV2lkZ2V0Q2FsbGJhY2s7DQorDQorICAgICAgICBSUHRySGFzaE1hcDxURGVzQyxU
SW50PiBpQXBwVWlkTWFwOw0KKyAgICAgICAgUkxpYnJhcnkgaUxpYnJhcnk7ICAgICAgICANCisN
CisgICAgfTsNCisNCisjZW5kaWYNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdl
dFByZWZlcmVuY2VzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dp
ZGdldFByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L2lu
Yy9XaWRnZXRQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw3NCBAQA0KKy8q
DQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktpdFdpZGdl
dEludGVyZmFjZS5oDQorKiAgUGFydCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50
ZXJmYWNlDQorKiAgRGVzY3JpcHRpb24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQor
KiAgQ29weXJpZ2h0IChjKSAyMDA0IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJp
YWwsIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVy
IHByb2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBO
b2tpYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAg
aW5jbHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywg
YW55DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0
ZW4gY29uc2VudCBvZg0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28g
Y29udGFpbnMgY29uZmlkZW50aWFsDQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBk
aXNjbG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50
IG9mIE5va2lhIENvcnBvcmF0aW9uLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisN
CisjaWZuZGVmIF9fV0lER0VURU5HSU5FUFJFRkVSRU5DRVMNCisjZGVmaW5lIF9fV0lER0VURU5H
SU5FUFJFRkVSRU5DRVMNCisNCisvLyAgSU5DTFVERVMNCisjaW5jbHVkZSA8ZTMyYmFzZS5oPg0K
KyNpbmNsdWRlIDxlMzJoYXNodGFiLmg+DQorLy8gQ09OU1RBTlRTDQorDQorLy8gTUFDUk9TDQor
DQorLy8gREFUQSBUWVBFUw0KKw0KKy8vIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyBGT1JX
QVJEIERFQ0xBUkFUSU9ODQorY2xhc3MgQ1dpZGdldEV4dGVuc2lvbjsNCisNCisvLyBDTEFTUyBE
RUNMQVJBVElPTg0KKy8qKg0KKyogIENXaWRnZXRQcmVmZXJlbmNlcw0KKyoNCisqICBAbGliIHdp
ZGdldGVuZ2luZS5kbGwNCisqICBAc2luY2UgMy4xDQorKi8NCitjbGFzcyBDV2lkZ2V0UHJlZmVy
ZW5jZXMgOiBwdWJsaWMgQ0Jhc2UNCisgICAgew0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICBz
dGF0aWMgQ1dpZGdldFByZWZlcmVuY2VzKiBOZXdMKENXaWRnZXRFeHRlbnNpb24mIGFXaWRnZXRF
eHRlbnNpb24pOw0KKyAgICAgICAgc3RhdGljIENXaWRnZXRQcmVmZXJlbmNlcyogTmV3TEMoQ1dp
ZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbik7DQorICAgICAgICB+Q1dpZGdldFByZWZl
cmVuY2VzKCk7DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIHZvaWQgTG9hZEwoKTsNCisgICAg
ICAgIHZvaWQgU2F2ZUwoKTsNCisgICAgICAgIFRJbnQgUHJlZmVyZW5jZUwoY29uc3QgVERlc0Mm
IGFOYW1lLCBUUHRyQyYgYVZhbHVlKTsNCisgICAgICAgIHZvaWQgU2V0UHJlZmVyZW5jZUwoY29u
c3QgVERlc0MmIGFOYW1lLCBjb25zdCBURGVzQyYgYVZhbHVlKTsNCisNCisgICAgcHJvdGVjdGVk
Og0KKyAgICAgICAgdm9pZCBFbXB0eSgpOw0KKyAgICAgICAgdm9pZCBDcmVhdGVGaWxlUGF0aEwo
KTsNCisgICAgICAgIEhCdWZDKiBNYWtlS2V5TEMoY29uc3QgVERlc0MmIGFOYW1lKTsNCisNCisg
ICAgcHJvdGVjdGVkOg0KKyAgICAgICAgQ1dpZGdldFByZWZlcmVuY2VzKENXaWRnZXRFeHRlbnNp
b24mIGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICAgICAgdm9pZCBDb25zdHJ1Y3RMKCk7DQorDQor
ICAgIHByaXZhdGU6DQorICAgICAgICBSUHRySGFzaE1hcDxURGVzQyxURGVzQz4gaU1hcDsNCisg
ICAgICAgIEhCdWZDKiBpRmlsZVBhdGg7DQorICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiBpV2lk
Z2V0RXh0ZW5zaW9uOyAvL25vdCBvd25lZA0KKw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KSW5kZXg6
IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0UmVuZGVyZXIuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0UmVuZGVyZXIuaAkocmV2aXNpb24gMCkNCisr
KyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFJlbmRlcmVyLmgJKHJldmlzaW9uIDApDQpA
QCAtMCwwICsxLDc4IEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5hbWUg
ICAgICAgIDogV2lkZ2V0RW5naW5lUmVuZGVyZXIuaA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5n
aW5lL1dlYktpdFdpZGdldEludGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9u
ICAgICA6IDIuMS4xDQorKg0KKyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlv
bi4NCisqICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJl
bGF0ZWQNCisqICBjb21wdXRlciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBj
b250cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2Vy
dmVkLiBDb3B5aW5nLA0KKyogIGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRp
bmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVp
cmVzIHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4g
VGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9u
IHdoaWNoIG1heSBub3QgYmUgZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHBy
aW9yIHdyaXR0ZW4gY29uc2VudCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KKyovDQorDQorI2lmbmRlZiBfX1dJREdFVEVOR0lORVJFTkRFUkVSDQorI2Rl
ZmluZSBfX1dJREdFVEVOR0lORVJFTkRFUkVSDQorDQorLy8gIElOQ0xVREVTDQorI2luY2x1ZGUg
PGUzMmJhc2UuaD4NCisvLyBDT05TVEFOVFMNCisNCisvLyBNQUNST1MNCisNCisvLyBEQVRBIFRZ
UEVTDQorDQorLy8gRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIEZPUldBUkQgREVDTEFSQVRJ
T04NCitjbGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2luZG93R2M7DQorY2xhc3MgQ0Zic0Jp
dG1hcDsNCisNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKw0KKy8qKg0KKyogIFRXaWRnZXRSZW5k
ZXJlcg0KKyoNCisqICBAbGliIHdpZGdldGVuZ2luZS5kbGwNCisqICBAc2luY2UgMy4xDQorKi8g
ICAgDQorY2xhc3MgVFdpZGdldFJlbmRlcmVyDQorICAgIHsNCisNCisgICAgcHVibGljOg0KKyAg
ICAgICAgVFdpZGdldFJlbmRlcmVyKENXZWJLaXRWaWV3JiBhV2ViS2l0Vmlldyk7DQorICAgICAg
ICB+VFdpZGdldFJlbmRlcmVyKCk7DQorDQorICAgIHB1YmxpYzogICAgDQorICAgICAgICB2b2lk
IFByZXBhcmVGb3JUcmFuc2l0aW9uTChjb25zdCBURGVzQyYgYVRyYW5zaXRpb24pOw0KKyAgICAg
ICAgdm9pZCBQZXJmb3JtVHJhbnNpdGlvbkwoKTsNCisgICAgICAgIA0KKyAgICBwdWJsaWM6DQor
ICAgICAgICB2b2lkIFRyYW5zaXRpb25DYigpOw0KKyAgICAgICAgVEJvb2wgVHJhbnNpdGlvbklu
UHJvZ3Jlc3MoKSB7IHJldHVybiBpVHJhbnNpdGlvbkJpdG1hcCE9MDsgfQ0KKyAgICAgICAgdm9p
ZCBEcmF3VHJhbnNpdGlvbihDV2luZG93R2MmIGdjLCBDRmJzQml0bWFwKiBhQ3VycmVudEJpdG1h
cCk7DQorDQorICAgIHByb3RlY3RlZDoNCisgICAgICAgIHZvaWQgQ3JlYXRlVHJhbnNpdGlvbkJp
dG1hcEwoKTsNCisgICAgICAgIHZvaWQgRGVzdHJveVRyYW5zaXRpb25CaXRtYXAoKTsNCisgICAg
ICAgIHZvaWQgQ3JlYXRlRmFkZU1hc2tMKCk7DQorICAgICAgICB2b2lkIERlc3Ryb3lGYWRlTWFz
aygpOw0KKyAgICAgICAgdm9pZCBEcmF3RmFkZU1hc2tMKCk7DQorDQorICAgIHByaXZhdGU6DQor
ICAgICAgICBDV2ViS2l0VmlldyogaVdlYktpdFZpZXc7DQorICAgICAgICBDRmJzQml0bWFwKiBp
VHJhbnNpdGlvbkJpdG1hcDsNCisgICAgICAgIENGYnNCaXRtYXAqIGlGYWRlTWFzazsNCisgICAg
ICAgIENQZXJpb2RpYyogaVRyYW5zaXRpb25UaW1lcjsNCisgICAgICAgIFRJbnQgaVRyYW5zaXRp
b25Db3VudDsgICAgICAgIA0KKyAgICAgICAgICAgICAgICANCisgICAgfTsNCisgICAgICAgIA0K
KyNlbmRpZg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5kbGVy
LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9LZXlFdmVu
dEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTQ1LDcgKzU0NSw3IEBADQogICAgICAg
ICAgICAgew0KICAgICAgICAgICAgIGlmKCBpV2ViS2l0Vmlldy0+Rm9jdXNlZEVsZW1lbnRUeXBl
KCkgPT0gVEJyQ3RsRGVmczo6RUVsZW1lbnROb25lDQogICAgICAgICAgICAgICAgICYmIGFFdmVu
dENvZGUgPT0gRUV2ZW50S2V5RG93biAmJiBhS2V5RXZlbnQuaVJlcGVhdHMgPT0gMA0KLSAgICAg
ICAgICAgICAgICAvKiYmIGlXZWJLaXRWaWV3LT5XZWJLaXRDb250cm9sKCkuQnJDdGwoKS5DYXBh
YmlsaXRpZXMoKSAmIFRCckN0bERlZnM6OkVDYXBhYmlsaXR5VG9vbEJhciovICkNCisgICAgICAg
ICAgICAgICAgJiYgaVdlYktpdFZpZXctPldlYktpdENvbnRyb2woKS5CckN0bCgpLkNhcGFiaWxp
dGllcygpICYgVEJyQ3RsRGVmczo6RUNhcGFiaWxpdHlUb29sQmFyICkNCiAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICBpV2ViS2l0Vmlldy0+TGF1bmNoVG9vbEJhckwoKTsNCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEVLZXlXYXNDb25zdW1lZDsNCkluZGV4OiBXZWJLaXQvQnJv
d3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJv
d3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktp
dC9Ccm93c2VyVmlldy9zcmMvd2Via2l0YnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTUx
LDYgKzUxLDkgQEANCiAjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCINCiAjaW5jbHVkZSAi
TG9hZGVyVXRpbHMuaCINCiAjaW5jbHVkZSAiV2ViS2l0TG9nZ2VyLmgiDQorI2lmZGVmICBSRF9C
Uk9XU0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQogDQogLy9DT05TVEFOVFMNCiBfTElUKEtEYXRlU3RyaW5nLCAi
JS1CJTowJUolOjElVCU6MiVTJS4lKkM0JTozJStCIik7DQpAQCAtMTM1MCw0ICsxMzUzLDE1IEBA
DQogICAgIH0NCiAgIH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK0tKUzo6T2Jq
ZWN0SW1wKiBDV2ViS2l0QnJpZGdlOjpjcmVhdGVXaWRnZXRPYmplY3QoS0pTOjpFeGVjU3RhdGUq
IGV4ZWMpDQorICAgIHsNCisgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IGlGcmFtZS0+
V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKS5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgaWYo
d2RndEV4dCkNCisgICAgICAgew0KKyAgICAgICByZXR1cm4gd2RndEV4dC0+Y3JlYXRlV2lkZ2V0
T2JqZWN0KGV4ZWMpOw0KKyAgICAgICB9DQorICAgIHJldHVybiAwOw0KKyAgICB9DQorI2VuZGlm
IC8vUkRfQlJPV1NFUl9XSURHRVRTDQogLy8gZW5kIG9mIGZpbGUNCkluZGV4OiBXZWJLaXQvQnJv
d3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jy
b3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9sLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2Vi
S2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTgxLDYgKzgxLDkgQEANCiAjaW5jbHVkZSAiV2ViQ29yZUhpc3RvcnkuaCINCiAjaW5jbHVkZSAi
SHR0cENhY2hlTWFuYWdlci5oIg0KICNpbmNsdWRlICJTdGF0aWNJbWFnZURlY29kZXIuaCINCisj
aWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCIN
CisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAjaWZkZWYgUkRfMzJfQlJPV1NFUg0K
ICNpbmNsdWRlICJQbHVnaW5Db250ZW50UGxheWVyLmgiDQpAQCAtNjI3LDYgKzYzMCw5IEBADQog
DQogICAgIC8vIGNsZWF1cCB0aGUgc3RhdGljIG9iamVjdA0KICAgICBDU3RhdGljT2JqZWN0Q29u
dGFpbmVyOjpJbnN0YW5jZSgpLkRlcmVmKCk7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMN
CisgICAgZGVsZXRlIGlXaWRnZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURH
RVRTDQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTIwOTAsNiArMjA5
NiwyMiBAQA0KICAgICAgICAgQ1dlYkNvcmVCcmlkZ2U6OlNldERlZmVyc1RpbWVycyggRUZhbHNl
ICk7DQogICAgICAgICB9DQogICAgIH0NCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dlYktpdENvbnRyb2w6OkNyZWF0ZVdpZGdldEV4
dGVuc2lvbg0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK01XaWRnZXRFeHRl
bnNpb24qIENXZWJLaXRDb250cm9sOjpDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxs
YmFjayYgYVdpZGdldENhbGxiYWNrKQ0KKyAgICB7DQorICAgIGlmKCAhaVdpZGdldEV4dGVuc2lv
biApDQorICAgICAgICB7DQorICAgICAgICBpV2lkZ2V0RXh0ZW5zaW9uID0gQ1dpZGdldEV4dGVu
c2lvbjo6TmV3TCgqaVdlYktpdFZpZXcsYVdpZGdldENhbGxiYWNrKTsNCisgICAgICAgIH0NCisg
ICAgUGx1Z2luSGFuZGxlcigpLkxvYWRQbHVnaW5zU3luY0woKTsNCisgICAgcmV0dXJuIGlXaWRn
ZXRFeHRlbnNpb247DQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAjaWZk
ZWYgUkRfMzJfQlJPV1NFUg0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENhbGxlZCB3
aGVuIHVzZXIgY2xpY2tzIGEgcGx1Z2luIHdoaWNoIGlzIGFibGUgdG8gYWNjZXB0IHVzZXIgaW5w
dXQsDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5jcHAJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5jcHAJKHdvcmtp
bmcgY29weSkNCkBAIC02MCw2ICs2MCwxMSBAQA0KICNpbmNsdWRlICJXZWJLaXRTdXJmYWNlLmgi
DQogI2luY2x1ZGUgIldlYktpdFRvb2xCYXJJbnRlcmZhY2UuaCINCiAjaW5jbHVkZSAiVG9vbEJh
ci5oIg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorI2luY2x1ZGUgIldpZGdldEV4dGVu
c2lvbi5oIg0KKyNpbmNsdWRlICJXaWRnZXRFbmdpbmVCcmlkZ2UuaCINCisjaW5jbHVkZSAiV2lk
Z2V0UmVuZGVyZXIuaCINCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAjaW5jbHVkZSAi
RmVhdE1nci5oIg0KIA0KIA0KQEAgLTYxMyw2ICs2MTgsMTcgQEANCiAgICAgICAgIHJldHVybjsN
CiAgICAgICAgIH0NCiAgICAgU2V0Vmlld1Zpc2libGUoYVZpc2libGUpOw0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0
Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmKCB3ZGd0RXh0ICkNCisgICAgICAg
IHsNCisgICAgICAgIE1XaWRnZXRFbmdpbmVCcmlkZ2UqIHdkZ3RCcmlkZ2UgPSAmd2RndEV4dC0+
V2lkZ2V0RW5naW5lQnJpZGdlKCk7DQorICAgICAgICBpZiggd2RndEJyaWRnZSApDQorICAgICAg
ICAgICAgew0KKyAgICAgICAgICAgIHdkZ3RCcmlkZ2UtPlNldFdpZGdldFZpc2liaWxpdHkoYVZp
c2libGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VS
X1dJREdFVFMNCiAgICAgfQ0KIA0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTg3NCw2
ICs4OTAsMTcgQEANCiAgICAgLy8gcHV0IG9mZnNjcmVlbiBiaXRtYXAgb250byB0aGUgc2NyZWVu
DQogICBpUmVuZGVyVGFyZ2V0LT5GbGlwKCBSZWN0KCkuaVRsLCBnYyApOw0KIA0KKyNpZmRlZiAg
UkRfQlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2Vi
S2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAg
ICAgew0KKyAgICAgICAgVFdpZGdldFJlbmRlcmVyKiB3aWRnZXRSZW5kZXJlciA9IGlXZWJLaXRD
b250cm9sLT5XaWRnZXRFeHRlbnNpb24oKS0+V2lkZ2V0UmVuZGVyZXIoKTsNCisgICAgICAgIGlm
ICh3aWRnZXRSZW5kZXJlciAmJiB3aWRnZXRSZW5kZXJlci0+VHJhbnNpdGlvbkluUHJvZ3Jlc3Mo
KSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgd2lkZ2V0UmVuZGVyZXItPkRyYXdUcmFu
c2l0aW9uKGdjLCBPZmZzY3JlZW5CaXRtYXAoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAg
fQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICBpZiAoaUlzUGFnZVNjYWxlckVu
YWJsZWQpDQogICAgICAgICB7DQogICAgICAgICBpUGFnZVNjYWxlci0+RHJhdyggZ2MsYVJlY3Qg
KTsNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldEV4dGVuc2lvbi5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldEV4dGVuc2lvbi5jcHAJ
KHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRFeHRlbnNpb24u
Y3BwCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1MDQgQEANCisvKg0KKyogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRlcmZhY2UuY3BwDQor
KiAgUGFydCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVz
Y3JpcHRpb24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChj
KSAyMDA0IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBk
b2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBw
cm90ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJv
ZHVjaW5nLCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxs
IG9mIHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0K
KyogIE5va2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlk
ZW50aWFsDQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3Ro
ZXJzIHdpdGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBv
cmF0aW9uLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisvLyBJTkNMVURFIEZJ
TEVTDQorI2luY2x1ZGUgPGUzMnN0ZC5oPg0KKyNpbmNsdWRlIDxlaWtlbnYuaD4NCisjaW5jbHVk
ZSA8YXBnY2xpLmg+DQorI2luY2x1ZGUgPGFwZ3Rhc2suaD4NCisjaW5jbHVkZSA8YnJvd3Nlcmxh
dW5jaGVyLmg+DQorDQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNpbmNsdWRlICJX
aWRnZXRQcmVmZXJlbmNlcy5oIg0KKyNpbmNsdWRlICJXaWRnZXRSZW5kZXJlci5oIg0KKyNpbmNs
dWRlICJXaWRnZXRFdmVudEhhbmRsZXIuaCINCisjaW5jbHVkZSAiV2ViQ29yZVdpZGdldC5oIg0K
KyNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgiDQorI2luY2x1ZGUgIldlYktpdEN1cnNvci5oIg0K
KyNpbmNsdWRlICJXZWJLaXRGcmFtZS5oIg0KKyNpbmNsdWRlICJXZWJLaXRWaWV3LmgiDQorI2lu
Y2x1ZGUgIkJyQ3RsLmgiDQorI2luY2x1ZGUgIkJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIuaCINCisv
LyNpbmNsdWRlICJTY3JvbGxiYXIuaCINCisNCisvLyBFWFRFUk5BTCBEQVRBIFNUUlVDVFVSRVMN
CisNCisvLyBFWFRFUk5BTCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gQ09OU1RBTlRTDQor
DQorLy8gTUFDUk9TDQorDQorLy8gTE9DQUwgQ09OU1RBTlRTIEFORCBNQUNST1MNCitjb25zdCBU
SW50IEtPcHRpb25zQ21kSWQgPSA2MDAwOw0KK2NvbnN0IFRJbnQgS01heE9wdGlvbnNNZW51ID0g
MjU7DQorY29uc3QgVEludCBLTWF4T3B0aW9uc01lbnVJdGVtU2l6ZSA9IDI1NjsgLy9ieXRlcw0K
Kw0KKw0KKy8vLw0KK2NvbnN0IFRJbnQgS01lZGlhR2FsbGVyeVVpZCA9IDB4MTAxRjg1OTk7DQor
X0xJVChLTWVkaWFHYWxsZXJ5LCJtZWRpYWdhbGxlcnkiKTsNCitjb25zdCBUSW50IEtXZWJCcm93
c2VyVWlkID0gMHgxMDAwOEQzOTsNCitfTElUKEtXZWJCcm93c2VyLCJ3ZWJicm93c2VyIik7DQor
Y29uc3QgVEludCBLQ2FtQXBwRW5naW5lVWlkID0gMHgxMDFGODU3QTsNCitfTElUKEtDYW1BcHBF
bmdpbmUsImNhbWVyYSIpOw0KKw0KKy8vIE1PRFVMRSBEQVRBIFNUUlVDVFVSRVMNCit1c2luZyBu
YW1lc3BhY2UgS0pTOw0KKw0KKy8vIExPQ0FMIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEVuZ2luZUNhbGxCYWNrOjpOZXdMDQorLy8N
CisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRFeHRlbnNpb24qIENX
aWRnZXRFeHRlbnNpb246Ok5ld0woDQorICAgIENXZWJLaXRWaWV3JiBhV2ViS2l0VmlldywNCisg
ICAgTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2sgKQ0KKyAgICB7DQorICAgIENXaWRn
ZXRFeHRlbnNpb24qIHNlbGYgPSBuZXcgKEVMZWF2ZSkgQ1dpZGdldEV4dGVuc2lvbihhV2ViS2l0
VmlldyxhV2lkZ2V0Q2FsbGJhY2spOw0KKyAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHNlbGYpOw0K
KyAgICBzZWxmLT5Db25zdHJ1Y3RMKCk7DQorICAgIENsZWFudXBTdGFjazo6UG9wKCk7DQorICAg
IHJldHVybiBzZWxmOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENX
aWRnZXRFeHRlbnNpb246OkNXaWRnZXRFeHRlbnNpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldEV4dGVuc2lvbjo6Q1dpZGdldEV4dGVuc2lvbigNCisg
ICAgQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3LA0KKyAgICBNV2lkZ2V0Q2FsbGJhY2smIGFXaWRn
ZXRDYWxsYmFjayApDQorICAgIDppV2ViS2l0VmlldygmYVdlYktpdFZpZXcpLCAgICANCisgICAg
aVdpZGdldENhbGxiYWNrKCZhV2lkZ2V0Q2FsbGJhY2spDQorICAgIHsNCisgICAgfQ0KKw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjp+Q1dpZGdldEV4dGVu
c2lvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0RXh0
ZW5zaW9uOjp+Q1dpZGdldEV4dGVuc2lvbigpDQorICAgIHsNCisgICAgaWYgKGlQcmVmZXJlbmNl
cykNCisgICAgICAgIHsgICAgICAgICAgICANCisgICAgICAgIFRSQVBfSUdOT1JFKGlQcmVmZXJl
bmNlcy0+U2F2ZUwoKSk7DQorICAgICAgICB9DQorICAgIGRlbGV0ZSBpUHJlZmVyZW5jZXM7DQor
ICAgIGRlbGV0ZSBpV2lkZ2V0UmVuZGVyZXI7DQorICAgIGRlbGV0ZSBpV2lkZ2V0RW5naW5lQnJp
ZGdlOw0KKyAgICBkZWxldGUgaVdpZGdldEJhc2VQYXRoOyAgICANCisgICAgaUFwcFVpZE1hcC5S
ZXNldEFuZERlc3Ryb3koKTsNCisgICAgaUxpYnJhcnkuQ2xvc2UoKTsNCisgICAgfQ0KKw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpDb25zdHJ1Y3RMDQor
Ly8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVu
c2lvbjo6Q29uc3RydWN0TCgpDQorICAgIHsNCisgICAgDQorICAgIGlQcmVmZXJlbmNlcyA9IENX
aWRnZXRQcmVmZXJlbmNlczo6TmV3TCgqdGhpcyk7DQorICAgIGlXaWRnZXRSZW5kZXJlciA9IG5l
dyAoRUxlYXZlKSBUV2lkZ2V0UmVuZGVyZXIoKmlXZWJLaXRWaWV3KTsNCisgICAgTG9hZFdpZGdl
dEVuZ2luZURsbEwoKTsNCisgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0T2JzZXJ2ZXIoKnRo
aXMpOyANCisgICAgQ3JlYXRlQXBwSGFzaFRhYmxlTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIA0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vIENXaWRnZXRFeHRlbnNpb246OkNyZWF0ZUFwcEhhc2hUYWJsZUwNCisvLw0KKy8vDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpDcmVhdGVB
cHBIYXNoVGFibGVMKCkNCisgICAgew0KKyAgICBUSW50KiB1aWRtZyA9IG5ldyBUSW50KEtNZWRp
YUdhbGxlcnlVaWQpOyAgICAgICAgDQorICAgIEhCdWZDKiBidWZtZWRpYSA9IEhCdWZDOjpOZXdM
KFRQdHJDKEtNZWRpYUdhbGxlcnkpLkxlbmd0aCgpKTsNCisgICAgKmJ1Zm1lZGlhID0gS01lZGlh
R2FsbGVyeTsNCisgICAgDQorICAgIFRJbnQqIHVpZHdlYiA9IG5ldyBUSW50KEtXZWJCcm93c2Vy
VWlkKTsgICAgDQorICAgIEhCdWZDKiBidWZ3ZWIgPSBIQnVmQzo6TmV3TChUUHRyQyhLV2ViQnJv
d3NlcikuTGVuZ3RoKCkpOw0KKyAgICAqYnVmd2ViID0gS1dlYkJyb3dzZXI7DQorDQorICAgIFRJ
bnQqIHVpZGNhbSA9IG5ldyBUSW50KEtDYW1BcHBFbmdpbmVVaWQpOyAgICANCisgICAgSEJ1ZkMq
IGJ1ZmNhbSA9IEhCdWZDOjpOZXdMKFRQdHJDKEtDYW1BcHBFbmdpbmUpLkxlbmd0aCgpKTsNCisg
ICAgKmJ1ZmNhbSA9IEtDYW1BcHBFbmdpbmU7DQorICAgIA0KKyAgICBpQXBwVWlkTWFwLkluc2Vy
dEwoYnVmbWVkaWEsdWlkbWcpOw0KKyAgICBpQXBwVWlkTWFwLkluc2VydEwoYnVmd2ViLHVpZHdl
Yik7DQorICAgIGlBcHBVaWRNYXAuSW5zZXJ0TChidWZjYW0sdWlkY2FtKTsNCisgICAgfQ0KKw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpMYXVuY2hBcHBs
aWNhdGlvbkwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBD
V2lkZ2V0RXh0ZW5zaW9uOjpMYXVuY2hBcHBsaWNhdGlvbkwoY29uc3QgVFVpZCYgYVVpZCwgY29u
c3QgVERlc0MmIGFQYXJhbSkNCisgICAgew0KKyAgICANCisgICAgUkFwYUxzU2Vzc2lvbiBhcGFM
c1Nlc3Npb247ICAgICAgICANCisgICAgVEFwYVRhc2tMaXN0IHRhc2tMaXN0KENFaWtvbkVudjo6
U3RhdGljKCktPldzU2Vzc2lvbigpKTsNCisgICAgVEFwYVRhc2sgdGFzayA9IHRhc2tMaXN0LkZp
bmRBcHAoYVVpZCk7DQorICAgIGlmICh0YXNrLkV4aXN0cygpKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgdGFzay5CcmluZ1RvRm9yZWdyb3VuZCgpOw0KKyAgICAgICAgaWYgKGFQYXJhbS5MZW5ndGgo
KSA+IDApDQorICAgICAgICAgICAgeyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBIQnVm
QzgqIHBhcmFtOCA9IEhCdWZDODo6TmV3TEMoYVBhcmFtLkxlbmd0aCgpKTsNCisgICAgICAgICAg
ICBwYXJhbTgtPkRlcygpLkFwcGVuZChhUGFyYW0pOw0KKyAgICAgICAgICAgIHRhc2suU2VuZE1l
c3NhZ2UoVFVpZDo6VWlkKDApLCpwYXJhbTgpOw0KKyAgICAgICAgICAgIENsZWFudXBTdGFjazo6
UG9wQW5kRGVzdHJveShwYXJhbTgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAg
ZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgVEludCBlQ29ubmVjdCA9IEtFcnJOb25lOw0KKyAg
ICAgICAgaWYgKCFhcGFMc1Nlc3Npb24uSGFuZGxlKCkpDQorICAgICAgICAgICAgew0KKyAgICAg
ICAgICAgIGVDb25uZWN0ID0gYXBhTHNTZXNzaW9uLkNvbm5lY3QoKTsNCisgICAgICAgICAgICB9
ICAgICAgICAgIA0KKyAgICAgICAgDQorICAgICAgICBpZiAoZUNvbm5lY3QgPT0gS0Vyck5vbmUp
DQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIFRUaHJlYWRJZCB0aHJlYWRJZDsNCisgICAg
ICAgICAgICBhcGFMc1Nlc3Npb24uU3RhcnREb2N1bWVudChhUGFyYW0sIGFVaWQsIHRocmVhZElk
KTsgICAgDQorICAgICAgICAgICAgYXBhTHNTZXNzaW9uLkNsb3NlKCk7DQorICAgICAgICAgICAg
fQ0KKyAgICAgICAgfSAgICANCisNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuQXBwbGljYXRpb24NCisvLw0KKy8vDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuQXBw
bGljYXRpb24oY29uc3QgVERlc0MmIGFBcHBOYW1lLCBjb25zdCBURGVzQyYgYVBhcmFtKQ0KKyAg
ICB7DQorICAgIA0KKyAgICBUSW50KiB1aWQgPSBpQXBwVWlkTWFwLkZpbmQoYUFwcE5hbWUpOw0K
KyAgICBpZiAodWlkKQ0KKyAgICAgICAgeyAgICAgICAgDQorICAgICAgICBUVWlkIHVpZEFwcCA9
IFRVaWQ6OlVpZCgqdWlkKTsNCisgICAgICAgIExhdW5jaEFwcGxpY2F0aW9uTCh1aWRBcHAsYVBh
cmFtKTsgICAgICAgIA0KKyAgICAgICAgfQ0KKyAgICANCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuVXJsDQorLy8NCisvLw0KKy8v
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6T3BlblVy
bChjb25zdCBURGVzQyYgYVVybCkNCisgICAgeyAgICAgICAgDQorICAgIEhCdWZDKiBwYXJhbSA9
IEhCdWZDOjpOZXdMQyhhVXJsLkxlbmd0aCgpKzIpOw0KKyAgICBwYXJhbS0+RGVzKCkuQXBwZW5k
KF9MKCI0ICIpKTsNCisgICAgcGFyYW0tPkRlcygpLkFwcGVuZChhVXJsKTsNCisgICAgVFJBUF9J
R05PUkUoTGF1bmNoQXBwbGljYXRpb25MKFRVaWQ6OlVpZChLV2ViQnJvd3NlclVpZCksICpwYXJh
bSkpOyAgICANCisgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KHBhcmFtKTsNCisgICAg
fQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpQcmVm
ZXJlbmNlRm9yS2V5DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RJ
bnQgQ1dpZGdldEV4dGVuc2lvbjo6UHJlZmVyZW5jZUZvcktleShjb25zdCBURGVzQyYgYUtleSwg
VFB0ckMmIGFWYWx1ZSkNCisgICAgew0KKyAgICByZXR1cm4gaVByZWZlcmVuY2VzLT5QcmVmZXJl
bmNlTChhS2V5LCBhVmFsdWUpOyAgICANCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpQcmVwYXJlRm9yVHJhbnNpdGlvbg0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlBy
ZXBhcmVGb3JUcmFuc2l0aW9uKGNvbnN0IFREZXNDJiBhVHJhbnNpdGlvbikNCisgICAgew0KKyAg
ICBpV2lkZ2V0UmVuZGVyZXItPlByZXBhcmVGb3JUcmFuc2l0aW9uTChhVHJhbnNpdGlvbik7DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
UGVyZm9ybVRyYW5zaXRpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpQZXJmb3JtVHJhbnNpdGlvbigpDQorICAgIHsNCisg
ICAgaVdpZGdldFJlbmRlcmVyLT5QZXJmb3JtVHJhbnNpdGlvbkwoKTsNCisgICAgfQ0KKw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQcmVmZXJlbmNl
Rm9yS2V5DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dp
ZGdldEV4dGVuc2lvbjo6U2V0UHJlZmVyZW5jZUZvcktleShjb25zdCBURGVzQyYgYUtleSwgY29u
c3QgVERlc0MmIGFWYWx1ZSkNCisgICAgew0KKyAgICBpUHJlZmVyZW5jZXMtPlNldFByZWZlcmVu
Y2VMKGFLZXksIGFWYWx1ZSk7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0U2Nyb2xsQmFyDQorLy8NCisvLw0KKy8vDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0U2Nyb2xsQmFy
KFRCb29sIC8qYVZpc2libGUqLykNCisgICAgew0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlNldE5hdmlnYXRpb25FbmFibGVkDQorLy8N
CisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lv
bjo6U2V0TmF2aWdhdGlvbkVuYWJsZWQoVEJvb2wgYUVuYWJsZSkNCisgICAgew0KKyAgICBpTmF2
aWdhdGlvbkVuYWJsZWQgPSBhRW5hYmxlOw0KKyAgICBpV2ViS2l0Vmlldy0+U2V0VGFiYmVkTmF2
aWdhdGlvbiggIWFFbmFibGUgKTsNCisgICAgaWYgKCBpV2ViS2l0Vmlldy0+Q3Vyc29yKCkgKQ0K
KyAgICAgICAgew0KKyAgICAgICAgaVdlYktpdFZpZXctPkN1cnNvcigpLT5DdXJzb3JVcGRhdGUo
IGFFbmFibGUgKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25zTWVudUl0ZW0NCisvLw0KKy8vDQor
Ly8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVEludCBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRP
cHRpb25zTWVudUl0ZW0oY29uc3QgVERlc0MmIGFUZXh0KQ0KKyAgICB7DQorICAgIFRJbnQgY21k
SWQgPSAoVEJyQ3RsRGVmczo6RUNvbW1hbmRJZEJhc2UgKyBUQnJDdGxEZWZzOjpFQ29tbWFuZElk
U3Vic2NyaWJlVG9CYXNlICsgS09wdGlvbnNDbWRJZCkgKyBpTWVudUl0ZW1zLkNvdW50KCk7DQor
ICAgIA0KKyAgICBpZiAoaU1lbnVJdGVtcy5Db3VudCgpIDw9IEtNYXhPcHRpb25zTWVudSAmJg0K
KyAgICAgICAgYVRleHQuTGVuZ3RoKCkgPiAwICYmIGFUZXh0Lkxlbmd0aCgpIDw9IEtNYXhPcHRp
b25zTWVudUl0ZW1TaXplICkNCisgICAgICAgIHsNCisgICAgICAgIFRNZW51SXRlbSBpdGVtOw0K
KyAgICAgICAgaXRlbS5pVGV4dCA9IGFUZXh0LkFsbG9jKCk7DQorICAgICAgICBpdGVtLmlDbWRJ
ZCA9IGNtZElkOyAgICAgICAgICAgICAgICANCisgICAgICAgIGlNZW51SXRlbXMuQXBwZW5kKGl0
ZW0pOyAgICANCisgICAgICAgIH0NCisgICAgDQorICAgIHJldHVybiBjbWRJZDsgICAgDQorICAg
IH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6Q2xl
YXJPcHRpb25zTWVudQ0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2
b2lkIENXaWRnZXRFeHRlbnNpb246OkNsZWFyT3B0aW9uc01lbnUoKQ0KKyAgICB7ICAgDQorICAg
ICAgICAgICAgICANCisgICAgZm9yIChUSW50IG49MDsgbjxpTWVudUl0ZW1zLkNvdW50KCk7IG4r
KykNCisgICAgICAgIHsgICAgICAgICAgICAgICAgDQorICAgICAgICBkZWxldGUgaU1lbnVJdGVt
c1tuXS5pVGV4dDsNCisgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgaU1lbnVJdGVtcy5S
ZXNldCgpOyAgICAgICAgICAgIA0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vIENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbk1lbnVJdGVtc0wNCisvLw0KKy8vDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRp
b25NZW51SXRlbXNMKENFaWtNZW51UGFuZSYgYU1lbnVQYW5lKQ0KKyAgICB7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KKyAgICBpZiAoIGFNZW51UGFuZS5OdW1iZXJPZkl0ZW1zSW5Q
YW5lKCkgPiAxKQ0KKyAgICAgICAgeyAgICAgICAgDQorICAgICAgICBhTWVudVBhbmUuRGVsZXRl
QmV0d2Vlbk1lbnVJdGVtcyggMCwgYU1lbnVQYW5lLk51bWJlck9mSXRlbXNJblBhbmUoKS0yICk7
ICAgICAgICANCisgICAgICAgIH0NCisNCisgICAgICAgIA0KKyAgICBmb3IgKFRJbnQgbj1pTWVu
dUl0ZW1zLkNvdW50KCktMTsgbj49MDsgbi0tKQ0KKyAgICAgICAgew0KKyAgICAgICAgQ0Vpa01l
bnVQYW5lSXRlbTo6U0RhdGEgbWVudURhdGE7DQorICAgICAgICBtZW51RGF0YS5pQ29tbWFuZElk
ID0gaU1lbnVJdGVtc1tuXS5pQ21kSWQ7DQorICAgICAgICBtZW51RGF0YS5pQ2FzY2FkZUlkID0g
MDsNCisgICAgICAgIG1lbnVEYXRhLmlGbGFncyA9IDA7DQorICAgICAgICBtZW51RGF0YS5pVGV4
dCA9ICppTWVudUl0ZW1zW25dLmlUZXh0OyAgICAgICAgDQorICAgICAgICBhTWVudVBhbmUuSW5z
ZXJ0TWVudUl0ZW1MKG1lbnVEYXRhLDApOw0KKyAgICAgICAgfSAgICANCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAg
IH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
T3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPcHRpb25zTWVudUl0ZW1TZWxlY3RlZChU
SW50IGFDb21tYW5kKQ0KKyAgICB7DQorICAgIGlmIChpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAg
ICAgICAgew0KKyAgICAgICAgVEludCBuID0gYUNvbW1hbmQtKFRCckN0bERlZnM6OkVDb21tYW5k
SWRCYXNlICsgVEJyQ3RsRGVmczo6RUNvbW1hbmRJZFN1YnNjcmliZVRvQmFzZSArIEtPcHRpb25z
Q21kSWQpOw0KKyAgICAgICAgaWYgKG4+PTAgJiYgbjxpTWVudUl0ZW1zLkNvdW50KCkpDQorICAg
ICAgICAgICAgew0KKyAgICAgICAgICAgIEhCdWZDKiBpdGVtVGV4dCA9IGlNZW51SXRlbXNbbl0u
aVRleHQ7DQorICAgICAgICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+T3B0aW9uc01lbnVJdGVt
U2VsZWN0ZWQoKml0ZW1UZXh0KTsNCisgICAgICAgICAgICBPblNob3dTZWxlY3RlZCgpOw0KKyAg
ICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPbkhpZGVTZWxlY3RlZA0KKy8vDQorLy8NCisvLw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9uSGlkZVNl
bGVjdGVkKCkNCisgICAgew0KKyAgICBpZiAoaVdpZGdldEVuZ2luZUJyaWRnZSkNCisgICAgICAg
IHsNCisgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlNldFdpZGdldFZpc2liaWxpdHkoRUZh
bHNlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDV2lkZ2V0RXh0ZW5zaW9uOjpPblNob3dTZWxlY3RlZA0KKy8vDQorLy8NCisvLw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9uU2hvd1NlbGVjdGVk
KCkNCisgICAgew0KKyAgICBpZihpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAgICAgICAgew0KKyAg
ICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0V2lkZ2V0VmlzaWJpbGl0eShFVHJ1ZSk7DQor
ICAgICAgICB9DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dp
ZGdldEV4dGVuc2lvbjo6Y3JlYXRlV2lkZ2V0T2JqZWN0DQorLy8NCisvLw0KKy8vDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KK0tKUzo6T2JqZWN0SW1wKiBDV2lkZ2V0RXh0ZW5zaW9uOjpjcmVh
dGVXaWRnZXRPYmplY3QoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpDQorICAgIHsNCisgICAgaWYoaVdp
ZGdldEVuZ2luZUJyaWRnZSkNCisgICAgICAgew0KKyAgICAgICByZXR1cm4gaVdpZGdldEVuZ2lu
ZUJyaWRnZS0+V2lkZ2V0KGV4ZWMpOw0KKyAgICAgICB9DQorICAgIHJldHVybiBOVUxMOyAgICAg
ICANCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVu
c2lvbjo6TG9hZFdpZGdldEVuZ2luZURsbEwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkxvYWRXaWRnZXRFbmdpbmVEbGxMKCkNCisg
ICAgew0KKyAgICANCisgICAgaWYoIWlXaWRnZXRFbmdpbmVCcmlkZ2UpDQorICAgICAgICB7DQor
ICAgICAgICANCisgICAgICAgIF9MSVQoIEtCcm93c2VyV2lkZ2V0RW5naW5lTmFtZSwgIndpZGdl
dGVuZ2luZS5kbGwiICk7DQorICAgICAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoIGlMaWJyYXJ5Lkxv
YWQoIEtCcm93c2VyV2lkZ2V0RW5naW5lTmFtZSApICk7DQorICAgICAgICANCisgICAgICAgIFRM
aWJyYXJ5RnVuY3Rpb24gZW50cnkgPSBpTGlicmFyeS5Mb29rdXAoMSk7DQorICAgICAgICANCisg
ICAgICAgIGlmICghZW50cnkpIA0KKyAgICAgICAgICAgIFVzZXI6OkxlYXZlKEtFcnJOb3RGb3Vu
ZCk7IA0KKyAgICAgICAgDQorICAgICAgICAvL0NhbGwgdGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBh
IGluc3RhbmNlIG9mIGNsYXNzDQorICAgICAgICBpV2lkZ2V0RW5naW5lQnJpZGdlID0gKE1XaWRn
ZXRFbmdpbmVCcmlkZ2UqKSBlbnRyeSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQYXJhbUwNCisvLw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNl
dFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBhcmFtLCBjb25zdCBURGVz
QyYgYVZhbHVlKQ0KKyAgICB7DQorICAgIHN3aXRjaChhUGFyYW0pDQorICAgICAgICB7DQorICAg
ICAgICBjYXNlIFRCckN0bERlZnM6OkVXaWRnZXRCYXNlUGF0aDoNCisgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgaVdpZGdldEJhc2VQYXRoID0gYVZhbHVlLkFsbG9jTCgpOw0KKyAgICAgICAg
ICAgIGlQcmVmZXJlbmNlcy0+TG9hZEwoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAg
ICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAg
fQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpTZXRQYXJhbUwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCit2b2lk
IENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJh
bXMgYVBhcmFtLCBUVWludCBhVmFsdWUpDQorICAgIHsNCisgICAgc3dpdGNoKGFQYXJhbSkNCisg
ICAgICAgIHsNCisgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RVdpZGdldElkZW50aWZpZXI6DQor
ICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlXaWRnZXRJZCA9IGFWYWx1ZTsNCisgICAgICAg
ICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAg
ICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy9FTkQgT0YgRklMRQ0KKw0KKw0K
Kw0KKw0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UHJlZmVyZW5jZXMuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRQcmVmZXJlbmNl
cy5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRQcmVm
ZXJlbmNlcy5jcHAJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDI5MSBAQA0KKy8qDQorKiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktpdFdpZGdldEludGVyZmFj
ZS5jcHANCisqICBQYXJ0IG9mICAgICA6IFdlYkVuZ2luZS9XZWJLaXRXaWRnZXRJbnRlcmZhY2UN
CisqICBEZXNjcmlwdGlvbiA6DQorKiAgVmVyc2lvbiAgICAgOiAyLjEuMQ0KKyoNCisqICBDb3B5
cmlnaHQgKGMpIDIwMDQgTm9raWEgQ29ycG9yYXRpb24uDQorKiAgVGhpcyBtYXRlcmlhbCwgaW5j
bHVkaW5nIGRvY3VtZW50YXRpb24gYW5kIGFueSByZWxhdGVkDQorKiAgY29tcHV0ZXIgcHJvZ3Jh
bXMsIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgY29udHJvbGxlZCBieQ0KKyogIE5va2lhIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIGFyZSByZXNlcnZlZC4gQ29weWluZywNCisqICBpbmNsdWRp
bmcgcmVwcm9kdWNpbmcsIHN0b3JpbmcsIGFkYXB0aW5nIG9yIHRyYW5zbGF0aW5nLCBhbnkNCisq
ICBvciBhbGwgb2YgdGhpcyBtYXRlcmlhbCByZXF1aXJlcyB0aGUgcHJpb3Igd3JpdHRlbiBjb25z
ZW50IG9mDQorKiAgTm9raWEgQ29ycG9yYXRpb24uIFRoaXMgbWF0ZXJpYWwgYWxzbyBjb250YWlu
cyBjb25maWRlbnRpYWwNCisqICBpbmZvcm1hdGlvbiB3aGljaCBtYXkgbm90IGJlIGRpc2Nsb3Nl
ZCB0byBvdGhlcnMgd2l0aG91dCB0aGUNCisqICBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YgTm9r
aWEgQ29ycG9yYXRpb24uDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqLw0KKw0KKy8vIElO
Q0xVREUgRklMRVMNCisjaW5jbHVkZSA8ZTMyc3RkLmg+DQorI2luY2x1ZGUgPFMzMkZJTEUuSD4N
CisjaW5jbHVkZSA8ZjMyZmlsZS5oPg0KKyNpbmNsdWRlIDx1cmkxNi5oPg0KKyNpbmNsdWRlICJX
aWRnZXRQcmVmZXJlbmNlcy5oIg0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisNCisv
LyBFWFRFUk5BTCBEQVRBIFNUUlVDVFVSRVMNCisNCisvLyBFWFRFUk5BTCBGVU5DVElPTiBQUk9U
T1RZUEVTDQorDQorLy8gQ09OU1RBTlRTDQorY29uc3QgVEludCBLTWF4SW50TGVuZ3RoID0gMTA7
DQorY29uc3QgVEludCBLTWF4S2V5VmFsdWVTaXplID0gNDA5NjsgLy80IGsNCisNCitfTElUKCBL
S2V5Rm9ybWF0LCAiJWQuJVMiICk7DQorX0xJVCggS1ByZWZzRmlsZSwicHJlZnMuZGF0IiApOw0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0wN
CisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldFByZWZlcmVu
Y2VzKiBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0woQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4
dGVuc2lvbikNCisgICAgew0KKyAgICBDV2lkZ2V0UHJlZmVyZW5jZXMqIHNlbGYgPSBOZXdMQyhh
V2lkZ2V0RXh0ZW5zaW9uKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQb3AoIHNlbGYgKTsNCisgICAg
cmV0dXJuIHNlbGY7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
Q1dpZGdldFByZWZlcmVuY2VzOjpOZXdMQw0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCitDV2lkZ2V0UHJlZmVyZW5jZXMqIENXaWRnZXRQcmVmZXJlbmNlczo6TmV3TEMo
Q1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbikNCisgICAgew0KKyAgICBDV2lkZ2V0
UHJlZmVyZW5jZXMqIHNlbGYgPSBuZXcgKCBFTGVhdmUgKSBDV2lkZ2V0UHJlZmVyZW5jZXMoYVdp
ZGdldEV4dGVuc2lvbik7DQorICAgIENsZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCisgICAg
c2VsZi0+Q29uc3RydWN0TCgpOw0KKyAgICByZXR1cm4gc2VsZjsNCisgICAgfQ0KKw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OkNXaWRnZXRQcmVmZXJl
bmNlcw0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0UHJl
ZmVyZW5jZXM6OkNXaWRnZXRQcmVmZXJlbmNlcyhDV2lkZ2V0RXh0ZW5zaW9uJiBhV2lkZ2V0RXh0
ZW5zaW9uKQ0KKyAgICA6IGlXaWRnZXRFeHRlbnNpb24oJmFXaWRnZXRFeHRlbnNpb24pDQorICAg
IHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVy
ZW5jZXM6On5DV2lkZ2V0UHJlZmVyZW5jZXMNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorQ1dpZGdldFByZWZlcmVuY2VzOjp+Q1dpZGdldFByZWZlcmVuY2VzKCkNCisg
ICAgew0KKyAgICBpTWFwLlJlc2V0QW5kRGVzdHJveSgpOw0KKyAgICBpTWFwLkNsb3NlKCk7DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2Vz
OjpDb25zdHJ1Y3RMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3Zv
aWQgQ1dpZGdldFByZWZlcmVuY2VzOjpDb25zdHJ1Y3RMKCkNCisgICAgew0KKyAgICB9DQorDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6UHJlZmVyZW5j
ZUwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVEludCBDV2lkZ2V0
UHJlZmVyZW5jZXM6OlByZWZlcmVuY2VMKGNvbnN0IFREZXNDJiBhS2V5LCBUUHRyQyYgYVZhbHVl
KQ0KKyAgICB7DQorDQorICAgIFRJbnQgclN1Y2Nlc3MgPSBLRXJyTm90Rm91bmQ7DQorDQorICAg
IGlmIChhS2V5Lkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1ZVNpemUpDQorICAgICAgICB7DQorICAg
ICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xDKGFLZXkuTGVuZ3RoKCkrS01heEludExlbmd0
aCsxKTsNCisgICAgICAgIGtleS0+RGVzKCkuRm9ybWF0KCBLS2V5Rm9ybWF0LCBpV2lkZ2V0RXh0
ZW5zaW9uLT5HZXRXaWRnZXRJZCgpLCAmYUtleSApOw0KKw0KKyAgICAgICAgVERlc0MqIHJlcyA9
IGlNYXAuRmluZCgqa2V5KTsNCisgICAgICAgIGlmIChyZXMpDQorICAgICAgICAgICAgew0KKyAg
ICAgICAgICAgIGFWYWx1ZS5TZXQoKnJlcyk7DQorICAgICAgICAgICAgclN1Y2Nlc3MgPSBLRXJy
Tm9uZTsNCisgICAgICAgICAgICB9DQorDQorDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcChr
ZXkpOw0KKw0KKyAgICAgICAgfQ0KKw0KKyAgICAgcmV0dXJuIHJTdWNjZXNzOw0KKyAgICB9DQor
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6U2V0UHJl
ZmVyZW5jZUwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6U2V0UHJlZmVyZW5jZUwN
CisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0UHJl
ZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMKGNvbnN0IFREZXNDJiBhS2V5LCBjb25zdCBURGVzQyYg
YVZhbHVlKQ0KKyAgICB7DQorDQorICAgIGlmIChhS2V5Lkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1
ZVNpemUpDQorICAgICAgICB7DQorDQorICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xD
KGFLZXkuTGVuZ3RoKCkrS01heEludExlbmd0aCsxKTsNCisgICAgICAgIGtleS0+RGVzKCkuRm9y
bWF0KCBLS2V5Rm9ybWF0LCBpV2lkZ2V0RXh0ZW5zaW9uLT5HZXRXaWRnZXRJZCgpLCAmYUtleSAp
Ow0KKw0KKyAgICAgICAgaWYgKGFWYWx1ZS5MZW5ndGgoKSA+IDAgJiYgYVZhbHVlLkxlbmd0aCgp
IDw9IEtNYXhLZXlWYWx1ZVNpemUpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIEhCdWZD
KiB2YWx1ZSA9IGFWYWx1ZS5BbGxvY0xDKCk7DQorICAgICAgICAgICAgaU1hcC5JbnNlcnRMKGtl
eSx2YWx1ZSk7DQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AodmFsdWUpOw0KKyAgICAg
ICAgICAgIENsZWFudXBTdGFjazo6UG9wKGtleSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAg
ZWxzZQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBpTWFwLlJlbW92ZShrZXkpOw0KKyAg
ICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveShrZXkpOw0KKyAgICAgICAgICAg
IH0NCisNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNhdmUNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNhdmVMKCkNCisgICAgew0K
KyAgICBSRnMgZnM7DQorICAgIGlmICggZnMuQ29ubmVjdCgpID09IEtFcnJOb25lICkNCisgICAg
ICAgIHsNCisNCisgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKCBmcyApOw0KKw0KKyAgICAgICAg
SEJ1ZkMqIGZpbGVQYXRoID0gZmlsZVBhdGggPSBIQnVmQzo6TmV3TEMoaVdpZGdldEV4dGVuc2lv
bi0+V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgoKSAgKyBLUHJlZnNGaWxlKCkuTGVuZ3RoKCkpOw0K
Kw0KKyAgICAgICAgVFB0ciBmTmFtZShmaWxlUGF0aC0+RGVzKCkpOw0KKyAgICAgICAgZk5hbWUu
QXBwZW5kKGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkpOw0KKyAgICAgICAgZk5h
bWUuQXBwZW5kKEtQcmVmc0ZpbGUpOw0KKw0KKyAgICAgICAgUkZpbGVXcml0ZVN0cmVhbSB3cml0
ZVN0cmVhbTsNCisgICAgICAgIFRJbnQgZmlsZWVycm9yID0gd3JpdGVTdHJlYW0uUmVwbGFjZSgg
ZnMsICpmaWxlUGF0aCwgRUZpbGVXcml0ZSApOw0KKw0KKyAgICAgICAgaWYgKGZpbGVlcnJvciAh
PSBLRXJyTm9uZSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgZnMuQ3JlYXRlUHJpdmF0
ZVBhdGgoRURyaXZlQyk7DQorICAgICAgICAgICAgZmlsZWVycm9yID0gd3JpdGVTdHJlYW0uQ3Jl
YXRlKCBmcywgKmZpbGVQYXRoLCBFRmlsZVdyaXRlIHwgRUZpbGVTaGFyZUV4Y2x1c2l2ZSApOw0K
KyAgICAgICAgICAgIH0NCisNCisgICAgICAgIGlmIChmaWxlZXJyb3IgPT0gS0Vyck5vbmUpDQor
ICAgICAgICAgICAgew0KKyAgICAgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKHdyaXRlU3RyZWFt
KTsNCisNCisgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUludDMyTChpTWFwLkNvdW50KCkp
Ow0KKyAgICAgICAgICAgIFRQdHJIYXNoTWFwSXRlcjxURGVzQyxURGVzQz4gaXQoaU1hcCk7DQor
ICAgICAgICAgICAgY29uc3QgVERlc0MqIGtleTsNCisgICAgICAgICAgICBjb25zdCBURGVzQyog
dmFsdWU7DQorICAgICAgICAgICAgd2hpbGUgKChrZXkgPSBpdC5OZXh0S2V5KCkpICE9IDApDQor
ICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFsdWUgPSBpdC5DdXJyZW50VmFs
dWUoKTsNCisgICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVJbnQzMkwoa2V5LT5MZW5n
dGgoKSk7DQorICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlTCgqa2V5KTsNCisgICAg
ICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVJbnQzMkwodmFsdWUtPkxlbmd0aCgpKTsNCisg
ICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVMKCp2YWx1ZSk7DQorICAgICAgICAgICAg
ICAgIH0NCisNCisgICAgICAgICAgICB3cml0ZVN0cmVhbS5Db21taXRMKCk7DQorICAgICAgICAg
ICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vd3JpdGVTdHJlYW0NCisgICAgICAg
ICAgICB9DQorDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgLy9maWxl
UGF0aA0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZnMNCisgICAg
ICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJl
ZmVyZW5jZXM6OkxvYWRMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
K3ZvaWQgQ1dpZGdldFByZWZlcmVuY2VzOjpMb2FkTCgpDQorICAgIHsNCisNCisgICAgUkZzIGZz
Ow0KKyAgICBpZiAoZnMuQ29ubmVjdCgpID09IEtFcnJOb25lKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgQ2xlYW51cENsb3NlUHVzaEwoIGZzICk7DQorDQorICAgICAgICBIQnVmQyogZmlsZVBhdGgg
PSBIQnVmQzo6TmV3TEMoaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgo
KSAgKyBLUHJlZnNGaWxlKCkuTGVuZ3RoKCkpOw0KKw0KKyAgICAgICAgVFB0ciBmTmFtZShmaWxl
UGF0aC0+RGVzKCkpOw0KKyAgICAgICAgZk5hbWUuQXBwZW5kKGlXaWRnZXRFeHRlbnNpb24tPldp
ZGdldEJhc2VQYXRoKCkpOw0KKyAgICAgICAgZk5hbWUuQXBwZW5kKEtQcmVmc0ZpbGUpOw0KKw0K
KyAgICAgICAgUkZpbGVSZWFkU3RyZWFtIHJlYWRTdHJlYW07DQorICAgICAgICBpZiAocmVhZFN0
cmVhbS5PcGVuKCBmcywgKmZpbGVQYXRoLCBFRmlsZVJlYWQgKSA9PSBLRXJyTm9uZSkNCisgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgQ2xlYW51cENsb3NlUHVzaEwocmVhZFN0cmVhbSk7DQor
DQorICAgICAgICAgICAgVEludCBjb3VudCggcmVhZFN0cmVhbS5SZWFkSW50MzJMKCkgKTsNCisg
ICAgICAgICAgICBmb3IoIFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCisgICAgICAgICAg
ICAgICAgew0KKw0KKyAgICAgICAgICAgICAgICBUSW50IGxlbiA9IHJlYWRTdHJlYW0uUmVhZElu
dDMyTCgpOw0KKyAgICAgICAgICAgICAgICBpZiAobGVuPjApDQorICAgICAgICAgICAgICAgICAg
ICB7DQorDQorICAgICAgICAgICAgICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xDKGxl
bik7DQorICAgICAgICAgICAgICAgICAgICBUUHRyIHB0cmtleSA9IGtleS0+RGVzKCk7DQorICAg
ICAgICAgICAgICAgICAgICByZWFkU3RyZWFtLlJlYWRMKHB0cmtleSxsZW4pOw0KKyAgICAgICAg
ICAgICAgICAgICAgbGVuID0gcmVhZFN0cmVhbS5SZWFkSW50MzJMKCk7DQorDQorICAgICAgICAg
ICAgICAgICAgICBpZiAobGVuPD1LTWF4S2V5VmFsdWVTaXplKQ0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBIQnVmQyogdmFsdWUgPSBIQnVmQzo6
TmV3TEMobGVuKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBUUHRyIHB0cnZhbHVlID0gdmFs
dWUtPkRlcygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0uUmVhZEwocHRy
dmFsdWUsbGVuKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpTWFwLkluc2VydEwoa2V5LHZh
bHVlKTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcCh2YWx1
ZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3Aoa2V5KTsNCisg
ICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBlbHNlDQorICAg
ICAgICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFudXBT
dGFjazo6UG9wQW5kRGVzdHJveShrZXkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisg
ICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAg
ICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAg
ICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6
OlBvcEFuZERlc3Ryb3koKTsgLy9yZWFkU3RyZWFtDQorICAgICAgICAgICAgfQ0KKw0KKyAgICAg
ICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZmlsZVBhdGgNCisgICAgICAgIENs
ZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL2ZzDQorICAgICAgICB9DQorDQorICAgIH0N
CisNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldFJlbmRlcmVyLmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UmVuZGVyZXIuY3BwCShy
ZXZpc2lvbiAwKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UmVuZGVyZXIuY3Bw
CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwyMjggQEANCisvKg0KKyogPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXaWRnZXRFbmdpbmVSZW5kZXJlci5jcHANCisqICBQ
YXJ0IG9mICAgICA6IFdlYkVuZ2luZS9XZWJLaXRXaWRnZXRJbnRlcmZhY2UNCisqICBEZXNjcmlw
dGlvbiA6DQorKiAgVmVyc2lvbiAgICAgOiAyLjEuMQ0KKyoNCisqICBDb3B5cmlnaHQgKGMpIDIw
MDQgTm9raWEgQ29ycG9yYXRpb24uDQorKiAgVGhpcyBtYXRlcmlhbCwgaW5jbHVkaW5nIGRvY3Vt
ZW50YXRpb24gYW5kIGFueSByZWxhdGVkDQorKiAgY29tcHV0ZXIgcHJvZ3JhbXMsIGlzIHByb3Rl
Y3RlZCBieSBjb3B5cmlnaHQgY29udHJvbGxlZCBieQ0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIGFyZSByZXNlcnZlZC4gQ29weWluZywNCisqICBpbmNsdWRpbmcgcmVwcm9kdWNp
bmcsIHN0b3JpbmcsIGFkYXB0aW5nIG9yIHRyYW5zbGF0aW5nLCBhbnkNCisqICBvciBhbGwgb2Yg
dGhpcyBtYXRlcmlhbCByZXF1aXJlcyB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mDQorKiAg
Tm9raWEgQ29ycG9yYXRpb24uIFRoaXMgbWF0ZXJpYWwgYWxzbyBjb250YWlucyBjb25maWRlbnRp
YWwNCisqICBpbmZvcm1hdGlvbiB3aGljaCBtYXkgbm90IGJlIGRpc2Nsb3NlZCB0byBvdGhlcnMg
d2l0aG91dCB0aGUNCisqICBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YgTm9raWEgQ29ycG9yYXRp
b24uDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqLw0KKw0KKy8vIElOQ0xVREUgRklMRVMN
CisjaW5jbHVkZSA8ZWlrbWVudWIuaD4NCisjaW5jbHVkZSA8Z2RpLmg+DQorI2luY2x1ZGUgPGJp
dGRldi5oPg0KKw0KKyNpbmNsdWRlICJXaWRnZXRSZW5kZXJlci5oIg0KKyNpbmNsdWRlICJXZWJL
aXRWaWV3LmgiDQorDQorLy8gRVhURVJOQUwgREFUQSBTVFJVQ1RVUkVTDQorDQorLy8gRVhURVJO
QUwgRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIENPTlNUQU5UUw0KK2NvbnN0IFRJbnQgTWF4
VHJhbnNpdGlvbkNvdW50ID0gMzA7DQorDQorLy8gTE9DQUwgRlVOQ1RJT04gUFJPVE9UWVBFUw0K
Kw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUcmFuc2l0aW9uQ2INCisvLw0KKy8v
DQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVEludCBUcmFuc2l0aW9uQ2IoIFRBbnkq
IGFQdHIgKQ0KKyAgICB7DQorICAgIHN0YXRpY19jYXN0PFRXaWRnZXRSZW5kZXJlcio+KGFQdHIp
LT5UcmFuc2l0aW9uQ2IoKTsNCisgICAgcmV0dXJuIEVUcnVlOw0KKyAgICB9DQorDQorDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6VFdpZGdldFJlbmRlcmVy
DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RXaWRnZXRSZW5kZXJl
cjo6VFdpZGdldFJlbmRlcmVyKENXZWJLaXRWaWV3JiBhV2ViS2l0VmlldykgOiBpV2ViS2l0Vmll
dygmYVdlYktpdFZpZXcpLCBpVHJhbnNpdGlvbkJpdG1hcCgwKSwgaUZhZGVNYXNrKDApLCBpVHJh
bnNpdGlvblRpbWVyKDApLCBpVHJhbnNpdGlvbkNvdW50KDApICAgDQorICAgIHsNCisgICAgfQ0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6On5UV2lkZ2V0
UmVuZGVyZXINCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVFdpZGdl
dFJlbmRlcmVyOjp+VFdpZGdldFJlbmRlcmVyKCkNCisgICAgew0KKyAgICB9DQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6UHJlcGFyZUZvclRyYW5zaXRp
b24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0
UmVuZGVyZXI6OlByZXBhcmVGb3JUcmFuc2l0aW9uTChjb25zdCBURGVzQyYgLyphVHJhbnNpdGlv
biovKQ0KKyAgICB7ICAgDQorICAgIGlUcmFuc2l0aW9uQ291bnQgPSAwOyAgICAgICAgDQorICAg
IERlc3Ryb3lUcmFuc2l0aW9uQml0bWFwKCk7DQorICAgIENyZWF0ZVRyYW5zaXRpb25CaXRtYXBM
KCk7ICAgICAgICAgICAgICAgICAgICANCisgICAgRGVzdHJveUZhZGVNYXNrKCk7DQorICAgIENy
ZWF0ZUZhZGVNYXNrTCgpOw0KKyAgICBEcmF3RmFkZU1hc2tMKCk7ICAgICAgICANCisgICAgfQ0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OlBlcmZvcm1U
cmFuc2l0aW9uTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lk
IFRXaWRnZXRSZW5kZXJlcjo6UGVyZm9ybVRyYW5zaXRpb25MKCkNCisgICAgew0KKyAgICANCisg
ICAgZGVsZXRlIGlUcmFuc2l0aW9uVGltZXI7DQorICAgIGlUcmFuc2l0aW9uVGltZXIgPSAwOw0K
KyAgICBUUkFQX0lHTk9SRShpVHJhbnNpdGlvblRpbWVyID0gQ1BlcmlvZGljOjpOZXdMKCBDQWN0
aXZlOjpFUHJpb3JpdHlMb3cgKSk7DQorICAgIGlUcmFuc2l0aW9uQ291bnQgPSAwOw0KKyAgICBp
VHJhbnNpdGlvblRpbWVyLT5TdGFydCggMjAsIDIwLCBUQ2FsbEJhY2soICY6OlRyYW5zaXRpb25D
YiwgdGhpcyApICk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdp
ZGdldFJlbmRlcmVyOjpUcmFuc2l0aW9uQ2INCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OlRyYW5zaXRpb25DYigpDQorICAgIHsN
CisgICAgDQorICAgIGlUcmFuc2l0aW9uQ291bnQrKzsNCisgICAgDQorICAgIGlmIChpVHJhbnNp
dGlvbkNvdW50PT1NYXhUcmFuc2l0aW9uQ291bnQpDQorICAgICAgICB7DQorICAgICAgICBEZXN0
cm95VHJhbnNpdGlvbkJpdG1hcCgpOw0KKyAgICAgICAgaVRyYW5zaXRpb25UaW1lci0+Q2FuY2Vs
KCk7DQorICAgICAgICBEZXN0cm95RmFkZU1hc2soKTsNCisgICAgICAgIH0NCisNCisgICAgVFJB
UF9JR05PUkUoRHJhd0ZhZGVNYXNrTCgpKTsNCisgICAgaVdlYktpdFZpZXctPkRyYXdEZWZlcnJl
ZCgpOw0KKyAgICANCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lk
Z2V0UmVuZGVyZXI6OkNyZWF0ZVRyYW5zaXRpb25CaXRtYXBMDQorLy8NCisvLw0KKy8vDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpDcmVhdGVUcmFuc2l0
aW9uQml0bWFwTCgpDQorICAgIHsNCisgICAgaVRyYW5zaXRpb25CaXRtYXAgPSBuZXcgKEVMZWF2
ZSkgQ0Zic0JpdG1hcCgpOw0KKyAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoaVRyYW5zaXRpb25CaXRt
YXAtPkNyZWF0ZSggaVdlYktpdFZpZXctPk9mZnNjcmVlbkJpdG1hcCgpLT5TaXplSW5QaXhlbHMo
KSwgIGlXZWJLaXRWaWV3LT5EaXNwbGF5TW9kZSgpKSk7DQorICAgIENGYnNCaXRtYXBEZXZpY2Uq
IGRldiA9IENGYnNCaXRtYXBEZXZpY2U6Ok5ld0woaVRyYW5zaXRpb25CaXRtYXApOw0KKyAgICBD
bGVhbnVwU3RhY2s6OlB1c2hMKGRldik7DQorICAgIENGYnNCaXRHYyogZ2M7DQorICAgIFVzZXI6
OkxlYXZlSWZFcnJvcihkZXYtPkNyZWF0ZUNvbnRleHQoZ2MpKTsNCisgICAgZ2MtPkJpdEJsdChU
UG9pbnQoMCwwKSxpV2ViS2l0Vmlldy0+T2Zmc2NyZWVuQml0bWFwKCkpOw0KKyAgICBkZWxldGUg
Z2M7DQorICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOw0KKyAgICB9DQorDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6RGVzdHJveVRyYW5zaXRp
b25CaXRtYXANCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBU
V2lkZ2V0UmVuZGVyZXI6OkRlc3Ryb3lUcmFuc2l0aW9uQml0bWFwKCkNCisgICAgew0KKyAgICBk
ZWxldGUgaVRyYW5zaXRpb25CaXRtYXA7DQorICAgIGlUcmFuc2l0aW9uQml0bWFwID0gMDsNCisg
ICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkNy
ZWF0ZUZhZGVNYXNrTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2
b2lkIFRXaWRnZXRSZW5kZXJlcjo6Q3JlYXRlRmFkZU1hc2tMKCkNCisgICAgew0KKyAgICBpRmFk
ZU1hc2sgPSBuZXcgKEVMZWF2ZSkgQ0Zic0JpdG1hcCgpOw0KKyAgICBpRmFkZU1hc2stPkNyZWF0
ZShpVHJhbnNpdGlvbkJpdG1hcC0+U2l6ZUluUGl4ZWxzKCksRUdyYXkyNTYpOw0KKyAgICB9DQor
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6RGVzdHJveUZh
ZGVNYXNrDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdp
ZGdldFJlbmRlcmVyOjpEZXN0cm95RmFkZU1hc2soKQ0KKyAgICB7DQorICAgIGRlbGV0ZSBpRmFk
ZU1hc2s7DQorICAgIGlGYWRlTWFzayA9IDA7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpEcmF3RmFkZU1hc2tMDQorLy8NCisvLw0K
Ky8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpEcmF3
RmFkZU1hc2tMKCkNCisgICAgew0KKyAgICBpZiAoaUZhZGVNYXNrKQ0KKyAgICAgICAgeyAgICAg
ICAgDQorICAgICAgICBDRmJzQml0bWFwRGV2aWNlKiBkZXYgPSBDRmJzQml0bWFwRGV2aWNlOjpO
ZXdMKGlGYWRlTWFzayk7DQorICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKGRldik7DQorICAg
ICAgICBDRmJzQml0R2MqIGdjOw0KKyAgICAgICAgVXNlcjo6TGVhdmVJZkVycm9yKGRldi0+Q3Jl
YXRlQ29udGV4dChnYykpOw0KKyAgICAgICAgaUZhZGVNYXNrLT5Mb2NrSGVhcCgpOw0KKyAgICAg
ICAgVFNpemUgcyA9IGlGYWRlTWFzay0+U2l6ZUluUGl4ZWxzKCk7DQorICAgICAgICBUVWludDgq
IGRhdGEgPSAoVFVpbnQ4KilpRmFkZU1hc2stPkRhdGFBZGRyZXNzKCk7DQorICAgICAgICBUVWlu
dDgqIGVuZCA9IGRhdGEgKyBzLmlXaWR0aCpzLmlIZWlnaHQ7DQorICAgICAgICB3aGlsZSAoIGRh
dGE8ZW5kICkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgKihkYXRhKyspID0gKDI1NSpp
VHJhbnNpdGlvbkNvdW50L01heFRyYW5zaXRpb25Db3VudCk7DQorICAgICAgICAgICAgfQ0KKyAg
ICAgICAgaUZhZGVNYXNrLT5VbmxvY2tIZWFwKCk7DQorICAgICAgICBkZWxldGUgZ2M7DQorICAg
ICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsNCisgICAgICAgIH0NCisgICAgfQ0K
Kw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkRyYXdU
cmFuc2l0aW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQg
VFdpZGdldFJlbmRlcmVyOjpEcmF3VHJhbnNpdGlvbihDV2luZG93R2MmIGdjLCBDRmJzQml0bWFw
KiBhQ3VycmVudEJpdG1hcCkNCisgICAgew0KKw0KKyAgICBpZiAoIWlUcmFuc2l0aW9uQml0bWFw
IHx8ICFhQ3VycmVudEJpdG1hcCB8fCAhaUZhZGVNYXNrKQ0KKyAgICAgICAgcmV0dXJuOw0KKyAg
ICANCisgICAgVFNpemUgcyA9IGlUcmFuc2l0aW9uQml0bWFwLT5TaXplSW5QaXhlbHMoKTsNCisg
ICAgZ2MuQml0Qmx0KFRQb2ludCgwLDApLGlUcmFuc2l0aW9uQml0bWFwKTsNCisgICAgZ2MuQml0
Qmx0TWFza2VkKFRQb2ludCgwLDApLGFDdXJyZW50Qml0bWFwLCBUUmVjdChzKSwgaUZhZGVNYXNr
LCBFRmFsc2UpOw0KKw0KKyAgICB9DQorDQpJbmRleDogV2ViS2l0L0NoYW5nZUxvZw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjcyKQ0KKysrIFdlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsNjQgQEANCisyMDA2LTEwLTI0ICB5
YWRhdmFsbCAgPHNyaXJhbS55YWRhdmFsbGlAbm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgWmFsYW4gQnVqdGFzICh6YnVqdGFzQGdtYWlsLmNvbSkuDQorICAgICAgICBERVNDOiBT
Y3JpcHRhYmxlIHBsdWdpbiBhbmQgd2lkZ2V0IG9iamVjdCBzdXBwb3J0DQorICAgICAgICBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNw0KKyAgICAgICAgV0FSTklO
RzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VEDQorDQorICAgICAgICAqIEJyb3dzZXJD
b250cm9sL2luYy9CckN0bC5oOg0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9pbmMvQnJDdGxE
ZWZzLmg6DQorICAgICAgICAoVEJyQ3RsRGVmczo6KToNCisgICAgICAgICogQnJvd3NlckNvbnRy
b2wvaW5jL0JyQ3RsSW50ZXJmYWNlLmg6DQorICAgICAgICAqIEJyb3dzZXJDb250cm9sL3NyYy9C
ckN0bC5jcHA6DQorICAgICAgICAoQ0JyQ3RsOjpIYW5kbGVDb21tYW5kTCk6DQorICAgICAgICAo
Q0JyQ3RsOjpBZGRPcHRpb25NZW51SXRlbXNMKToNCisgICAgICAgIChDQnJDdGw6OkNyZWF0ZVdp
ZGdldEV4dGVuc2lvbkwpOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJv
bC5oOg0KKyAgICAgICAgKENXZWJLaXRDb250cm9sOjpXaWRnZXRFeHRlbnNpb24pOg0KKyAgICAg
ICAgKiBCcm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmg6DQorICAgICAgICAqIEJyb3dzZXJW
aWV3L3NyYy9LZXlFdmVudEhhbmRsZXIuY3BwOg0KKyAgICAgICAgKENLZXlFdmVudEhhbmRsZXI6
OkhhbmRsZUFjdGl2YXRlS2V5c0wpOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9zcmMvV2ViS2l0
Q29udHJvbC5jcHA6DQorICAgICAgICAoQ1dlYktpdENvbnRyb2w6On5DV2ViS2l0Q29udHJvbCk6
DQorICAgICAgICAoQ1dlYktpdENvbnRyb2w6OkNyZWF0ZVdpZGdldEV4dGVuc2lvbkwpOg0KKyAg
ICAgICAgKiBCcm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5jcHA6DQorICAgICAgICAoQ1dlYktp
dFZpZXc6Ok1ha2VWaXNpYmxlKToNCisgICAgICAgIChDV2ViS2l0Vmlldzo6RHJhdyk6DQorICAg
ICAgICAqIEJyb3dzZXJWaWV3L3NyYy93ZWJraXRicmlkZ2UuY3BwOg0KKyAgICAgICAgKENXZWJL
aXRCcmlkZ2U6OmNyZWF0ZVdpZGdldE9iamVjdCk6DQorICAgICAgICAqIFBsdWdpbi9pbmMvUGx1
Z2luSGFuZGxlci5oOg0KKyAgICAgICAgKiBQbHVnaW4vaW5jL1BsdWdpblNraW4uaDoNCisgICAg
ICAgIChDUGx1Z2luU2tpbjo6V2ViS2l0Q29udHJvbCk6DQorICAgICAgICAoQ1BsdWdpblNraW46
OkZyYW1lKToNCisgICAgICAgICogUGx1Z2luL2luYy9QbHVnaW5XaW4uaDoNCisgICAgICAgICog
UGx1Z2luL2luYy9ucGFwaS5oOg0KKyAgICAgICAgKiBQbHVnaW4vc3JjL05wbkltcGxlbWVudGF0
aW9uLmNwcDoNCisgICAgICAgIChOcG5HZXRWYWx1ZSk6DQorICAgICAgICAqIFBsdWdpbi9zcmMv
UGx1Z2luSGFuZGxlci5jcHA6DQorICAgICAgICAoQ1BsdWdpbkluZm86OlBhcnNlRGVmYXVsdERh
dGFMKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6TG9hZFBsdWdpbnNTeW5jTCk6DQorICAg
ICAgICAoQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zTCk6DQorICAgICAgICAoQ1BsdWdpbkhh
bmRsZXI6OlJlbG9hZFBsdWdpbnMpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpHZXRQbHVn
aW5OYW1lKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luRmlsZU5hbWUpOg0K
KyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5EZXNjcmlwdGlvbik6DQorICAgICAg
ICAoQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkNvdW50KToNCisgICAgICAgIChDUGx1Z2luSGFu
ZGxlcjo6UmVsb2FkUGx1Z2luc0wpOg0KKyAgICAgICAgKiBQbHVnaW4vc3JjL1BsdWdpblNraW4u
Y3BwOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpDb25zdHJ1Y3RMKToNCisgICAgICAgIChDUGx1
Z2luU2tpbjo6Q3JlYXRlUGx1Z2luV2luTCk6DQorICAgICAgICAoQ1BsdWdpblNraW46OlNlbGVj
dFZpZXdlckFuZERvd25sb2FkTCk6DQorICAgICAgICAoQ1BsdWdpblNraW46OlBsdWdpblNjcmlw
dGFibGVPYmplY3QpOg0KKyAgICAgICAgKiBQbHVnaW4vc3JjL1BsdWdpbldpbi5jcHA6DQorICAg
ICAgICAoQ1BsdWdpbldpbjo6V2luZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAgICAgKENQbHVn
aW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QpOg0KKyAgICAgICAgKiBSZXNvdXJjZUxvYWRl
ci9zcmMvRmlsZVRyYW5zYWN0aW9uLmNwcDoNCisgICAgICAgIChDRmlsZVRyYW5zYWN0aW9uOjpQ
YXJzZUZpbGVOYW1lTEMpOg0KKyAgICAgICAgKiBncm91cC9Ccm93c2VyVmlldy5tbXA6DQorICAg
ICAgICAqIGdyb3VwL1BsdWdpbi5tbXA6DQorICAgICAgICAqIGdyb3VwL3dlYmtpdC5tbXA6DQor
ICAgICAgICAqIHJvbS93ZWJraXQuaWJ5Og0KKw0KIDIwMDYtMTAtMjMgIG5hZ3VvICA8Z2Vvcmdl
Lmd1b0Bub2tpYS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBTYWNoaW4uDQpJbmRleDog
V2ViS2l0L2dyb3VwL0Jyb3dzZXJWaWV3Lm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91
cC9Ccm93c2VyVmlldy5tbXAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9ncm91cC9Ccm93
c2VyVmlldy5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC03Nyw2ICs3NywxMiBAQA0KIFNPVVJDRSAg
ICAgICAgICBTbWFydExpbmtIYW5kbGVyLmNwcA0KIFNPVVJDRSAgICAgICAgICBTbWFydExpbmtN
YXAuY3BwDQogI2VuZGlmDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitTT1VSQ0UgICAg
ICAgICAgV2lkZ2V0RXh0ZW5zaW9uLmNwcA0KK1NPVVJDRSAgICAgICAgICBXaWRnZXRQcmVmZXJl
bmNlcy5jcHANCitTT1VSQ0UgICAgICAgICAgV2lkZ2V0UmVuZGVyZXIuY3BwDQorU1lTVEVNSU5D
TFVERQkJLi5cLi5cLi5cV2lkZ2V0RW5naW5lXGluYw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lE
R0VUUw0KIFVTRVJJTkNMVURFICAgICAuLlxSZXNvdXJjZUxvYWRlclxJbmMNCiBVU0VSSU5DTFVE
RSAgICAgLi5cUmVzb3VyY2VMb2FkZXJcY2FjaGVJbmMNCiBVU0VSSU5DTFVERSAgICAgLi5cQnJv
d3NlclZpZXdcSW5jDQpJbmRleDogV2ViS2l0L2dyb3VwL1BsdWdpbi5tbXANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvZ3JvdXAvUGx1Z2luLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0
L2dyb3VwL1BsdWdpbi5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC02MCw2ICs2MCw5IEBADQogVVNF
UklOQ0xVREUgICAgIC4uXFJlc291cmNlTG9hZGVyXEluYw0KICNpZm5kZWYgX19CUk9XU0VSX1NE
Sw0KIFVTRVJJTkNMVURFICAgICAuLlwuLlwuLlxQYWdlU2NhbGVyXEluYw0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQorVVNFUklOQ0xVREUgICAgIFxTNjBcbXdcd2ViXFdlYkVuZ2luZVxX
aWRnZXRFbmdpbmVcSW5jDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogI2VuZGlmDQog
VVNFUklOQ0xVREUgICAgIC4uXC4uXFdFQkNPUkVcYnJpZGdlDQogDQpJbmRleDogV2ViS2l0L2dy
b3VwL3dlYmtpdC5tbXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvZ3JvdXAvd2Via2l0Lm1tcAko
cmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L2dyb3VwL3dlYmtpdC5tbXAJKHdvcmtpbmcgY29w
eSkNCkBAIC0xMTUsNiArMTE1LDkgQEANCiBTWVNURU1JTkNMVURFIFxFcG9jMzJcaW5jbHVkZSBc
RXBvYzMyXGluY2x1ZGVcb2VtDQogI2VuZGlmDQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdF
VFMNCitVU0VSSU5DTFVERSAgIC4uXC4uXC4uXFdpZGdldEVuZ2luZVxpbmMNCisjZW5kaWYgLy9S
RF9CUk9XU0VSX1dJREdFVFMNCiAvLy0tDQogDQogU1lTVEVNSU5DTFVERSBcRXBvYzMyXGluY2x1
ZGVcaHR0cA0KSW5kZXg6IFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvUGx1Z2luL2luYy9ucGFwaS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQv
UGx1Z2luL2luYy9ucGFwaS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTQsNyArMTQsNyBAQA0KICAq
DQogICogVGhlIE9yaWdpbmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29kZS4NCiAgKg0KLSAqIFRo
ZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcyANCisgKiBUaGUgSW5p
dGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMNCiAgKiBOZXRzY2FwZSBDb21t
dW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4NCiAgKiBQb3J0aW9ucyBjcmVhdGVkIGJ5IHRoZSBJbml0
aWFsIERldmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAxOTk4DQogICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KQEAgLTczLDEyICs3MywxMiBAQA0KICNlbmRp
Zg0KICNlbmRpZg0KIA0KLS8qIA0KLSAqIE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUg
aW5jbHVzaW9uIA0KLSAqIG9mIG9ic29sZXRlL3Byb3R5cGVzLmgsIHdob3NlIGludDE2LCB1aW50
MTYsIA0KLSAqIGludDMyLCBhbmQgdWludDMyIHR5cGVkZWZzIGNvbmZsaWN0IHdpdGggdGhvc2Ug
DQotICogaW4gdGhpcyBmaWxlLiANCi0gKi8gDQorLyoNCisgKiBOT19OU1BSXzEwX1NVUFBPUlQg
ZGlzYWJsZXMgdGhlIGluY2x1c2lvbg0KKyAqIG9mIG9ic29sZXRlL3Byb3R5cGVzLmgsIHdob3Nl
IGludDE2LCB1aW50MTYsDQorICogaW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qg
d2l0aCB0aG9zZQ0KKyAqIGluIHRoaXMgZmlsZS4NCisgKi8NCiAjaWZuZGVmIE5PX05TUFJfMTBf
U1VQUE9SVA0KICNkZWZpbmUgTk9fTlNQUl8xMF9TVVBQT1JUDQogI2VuZGlmDQpAQCAtMTIwLDcg
KzEyMCw3IEBADQogICAjaW5jbHVkZSA8RXZlbnRzLmg+DQogI2VuZGlmDQogDQotI2lmIGRlZmlu
ZWQoWFBfVU5JWCkgDQorI2lmIGRlZmluZWQoWFBfVU5JWCkNCiAjIGluY2x1ZGUgPHN0ZGlvLmg+
DQogIyBpZiBkZWZpbmVkKE1PWl9YMTEpDQogIyAgIGluY2x1ZGUgPFgxMS9YbGliLmg+DQpAQCAt
Mjk4LDExICsyOTgsMTEgQEANCiAgIHVpbnQxNiByaWdodDsNCiB9IE5QUmVjdDsNCiANCi10eXBl
ZGVmIHN0cnVjdCBfTlBTaXplIA0KLXsgDQotICBpbnQzMiB3aWR0aDsgDQotICBpbnQzMiBoZWln
aHQ7IA0KLX0gTlBTaXplOyANCit0eXBlZGVmIHN0cnVjdCBfTlBTaXplDQorew0KKyAgaW50MzIg
d2lkdGg7DQorICBpbnQzMiBoZWlnaHQ7DQorfSBOUFNpemU7DQogDQogI2lmZGVmIFhQX1VOSVgN
CiAvKg0KQEAgLTM0NSwyMSArMzQ1LDIxIEBADQogDQogDQogLyoNCi0gKiAgIFRoZSBmb2xsb3dp
bmcgbWFza3MgYXJlIGFwcGxpZWQgb24gY2VydGFpbiBwbGF0Zm9ybXMgdG8gTlBOViBhbmQgDQot
ICogICBOUFBWIHNlbGVjdG9ycyB0aGF0IHBhc3MgYXJvdW5kIHBvaW50ZXJzIHRvIENPTSBpbnRl
cmZhY2VzLiBOZXdlciANCi0gKiAgIGNvbXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2Vu
ZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QgDQotICogICBjb21wYXRpYmxlIHdpdGggb2xkZXIg
Y29tcGlsZXJzLiBUbyBwcmV2ZW50IG9sZGVyIHBsdWdpbnMgZnJvbSANCi0gKiAgIG5vdCB1bmRl
cnN0YW5kaW5nIGEgbmV3IGJyb3dzZXIncyBBQkksIHRoZXNlIG1hc2tzIGNoYW5nZSB0aGUgDQor
ICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVkIG9uIGNlcnRhaW4gcGxhdGZvcm1z
IHRvIE5QTlYgYW5kDQorICogICBOUFBWIHNlbGVjdG9ycyB0aGF0IHBhc3MgYXJvdW5kIHBvaW50
ZXJzIHRvIENPTSBpbnRlcmZhY2VzLiBOZXdlcg0KKyAqICAgY29tcGlsZXJzIG9uIHNvbWUgcGxh
dGZvcm1zIG1heSBnZW5lcmF0ZSB2dGFibGVzIHRoYXQgYXJlIG5vdA0KKyAqICAgY29tcGF0aWJs
ZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRlciBwbHVnaW5zIGZyb20NCisg
KiAgIG5vdCB1bmRlcnN0YW5kaW5nIGEgbmV3IGJyb3dzZXIncyBBQkksIHRoZXNlIG1hc2tzIGNo
YW5nZSB0aGUNCiAgKiAgIHZhbHVlcyBvZiB0aG9zZSBzZWxlY3RvcnMgb24gdGhvc2UgcGxhdGZv
cm1zLiBUbyByZW1haW4gYmFja3dhcmRzDQotICogICBjb21wYXRpYmxlIHdpdGggZGlmZmVyZW5l
dCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4gDQorICogICBjb21wYXRpYmxl
IHdpdGggZGlmZmVyZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4NCiAg
KiAgIHVzZSB0aGVzZSBtYXNrcyB0byBkeW5hbWljYWxseSBkZXRlcm1pbmUgYW5kIHVzZSB0aGUg
Y29ycmVjdCBDKysNCi0gKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVjdGluZy4gVGhp
cyBkb2VzIG5vdCBhcHBseSB0byBXaW5kb3dzIA0KKyAqICAgQUJJIHRoYXQgdGhlIGJyb3dzZXIg
aXMgZXhwZWN0aW5nLiBUaGlzIGRvZXMgbm90IGFwcGx5IHRvIFdpbmRvd3MNCiAgKiAgIGFzIE1p
Y3Jvc29mdCdzIENPTSBBQkkgd2lsbCBsaWtlbHkgbm90IGNoYW5nZS4NCiAgKi8NCiANCiAjZGVm
aW5lIE5QX0FCSV9HQ0MzX01BU0sgIDB4MTAwMDAwMDANCiAvKg0KLSAqICAgZ2NjIDMueCBnZW5l
cmF0ZWQgdnRhYmxlcyBvbiBVTklYIGFuZCBPU1ggYXJlIGluY29tcGF0aWJsZSB3aXRoIA0KKyAq
ICAgZ2NjIDMueCBnZW5lcmF0ZWQgdnRhYmxlcyBvbiBVTklYIGFuZCBPU1ggYXJlIGluY29tcGF0
aWJsZSB3aXRoDQogICogICBwcmV2aW91cyBjb21waWxlcnMuDQogICovDQogI2lmIChkZWZpbmVk
IChYUF9VTklYKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykpDQpAQCAt
Mzc1LDcgKzM3NSw3IEBADQogICogICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRv
IGhhdmluZyBhIGRpZmZlcmVudA0KICAqICAgQysrIEFCSSwgaXQgYWxzbyBoYXMgaGFzIGRpZmZl
cmVudCBDIGNhbGxpbmcgY29udmVudGlvbi4NCiAgKiAgIFlvdSBtdXN0IHVzZSBnbHVlIGNvZGUg
d2hlbiBjYWxsaW5nIGJldHdlZW4gQ0ZNIGFuZA0KLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiAN
CisgKiAgIE1hY2gtTyBDIGZ1bmN0aW9ucy4NCiAgKi8NCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JU
X01BQ19NQUNITykpDQogI2RlZmluZSBfTlBfQUJJX01JWElOX0ZPUl9NQUNITyBOUF9BQklfTUFD
SE9fTUFTSw0KQEAgLTQwNCwxMSArNDA0LDEyIEBADQogICAvKiAxMiBhbmQgb3ZlciBhcmUgYXZh
aWxhYmxlIG9uIE1vemlsbGEgYnVpbGRzIHN0YXJ0aW5nIHdpdGggMC45LjkgKi8NCiAgIE5QUFZq
YXZhc2NyaXB0UHVzaENhbGxlckJvb2wgPSAxMiwNCiAgIE5QUFZwbHVnaW5LZWVwTGlicmFyeUlu
TWVtb3J5ID0gMTMsICAgLyogYXZhaWxhYmxlIGluIE1vemlsbGEgMS4wICovDQotICAvKiBUaGUg
Zm9sbG93aW5nIGlzIHNwZWNpZmljIHRvIE5va2lhLCBzbyB2YWx1ZSBpcyANCi0gICAqIHN0YXJ0
ZWQgZnJvbSAxMDAuIFRoZSBudW1iZXJzIDEzIHRvIDEwMDAgYXJlIGxlZnQNCisgIE5QUFZwbHVn
aW5OZWVkc1hFbWJlZCAgICAgICAgID0gMTQsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQg
Ki8NCisgICAvKiBzdGFydGVkIGZyb20gMTAwLiBUaGUgbnVtYmVycyAxMyB0byAxMDAwIGFyZSBs
ZWZ0DQogICAgKiBmb3Igc3RhbmRhcml6YXRpb24gYW5kIG90aGVyIGZ1dHVyZSB1c2UuIFZhbHVl
IHJldHVybiBpcyB6ZXJvIGZvcg0KICAgICogaW5ldGVyYWN0aXZlIGFuZCAnb25lJyBmb3Igbm9u
LWludGVyYWN0aXZlLg0KICAgICovDQorICBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0ICA9
IDE1LA0KICAgTlBQVnBsdWdpbkludGVyYWN0aXZlQm9vbCA9IDEwMDANCiB9IE5QUFZhcmlhYmxl
Ow0KIA0KQEAgLTQyNiw3ICs0MjcsMTUgQEANCiAgIC8qIDEwIGFuZCBvdmVyIGFyZSBhdmFpbGFi
bGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuNCAqLw0KICAgTlBOVnNlcnZp
Y2VNYW5hZ2VyID0gKDEwIHwgTlBfQUJJX01BU0spLA0KICAgTlBOVkRPTUVsZW1lbnQgICAgID0g
KDExIHwgTlBfQUJJX01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLw0KLSAg
TlBOVkRPTVdpbmRvdyAgICAgID0gKDEyIHwgTlBfQUJJX01BU0spDQorICBOUE5WRE9NV2luZG93
ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyksDQorICBOUE5WVG9vbGtpdCAgICAgICAgPSAoMTMg
fCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQorICBOUE5W
U3VwcG9ydHNYRW1iZWRCb29sID0gMTQsICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQg
aW4gV2ViS2l0ICovDQorDQorICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBi
cm93c2VyIHdpbmRvdy4gKi8NCisgIE5QTlZXaW5kb3dOUE9iamVjdCA9IDE1LA0KKw0KKyAgICAv
KiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50LiAq
Lw0KKyAgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdCAgICAgICAgICAgICAgICAgLyogTm90IGlt
cGxlbWVudGVkIGluIFdlYktpdCAqLw0KIH0gTlBOVmFyaWFibGU7DQogDQogLyoNCkluZGV4OiBX
ZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
UGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Q
bHVnaW4vaW5jL1BsdWdpbkhhbmRsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTEzNyw2ICsxMzcs
MTYgQEANCiAgICAgICAgICovDQogICAgICAgICBUVWludCBHZXRJbmRleEZyb21IYW5kbGUoVElu
dCBhSGFuZGxlKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIEdldCB0aGUgaW5kZXggb2YgcGx1Z2luIGluZm8gZnJvbSBpdHMgaGFuZGxl
Lg0KKyAgICAgICAgKg0KKyAgICAgICAgKiBAc2luY2UgMy4xDQorICAgICAgICAqIEBwYXJhbSBh
SGFuZGxlIFRoZSBoYW5kbGUgb2YgdGhlIHBsdWdpbiwgcmV0dXJuZWQgZnJvbSBGaW5kUGx1Z2lu
Lg0KKyAgICAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgcGx1Z2luIGluZm8uDQorICAg
ICAgICAqLw0KKyAgICAgICAgVEJvb2wgTG9hZFBsdWdpbnNTeW5jTCgpOw0KKyNlbmRpZiAvL1JE
X0JST1dTRVJfV0lER0VUUw0KICAgICBwdWJsaWM6IC8vRnJvbSBNV2ViQ29yZVBsdWdpbkhhbmRs
ZXINCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBTY2FucyBmb3IgbmV3IHBsdWdpbnMuDQpJbmRl
eDogV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luU2tpbi5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L1BsdWdpbi9pbmMvUGx1Z2luU2tpbi5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1
Z2luL2luYy9QbHVnaW5Ta2luLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xNjgsNyArMTY4LDE0IEBA
DQogICAgICAgICAqIEBzaW5jZSAzLjENCiAgICAgICAgICogQHJldHVybiBUaGUgV2ViS2l0Q29u
dHJvbCBvYmplY3QNCiAgICAgICAgICovDQotICAgICAgICBDV2ViS2l0Q29udHJvbCogV2ViS2l0
Q29udHJvbCgpIHsgcmV0dXJuICZpV2ViS2l0RnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRDb250
cm9sKCk7IH0NCisgICAgICAgIENXZWJLaXRDb250cm9sKiBXZWJLaXRDb250cm9sKCkgY29uc3Qg
eyByZXR1cm4gJmlXZWJLaXRGcmFtZS0+V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKTsgfQ0K
KyAgICAgICAgLyoqDQorICAgICAgICAqIEZyYW1lDQorICAgICAgICAqIFJldHVybnMgYSBwb2lu
dGVyIHRvIFdlYktpdEZyYW1lIG9iamVjdC4NCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAg
ICAgKiBAcmV0dXJuIFRoZSBXZWJLaXRDb250cm9sIG9iamVjdA0KKyAgICAgICAgKi8NCisgICAg
ICAgIENXZWJLaXRGcmFtZSogRnJhbWUoKSBjb25zdCB7IHJldHVybiBpV2ViS2l0RnJhbWU7IH0g
DQogDQogICAgICAgICAvKioNCiAgICAgICAgICogSGFzUmVzaXplZA0KQEAgLTM2Miw2ICszNjks
MTUgQEANCiAgICAgICAgIFRCb29sIENhbkludGVyYWN0KCkgY29uc3QgICAgICAgICAgIHsgcmV0
dXJuIGlDYW5QbHVnaW5JbnRlcmFjdDsgfQ0KICNlbmRpZg0KIA0KKyNpZmRlZiAgUkRfQlJPV1NF
Ul9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogR2V0IHRoZSBzY3JpcHRpbmcgb2Jq
ZWN0IGZyb20gcGx1Z2luDQorICAgICAgICAqIFNldHMgdGhlIGZvbnQNCisgICAgICAgICogQHNp
bmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCAq
UGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpOyANCisjZW5kaWYNCiAgIHB1YmxpYzogLy8gRnVuY3Rp
b25zIGZyb20gTVZpZXdGb2N1c09ic2VydmVyDQogDQogICAgICAgICAvKioNCkluZGV4OiBXZWJL
aXQvUGx1Z2luL2luYy9QbHVnaW5XaW4uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4v
aW5jL1BsdWdpbldpbi5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL2luYy9Q
bHVnaW5XaW4uaAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDkgQEANCiBjbGFzcyBDV2Vi
S2l0Q29udHJvbDsNCiBjbGFzcyBDUGx1Z2luU2tpbjsNCiBjbGFzcyBDUGx1Z2luSGFuZGxlcjsN
CisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK2NsYXNzIE5QT2JqZWN0Ow0KKyNlbmRpZiAv
L1JEX0JST1dTRVJfV0lER0VUUw0KIA0KIC8vIExPQ0FMIENPTlNUQU5UUyBBTkQgTUFDUk9TDQog
Ly8gVGhlc2UgYXJlIHVzZWQgdG8gZGVzaWduYXRlIHRoZSBoYW5kbGluZyBvZiBpbmNvbWluZyBj
b250ZW50IGFuZCBsb2FkaW5nIFBsdWdpbnMNCkBAIC00NjYsNiArNDY5LDIxIEBADQogICAgICAg
ICAqLw0KICAgICB2b2lkIEhhbmRsZUxvc2luZ0ZvcmVncm91bmQoKTsNCiANCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIFJldHVybiB3aW5kb3cg
b2JqZWN0IHVzYWJsZSBmcm9tIHNjcmlwdGFibGUgcGx1Z2lucyANCisgICAgICAgICogQHNpbmNl
IDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAgICAgICovICAgICAgICANCisgICAg
ICAgIE5QT2JqZWN0KiBXaW5kb3dTY3JpcHROUE9iamVjdCgpOyANCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBHZXQgdGhlIHNjcmlwdGluZyBvYmplY3QgZnJvbSBwbHVnaW4NCisgICAgICAgICog
U2V0cyB0aGUgZm9udA0KKyAgICAgICAgKiBAc2luY2UgMy4xDQorICAgICAgICAqIEByZXR1cm4N
CisgICAgICAgICovDQorICAgICAgICB2b2lkICpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCk7ICAg
ICAgICAgDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogICAgIHByb3RlY3RlZDog
Ly8gTmV3IGZ1bmN0aW9ucw0KIA0KSW5kZXg6IFdlYktpdC9QbHVnaW4vc3JjL05wbkltcGxlbWVu
dGF0aW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vc3JjL05wbkltcGxlbWVu
dGF0aW9uLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9zcmMvTnBuSW1w
bGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDI1LDcgKzQyNSwyMCBAQA0KICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgIH0NCiAgICAgICAgICAgICBicmVhazsNCi0gICAg
ICAgICAgICANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgY2FzZSBOUE5W
V2luZG93TlBPYmplY3Q6DQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIENQbHVnaW5XaW4q
IHBsdWdpbldpbiA9IChDUGx1Z2luV2luKilhSW5zdGFuY2UtPm5kYXRhOw0KKyAgICAgICAgICAg
IE5QT2JqZWN0KiB3aW5kb3dPYmplY3QgPSBwbHVnaW5XaW4tPldpbmRvd1NjcmlwdE5QT2JqZWN0
KCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvd09iamVjdCkNCisgICAgICAgICAgICAgICAgew0K
KyAgICAgICAgICAgICAgICB2b2lkICoqdiA9ICh2b2lkICoqKWFSZXRWYWx1ZTsNCisgICAgICAg
ICAgICAgICAgKnYgPSB3aW5kb3dPYmplY3Q7DQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVS
Ul9OT19FUlJPUjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBOUEVS
Ul9HRU5FUklDX0VSUk9SOw0KKyAgICAgICAgICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJ
REdFVFMNCiAgICAgICAgIGNhc2UgTlBOVkRPTVdpbmRvdzoNCiAgICAgICAgIGNhc2UgTlBOVnhE
aXNwbGF5OiAgICAgICAgICAvLyBVbml4IG9ubHk6IFJldHVybnMgdGhlIGN1cnJlbnQgRGlzcGxh
eQ0KICAgICAgICAgY2FzZSBOUE5WeHRBcHBDb250ZXh0OiAgICAgIC8vIFVuaXggb25seTogUmV0
dXJucyB0aGUgYXBwbGljYXRpb24ncyBYdEFwcENvbnRleHQNCkluZGV4OiBXZWJLaXQvUGx1Z2lu
L3NyYy9QbHVnaW5IYW5kbGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vc3Jj
L1BsdWdpbkhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL3Ny
Yy9QbHVnaW5IYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTEwLDkgKzEwLDkgQEANCiAq
ICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24NCiAqICAgIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQogKiAgDQotKiAgCVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KLSogIAltb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCi0qICAJ
YXJlIG1ldDoNCisqICAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorKiAgICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyogICAgICBh
cmUgbWV0Og0KICogIA0KICogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KQEAgLTI0LDE4
ICsyNCwxOCBAQA0KICogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KICogICAgICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAqICANCi0qICAJ
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUw0KLSogIAkiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KLSogIAlMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCi0qICAJQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQNCi0qICAJT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQotKiAgCVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCi0qICAJTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQotKiAgCURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQ0KLSogIAlUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotKiAgCShJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFDQotKiAg
CVVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0gNCi0qICAJREFNQUdFLg0KKyogICAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorKiAgICAgICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UDQorKiAgICAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyogICAgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyogICAgICBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwNCisqICAgICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyogICAgICBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisqICAg
ICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZDQorKiAgICAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisqICAgICAgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUNCisq
ICAgICAgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSA0KKyogICAgICBEQU1BR0UuDQogKiAgDQogKiAgICBQbGVhc2Ugc2VlIGZp
bGUgcGF0ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLg0KICogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQpAQCAtMzI1LDggKzMyNSw4IEBADQogICAgICAgICAgICAgaWYgKGkgPiBtYXJr
ZXIpDQogICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgVFB0ckM4IG1pbWVGaWxl
RXh0OChhTUlNRURlc2NyaXB0aW9uLk1pZChtYXJrZXIsaS1tYXJrZXIpKTsNCi0JICAgICAgICAg
ICAgbmV3TWltZUZpbGVFeHRFbnRyeSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQotCSAgICAg
ICAgICAgIG5ld01pbWVGaWxlRXh0RW50cnktPkRlcygpLkNvcHkobWltZUZpbGVFeHQ4KTsNCisg
ICAgICAgICAgICAgICAgbmV3TWltZUZpbGVFeHRFbnRyeSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtl
cik7DQorICAgICAgICAgICAgICAgIG5ld01pbWVGaWxlRXh0RW50cnktPkRlcygpLkNvcHkobWlt
ZUZpbGVFeHQ4KTsNCiAgICAgICAgICAgICAgICAgVXNlcjo6TGVhdmVJZkVycm9yKGlNaW1lRmls
ZUV4dGVuc2lvbnMuQXBwZW5kKG5ld01pbWVGaWxlRXh0RW50cnkpKTsNCiAgICAgICAgICAgICAg
ICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsgLy9wb3AgbmV3TWltZUZpbGVFeHRFbnRyeQ0KIA0KQEAg
LTM2Niw4ICszNjYsOCBAQA0KICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgLy8gQ3JlYXRlIG5ldyBtaW1lRGVzY3JpcHRpb24gZW50cnkNCiAgICAgICAgICAgICAg
ICAgICAgIFRQdHJDOCBtaW1lRGVzYzgoYU1JTUVEZXNjcmlwdGlvbi5NaWQobWFya2VyLGktbWFy
a2VyKSk7DQotCQkgICAgICAgICAgICBuZXdNaW1lRGVzY3JpcHRpb25FbnRyeSA9IEhCdWZDOjpO
ZXdMQyhpLW1hcmtlcik7DQotCQkgICAgICAgICAgICBuZXdNaW1lRGVzY3JpcHRpb25FbnRyeS0+
RGVzKCkuQ29weShtaW1lRGVzYzgpOw0KKyAgICAgICAgICAgICAgICAgICAgbmV3TWltZURlc2Ny
aXB0aW9uRW50cnkgPSBIQnVmQzo6TmV3TEMoaS1tYXJrZXIpOw0KKyAgICAgICAgICAgICAgICAg
ICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnktPkRlcygpLkNvcHkobWltZURlc2M4KTsNCiANCiAg
ICAgICAgICAgICAgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpTWltZURlc2NyaXB0aW9ucy5B
cHBlbmQobmV3TWltZURlc2NyaXB0aW9uRW50cnkpKTsNCiAgICAgICAgICAgICAgICAgICAgIENs
ZWFudXBTdGFjazo6UG9wKCk7ICAvL3BvcCBuZXdNaW1lRGVzY3JpcHRpb25FbnRyeQ0KQEAgLTUy
MSw3ICs1MjEsMjggQEANCiAgICAgcmV0dXJuIGRvbmVJbml0Ow0KICAgICB9DQogDQorI2lmZGVm
ICBSRF9CUk9XU0VSX1dJREdFVFMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENQbHVn
aW5IYW5kbGVyOjpJbml0aWFsaXplDQorLy8NCisvLyBJbml0aWFsaXplcyB0aGUgUGx1Z2luSGFu
ZGxlciwgcG9zc2libHkgYXN5bmNocm9ub3VzbHkNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vDQorVEJvb2wgQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zU3luY0woKQ0KKyAgICB7DQor
ICAgIGlmKCBpUGx1Z2luSW5mb0FycmF5LkNvdW50KCkgIT0gMCApDQorICAgICAgICB7DQorICAg
ICAgICByZXR1cm4gRVRydWU7DQorICAgICAgICB9DQorDQorICAgIC8vQ2FuY2VsIHRoZSBlYXJs
aWVyIHJlcXVlc3QgYW5kIGxvYWQgcGx1Z2lucyBub3cNCisgICAgaWYoIGlJZGxlICkNCisgICAg
ICAgIHsNCisgICAgICAgIGlJZGxlLT5DYW5jZWwoKTsNCisgICAgICAgIH0NCisgICAgcmV0dXJu
IExvYWRQbHVnaW5zTCgpOw0KKyAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
Ly8gQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zTA0KIC8vDQogLy8gTG9hZHMgYWxsIHRoZSBw
bHVnaW5zIGFuZCBxdWVyeSB0aGVtIGZvciBkZXRhaWxzLg0KQEAgLTUzNSwzMiArNTU2LDMyIEBA
DQogICAgIC8vIENyZWF0ZSB0aGUgRUNvbSBpbmZvIGFycmF5LCBjb250YWlucyB0aGUgcGx1Z2lu
IGluZm9ybWF0aW9uDQogICAgIFJJbXBsSW5mb1B0ckFycmF5IGVjb21QbHVnaW5JbmZvQXJyYXk7
DQogDQotCS8vIEdldCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0aGF0IG1hdGNoIHRoZSBLTkJyb3dz
ZXJQbHVnaW5JbnRlcmZhY2VVaWQNCi0JUkVDb21TZXNzaW9uOjpMaXN0SW1wbGVtZW50YXRpb25z
TChLQnJvd3NlclBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBsdWdpbkluZm9BcnJheSk7DQorICAg
IC8vIEdldCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0aGF0IG1hdGNoIHRoZSBLTkJyb3dzZXJQbHVn
aW5JbnRlcmZhY2VVaWQNCisgICAgUkVDb21TZXNzaW9uOjpMaXN0SW1wbGVtZW50YXRpb25zTChL
QnJvd3NlclBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBsdWdpbkluZm9BcnJheSk7DQogDQotCS8v
IExvb3AgdGhyb3VnaCBhbGwgdGhlIE5ldHNjYXBlIHBsdWdpbnMgZm91bmQgYnkgRUNvbSBhbmQg
cG9wdWxhdGUgdGhlDQotCS8vIGlQbHVnaW5JbmZvQXJyYXkNCi0JY29uc3QgVEludCBwbHVnaW5D
b3VudCA9IGVjb21QbHVnaW5JbmZvQXJyYXkuQ291bnQoKTsNCi0JZm9yIChUSW50IGluZGV4PTA7
IGluZGV4PHBsdWdpbkNvdW50OyArK2luZGV4KQ0KKyAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRo
ZSBOZXRzY2FwZSBwbHVnaW5zIGZvdW5kIGJ5IEVDb20gYW5kIHBvcHVsYXRlIHRoZQ0KKyAgICAv
LyBpUGx1Z2luSW5mb0FycmF5DQorICAgIGNvbnN0IFRJbnQgcGx1Z2luQ291bnQgPSBlY29tUGx1
Z2luSW5mb0FycmF5LkNvdW50KCk7DQorICAgIGZvciAoVEludCBpbmRleD0wOyBpbmRleDxwbHVn
aW5Db3VudDsgKytpbmRleCkNCiAgICAgICAgIHsNCi0JCUNQbHVnaW5JbmZvKiBwbHVnaW5JbmZv
ID0gbmV3KEVMZWF2ZSkgQ1BsdWdpbkluZm87DQotCSAgICBwbHVnaW5JbmZvLT5pSGFuZGxlID0g
aU5leHRIYW5kbGUrKzsNCi0JICAgIENsZWFudXBTdGFjazo6UHVzaEwocGx1Z2luSW5mbyk7DQor
ICAgICAgICBDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IG5ldyhFTGVhdmUpIENQbHVnaW5JbmZv
Ow0KKyAgICAgICAgcGx1Z2luSW5mby0+aUhhbmRsZSA9IGlOZXh0SGFuZGxlKys7DQorICAgICAg
ICBDbGVhbnVwU3RhY2s6OlB1c2hMKHBsdWdpbkluZm8pOw0KIA0KLQkgICAgLy8gU2V0IHRoZSBw
bHVnaW4gcHJvcGVydGllcw0KLQkgICAgcGx1Z2luSW5mby0+aVBsdWdpbkluZm8gPSBlY29tUGx1
Z2luSW5mb0FycmF5W2luZGV4XTsNCi0JICAgIC8vIFJlYWQgdGhlIHBsdWdpbidzIG5hbWUgYW5k
IHBsdWdpbiBGaWxlTmFtZSAoZGlzcGxheV9uYW1lKSBmcm9tIHRoZSBJTVBMRU1FTlRBVElPTl9J
TkZPDQotCSAgICBwbHVnaW5JbmZvLT5QYXJzZURpc3BsYXlOYW1lTChwbHVnaW5JbmZvLT5pUGx1
Z2luSW5mby0+RGlzcGxheU5hbWUoKSk7DQotCSAgICBwbHVnaW5JbmZvLT5pRGVzY3JpcHRpb24g
PSBIQnVmQzo6TmV3TChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+T3BhcXVlRGF0YSgpLkxlbmd0
aCgpKTsNCi0JICAgIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbi0+RGVzKCkuQ29weShwbHVnaW5J
bmZvLT5pUGx1Z2luSW5mby0+T3BhcXVlRGF0YSgpKTsNCi0JICAgIHBsdWdpbkluZm8tPmlVaWQg
PSBwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+SW1wbGVtZW50YXRpb25VaWQoKTsNCi0JICAgIC8v
IFBhcnNlcyB0aGUgYU1JTUVEZXNjcmlwdGlvbiBzdHJpbmcgdG8gcG9wdWxhdGUgdGhlIG1pbWVU
eXBlcywgbWltZUV4dGVuc2lvbnMsDQotCSAgICAvLyBhbmQgbWltZURlc2NyaXB0aW9ucyBhcnJh
eXMuDQotCSAgICBwbHVnaW5JbmZvLT5QYXJzZURlZmF1bHREYXRhTChwbHVnaW5JbmZvLT5pUGx1
Z2luSW5mby0+RGF0YVR5cGUoKSk7DQorICAgICAgICAvLyBTZXQgdGhlIHBsdWdpbiBwcm9wZXJ0
aWVzDQorICAgICAgICBwbHVnaW5JbmZvLT5pUGx1Z2luSW5mbyA9IGVjb21QbHVnaW5JbmZvQXJy
YXlbaW5kZXhdOw0KKyAgICAgICAgLy8gUmVhZCB0aGUgcGx1Z2luJ3MgbmFtZSBhbmQgcGx1Z2lu
IEZpbGVOYW1lIChkaXNwbGF5X25hbWUpIGZyb20gdGhlIElNUExFTUVOVEFUSU9OX0lORk8NCisg
ICAgICAgIHBsdWdpbkluZm8tPlBhcnNlRGlzcGxheU5hbWVMKHBsdWdpbkluZm8tPmlQbHVnaW5J
bmZvLT5EaXNwbGF5TmFtZSgpKTsNCisgICAgICAgIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbiA9
IEhCdWZDOjpOZXdMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5PcGFxdWVEYXRhKCkuTGVuZ3Ro
KCkpOw0KKyAgICAgICAgcGx1Z2luSW5mby0+aURlc2NyaXB0aW9uLT5EZXMoKS5Db3B5KHBsdWdp
bkluZm8tPmlQbHVnaW5JbmZvLT5PcGFxdWVEYXRhKCkpOw0KKyAgICAgICAgcGx1Z2luSW5mby0+
aVVpZCA9IHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5JbXBsZW1lbnRhdGlvblVpZCgpOw0KKyAg
ICAgICAgLy8gUGFyc2VzIHRoZSBhTUlNRURlc2NyaXB0aW9uIHN0cmluZyB0byBwb3B1bGF0ZSB0
aGUgbWltZVR5cGVzLCBtaW1lRXh0ZW5zaW9ucywNCisgICAgICAgIC8vIGFuZCBtaW1lRGVzY3Jp
cHRpb25zIGFycmF5cy4NCisgICAgICAgIHBsdWdpbkluZm8tPlBhcnNlRGVmYXVsdERhdGFMKHBs
dWdpbkluZm8tPmlQbHVnaW5JbmZvLT5EYXRhVHlwZSgpKTsNCiANCi0JICAgIC8vIEFkZCB0aGUg
ZmlsdGVyIGluZm9ybWF0aW9uIHRvIHRoZSBsaXN0DQotCSAgICBVc2VyOjpMZWF2ZUlmRXJyb3Io
aVBsdWdpbkluZm9BcnJheS5BcHBlbmQocGx1Z2luSW5mbykpOw0KLQkgICAgQ2xlYW51cFN0YWNr
OjpQb3AoKTsgICAgLy8gcGx1Z2luSW5mbw0KKyAgICAgICAgLy8gQWRkIHRoZSBmaWx0ZXIgaW5m
b3JtYXRpb24gdG8gdGhlIGxpc3QNCisgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpUGx1Z2lu
SW5mb0FycmF5LkFwcGVuZChwbHVnaW5JbmZvKSk7DQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cCgpOyAgICAvLyBwbHVnaW5JbmZvDQogICAgICAgICB9DQogDQogICAgIC8vIENsZWFuIHVwIHRo
ZSBFQ29tIGluZm8gYXJyYXkNCkBAIC03MTksNyArNzQwLDcgQEANCiAvLw0KIHZvaWQgQ1BsdWdp
bkhhbmRsZXI6OlJlbG9hZFBsdWdpbnMoVEJvb2wgYVJlbG9hZFBhZ2VzLCAgTVdlYkNsaWVudEJy
aWRnZSYgYVdlYkNsaWVudEJyaWRnZSkNCiAgICB7DQotCVRSQVBfSUdOT1JFKCBSZWxvYWRQbHVn
aW5zTChhUmVsb2FkUGFnZXMsIGFXZWJDbGllbnRCcmlkZ2UpKTsNCisgICAgVFJBUF9JR05PUkUo
IFJlbG9hZFBsdWdpbnNMKGFSZWxvYWRQYWdlcywgYVdlYkNsaWVudEJyaWRnZSkpOw0KICAgIH0N
CiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTcyOSwxMiArNzUwLDEyIEBADQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBUUHRyQyBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luTmFt
ZShUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1
Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5p
TmFtZSkNCi0gCSAgIHsNCi0gCSAgIHJldHVybiBwbHVnaW5JbmZvLT5OYW1lKCktPkRlcygpOw0K
LSAJICAgfQ0KLSAJcmV0dXJuIFRQdHJDKCk7DQorICAgICBDUGx1Z2luSW5mbyogcGx1Z2luSW5m
byA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCisgICAgIGlmIChwbHVnaW5JbmZvICYmIHBs
dWdpbkluZm8tPmlOYW1lKQ0KKyAgICAgICAgew0KKyAgICAgICAgcmV0dXJuIHBsdWdpbkluZm8t
Pk5hbWUoKS0+RGVzKCk7DQorICAgICAgICB9DQorICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAg
fQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtNzQ0LDEyICs3NjUsMTIgQEANCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIFRQdHJDIENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5G
aWxlTmFtZShUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8g
PSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5J
bmZvLT5pRmlsZU5hbWUpDQotIAkgICB7DQotIAkgICByZXR1cm4gcGx1Z2luSW5mby0+RmlsZU5h
bWUoKS0+RGVzKCk7DQotIAkgICB9DQotIAlyZXR1cm4gVFB0ckMoKTsNCisgICAgIENQbHVnaW5J
bmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJheVthSW5kZXhdOw0KKyAgICAgaWYgKHBs
dWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aUZpbGVOYW1lKQ0KKyAgICAgICAgew0KKyAgICAgICAg
cmV0dXJuIHBsdWdpbkluZm8tPkZpbGVOYW1lKCktPkRlcygpOw0KKyAgICAgICAgfQ0KKyAgICAg
cmV0dXJuIFRQdHJDKCk7DQogICAgIH0NCiANCiANCkBAIC03NjAsMTIgKzc4MSwxMiBAQA0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogVFB0ckMgQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkRl
c2NyaXB0aW9uKFRJbnQgYUluZGV4KQ0KICAgICB7DQotIAlDUGx1Z2luSW5mbyogcGx1Z2luSW5m
byA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCi0gCWlmIChwbHVnaW5JbmZvICYmIHBsdWdp
bkluZm8tPmlEZXNjcmlwdGlvbikNCi0gCSAgIHsNCi0gCSAgIHJldHVybiBwbHVnaW5JbmZvLT5E
ZXNjcmlwdGlvbigpLT5EZXMoKTsNCi0gCSAgIH0NCi0gCXJldHVybiBUUHRyQygpOw0KKyAgICAg
Q1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQorICAg
ICBpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pRGVzY3JpcHRpb24pDQorICAgICAgICB7
DQorICAgICAgICByZXR1cm4gcGx1Z2luSW5mby0+RGVzY3JpcHRpb24oKS0+RGVzKCk7DQorICAg
ICAgICB9DQorICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAgfQ0KIA0KIA0KQEAgLTc3Nyw4ICs3
OTgsOCBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogVEludCBDUGx1Z2luSGFuZGxlcjo6
R2V0UGx1Z2luQ291bnQoKQ0KICAgICB7DQotCXJldHVybiBpUGx1Z2luSW5mb0FycmF5LkNvdW50
KCk7DQotCX0NCisgICAgcmV0dXJuIGlQbHVnaW5JbmZvQXJyYXkuQ291bnQoKTsNCisgICAgfQ0K
IA0KIA0KIA0KQEAgLTkwNiw3ICs5MjcsNyBAQA0KICAgICB0bXBQbHVnaW5JbmZvQXJyYXkuQ2xv
c2UoKTsNCiAgICAgaWYgKGFSZWxvYWRQYWdlcykNCiAgICAgICAgIHsNCi0JCWFXZWJDbGllbnRC
cmlkZ2UuUmVsb2FkKCk7DQorICAgICAgICBhV2ViQ2xpZW50QnJpZGdlLlJlbG9hZCgpOw0KICAg
ICAgICAgfQ0KICAgICB9DQogDQpJbmRleDogV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luU2tpbi5j
cHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5Ta2luLmNwcAkocmV2
aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luU2tpbi5jcHAJKHdvcmtp
bmcgY29weSkNCkBAIC02OSw2ICs2OSw5IEBADQogI2luY2x1ZGUgIldlYktpdFZpZXcuaCINCiAj
aW5jbHVkZSAiV2ViS2l0Q29udHJvbC5oIg0KICNpbmNsdWRlICJXZWJDb3JlR3JhcGhpY3NDb250
ZXh0LmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0
ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogLy8gQ09OU1RBTlRT
DQogLy8gc2NoZW1lIGZvciBSVFNQIHVybA0KQEAgLTE1NSw3ICsxNTgsNyBAQA0KICNlbmRpZg0K
ICAgICByZXAtPkdldCggS0Jyb3dzZXJVc0J1aWxkLCB2YWx1ZSApOw0KICAgICBkZWxldGUgcmVw
Ow0KLSAgICANCisNCiAgICAgaWYgKCAhdmFsdWUgfHwgYUNhblBsdWdpbkludGVyYWN0ICkNCiAg
ICAgICAgIHsNCiAgICAgICAgIGlDYW5QbHVnaW5JbnRlcmFjdCA9IEVUcnVlOw0KQEAgLTIwNCw3
ICsyMDcsMTIgQEANCiAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsg
IC8vIHVybFNjaGVtZQ0KICAgICAgICAgICAgIH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IGlXZWJLaXRGcmFtZS0+
V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKS5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgICAg
IGlmICggYlJ0c3BGb3VuZCB8fCAod2RndEV4dCAmJiBhVXJsLkxlbmd0aCgpID09IDApKQ0KKyNl
bHNlDQogICAgICAgICBpZiAoIGJSdHNwRm91bmQgKQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lE
R0VUUw0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAvLyBJZiBydHNwIHNjaGVtZSBpbiB1
cmwsIHBhc3MgdG8gcGx1Z2luIGRpcmVjdGx5LA0KICAgICAgICAgICAgIC8vIGFmdGVyIHRoZSBh
dHRyaWJ1dGUgYXJyYXlzIGluaXRpYWxpemVkDQpAQCAtNTU1LDcgKzU2Myw3IEBADQogICAgIHsN
CiAgICAgLy8gVGhlIGFMb2FkTW9kZSBpcyBub3QgY3VycmVudGx5IHVzZWQuICBJdCB3b3VsZCBi
ZSB1c2VkIGZvciBjaGVja2luZyB0aGUNCiAgICAgLy8gbG9hZCBtb2RlIGFuZCBkZXRlcm1pbmlu
ZyBpZiB0aGUgcGx1Z2luIHNob3VsZCBiZSBkZWxldGVkIGFuZCByZWNyZWF0ZWQuDQotICAgIA0K
Kw0KICAgICAvLyBDcmVhdGUgdGhlIFBsdWdpbldpbiwgaWYgaXQgZG9lc24ndCBleGlzdCwNCiAg
ICAgaWYgKCAhaVBsdWdpbldpbiApDQogICAgICAgICB7DQpAQCAtNTYzLDcgKzU3MSw3IEBADQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlBdHRyaWJ1dGVOYW1lcywgKmlB
dHRyaWJ1dGVWYWx1ZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRo
aXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVdlYktpdEZyYW1lLT5X
ZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpKSApOw0KLSAgICAgICAgDQorDQogICAgICAgICBp
ZiAoIGVyciAhPSBLRXJyTm9uZSApDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGlmICgg
ZXJyID09IEtFcnJOb3RTdXBwb3J0ZWQgKQ0KQEAgLTU3NSw3ICs1ODMsNyBAQA0KICAgICAgICAg
ICAgICAgICBVc2VyOjpMZWF2ZSggZXJyICk7DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICB9DQotICAgICAgICAgICAgDQorDQogICAgICAgICBpZiAoICFpSXNTb3VuZHN0YXJ0ICkN
CiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgLy8gUmVmcmVzaA0KQEAgLTYxOCw3ICs2MjYs
NyBAQA0KICAgICBDQXJyYXlGaXhGbGF0PFRCckN0bFNlbGVjdE9wdGlvbkRhdGE+KiBvYmpMaXN0
ID0gbmV3IChFTGVhdmUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQXJyYXlGaXhGbGF0PFRCckN0bFNlbGVjdE9wdGlvbkRhdGE+KDIpOw0KICAgICBD
bGVhbnVwU3RhY2s6OlB1c2hMKG9iakxpc3QpOw0KLSAgICANCisNCiAgICAgLy8gQWRkIG9iamVj
dCBsaXN0IGVudHJ5DQogICAgIGZvciAoaW50IGk9MDsgaTwyOyBpKyspDQogICAgICAgICB7DQpA
QCAtNjUwLDEwICs2NTgsMTAgQEANCiAgICAgb2JqTGlzdC0+UmVzZXQoKTsNCiAgICAgQ2xlYW51
cFN0YWNrOjpQb3BBbmREZXN0cm95KCA0ICk7Ly8gb2JqTGlzdCwgdGV4dCwgdGV4dCwgdGl0bGUN
CiAgICAgfQ0KLSAgICANCisNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENQbHVnaW5T
a2luOjpJc0ZvY3VzYWJsZQ0KLS8vIA0KKy8vDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
Lw0KIFRCb29sIENQbHVnaW5Ta2luOjpJc0ZvY3VzYWJsZSgpIGNvbnN0DQpAQCAtNjY0LDMgKzY3
MiwxMCBAQA0KICAgICAgICAgcmV0dXJuIEVGYWxzZTsNCiAgICAgfQ0KIA0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQordm9pZCogQ1BsdWdpblNraW46OlBsdWdpblNjcmlwdGFibGVPYmpl
Y3QoKQ0KKyAgICB7DQorICAgIHJldHVybiBpUGx1Z2luV2luP2lQbHVnaW5XaW4tPlBsdWdpblNj
cmlwdGFibGVPYmplY3QoKTowOw0KKyAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRT
DQorDQpJbmRleDogV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luV2luLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbldpbi5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbldpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC01Myw2
ICs1Myw3IEBADQogI2luY2x1ZGUgIlBsdWdpblNraW4uaCINCiAjaW5jbHVkZSAiUGx1Z2luSGFu
ZGxlci5oIg0KICNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgiDQorI2luY2x1ZGUgIldlYktpdEJy
aWRnZS5oIg0KIA0KIC8vIENPTlNUQU5UUw0KIGNvbnN0IFRJbnQgS1BsdWdpbkdyYW51bGFyaXR5
ID0gMzsNCkBAIC0xMTk5LDggKzEyMDAsMzMgQEANCiAgICAgICAgIH0gICAgICAgICAgICAgICAg
IA0KICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyAgDQorTlBPYmplY3QqIENQbHVnaW5XaW46OldpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCkNCisgICAgew0KKyAgICByZXR1cm4gaVBsdWdpblNraW4tPkZyYW1lKCktPldlYktpdEJy
aWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5XaW5kb3dTY3JpcHROUE9iamVjdCgpOw0KKyAgICB9DQog
DQorDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDUGx1Z2luV2luOjpQbHVnaW5TY3Jp
cHRhYmxlT2JqZWN0IA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gIA0KK3ZvaWQqIENQ
bHVnaW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QoKQ0KKyAgICB7DQorICAgIGlmIChpUGx1
Z2luRnVuY3MtPmdldHZhbHVlKSB7DQorICAgICAgICB2b2lkICp2YWx1ZSA9IDA7DQorICAgICAg
ICBOUEVycm9yIG5wRXJyID0gaVBsdWdpbkZ1bmNzLT5nZXR2YWx1ZSggaUluc3RhbmNlLCBOUFBW
cGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAodm9pZCAqKSZ2YWx1ZSk7DQorICAgICAgICBpZiAo
bnBFcnIgPT0gTlBFUlJfTk9fRVJST1IpIHsNCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7DQor
ICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuICh2b2lkICopMDsgICAgDQorICAgIH0NCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vIENQbHVnaW5XaW46OklzQ29udGVudEludGVyYWN0aXZlKCkNCiAvLyBUZWxscyAgdGhhdCBw
bHVnaW4gY29udGVudCBjYW4gYWNjZXB0IHVzZXIgaW50ZXJhY3Rpb24uIA0KIC8vIFRoZSByZXR1
cm4gdmFsdWUgb2YgaVBsdWdpbkZ1bmNzLT5nZXR2YWx1ZSAiMCIgb3IgZmFsc2UgbWVhbnMgIHBs
dWdpbiBpcyBpbnRlcmFjdGl2ZS4gDQpJbmRleDogV2ViS2l0L3JvbS93ZWJraXQuaWJ5DQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L3JvbS93ZWJraXQuaWJ5CShyZXZpc2lvbiAxNzA2OSkNCisrKyBX
ZWJLaXQvcm9tL3dlYmtpdC5pYnkJKHdvcmtpbmcgY29weSkNCkBAIC01OCw2ICs1OCw5IEBADQog
ZmlsZT1BQklfRElSXEJVSUxEX0RJUlxCcm93c2VyQ2FjaGUuZGxsICAgICAgICAgICAgICAgICBT
SEFSRURfTElCX0RJUlxCcm93c2VyQ2FjaGUuZGxsDQogZmlsZT1BQklfRElSXEJVSUxEX0RJUlxI
aXN0b3J5UHJvdmlkZXIuZGxsICAgICAgICAgICAgICBTSEFSRURfTElCX0RJUlxIaXN0b3J5UHJv
dmlkZXIuZGxsDQogZmlsZT1BQklfRElSXEJVSUxEX0RJUlxUb29sQmFyLmRsbCAgICAgICAgICAg
ICAgICAgICAgICBTSEFSRURfTElCX0RJUlxUb29sQmFyLmRsbA0KKyNpZmRlZiAgUkRfQlJPV1NF
Ul9XSURHRVRTDQorZmlsZT1BQklfRElSXEJVSUxEX0RJUlxXaWRnZXRFbmdpbmUuZGxsICAgICAg
ICAgICAgICAgICAgICAgIFNIQVJFRF9MSUJfRElSXFdpZGdldEVuZ2luZS5kbGwNCisjZW5kaWYg
Ly9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiBFQ09NX1BMVUdJTihCcm93c2VyUmVjLmRsbCwgMDEw
MDVBMDIucnNjKQ0KIEVDT01fUExVR0lOKE1lbW9yeVBsdWdpbi5kbGwsIG1lbW9yeXBsdWdpbi5S
U0MpDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11210</attachid>
            <date>2006-10-25 11:47:35 -0700</date>
            <delta_ts>2006-10-25 14:07:39 -0700</delta_ts>
            <desc>Added change for widget identifier</desc>
            <filename>WidgetImplementation.patch</filename>
            <type>text/plain</type>
            <size>548198</size>
            <attacher name="Sriram">sriram.yadavalli</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQ0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQkocmV2aXNpb24gMCkNCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9hbGdvcml0aG0JKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDE4
MCBAQA0KKy8vIEJpdHMgYW5kIHBpZWNlcyB1c2VkIGluIGFsZ29yaXRobXMgLSotIEMrKyAtKi0N
CisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8gc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlDQor
Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8v
IFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUNCisvLyBs
aWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVz
IGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0
aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUgYW5kIGxp
bmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMNCisv
LyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUg
dG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRo
aXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBvdGhlciBy
ZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENvcHlyaWdo
dCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQZXJtaXNz
aW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdh
cmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBn
cmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBz
dXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBtYWtlcyBu
bw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0
d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91
dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHlyaWdodCAo
YykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMu
DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFu
ZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBw
dXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQg
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICog
dGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBo
aWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBv
ZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFz
IGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisNCisjaWZu
ZGVmIF9fQUxHT1JJVEhNDQorI2RlZmluZSBfX0FMR09SSVRITQ0KKw0KKyNkZWZpbmUgX19nbGli
Y3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9fQSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc192
YWxpZF9yYW5nZShfX0EsIF9fQikNCisNCituYW1lc3BhY2Ugc3RkDQorew0KKw0KKyAgdHlwZWRl
ZiBpbnQgcHRyZGlmZl90Ow0KKw0KKyAgI3VuZGVmIG1pbg0KKyAgI3VuZGVmIG1heA0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAg
ICogIEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0g
IGIgIEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRo
ZSBsZXNzZXIgb2YgdGhlIHBhcmFtZXRlcnMuDQorICAgKg0KKyAgICogIFRoaXMgaXMgdGhlIHNp
bXBsZSBjbGFzc2ljIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICBJdCB3aWxsIHdvcmsgb24NCisg
ICAqICB0ZW1wb3JhcnkgZXhwcmVzc2lvbnMsIHNpbmNlIHRoZXkgYXJlIG9ubHkgZXZhbHVhdGVk
IG9uY2UsIHVubGlrZSBhDQorICAgKiAgcHJlcHJvY2Vzc29yIG1hY3JvLg0KKyAgKi8NCisgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgaW5saW5lIGNvbnN0IF9UcCYNCisgICAgbWluKGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikNCisgICAgew0KKyAgICAgIGlmIChfX2IgPCBf
X2EpDQorCXJldHVybiBfX2I7DQorICAgICAgcmV0dXJuIF9fYTsNCisgICAgfQ0KKw0KKyAgLyoq
DQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAgICog
IEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0gIGIg
IEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRoZSBn
cmVhdGVyIG9mIHRoZSBwYXJhbWV0ZXJzLg0KKyAgICoNCisgICAqICBUaGlzIGlzIHRoZSBzaW1w
bGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAgSXQgd2lsbCB3b3JrIG9uDQorICAg
KiAgdGVtcG9yYXJ5IGV4cHJlc3Npb25zLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGV2YWx1YXRlZCBv
bmNlLCB1bmxpa2UgYQ0KKyAgICogIHByZXByb2Nlc3NvciBtYWNyby4NCisgICovDQorICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+DQorICAgIGlubGluZSBjb25zdCBfVHAmDQorICAgIG1heChjb25z
dCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpDQorICAgIHsNCisgICAgICBpZiAoX19hIDwgX19i
KQ0KKwlyZXR1cm4gX19iOw0KKyAgICAgIHJldHVybiBfX2E7DQorICAgIH0NCisgICAgDQorICAv
KioNCisgICAqICBAYnJpZWYgU3dhcHMgdHdvIHZhbHVlcy4NCisgICAqICBAcGFyYW0gIGEgIEEg
dGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHBhcmFtICBiICBBbm90aGVyIHRoaW5n
IG9mIGFyYml0cmFyeSB0eXBlLg0KKyAgICogIEByZXR1cm4gICBOb3RoaW5nLg0KKyAgICoNCisg
ICAqICBUaGlzIGlzIHRoZSBzaW1wbGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAg
SXQgd2lsbCB3b3JrIG9uDQorICAgKiAgYW55IHR5cGUgd2hpY2ggaGFzIGEgY29weSBjb25zdHJ1
Y3RvciBhbmQgYW4gYXNzaWdubWVudCBvcGVyYXRvci4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+DQorICAgIGlubGluZSB2b2lkDQorICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19i
KQ0KKyAgICB7DQorICAgICAgY29uc3QgX1RwIF9fdG1wID0gX19hOw0KKyAgICAgIF9fYSA9IF9f
YjsNCisgICAgICBfX2IgPSBfX3RtcDsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBs
aWVkIHZlcnNpb24gb2YgbGlic3RkYysrICogc3RkOjpjb3B5LA0KKyAgICogc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIG91ciBwdXJwb3NlLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+DQorICAgIGlubGluZSBfT3V0
cHV0SXRlcmF0b3INCisgICAgY29weSggX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQgKQ0KKyAgICB7DQorICAgICAg
ICBmb3IoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0ICkNCisgICAg
ICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAgICAgIHJldHVybiBfX3Jlc3VsdDsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBsaWVkIHZlcnNpb24gb2YgbGlic3RkYysr
ICogc3RkOjpmaWxsLA0KKyAgICogc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nl
Lg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVl
Pg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBmaWxsKCBfSXRlcmF0b3IgX19zdGFydCwgX0l0ZXJh
dG9yIF9fZW5kLCBfVmFsdWUgX192YWwgKQ0KKyAgICB7DQorICAgICAgICBmb3IoOyBfX3N0YXJ0
ICE9IF9fZW5kOyArK19fc3RhcnQgKQ0KKyAgICAgICAgICAgICpfX3N0YXJ0ID0gX192YWw7DQor
ICAgIH0NCisgICAgDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCB0eXBlbmFtZSBDb21wYXJl
Pg0KKyAgICAgIGlubGluZSB2b2lkIHNvcnQoVHlwZSogYmVnaW4sIFR5cGUqIGVuZCwgQ29tcGFy
ZSBjb21wYXJlKQ0KKyAgICB7DQorICAgIHN0YWJsZV9zb3J0KGJlZ2luLGVuZCxjb21wYXJlKTsN
CisgICAgfQ0KKyAgICANCisgIC8vIEZJWE1FIGJ1YmJsZXNvcnQNCisgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGUsIHR5cGVuYW1lIENvbXBhcmU+DQorICAgIGlubGluZSB2b2lkIHN0YWJsZV9zb3J0
KFR5cGUqIGJlZ2luLCBUeXBlKiBlbmQsIENvbXBhcmUgY29tcGFyZSkNCisgICAgew0KKyAgICAg
ICAgVHlwZSogZSA9IGVuZDsNCisgICAgICAgIHdoaWxlIChlIT1iZWdpbikgew0KKyAgICAgICAg
ICAgIGJvb2wgc29ydGVkID0gdHJ1ZTsNCisgICAgICAgICAgICBmb3IgKFR5cGUqIGkgPSBiZWdp
bjsgaSE9ZTsgaSsrKSB7DQorICAgICAgICAgICAgICAgIGlmICghY29tcGFyZSgqaSwqKGkrMSkp
KSB7DQorICAgICAgICAgICAgICAgICAgICBUeXBlIHRlbXAgPSAqaTsNCisgICAgICAgICAgICAg
ICAgICAgICppID0gKihpKzEpOw0KKyAgICAgICAgICAgICAgICAgICAgKihpKzEpPXRlbXA7DQor
ICAgICAgICAgICAgICAgICAgICBzb3J0ZWQgPSBmYWxzZTsNCisgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoc29ydGVkKQ0K
KyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBlLS07DQorICAgICAgICB9DQor
ICAgIH0NCit9DQorDQorI2VuZGlmDQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTEsNSArMSw1IEBADQogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMTE0ICsyMCw5NSBAQA0KICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KLSNpbmNsdWRlIDxjX2NsYXNzLmg+Ci0jaW5jbHVkZSA8Y19pbnN0YW5jZS5oPgotI2lu
Y2x1ZGUgPGNfcnVudGltZS5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJjX2NsYXNzLmgiCiAKLWJvb2wgTlBOX0lzVmFs
aWRJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5hbWUpOworI2luY2x1ZGUgImNfaW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJjX3J1bnRpbWUuaCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgor
I2luY2x1ZGUgImlkZW50aWZpZXIuaCIKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25EZWxldGUoKSB7
Ci0gICAgQ0ZSZWxlYXNlIChfZmllbGRzKTsKLSAgICBDRlJlbGVhc2UgKF9tZXRob2RzKTsKLX0K
LSAgICAKKy8vIEZJWE1FOiBTaG91bGQgdXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBDRkRpY3Rpb25h
cnkgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgZm9yIHBvcnRhYmlsaXR5LgogCi12b2lkIEND
bGFzczo6X2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZvdGhlcikgewotICAgIF9pc2EgPSBvdGhl
ci5faXNhOwotICAgIF9tZXRob2RzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weSAoTlVMTCwgb3Ro
ZXIuX21ldGhvZHMpOwotICAgIF9maWVsZHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVDb3B5IChOVUxM
LCBvdGhlci5fZmllbGRzKTsKLX0KLSAgICAKK25hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25Jbml0IChOUENsYXNzICphQ2xhc3MpCitD
Q2xhc3M6OkNDbGFzcyhOUENsYXNzKiBhQ2xhc3MpCiB7CiAgICAgX2lzYSA9IGFDbGFzczsKLSAg
ICBfbWV0aG9kcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKLSAgICBfZmllbGRzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsIE5V
TEwpOwogfQogCi0KLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9
IDA7Ci0KLXN0YXRpYyB2b2lkIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCitDQ2xh
c3M6On5DQ2xhc3MoKQogewotICAgIGlmIChjbGFzc2VzQnlJc0EgPT0gMCkKLSAgICAgICAgY2xh
c3Nlc0J5SXNBID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgTlVMTCwgTlVM
TCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKF9tZXRob2RzKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMo
X2ZpZWxkcyk7CiB9CiAKLUNDbGFzcyAqQ0NsYXNzOjpjbGFzc0ZvcklzQSAoTlBDbGFzcyAqaXNh
KQordHlwZWRlZiBIYXNoTWFwPE5QQ2xhc3MqLCBDQ2xhc3MqPiBDbGFzc2VzQnlJc0FNYXA7Citz
dGF0aWMgQ2xhc3Nlc0J5SXNBTWFwKiBjbGFzc2VzQnlJc0EgPSAwOworCitDQ2xhc3MqIENDbGFz
czo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQogewotICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJ
Zk5lY2Vzc2FyeSgpOwotICAgIAotICAgIENDbGFzcyAqYUNsYXNzID0gKENDbGFzcyAqKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgaXNhKTsKLSAgICBpZiAoYUNsYXNzID09IE5V
TEwpIHsKLSAgICAgICAgYUNsYXNzID0gbmV3IENDbGFzcyAoaXNhKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUgKGNsYXNzZXNCeUlzQSwgaXNhLCBhQ2xhc3MpOworICAgIGlmICghY2xh
c3Nlc0J5SXNBKQorICAgICAgICBjbGFzc2VzQnlJc0EgPSBuZXcgQ2xhc3Nlc0J5SXNBTWFwOwor
CisgICAgQ0NsYXNzKiBhQ2xhc3MgPSBjbGFzc2VzQnlJc0EtPmdldChpc2EpOworICAgIGlmICgh
YUNsYXNzKSB7CisgICAgICAgIGFDbGFzcyA9IG5ldyBDQ2xhc3MoaXNhKTsKKyAgICAgICAgY2xh
c3Nlc0J5SXNBLT5zZXQoaXNhLCBhQ2xhc3MpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBh
Q2xhc3M7CiB9CiAKLQotQ0NsYXNzOjpDQ2xhc3MgKE5QQ2xhc3MgKmlzYSkKK2NvbnN0IGNoYXIq
IENDbGFzczo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgX2NvbW1vbkluaXQgKGlzYSk7Ci19Ci0KLWNv
bnN0IGNoYXIgKkNDbGFzczo6bmFtZSgpIGNvbnN0Ci17CiAgICAgcmV0dXJuICIiOwogfQogCi1N
ZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKl9uYW1lLCBJbnN0YW5j
ZSAqaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0
IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7CiAKLSAgICBD
RlN0cmluZ1JlZiBtZXRob2ROYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBf
bmFtZSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSk7Ci0gICAgTWV0aG9kICptZXRob2QgPSAoTWV0
aG9kICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKF9tZXRob2RzLCBtZXRob2ROYW1lKTsKKyAgICBN
ZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChhLmFyZXAoKSk7CiAgICAgaWYgKG1ldGhvZCkg
ewotICAgICAgICBDRlJlbGVhc2UgKG1ldGhvZE5hbWUpOwogICAgICAgICBtZXRob2RMaXN0LmFk
ZE1ldGhvZChtZXRob2QpOwogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9Ci0gICAg
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChfbmFt
ZSk7Ci0gICAgY29uc3QgQ0luc3RhbmNlICppbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3Rh
bmNlKj4oaW5zdGFuY2UpOwotICAgIE5QT2JqZWN0ICpvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsK
LSAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2EtPmhhc01ldGhvZCAob2JqLCBpZGVudCkp
ewotICAgICAgICBNZXRob2QgKmFNZXRob2QgPSBuZXcgQ01ldGhvZCAoaWRlbnQpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpX21ldGhvZHMs
IG1ldGhvZE5hbWUsIGFNZXRob2QpOwotICAgICAgICBtZXRob2RMaXN0LmFkZE1ldGhvZCAoYU1l
dGhvZCk7CisKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cihhLmFzY2lpKCkpOworICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNv
bnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKKyAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0
T2JqZWN0KCk7CisgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2Jq
LCBpZGVudCkpeworICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7
IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIF9tZXRob2RzLnNl
dChhLmFyZXAoKSwgYU1ldGhvZCk7CisgICAgICAgIG1ldGhvZExpc3QuYWRkTWV0aG9kKGFNZXRo
b2QpOwogICAgIH0KIAotICAgIENGUmVsZWFzZSAobWV0aG9kTmFtZSk7Ci0gICAgCiAgICAgcmV0
dXJuIG1ldGhvZExpc3Q7CiB9CiAKIAotRmllbGQgKkNDbGFzczo6ZmllbGROYW1lZChjb25zdCBj
aGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogQ0NsYXNzOjpmaWVs
ZE5hbWVkKGNvbnN0IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QK
IHsKLSAgICBDRlN0cmluZ1JlZiBmaWVsZE5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KE5VTEwsIG5hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwotICAgIEZpZWxkICphRmllbGQg
PSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoX2ZpZWxkcywgZmllbGROYW1lKTsKLSAg
ICBpZiAoYUZpZWxkKSB7Ci0gICAgICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKKyAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQoYS5h
cmVwKCkpOworICAgIGlmIChhRmllbGQpCiAgICAgICAgIHJldHVybiBhRmllbGQ7Ci0gICAgfQog
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1l
KTsKLSAgICBjb25zdCBDSW5zdGFuY2UgKmluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFu
Y2UqPihpbnN0YW5jZSk7Ci0gICAgTlBPYmplY3QgKm9iaiA9IGluc3QtPmdldE9iamVjdCgpOwot
ICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9wZXJ0eSAob2JqLCBpZGVu
dCkpewotICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkIChpZGVudCk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlICgoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilfZmllbGRzLCBmaWVsZE5h
bWUsIGFGaWVsZCk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIoYS5hc2NpaSgpKTsKKyAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CisgICAgTlBPYmplY3QqIG9iaiA9IGluc3Qt
PmdldE9iamVjdCgpOworICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9w
ZXJ0eShvYmosIGlkZW50KSl7CisgICAgICAgIGFGaWVsZCA9IG5ldyBDRmllbGQoaWRlbnQpOyAv
LyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBfZmllbGRzLnNldChh
LmFyZXAoKSwgYUZpZWxkKTsKICAgICB9Ci0gICAgCi0gICAgQ0ZSZWxlYXNlIChmaWVsZE5hbWUp
OwotCiAgICAgcmV0dXJuIGFGaWVsZDsKLX07Cit9CisKK30KK30KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvYy9jX2NsYXNzLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL2MvY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsMTIgKzIwLDEzIEBA
DQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogI2lmbmRlZiBfQklORElOR1NfT0JKQ19DTEFTU19IXwog
I2RlZmluZSBfQklORElOR1NfT0JKQ19DTEFTU19IXwogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlICJmYXN0X21hbGxvYy5oIgorI2luY2x1ZGUg
PEhhc2hNYXAuaD4KIAogCiAjaW5jbHVkZSA8cnVudGltZS5oPgpAQCAtMzksNTQgKzQwLDI4IEBA
DQogY2xhc3MgQ0NsYXNzIDogcHVibGljIEtKUzo6QmluZGluZ3M6OkNsYXNzCiB7CiAgICAgLy8g
VXNlIHRoZSBwdWJsaWMgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyB0byBnZXQgaW5zdGFuY2VzIG9m
IEphdmFDbGFzcy4KLSAgICAKKwogcHJvdGVjdGVkOgotICAgIHZvaWQgX2NvbW1vbkluaXQgKE5Q
Q2xhc3MgKmFDbGFzcyk7Ci0gICAgdm9pZCBfY29tbW9uQ29weShjb25zdCBDQ2xhc3MgJm90aGVy
KTsKLSAgICB2b2lkIF9jb21tb25EZWxldGUoKTsKLSAgICAgICAgCisgICAgQ0NsYXNzKE5QQ2xh
c3MqKTsgLy8gVXNlIGNsYXNzRm9ySXNBIHRvIGNyZWF0ZSBhIENDbGFzcy4KKwogcHVibGljOgot
ICAgIENDbGFzcyAoTlBDbGFzcyAqYUNsYXNzKTsKKyAgICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0Zv
cklzQShOUENsYXNzKik7CisgICAgdmlydHVhbCB+Q0NsYXNzKCk7CiAKLSAgICAvLyBSZXR1cm4g
dGhlIGNhY2hlZCBPYmpDIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAvL3N0YXRpYyBDQ2xh
c3MgKmNsYXNzRm9yTmFtZSAoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgc3RhdGljIENDbGFzcyAq
Y2xhc3NGb3JJc0EgKE5QQ2xhc3MgKmFDbGFzcyk7Ci0gICAgICAgICAgICAKLSAgICB+Q0NsYXNz
ICgpIHsKLSAgICAgICAgX2NvbW1vbkRlbGV0ZSgpOwotICAgIH0KLSAgICAKLSAgICBDQ2xhc3Mg
KGNvbnN0IENDbGFzcyAmb3RoZXIpIDogQ2xhc3MoKSB7Ci0gICAgICAgIF9jb21tb25Db3B5IChv
dGhlcik7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqLCBJbnN0YW5jZSop
IGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgY2hhciAqLCBJbnN0
YW5jZSopIGNvbnN0OwogCi0gICAgQ0NsYXNzICZvcGVyYXRvcj0oY29uc3QgQ0NsYXNzICZvdGhl
cikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgICAgIAotICAgICAgICBfY29tbW9uRGVsZXRlKCk7Ci0gICAgICAg
IF9jb21tb25Db3B5IChvdGhlcik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQorICAgIHZpcnR1YWwgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yQXQobG9uZykgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgbG9uZyBudW1Db25zdHJ1Y3RvcnMoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKLSAg
ICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKm5hbWUs
IEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBGaWVsZCAqZmll
bGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwotICAg
IAotICAgIHZpcnR1YWwgQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yQXQobG9uZyBpKSBjb25zdCB7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH07Ci0gICAgCi0gICAgdmlydHVhbCBsb25nIG51bUNv
bnN0cnVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07Ci0gICAgICAgIAogcHJpdmF0ZToKLSAg
ICBOUENsYXNzICpfaXNhOwotICAgIENGRGljdGlvbmFyeVJlZiBfbWV0aG9kczsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgX2ZpZWxkczsKKyAgICBDQ2xhc3MoY29uc3QgQ0NsYXNzJik7IC8vIHByb2hp
Yml0IGNvcHlpbmcKKyAgICBDQ2xhc3MmIG9wZXJhdG9yPShjb25zdCBDQ2xhc3MmKTsgLy8gcHJv
aGliaXQgYXNzaWdubWVudAorCisgICAgTlBDbGFzcyogX2lzYTsKKyAgICBtdXRhYmxlIE1ldGhv
ZE1hcCBfbWV0aG9kczsKKyAgICBtdXRhYmxlIEZpZWxkTWFwIF9maWVsZHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2lu
c3RhbmNlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19p
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMCw3ICsyMCw3IEBADQogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogI2luY2x1ZGUgPGNfY2xhc3MuaD4KICNpbmNsdWRlIDxjX2luc3Rh
bmNlLmg+CkBAIC0zMywzMiArMzMsMjkgQEANCiAjaWZkZWYgTkRFQlVHCiAjZGVmaW5lIENfTE9H
KGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQogI2Vsc2UKLSNkZWZpbmUgQ19MT0coZm9ybWF0
QW5kQXJncy4uLikgeyBcCi0gICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQgLS0gJXM6ICAiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IFwKLSAgICBmcHJpbnRmKHN0ZGVyciwg
Zm9ybWF0QW5kQXJncyk7IFwKLX0KKyNkZWZpbmUgQ19MT0coZm9ybWF0QW5kQXJncy4uLikgKCh2
b2lkKTApCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7CiB1c2luZyBu
YW1lc3BhY2UgS0pTOwogCi1DSW5zdGFuY2U6OkNJbnN0YW5jZSAoTlBPYmplY3QgKm8pIAorQ0lu
c3RhbmNlOjpDSW5zdGFuY2UgKE5QT2JqZWN0ICpvKQogewotICAgIF9vYmplY3QgPSBfTlBOX1Jl
dGFpbk9iamVjdCAobyk7CisgICAgX29iamVjdCA9IE5QTl9SZXRhaW5PYmplY3QgKG8pOwogICAg
IF9jbGFzcyA9IDA7CiAgICAgc2V0RXhlY3V0aW9uQ29udGV4dCAoMCk7CiB9OwogCi1DSW5zdGFu
Y2U6On5DSW5zdGFuY2UgKCkgCitDSW5zdGFuY2U6On5DSW5zdGFuY2UgKCkKIHsKLSAgICBfTlBO
X1JlbGVhc2VPYmplY3QgKF9vYmplY3QpOworICAgIE5QTl9SZWxlYXNlT2JqZWN0IChfb2JqZWN0
KTsKICAgICBkZWxldGUgX2NsYXNzOwogfQogCiAKLUNJbnN0YW5jZTo6Q0luc3RhbmNlIChjb25z
dCBDSW5zdGFuY2UgJm90aGVyKSA6IEluc3RhbmNlKCkgCitDSW5zdGFuY2U6OkNJbnN0YW5jZSAo
Y29uc3QgQ0luc3RhbmNlICZvdGhlcikgOiBJbnN0YW5jZSgpCiB7Ci0gICAgX29iamVjdCA9IF9O
UE5fUmV0YWluT2JqZWN0IChvdGhlci5fb2JqZWN0KTsKKyAgICBfb2JqZWN0ID0gTlBOX1JldGFp
bk9iamVjdCAob3RoZXIuX29iamVjdCk7CiAgICAgX2NsYXNzID0gMDsKICAgICBzZXRFeGVjdXRp
b25Db250ZXh0IChvdGhlci5leGVjdXRpb25Db250ZXh0KCkpOwogfTsKQEAgLTY2LDE5ICs2Mywx
OSBAQA0KIENJbnN0YW5jZSAmQ0luc3RhbmNlOjpvcGVyYXRvcj0oY29uc3QgQ0luc3RhbmNlICZv
dGhlcil7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgCisKICAgICBOUE9iamVjdCAqX29sZE9iamVjdCA9IF9vYmplY3Q7Ci0gICAgX29iamVjdD0g
X05QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3QpOwotICAgIF9OUE5fUmVsZWFzZU9iamVj
dCAoX29sZE9iamVjdCk7CisgICAgX29iamVjdD0gTlBOX1JldGFpbk9iamVjdCAob3RoZXIuX29i
amVjdCk7CisgICAgTlBOX1JlbGVhc2VPYmplY3QgKF9vbGRPYmplY3QpOwogICAgIF9jbGFzcyA9
IDA7Ci0gICAgCisKICAgICByZXR1cm4gKnRoaXM7CiB9OwogCiBDbGFzcyAqQ0luc3RhbmNlOjpn
ZXRDbGFzcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFfY2xhc3MpIHsKLSAgICAgICAgX2NsYXNzID0g
bmV3IENDbGFzcyAoX29iamVjdC0+X2NsYXNzKTsKKyAgICBpZiAoIV9jbGFzcyl7CisgICAgICAg
IF9jbGFzcyA9IENDbGFzczo6Y2xhc3NGb3JJc0EoX29iamVjdC0+X2NsYXNzKTsKICAgICB9CiAg
ICAgcmV0dXJuIF9jbGFzczsKIH0KQEAgLTEwNSw3ICsxMDIsNyBAQA0KICAgICBDTWV0aG9kICpt
ZXRob2QgPSAwOwogICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihtZXRob2RMaXN0
Lm1ldGhvZEF0KDApKTsKIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5n
SWRlbnRpZmllciAobWV0aG9kLT5uYW1lKCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IE5Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyIChtZXRob2QtPm5hbWUoKSk7CiAgICAgaWYgKCFfb2JqZWN0
LT5fY2xhc3MtPmhhc01ldGhvZCAoX29iamVjdCwgaWRlbnQpKSB7CiAgICAgICAgIHJldHVybiBV
bmRlZmluZWQoKTsKICAgICB9CkBAIC0xMTcsNyArMTE0LDcgQEANCiAgICAgICAgIGNBcmdzID0g
KE5QVmFyaWFudCAqKW1hbGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgIGVsc2UK
ICAgICAgICAgY0FyZ3MgPSBsb2NhbEJ1ZmZlcjsKLSAgICAKKwogICAgIGZvciAoaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChleGVjLCBh
cmdzLmF0KGkpLCAmY0FyZ3NbaV0pOwogICAgIH0KQEAgLTEyOCwyMCArMTI1LDIwIEBADQogICAg
IF9vYmplY3QtPl9jbGFzcy0+aW52b2tlIChfb2JqZWN0LCBpZGVudCwgY0FyZ3MsIGNvdW50LCAm
cmVzdWx0VmFyaWFudCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAg
ICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJnc1tpXSk7CisgICAgICAgIE5QTl9S
ZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOwogICAgIH0KIAogICAgIGlmIChjQXJncyAh
PSBsb2NhbEJ1ZmZlcikKICAgICAgICAgZnJlZSAoKHZvaWQgKiljQXJncyk7Ci0gICAgICAgICAg
ICAKKwogICAgIGlmICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAg
ICAgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoZXhlYywgJnJlc3VsdFZh
cmlhbnQpOwotICAgICAgICAKLSAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgIAorCisgICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVl
ICgmcmVzdWx0VmFyaWFudCk7CisKICAgICAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0KIApAQCAtMTUwLDcgKzE0Nyw3IEBA
DQogewogICAgIFZhbHVlIHJlc3VsdFZhbHVlOwogCi0gICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+
aW52b2tlRGVmYXVsdCkgeyAgICAgCisgICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+aW52b2tlRGVm
YXVsdCkgewogICAgICAgICB1bnNpZ25lZCBpLCBjb3VudCA9IGFyZ3Muc2l6ZSgpOwogICAgICAg
ICBOUFZhcmlhbnQgKmNBcmdzOwogICAgICAgICBOUFZhcmlhbnQgbG9jYWxCdWZmZXJbMTI4XTsK
QEAgLTE1OCw3ICsxNTUsNyBAQA0KICAgICAgICAgICAgIGNBcmdzID0gKE5QVmFyaWFudCAqKW1h
bGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjQXJncyA9IGxvY2FsQnVmZmVyOwotICAgICAgICAKKwogICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQgKGV4
ZWMsIGFyZ3MuYXQoaSksICZjQXJnc1tpXSk7CiAgICAgICAgIH0KQEAgLTE2OSwyMSArMTY2LDIx
IEBADQogICAgICAgICBfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQgKF9vYmplY3QsIGNB
cmdzLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJn
c1tpXSk7CisgICAgICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJmNBcmdzW2ldKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChjQXJncyAhPSBsb2NhbEJ1ZmZlcikKICAgICAgICAg
ICAgIGZyZWUgKCh2b2lkICopY0FyZ3MpOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgIGlm
ICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAgICAgICAgIHJlc3Vs
dFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUgKGV4ZWMsICZyZXN1bHRWYXJpYW50KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUgKCZyZXN1bHRWYXJpYW50KTsKKwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFZh
bHVlOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwog
fQogCkBAIC0xOTksMTQgKzE5NiwxNCBAQA0KICAgICBlbHNlIGlmIChoaW50ID09IEtKUzo6Qm9v
bGVhblR5cGUpIHsKICAgICAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZSgpOwogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB2YWx1ZU9mKCk7CiB9CiAKIEtKUzo6VmFsdWUgQ0luc3RhbmNlOjpzdHJp
bmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgY2hhciBidWZbMTAyNF07Ci0gICAgc25wcmludGYgKGJ1
ZiwgMTAyNCwgIk5QT2JqZWN0ICVwLCBOUENsYXNzICVwIiwgX29iamVjdCwgX29iamVjdC0+X2Ns
YXNzKTsKKyAgICAvL3NucHJpbnRmIChidWYsIDEwMjQsICJOUE9iamVjdCAlcCwgTlBDbGFzcyAl
cCIsIF9vYmplY3QsIF9vYmplY3QtPl9jbGFzcyk7CiAgICAgS0pTOjpTdHJpbmcgdihidWYpOwog
ICAgIHJldHVybiB2OwogfQpAQCAtMjI1LDcgKzIyMiw3IEBADQogICAgIHJldHVybiB2OwogfQog
Ci1LSlM6OlZhbHVlIENJbnN0YW5jZTo6dmFsdWVPZigpIGNvbnN0IAorS0pTOjpWYWx1ZSBDSW5z
dGFuY2U6OnZhbHVlT2YoKSBjb25zdAogewogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwogfTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19ydW50aW1lLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjUsNyArMjUsNyBAQA0KICNpZm5kZWYgX0JJTkRJTkdTX09CSkNfUlVOVElNRV9I
XwogI2RlZmluZSBfQklORElOR1NfT0JKQ19SVU5USU1FX0hfCiAKLSNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorLy8jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KIAogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1ZGUgPG5wcnVu
dGltZV9pbXBsLmg+CkBAIC01Miw3ICs1Miw3IEBADQogICAgIHZpcnR1YWwgS0pTOjpWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmlu
c3RhbmNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEtKUzo6
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEtKUzo6VmFs
dWUgJmFWYWx1ZSkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkg
Y29uc3QgeyByZXR1cm4gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIoX2ZpZWxkSWRlbnRpZmllcik7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBOUE5fVVRG
OEZyb21JZGVudGlmaWVyKF9maWVsZElkZW50aWZpZXIpOyB9CiAgICAgdmlydHVhbCBSdW50aW1l
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KICAgICAKIHByaXZhdGU6CkBAIC02Nyw3
ICs2Nyw3IEBADQogCiAgICAgQ01ldGhvZChOUElkZW50aWZpZXIgaWRlbnQpIDogTWV0aG9kKCks
IF9tZXRob2RJZGVudGlmaWVyKGlkZW50KSB7fTsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBfTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9k
SWRlbnRpZmllcik7IH07CisgICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9kSWRlbnRpZmllcik7IH07CiAKICAg
ICB2aXJ0dWFsIGxvbmcgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07CiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjAsMTAgKzIwLDEwIEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1
ZGUgPGNfaW5zdGFuY2UuaD4gCi0jaW5jbHVkZSA8Y191dGlsaXR5Lmg+IAorI2luY2x1ZGUgPGNf
aW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxjX3V0aWxpdHkuaD4KICNpbmNsdWRlIDxpbnRlcm5hbC5o
PgogI2luY2x1ZGUgPG5wcnVudGltZV9pbXBsLmg+CiAjaW5jbHVkZSA8bnBydW50aW1lX3ByaXYu
aD4KQEAgLTQ1LDIwICs0NSw1MCBAQA0KIC8vIFJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBV
VEYxNkNoYXJzLgogdm9pZCBjb252ZXJ0VVRGOFRvVVRGMTYgKGNvbnN0IE5QVVRGOCAqVVRGOENo
YXJzLCBpbnQgVVRGOExlbmd0aCwgTlBVVEYxNiAqKlVURjE2Q2hhcnMsIHVuc2lnbmVkIGludCAq
VVRGMTZMZW5ndGgpCiB7Ci0gICAgYXNzZXJ0IChVVEY4Q2hhcnMpOwotICAgIAogICAgIGlmIChV
VEY4TGVuZ3RoID09IC0xKQogICAgICAgICBVVEY4TGVuZ3RoID0gc3RybGVuKFVURjhDaGFycyk7
Ci0gICAgICAgIAotICAgIENGU3RyaW5nUmVmIHN0cmluZ1JlZiA9IENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzIChOVUxMLCAoY29uc3QgVUludDgqKVVURjhDaGFycywgKENGSW5kZXgpVVRGOExlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSk7CiAKLSAgICAqVVRGMTZMZW5ndGggPSAo
dW5zaWduZWQgaW50KUNGU3RyaW5nR2V0TGVuZ3RoIChzdHJpbmdSZWYpOwotICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2MgKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgp
KTsKKyAgICAqVVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoOwogCi0gICAgLy8gQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURjE2LgotICAgIENGUmFuZ2UgcmFuZ2UgPSB7IDAsICpVVEYxNkxlbmd0aCB9
OwotICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyAoc3RyaW5nUmVmLCByYW5nZSwgKFVuaUNoYXIg
KikqVVRGMTZDaGFycyk7Ci0gICAgQ0ZSZWxlYXNlIChzdHJpbmdSZWYpOworICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRGMTYpICogKCpVVEYxNkxlbmd0aCkp
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8ICpVVEYxNkxlbmd0aDsgaSsrKQorICAg
ICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKworICAgLyogYXNz
ZXJ0KFVURjhDaGFycyB8fCBVVEY4TGVuZ3RoID09IDApOworICAgIGFzc2VydChVVEYxNkNoYXJz
KTsKKworICAgIGlmIChVVEY4TGVuZ3RoID09IC0xKQorICAgICAgICBVVEY4TGVuZ3RoID0gc3Ry
bGVuKFVURjhDaGFycyk7CisKKyAgICAvLyBVVEYxNkxlbmd0aCBtYXhpbXVtIGxlbmd0aCBpcyB0
aGUgbGVuZ3RoIG9mIHRoZSBVVEY4IHN0cmluZywgcGx1cyBvbmUgdG8gaW5jbHVkZSB0ZXJtaW5h
dG9yCisgICAgLy8gV2l0aG91dCB0aGUgcGx1cyBvbmUsIGl0IHdpbGwgY29udmVydCBvaywgYnV0
IGEgd2FybmluZyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY29udmVydGVyIGFzCisgICAgLy8gdGhl
cmUgaXMgbm90IGVub3VnaCByb29tIGZvciBhIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICAq
VVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoICsgMTsKKworICAgICpVVEYxNkNoYXJzID0gMDsKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBVQ29udmVydGVyKiBjb252
ID0gdWNudl9vcGVuKCJ1dGY4IiwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMp
KSB7CisgICAgICAgICpVVEYxNkNoYXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRG
MTYpICogKCpVVEYxNkxlbmd0aCkpOworICAgICAgICB1Y252X3NldFRvVUNhbGxCYWNrKGNvbnYs
IFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QLCAwLCAwLCAwLCAmc3RhdHVzKTsKKyAgICAgICAgKlVU
RjE2TGVuZ3RoID0gdWNudl90b1VDaGFycyhjb252LCAoOjpVQ2hhciopKlVURjE2Q2hhcnMsICpV
VEYxNkxlbmd0aCwgVVRGOENoYXJzLCBVVEY4TGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgdWNu
dl9jbG9zZShjb252KTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGNvbnZl
cnNpb24gd2FzIHN1Y2Nlc3NmdWwKKyAgICAvLyBTb21lIHBsdWdpbnMgcmV0dXJuIGludmFsaWQg
VVRGLTggaW4gTlBWYXJpYW50VHlwZV9TdHJpbmcsIHNlZSA8aHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYzPgorICAgIC8vIFRoZXJlIGlzIG5vICJiYWQg
ZGF0YSIgZm9yIGxhdGluMS4gSXQgaXMgdW5saWtlbHkgdGhhdCB0aGUgcGx1Z2luIHdhcyByZWFs
bHkgc2VuZGluZyB0ZXh0IGluIHRoaXMgZW5jb2RpbmcsCisgICAgLy8gYnV0IGl0IHNob3VsZCBo
YXZlIHVzZWQgVVRGLTgsIGFuZCBub3cgd2UgYXJlIHNpbXBseSBhdm9pZGluZyBhIGNyYXNoLgor
ICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgKlVURjE2TGVuZ3RoID0gVVRG
OExlbmd0aDsKKworICAgICAgICBpZiAoISpVVEYxNkNoYXJzKSAgIC8vIElmIHRoZSBtZW1vcnkg
d2Fzbid0IGFsbG9jYXRlZCwgYWxsb2NhdGUgaXQuCisgICAgICAgICAgICAqVVRGMTZDaGFycyA9
IChOUFVURjE2ICopbWFsbG9jKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgpKTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKlVURjE2TGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKyAgICB9Ki8K
IH0KIAogLy8gVmFyaWFudCB2YWx1ZSBtdXN0IGJlIHJlbGVhc2VkIHdpdGggTlBSZWxlYXNlVmFy
aWFudFZhbHVlKCkKQEAgLTc0LDcgKzEwNCw3IEBADQogdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZh
cmlhbnQgKnJlc3VsdCkKIHsKICAgICBUeXBlIHR5cGUgPSB2YWx1ZS50eXBlKCk7Ci0gICAgCisK
ICAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlKSB7CiAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5n
LlVURjhTdHJpbmcoKTsKQEAgLTEwMCwzMSArMTMwLDMxIEBADQogICAgICAgICAgICAgQ0luc3Rh
bmNlICppbnN0YW5jZSA9IHN0YXRpY19jYXN0PENJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKICAgICAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3Qg
KHJlc3VsdCwgaW5zdGFuY2UtPmdldE9iamVjdCgpKTsKICAgICAgICAgfQotCWVsc2UgeworICAg
IGVsc2UgewogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gZXhl
Yy0+aW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgS0pTOjpJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJw
cmV0ZXIgPSBleGVjLT5pbnRlcnByZXRlcigpOwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6
OlJvb3RPYmplY3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIo
b3JpZ2luSW50ZXJwcmV0ZXIpOwogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKmludGVycHJldGVy
ID0gMDsKLQkgICAgaWYgKG9yaWdpbkludGVycHJldGVyLT5pc0dsb2JhbE9iamVjdCh2YWx1ZSkp
IHsKLQkJaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRlci0+aW50ZXJwcmV0ZXJGb3JHbG9i
YWxPYmplY3QgKHZhbHVlLmltcCgpKTsKLQkgICAgfQorICAgICAgICBLSlM6OkludGVycHJldGVy
ICppbnRlcnByZXRlciA9IDA7CisgICAgICAgIGlmIChvcmlnaW5JbnRlcnByZXRlci0+aXNHbG9i
YWxPYmplY3QodmFsdWUpKSB7CisgICAgICAgIGludGVycHJldGVyID0gb3JpZ2luSW50ZXJwcmV0
ZXItPmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0ICh2YWx1ZS5pbXAoKSk7CisgICAgICAgIH0K
IAotCSAgICBpZiAoIWludGVycHJldGVyKQotCQlpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJl
dGVyOwotCQkKKyAgICAgICAgaWYgKCFpbnRlcnByZXRlcikKKyAgICAgICAgaW50ZXJwcmV0ZXIg
PSBvcmlnaW5JbnRlcnByZXRlcjsKKwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RP
YmplY3QgKmV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIp
OwogICAgICAgICAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KSB7CiAgICAgICAgICAgICAgICAg
QmluZGluZ3M6OlJvb3RPYmplY3QgKm5ld0V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgS0pTOjpCaW5k
aW5nczo6Um9vdE9iamVjdCgwKTsKICAgICAgICAgICAgICAgICBuZXdFeGVjdXRpb25Db250ZXh0
LT5zZXRJbnRlcnByZXRlciAoaW50ZXJwcmV0ZXIpOwogICAgICAgICAgICAgICAgIGV4ZWN1dGlv
bkNvbnRleHQgPSBuZXdFeGVjdXRpb25Db250ZXh0OwogICAgICAgICAgICAgfQotICAgIAotCSAg
ICBOUE9iamVjdCAqb2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRl
TGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1
ZS50b09iamVjdChleGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4
dCk7Ci0JICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsK
LQkgICAgX05QTl9SZWxlYXNlT2JqZWN0IChvYmopOwotCX0KKworICAgICAgICBOUE9iamVjdCAq
b2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1ZS50b09iamVjdChl
eGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsKKyAgICAgICAg
TlBOX1JlbGVhc2VPYmplY3QgKG9iaik7CiAgICAgfQorICAgIH0KICAgICBlbHNlCiAgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudEFzVW5kZWZpbmVkKHJlc3VsdCk7CiB9CkBAIC0xNjcsNyAr
MTk3LDcgQEANCiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmpl
Y3QpIHsKICAgICAgICAgTlBPYmplY3QgKm9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
OwotICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RD
bGFzcykgewogICAgICAgICAgICAgLy8gR2V0IE9iamVjdEltcCBmcm9tIE5QX0phdmFTY3JpcHRP
YmplY3QuCiAgICAgICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvID0gKEphdmFTY3JpcHRPYmpl
Y3QgKilvYmo7CkBAIC0xNzgsNyArMjA4LDE2IEBADQogICAgICAgICAgICAgcmV0dXJuIEluc3Rh
bmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopb2Jq
KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0K
IAorSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5h
bWUpCit7CisgICAgTlBVVEYxNiAqbWV0aG9kTmFtZTsKKyAgICB1bnNpZ25lZCBVVEYxNkxlbmd0
aDsKKyAgICBjb252ZXJ0VVRGOFRvVVRGMTYobmFtZSwgLTEsICZtZXRob2ROYW1lLCAmVVRGMTZM
ZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgorICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5n
dGgpOworICAgIGZyZWUobWV0aG9kTmFtZSk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkocmV2aXNpb24gMTcwNjkp
DQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSA8cnVudGltZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWVfb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZV9yb290Lmg+CisjaW5jbHVkZSA8aWRl
bnRpZmllci5oPgogCiB0eXBlZGVmIHVpbnQxNl90IE5QVVRGMTY7CiBOUFVURjE2ICpOUE5fVVRG
MTZGcm9tU3RyaW5nIChOUFN0cmluZyAqb2JqKTsKQEAgLTUxLDYgKzUyLDcgQEANCiBleHRlcm4g
dm9pZCBjb2VyY2VWYWx1ZVRvTlBWYXJpYW50U3RyaW5nVHlwZSAoS0pTOjpFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4g
dm9pZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0
IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4gS0pTOjpWYWx1
ZSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5Q
VmFyaWFudCAqdmFyaWFudCk7CitLSlM6OklkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50
aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKTsKIAogdHlwZWRlZiBzdHJ1Y3QgCiB7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaENvdW50ZWRTZXQuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oCShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSwxNzggQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAt
Ki0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
Q29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICov
DQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX0NPVU5URURfU0VUX0gNCisjZGVmaW5lIEtYTUxD
T1JFX0hBU0hfQ09VTlRFRF9TRVRfSA0KKw0KKy8vI2luY2x1ZGUgIkFzc2VydGlvbnMuaCINCisj
aW5jbHVkZSAiSGFzaE1hcC5oIg0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucyA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPFZhbHVlPjo6SGFzaCwNCisgICAgICAgIHR5cGVuYW1lIFRyYWl0cyA9IEhhc2hUcmFp
dHM8VmFsdWU+ID4gY2xhc3MgSGFzaENvdW50ZWRTZXQgew0KKyAgICBwcml2YXRlOg0KKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFZhbHVlLCB1bnNpZ25lZCwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
PiBJbXBsVHlwZTsNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5
cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciBpdGVyYXRv
cjsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNv
bnN0X2l0ZXJhdG9yOw0KKw0KKyAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQ0KKw0KKyAgICAg
ICAgaW50IHNpemUoKSBjb25zdDsNCisgICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0Ow0KKyAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7DQorDQorICAgICAgICAvLyBpdGVyYXRvcnMgaXRl
cmF0ZSBvdmVyIHBhaXJzIG9mIHZhbHVlcyBhbmQgY291bnRzDQorICAgICAgICBpdGVyYXRvciBi
ZWdpbigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQor
DQorICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpOw0KKyAgICAg
ICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisg
ICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3Q7DQorICAg
ICAgICB1bnNpZ25lZCBjb3VudChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisNCisg
ICAgICAgIC8vIGluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFk
eSBwcmVzZW50DQorICAgICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBp
bnRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLA0KKyAgICAgICAgLy8gYW5kIGEg
Ym9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZA0KKyAgICAgICAgc3Rk
OjpwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSk7DQorDQor
ICAgICAgICAvLyByZWR1Y2VzIHRoZSBjb3VudCBvZiB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIGl0
IGlmIGNvdW50DQorICAgICAgICAvLyBnb2VzIGRvd24gdG8gemVybw0KKyAgICAgICAgdm9pZCBy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSk7DQorICAgICAgICB2b2lkIHJlbW92ZShpdGVy
YXRvciBpdCk7DQorDQorICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIEltcGxUeXBlIG1faW1wbDsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAg
aW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
c2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOw0KKyAg
ICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBpbnQgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNhcGFjaXR5KCkgY29uc3QNCisgICAgew0KKyAg
ICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHNpemUoKSA9
PSAwOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNo
Q291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmJlZ2luKCkNCisgICAgew0K
KyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdpbigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmVuZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7DQor
ICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSBjb25zdA0KKyAg
ICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZW5kKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdHlw
ZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJh
dG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNv
bnN0IFZhbHVlVHlwZSYgdmFsdWUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmlu
ZCh2YWx1ZSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVy
YXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9p
bXBsLmZpbmQodmFsdWUpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBi
b29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250YWlu
cyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
bV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBp
bmxpbmUgdW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OmNvdW50KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZ2V0KHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAg
ICBpbmxpbmUgc3RkOjpwYWlyPHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQ0KKyAgICB7
DQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVl
LCAwKTsNCisgICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNvbmQ7DQorICAgICAgICByZXR1cm4g
cmVzdWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkNCisgICAgew0KKyAgICAgICAgcmVtb3ZlKGZpbmQodmFsdWUpKTsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAgICB7
DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAg
ICAgICAgdW5zaWduZWQgb2xkVmFsID0gaXQtPnNlY29uZDsNCisgICAgICAgIC8vQVNTRVJUKG9s
ZFZhbCAhPSAwKTsNCisgICAgICAgIHVuc2lnbmVkIG5ld1ZhbCA9IG9sZFZhbCAtIDE7DQorICAg
ICAgICBpZiAobmV3VmFsID09IDApDQorICAgICAgICAgICAgbV9pbXBsLnJlbW92ZShpdCk7DQor
ICAgICAgICBlbHNlDQorICAgICAgICAgICAgaXQtPnNlY29uZCA9IG5ld1ZhbDsNCisgICAgfQ0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBtX2ltcGwu
Y2xlYXIoKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNlIGtodG1sDQorDQordXNpbmcgV1RG
OjpIYXNoQ291bnRlZFNldDsNCisNCisjZW5kaWYgLyogS1hNTENPUkVfSEFTSF9DT1VOVEVEX1NF
VF9IICovDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oCShy
ZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hGdW5jdGlvbnMuaAko
cmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTA1IEBADQorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxp
YnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
Lg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0K
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwNCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNf
SA0KKyNkZWZpbmUgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNfSA0KKw0KKyNpbmNsdWRlICJSZWZQ
dHIuaCINCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAg
IHRlbXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgSW50VHlwZXM7DQorICAgIHRlbXBsYXRlPD4g
c3RydWN0IEludFR5cGVzPDE+IHsgdHlwZWRlZiBpbnQ4X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1
aW50OF90IFVuc2lnbmVkVHlwZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50VHlwZXM8
Mj4geyB0eXBlZGVmIGludDE2X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50MTZfdCBVbnNpZ25l
ZFR5cGU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDQ+IHsgdHlwZWRlZiBp
bnQzMl90IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDMyX3QgVW5zaWduZWRUeXBlOyB9Ow0KKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw4PiB7IHR5cGVkZWYgaW50NjRfdCBTaWduZWRU
eXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2lnbmVkVHlwZTsgfTsNCisNCisgICAgLy8gaW50ZWdl
ciBoYXNoIGZ1bmN0aW9uDQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgMzIgQml0IE1peCBGdW5j
dGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFzaC5odG0NCisgICAg
aW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDMyX3Qga2V5KQ0KKyAgICB7DQorICAgICAgICBr
ZXkgKz0gfihrZXkgPDwgMTUpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4gMTApOw0KKyAgICAg
ICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiA2KTsNCisgICAg
ICAgIGtleSArPSB+KGtleSA8PCAxMSk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7DQor
ICAgICAgICByZXR1cm4ga2V5Ow0KKyAgICB9DQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgNjQg
Yml0IE1peCBGdW5jdGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFz
aC5odG0NCisgICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQ0KKyAgICB7
DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMzIpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4g
MjIpOw0KKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsNCisgICAgICAgIGtleSBePSAoa2V5
ID4+IDgpOw0KKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtl
eSA+PiAxNSk7DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMjcpOw0KKyAgICAgICAga2V5IF49
IChrZXkgPj4gMzEpOw0KKyAgICAgICAgcmV0dXJuIGtleTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSW50SGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChUIGtleSkgeyByZXR1cm4gaW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRU
eXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGU+KGtleSkpOyB9DQorICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChUIGEsIFQgYikgeyByZXR1cm4gYSA9PSBiOyB9DQorICAgIH07DQorDQorICAg
IC8vIHBvaW50ZXIgaWRlbnRpdHkgaGFzaCBmdW5jdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUHRySGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChU
IGtleSkgeyByZXR1cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihrZXkpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgUHRySGFzaDxSZWZQdHI8UD4gPiB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBSZWZQdHI8UD4mIGtleSkgeyByZXR1cm4gUHRySGFzaDxQKj46Omhhc2goa2V5Lmdl
dCgpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFA+JiBhLCBj
b25zdCBSZWZQdHI8UD4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKw0KKyAgICAv
LyBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIGVhY2ggdHlwZQ0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQorDQorICAgIC8vIG1ha2UgSW50SGFzaCB0
aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBtYW55IGludGVnZXIgdHlwZXMNCisNCisgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNp
Z25lZD4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
PiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBs
b25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNoOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nIGxvbmc+IHsgdHlwZWRlZiBJbnRIYXNoPHVu
c2lnbmVkIGxvbmcgbG9uZz4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
IGxvbmc+IEhhc2g7IH07DQorDQorICAgIC8vIG1ha2UgUHRySGFzaCB0aGUgZGVmYXVsdCBoYXNo
IGZ1bmN0aW9uIGZvciBwb2ludGVyIHR5cGVzIHRoYXQgZG9uJ3Qgc3BlY2lhbGl6ZQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UCo+IHsgdHlwZWRlZiBQ
dHJIYXNoPFAqPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8UmVmUHRyPFA+ID4geyB0eXBlZGVmIFB0ckhhc2g8UmVmUHRyPFA+ID4gSGFzaDsg
fTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6OkRlZmF1bHRIYXNoOw0K
K3VzaW5nIFdURjo6SW50SGFzaDsNCit1c2luZyBXVEY6OlB0ckhhc2g7DQorDQorI2VuZGlmIC8v
IEtYTE1DT1JFX0hBU0hfRlVOQ1RJT05TX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9IYXNoTWFwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNo
TWFwLmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaE1hcC5o
CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzMzIgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
bGlicmFyaWVzDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4NCisgKg0KKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisg
Kg0KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bw0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsDQorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisjaWZuZGVmIEtYTUxDT1JFX0hBU0hfTUFQ
X0gNCisjZGVmaW5lIEtYTUxDT1JFX0hBU0hfTUFQX0gNCisNCisjaW5jbHVkZSAiSGFzaFRhYmxl
LmgiDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJU
eXBlPiBzdHJ1Y3QgUGFpckZpcnN0RXh0cmFjdG9yOw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1l
IERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsDQorICAgICAgICB0eXBlbmFtZSBLZXlUcmFpdHNB
cmcgPSBIYXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hU
cmFpdHM8TWFwcGVkQXJnPiA+DQorICAgIGNsYXNzIEhhc2hNYXAgew0KKyAgICBwcml2YXRlOg0K
KyAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOw0KKyAgICAgICAgdHlwZWRl
ZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiBQYWlyQmFz
ZUhhc2hUcmFpdHM8S2V5VHJhaXRzLCBNYXBwZWRUcmFpdHM+IFZhbHVlVHJhaXRzOw0KKw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVRyYWl0czo6VHJhaXRUeXBl
IEtleVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6VHJhaXRU
eXBlIE1hcHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpU
cmFpdFR5cGUgVmFsdWVUeXBlOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgdHlwZWRlZiBI
YXNoQXJnIEhhc2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hL
ZXlTdG9yYWdlVHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46Okhhc2ggU3RvcmFnZUhh
c2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hLZXlTdG9yYWdl
VHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46OlRyYWl0cyBLZXlTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6OlN0b3JhZ2VUcmFpdHMg
TWFwcGVkU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8S2V5
U3RvcmFnZVRyYWl0cywgTWFwcGVkU3RvcmFnZVRyYWl0cz4gVmFsdWVTdG9yYWdlVHJhaXRzOw0K
Kw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBLZXlTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUg
S2V5U3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFN0b3JhZ2VU
cmFpdHM6OlRyYWl0VHlwZSBNYXBwZWRTdG9yYWdlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleVN0b3JhZ2VUeXBlLCBWYWx1ZVN0b3JhZ2VU
eXBlLCBQYWlyRmlyc3RFeHRyYWN0b3I8VmFsdWVTdG9yYWdlVHlwZT4sDQorICAgICAgICAgICAg
U3RvcmFnZUhhc2hGdW5jdGlvbnMsIFZhbHVlU3RvcmFnZVRyYWl0cywgS2V5U3RvcmFnZVRyYWl0
cz4gSGFzaFRhYmxlVHlwZTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxl
VHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsNCisNCisgICAgICAgIEhhc2hNYXAoKTsN
CisgICAgICAgIEhhc2hNYXAoY29uc3QgSGFzaE1hcCYpOw0KKyAgICAgICAgSGFzaE1hcCYgb3Bl
cmF0b3I9KGNvbnN0IEhhc2hNYXAmKTsNCisgICAgICAgIH5IYXNoTWFwKCk7DQorDQorICAgICAg
ICBpbnQgc2l6ZSgpIGNvbnN0Ow0KKyAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7DQorICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsNCisNCisgICAgICAgIC8vIGl0ZXJhdG9ycyBpdGVy
YXRlIG92ZXIgcGFpcnMgb2Yga2V5cyBhbmQgdmFsdWVzDQorICAgICAgICBpdGVyYXRvciBiZWdp
bigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQorDQor
ICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KKyAgICAgICAgYm9vbCBjb250YWlu
cyhjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAgICAgICBNYXBwZWRUeXBlIGdldChjb25zdCBL
ZXlUeXBlJikgY29uc3Q7DQorDQorICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtl
eSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50DQorICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMg
YSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCANCisgICAgICAgIC8v
IGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFk
ZGVkDQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIGNv
bnN0IE1hcHBlZFR5cGUmKTsgDQorDQorICAgICAgICAvLyBkb2VzIG5vdGhpbmcgaWYga2V5IGlz
IGFscmVhZHkgcHJlc2VudA0KKyAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0
aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgDQorICAgICAgICAvLyBhbmQgYSBib29s
ZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZA0KKyAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRU
eXBlJik7IA0KKw0KKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOw0KKyAgICAg
ICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpOw0KKyAgICAgICAgdm9pZCBjbGVhcigpOw0KKw0K
KyAgICBwcml2YXRlOg0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNv
bnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7DQorICAgICAgICB2b2lkIHJlZkFsbCgp
Ow0KKyAgICAgICAgdm9pZCBkZXJlZkFsbCgpOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlVHlwZSBt
X2ltcGw7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJUeXBlPiBzdHJ1
Y3QgUGFpckZpcnN0RXh0cmFjdG9yIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSBQ
YWlyVHlwZTo6Zmlyc3RfdHlwZSYgZXh0cmFjdChjb25zdCBQYWlyVHlwZSYgcCkgeyByZXR1cm4g
cC5maXJzdDsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTxib29sIGNhblJlcGxhY2VEZWxl
dGVkS2V5LCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0cywg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yOw0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFu
c2xhdG9yPHRydWUsIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHlwZTo6Zmlyc3RfdHlwZSBLZXlU
eXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1h
cHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6
VHJhaXRUeXBlIFZhbHVlU3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZh
bHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgS2V5U3RvcmFnZVRyYWl0czsNCisgICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgS2V5U3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIEtleVN0b3JhZ2VU
eXBlOw0KKw0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5VHlwZSYga2V5
KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0NCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IEtleVN0b3JhZ2VUeXBlJiBhLCBjb25zdCBLZXlUeXBlJiBiKSB7IHJl
dHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbCgqKEtleVR5cGUqKSZhLCBiKTsgfQ0KKyAgICAgICAg
c3RhdGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlU3RvcmFnZVR5cGUmIGxvY2F0aW9uLCBjb25zdCBL
ZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCwgdW5zaWduZWQpDQorICAgICAg
ICB7DQorICAgICAgICAgICAgKihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAg
ICAgICAgICAgKihNYXBwZWRUeXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAg
ICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIFZhbHVlU3RvcmFnZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3Ry
dWN0IEhhc2hNYXBUcmFuc2xhdG9yPGZhbHNlLCBWYWx1ZVR5cGUsIFZhbHVlU3RvcmFnZVRyYWl0
cywgSGFzaEZ1bmN0aW9ucz4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6
OmZpcnN0X3R5cGUgS2V5VHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUeXBl
OjpzZWNvbmRfdHlwZSBNYXBwZWRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1
ZVN0b3JhZ2VUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVN0b3JhZ2VUeXBlOw0KKyAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEtleVN0b3JhZ2VU
cmFpdHM7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVN0b3JhZ2VUcmFpdHM6OlRyYWl0
VHlwZSBLZXlTdG9yYWdlVHlwZTsNCisNCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9DQor
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXlTdG9yYWdlVHlwZSYgYSwgY29uc3Qg
S2V5VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoKihLZXlUeXBlKikmYSwg
Yik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZVN0b3JhZ2VUeXBlJiBs
b2NhdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiBtYXBwZWQsIHVu
c2lnbmVkKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChsb2NhdGlvbi5maXJzdCA9PSBL
ZXlTdG9yYWdlVHJhaXRzOjpkZWxldGVkVmFsdWUoKSkNCisgICAgICAgICAgICAgICAgbG9jYXRp
b24uZmlyc3QgPSBLZXlTdG9yYWdlVHJhaXRzOjplbXB0eVZhbHVlKCk7DQorICAgICAgICAgICAg
KihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAgICAgICAgICAgKihNYXBwZWRU
eXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZWZBbGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJs
ZVR5cGUsIFZhbHVlVHJhaXRzPjo6cmVmQWxsKG1faW1wbCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZGVyZWZB
bGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJsZVR5cGUs
IFZhbHVlVHJhaXRzPjo6ZGVyZWZBbGwobV9pbXBsKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6SGFzaE1hcCgpDQorICAg
IHsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6SGFzaE1hcChjb25zdCBIYXNoTWFwJiBvdGhlcikNCisgICAgICAgIDogbV9p
bXBsKG90aGVyLm1faW1wbCkNCisgICAgew0KKyAgICAgICAgcmVmQWxsKCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46Om9wZXJhdG9yPShjb25zdCBIYXNoTWFwJiBvdGhlcikNCisg
ICAgew0KKyAgICAgICAgSGFzaE1hcCB0bXAob3RoZXIpOw0KKyAgICAgICAgbV9pbXBsLnN3YXAo
dG1wLm1faW1wbCk7IA0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+DQorICAgIGlubGluZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp+SGFzaE1hcCgp
DQorICAgIHsNCisgICAgICAgIGRlcmVmQWxsKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4NCisgICAgaW5saW5lIGludCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QN
CisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+DQorICAgIGlubGluZSBpbnQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2Fw
YWNpdHkoKSBjb25zdA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgp
OyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5pc0VtcHR5KCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmJlZ2luKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdp
bigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpl
bmQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+Ojpjb25zdF9pdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0
DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsNCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkgY29uc3QNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBl
Kikma2V5KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBlKikma2V5KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIHJldHVybiBtX2ltcGwuY29udGFpbnMoKihjb25zdCBLZXlTdG9yYWdlVHlwZSopJmtleSk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHBhaXI8dHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+DQorICAgIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5
cGUmIG1hcHBlZCkgDQorICAgIHsgDQorI2lmbmRlZiBfX0FSTUNDX18NCisgICAgICAgIGNvbnN0
IGJvb2wgY2FuUmVwbGFjZURlbGV0ZWRLZXkgPSAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9u
IHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb247DQorICAgICAgICB0eXBlZGVm
IEhhc2hNYXBUcmFuc2xhdG9yPGNhblJlcGxhY2VEZWxldGVkS2V5LCBWYWx1ZVR5cGUsIFZhbHVl
U3RvcmFnZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7DQorI2Vsc2UNCisg
ICAgICAgIC8vIGdldCBhcm91bmQgDQorICAgICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xhdG9y
PCAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uIHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRz
RGVzdHJ1Y3Rpb24sIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiBUcmFuc2xhdG9yVHlwZTsNCisjZW5kaWYNCisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgYWRkPEtleVR5cGUsIE1hcHBlZFR5cGUsIFRyYW5zbGF0b3JUeXBlPihrZXksIG1hcHBlZCk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4NCisgICAgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKSAN
CisgICAgew0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsNCisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAg
ICAvLyBhZGQgY2FsbCBhYm92ZSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLCBzbyBzZXQgdGhlIG1h
cHBlZCB2YWx1ZQ0KKyAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbWFwcGVkOw0K
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAg
ICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPg0K
KyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBjb25z
dCBNYXBwZWRUeXBlJiBtYXBwZWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBtYXBwZWQpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4NCisg
ICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFw
cGVkVHlwZQ0KKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0
ID0gZmluZChrZXkpOw0KKyAgICAgICAgaWYgKGl0ID09IGVuZCgpKQ0KKyAgICAgICAgICAgIHJl
dHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKTsNCisgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkNCisgICAgew0KKyAgICAgICAg
aWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKyAg
ICAgICAgUmVmQ291bnRlcjxWYWx1ZVRyYWl0cywgVmFsdWVTdG9yYWdlVHJhaXRzPjo6ZGVyZWYo
Kml0Lm1faW1wbCk7DQorICAgICAgICBtX2ltcGwucmVtb3ZlKGl0Lm1faW1wbCk7DQorICAgIH0N
CisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkNCisgICAgew0KKyAgICAgICAgcmVtb3Zl
KGZpbmQoa2V5KSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZv
aWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBkZXJl
ZkFsbCgpOw0KKyAgICAgICAgbV9pbXBsLmNsZWFyKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWFwcGVkVHlwZSwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZT4NCisgICAgdm9p
ZCBkZWxldGVBbGxQYWlyU2Vjb25kcyhIYXNoVGFibGVUeXBlJiBjb2xsZWN0aW9uKQ0KKyAgICB7
DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXJhdG9yOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsNCisg
ICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkNCisgICAgICAgICAgICBkZWxldGUgKihNYXBwZWRUeXBlKikmaXQtPnNlY29uZDsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBkZWxldGVBbGxWYWx1
ZXMoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbikNCisgICAgew0KKyAg
ICAgICAgZGVsZXRlQWxsUGFpclNlY29uZHM8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6TWFwcGVkVHlwZT4oY29sbGVjdGlvbik7DQorICAgIH0NCisNCit9IC8vIG5hbWVzcGFjZSBX
VEYNCisNCit1c2luZyBXVEY6Okhhc2hNYXA7DQorDQorI2VuZGlmIC8qIEtYTUxDT1JFX0hBU0hf
TUFQX0ggKi8NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVGFibGUuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lv
biAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw5MzUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0K
KyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RBQkxFX0gNCisjZGVmaW5lIEtY
TUxDT1JFX0hBU0hfVEFCTEVfSA0KKw0KKyNpbmNsdWRlICJGYXN0X01hbGxvYy5oIg0KKyNpbmNs
dWRlICJIYXNoVHJhaXRzLmgiDQorI2luY2x1ZGUgPGFzc2VydC5oPg0KKw0KK25hbWVzcGFjZSBX
VEYgew0KKw0KKyNkZWZpbmUgRFVNUF9IQVNIVEFCTEVfU1RBVFMgMA0KKyNkZWZpbmUgQ0hFQ0tf
SEFTSFRBQkxFX0NPTlNJU1RFTkNZIDANCisNCisjaWZkZWYgTkRFQlVHDQorI2RlZmluZSBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTIDANCisjZWxzZQ0KKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUyAxDQorI2VuZGlmDQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorDQor
ICAgIHN0cnVjdCBIYXNoVGFibGVTdGF0cyB7DQorICAgICAgICB+SGFzaFRhYmxlU3RhdHMoKTsN
CisgICAgICAgIHN0YXRpYyBpbnQgbnVtQWNjZXNzZXM7DQorICAgICAgICBzdGF0aWMgaW50IG51
bUNvbGxpc2lvbnM7DQorICAgICAgICBzdGF0aWMgaW50IGNvbGxpc2lvbkdyYXBoWzQwOTZdOw0K
KyAgICAgICAgc3RhdGljIGludCBtYXhDb2xsaXNpb25zOw0KKyAgICAgICAgc3RhdGljIGludCBu
dW1SZWhhc2hlczsNCisgICAgICAgIHN0YXRpYyBpbnQgbnVtUmVtb3ZlczsNCisgICAgICAgIHN0
YXRpYyBpbnQgbnVtUmVpbnNlcnRzOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVjb3JkQ29sbGlz
aW9uQXRDb3VudChpbnQgY291bnQpOw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGU7DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJs
ZUl0ZXJhdG9yOw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNo
VGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+Kik7DQorI2Vsc2UNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKSB7IH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRl
cmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopIHsgfQ0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yIHsNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAgICB0eXBlZGVm
IEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1
ZVR5cGU7DQorICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlwZTsN
CisgICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsNCisNCisgICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47DQorICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz47DQorDQorICAgICAgICB2b2lkIHNraXBFbXB0eUJ1Y2tldHMoKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgICAgIHdoaWxlIChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24gJiYg
SGFzaFRhYmxlVHlwZTo6aXNFbXB0eU9yRGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlvbikpDQorICAg
ICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgICAgIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBl
IHBvc2l0aW9uLCBQb2ludGVyVHlwZSBlbmRQb3NpdGlvbikNCisgICAgICAgICAgICA6IG1fcG9z
aXRpb24ocG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKQ0KKyAgICAgICAgew0K
KyAgICAgICAgICAgIGFkZEl0ZXJhdG9yKHRhYmxlLCB0aGlzKTsNCisgICAgICAgICAgICBza2lw
RW1wdHlCdWNrZXRzKCk7DQorICAgICAgICB9DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGFkZEl0ZXJh
dG9yKDAsIHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gZGVmYXVsdCBjb3B5LCBh
c3NpZ25tZW50IGFuZCBkZXN0cnVjdG9yIGFyZSBPSyBpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTIGlzIDANCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAgICAgICAgfkhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJlbW92ZUl0
ZXJhdG9yKHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvcihjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpDQorICAgICAgICAgICAgOiBtX3Bvc2l0
aW9uKG90aGVyLm1fcG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKG90aGVyLm1fZW5kUG9zaXRpb24p
DQorICAgICAgICB7DQorICAgICAgICAgICAgYWRkSXRlcmF0b3Iob3RoZXIubV90YWJsZSwgdGhp
cyk7DQorICAgICAgICB9DQorDQorICAgICAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3I9KGNv
bnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikNCisgICAgICAgIHsNCisgICAgICAgICAgICBtX3Bv
c2l0aW9uID0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgICAgICBtX2VuZFBvc2l0aW9uID0g
b3RoZXIubV9lbmRQb3NpdGlvbjsNCisNCisgICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0aGlz
KTsNCisgICAgICAgICAgICBhZGRJdGVyYXRvcihvdGhlci5tX3RhYmxlLCB0aGlzKTsNCisNCisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgICAgICB9DQorI2VuZGlmDQorDQorICAgICAg
ICBQb2ludGVyVHlwZSBnZXQoKSBjb25zdA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNoZWNr
VmFsaWRpdHkoKTsNCisgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbjsNCisgICAgICAgIH0N
CisgICAgICAgIFJlZmVyZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9DQorICAgICAgICBQb2ludGVyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0NCisNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkNCisgICAgICAg
IHsNCisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7DQorICAgICAgICAgICAgYXNzZXJ0KG1f
cG9zaXRpb24gIT0gbV9lbmRQb3NpdGlvbik7DQorICAgICAgICAgICAgKyttX3Bvc2l0aW9uOw0K
KyAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsNCisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkg
b21pdHRlZA0KKw0KKyAgICAgICAgLy8gQ29tcGFyaXNvbi4NCisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQorICAg
ICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1fcG9z
aXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisgICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQor
ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1f
cG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgcHJpdmF0
ZToNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0DQorICAgICAgICB7DQorI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAgICAgICBhc3NlcnQobV90YWJsZSk7
DQorI2VuZGlmDQorICAgICAgICB9DQorDQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRP
UlMNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25zdF9pdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0DQorICAgICAgICB7DQorICAgICAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAg
ICAgICAgICAgIGFzc2VydChvdGhlci5tX3RhYmxlKTsNCisgICAgICAgICAgICBhc3NlcnQobV90
YWJsZSA9PSBvdGhlci5tX3RhYmxlKTsNCisgICAgICAgIH0NCisjZWxzZQ0KKyAgICAgICAgdm9p
ZCBjaGVja1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJikgY29uc3QgeyB9DQorI2VuZGlm
DQorDQorICAgICAgICBQb2ludGVyVHlwZSBtX3Bvc2l0aW9uOw0KKyAgICAgICAgUG9pbnRlclR5
cGUgbV9lbmRQb3NpdGlvbjsNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7
DQorICAgICAgICBtdXRhYmxlIGNvbnN0X2l0ZXJhdG9yKiBtX25leHQ7DQorICAgICAgICBtdXRh
YmxlIGNvbnN0X2l0ZXJhdG9yKiBtX3ByZXZpb3VzOw0KKyNlbmRpZg0KKyAgICB9Ow0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciB7DQorICAgIHByaXZhdGU6DQor
ICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOw0KKyAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFs
dWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7DQorICAg
ICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7DQorDQorICAgICAgICBmcmllbmQg
Y2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+Ow0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoSGFzaFRhYmxl
VHlwZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvcywgUG9pbnRlclR5cGUgZW5kKSA6IG1faXRlcmF0
b3IodGFibGUsIHBvcywgZW5kKSB7IH0NCisNCisgICAgcHVibGljOg0KKyAgICAgICAgSGFzaFRh
YmxlSXRlcmF0b3IoKSB7IH0NCisNCisgICAgICAgIC8vIGRlZmF1bHQgY29weSwgYXNzaWdubWVu
dCBhbmQgZGVzdHJ1Y3RvciBhcmUgT0sNCisNCisgICAgICAgIFBvaW50ZXJUeXBlIGdldCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KG1faXRlcmF0b3IuZ2V0KCkpOyB9
DQorICAgICAgICBSZWZlcmVuY2VUeXBlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQo
KTsgfQ0KKyAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9DQorDQorICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2l0ZXJhdG9y
OyByZXR1cm4gKnRoaXM7IH0NCisNCisgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxs
eSBvbWl0dGVkDQorDQorICAgICAgICAvLyBDb21wYXJpc29uLg0KKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9
PSBvdGhlci5tX2l0ZXJhdG9yOyB9DQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0
b3I7IH0NCisNCisgICAgICAgIG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvcjsgfQ0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgY29uc3RfaXRlcmF0
b3IgbV9pdGVyYXRvcjsNCisgICAgfTsNCisNCisgICAgdXNpbmcgc3RkOjpzd2FwOw0KKw0KKy8v
I2lmICFDT01QSUxFUihNU1ZDKQ0KKyAgICAvLyBWaXN1YWwgQysrIGhhcyBhIHN3YXAgZm9yIHBh
aXJzIGRlZmluZWQuDQorDQorICAgIC8vIHN3YXAgcGFpcnMgYnkgY29tcG9uZW50LCBpbiBjYXNl
IG9mIHBhaXIgbWVtYmVycyB0aGF0IHNwZWNpYWxpemUgc3dhcA0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBzd2FwKHBhaXI8VCwgVT4mIGEsIHBhaXI8
VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAgIHN3YXAoYS5maXJzdCwgYi5maXJzdCk7DQorICAg
ICAgICBzd2FwKGEuc2Vjb25kLCBiLnNlY29uZCk7DQorICAgIH0NCisvLyNlbmRpZg0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIHVzZVN3YXA+IHN0cnVjdCBNb3ZlcjsNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1vdmVyPFQsIHRydWU+IHsgc3RhdGljIHZvaWQg
bW92ZShUJiBmcm9tLCBUJiB0bykgeyBzd2FwKGZyb20sIHRvKTsgfSB9Ow0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTW92ZXI8VCwgZmFsc2U+IHsgc3RhdGljIHZvaWQgbW92ZShU
JiBmcm9tLCBUJiB0bykgeyB0byA9IGZyb207IH0gfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgSWRl
bnRpdHlIYXNoVHJhbnNsYXRvciB7DQorICAgIHB1YmxpYzoNCisgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtl
eSk7IH0NCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5
JiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQ0KKyAgICAgICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlJiBsb2NhdGlvbiwgY29uc3QgS2V5JiwgY29uc3QgVmFs
dWUmIHZhbHVlLCB1bnNpZ25lZCkgeyBsb2NhdGlvbiA9IHZhbHVlOyB9DQorICAgIH07DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJsZSB7DQorICAgIHB1YmxpYzoNCisgICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFRy
YWl0cyBWYWx1ZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNo
VHJhbnNsYXRvcjxLZXksIFZhbHVlLCBIYXNoRnVuY3Rpb25zPiBJZGVudGl0eVRyYW5zbGF0b3JU
eXBlOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlKCk7DQorICAgICAgICB+SGFzaFRhYmxlKCkgeyBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6
ZSk7IH0NCisNCisgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsNCisgICAgICAg
IHZvaWQgc3dhcChIYXNoVGFibGUmKTsNCisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNv
bnN0IEhhc2hUYWJsZSYpOw0KKw0KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBt
YWtlSXRlcmF0b3IobV90YWJsZSk7IH0NCisgICAgICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJu
IG1ha2VJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorICAgICAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKG1fdGFibGUp
OyB9DQorICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlQ29u
c3RJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorDQorICAgICAgICBpbnQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0NCisgICAgICAgIGludCBjYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9DQorICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9rZXlDb3VudDsgfQ0KKw0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxLZXlUeXBlLCBW
YWx1ZVR5cGUsIElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1
ZSksIHZhbHVlKTsgfQ0KKw0KKyAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRkKCkg
dGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZw0KKyAgICAgICAg
Ly8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVy
c2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkNCisgICAgICAgIC8vIGluIHRoZSB0YWJsZS4N
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29u
c3QgRXh0cmEmKTsNCisNCisgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOw0K
KyAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAg
ICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmKSBjb25zdDsNCisNCisgICAgICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9y
KTsNCisgICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1w
dHlCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRXh0cmFjdG9yOjpleHRy
YWN0KHZhbHVlKSA9PSBLZXlUcmFpdHM6OmVtcHR5VmFsdWUoKTsgfQ0KKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEV4
dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkgPT0gS2V5VHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0K
KyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5QnVja2V0KHZhbHVlKSB8fCBpc0RlbGV0ZWRCdWNr
ZXQodmFsdWUpOyB9DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBzdGF0aWMgVmFsdWVUeXBl
KiBhbGxvY2F0ZVRhYmxlKGludCBzaXplKTsNCisgICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2Nh
dGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCBpbnQgc2l6ZSk7DQorDQorICAgICAgICB0eXBlZGVm
IHBhaXI8VmFsdWVUeXBlKiwgYm9vbD4gTG9va3VwVHlwZTsNCisgICAgICAgIHR5cGVkZWYgcGFp
cjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7DQorDQorICAgICAgICBMb29r
dXBUeXBlIGxvb2t1cChjb25zdCBLZXkmIGtleSkgeyByZXR1cm4gbG9va3VwPEtleSwgSWRlbnRp
dHlUcmFuc2xhdG9yVHlwZT4oa2V5KS5maXJzdDsgfQ0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEZ1bGxMb29rdXBUeXBlIGxvb2t1cChjb25z
dCBUJik7DQorDQorICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsNCisNCisgICAgICAg
IGJvb2wgc2hvdWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0
ZWRDb3VudCkgKiBtX21heExvYWQgPj0gbV90YWJsZVNpemU7IH0NCisgICAgICAgIGJvb2wgbXVz
dFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwg
bV90YWJsZVNpemUgKiAyOyB9DQorICAgICAgICBib29sIHNob3VsZFNocmluaygpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3RhYmxlU2l6ZSAmJiBtX3RhYmxlU2l6
ZSA+IG1fbWluVGFibGVTaXplOyB9DQorICAgICAgICB2b2lkIGV4cGFuZCgpOw0KKyAgICAgICAg
dm9pZCBzaHJpbmsoKSB7IHJlaGFzaChtX3RhYmxlU2l6ZSAvIDIpOyB9DQorDQorICAgICAgICB2
b2lkIHJlaGFzaChpbnQgbmV3VGFibGVTaXplKTsNCisgICAgICAgIHZvaWQgcmVpbnNlcnQoVmFs
dWVUeXBlJik7DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQnVja2V0KFZhbHVl
VHlwZSYgYnVja2V0KSB7IC8qbmV3ICgmYnVja2V0KSBWYWx1ZVR5cGUoVHJhaXRzOjplbXB0eVZh
bHVlKCkpOyovIH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUJ1Y2tldChWYWx1ZVR5cGUm
IGJ1Y2tldCkgeyBhc3NpZ25EZWxldGVkPFZhbHVlVHlwZSwgVHJhaXRzPihidWNrZXQpOyB9DQor
DQorICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZhbHVlVHlwZSogcG9z
aXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpDQorICAgICAgICAgICAgeyByZXR1cm4g
RnVsbExvb2t1cFR5cGUoTG9va3VwVHlwZShwb3NpdGlvbiwgZm91bmQpLCBoYXNoKTsgfQ0KKw0K
KyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBp
dGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0NCisgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7IHJl
dHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0N
CisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZDQorICAgICAgICB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0Ow0KKyAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lz
dGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7DQorI2Vsc2UNCisgICAgICAgIHN0YXRpYyB2b2lkIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJs
ZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQ0KKyNlbmRpZg0KKw0KKyNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTDQorICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisj
ZWxzZQ0KKyAgICAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUl0ZXJhdG9ycygpIHsgfQ0KKyNl
bmRpZg0KKw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21pblRhYmxlU2l6ZSA9IDY0Ow0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heExvYWQgPSAyOw0KKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBtX21pbkxvYWQgPSA2Ow0KKw0KKyAgICAgICAgVmFsdWVUeXBlKiBtX3RhYmxl
Ow0KKyAgICAgICAgaW50IG1fdGFibGVTaXplOw0KKyAgICAgICAgaW50IG1fdGFibGVTaXplTWFz
azsNCisgICAgICAgIGludCBtX2tleUNvdW50Ow0KKyAgICAgICAgaW50IG1fZGVsZXRlZENvdW50
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHB1YmxpYzoNCisgICAg
ICAgIG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1faXRlcmF0b3JzOw0KKyNlbmRpZg0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQ0KKyAg
ICAgICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAs
IG1fdGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAs
IG1fZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAg
ICAgICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPg0K
KyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpGdWxsTG9va3VwVHlwZSBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Omxvb2t1cChjb25zdCBUJiBrZXkpDQorICAgIHsNCisgICAgICAgIGFzc2VydChtX3RhYmxlKTsN
CisNCisgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOw0KKyAg
ICAgICAgaW50IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOw0KKyAgICAgICAgaW50IGkgPSBo
ICYgc2l6ZU1hc2s7DQorICAgICAgICBpbnQgayA9IDA7DQorDQorI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTDQorICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsNCisgICAgICAg
IGludCBwcm9iZUNvdW50ID0gMDsNCisjZW5kaWYNCisNCisgICAgICAgIFZhbHVlVHlwZSAqdGFi
bGUgPSBtX3RhYmxlOw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeTsNCisgICAgICAgIFZhbHVl
VHlwZSAqZGVsZXRlZEVudHJ5ID0gMDsNCisgICAgICAgIHdoaWxlICghaXNFbXB0eUJ1Y2tldCgq
KGVudHJ5ID0gdGFibGUgKyBpKSkpIHsNCisgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0
KCplbnRyeSkpDQorICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Ow0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3Qo
KmVudHJ5KSwga2V5KSkNCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQo
ZW50cnksIHRydWUsIGgpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgICAg
ICsrcHJvYmVDb3VudDsNCisgICAgICAgICAgICBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlz
aW9uQXRDb3VudChwcm9iZUNvdW50KTsNCisjZW5kaWYNCisgICAgICAgICAgICBpZiAoayA9PSAw
KQ0KKyAgICAgICAgICAgICAgICBrID0gMSB8IChoICUgc2l6ZU1hc2spOw0KKyAgICAgICAgICAg
IGkgPSAoaSArIGspICYgc2l6ZU1hc2s7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4g
bWFrZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFs
c2UsIGgpOw0KKyAgICB9DQorDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4NCisgICAgaW5saW5l
IHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQo
Y29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSAmZXh0cmEpDQorICAgIHsNCisgICAgICAgIGludmFs
aWRhdGVJdGVyYXRvcnMoKTsNCisNCisgICAgICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAg
ICBleHBhbmQoKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAg
ICAgICAgRnVsbExvb2t1cFR5cGUgbG9va3VwUmVzdWx0ID0gbG9va3VwPFQsIEhhc2hUcmFuc2xh
dG9yPihrZXkpOw0KKw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeSA9IGxvb2t1cFJlc3VsdC5m
aXJzdC5maXJzdDsNCisgICAgICAgIGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vj
b25kOw0KKyAgICAgICAgdW5zaWduZWQgaCA9IGxvb2t1cFJlc3VsdC5zZWNvbmQ7DQorDQorICAg
ICAgICBpZiAoZm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJ
dGVyYXRvcihlbnRyeSksIGZhbHNlKTsNCisNCisgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50Ow0KKw0KKyAgICAgICAgSGFz
aFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIGtleSwgZXh0cmEsIGgpOw0KKyAgICAgICAg
KyttX2tleUNvdW50Ow0KKw0KKyAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKSB7DQorICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgbWFrZXMgYW4gZXh0cmEgY29weSBvbiBleHBhbmQuIFByb2Jh
Ymx5IG5vdCB0aGF0IGJhZCBzaW5jZQ0KKyAgICAgICAgICAgIC8vIGV4cGFuZCBpcyByYXJlLCBi
dXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYSB2ZXJzaW9uIG9mIGV4cGFuZCB0aGF0IGNhbg0K
KyAgICAgICAgICAgIC8vIGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBw
b3NpdGlvbg0KKyAgICAgICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0
cmFjdCgqZW50cnkpOw0KKyAgICAgICAgICAgIGV4cGFuZCgpOw0KKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsNCisgICAgICAgIH0NCisN
CisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcihlbnRyeSksIHRydWUpOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiBl
bnRyeSkNCisgICAgew0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAgICAgICAgYXNzZXJ0
KCFsb29rdXAoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuc2Vjb25kKTsNCisgICAgICAgIGFz
c2VydCghaXNEZWxldGVkQnVja2V0KCoobG9va3VwKEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkp
LmZpcnN0KSkpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgKytIYXNoVGFi
bGVTdGF0czo6bnVtUmVpbnNlcnRzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgTW92ZXI8VmFsdWVU
eXBlLCBUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24+Ojptb3ZlKGVudHJ5LCAqKGxvb2t1cChFeHRy
YWN0b3I6OmV4dHJhY3QoZW50cnkpKS5maXJzdCkpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQor
ICAgIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IEtl
eSYga2V5KQ0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAgICAgICAgcmV0
dXJuIGVuZCgpOw0KKw0KKyAgICAgICAgTG9va3VwVHlwZSByZXN1bHQgPSBsb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKHJlc3VsdC5maXJzdCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4NCisgICAgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OmZpbmQoY29uc3QgS2V5JiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICgh
bV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7DQorDQorICAgICAgICBMb29rdXBU
eXBlIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IocmVzdWx0LmZpcnN0KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KKw0KKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SGFzaFRh
YmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KS5zZWNvbmQ7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4N
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykNCisgICAgew0KKyAg
ICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3Rl
bmN5KCk7DQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorICAgICAgICArK0hhc2hUYWJs
ZVN0YXRzOjpudW1SZW1vdmVzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgZGVsZXRlQnVja2V0KCpw
b3MpOw0KKyAgICAgICAgKyttX2RlbGV0ZWRDb3VudDsNCisgICAgICAgIC0tbV9rZXlDb3VudDsN
CisNCisgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkNCisgICAgICAgICAgICBzaHJpbmsoKTsN
CisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAg
ICB7DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0K
KyAgICAgICAgcmVtb3ZlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bv
c2l0aW9uKSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQ0KKyAgICB7DQorICAgICAgICByZW1vdmUo
ZmluZChrZXkpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBWYWx1ZSAqSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjphbGxvY2F0ZVRhYmxlKGludCBzaXplKQ0KKyAgICB7DQorICAgICAgICAvLyB3b3VsZCB1c2Ug
YSB0ZW1wbGF0ZSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMg
aGVyZSwgYnV0DQorICAgICAgICAvLyBnY2MgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCB0aGF0
DQorICAgICAgICBpZiAoVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvKQ0KKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUgKj4oS0pTOjpranNfZmFzdF9jYWxsb2Moc2l6ZSwg
c2l6ZW9mKFZhbHVlVHlwZSkpKTsNCisgICAgICAgIFZhbHVlVHlwZSogcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VmFsdWVUeXBlKj4oS0pTOjpranNfZmFzdF9tYWxsb2Moc2l6ZSAqIHNpemVvZihWYWx1
ZVR5cGUpKSk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykNCisgICAg
ICAgICAgICBpbml0aWFsaXplQnVja2V0KHJlc3VsdFtpXSk7DQorICAgICAgICByZXR1cm4gcmVz
dWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9j
YXRlVGFibGUoVmFsdWVUeXBlICp0YWJsZSwgaW50IHNpemUpDQorICAgIHsNCisgICAgICAgIGlm
IChUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24pDQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyArK2kpDQorICAgICAgICAgICAgICAgIHRhYmxlW2ldLn5WYWx1ZVR5cGUoKTsN
CisgICAgICAgIEtKUzo6a2pzX2Zhc3RfZnJlZSh0YWJsZSk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZCgpDQorICAgIHsNCisgICAgICAgIGludCBu
ZXdTaXplOw0KKyAgICAgICAgaWYgKG1fdGFibGVTaXplID09IDApDQorICAgICAgICAgICAgbmV3
U2l6ZSA9IG1fbWluVGFibGVTaXplOw0KKyAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxh
Y2UoKSkNCisgICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemU7DQorICAgICAgICBlbHNl
DQorICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVTaXplICogMjsNCisNCisgICAgICAgIHJl
aGFzaChuZXdTaXplKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6cmVoYXNoKGludCBuZXdUYWJsZVNpemUpDQorICAgIHsNCisgICAgICAgIGNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsNCisNCisgICAgICAgIGludCBvbGRUYWJsZVNpemUgPSBt
X3RhYmxlU2l6ZTsNCisgICAgICAgIFZhbHVlVHlwZSAqb2xkVGFibGUgPSBtX3RhYmxlOw0KKw0K
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgaWYgKG9sZFRhYmxlU2l6ZSAhPSAw
KQ0KKyAgICAgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaGFzaGVzOw0KKyNlbmRpZg0K
Kw0KKyAgICAgICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7DQorICAgICAgICBtX3RhYmxl
U2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAxOw0KKyAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRl
VGFibGUobmV3VGFibGVTaXplKTsNCisNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICE9IG9s
ZFRhYmxlU2l6ZTsgKytpKQ0KKyAgICAgICAgICAgIGlmICghaXNFbXB0eU9yRGVsZXRlZEJ1Y2tl
dChvbGRUYWJsZVtpXSkpDQorICAgICAgICAgICAgICAgIHJlaW5zZXJ0KG9sZFRhYmxlW2ldKTsN
CisNCisgICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsNCisNCisgICAgICAgIGRlYWxsb2NhdGVU
YWJsZShvbGRUYWJsZSwgb2xkVGFibGVTaXplKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpj
bGVhcigpDQorICAgIHsNCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisgICAgICAg
IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7DQorICAgICAgICBtX3RhYmxl
ID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplTWFz
ayA9IDA7DQorICAgICAgICBtX2tleUNvdW50ID0gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0K
KyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQ0KKyAgICAg
ICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAsIG1f
dGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAg
ICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICAgICAgLy8gQ29weSB0aGUg
aGFzaCB0YWJsZSB0aGUgZHVtYiB3YXksIGJ5IGFkZGluZyBlYWNoIGVsZW1lbnQgdG8gdGhlIG5l
dyB0YWJsZS4NCisgICAgICAgIC8vIEl0IG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IHRvIGNvcHkg
dGhlIHRhYmxlIHNsb3RzLCBidXQgaXQncyBub3QgY2xlYXIgdGhhdCBlZmZpY2llbmN5IGlzIG5l
ZWRlZC4NCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCA9IG90aGVyLmVuZCgpOw0KKyAgICAg
ICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkNCisgICAgICAgICAgICBhZGQoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQ0KKyAgICB7DQorICAgICAgICBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3Jz
KCk7DQorDQorICAgICAgICBWYWx1ZVR5cGUgKnRtcF90YWJsZSA9IG1fdGFibGU7DQorICAgICAg
ICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsNCisgICAgICAgIG90aGVyLm1fdGFibGUgPSB0bXBf
dGFibGU7DQorDQorICAgICAgICBpbnQgdG1wX3RhYmxlU2l6ZSA9IG1fdGFibGVTaXplOw0KKyAg
ICAgICAgbV90YWJsZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsNCisgICAgICAgIG90aGVyLm1f
dGFibGVTaXplID0gdG1wX3RhYmxlU2l6ZTsNCisNCisgICAgICAgIGludCB0bXBfdGFibGVTaXpl
TWFzayA9IG1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG1fdGFibGVTaXplTWFzayA9IG90aGVy
Lm1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IHRtcF90
YWJsZVNpemVNYXNrOw0KKw0KKyAgICAgICAgaW50IHRtcF9rZXlDb3VudCA9IG1fa2V5Q291bnQ7
DQorICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsNCisgICAgICAgIG90aGVy
Lm1fa2V5Q291bnQgPSB0bXBfa2V5Q291bnQ7DQorDQorICAgICAgICBpbnQgdG1wX2RlbGV0ZWRD
b3VudCA9IG1fZGVsZXRlZENvdW50Ow0KKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5t
X2RlbGV0ZWRDb3VudDsNCisgICAgICAgIG90aGVyLm1fZGVsZXRlZENvdW50ID0gdG1wX2RlbGV0
ZWRDb3VudDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4mIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpDQorICAgIHsNCisgICAgICAgIEhh
c2hUYWJsZSB0bXAob3RoZXIpOw0KKyAgICAgICAgc3dhcCh0bXApOw0KKyAgICAgICAgcmV0dXJu
ICp0aGlzOw0KKyAgICB9DQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkg
Y29uc3QNCisgICAgew0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgp
Ow0KKyAgICAgICAgYXNzZXJ0KCFzaG91bGRFeHBhbmQoKSk7DQorICAgICAgICBhc3NlcnQoIXNo
b3VsZFNocmluaygpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm47DQorDQorICAgICAgICBpbnQg
Y291bnQgPSAwOw0KKyAgICAgICAgaW50IGRlbGV0ZWRDb3VudCA9IDA7DQorICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG1fdGFibGVTaXplOyArK2opIHsNCisgICAgICAgICAgICBWYWx1ZVR5
cGUgKmVudHJ5ID0gbV90YWJsZSArIGo7DQorICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAgICAgICAgaWYg
KGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7DQorICAgICAgICAgICAgICAgICsrZGVsZXRlZENv
dW50Ow0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorDQorICAg
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50
cnkpKTsNCisgICAgICAgICAgICBhc3NlcnQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7DQorICAg
ICAgICAgICAgKytjb3VudDsNCisgICAgICAgIH0NCisNCisgICAgICAgIGFzc2VydChjb3VudCA9
PSBtX2tleUNvdW50KTsNCisgICAgICAgIGFzc2VydChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVk
Q291bnQpOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGVTaXplID49IG1fbWluVGFibGVTaXplKTsN
CisgICAgICAgIGFzc2VydChtX3RhYmxlU2l6ZU1hc2spOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFi
bGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOw0KKyAgICB9DQorDQorI2VuZGlmIC8vIENI
RUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0
b3JzKCkNCisgICAgew0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5leHQ7DQorICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7DQorICAg
ICAgICAgICAgbmV4dCA9IHAtPm1fbmV4dDsNCisgICAgICAgICAgICBwLT5tX3RhYmxlID0gMDsN
CisgICAgICAgICAgICBwLT5tX25leHQgPSAwOw0KKyAgICAgICAgICAgIHAtPm1fcHJldmlvdXMg
PSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pdGVyYXRvcnMgPSAwOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiB0YWJsZSwN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQ0KKyAgICB7DQorICAgICAgICBp
dC0+bV90YWJsZSA9IHRhYmxlOw0KKyAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOw0KKw0KKyAg
ICAgICAgLy8gSW5zZXJ0IGl0ZXJhdG9yIGF0IGhlYWQgb2YgZG91Ymx5LWxpbmtlZCBsaXN0IG9m
IGl0ZXJhdG9ycy4NCisgICAgICAgIGlmICghdGFibGUpIHsNCisgICAgICAgICAgICBpdC0+bV9u
ZXh0ID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYXNzZXJ0KHRhYmxlLT5t
X2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAgaXQtPm1fbmV4dCA9IHRhYmxlLT5tX2l0
ZXJhdG9yczsNCisgICAgICAgICAgICB0YWJsZS0+bV9pdGVyYXRvcnMgPSBpdDsNCisgICAgICAg
ICAgICBpZiAoaXQtPm1fbmV4dCkgew0KKyAgICAgICAgICAgICAgICBhc3NlcnQoIWl0LT5tX25l
eHQtPm1fcHJldmlvdXMpOw0KKyAgICAgICAgICAgICAgICBpdC0+bV9uZXh0LT5tX3ByZXZpb3Vz
ID0gaXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
DQorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpDQor
ICAgIHsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorDQorICAg
ICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJvbSBkb3VibHktbGlua2VkIGxpc3Qgb2YgaXRlcmF0
b3JzLg0KKyAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgew0KKyAgICAgICAgICAgIGFzc2VydCgh
aXQtPm1fbmV4dCk7DQorICAgICAgICAgICAgYXNzZXJ0KCFpdC0+bV9wcmV2aW91cyk7DQorICAg
ICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7DQorICAgICAgICAg
ICAgICAgIGFzc2VydChpdC0+bV9uZXh0LT5tX3ByZXZpb3VzID09IGl0KTsNCisgICAgICAgICAg
ICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9IGl0LT5tX3ByZXZpb3VzOw0KKyAgICAgICAg
ICAgIH0NCisgICAgICAgICAgICBpZiAoaXQtPm1fcHJldmlvdXMpIHsNCisgICAgICAgICAgICAg
ICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAg
ICAgIGFzc2VydChpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0KTsNCisgICAgICAgICAgICAg
ICAgaXQtPm1fcHJldmlvdXMtPm1fbmV4dCA9IGl0LT5tX25leHQ7DQorICAgICAgICAgICAgfSBl
bHNlIHsNCisgICAgICAgICAgICAgICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9
PSBpdCk7DQorICAgICAgICAgICAgICAgIGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9IGl0LT5t
X25leHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaXQtPm1fdGFi
bGUgPSAwOw0KKyAgICAgICAgaXQtPm1fbmV4dCA9IDA7DQorICAgICAgICBpdC0+bV9wcmV2aW91
cyA9IDA7DQorICAgIH0NCisNCisjZW5kaWYgLy8gQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0K
Kw0KKyAgICAvLyBpdGVyYXRvciBhZGFwdGVycw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlciB7DQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcihj
b25zdCB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciYgaW1wbCkgOiBtX2lt
cGwoaW1wbCkge30NCisNCisgICAgICAgIGNvbnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gKGNvbnN0IFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9DQorICAgICAgICBjb25zdCBW
YWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KKyAgICAgICAg
Y29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0NCisN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyAr
K21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlv
bmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFk
YXB0ZXIgew0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1l
IEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KKw0KKyAg
ICAgICAgVmFsdWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2ltcGwu
Z2V0KCk7IH0NCisgICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KmdldCgpOyB9DQorICAgICAgICBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVy
biBnZXQoKTsgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRv
cisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsr
IGludGVudGlvbmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIHsNCisgICAgICAg
ICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOw0K
KyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdHlwZW5hbWUg
SGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5tX2ltcGwg
IT0gYi5tX2ltcGw7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4NCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYg
YikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9
DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBj
b25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAg
IHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsNCisgICAgfQ0KKw0KKyAgICAvLyByZWZlcmVu
Y2UgY291bnQgbWFuYWdlcg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzPiBzdHJ1Y3QgTmVlZHNSZWYgew0KKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBWYWx1ZVRyYWl0czo6bmVlZHNSZWYgJiYgIVZhbHVl
U3RvcmFnZVRyYWl0czo6bmVlZHNSZWY7DQorICAgIH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZpcnN0VHJhaXRzLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHMsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cz4NCisgICAgc3RydWN0IE5lZWRzUmVmPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRy
YWl0cywgU2Vjb25kVHJhaXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgRmlyc3RTdG9yYWdl
VHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OlNl
Y29uZFRyYWl0cyBTZWNvbmRTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgZmlyc3ROZWVkc1JlZiA9IE5lZWRzUmVmPEZpcnN0VHJhaXRzLCBGaXJzdFN0b3JhZ2VUcmFp
dHM+Ojp2YWx1ZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNlY29uZE5lZWRzUmVmID0g
TmVlZHNSZWY8U2Vjb25kVHJhaXRzLCBTZWNvbmRTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZpcnN0TmVlZHNSZWYgfHwgc2Vjb25kTmVl
ZHNSZWY7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPGJvb2wgbmVlZHNSZWYsIHR5cGVuYW1l
IFZhbHVlVHJhaXRzPiBzdHJ1Y3QgUmVmQ291bnRlckJhc2U7DQorDQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUmVmQ291bnRlckJhc2U8ZmFsc2UsIFZh
bHVlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFp
dFR5cGUgVmFsdWVUeXBlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlVHlw
ZSYpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3QgVmFsdWVUeXBlJikgeyB9
DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBz
dHJ1Y3QgUmVmQ291bnRlckJhc2U8dHJ1ZSwgVmFsdWVUcmFpdHM+IHsNCisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAgICBz
dGF0aWMgdm9pZCByZWYoY29uc3QgVmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpyZWYoKihj
b25zdCBWYWx1ZVR5cGUqKSZ2KTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3Qg
VmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpkZXJlZigqKGNvbnN0IFZhbHVlVHlwZSopJnYp
OyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBl
bmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+IHN0cnVjdCBSZWZDb3VudGVyIHsNCisgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlU3Rv
cmFnZVR5cGU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc1JlZiA9IE5lZWRzUmVm
PFZhbHVlVHJhaXRzLCBWYWx1ZVN0b3JhZ2VUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5cGVk
ZWYgUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIFZhbHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAg
c3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6cmVmKCoo
Y29uc3QgVmFsdWVUeXBlKikmdik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmKGNvbnN0
IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6ZGVyZWYoKihjb25zdCBWYWx1ZVR5cGUqKSZ2
KTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlw
ZW5hbWUgU2Vjb25kVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+DQorICAgIHN0
cnVjdCBSZWZDb3VudGVyPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRyYWl0cywgU2Vjb25kVHJh
aXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEZp
cnN0VHJhaXRzOjpUcmFpdFR5cGUgRmlyc3RUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZSBTZWNvbmRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEZpcnN0U3RvcmFnZVRyYWl0
czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpTZWNvbmRU
cmFpdHMgU2Vjb25kU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFs
dWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGZpcnN0TmVlZHNSZWYgPSBOZWVkc1JlZjxGaXJzdFRyYWl0cywgRmly
c3RTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzZWNv
bmROZWVkc1JlZiA9IE5lZWRzUmVmPFNlY29uZFRyYWl0cywgU2Vjb25kU3RvcmFnZVRyYWl0cz46
OnZhbHVlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxmaXJzdE5lZWRzUmVmLCBG
aXJzdFRyYWl0cz4gRmlyc3RCYXNlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxz
ZWNvbmROZWVkc1JlZiwgU2Vjb25kVHJhaXRzPiBTZWNvbmRCYXNlOw0KKyAgICAgICAgc3RhdGlj
IHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsNCisgICAgICAgICAgICBGaXJz
dEJhc2U6OnJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmlyc3QpOw0KKyAgICAgICAgICAgIFNl
Y29uZEJhc2U6OnJlZigqKGNvbnN0IFNlY29uZFR5cGUqKSZ2LnNlY29uZCk7DQorICAgICAgICB9
DQorICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZihjb25zdCBWYWx1ZVN0b3JhZ2VUeXBlJiB2KSB7
DQorICAgICAgICAgICAgRmlyc3RCYXNlOjpkZXJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmly
c3QpOw0KKyAgICAgICAgICAgIFNlY29uZEJhc2U6OmRlcmVmKCooY29uc3QgU2Vjb25kVHlwZSop
JnYuc2Vjb25kKTsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBu
ZWVkc1JlZiwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+IHN0
cnVjdCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHN0cnVjdCBIYXNoVGFi
bGVSZWZDb3VudGVyQmFzZTxmYWxzZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+DQorICAg
IHsNCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAg
ICAgICBzdGF0aWMgdm9pZCBkZXJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAgIH07DQor
DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJh
aXRzPg0KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxl
VHlwZSwgVmFsdWVUcmFpdHM+DQorICAgIHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aFRhYmxlVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFJlZkNvdW50
ZXI8VmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHJhaXRzPiBWYWx1
ZVJlZkNvdW50ZXI7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWZBbGwoSGFzaFRhYmxlVHlwZSYp
Ow0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZBbGwoSGFzaFRhYmxlVHlwZSYpOw0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1
ZVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTx0cnVlLCBIYXNoVGFi
bGVUeXBlLCBWYWx1ZVRyYWl0cz46OnJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAg
ew0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAg
IFZhbHVlUmVmQ291bnRlcjo6cmVmKCppdCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHZvaWQgSGFz
aFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+Ojpk
ZXJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAgew0KKyAgICAgICAgaXRlcmF0b3Ig
ZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gdGFibGUuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAgIFZhbHVlUmVmQ291bnRlcjo6ZGVy
ZWYoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
LCB0eXBlbmFtZSBWYWx1ZVRyYWl0cz4gc3RydWN0IEhhc2hUYWJsZVJlZkNvdW50ZXIgew0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYgPSBOZWVkc1JlZjxWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmQWxsKEhhc2hUYWJsZVR5
cGUmIHRhYmxlKSB7IEJhc2U6OnJlZkFsbCh0YWJsZSk7IH0NCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlcmVmQWxsKEhhc2hUYWJsZVR5cGUmIHRhYmxlKSB7IEJhc2U6OmRlcmVmQWxsKHRhYmxlKTsg
fQ0KKyAgICB9Ow0KKw0KK30gLy8gbmFtZXNwYWNlIFdURg0KKw0KKyNlbmRpZiAvLyBLWE1MQ09S
RV9IQVNIX1RBQkxFX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRz
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRzLmgJ
KHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaFRyYWl0cy5oCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxOTUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2lj
LW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGli
cmFyaWVzDQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
DQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLg0KKyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQor
I2RlZmluZSBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQorDQorI2luY2x1ZGUgIkhhc2hGdW5jdGlv
bnMuaCINCisjaW5jbHVkZSA8dXRpbGl0eT4NCisNCituYW1lc3BhY2UgV1RGIHsNCisNCisgICAg
dXNpbmcgc3RkOjpwYWlyOw0KKyAgICB1c2luZyBzdGQ6Om1ha2VfcGFpcjsNCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElzSW50ZWdlciAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVn
ZXI8Ym9vbD4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGNoYXI+ICAgICAgICAgICAgICAg
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IElzSW50ZWdlcjxzaWduZWQgY2hhcj4gICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQg
Y2hhcj4gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNob3J0PiAgICAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdl
cjx1bnNpZ25lZCBzaG9ydD4gICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8aW50PiAgICAgICAgICAgICAgICB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGludD4gICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxsb25nPiAgICAg
ICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgbG9uZz4gICAgICB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2Vy
PGxvbmcgbG9uZz4gICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+IHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVn
ZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U7DQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8dHJ1ZSwgVD4gew0K
KyAgICAgICAgdHlwZWRlZiBUIFRyYWl0VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRyYWl0
czx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQor
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7DQorICAg
IH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8ZmFsc2UsIFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUcmFpdFR5cGU7DQorICAgICAgICB0
eXBlZGVmIEhhc2hUcmFpdHM8VD4gU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4gew0KKyAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIFQoKTsgfQ0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYg
PSBmYWxzZTsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhh
c2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7IH07DQorDQorICAgIC8vIHNpZ25lZCBp
bnRlZ2VyIHRyYWl0cyBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBhbGwgdXNlcyBzaW5jZSB0
aGV5IGRpc2FsbG93IDAgYW5kIC0xIGFzIGtleXMNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxzaWduZWQgY2hhcj4gOiBHZW5lcmljSGFzaFRyYWl0czxpbnQ+IHsNCisgICAgICAg
IHN0YXRpYyBzaWduZWQgY2hhciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPHNob3J0PiA6IEdlbmVyaWNIYXNo
VHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIHNob3J0IGRlbGV0ZWRWYWx1ZSgpIHsgcmV0
dXJuIC0xOyB9DQorICAgIH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8aW50
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIGludCBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8bG9uZz4gew0KKyAgICAgICAgc3Rh
dGljIGxvbmcgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisgICAgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxsb25nIGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8
bG9uZyBsb25nPiB7DQorICAgICAgICBzdGF0aWMgbG9uZyBkZWxldGVkVmFsdWUoKSB7IHJldHVy
biAtMTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxQKj4gOiBHZW5lcmljSGFzaFRyYWl0czxQKj4gew0KKyAgICAgICAgdHlwZWRlZiBI
YXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9y
YWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7DQorICAgICAgICBzdGF0aWMgUCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxQKj4oLTEpOyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBIYXNoVHJhaXRzPFJlZlB0cjxQPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8UmVmUHRy
PFA+ID4gew0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNp
emVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc1JlZiA9IHRydWU7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWYoY29uc3QgUmVm
UHRyPFA+JiBwKSB7IGlmIChwKSBwLT5yZWYoKTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVy
ZWYoY29uc3QgUmVmUHRyPFA+JiBwKSB7IGlmIChwKSBwLT5kZXJlZigpOyB9DQorICAgIH07DQor
DQorICAgIC8vIHRlbXBsYXRlIHRvIHNldCBkZWxldGVkIHZhbHVlcw0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBEZWxldGVkVmFsdWVBc3NpZ25lciB7DQorICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUodHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5
cGUmIGxvY2F0aW9uKSB7IGxvY2F0aW9uID0gVHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0KKyAg
ICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGlubGlu
ZSB2b2lkIGFzc2lnbkRlbGV0ZWQoVCYgbG9jYXRpb24pDQorICAgIHsNCisgICAgICAgIERlbGV0
ZWRWYWx1ZUFzc2lnbmVyPFRyYWl0cz46OmFzc2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQor
ICAgIH0NCisNCisgICAgLy8gc3BlY2lhbCB0cmFpdHMgZm9yIHBhaXJzLCBoZWxwZnVsIGZvciB0
aGVpciB1c2UgaW4gSGFzaE1hcCBpbXBsZW1lbnRhdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGaXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPiBzdHJ1Y3QgUGFpckhhc2hU
cmFpdHM7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnLCB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHNBcmc+DQorICAgIHN0cnVjdCBQYWlyQmFzZUhhc2hUcmFpdHMgOiBHZW5l
cmljSGFzaFRyYWl0czxwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5
cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPiA+IHsNCisgICAgICAgIHR5cGVkZWYg
Rmlyc3RUcmFpdHNBcmcgRmlyc3RUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIFNlY29uZFRyYWl0
c0FyZyBTZWNvbmRUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIHBhaXI8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlRyYWl0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+IFRyYWl0
VHlwZTsNCisNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlN0b3JhZ2VUcmFpdHMsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6U3RvcmFnZVRyYWl0
cz4gU3RvcmFnZVRyYWl0czsNCisNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6
OmVtcHR5VmFsdWVJc1plcm87DQorDQorICAgICAgICBzdGF0aWMgVHJhaXRUeXBlIGVtcHR5VmFs
dWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoRmlyc3RUcmFp
dHM6OmVtcHR5VmFsdWUoKSwgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlKCkpOw0KKyAgICAgICAg
fQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlwZW5h
bWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUGFpckhhc2hUcmFpdHMgOiBQYWlyQmFzZUhh
c2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gew0KKyAgICAgICAgdHlwZWRlZiBw
YWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0
czo6VHJhaXRUeXBlPiBUcmFpdFR5cGU7DQorDQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gRmlyc3RUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgU2Vjb25k
VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uOw0KKw0KKyAgICAgICAgc3RhdGljIFRyYWl0VHlwZSBk
ZWxldGVkVmFsdWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBUcmFpdFR5cGUo
Rmlyc3RUcmFpdHM6OmRlbGV0ZWRWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7
DQorICAgICAgICB9DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUo
VHJhaXRUeXBlJiBsb2NhdGlvbikNCisgICAgICAgIHsNCisgICAgICAgICAgICBhc3NpZ25EZWxl
dGVkPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIEZpcnN0VHJhaXRzPihsb2NhdGlv
bi5maXJzdCk7DQorICAgICAgICAgICAgbG9jYXRpb24uc2Vjb25kID0gU2Vjb25kVHJhaXRzOjpl
bXB0eVZhbHVlKCk7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZpcnN0LCB0eXBlbmFtZSBTZWNvbmQ+DQorICAgIHN0cnVjdCBIYXNoVHJhaXRzPHBhaXI8
Rmlyc3QsIFNlY29uZD4gPiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEZpcnN0
PiwgSGFzaFRyYWl0czxTZWNvbmQ+ID4geyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
aXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZh
bHVlQXNzaWduZXI8UGFpckhhc2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gPg0K
KyAgICB7DQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjx0eXBl
bmFtZSBGaXJzdFRyYWl0czo6VHJhaXRUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OlRyYWl0
VHlwZT4mIGxvY2F0aW9uKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIFBhaXJIYXNoVHJhaXRz
PEZpcnN0VHJhaXRzLCBTZWNvbmRUcmFpdHM+Ojphc3NpZ25EZWxldGVkVmFsdWUobG9jYXRpb24p
Ow0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwg
dHlwZW5hbWUgU2Vjb25kPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZhbHVlQXNzaWduZXI8SGFzaFRy
YWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID4gPg0KKyAgICB7DQorICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjxGaXJzdCwgU2Vjb25kPiYgbG9jYXRpb24pDQorICAg
ICAgICB7DQorICAgICAgICAgICAgSGFzaFRyYWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID46OmFz
c2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAg
IC8vIGhhc3NoIGZ1bmN0aW9ucyBhbmQgdHJhaXRzIHRoYXQgYXJlIGVxdWl2YWxlbnQgKGZvciBj
b2RlIHNoYXJpbmcpDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IFRyYWl0c0FyZz4gc3RydWN0IEhhc2hLZXlTdG9yYWdlVHJhaXRzIHsNCisgICAgICAgIHR5cGVk
ZWYgSGFzaEFyZyBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBUcmFpdHNBcmcgVHJhaXRzOw0KKyAg
ICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFp
dHM8UHRySGFzaDxQKj4sIEhhc2hUcmFpdHM8UCo+ID4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBJbnRUeXBlczxzaXplb2YoUCopPjo6U2lnbmVkVHlwZSBJbnRUeXBlOw0KKyAgICAgICAg
dHlwZWRlZiBJbnRIYXNoPEludFR5cGU+IEhhc2g7DQorICAgICAgICB0eXBlZGVmIEhhc2hUcmFp
dHM8SW50VHlwZT4gVHJhaXRzOw0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFpdHM8UHRySGFzaDxSZWZQdHI8UD4gPiwgSGFzaFRyYWl0
czxSZWZQdHI8UD4gPiA+IHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW50VHlwZXM8c2l6
ZW9mKFAqKT46OlNpZ25lZFR5cGUgSW50VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSW50SGFzaDxJ
bnRUeXBlPiBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPEludFR5cGU+IFRyYWl0
czsNCisgICAgfTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6Okhhc2hU
cmFpdHM7DQordXNpbmcgV1RGOjpQYWlySGFzaFRyYWl0czsNCisNCisjZW5kaWYgLy8gS1hNTENP
UkVfSEFTSF9UUkFJVFNfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2l0ZXJhdG9y
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlz
aW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlzaW9uIDAp
DQpAQCAtMCwwICsxLDE3MCBAQA0KKy8vIFR5cGVzIHVzZWQgaW4gaXRlcmF0b3IgaW1wbGVtZW50
YXRpb24gLSotIEMrKyAtKi0NCisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8g
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg
dGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u
IDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhj
ZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUN
CisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVy
IGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5l
IGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUg
YW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRo
aXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1
dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBv
dGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkN
CisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENv
cHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQ
ZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMg
c29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhl
cmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRo
YXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisg
KiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBt
YWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhp
cyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIg
d2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHly
aWdodCAoYykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1z
LCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29u
IEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJp
bGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlk
ZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisN
CisvKiogQGZpbGUgc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaA0KKyAqICBUaGlzIGlzIGFuIGlu
dGVybmFsIGhlYWRlciBmaWxlLCBpbmNsdWRlZCBieSBvdGhlciBsaWJyYXJ5IGhlYWRlcnMuDQor
ICogIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gdXNlIGl0IGRpcmVjdGx5Lg0KKyAqDQorICog
IFRoaXMgZmlsZSBjb250YWlucyBhbGwgb2YgdGhlIGdlbmVyYWwgaXRlcmF0b3ItcmVsYXRlZCB1
dGlsaXR5IHR5cGVzLA0KKyAqICBzdWNoIGFzIGl0ZXJhdG9yX3RyYWl0cyBhbmQgc3RydWN0IGl0
ZXJhdG9yLg0KKyAqLw0KKw0KKyNpZm5kZWYgX0lURVJBVE9SX0JBU0VfVFlQRVNfSA0KKyNkZWZp
bmUgX0lURVJBVE9SX0JBU0VfVFlQRVNfSCAxDQorDQorLy8jcHJhZ21hIEdDQyBzeXN0ZW1faGVh
ZGVyDQorDQorbmFtZXNwYWNlIHN0ZA0KK3sNCisgIC8vQHsNCisgIC8qKg0KKyAgICogIEBkZWZn
cm91cCBpdGVyYXRvcl90YWdzIEl0ZXJhdG9yIFRhZ3MNCisgICAqICBUaGVzZSBhcmUgZW1wdHkg
dHlwZXMsIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGl0ZXJhdG9ycy4gIFRoZQ0KKyAg
ICogIGRpc3RpbmN0aW9uIGlzIG5vdCBtYWRlIGJ5IHdoYXQgdGhleSBjb250YWluLCBidXQgc2lt
cGx5IGJ5IHdoYXQgdGhleQ0KKyAgICogIGFyZS4gIERpZmZlcmVudCB1bmRlcmx5aW5nIGFsZ29y
aXRobXMgY2FuIHRoZW4gYmUgdXNlZCBiYXNlZCBvbiB0aGUNCisgICAqICBkaWZmZXJlbnQgb3Bl
cmF0aW9ucyBzdXBwb3JldGQgYnkgZGlmZmVyZW50IGl0ZXJhdG9yIHR5cGVzLg0KKyAgKi8NCisg
IC8vLyAgTWFya2luZyBpbnB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9Ow0KKyAgLy8vICBNYXJraW5nIG91dHB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3Qgb3V0
cHV0X2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vLyBGb3J3YXJkIGl0ZXJhdG9ycyBzdXBwb3J0IGEg
c3VwZXJzZXQgb2YgaW5wdXQgaXRlcmF0b3Igb3BlcmF0aW9ucy4NCisgIHN0cnVjdCBmb3J3YXJk
X2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcge307DQorICAvLy8gQmlk
aXJlY3Rpb25hbCBpdGVyYXRvcnMgc3VwcG9ydCBhIHN1cGVyc2V0IG9mIGZvcndhcmQgaXRlcmF0
b3INCisgIC8vLyBvcGVyYXRpb25zLg0KKyAgc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9Ow0KKyAgLy8vIFJhbmRvbS1hY2Nl
c3MgaXRlcmF0b3JzIHN1cHBvcnQgYSBzdXBlcnNldCBvZiBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9y
DQorICAvLy8gb3BlcmF0aW9ucy4NCisgIHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vQH0NCisNCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgQ29tbW9uICVpdGVyYXRvciBjbGFzcy4NCisgICAqDQor
ICAgKiAgVGhpcyBjbGFzcyBkb2VzIG5vdGhpbmcgYnV0IGRlZmluZSBuZXN0ZWQgdHlwZWRlZnMu
ICAlSXRlcmF0b3IgY2xhc3Nlcw0KKyAgICogIGNhbiBpbmhlcml0IGZyb20gdGhpcyBjbGFzcyB0
byBzYXZlIHNvbWUgd29yay4gIFRoZSB0eXBlZGVmcyBhcmUgdGhlbg0KKyAgICogIHVzZWQgaW4g
c3BlY2lhbGl6YXRpb25zIGFuZCBvdmVybG9hZGluZy4NCisgICAqDQorICAgKiAgSW4gcGFydGlj
dWxhciwgdGhlcmUgYXJlIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHJlcXVpcmVtZW50
cw0KKyAgICogIHN1Y2ggYXMgQGMgb3BlcmF0b3IrKyBhbmQgdGhlIGxpa2UuICAoSG93IGNvdWxk
IHRoZXJlIGJlPykNCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2F0ZWdvcnksIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0gcHRyZGlmZl90LA0KKyAgICAgICAgICAgdHlw
ZW5hbWUgX1BvaW50ZXIgPSBfVHAqLCB0eXBlbmFtZSBfUmVmZXJlbmNlID0gX1RwJj4NCisgICAg
c3RydWN0IGl0ZXJhdG9yDQorICAgIHsNCisgICAgICAvLy8gT25lIG9mIHRoZSBAbGluayBpdGVy
YXRvcl90YWdzIHRhZyB0eXBlc0BlbmRsaW5rLg0KKyAgICAgIHR5cGVkZWYgX0NhdGVnb3J5ICBp
dGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICAvLy8gVGhlIHR5cGUgInBvaW50ZWQgdG8iIGJ5IHRo
ZSBpdGVyYXRvci4NCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlwZTsNCisgICAg
ICAvLy8gRGlzdGFuY2UgYmV0d2VlbiBpdGVyYXRvcnMgaXMgcmVwcmVzZW50ZWQgYXMgdGhpcyB0
eXBlLg0KKyAgICAgIHR5cGVkZWYgX0Rpc3RhbmNlICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAg
Ly8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgcG9pbnRlci10by12YWx1ZV90eXBlLg0KKyAgICAg
IHR5cGVkZWYgX1BvaW50ZXIgICBwb2ludGVyOw0KKyAgICAgIC8vLyBUaGlzIHR5cGUgcmVwcmVz
ZW50cyBhIHJlZmVyZW5jZS10by12YWx1ZV90eXBlLg0KKyAgICAgIHR5cGVkZWYgX1JlZmVyZW5j
ZSByZWZlcmVuY2U7DQorICAgIH07DQorDQorICAvKioNCisgICAqICBUaGlzIGNsYXNzIGRvZXMg
bm90aGluZyBidXQgZGVmaW5lIG5lc3RlZCB0eXBlZGVmcy4gIFRoZSBnZW5lcmFsDQorICAgKiAg
dmVyc2lvbiBzaW1wbHkgImZvcndhcmRzIiB0aGUgbmVzdGVkIHR5cGVkZWZzIGZyb20gdGhlIEl0
ZXJhdG9yDQorICAgKiAgYXJndW1lbnQuICBTcGVjaWFsaXplZCB2ZXJzaW9ucyBmb3IgcG9pbnRl
cnMgYW5kIHBvaW50ZXJzLXRvLWNvbnN0DQorICAgKiAgcHJvdmlkZSB0aWdodGVyLCBtb3JlIGNv
cnJlY3Qgc2VtYW50aWNzLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4N
CisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0cw0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5Ow0KKyAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUg
ICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBv
aW50ZXIgICAgICAgICAgIHBvaW50ZXI7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0
b3I6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPg0KKyAgICB7
DQorICAgICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsNCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsNCisgICAgICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyOw0KKyAgICAgIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxjb25zdCBfVHAqPg0KKyAgICB7DQorICAgICAgdHlwZWRlZiByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICB0eXBlZGVmIF9U
cCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRy
ZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsNCisgICAgICB0eXBlZGVm
IGNvbnN0IF9UcCogICAgICAgICAgICAgICAgICBwb2ludGVyOw0KKyAgICAgIHR5cGVkZWYgY29u
c3QgX1RwJiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIC8qKg0K
KyAgICogIEBpZiBtYWludA0KKyAgICogIFRoaXMgZnVuY3Rpb24gaXMgbm90IGEgcGFydCBvZiB0
aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyBzeW50YWN0aWMNCisgICAqICBzdWdhciBmb3IgaW50ZXJu
YWwgbGlicmFyeSB1c2Ugb25seS4NCisgICAqICBAZW5kaWYNCisgICovDQorICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcj4NCisgICAgaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRl
cj46Oml0ZXJhdG9yX2NhdGVnb3J5DQorICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0
ZXImKQ0KKyAgICB7IHJldHVybiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVy
YXRvcl9jYXRlZ29yeSgpOyB9DQorDQorfSAvLyBuYW1lc3BhY2Ugc3RkDQorDQorI2VuZGlmIC8q
IF9JVEVSQVRPUl9CQVNFX1RZUEVTX0ggKi8NCisNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9uZXcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9uZXcJKHJl
dmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbmV3CShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSBAQA0KKyNpbmNsdWRlIDxlMzJjbW4uaD4NClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNvYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsNyArMjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KICNpbmNsdWRlIDxOUF9qc29iamVjdC5oPgogCkBAIC0zNSwxNSArMzUsMTUgQEANCiAKIHN0
YXRpYyBLSlM6Okxpc3QgbGlzdEZyb21WYXJpYW50QXJncyhLSlM6OkV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgTlBWYXJpYW50ICphcmdzLCB1bnNpZ25lZCBhcmdDb3VudCkKIHsKLSAgICBLSlM6Okxp
c3QgYUxpc3Q7IAorICAgIEtKUzo6TGlzdCBhTGlzdDsKICAgICB1bnNpZ25lZCBpOwogICAgIGNv
bnN0IE5QVmFyaWFudCAqdiA9IGFyZ3M7Ci0gICAgCisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJn
Q291bnQ7IGkrKykgewogICAgICAgICBhTGlzdC5hcHBlbmQgKGNvbnZlcnROUFZhcmlhbnRUb1Zh
bHVlIChleGVjLCB2KSk7CiAgICAgICAgIHYrKzsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
YUxpc3Q7CiB9CiAKQEAgLTU3LDEwICs1NywxMCBAQA0KICAgICBmcmVlIChvYmopOwogfQogCi1z
dGF0aWMgTlBDbGFzcyBfamF2YXNjcmlwdENsYXNzID0geyAKK3N0YXRpYyBOUENsYXNzIF9qYXZh
c2NyaXB0Q2xhc3MgPSB7CiAgICAgMSwKLSAgICBqc0FsbG9jYXRlLCAKLSAgICAoTlBEZWFsbG9j
YXRlRnVuY3Rpb25QdHIpanNEZWFsbG9jYXRlLCAKKyAgICBqc0FsbG9jYXRlLAorICAgIChOUERl
YWxsb2NhdGVGdW5jdGlvblB0cilqc0RlYWxsb2NhdGUsCiAgICAgMCwKICAgICAwLAogICAgIDAs
CkBAIC03MywxMjcgKzczLDEzMCBAQA0KIAogTlBDbGFzcyAqTlBTY3JpcHRPYmplY3RDbGFzcyA9
ICZfamF2YXNjcmlwdENsYXNzOwogCi1zdGF0aWMgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5Q
SWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpCi17Ci0gICAgTlBVVEYxNiAqbWV0aG9kTmFt
ZTsKLSAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7Ci0gICAgCi0gICAgY29udmVydFVURjhU
b1VURjE2IChuYW1lLCAtMSwgJm1ldGhvZE5hbWUsICZVVEYxNkxlbmd0aCk7IC8vIHJlcXVpcmVz
IGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCi0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyICgo
Y29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOwotICAgIGZyZWUgKCh2
b2lkICopbWV0aG9kTmFtZSk7Ci0gICAgCi0gICAgcmV0dXJuIGlkZW50aWZpZXI7Ci19CiAKIHN0
YXRpYyBib29sIF9pc1NhZmVTY3JpcHQoSmF2YVNjcmlwdE9iamVjdCAqb2JqKQogewogICAgIGlm
IChvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQpIHsKLQlJbnRlcnByZXRlciAqb3JpZ2luSW50
ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCk7Ci0J
aWYgKG9yaWdpbkludGVycHJldGVyKSB7Ci0JICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+
aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwotCX0K
KyAgICBJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCk7CisgICAgaWYgKG9yaWdpbkludGVycHJldGVyKSB7Cisg
ICAgICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwogICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK0VYUE9SVF9DCiBOUE9iamVjdCAqX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKE5Q
UCBucHAsIEtKUzo6T2JqZWN0SW1wICppbXAsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKmV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEph
dmFTY3JpcHRPYmplY3QgKilfTlBOX0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xh
c3MpOworICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopTlBO
X0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xhc3MpOwogCiAgICAgb2JqLT5pbXAg
PSBpbXA7Ci0gICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsgICAgCi0gICAgb2JqLT5leGVjdXRpb25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4
dDsgICAgCisgICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsKKyAgICBvYmotPmV4ZWN1dGlvbkNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0Owog
CiAgICAgYWRkTmF0aXZlUmVmZXJlbmNlIChleGVjdXRpb25Db250ZXh0LCBpbXApOwotICAgIAor
CiAgICAgcmV0dXJuIChOUE9iamVjdCAqKW9iajsKIH0KIAotYm9vbCBfTlBOX0ludm9rZURlZmF1
bHQgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90
IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKK0VYUE9SVF9DCitib29sIE5QTl9JbnZva2VE
ZWZhdWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50
MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9
PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAgIC8vIE5vIG5vdGlvbiBvZiBhIGRlZmF1
bHQgZnVuY3Rpb24gb24gSlMgb2JqZWN0cy4gIEp1c3QgcmV0dXJuIGZhbHNlLCBjYW4ndCBoYW5k
bGUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2Jq
ID0gKEphdmFTY3JpcHRPYmplY3QgKilvOworICAgICAgICBPYmplY3RJbXAgKmZ1bmNJbXAgPSBv
YmotPmltcDsKKyAgICAgICAgaWYgKCFmdW5jSW1wLT5pbXBsZW1lbnRzQ2FsbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgT2JqZWN0
IHRoaXNPYmogPSBPYmplY3QoY29uc3RfY2FzdDxPYmplY3RJbXAqPihvYmotPmltcCkpOworICAg
ICAgICBMaXN0IGFyZ0xpc3QgPSBsaXN0RnJvbVZhcmlhbnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0Nv
dW50KTsKKyAgICAgICAgVmFsdWUgcmVzdWx0ViA9IE9iamVjdChmdW5jSW1wKS5jYWxsIChleGVj
LCB0aGlzT2JqLCBhcmdMaXN0KTsKKworICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhl
IHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgY29udmVydFZhbHVlVG9OUFZh
cmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGVsc2UgewogICAgICAgICBpZiAoby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KSB7CiAg
ICAgICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0IChvLCBhcmdzLCBhcmdD
b3VudCwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIF9OUE5fSW52b2tlIChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQs
IE5QVmFyaWFudCAqcmVzdWx0KQorRVhQT1JUX0MKK2Jvb2wgTlBOX0ludm9rZSAoTlBQIG5wcCwg
TlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFy
Z3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKIHsKICAgICBpZiAoby0+
X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVj
dCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAgCi0JaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKLQkgICAgCisgICAgICAgIEphdmFTY3Jp
cHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKKworICAgIGlmICghX2lzU2Fm
ZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgUHJpdmF0ZUlk
ZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKiltZXRob2ROYW1lOwogICAgICAgICBp
ZiAoIWktPmlzU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Ci0JLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgotCWlmIChtZXRob2ROYW1lID09
IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcigiZXZhbCIpKSB7Ci0JICAgIGlmIChhcmdDb3VudCAh
PSAxKQotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIGlmIChhcmdzWzBdLnR5cGUgIT0gTlBWYXJpYW50
VHlwZV9TdHJpbmcpCi0JCXJldHVybiBmYWxzZTsKLQkgICAgCi0JICAgIHJldHVybiBfTlBOX0V2
YWx1YXRlIChucHAsIG8sIChOUFN0cmluZyAqKSZhcmdzWzBdLnZhbHVlLnN0cmluZ1ZhbHVlLCBy
ZXN1bHQpOwotCX0KLQllbHNlIHsKLQkgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBvYmplY3Qu
Ci0JICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0
ZXIoKS0+Z2xvYmFsRXhlYygpOwotCSAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKLQkgICAgVmFs
dWUgZnVuYyA9IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZykpOwogCi0JICAgIGlmIChmdW5jLmlzTnVsbCgpKSB7Ci0JCU5QTl9J
bml0aWFsaXplVmFyaWFudEFzTnVsbChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0g
ZWxzZSBpZiAoZnVuYy50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkgewotCQlOUE5fSW5pdGlhbGl6
ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0gZWxz
ZSB7Ci0JCS8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KLQkJT2JqZWN0SW1wICpmdW5jSW1w
ID0gc3RhdGljX2Nhc3Q8T2JqZWN0SW1wKj4oZnVuYy5pbXAoKSk7Ci0JCU9iamVjdCB0aGlzT2Jq
ID0gT2JqZWN0KGNvbnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKLQkJTGlzdCBhcmdM
aXN0ID0gbGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCk7Ci0JCVZhbHVl
IHJlc3VsdFYgPSBPYmplY3QoZnVuY0ltcCkuY2FsbCAoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7
CisgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgorICAgIGlmIChtZXRob2RO
YW1lID09IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKCJldmFsIikpIHsKKyAgICAgICAgaWYgKGFy
Z0NvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3NbMF0u
dHlwZSAhPSBOUFZhcmlhbnRUeXBlX1N0cmluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0J
CS8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgot
CQljb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwotCQlyZXR1
cm4gdHJ1ZTsKLQkgICAgfQotCX0KKyAgICAgICAgcmV0dXJuIE5QTl9FdmFsdWF0ZSAobnBwLCBv
LCAoTlBTdHJpbmcgKikmYXJnc1swXS52YWx1ZS5zdHJpbmdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICAgIC8vIExvb2t1cCB0aGUgZnVuY3Rpb24gb2JqZWN0LgorICAg
ICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVy
KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CisgICAgICAg
IFZhbHVlIGZ1bmMgPSBvYmotPmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRp
ZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKKworICAgICAgICBpZiAoZnVuYy5pc051bGwoKSkgewor
ICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc051bGwocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmMudHlwZSgpID09IFVuZGVmaW5lZFR5
cGUpIHsKKyAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNVbmRlZmluZWQocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAvLyBDYWxs
IHRoZSBmdW5jdGlvbiBvYmplY3QuCisgICAgICAgIE9iamVjdEltcCAqZnVuY0ltcCA9IHN0YXRp
Y19jYXN0PE9iamVjdEltcCo+KGZ1bmMuaW1wKCkpOworICAgICAgICBPYmplY3QgdGhpc09iaiA9
IE9iamVjdChjb25zdF9jYXN0PE9iamVjdEltcCo+KG9iai0+aW1wKSk7CisgICAgICAgIExpc3Qg
YXJnTGlzdCA9IGxpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQpOworICAg
ICAgICBWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXApLmNhbGwgKGV4ZWMsIHRoaXNPYmos
IGFyZ0xpc3QpOworCisgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9m
IHRoZSBmdW5jdGlvbiBjYWxsLgorICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCByZXN1bHRWLCByZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KICAgICB9IGVsc2UgaWYgKG8tPl9jbGFzcy0+aW52b2tlKQogICAgICAgICByZXR1cm4gby0+
X2NsYXNzLT5pbnZva2UgKG8sIG1ldGhvZE5hbWUsIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOwot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgX05QTl9FdmFsdWF0ZSAoTlBQIG5w
cCwgTlBPYmplY3QgKm8sIE5QU3RyaW5nICpzLCBOUFZhcmlhbnQgKnZhcmlhbnQpCitFWFBPUlRf
QworYm9vbCBOUE5fRXZhbHVhdGUgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUFN0cmluZyAqcywg
TlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmpl
Y3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnBy
ZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIE9iamVjdCB0aGlzT2JqID0gT2JqZWN0KGNv
bnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKICAgICAgICAgVmFsdWUgcmVzdWx0Owot
ICAgICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgTlBVVEYx
NiAqc2NyaXB0U3RyaW5nOwogICAgICAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7CiAgICAg
ICAgIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYgKHMsICZzY3JpcHRTdHJpbmcsICZVVEYxNkxlbmd0
aCk7ICAgIC8vIHJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCiAgICAgICAgIENv
bXBsZXRpb24gY29tcGxldGlvbiA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+ZXZhbHVhdGUoVVN0cmluZygpLCAwLCBVU3RyaW5nKChjb25zdCBVQ2hhciAqKXNjcmlwdFN0
cmluZyxVVEYxNkxlbmd0aCkpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24u
Y29tcGxUeXBlKCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0eXBlID09IE5vcm1hbCkgewog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcGxldGlvbi52YWx1ZSgpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkgewpAQCAtMjAyLDIzICsyMDUsMjQgQEANCiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gVW5kZWZpbmVkKCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBmcmVlICgodm9pZCAqKXNjcmlwdFN0cmluZyk7Ci0gICAgICAgIAorCiAg
ICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdCwgdmFyaWFudCk7Ci0g
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBfTlBOX0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MKK2Jvb2wgTlBO
X0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3Jp
cHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5p
bnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAKQEAgLTIzNSwxNCArMjM5LDE0IEBADQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgVmFsdWUgcmVz
dWx0OwogICAgICAgICBpZiAoaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBvYmot
PmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJp
bmcpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5pbXAtPmdldCAo
ZXhlYywgaS0+dmFsdWUubnVtYmVyKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHJlc3VsdC5p
c051bGwoKSkgewogICAgICAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNOdWxsKHZhcmlh
bnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY4LDEzICsyNzIsMTQgQEANCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIF9OUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5Q
T2JqZWN0ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZh
cmlhbnQpCitFWFBPUlRfQworYm9vbCBOUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0
ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKICAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CkBAIC0yODMsNyArMjg4LDcgQEANCiAg
ICAgICAgICAgICBvYmotPmltcC0+cHV0KGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZyksIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPnB1dChleGVjLCBpLT52YWx1
ZS5udW1iZXIsIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQpKTsKLSAgICAg
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPnNl
dFByb3BlcnR5KQogICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAobywgcHJv
cGVydHlOYW1lLCB2YXJpYW50KTsKQEAgLTI5MSwxMyArMjk2LDE0IEBADQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAq
bywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9DCitib29sIE5QTl9SZW1vdmVQ
cm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKIApAQCAtMzE4LDE5ICszMjQsMjAgQEANCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRl
UHJvcGVydHkgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmlu
ZykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRlUHJvcGVydHkg
KGV4ZWMsIGktPnZhbHVlLm51bWJlcik7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgX05QTl9IYXNQcm9wZXJ0eShO
UFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9D
Citib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xh
c3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOyAKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOwogCi0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+Z2xvYmFsRXhlYygpOwogCkBAIC0zMzksMjYgKzM0NiwyNyBAQA0KIAogICAgICAgICBpZiAo
aS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4
ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmluZykpOwotICAgICAg
ICAKKwogICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4ZWMsIGktPnZhbHVl
Lm51bWJlcik7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPmhhc1Byb3BlcnR5KQogICAgICAg
ICByZXR1cm4gby0+X2NsYXNzLT5oYXNQcm9wZXJ0eSAobywgcHJvcGVydHlOYW1lKTsKLSAgICAK
KwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBfTlBOX0hhc01ldGhvZChOUFAgbnBwLCBO
UE9iamVjdCAqbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCitFWFBPUlRfQworYm9vbCBOUE5f
SGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
IHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAg
Ci0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOwogCisgICAgaWYg
KCFfaXNTYWZlU2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKW1ldGhvZE5hbWU7CiAg
ICAgICAgIGlmICghaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAvLyBMb29rdXAgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAg
ICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigp
LT5nbG9iYWxFeGVjKCk7CiAKQEAgLTM2OCwyMSArMzc2LDIyIEBADQogICAgICAgICBpZiAoZnVu
Yy5pc051bGwoKSB8fCBmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAorCiAgICAgZWxzZSBpZiAoby0+X2NsYXNzLT5oYXNNZXRob2QpIHsK
ICAgICAgICAgcmV0dXJuIG8tPl9jbGFzcy0+aGFzTWV0aG9kIChvLCBtZXRob2ROYW1lKTsKICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRp
b24gKE5QT2JqZWN0ICpvLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpCitFWFBPUlRfQwordm9pZCBO
UE5fU2V0RXhjZXB0aW9uIChOUE9iamVjdCAqbywgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogewog
ICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87CiAgICAgICAgIEV4ZWNT
dGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFs
RXhlYygpOwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgT2JqZWN0IGVy
ciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDUsNiArNDUsNyBAQA0KICAgICBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVj
dXRpb25Db250ZXh0OwogfSBKYXZhU2NyaXB0T2JqZWN0OwogCitJTVBPUlRfQwogTlBPYmplY3Qg
Kl9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IChOUFAgbnBwLCBLSlM6Ok9iamVjdEltcCAqaW1wLCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW5FeGVjdXRpb25Db250ZXh0LCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0KTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucGFwaS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkocmV2aXNpb24g
MTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTEsMTAgKzEsMTEgQEANCisvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRl
bnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwogLyogKioqKiogQkVH
SU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwg
Mi4xCisgKiBWZXJzaW9uOiBOUEwgMS4xL0dQTCAyLjAvTEdQTCAyLjEKICAqCi0gKiBUaGUgY29u
dGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNl
bnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAotICogdGhlIExpY2Vuc2UuIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9NUEwvCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBO
ZXRzY2FwZSBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvTlBMLwogICoKICAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCiAgKiBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBT
ZWUgdGhlIExpY2Vuc2UKQEAgLTE5LDExMSArMjAsMjEwIEBADQogICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIENvbnRyaWJ1dG9yKHMpOgorICog
ICAgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIE5va2lhIENvcnBvcmF0aW9uCiAg
KgorICoKICAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJl
IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKICAqIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAi
TEdQTCIpLAogICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRo
ZSBMR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKICAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ug
d2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CiAgKiB1
bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8g
YWxsb3cgb3RoZXJzIHRvCi0gKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogdXNlIHlvdXIgdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBOUEwsIGluZGljYXRlIHlvdXIKICAq
IGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRo
ZW0gd2l0aCB0aGUgbm90aWNlCiAgKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0
aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQogICogdGhlIHByb3Zpc2lv
bnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1
bmRlcgotICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUg
TEdQTC4KKyAqIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZSBOUEwsIHRoZSBHUEwgb3IgdGhl
IExHUEwuCiAgKgogICogKioqKiogRU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8KLSAKLSAKLSAv
KgotICAqICBOZXRzY2FwZSBjbGllbnQgcGx1Zy1pbiBBUEkgc3BlYwotICAqLwotIAogCisvKiBO
T1RFUzoKKyAqIE5va2lhIG1vZGlmaWVkIHRoaXMgZmlsZSwgYnkgY2hhbmdpbmcgY2VydGFpbiB2
YXJpYWJsZXMgZm9yIHRoZSBwdXJwb3NlIG9mCisgKiBwb3J0aW5nIHRoZSBmaWxlIHRvIHRoZSBT
eW1iaWFuIHBsYXRmb3JtIG9uIE1heSAxc3QsIDIwMDQuCisgKi8KKworCisvKgorICogIG5wYXBp
LmggJFJldmlzaW9uJAorICogIE5ldHNjYXBlIGNsaWVudCBwbHVnLWluIEFQSSBzcGVjCisgKi8K
KwogI2lmbmRlZiBfTlBBUElfSF8KICNkZWZpbmUgX05QQVBJX0hfCiAKLSNpZmRlZiBJTkNMVURF
X0pBVkEKKyNpZmRlZiBfX09TMl9fCisjcHJhZ21hIHBhY2soMSkKKyNlbmRpZgorCisjaW5jbHVk
ZSAicHJ0eXBlcy5oIgorLyogQ29waWVkIGZyb20geHBfY29yZS5oICovCisvKiByZW1vdmVkICNp
ZmRlZiBmb3IgaHB1eCBkZWZpbmVkIGluIC91c3IvaW5jbHVkZS9tb2RlbC5oICovCisjaWZuZGVm
IFhQX01BQworI2lmbmRlZiBfSU5UMTYKKyNkZWZpbmUgX0lOVDE2CisjZW5kaWYKKyNpZm5kZWYg
X0lOVDMyCisjZGVmaW5lIF9JTlQzMgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMTYKKyNkZWZpbmUg
X1VJTlQxNgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMzIKKyNkZWZpbmUgX1VJTlQzMgorI2VuZGlm
CisjZW5kaWYKKworLyoKKyAqIE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVz
aW9uCisgKiBvZiBvYnNvbGV0ZS9wcm90eXBlcy5oLCB3aG9zZSBpbnQxNiwgdWludDE2LAorICog
aW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0aCB0aG9zZQorICogaW4gdGhp
cyBmaWxlLgorICovCisjaWZuZGVmIE5PX05TUFJfMTBfU1VQUE9SVAorI2RlZmluZSBOT19OU1BS
XzEwX1NVUFBPUlQKKyNlbmRpZgorI2lmZGVmIE9KSQogI2luY2x1ZGUgImpyaS5oIiAgICAgICAg
ICAgICAgICAvKiBKYXZhIFJ1bnRpbWUgSW50ZXJmYWNlICovCi0jZWxzZQotI2RlZmluZSBqcmVm
ICAgIHZvaWQgKgotI2RlZmluZSBKUklFbnYgIHZvaWQKICNlbmRpZgogCisjaWYgZGVmaW5lZCAo
X19PUzJfXyApIHx8IGRlZmluZWQgKE9TMikKKyMgaWZuZGVmIFhQX09TMgorIyAgIGRlZmluZSBY
UF9PUzIgMQorIyBlbmRpZiAvKiBYUF9PUzIgKi8KKyNlbmRpZiAvKiBfX09TMl9fICovCisKICNp
ZmRlZiBfV0lORE9XUwotIyAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICBkZWZpbmUgWFBfV0lO
IDEKLSMgICAgZW5kaWYgLyogWFBfV0lOICovCisjIGluY2x1ZGUgPHdpbmRlZi5oPgorIyBpZm5k
ZWYgWFBfV0lOCisjICAgZGVmaW5lIFhQX1dJTiAxCisjIGVuZGlmIC8qIFhQX1dJTiAqLwogI2Vu
ZGlmIC8qIF9XSU5ET1dTICovCiAKICNpZmRlZiBfX01XRVJLU19fCi0jICAgIGRlZmluZSBfZGVj
bHNwZWMgX19kZWNsc3BlYwotIyAgICBpZmRlZiBtYWNpbnRvc2gKLSMgICAgICAgIGlmbmRlZiBY
UF9NQUMKLSMgICAgICAgICAgICBkZWZpbmUgWFBfTUFDIDEKLSMgICAgICAgIGVuZGlmIC8qIFhQ
X01BQyAqLwotIyAgICBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KLSMgICAgaWZkZWYgX19JTlRFTF9f
Ci0jICAgICAgICB1bmRlZiBOVUxMCi0jICAgICAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICAg
ICAgZGVmaW5lIFhQX1dJTiAxCi0jICAgICAgICBlbmRpZiAvKiBfX0lOVEVMX18gKi8KLSMgICAg
ZW5kaWYgLyogWFBfUEMgKi8KKyMgZGVmaW5lIF9kZWNsc3BlYyBfX2RlY2xzcGVjCisjIGlmZGVm
IG1hY2ludG9zaAorIyAgIGlmbmRlZiBYUF9NQUMKKyMgICAgIGRlZmluZSBYUF9NQUMgMQorIyAg
IGVuZGlmIC8qIFhQX01BQyAqLworIyBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KKyMgaWZkZWYgX19J
TlRFTF9fCisjICAgdW5kZWYgTlVMTAorIyAgIGlmbmRlZiBYUF9XSU4KKyMgICAgIGRlZmluZSBY
UF9XSU4gMQorIyAgIGVuZGlmIC8qIFhQX1dJTiAqLworIyBlbmRpZiAvKiBfX0lOVEVMX18gKi8K
ICNlbmRpZiAvKiBfX01XRVJLU19fICovCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYg
IWRlZmluZWQoX19NQUNPU19DTEFTU0lDX18pCi0jICAgZGVmaW5lIFhQX01BQ09TWAorI2lmbmRl
ZiBfX1NZTUJJQU4zMl9fCisjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NY
KQorICAjaW5jbHVkZSA8UXVpY2tkcmF3Lmg+CisgICNpbmNsdWRlIDxFdmVudHMuaD4KICNlbmRp
ZgogCi0jaWZkZWYgWFBfTUFDCi0gICAgI2luY2x1ZGUgPFF1aWNrZHJhdy5oPgotICAgICNpbmNs
dWRlIDxFdmVudHMuaD4KKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjIGluY2x1ZGUgPHN0ZGlvLmg+
CisjIGlmIGRlZmluZWQoTU9aX1gxMSkKKyMgICBpbmNsdWRlIDxYMTEvWGxpYi5oPgorIyAgIGlu
Y2x1ZGUgPFgxMS9YdXRpbC5oPgorIyBlbmRpZgogI2VuZGlmCi0KLSNpZmRlZiBYUF9NQUNPU1gK
LSAgICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotICAgICNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNlbHNlCitjbGFzcyBURGVzQzg7Citj
bGFzcyBURGVzQzE2OworY2xhc3MgSEJ1ZkMxNjsKK2NsYXNzIENEZXNDQXJyYXk7CisjaW5jbHVk
ZSA8ZTMyZGVmLmg+CiAjZW5kaWYKIAotI2lmZGVmIFhQX1VOSVgKLSAgICAjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KLSAgICAjaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jZW5kaWYKLQotCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwotLyogICAgICAgICAgICAgUGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
UGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwogCiAjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMAotI2RlZmluZSBOUF9WRVJT
SU9OX01JTk9SIDE0CisjZGVmaW5lIE5QX1ZFUlNJT05fTUlOT1IgMTMKIAogCisvKiBUaGUgT1Mv
MiB2ZXJzaW9uIG9mIE5ldHNjYXBlIHVzZXMgUkNfREFUQSB0byBkZWZpbmUgdGhlCisgICBtaW1l
IHR5cGVzLCBmaWxlIGV4dGVudGlvbnMsIGV0YyB0aGF0IGFyZSByZXF1aXJlZC4KKyAgIFVzZSBh
IHZlcnRpY2FsIGJhciB0byBzZXBhcmF0ZSB0eXBlcywgZW5kIHR5cGVzIHdpdGggXDAuCisgICBG
aWxlVmVyc2lvbiBhbmQgUHJvZHVjdFZlcnNpb24gYXJlIDMyYml0IGludHMsIGFsbCBvdGhlcgor
ICAgZW50cmllcyBhcmUgc3RyaW5ncyB0aGUgTVVTVCBiZSB0ZXJtaW5hdGVkIHd3aXRoIGEgXDAu
CiAKK0FOIEVYQU1QTEU6CisKK1JDREFUQSBOUF9JTkZPX1Byb2R1Y3RWZXJzaW9uIHsgMSwwLDAs
MSx9CisKK1JDREFUQSBOUF9JTkZPX01JTUVUeXBlICAgIHsgInZpZGVvL3gtdmlkZW98IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpZGVvL3gtZmxpY2tcMCIgfQorUkNEQVRBIE5Q
X0lORk9fRmlsZUV4dGVudHMgeyAiYXZpfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmbGNcMCIgfQorUkNEQVRBIE5QX0lORk9fRmlsZU9wZW5OYW1leyAiTU1PUzIgdmlkZW8gcGxh
eWVyKCouYXZpKXwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTU1PUzIgRmxjL0Zs
aSBwbGF5ZXIoKi5mbGMpXDAiIH0KKworUkNEQVRBIE5QX0lORk9fRmlsZVZlcnNpb24gICAgICAg
eyAxLDAsMCwxIH0KK1JDREFUQSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgIHsgIk5ldHNjYXBl
IENvbW11bmljYXRpb25zXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVEZXNjcmlwdGlvbiAgIHsg
Ik5QQVZJMzIgRXh0ZW5zaW9uIERMTFwwIgorUkNEQVRBIE5QX0lORk9fSW50ZXJuYWxOYW1lICAg
ICAgeyAiTlBBVkkzMlwwIiApCitSQ0RBVEEgTlBfSU5GT19MZWdhbENvcHlyaWdodCAgICB7ICJD
b3B5cmlnaHQgTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgXDI1MSAxOTk2XDAiCitSQ0RBVEEgTlBf
SU5GT19PcmlnaW5hbEZpbGVuYW1lICB7ICJOVkFQSTMyLkRMTCIgfQorUkNEQVRBIE5QX0lORk9f
UHJvZHVjdE5hbWUgICAgICAgeyAiTlBBVkkzMiBEeW5hbWljIExpbmsgTGlicmFyeVwwIiB9CisK
KyovCisKKworLyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gcmVxdWlyZWQgKi8K
KyNkZWZpbmUgTlBfSU5GT19Qcm9kdWN0VmVyc2lvbiAgICAgIDEKKyNkZWZpbmUgTlBfSU5GT19N
SU1FVHlwZSAgICAgICAgICAgIDIKKyNkZWZpbmUgTlBfSU5GT19GaWxlT3Blbk5hbWUgICAgICAg
IDMKKyNkZWZpbmUgTlBfSU5GT19GaWxlRXh0ZW50cyAgICAgICAgIDQKKworLyogUkNfREFUQSB0
eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLworI2RlZmluZSBOUF9JTkZP
X0ZpbGVEZXNjcmlwdGlvbiAgICAgNQorI2RlZmluZSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAg
ICAgNgorCisvKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSBvcHRpb25hbCAqLwor
I2RlZmluZSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgICAgNworI2RlZmluZSBOUF9JTkZPX0Zp
bGVWZXJzaW9uICAgICAgICAgOAorI2RlZmluZSBOUF9JTkZPX0ludGVybmFsTmFtZSAgICAgICAg
OQorI2RlZmluZSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgICAgMTAKKyNkZWZpbmUgTlBfSU5G
T19PcmlnaW5hbEZpbGVuYW1lICAgIDExCisKKyNpZm5kZWYgUkNfSU5WT0tFRAorCisKKwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KLS8qICAgICAgICAgICAgIERlZmluaXRpb24gb2YgQmFzaWMgVHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgRGVmaW5pdGlvbiBvZiBCYXNpYyBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAqLwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KIAogI2lmbmRlZiBfVUlOVDE2CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHVpbnQxNjsKICNlbmRpZgorCiAjaWZuZGVmIF9VSU5UMzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEp
CisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsK
LSNlbHNlIC8qIF9fYWxwaGEgKi8KKyMgICAgZWxzZSAgLyogX19hbHBoYSAqLwogdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHVpbnQzMjsKLSNlbmRpZiAvKiBfX2FscGhhICovCisjICAgIGVuZGlmIC8q
IF9fYWxwaGEgKi8KICNlbmRpZgorCisvKgorICogQUlYIGRlZmluZXMgdGhlc2UgaW4gc3lzL2lu
dHR5cGVzLmggaW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAorICovCisjaWZuZGVmIEFJWAogI2lm
bmRlZiBfSU5UMTYKIHR5cGVkZWYgc2hvcnQgaW50MTY7CiAjZW5kaWYKKwogI2lmbmRlZiBfSU5U
MzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEpCisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVk
ZWYgaW50IGludDMyOwotI2Vsc2UgLyogX19hbHBoYSAqLworIyAgICBlbHNlICAvKiBfX2FscGhh
ICovCiB0eXBlZGVmIGxvbmcgaW50MzI7Ci0jZW5kaWYgLyogX19hbHBoYSAqLworIyAgICBlbmRp
ZiAvKiBfX2FscGhhICovCiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIEZBTFNFCiAjZGVmaW5l
IEZBTFNFICgwKQpAQCAtMTM1LDE1ICsyMzUsMTkgQEANCiAjZGVmaW5lIE5VTEwgKDBMKQogI2Vu
ZGlmCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBOUEJvb2w7Ci10eXBlZGVmIGludDE2ICAg
ICAgICAgICAgTlBFcnJvcjsKLXR5cGVkZWYgaW50MTYgICAgICAgICAgICBOUFJlYXNvbjsKLXR5
cGVkZWYgY2hhciogICAgICAgICAgICBOUE1JTUVUeXBlOwordHlwZWRlZiB1bnNpZ25lZCBjaGFy
IE5QQm9vbDsKK3R5cGVkZWYgaW50MTYgICAgIE5QRXJyb3I7Cit0eXBlZGVmIGludDE2ICAgICBO
UFJlYXNvbjsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordHlwZWRlZiBjaGFyKiAgICAgTlBNSU1F
VHlwZTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordHlwZWRlZiBjb25zdCBURGVzQzgmIE5Q
TUlNRVR5cGU7CisjZW5kaWYKIAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyAgICAgICAgICAgICAqLworLyogICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAg
ICAgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZmRlZiBYUF9NQUMKQEAgLTE1NSw0NyArMjU5
LDU2IEBADQogICovCiB0eXBlZGVmIHN0cnVjdCBfTlBQCiB7Ci0gICAgdm9pZCogICAgcGRhdGE7
ICAgICAgICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KLSAgICB2b2lkKiAgICBuZGF0
YTsgICAgICAgICAgICAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogcGRhdGE7
ICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogbmRhdGE7ICAgICAgLyog
bmV0c2NhcGUgcHJpdmF0ZSBkYXRhICovCiB9IE5QUF90OwogCi10eXBlZGVmIE5QUF90KiAgICBO
UFA7Cit0eXBlZGVmIE5QUF90KiAgTlBQOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUFN0cmVhbQog
ewotICAgIHZvaWQqICAgICAgICBwZGF0YTsgICAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRh
ICovCi0gICAgdm9pZCogICAgICAgIG5kYXRhOyAgICAgICAgLyogbmV0c2NhcGUgcHJpdmF0ZSBk
YXRhICovCi0gICAgY29uc3QgY2hhciogIHVybDsKLSAgICB1aW50MzIgICAgICAgZW5kOwotICAg
IHVpbnQzMiAgICAgICBsYXN0bW9kaWZpZWQ7Ci0gICAgdm9pZCogICAgICAgIG5vdGlmeURhdGE7
CisgIHZvaWQqICBwZGF0YTsgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogIG5k
YXRhOyAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
ICBjb25zdCAgY2hhciogdXJsOworI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovCisgIEhCdWZDMTYq
ICB1cmw7CisjZW5kaWYKKyAgdWludDMyIGVuZDsKKyAgdWludDMyIGxhc3Rtb2RpZmllZDsKKyAg
dm9pZCogIG5vdGlmeURhdGE7CiB9IE5QU3RyZWFtOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUEJ5
dGVSYW5nZQogewotICAgIGludDMyICAgICAgb2Zmc2V0OyAgICAgICAgIC8qIG5lZ2F0aXZlIG9m
ZnNldCBtZWFucyBmcm9tIHRoZSBlbmQgKi8KLSAgICB1aW50MzIgICAgIGxlbmd0aDsKLSAgICBz
dHJ1Y3QgX05QQnl0ZVJhbmdlKiBuZXh0OworICBpbnQzMiAgb2Zmc2V0OyAvKiBuZWdhdGl2ZSBv
ZmZzZXQgbWVhbnMgZnJvbSB0aGUgZW5kICovCisgIHVpbnQzMiBsZW5ndGg7CisgIHN0cnVjdCBf
TlBCeXRlUmFuZ2UqIG5leHQ7CiB9IE5QQnl0ZVJhbmdlOwogCiAKIHR5cGVkZWYgc3RydWN0IF9O
UFNhdmVkRGF0YQogewotICAgIGludDMyICAgIGxlbjsKLSAgICB2b2lkKiAgICBidWY7CisgIGlu
dDMyIGxlbjsKKyAgdm9pZCogYnVmOwogfSBOUFNhdmVkRGF0YTsKIAogCiB0eXBlZGVmIHN0cnVj
dCBfTlBSZWN0CiB7Ci0gICAgdWludDE2ICAgIHRvcDsKLSAgICB1aW50MTYgICAgbGVmdDsKLSAg
ICB1aW50MTYgICAgYm90dG9tOwotICAgIHVpbnQxNiAgICByaWdodDsKKyAgdWludDE2IHRvcDsK
KyAgdWludDE2IGxlZnQ7CisgIHVpbnQxNiBib3R0b207CisgIHVpbnQxNiByaWdodDsKIH0gTlBS
ZWN0OwogCit0eXBlZGVmIHN0cnVjdCBfTlBTaXplCit7CisgIGludDMyIHdpZHRoOworICBpbnQz
MiBoZWlnaHQ7Cit9IE5QU2l6ZTsKIAogI2lmZGVmIFhQX1VOSVgKIC8qCkBAIC0yMDgsNDggKzMy
MSw1MSBAQA0KICAqIFRoZXNlIGFyZSB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBwbGF0Zm9ybSBz
cGVjaWZpYyBpbmZvcm1hdGlvbi4KICAqLwogZW51bSB7Ci0gICAgTlBfU0VUV0lORE9XID0gMSwK
LSAgICBOUF9QUklOVAorICBOUF9TRVRXSU5ET1cgPSAxLAorICBOUF9QUklOVAogfTsKIAogdHlw
ZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAgICAgdHlwZTsKKyAgaW50MzIgdHlwZTsKIH0g
TlBBbnlDYWxsYmFja1N0cnVjdDsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAg
ICAgICAgdHlwZTsKLSAgICBEaXNwbGF5KiAgICAgICAgZGlzcGxheTsKLSAgICBWaXN1YWwqICAg
ICAgICAgdmlzdWFsOwotICAgIENvbG9ybWFwICAgICAgICBjb2xvcm1hcDsKLSAgICB1bnNpZ25l
ZCBpbnQgICAgZGVwdGg7CisgIGludDMyICAgICAgICB0eXBlOworI2lmZGVmIE1PWl9YMTEKKyAg
RGlzcGxheSogICAgIGRpc3BsYXk7CisgIFZpc3VhbCogICAgICB2aXN1YWw7CisgIENvbG9ybWFw
ICAgICBjb2xvcm1hcDsKKyAgdW5zaWduZWQgaW50IGRlcHRoOworI2VuZGlmCiB9IE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3Q7CiAKIHR5cGVkZWYgc3RydWN0CiB7Ci0gICAgaW50MzIgICAgICAg
ICAgICB0eXBlOwotICAgIEZJTEUqICAgICAgICAgICAgZnA7CisgIGludDMyIHR5cGU7CisgIEZJ
TEUqIGZwOwogfSBOUFByaW50Q2FsbGJhY2tTdHJ1Y3Q7CiAKICNlbmRpZiAvKiBYUF9VTklYICov
CiAKKwogLyoKLSAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWlu
IHBsYXRmb3JtcyB0byBOUE5WIGFuZCAKLSAqICAgTlBQViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFy
b3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4gTmV3ZXIgCi0gKiAgIGNvbXBpbGVycyBv
biBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QgCi0gKiAg
IGNvbXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lu
cyBmcm9tIAotICogICBub3QgdW5kZXJzdGFuZGluZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0aGVz
ZSBtYXNrcyBjaGFuZ2UgdGhlIAorICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVk
IG9uIGNlcnRhaW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRo
YXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyCisgKiAgIGNv
bXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBu
b3QKKyAqICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRl
ciBwbHVnaW5zIGZyb20KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFC
SSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZQogICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3Jz
IG9uIHRob3NlIHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcwotICogICBjb21wYXRpYmxl
IHdpdGggZGlmZmVyZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4gCisg
KiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBw
bHVnaW5zIGNhbgogICogICB1c2UgdGhlc2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5l
IGFuZCB1c2UgdGhlIGNvcnJlY3QgQysrCi0gKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4
cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBXaW5kb3dzIAorICogICBBQkkgdGhhdCB0
aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cwog
ICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuCiAgKi8K
IAogI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAwCiAvKgotICogICBnY2MgMy54
IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgg
CisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBpbmNv
bXBhdGlibGUgd2l0aAogICogICBwcmV2aW91cyBjb21waWxlcnMuCiAgKi8KICNpZiAoZGVmaW5l
ZCAoWFBfVU5JWCkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQpAQCAt
MjU4LDEzICszNzQsMTQgQEANCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX0dDQzMgMAogI2Vu
ZGlmCiAKKwogI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwCiAvKgogICogICBP
biBPU1gsIHRoZSBNYWNoLU8gZXhlY3V0YWJsZSBmb3JtYXQgaXMgc2lnbmlmaWNhbnRseQogICog
ICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGRpZmZlcmVudAog
ICogICBDKysgQUJJLCBpdCBhbHNvIGhhcyBoYXMgZGlmZmVyZW50IEMgY2FsbGluZyBjb252ZW50
aW9uLgogICogICBZb3UgbXVzdCB1c2UgZ2x1ZSBjb2RlIHdoZW4gY2FsbGluZyBiZXR3ZWVuIENG
TSBhbmQKLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiAKKyAqICAgTWFjaC1PIEMgZnVuY3Rpb25z
LgogICovCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JUX01BQ19NQUNITykpCiAjZGVmaW5lIF9OUF9B
QklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLCkBAIC0yNzksNTAgKzM5Niw0OCBA
QA0KICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QUF9HZXRWYWx1ZSBzaGFs
bCBiZSBpbXBsZW1lbnRlZAogICovCiB0eXBlZGVmIGVudW0gewotICAgIE5QUFZwbHVnaW5OYW1l
U3RyaW5nID0gMSwKLSAgICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCi0gICAgTlBQVnBs
dWdpbldpbmRvd0Jvb2wsCi0gICAgTlBQVnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVnBs
dWdpbk5hbWVTdHJpbmcgPSAxLAorICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCisgIE5Q
UFZwbHVnaW5XaW5kb3dCb29sLAorICBOUFBWcGx1Z2luVHJhbnNwYXJlbnRCb29sLAorICBOUFBW
amF2YUNsYXNzLCAgICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gTW96aWxsYSAx
LjAgKi8KKyAgTlBQVnBsdWdpbldpbmRvd1NpemUsCisgIE5QUFZwbHVnaW5UaW1lckludGVydmFs
LAogCi0gICAgTlBQVmphdmFDbGFzcywgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5XaW5kb3dTaXplLCAgICAgICAgIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1Z2luVGltZXJJbnRlcnZhbCwgICAg
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxl
SW5zdGFuY2UgPSAoMTAgfCBOUF9BQklfTUFTSyksCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlSUlE
ID0gMTEsCiAKLSAgICBOUFBWcGx1Z2luU2NyaXB0YWJsZUluc3RhbmNlID0gKDEwIHwgTlBfQUJJ
X01BU0spLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBQVnBsdWdpblNj
cmlwdGFibGVJSUQgPSAxMSwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotCi0gICAg
LyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3
aXRoIDAuOS45ICovCi0gICAgTlBQVmphdmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLCAgLyog
Tm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5LZWVwTGlicmFyeUlu
TWVtb3J5ID0gMTMsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1
Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovCi0KKyAgLyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBz
dGFydGluZyB3aXRoIDAuOS45ICovCisgIE5QUFZqYXZhc2NyaXB0UHVzaENhbGxlckJvb2wgPSAx
MiwKKyAgTlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUg
aW4gTW96aWxsYSAxLjAgKi8KKyAgTlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAxNCwg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwogICAgIC8qIEdldCB0aGUgTlBPYmplY3Qg
Zm9yIHNjcmlwdGluZyB0aGUgcGx1Z2luLiAqLwotICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QgID0gMTUKKyAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVjdCAgPSAxNQogfSBOUFBW
YXJpYWJsZTsKIAogLyoKICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QTl9H
ZXRWYWx1ZSBpcyBpbXBsZW1lbnRlZCBieSBNb3ppbGxhCiAgKi8KIHR5cGVkZWYgZW51bSB7Ci0g
ICAgTlBOVnhEaXNwbGF5ID0gMSwKLSAgICBOUE5WeHRBcHBDb250ZXh0LAotICAgIE5QTlZuZXRz
Y2FwZVdpbmRvdywKLSAgICBOUE5WamF2YXNjcmlwdEVuYWJsZWRCb29sLAotICAgIE5QTlZhc2RF
bmFibGVkQm9vbCwKLSAgICBOUE5WaXNPZmZsaW5lQm9vbCwKKyAgTlBOVnhEaXNwbGF5ID0gMSwK
KyAgTlBOVnh0QXBwQ29udGV4dCwKKyAgTlBOVm5ldHNjYXBlV2luZG93LAorICBOUE5WamF2YXNj
cmlwdEVuYWJsZWRCb29sLAorICBOUE5WYXNkRW5hYmxlZEJvb2wsCisgIE5QTlZpc09mZmxpbmVC
b29sLAogCi0gICAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxk
cyBzdGFydGluZyB3aXRoIDAuOS40ICovCi0gICAgTlBOVnNlcnZpY2VNYW5hZ2VyID0gKDEwIHwg
TlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QTlZE
T01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBp
biBXZWJLaXQgKi8KLSAgICBOUE5WRE9NV2luZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyks
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBOVlRvb2xraXQgICAgICAg
ID0gKDEzIHwgTlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwot
ICAgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBN
b3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3aXRoIDAuOS40ICovCisgIE5QTlZzZXJ2aWNlTWFuYWdl
ciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwKKyAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBf
QUJJX01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLworICBOUE5WRE9NV2lu
ZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyksCisgIE5QTlZUb29sa2l0ICAgICAgICA9ICgx
MyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgTlBO
VlN1cHBvcnRzWEVtYmVkQm9vbCA9IDE0LCAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwogCi0gICAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUg
YnJvd3NlciB3aW5kb3cuICovCi0gICAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCisgIC8qIEdl
dCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLworICBOUE5W
V2luZG93TlBPYmplY3QgPSAxNSwKIAotICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBm
b3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovCi0gICAgTlBOVlBsdWdpbkVsZW1lbnROUE9i
amVjdCAgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICAv
KiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50LiAq
LworICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ICAgICAgICAgICAgICAgICAvKiBOb3QgaW1w
bGVtZW50ZWQgaW4gV2ViS2l0ICovCiB9IE5QTlZhcmlhYmxlOwogCiAvKgpAQCAtMzMwLDcxICs0
NDUsNzggQEANCiAgKiByZXR1cm5lZCBpbiB0aGUgd2luZG93IGZpZWxkLgogICovCiB0eXBlZGVm
IGVudW0gewotICAgIE5QV2luZG93VHlwZVdpbmRvdyA9IDEsCi0gICAgTlBXaW5kb3dUeXBlRHJh
d2FibGUKKyAgTlBXaW5kb3dUeXBlV2luZG93ID0gMSwKKyAgTlBXaW5kb3dUeXBlRHJhd2FibGUK
IH0gTlBXaW5kb3dUeXBlOwogCiB0eXBlZGVmIHN0cnVjdCBfTlBXaW5kb3cKIHsKLSAgICB2b2lk
KiAgICB3aW5kb3c7ICAgICAvKiBQbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlICovCi0g
ICAgaW50MzIgICAgeDsgICAgICAgICAgICAvKiBQb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIg
cmVsYXRpdmUgKi8KLSAgICBpbnQzMiAgICB5OyAgICAgICAgICAgIC8qICAgIHRvIGEgbmV0c2Nh
cGUgcGFnZS4gICAgICAgICAgICAgICAgICAgICovCi0gICAgdWludDMyICAgIHdpZHRoOyAgICAg
ICAgLyogTWF4aW11bSB3aW5kb3cgc2l6ZSAqLwotICAgIHVpbnQzMiAgICBoZWlnaHQ7Ci0gICAg
TlBSZWN0ICAgIGNsaXBSZWN0OyAgICAvKiBDbGlwcGluZyByZWN0YW5nbGUgaW4gcG9ydCBjb29y
ZGluYXRlcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVXNlZCBieSBNQUMgb25seS4g
ICAgICAgICAgICAgICovCi0jaWZkZWYgWFBfVU5JWAotICAgIHZvaWQgKiAgICB3c19pbmZvOyAg
ICAvKiBQbGF0Zm9ybS1kZXBlbmRlbnQgYWRkaXRvbmFsIGRhdGEgKi8KKyAgdm9pZCogd2luZG93
OyAgLyogUGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSAqLworICAgICAgICAgICAgICAg
ICAvKiBPUy8yOiB4IC0gUG9zaXRpb24gb2YgYm90dG9tIGxlZnQgY29ybmVyICAqLworICAgICAg
ICAgICAgICAgICAvKiBPUy8yOiB5IC0gcmVsYXRpdmUgdG8gdmlzaWJsZSBuZXRzY2FwZSB3aW5k
b3cgKi8KKyAgaW50MzIgeDsgICAgICAgLyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJl
bGF0aXZlICovCisgIGludDMyIHk7ICAgICAgIC8qIHRvIGEgbmV0c2NhcGUgcGFnZS4gICAgICAg
ICAqLworICB1aW50MzIgd2lkdGg7ICAvKiBNYXhpbXVtIHdpbmRvdyBzaXplICovCisgIHVpbnQz
MiBoZWlnaHQ7CisgIE5QUmVjdCBjbGlwUmVjdDsgLyogQ2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBv
cnQgY29vcmRpbmF0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAvKiBVc2VkIGJ5IE1BQyBvbmx5
LiAgICAgICAqLworI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgIWRlZmluZWQoWFBfTUFDT1NYKQor
ICB2b2lkICogd3NfaW5mbzsgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFkZGl0b25hbCBkYXRhICov
CiAjZW5kaWYgLyogWFBfVU5JWCAqLwotICAgIE5QV2luZG93VHlwZSB0eXBlOyAgICAvKiBJcyB0
aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCisgIE5QV2luZG93VHlwZSB0eXBlOyAvKiBJ
cyB0aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCiB9IE5QV2luZG93OwogCiAKIHR5cGVk
ZWYgc3RydWN0IF9OUEZ1bGxQcmludAogewotICAgIE5QQm9vbCAgICBwbHVnaW5QcmludGVkOyAg
ICAvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBmdWxsc2NyZWVuICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogICAgcHJpbnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgTlBCb29sICAgIHByaW50T25lOyAgICAgICAgLyogVFJVRSBpZiBwbHVnaW4g
c2hvdWxkIHByaW50IG9uZSBjb3B5ICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
ICAgIHRvIGRlZmF1bHQgcHJpbnRlciAgICAgICAgICAgICAgICAgICAgICovCi0gICAgdm9pZCog
ICAgcGxhdGZvcm1QcmludDsgICAgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAq
LworICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBm
dWxsc2NyZWVuIHByaW50aW5nICovCisgIE5QQm9vbCBwcmludE9uZTsgICAgIC8qIFRSVUUgaWYg
cGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSB0byBkZWZhdWx0IHByaW50ZXIgKi8KKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEZ1bGxQcmludDsKIAogdHlwZWRlZiBzdHJ1Y3QgX05QRW1iZWRQcmludAogewotICAgIE5Q
V2luZG93ICAgIHdpbmRvdzsKLSAgICB2b2lkKiAgICBwbGF0Zm9ybVByaW50OyAgICAvKiBQbGF0
Zm9ybS1zcGVjaWZpYyBwcmludGluZyBpbmZvICovCisgIE5QV2luZG93IHdpbmRvdzsKKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEVtYmVkUHJpbnQ7CiAKIHR5cGVkZWYgc3RydWN0IF9OUFByaW50CiB7Ci0gICAgdWludDE2
ICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogTlBfRlVMTCBvciBOUF9FTUJFRCAq
LwotICAgIHVuaW9uCi0gICAgewotICAgICAgICBOUEZ1bGxQcmludCAgICAgZnVsbFByaW50OyAg
ICAgICAgLyogaWYgbW9kZSBpcyBOUF9GVUxMICovCi0gICAgICAgIE5QRW1iZWRQcmludCAgICBl
bWJlZFByaW50OyAgICAgICAgLyogaWYgbW9kZSBpcyBOUF9FTUJFRCAqLwotICAgIH0gcHJpbnQ7
CisgIHVpbnQxNiBtb2RlOyAgICAgICAgICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8K
KyAgdW5pb24KKyAgeworICAgIE5QRnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlz
IE5QX0ZVTEwgKi8KKyAgICBOUEVtYmVkUHJpbnQgZW1iZWRQcmludDsgLyogaWYgbW9kZSBpcyBO
UF9FTUJFRCAqLworICB9IHByaW50OwogfSBOUFByaW50OwogCiAjaWYgZGVmaW5lZChYUF9NQUMp
IHx8IGRlZmluZWQoWFBfTUFDT1NYKQotdHlwZWRlZiBFdmVudFJlY29yZCAgICBOUEV2ZW50Owor
dHlwZWRlZiBFdmVudFJlY29yZCBOUEV2ZW50OwogI2VsaWYgZGVmaW5lZChYUF9XSU4pCiB0eXBl
ZGVmIHN0cnVjdCBfTlBFdmVudAogewotICAgIHVpbnQxNiAgIGV2ZW50OwotICAgIHVpbnQzMiAg
IHdQYXJhbTsKLSAgICB1aW50MzIgICBsUGFyYW07CisgIHVpbnQxNiBldmVudDsKKyAgdWludDMy
IHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKIH0gTlBFdmVudDsKLSNlbGlmIGRlZmluZWQgKFhQ
X1VOSVgpCisjZWxpZiBkZWZpbmVkKFhQX09TMikKK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50Cit7
CisgIHVpbnQzMiBldmVudDsKKyAgdWludDMyIHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKK30g
TlBFdmVudDsKKyNlbGlmIGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoTU9aX1gxMSkKIHR5
cGVkZWYgWEV2ZW50IE5QRXZlbnQ7CiAjZWxzZQotdHlwZWRlZiB2b2lkKiAgICAgICAgICAgIE5Q
RXZlbnQ7Cit0eXBlZGVmIHZvaWQqICAgICBOUEV2ZW50OwogI2VuZGlmIC8qIFhQX01BQyAqLwog
CiAjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NYKQogdHlwZWRlZiBSZ25I
YW5kbGUgTlBSZWdpb247CiAjZWxpZiBkZWZpbmVkKFhQX1dJTikKIHR5cGVkZWYgSFJHTiBOUFJl
Z2lvbjsKLSNlbGlmIGRlZmluZWQoWFBfVU5JWCkKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkgJiYg
ZGVmaW5lZChNT1pfWDExKQogdHlwZWRlZiBSZWdpb24gTlBSZWdpb247CiAjZWxzZQogdHlwZWRl
ZiB2b2lkICpOUFJlZ2lvbjsKQEAgLTQwNywzNiArNTI5LDQ3IEBADQogCiB0eXBlZGVmIHN0cnVj
dCBOUF9Qb3J0CiB7Ci0gICAgQ0dyYWZQdHIgICAgIHBvcnQ7ICAgICAgICAvKiBHcmFmcG9ydCAq
LwotICAgIGludDMyICAgICAgICBwb3J0eDsgICAgICAgIC8qIHBvc2l0aW9uIGluc2lkZSB0aGUg
dG9wbW9zdCB3aW5kb3cgKi8KLSAgICBpbnQzMiAgICAgICAgcG9ydHk7CisgIENHcmFmUHRyIHBv
cnQ7IC8qIEdyYWZwb3J0ICovCisgIGludDMyIHBvcnR4OyAgIC8qIHBvc2l0aW9uIGluc2lkZSB0
aGUgdG9wbW9zdCB3aW5kb3cgKi8KKyAgaW50MzIgcG9ydHk7CiB9IE5QX1BvcnQ7CiAKIC8qCiAg
KiAgTm9uLXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVF
dmVudAogICovCi0jZGVmaW5lIGdldEZvY3VzRXZlbnQgICAgICAgIChvc0V2dCArIDE2KQotI2Rl
ZmluZSBsb3NlRm9jdXNFdmVudCAgICAgICAgKG9zRXZ0ICsgMTcpCi0jZGVmaW5lIGFkanVzdEN1
cnNvckV2ZW50ICAgKG9zRXZ0ICsgMTgpCiAKK2VudW0gTlBFdmVudFR5cGUgeworICBOUEV2ZW50
VHlwZV9HZXRGb2N1c0V2ZW50ID0gKG9zRXZ0ICsgMTYpLAorICBOUEV2ZW50VHlwZV9Mb3NlRm9j
dXNFdmVudCwKKyAgTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZlbnQsCisgIE5QRXZlbnRUeXBl
X01lbnVDb21tYW5kRXZlbnQsCisgIE5QRXZlbnRUeXBlX0NsaXBwaW5nQ2hhbmdlZEV2ZW50LAor
ICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdCZWdpbnNFdmVudCA9IDEwMDAsCisgIE5QRXZlbnRUeXBl
X1Njcm9sbGluZ0VuZHNFdmVudAorfTsKKworI2lmZGVmIE9CU09MRVRFCisjZGVmaW5lIGdldEZv
Y3VzRXZlbnQgICAgIChvc0V2dCArIDE2KQorI2RlZmluZSBsb3NlRm9jdXNFdmVudCAgICAob3NF
dnQgKyAxNykKKyNkZWZpbmUgYWRqdXN0Q3Vyc29yRXZlbnQgKG9zRXZ0ICsgMTgpCisjZW5kaWYK
ICNlbmRpZiAvKiBYUF9NQUMgKi8KIAotCiAvKgogICogVmFsdWVzIGZvciBtb2RlIHBhc3NlZCB0
byBOUFBfTmV3OgogICovCi0jZGVmaW5lIE5QX0VNQkVEICAgICAgICAxCi0jZGVmaW5lIE5QX0ZV
TEwgICAgICAgICAyCisjZGVmaW5lIE5QX0VNQkVEIDEKKyNkZWZpbmUgTlBfRlVMTCAgMgogCiAv
KgogICogVmFsdWVzIGZvciBzdHJlYW0gdHlwZSBwYXNzZWQgdG8gTlBQX05ld1N0cmVhbToKICAq
LwotI2RlZmluZSBOUF9OT1JNQUwgICAgICAgIDEKLSNkZWZpbmUgTlBfU0VFSyAgICAgICAgIDIK
LSNkZWZpbmUgTlBfQVNGSUxFICAgICAgICAzCi0jZGVmaW5lIE5QX0FTRklMRU9OTFkgICAgICAg
IDQKKyNkZWZpbmUgTlBfTk9STUFMICAgICAxCisjZGVmaW5lIE5QX1NFRUsgICAgICAgMgorI2Rl
ZmluZSBOUF9BU0ZJTEUgICAgIDMKKyNkZWZpbmUgTlBfQVNGSUxFT05MWSA0CiAKLSNkZWZpbmUg
TlBfTUFYUkVBRFkgICAgKCgodW5zaWduZWQpKH4wKTw8MSk+PjEpCisjZGVmaW5lIE5QX01BWFJF
QURZICgoKHVuc2lnbmVkKSh+MCk8PDEpPj4xKQogCiAjaWZkZWYgWFBfTUFDCiAjcHJhZ21hIG9w
dGlvbnMgYWxpZ249cmVzZXQKQEAgLTQ0NCwzOCArNTc3LDM4IEBADQogCiAKIC8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCi0vKiAgICAgICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlvbnMg
ICAgICAgICAgICAqLworLyogICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlv
bnMgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqICAgIFZhbHVlcyBvZiB0eXBl
IE5QRXJyb3I6CisgKiBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgogICovCi0jZGVmaW5lIE5QRVJS
X0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotI2RlZmluZSBOUEVSUl9OT19FUlJP
UiAgICAgICAgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMCkKLSNkZWZpbmUgTlBFUlJf
R0VORVJJQ19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQotI2RlZmlu
ZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDIpCi0j
ZGVmaW5lIE5QRVJSX0lOVkFMSURfRlVOQ1RBQkxFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSAr
IDMpCi0jZGVmaW5lIE5QRVJSX01PRFVMRV9MT0FEX0ZBSUxFRF9FUlJPUiAgICAgICAgKE5QRVJS
X0JBU0UgKyA0KQotI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQotI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgICAgIChOUEVSUl9CQVNFICsgNikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVHSU5fRElS
X0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDcpCi0jZGVmaW5lIE5QRVJSX0lOQ09NUEFUSUJM
RV9WRVJTSU9OX0VSUk9SICAgIChOUEVSUl9CQVNFICsgOCkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJ
RF9QQVJBTSAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDkpCi0jZGVmaW5lIE5QRVJSX0lO
VkFMSURfVVJMICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEwKQotI2RlZmluZSBO
UEVSUl9GSUxFX05PVF9GT1VORCAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQotI2Rl
ZmluZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAx
MikKLSNkZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAgICAgIChOUEVSUl9C
QVNFICsgMTMpCisjZGVmaW5lIE5QRVJSX0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgMAor
I2RlZmluZSBOUEVSUl9OT19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAw
KQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VSUk9SICAgICAgICAgICAgICAgKE5QRVJSX0JBU0Ug
KyAxKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgKE5QRVJSX0JB
U0UgKyAyKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0ZVTkNUQUJMRV9FUlJPUiAgICAgKE5QRVJS
X0JBU0UgKyAzKQorI2RlZmluZSBOUEVSUl9NT0RVTEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5Q
RVJSX0JBU0UgKyA0KQorI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgKE5QRVJSX0JBU0UgKyA2KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJS
T1IgICAgKE5QRVJSX0JBU0UgKyA3KQorI2RlZmluZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lP
Tl9FUlJPUiAgKE5QRVJSX0JBU0UgKyA4KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BBUkFNICAg
ICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAg
ICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMCkKKyNkZWZpbmUgTlBFUlJfRklMRV9OT1Rf
Rk9VTkQgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTEpCisjZGVmaW5lIE5QRVJSX05PX0RB
VEEgICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEyKQorI2RlZmluZSBOUEVSUl9T
VFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMykKIAogLyoKLSAqICAg
IFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgorICogVmFsdWVzIG9mIHR5cGUgTlBSZWFzb246CiAg
Ki8KLSNkZWZpbmUgTlBSRVNfQkFTRSAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIE5QUkVTX0RP
TkUgICAgICAgICAgICAgICAgICAgIChOUFJFU19CQVNFICsgMCkKLSNkZWZpbmUgTlBSRVNfTkVU
V09SS19FUlIgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDEpCi0jZGVmaW5lIE5QUkVTX1VTRVJf
QlJFQUsgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDIpCisjZGVmaW5lIE5QUkVTX0JBU0UgICAg
ICAgICAgMAorI2RlZmluZSBOUFJFU19ET05FICAgICAgICAgKE5QUkVTX0JBU0UgKyAwKQorI2Rl
ZmluZSBOUFJFU19ORVRXT1JLX0VSUiAgKE5QUkVTX0JBU0UgKyAxKQorI2RlZmluZSBOUFJFU19V
U0VSX0JSRUFLICAgKE5QUkVTX0JBU0UgKyAyKQogCiAvKgotICogICAgICBEb24ndCB1c2UgdGhl
c2Ugb2Jzb2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCisgKiBEb24ndCB1c2UgdGhlc2Ugb2Jz
b2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCiAgKi8KICNkZWZpbmUgTlBfTk9FUlIgIE5QX05P
RVJSX2lzX29ic29sZXRlX3VzZV9OUEVSUl9OT19FUlJPUgogI2RlZmluZSBOUF9FSU5WQUwgTlBf
RUlOVkFMX2lzX29ic29sZXRlX3VzZV9OUEVSUl9HRU5FUklDX0VSUk9SCkBAIC00ODQsMjYgKzYx
NywzMiBAQA0KIC8qCiAgKiBWZXJzaW9uIGZlYXR1cmUgaW5mb3JtYXRpb24KICAqLwotI2RlZmlu
ZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgOAotI2RlZmluZSBOUFZFUlNfSEFTX05PVElG
SUNBVElPTiAgICAgOQotI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVDT05ORUNUICAgICAgICA5Ci0j
ZGVmaW5lIE5QVkVSU19XSU4xNl9IQVNfTElWRUNPTk5FQ1QgICAgOQotI2RlZmluZSBOUFZFUlNf
NjhLX0hBU19MSVZFQ09OTkVDVCAgICAxMQotI2RlZmluZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1Mg
ICAgICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hBU19TVFJFQU1PVVRQVVQgICAgICA4CisjZGVmaW5l
IE5QVkVSU19IQVNfTk9USUZJQ0FUSU9OICAgICAgOQorI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVD
T05ORUNUICAgICAgIDkKKyNkZWZpbmUgTlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCA5Cisj
ZGVmaW5lIE5QVkVSU182OEtfSEFTX0xJVkVDT05ORUNUICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hB
U19XSU5ET1dMRVNTICAgICAgICAxMQorI2RlZmluZSBOUFZFUlNfSEFTX1hQQ09OTkVDVF9TQ1JJ
UFRJTkcgMTMKIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgRnVuY3Rpb24g
UHJvdG90eXBlcyAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICBG
dW5jdGlvbiBQcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCiAKICNpZiBkZWZpbmVkKF9XSU5ET1dTKSAmJiAhZGVmaW5lZChXSU4zMikKICNk
ZWZpbmUgTlBfTE9BRERTICBfbG9hZGRzCiAjZWxzZQorI2lmIGRlZmluZWQoX19PUzJfXykKKyNk
ZWZpbmUgTlBfTE9BRERTIF9TeXN0ZW0KKyNlbHNlCiAjZGVmaW5lIE5QX0xPQUREUwogI2VuZGlm
CisjZW5kaWYKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKKyNpZm5kZWYgX19T
WU1CSUFOMzJfXworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgog
I2VuZGlmCiAKIC8qCkBAIC01MTEsNzggKzY1MCwxNTAgQEANCiAgKi8KIAogI2lmZGVmIFhQX1VO
SVgKLWNoYXIqICAgICAgICAgICAgICAgICAgICBOUFBfR2V0TUlNRURlc2NyaXB0aW9uKHZvaWQp
OworY2hhciogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lkKTsKICNlbmRpZiAvKiBYUF9VTklY
ICovCiAKLU5QRXJyb3IgICAgIE5QUF9Jbml0aWFsaXplKHZvaWQpOwotdm9pZCAgICAgICAgTlBQ
X1NodXRkb3duKHZvaWQpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAgIE5QUF9OZXcoTlBNSU1F
VHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsK
LU5QRXJyb3IgICAgIE5QX0xPQUREUyAgICBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2
ZWREYXRhKiogc2F2ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX1NldFdpbmRvdyhO
UFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAg
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVr
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlw
ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlBSZWFzb24gcmVhc29uKTsKLWludDMyICAgICAgICBOUF9MT0FERFMgICAgTlBQ
X1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtKTsKLWludDMyICAgICAg
ICBOUF9MT0FERFMgICAgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwg
aW50MzIgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyIGxl
biwgdm9pZCogYnVmZmVyKTsKLXZvaWQgICAgICAgIE5QX0xPQUREUyAgICBOUFBfU3RyZWFtQXNG
aWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCAgICAgICAgTlBf
TE9BRERTICAgIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQp
OwotaW50MTYgICAgICAgICAgICBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBl
dmVudCk7Ci12b2lkICAgICAgICBOUF9MT0FERFMgICAgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFu
Y2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsKLWpyZWYgICAgICAgIE5QX0xP
QUREUyAgICAgICAgICAgIE5QUF9HZXRKYXZhQ2xhc3Modm9pZCk7Ci1OUEVycm9yICAgICBOUFBf
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yICAgICBOUFBf
U2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7CisjaWZkZWYgX19TWU1CSUFO
MzJfXworSU1QT1JUX0MgY29uc3QgVERlc0MxNiogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lk
KTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCiAKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9J
bml0aWFsaXplKHZvaWQpOworI2lmZGVmIF9fU1lNQklBTjMyX18KK0lNUE9SVF9DCisjZW5kaWYg
LyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQp
OworCisjaWZuZGVmIF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXcoTlBN
SU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbHNlCitO
UEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAorICAgICAgICAgICAgICB1aW50MTYgbW9kZSwgQ0Rlc0NBcnJheSogYXJnbiwKKyAgICAg
ICAgICAgICAgQ0Rlc0NBcnJheSogYXJndiwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbmRpZiAv
KiBfX1NZTUJJQU4zMl9fICovCisKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95KE5QUCBp
bnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRX
aW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKK05QRXJyb3IgTlBfTE9BRERT
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlwZSk7CitOUEVycm9y
IE5QX0xPQUREUyBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24p
OworaW50MzIgICBOUF9MT0FERFMgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVh
bSogc3RyZWFtKTsKK2ludDMyICAgTlBfTE9BRERTIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5Q
U3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7CisKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordm9p
ZCAgICBOUF9MT0FERFMgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZu
YW1lKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1N0
cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGZuYW1lKTsKKyNlbmRpZiAvKiBf
X1NZTUJJQU4zMl9fICovCisKK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9QcmludChOUFAgaW5zdGFu
Y2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOworaW50MTYgICBOUF9MT0FERFMgTlBQX0hhbmRs
ZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpOworCisjaWZuZGVmIF9fU1lNQklBTjMy
X18KK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBj
aGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNv
biwgdm9pZCogbm90aWZ5RGF0YSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK3ZvaWQgICAg
TlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCisjaWZkZWYgT0pJCitq
cmVmICAgIE5QX0xPQUREUyBOUFBfR2V0SmF2YUNsYXNzKHZvaWQpOworI2VuZGlmCisKKyNpZmRl
ZiBfX1NZTUJJQU4zMl9fCitJTVBPUlRfQworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KK05Q
RXJyb3IgTlBfTE9BRERTIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7CitOUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOworCiAvKgogICog
TlBOXyogZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBieSB0aGUgbmF2aWdhdG9yIGFuZCBjYWxsZWQg
YnkgdGhlIHBsdWdpbi4KICAqLwordm9pZCAgICBOUF9MT0FERFMgTlBOX1ZlcnNpb24oaW50KiBw
bHVnaW5fbWFqb3IsIGludCogcGx1Z2luX21pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBuZXRzY2FwZV9tYWpvciwgaW50KiBuZXRzY2FwZV9taW5vcik7CiAKLXZvaWQg
ICAgICAgIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQqIG5l
dHNjYXBlX21pbm9yKTsKLU5QRXJyb3IgICAgIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGlmeURhdGEpOwotTlBFcnJvciAgICAgTlBOX0dldFVS
TChOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7Ci1OUEVycm9yICAgICBOUE5fUG9zdFVSTE5vdGlmeShO
UFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsKLU5QRXJyb3IgICAg
IE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlKTsKLU5QRXJy
b3IgICAgIE5QTl9SZXF1ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFu
Z2VMaXN0KTsKLU5QRXJyb3IgICAgIE5QTl9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVU
eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJn
ZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKLWludDMyICAgICAgICBOUE5fV3JpdGUoTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQqIGJ1ZmZlcik7Ci1OUEVycm9yICAgICBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uKTsKLXZvaWQgICAgICAgIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLWNvbnN0IGNoYXIqICAgIE5QTl9Vc2VyQWdlbnQoTlBQ
IGluc3RhbmNlKTsKLXZvaWQqICAgICAgICBOUE5fTWVtQWxsb2ModWludDMyIHNpemUpOwotdm9p
ZCAgICAgICAgTlBOX01lbUZyZWUodm9pZCogcHRyKTsKLXVpbnQzMiAgICAgICAgTlBOX01lbUZs
dXNoKHVpbnQzMiBzaXplKTsKLXZvaWQgICAgICAgIE5QTl9SZWxvYWRQbHVnaW5zKE5QQm9vbCBy
ZWxvYWRQYWdlcyk7Ci1KUklFbnYqICAgICBOUE5fR2V0SmF2YUVudih2b2lkKTsKLWpyZWYgICAg
ICAgIE5QTl9HZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwotTlBFcnJvciAgICAgTlBOX0dldFZh
bHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnZhbHVlKTsKLU5QRXJyb3IgICAgIE5QTl9TZXRWYWx1ZShOUFAg
aW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICp2YWx1ZSk7Ci12b2lkICAgICAgICBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGlu
c3RhbmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsKLXZvaWQgICAgICAgIE5QTl9JbnZhbGlkYXRl
UmVnaW9uKE5QUCBpbnN0YW5jZSwgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Ci12b2lkICAgICAg
ICBOUE5fRm9yY2VSZWRyYXcoTlBQIGluc3RhbmNlKTsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
TlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFVSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNo
YXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
dGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRVUkwo
TlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTE5v
dGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsK
K05QRXJyb3IgTlBfTE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB1
aW50MzIgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVm
LCBOUEJvb2wgZmlsZSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK05QRXJyb3IgTlBfTE9B
RERTIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwg
dm9pZCogbm90aWZ5RGF0YSk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0
YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBURGVzQzE2KiB0YXJnZXQpOworTlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkxOb3Rp
ZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7CitOUEVy
cm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIHVy
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGJ1ZiwgTlBCb29s
IGZpbGUpOworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVz
Ci19ICAvKiBlbmQgZXh0ZXJuICJDIiAqLworTlBFcnJvciBOUF9MT0FERFMgTlBOX1JlcXVlc3RS
ZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiByYW5nZUxpc3QpOworCisjaWZuZGVm
IF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9OZXdTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRhcmdldCwgTlBTdHJlYW0qKiBzdHJlYW0pOworI2Vsc2UvKiBfX1NZTUJJQU4z
Ml9fICovCitOUEVycm9yIE5QX0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBN
SU1FVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVz
QzE2KiB0YXJnZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9f
ICovCisKK2ludDMyICAgTlBfTE9BRERTIE5QTl9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sIGludDMyIGxlbiwgdm9pZCogYnVmZmVyKTsKK05QRXJyb3IgTlBfTE9BRERTIE5Q
Tl9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24g
cmVhc29uKTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9fCit2b2lkICAgIE5QX0xPQUREUyBOUE5f
U3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogbWVzc2FnZSk7CisjZWxzZS8qIF9fU1lN
QklBTjMyX18gKi8KK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNlLCBj
b25zdCBURGVzQzE2JiBtZXNzYWdlKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCisKKyNp
Zm5kZWYgX19TWU1CSUFOMzJfXworY29uc3QgY2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQo
TlBQIGluc3RhbmNlKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLworY29uc3QgVERlc0MxNiog
TlBfTE9BRERTICBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7CisjZW5kaWYgLyogX19TWU1C
SUFOMzJfXyAqLworCisKK3ZvaWQqICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1aW50MzIgc2l6
ZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fTWVtRnJlZSh2b2lkKiBwdHIpOwordWludDMyICBO
UF9MT0FERFMgTlBOX01lbUZsdXNoKHVpbnQzMiBzaXplKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5Q
Tl9SZWxvYWRQbHVnaW5zKE5QQm9vbCByZWxvYWRQYWdlcyk7CisjaWZkZWYgT0pJCitKUklFbnYq
IE5QX0xPQUREUyBOUE5fR2V0SmF2YUVudih2b2lkKTsKK2pyZWYgICAgTlBfTE9BRERTIE5QTl9H
ZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwogI2VuZGlmCitOUEVycm9yIE5QX0xPQUREUyBOUE5f
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUp
OworTlBFcnJvciBOUF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9JbnZhbGlk
YXRlUmVjdChOUFAgaW5zdGFuY2UsIE5QUmVjdCAqaW52YWxpZFJlY3QpOwordm9pZCAgICBOUF9M
T0FERFMgTlBOX0ludmFsaWRhdGVSZWdpb24oTlBQIGluc3RhbmNlLCBOUFJlZ2lvbiBpbnZhbGlk
UmVnaW9uKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9Gb3JjZVJlZHJhdyhOUFAgaW5zdGFuY2Up
OwogCisjaWZuZGVmIF9fU1lNQklBTjMyX18KKyAjaWZkZWYgX19jcGx1c3BsdXMKKyB9ICAvKiBl
bmQgZXh0ZXJuICJDIiAqLworICNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBSQ19JTlZPS0VE
ICovCisjaWZkZWYgX19PUzJfXworI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorCiAjZW5kaWYgLyog
X05QQVBJX0hfICovCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTIwLDE1ICsyMCwxNiBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCisjaW5jbHVk
ZSA8SGFzaE1hcC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZV9pbXBsLmg+
CisjaW5jbHVkZSA8aWRlbnRpZmllci5oPgogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1
ZGUgPGNfdXRpbGl0eS5oPgogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lX2lt
cGwuaD4KLQorLyoKIHN0YXRpYyBCb29sZWFuIHN0cmluZ0lkZW50aWZpZXJFcXVhbChjb25zdCB2
b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVlMikKIHsKICAgICByZXR1cm4gc3RyY21wKChj
b25zdCBjaGFyICopdmFsdWUxLCAoY29uc3QgY2hhciAqKXZhbHVlMikgPT0gMDsKQEAgLTEwMCwx
NCArMTAxLDE0IEBADQogICAgIHJldHVybiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeTsKIH0KIAot
TlBJZGVudGlmaWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoY29uc3QgTlBVVEY4ICpuYW1l
KQorTlBJZGVudGlmaWVyIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5h
bWUpCiB7CiAgICAgYXNzZXJ0IChuYW1lKTsKLSAgICAKKwogICAgIGlmIChuYW1lKSB7CiAgICAg
ICAgIFByaXZhdGVJZGVudGlmaWVyICppZGVudGlmaWVyID0gMDsKLSAgICAgICAgCi0gICAgICAg
IGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAo
Z2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKiluYW1lKTsKKwor
ICAgICAgICAvL2lkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilu
YW1lKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgewogICAgICAgICAgICAgaWRlbnRp
ZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKW1hbGxvYyAoc2l6ZW9mKFByaXZhdGVJZGVudGlm
aWVyKSk7CiAgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMs
IHNvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwKQEAgLTExNiw2MCArMTE3LDEz
OCBAQA0KICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlkZW50aWZpZXJOYW1lID0gc3RyZHVwIChu
YW1lKTsKICAgICAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9IGlkZW50aWZpZXJO
YW1lOwogCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRp
ZmllckRpY3Rpb25hcnkoKSwgaWRlbnRpZmllck5hbWUsIChjb25zdCB2b2lkICopaWRlbnRpZmll
cik7CisgICAgICAgICAgICAvL0NGRGljdGlvbmFyeUFkZFZhbHVlIChnZXRTdHJpbmdJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCBpZGVudGlmaWVyTmFtZSwgKGNvbnN0IHZvaWQgKilpZGVudGlmaWVy
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCi12b2lkIF9OUE5fR2V0U3RyaW5nSWRl
bnRpZmllcnMgKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwgTlBJZGVu
dGlmaWVyICppZGVudGlmaWVycykKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIChjb25z
dCBOUFVURjggKipuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciAqaWRlbnRp
ZmllcnMpCiB7CiAgICAgYXNzZXJ0IChuYW1lcyk7CiAgICAgYXNzZXJ0IChpZGVudGlmaWVycyk7
Ci0gICAgCisKICAgICBpZiAobmFtZXMgJiYgaWRlbnRpZmllcnMpIHsKICAgICAgICAgaW50IGk7
Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykgewot
ICAgICAgICAgICAgaWRlbnRpZmllcnNbaV0gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG5h
bWVzW2ldKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIgKG5hbWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotTlBJZGVudGlmaWVyIF9O
UE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludGlkKQorTlBJZGVudGlmaWVyIE5QTl9HZXRJ
bnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCiB7CisvL2ZvcmNlIGFzc2VydAorCisKICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaWRlbnRpZmllciA9IDA7Ci0gICAgCi0gICAgaWRlbnRpZmllciA9
IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFyeUdldFZhbHVlIChnZXRJbnRJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWludGlkKTsKK2Fzc2VydCggaWRlbnRpZmll
ciApOworICAgIC8vaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFy
eUdldFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWlu
dGlkKTsKICAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7CiAgICAgICAgIGlkZW50aWZpZXIgPSAo
UHJpdmF0ZUlkZW50aWZpZXIgKiltYWxsb2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOwog
ICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMsIHNvIHRoaXMgZGlj
dGlvbmFyeSB3aWxsIGdyb3cuCiAgICAgICAgIGlkZW50aWZpZXItPmlzU3RyaW5nID0gZmFsc2U7
CiAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLm51bWJlciA9IGludGlkOwogCi0gICAgICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qg
dm9pZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOworICAgICAgICAvL0NGRGlj
dGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9p
ZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4g
KE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworfSovCisKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
S0pTOjpVU3RyaW5nOjpSZXA+LCBQcml2YXRlSWRlbnRpZmllcio+IFN0cmluZ0lkZW50aWZpZXJN
YXA7CisKK3N0YXRpYyBTdHJpbmdJZGVudGlmaWVyTWFwKiBnZXRTdHJpbmdJZGVudGlmaWVyTWFw
KCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nSWRlbnRpZmllck1hcCogc3RyaW5nSWRlbnRpZmllck1h
cCA9IDA7CisgICAgaWYgKCFzdHJpbmdJZGVudGlmaWVyTWFwKQorICAgICAgICBzdHJpbmdJZGVu
dGlmaWVyTWFwID0gbmV3IFN0cmluZ0lkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIHN0cmluZ0lk
ZW50aWZpZXJNYXA7CiB9CiAKLWJvb2wgX05QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit0eXBlZGVmIEhhc2hNYXA8aW50LCBQcml2YXRlSWRlbnRpZmllcio+
IEludElkZW50aWZpZXJNYXA7CisKK3N0YXRpYyBJbnRJZGVudGlmaWVyTWFwKiBnZXRJbnRJZGVu
dGlmaWVyTWFwKCkKIHsKKyAgICBzdGF0aWMgSW50SWRlbnRpZmllck1hcCogaW50SWRlbnRpZmll
ck1hcCA9IDA7CisgICAgaWYgKCFpbnRJZGVudGlmaWVyTWFwKQorICAgICAgICBpbnRJZGVudGlm
aWVyTWFwID0gbmV3IEludElkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIGludElkZW50aWZpZXJN
YXA7Cit9CisKK0VYUE9SVF9DCitOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
Y29uc3QgTlBVVEY4KiBuYW1lKQoreworICAgIGFzc2VydChuYW1lKTsKKworICAgIGlmIChuYW1l
KSB7CisgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsKKworICAgICAg
ICBpZGVudGlmaWVyID0gZ2V0U3RyaW5nSWRlbnRpZmllck1hcCgpLT5nZXQoaWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIobmFtZSkudXN0cmluZygpLmFyZXAoKSk7CisgICAgICAgIGlmIChpZGVu
dGlmaWVyID09IDApIHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZp
ZXIqKW1hbGxvYyhzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIC8vIFdl
IG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwg
Z3JvdywgYXMgd2lsbAorICAgICAgICAgICAgLy8gdGhlIG1lbW9yeSBmb3IgdGhlIGlkZW50aWZp
ZXIgbmFtZSBzdHJpbmdzLgorICAgICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSB0cnVl
OworICAgICAgICAgICAgaWRlbnRpZmllci0+dmFsdWUuc3RyaW5nID0gc3RyZHVwKG5hbWUpOwor
CisgICAgICAgICAgICBnZXRTdHJpbmdJZGVudGlmaWVyTWFwKCktPnNldChpZGVudGlmaWVyRnJv
bU5QSWRlbnRpZmllcihuYW1lKS51c3RyaW5nKCkuYXJlcCgpLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitFWFBPUlRfQwordm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cnMoY29uc3QgTlBVVEY4KiogbmFtZXMsIGludDMyX3QgbmFtZUNvdW50LCBOUElkZW50aWZpZXIq
IGlkZW50aWZpZXJzKQoreworICAgIGFzc2VydChuYW1lcyk7CisgICAgYXNzZXJ0KGlkZW50aWZp
ZXJzKTsKKworICAgIGlmIChuYW1lcyAmJiBpZGVudGlmaWVycykKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0g
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZXNbaV0pOworfQorCitFWFBPUlRfQworTlBJZGVu
dGlmaWVyIE5QTl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCit7CisgICAgUHJpdmF0
ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSAwOworCisgICAgaWRlbnRpZmllciA9IGdldEludElk
ZW50aWZpZXJNYXAoKS0+Z2V0KGludGlkKTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7Cisg
ICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKW1hbGxvYyhzaXplb2YoUHJp
dmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgLy8gV2UgbmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVy
IG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBncm93LgorICAgICAgICBpZGVudGlmaWVy
LT5pc1N0cmluZyA9IGZhbHNlOworICAgICAgICBpZGVudGlmaWVyLT52YWx1ZS5udW1iZXIgPSBp
bnRpZDsKKworICAgICAgICBnZXRJbnRJZGVudGlmaWVyTWFwKCktPnNldChpbnRpZCwgaWRlbnRp
Zmllcik7CisgICAgfQorICAgIHJldHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7Cit9CisK
K0VYUE9SVF9DCitib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIg
KilpZGVudGlmaWVyOwogICAgIHJldHVybiBpLT5pc1N0cmluZzsKIH0KIAotTlBVVEY4ICpfTlBO
X1VURjhGcm9tSWRlbnRpZmllciAoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQwor
TlBVVEY4ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyIChOUElkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBQcml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKWlkZW50
aWZpZXI7CiAgICAgaWYgKCFpLT5pc1N0cmluZyB8fCAhaS0+dmFsdWUuc3RyaW5nKQogICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICAgICAgCisKICAgICByZXR1cm4gKE5QVVRGOCAqKXN0cmR1cChp
LT52YWx1ZS5zdHJpbmcpOwogfQogCi1pbnQzMl90IF9OUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQworaW50MzJfdCBOUE5fSW50RnJvbUlkZW50
aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIg
KmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilpZGVudGlmaWVyOwogICAgIGlmICghaS0+aXNTdHJp
bmcpCkBAIC0yMjEsOSArMzAwLDkgQEANCiB7CiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgIT0gTlBW
YXJpYW50VHlwZV9Cb29sKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAg
KnJlc3VsdCA9IHZhcmlhbnQtPnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzMsNyArMzEyLDcgQEANCiAgICAgICAgIE5QU3RyaW5nIGVtcHR5U3Ry
aW5nID0geyAwLCAwIH07CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZzsKICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgIHJldHVybiB2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZTsKIH0KIApA
QCAtMjQ1LDcgKzMyNCw3IEBADQogICAgICAgICAqcmVzdWx0ID0gKGludDMyX3QpdmFyaWFudC0+
dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU3LDcgKzMzNiw3IEBADQogICAgICAgICAq
cmVzdWx0ID0gdmFyaWFudC0+dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY1LDkgKzM0
NCw5IEBADQogewogICAgIGlmICh2YXJpYW50LT50eXBlICE9IE5QVmFyaWFudFR5cGVfT2JqZWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKKwogICAgICpyZXN1bHQgPSB2
YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zMjEsNyArNDAwLDcgQEANCiB2b2lkIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmpl
Y3QgKE5QVmFyaWFudCAqdmFyaWFudCwgTlBPYmplY3QgKnZhbHVlKQogewogICAgIHZhcmlhbnQt
PnR5cGUgPSBOUFZhcmlhbnRUeXBlX09iamVjdDsKLSAgICB2YXJpYW50LT52YWx1ZS5vYmplY3RW
YWx1ZSA9IF9OUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CisgICAgdmFyaWFudC0+dmFsdWUub2Jq
ZWN0VmFsdWUgPSBOUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CiB9CiAKIHZvaWQgTlBOX0luaXRp
YWxpemVWYXJpYW50V2l0aFZhcmlhbnQgKE5QVmFyaWFudCAqZGVzdGluYXRpb24sIGNvbnN0IE5Q
VmFyaWFudCAqc291cmNlKQpAQCAtMzYyLDEyICs0NDEsMTMgQEANCiAgICAgfQogfQogCi12b2lk
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MK
K3ZvaWQgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKE5QVmFyaWFudCAqdmFyaWFudCkKIHsKICAg
ICBhc3NlcnQgKHZhcmlhbnQpOwotICAgIAorCiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgPT0gTlBW
YXJpYW50VHlwZV9PYmplY3QpIHsKLSAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CisgICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
ID0gMDsKICAgICB9CiAgICAgZWxzZSBpZiAodmFyaWFudC0+dHlwZSA9PSBOUFZhcmlhbnRUeXBl
X1N0cmluZykgewpAQCAtMzc1LDM0ICs0NTUsMzYgQEANCiAgICAgICAgIHZhcmlhbnQtPnZhbHVl
LnN0cmluZ1ZhbHVlLlVURjhDaGFyYWN0ZXJzID0gMDsKICAgICAgICAgdmFyaWFudC0+dmFsdWUu
c3RyaW5nVmFsdWUuVVRGOExlbmd0aCA9IDA7CiAgICAgfQotICAgIAorCiAgICAgdmFyaWFudC0+
dHlwZSA9IE5QVmFyaWFudFR5cGVfVm9pZDsKIH0KIAogCi1OUE9iamVjdCAqX05QTl9DcmVhdGVP
YmplY3QgKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcykKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBO
X0NyZWF0ZU9iamVjdCAoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKQogewogICAgIGFzc2VydCAo
YUNsYXNzKTsKIAogICAgIGlmIChhQ2xhc3MpIHsKICAgICAgICAgTlBPYmplY3QgKm9iajsKLSAg
ICAgICAgCisKICAgICAgICAgaWYgKGFDbGFzcy0+YWxsb2NhdGUgIT0gTlVMTCkKICAgICAgICAg
ICAgIG9iaiA9IGFDbGFzcy0+YWxsb2NhdGUgKG5wcCwgYUNsYXNzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgb2JqID0gKE5QT2JqZWN0ICopbWFsbG9jIChzaXplb2YoTlBPYmplY3QpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgIG9iai0+X2NsYXNzID0gYUNsYXNzOwogICAgICAgICBv
YmotPnJlZmVyZW5jZUNvdW50ID0gMTsKIAogICAgICAgICByZXR1cm4gb2JqOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiAwOwogfQogCiAKLU5QT2JqZWN0ICpfTlBOX1JldGFpbk9iamVjdCAo
TlBPYmplY3QgKm9iaikKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBOX1JldGFpbk9iamVjdCAoTlBP
YmplY3QgKm9iaikKIHsKICAgICBhc3NlcnQgKG9iaik7CiAKQEAgLTQxMywxNCArNDk1LDE1IEBA
DQogfQogCiAKLXZvaWQgX05QTl9SZWxlYXNlT2JqZWN0IChOUE9iamVjdCAqb2JqKQorRVhQT1JU
X0MKK3ZvaWQgTlBOX1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpvYmopCiB7CiAgICAgYXNzZXJ0
IChvYmopOwogICAgIGFzc2VydCAob2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKTsKIAogICAgIGlm
IChvYmogJiYgb2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKSB7CiAgICAgICAgIG9iai0+cmVmZXJl
bmNlQ291bnQtLTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5yZWZlcmVu
Y2VDb3VudCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUp
CiAgICAgICAgICAgICAgICAgb2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUgKG9iaik7CkBAIC00MzAs
MTIgKzUxMywxMyBAQA0KICAgICB9CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb25XaXRoVVRG
OCAoTlBPYmplY3QgKm9iaiwgY29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkK
K0VYUE9SVF9DCit2b2lkIE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOCAoTlBPYmplY3QgKm9iaiwg
Y29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkKIHsKICAgICBhc3NlcnQgKG9i
aik7CiAgICAgYXNzZXJ0IChtZXNzYWdlKTsKLSAKKwogICAgIGlmIChvYmogJiYgbWVzc2FnZSkg
ewotICAgICAgICBfTlBOX1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKKyAgICAgICAgTlBO
X1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKICAgICB9CiB9CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL25wcnVudGltZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTczLDYgKzczLDcgQEAN
CiAjZW5kaWYKIAogI2luY2x1ZGUgIm5wYXBpLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
c3RkaW50Lmg+CiAKIC8qCiAgICAgVGhpcyBBUEkgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGJpbmRp
bmcgY29kZSB3cml0dGVuIGluIEMgdG8gc2NyaXB0CkBAIC0xNTEsNiArMTUyLDcgQEANCiAgICAg
QWZ0ZXIgY2FsbGluZyBOUFJlbGVhc2VWYXJpYW50VmFsdWUsIHRoZSB0eXBlIG9mIHRoZSB2YXJp
YW50IHdpbGwKICAgICBiZSBzZXQgdG8gTlBWYXJpYW50VW5kZWZpbmVkVHlwZS4KICovCitJTVBP
UlRfQwogdm9pZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KTsK
IAogI2RlZmluZSBOUFZBUklBTlRfSVNfVk9JRChfdikgICAgKChfdikudHlwZSA9PSBOUFZhcmlh
bnRUeXBlX1ZvaWQpCkBAIC0yMTIsMjAgKzIxNCwyNiBAQA0KICAgICBjb21wYXJlZCB1c2luZyA9
PS4gIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhlIHJlcXVlc3RlZAogICAgIE5QSWRlbnRpZmll
cihzKSB3aWxsIGJlIE5VTEwuCiAqLworSU1QT1JUX0MKIE5QSWRlbnRpZmllciBOUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpOworSU1QT1JUX0MKIHZvaWQgTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3Vu
dCwgTlBJZGVudGlmaWVyICppZGVudGlmaWVycyk7CitJTVBPUlRfQwogTlBJZGVudGlmaWVyIE5Q
Tl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0lk
ZW50aWZpZXJJc1N0cmluZyhOUElkZW50aWZpZXIgaWRlbnRpZmllcik7CiAKIC8qCiAgICAgVGhl
IE5QVVRGOCByZXR1cm5lZCBmcm9tIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgU0hPVUxEIGJlIGZy
ZWVkLgogKi8KK0lNUE9SVF9DCiBOUFVURjggKk5QTl9VVEY4RnJvbUlkZW50aWZpZXIoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpOwogCiAvKgogICAgIEdldCB0aGUgaW50ZWdlciByZXByZXNlbnRl
ZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlzIG5vdCBhbgogICAgIGludGVnZXIgaWRl
bnRpZmllciwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCiAqLworSU1QT1JUX0MKIGludDMy
X3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKIAogLyoK
QEAgLTI5MSwxMSArMjk5LDEzIEBADQogICAgIGZ1bmN0aW9uIGl0IGlzIHRoZSByZXNwb25zaWJp
bGl0eSBvZiB0aGF0IGltcGxlbWVudGF0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCByZXRhaW4KICAg
ICBjb3VudCB0byAxLgogKi8KK0lNUE9SVF9DCiBOUE9iamVjdCAqTlBOX0NyZWF0ZU9iamVjdChO
UFAgbnBwLCBOUENsYXNzICphQ2xhc3MpOwogCiAvKgogICAgIEluY3JlbWVudCB0aGUgTlBPYmpl
Y3QncyByZWZlcmVuY2UgY291bnQuCiAqLworSU1QT1JUX0MKIE5QT2JqZWN0ICpOUE5fUmV0YWlu
T2JqZWN0IChOUE9iamVjdCAqb2JqKTsKIAogLyoKQEAgLTMwMyw2ICszMTMsNyBAQA0KICAgICBj
b3VudCBnb2VzIHRvIHplcm8sIHRoZSBjbGFzcydzIGRlc3Ryb3kgZnVuY3Rpb24gaXMgaW52b2tl
IGlmCiAgICAgc3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIG9iamVjdCBpcyBmcmVlZCBkaXJlY3Rs
eS4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fUmVsZWFzZU9iamVjdCAoTlBPYmplY3QgKm9iaik7
CiAKIC8qCkBAIC0zMTYsMTkgKzMyNywyOCBAQA0KICAgICBDYWxscyBtYWRlIGZyb20gcGx1Z2lu
IGNvZGUgdG8gc2NyaXB0IG11c3QgYmUgbWFkZSBmcm9tIHRoZSB0aHJlYWQKICAgICBvbiB3aGlj
aCB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZC4KICovCitJTVBPUlRfQwogYm9vbCBOUE5fSW52
b2tlKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNv
bnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0
KTsKK0lNUE9SVF9DCiBib29sIE5QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpu
cG9iaiwgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50
ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0V2YWx1YXRlKE5QUCBucHAsIE5QT2JqZWN0
ICpucG9iaiwgTlBTdHJpbmcgKnNjcmlwdCwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MK
IGJvb2wgTlBOX0dldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBO
X1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSwgY29uc3QgTlBWYXJpYW50ICp2YWx1ZSk7CitJTVBPUlRfQwogYm9vbCBOUE5fUmVt
b3ZlUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKTsKK0lNUE9SVF9DCiBib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVj
dCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOworSU1QT1JUX0MKIGJvb2wgTlBO
X0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKTsKIAogLyoKICAgICBOUE5fU2V0RXhjZXB0aW9uIG1heSBiZSBjYWxsZWQgdG8gdHJpZ2dl
ciBhIHNjcmlwdCBleGNlcHRpb24gdXBvbiByZXR1cm4KICAgICBmcm9tIGVudHJ5IHBvaW50cyBp
bnRvIE5QT2JqZWN0cy4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fU2V0RXhjZXB0aW9uIChOUE9i
amVjdCAqb2JqLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDE4OCBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQ0K
Ky8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICogIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUEFTU19SRUZfUFRSX0gNCisj
ZGVmaW5lIEtYTUxDT1JFX1BBU1NfUkVGX1BUUl9IDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFBh
c3NSZWZQdHI8VD4gYWRvcHRSZWYoVCAqcCk7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IA0KKyAgICBjbGFzcyBQYXNzUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAg
UGFzc1JlZlB0cigpIDogbV9wdHIoMCkge30NCisgICAgICAgIFBhc3NSZWZQdHIoVCAqcHRyKSA6
IG1fcHRyKHB0cikgeyBpZiAocHRyKSBwdHItPnJlZigpOyB9DQorICAgICAgICAvLyBJdCBzb21l
d2hhdCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFsbG93IHRyYW5zZmVyIG9mIG93bmVyc2hp
cCBvdXQgb2YNCisgICAgICAgIC8vIGEgY29uc3QgUGFzc1JlZlB0ci4gSG93ZXZlciwgaXQgbWFr
ZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NSZWZQdHINCisgICAgICAgIC8vIHRl
bXBvcmFyaWVzLCBhbmQgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYSBuZWVkIHRvIHVzZSByZWFsIGNv
bnN0IFBhc3NSZWZQdHJzIA0KKyAgICAgICAgLy8gYW55d2F5Lg0KKyAgICAgICAgUGFzc1JlZlB0
cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZSgpKSB7fQ0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykg
OiBtX3B0cihvLnJlbGVhc2UoKSkgeyB9DQorDQorICAgICAgICB+UGFzc1JlZlB0cigpIHsgaWYg
KFQgKnB0ciA9IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFU+IA0KKyAgICAgICAgUGFzc1JlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8p
IDogbV9wdHIoby5nZXQoKSkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisg
ICAgICAgIA0KKyAgICAgICAgVCAqZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisNCisg
ICAgICAgIFQgKnJlbGVhc2UoKSBjb25zdCB7IFQgKnRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7IHJl
dHVybiB0bXA7IH0NCisNCisgICAgICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpt
X3B0cjsgfQ0KKyAgICAgICAgVCAqb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9
DQorICAgICAgICANCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
cHRyOyB9DQorDQorICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGlt
cGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMu
DQorICAgICAgICB0eXBlZGVmIFQqIChQYXNzUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSko
KSBjb25zdDsNCisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3B0ciA/ICZQYXNzUmVmUHRyOjpnZXQgOiAwOyB9DQorICAgICAgICANCisgICAg
ICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShUICopOw0KKyAgICAgICAgUGFzc1JlZlB0ciYgb3Bl
cmF0b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8
VT4mKTsNCisNCisgICAgICAgIGZyaWVuZCBQYXNzUmVmUHRyIGFkb3B0UmVmPFQ+KFQgKik7DQor
ICAgIHByaXZhdGU6DQorICAgICAgICAvLyBhZG9wdGluZyBjb25zdHJ1Y3Rvcg0KKyAgICAgICAg
UGFzc1JlZlB0cihUICpwdHIsIGJvb2wpIDogbV9wdHIocHRyKSB7fQ0KKyAgICAgICAgbXV0YWJs
ZSBUICptX3B0cjsNCisgICAgfTsNCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46
Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mIG8pIA0KKyAgICB7DQorICAgICAgICBUKiBvcHRy
ID0gby5nZXQoKTsNCisgICAgICAgIGlmIChvcHRyKQ0KKyAgICAgICAgICAgIG9wdHItPnJlZigp
Ow0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG9wdHI7DQorICAg
ICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJldHVy
biAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikNCisgICAg
ew0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQorICAgICAg
ICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAgIGlmIChw
dHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0K
KyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxU
PiYgUGFzc1JlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIHJlZikNCisg
ICAgew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxl
YXNlKCk7DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisg
ICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiYgUGFzc1Jl
ZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHJlZikNCisgICAgew0KKyAg
ICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxlYXNlKCk7DQor
ICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJl
dHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwg
Y29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQo
KSA9PSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBj
b25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0g
Yi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNz
UmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0
KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpIA0KKyAg
ICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgDQorICAgIH0NCisgICAgDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
YSA9PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYg
YSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBh
LCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQ
YXNzUmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGIu
Z2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQq
IGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUICpwKQ0KKyAgICB7DQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxUPihwLCB0cnVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJf
Y2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihzdGF0aWNfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiBj
b25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgDQorICAgIHsgDQorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoY29uc3RfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAg
ICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpQYXNzUmVmUHRyOw0K
K3VzaW5nIFdURjo6YWRvcHRSZWY7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0K
K3VzaW5nIFdURjo6Y29uc3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9Q
QVNTX1JFRl9QVFJfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1JlZlB0ci5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9u
IDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9uIDApDQpA
QCAtMCwwICsxLDE4NSBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQ0KKy8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUkVGX1BUUl9IDQorI2Rl
ZmluZSBLWE1MQ09SRV9SRUZfUFRSX0gNCisNCisjaW5jbHVkZSA8YWxnb3JpdGhtPg0KKyNpbmNs
dWRlIDxQYXNzUmVmUHRyLmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAgUmVmUHRy
KCkgOiBtX3B0cigwKSB7fQ0KKyAgICAgICAgUmVmUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsg
aWYgKHB0cikgcHRyLT5yZWYoKTsgfQ0KKyAgICAgICAgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5yZWYoKTsgfQ0KKyAg
ICAgICAgLy8gc2VlIGNvbW1lbnQgaW4gUGFzc1JlZlB0ci5oIGZvciB3aHkgdGhpcyB0YWtlcyBj
b25zdCByZWZlcmVuY2UNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29u
c3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAgICAgflJlZlB0cigpIHsgaWYgKFQgKnB0ciA9
IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyBp
ZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgVCAq
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisgICAgICAgIA0KKyAgICAgICAgUGFzc1Jl
ZlB0cjxUPiByZWxlYXNlKCkgeyBQYXNzUmVmUHRyPFQ+IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsg
bV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9DQorDQorICAgICAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqbV9wdHI7IH0NCisgICAgICAgIFQgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQ0KKyAgICAgICAgDQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3B0cjsgfQ0KKyAgICANCisgICAgICAgIC8vIFRoaXMgY29udmVyc2lvbiBv
cGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3Ro
ZXIgaW50ZWdlciB0eXBlcy4NCisgICAgICAgIHR5cGVkZWYgVCAqIChSZWZQdHI6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKSgpIGNvbnN0Ow0KKyAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6Z2V0IDogMDsgfQ0KKyAgICAg
ICAgDQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsNCisgICAgICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFQgKik7DQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFQ+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAg
ICAgdm9pZCBzd2FwKFJlZlB0ciYpOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVCAqbV9w
dHI7DQorICAgIH07DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+
JiBvKQ0KKyAgICAgICAgOiBtX3B0cihvLnJlbGVhc2UoKSkNCisgICAgew0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9w
ZXJhdG9yPShjb25zdCBSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIG9wdHIgPSBv
LmdldCgpOw0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQor
ICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAg
IGlmIChwdHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0
aGlzOw0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxVPiYgbykNCisgICAgew0KKyAgICAgICAgVCogb3B0ciA9IG8uZ2V0KCk7DQorICAg
ICAgICBpZiAob3B0cikNCisgICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0
ciA9IG1fcHRyOw0KKyAgICAgICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisg
ICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0N
CisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQ0KKyAgICB7DQorICAgICAgICBpZiAob3B0cikNCisg
ICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAgICAg
ICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRl
cmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFBhc3NSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAg
ICAgICAgbV9wdHIgPSBvLnJlbGVhc2UoKTsNCisgICAgICAgIGlmIChwdHIpDQorICAgICAgICAg
ICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0
cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYgbykNCisgICAg
ew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgp
Ow0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAg
ICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIHN0
ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGlubGluZSB2b2lkIHN3YXAoUmVmUHRyPFQ+JiBhLCBSZWZQdHI8VD4mIGIpDQorICAgIHsN
CisgICAgICAgIGEuc3dhcChiKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEs
IGNvbnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09
IGIuZ2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYgYSwgVSogYikNCisg
ICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IA0KKyAgICB9DQorICAgIA0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25z
dCBSZWZQdHI8VT4mIGIpDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdl
dCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpDQorICAgIHsN
CisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IA0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIFJlZlB0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFJlZlB0cjxVPiYgcCkN
CisgICAgeyANCisgICAgICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgUmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHAp
DQorICAgIHsgDQorICAgICAgICByZXR1cm4gUmVmUHRyPFQ+KGNvbnN0X2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpS
ZWZQdHI7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0KK3VzaW5nIFdURjo6Y29u
c3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9SRUZfUFRSX0gNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI2
LDExICsyNiwxMSBAQA0KICNpbmNsdWRlIDxpbnRlcnByZXRlci5oPgogCiAjaW5jbHVkZSA8cnVu
dGltZV9vYmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KLSNpbmNsdWRlIDxvYmpj
X2luc3RhbmNlLmg+CisvLyNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KKy8vI2luY2x1ZGUgPG9i
amNfaW5zdGFuY2UuaD4KICNpbmNsdWRlIDxjX2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8TlBfanNv
YmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPGpuaV9qc29i
amVjdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIEtKUzo6Qmlu
ZGluZ3M7CkBAIC05OSwzMyArOTksMzUgQEANCiAgICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFu
Y2UgKGV4ZWMsIHRoaXMsIGFWYWx1ZSk7CiB9CiAKK0VYUE9SVF9DCiBJbnN0YW5jZSAqSW5zdGFu
Y2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChCaW5kaW5nTGFuZ3VhZ2UgbGFu
Z3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0ICpleGVjdXRpb25D
b250ZXh0KQogewogICAgIEluc3RhbmNlICpuZXdJbnN0YW5jZSA9IDA7CiAgICAgCiAgICAgc3dp
dGNoIChsYW5ndWFnZSkgewotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICBu
ZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJ
bnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4dCk7Ci0JICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3Rh
bmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGlu
Z3M6Ok9iamNJbnN0YW5jZSAoKHN0cnVjdCBvYmpjX29iamVjdCAqKW5hdGl2ZUluc3RhbmNlKTsK
LQkgICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogewotCSAgICBuZXdJ
bnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6Q0luc3RhbmNlICgoTlBPYmplY3QgKiluYXRpdmVJbnN0
YW5jZSk7Ci0JICAgIGJyZWFrOwotCX0KLQlkZWZhdWx0OgotCSAgICBicmVhazsKKyAgICBjYXNl
IEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBC
aW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEluc3RhbmNlOjpPYmpl
Y3RpdmVDTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6
T2JqY0luc3RhbmNlICgoc3RydWN0IG9iamNfb2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAg
ICAgIG5ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpDSW5zdGFuY2UgKChOUE9iamVjdCAqKW5h
dGl2ZUluc3RhbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGlmIChuZXdJbnN0YW5jZSkKLQluZXdJbnN0YW5jZS0+
c2V0RXhlY3V0aW9uQ29udGV4dCAoZXhlY3V0aW9uQ29udGV4dCk7Ci0JCisgICAgbmV3SW5zdGFu
Y2UtPnNldEV4ZWN1dGlvbkNvbnRleHQgKGV4ZWN1dGlvbkNvbnRleHQpOworICAgIAogICAgIHJl
dHVybiBuZXdJbnN0YW5jZTsKIH0KIAorRVhQT1JUX0MKIE9iamVjdCBJbnN0YW5jZTo6Y3JlYXRl
UnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0
YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBJbnN0YW5j
ZSAqaW50ZXJmYWNlT2JqZWN0ID0gSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUlu
c3RhbmNlIChsYW5ndWFnZSwgKHZvaWQgKiluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4
dCk7CkBAIC0xMzQsMzIgKzEzNiwzMyBAQA0KICAgICByZXR1cm4gT2JqZWN0KG5ldyBSdW50aW1l
T2JqZWN0SW1wKGludGVyZmFjZU9iamVjdCx0cnVlKSk7CiB9CiAKK0VYUE9SVF9DCiB2b2lkICpJ
bnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChFeGVjU3RhdGUgKmV4ZWMs
IEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgUm9v
dE9iamVjdCAqb3JpZ2luLCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KQogewogICAgIHZvaWQg
KnJlc3VsdCA9IDA7CiAgICAgCiAgICAgaWYgKHZhbHVlLnR5cGUoKSAhPSBPYmplY3RUeXBlKQot
CXJldHVybiAwOworICAgIHJldHVybiAwOwogCiAgICAgT2JqZWN0SW1wICppbXAgPSBzdGF0aWNf
Y2FzdDxPYmplY3RJbXAqPih2YWx1ZS5pbXAoKSk7CiAgICAgCiAgICAgc3dpdGNoIChsYW5ndWFn
ZSkgewotCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewotCSAgICByZXN1bHQg
PSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAodmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Ci0J
ICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3RhbmNlOjpDTGFuZ3VhZ2U6IHsKLQkgICAgcmVzdWx0
ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKDAsIGltcCwgb3JpZ2luLCBjdXJyZW50KTsKLQkg
ICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICAvLyBG
SVhNRTogIGZhY3RvciBjcmVhdGlvbiBvZiBqbmlfanNvYmplY3RzLCBhbHNvIHJlbW92ZSB1bm5l
Y2Vzc2FyeSB0aHJlYWQKLQkgICAgLy8gaW52b2NhdGlvbiBjb2RlLgotCSAgICBicmVhazsKLQl9
Ci0JZGVmYXVsdDoKLQkgICAgYnJlYWs7CisgICAgY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xh
bmd1YWdlOiB7CisgICAgICAgIC8vcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFsdWUg
KHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOworICAgICAgICBicmVhazsKICAgICB9CisgICAgY2Fz
ZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAgICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2Ny
aXB0T2JqZWN0ICgwLCBpbXAsIG9yaWdpbiwgY3VycmVudCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy8gRklYTUU6
ICBmYWN0b3IgY3JlYXRpb24gb2Ygam5pX2pzb2JqZWN0cywgYWxzbyByZW1vdmUgdW5uZWNlc3Nh
cnkgdGhyZWFkCisgICAgICAgIC8vIGludm9jYXRpb24gY29kZS4KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2luY2x1ZGUgImxpc3QuaCIKICNpbmNsdWRlICJv
YmplY3QuaCIKICNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImhhc2htYXAuaCIKIAogbmFt
ZXNwYWNlIEtKUyAKIHsKQEAgLTEzNiw5ICsxMzcsOSBAQA0KICAgICBzdGF0aWMgdm9pZCBzZXRE
aWRFeGVjdXRlRnVuY3Rpb24gKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKICAgICBz
dGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbiAoKTsKICAg
ICAKLSAgICBzdGF0aWMgSW5zdGFuY2UgKmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNl
IChCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBS
b290T2JqZWN0ICpyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFu
Y2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNv
bnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgUm9vdE9i
amVjdCAqY3VycmVudCk7Ci0gICAgc3RhdGljIE9iamVjdCBjcmVhdGVSdW50aW1lT2JqZWN0IChC
aW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290
T2JqZWN0ICpyID0gMCk7CisgICAgSU1QT1JUX0Mgc3RhdGljIEluc3RhbmNlICpjcmVhdGVCaW5k
aW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpu
YXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOworICAgIElNUE9SVF9DIHN0
YXRpYyB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhl
YywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBjb25zdCBPYmplY3QgJnZhbHVlLCBjb25zdCBS
b290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QgKmN1cnJlbnQpOworICAgIElNUE9S
VF9DIHN0YXRpYyBPYmplY3QgY3JlYXRlUnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxh
bmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOwog
CiAgICAgSW5zdGFuY2UgKCkgOiBfZXhlY3V0aW9uQ29udGV4dCgwKSB7fTsKICAgICAKQEAgLTE4
Nyw2ICsxODgsOSBAQA0KIAogY29uc3QgY2hhciAqc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25z
dCBLSlM6Okxpc3QgJmFMaXN0KTsKIAordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpS
ZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOwordHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVU3RyaW5nOjpSZXA+LCBGaWVsZCo+IEZpZWxkTWFwOwogfSAvLyBuYW1lc3BhY2UgQmluZGlu
Z3MKIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9y
dW50aW1lX29iamVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0LDcgKzU0
LDcgQEANCiAgICAgfQogfQogCi1SdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKEJp
bmRpbmdzOjpJbnN0YW5jZSAqaSwgYm9vbCBvaSkgOiBPYmplY3RJbXAgKChPYmplY3RJbXAgKikw
KQorRVhQT1JUX0MgUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChCaW5kaW5nczo6
SW5zdGFuY2UgKmksIGJvb2wgb2kpIDogT2JqZWN0SW1wICgoT2JqZWN0SW1wICopMCkKIHsKICAg
ICBvd25zSW5zdGFuY2UgPSBvaTsKICAgICBpbnN0YW5jZSA9IGk7CkBAIC04Myw3ICs4Myw3IEBA
DQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdCAobmV3IFJ1bnRpbWVNZXRob2RJbXAo
ZXhlYywgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQkKKyAgICAKICAgICAgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkg
ewogICAgICAgICAgICAgLy8gVHJ5IGEgZmFsbGJhY2sgb2JqZWN0LgogICAgICAgICAgICAgcmVz
dWx0ID0gYUNsYXNzLT5mYWxsYmFja09iamVjdCAoZXhlYywgaW5zdGFuY2UsIHByb3BlcnR5TmFt
ZSk7CkBAIC0xMDcsMTAgKzEwNywxMCBAQA0KICAgICAgICAgZ2V0SW50ZXJuYWxJbnN0YW5jZSgp
LT5zZXRWYWx1ZU9mRmllbGQoZXhlYywgYUZpZWxkLCB2YWx1ZSk7CiAgICAgfQogICAgIGVsc2Ug
ewotCWlmIChnZXRJbnRlcm5hbEluc3RhbmNlKCktPnN1cHBvcnRzU2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKCkpewotCSAgICBnZXRJbnRlcm5hbEluc3RhbmNlKCktPnNldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLQl9CisgICAgaWYgKGdldEludGVy
bmFsSW5zdGFuY2UoKS0+c3VwcG9ydHNTZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoKSl7CisgICAg
ICAgIGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0KKyAgICB9CiAKICAgICBpbnN0YW5jZS0+ZW5k
KCk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEANCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogCiAgICAg
aWYgKGFGaWVsZCkKLQlyZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9v
YmplY3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVf
b2JqZWN0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1
bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNyw3ICszNyw3IEBADQogICAgIAog
ICAgIH5SdW50aW1lT2JqZWN0SW1wKCk7CiAgICAgCi0gICAgUnVudGltZU9iamVjdEltcChCaW5k
aW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3RhbmNlID0gdHJ1ZSk7CisgICAgSU1QT1JU
X0MgUnVudGltZU9iamVjdEltcChCaW5kaW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3Rh
bmNlID0gdHJ1ZSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8gKmNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CiAKQEAgLTQ5LDcgKzQ5LDcgQEANCiAgICAgdmlydHVhbCBib29sIGNh
blB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLAot
CQkJICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC0yMCw5ICsyMCw5IEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1ZGUgPGpuaV9q
c29iamVjdC5oPgorLy8jaW5jbHVkZSA8am5pX2pzb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZV9yb290Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CkBAIC00Miw2ICs0Miw3IEBADQogLy8g
MSBPUiB0aGUgYXBwbGV0IGlzIHNodXRkb3duIHdlIGRlcmVmIHRoZSBKYXZhU2NyaXB0IGluc3Rh
bmNlLiAgQXBwbGV0IGluc3RhbmNlcwogLy8gYXJlIHJlcHJlc2VudGVkIGJ5IGEgamxvbmcuCiAK
Ky8qCiBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzQnlSb290RGljdGlv
bmFyeSA9IDA7CiAKIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGdldFJlZmVyZW5jZXNC
eVJvb3REaWN0aW9uYXJ5KCkKQEAgLTU1LDcgKzU2LDcgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkoKTsK
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gMDsKLSAg
ICAKKwogICAgIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKHJlZnNCeVJvb3QsIChjb25zdCB2b2lkICopcm9vdCk7CiAg
ICAgaWYgKCFyZWZlcmVuY2VzRGljdGlvbmFyeSkgewogICAgICAgICByZWZlcmVuY2VzRGljdGlv
bmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwgTlVMTCk7CkBA
IC02NSw3ICs2Niw3IEBADQogICAgIHJldHVybiByZWZlcmVuY2VzRGljdGlvbmFyeTsKIH0KIAot
Ly8gU2NhbiBhbGwgdGhlIGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9vdHMgdG8gc2VlIGlmIGFu
eSBoYXZlIGEgCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFyeSBmb3IgYWxsIHRoZSByb290cyB0
byBzZWUgaWYgYW55IGhhdmUgYQogLy8gcmVmZXJlbmNlIHRvIHRoZSBpbXAsIGFuZCBpZiBzbywg
cmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CiAvLyBkaWN0aW9uYXJ5LgogLy8gRklYTUU6ICBU
aGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxl
dHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKQEAgLTc0LDExICs3NSwxMSBAQA0KIHsKICAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290
RGljdGlvbmFyeSAoKTsKICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZvdW5kRGljdGlvbmFy
eSA9IDA7Ci0gICAgCisKICAgICBpZiAocmVmc0J5Um9vdCkgewogICAgICAgICBjb25zdCB2b2lk
ICoqYWxsVmFsdWVzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisK
ICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAg
ICAgYWxsVmFsdWVzID0gKGNvbnN0IHZvaWQgKiopbWFsbG9jIChzaXplb2Yodm9pZCAqKSAqIGNv
dW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyAocmVmc0J5Um9vdCwg
TlVMTCwgYWxsVmFsdWVzKTsKQEAgLTg5LDcgKzkwLDcgQEANCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAo
KHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KICAgICByZXR1cm4gZm91bmREaWN0aW9uYXJ5OwpA
QCAtMTAxLDEyICsxMDIsMTIgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZz
QnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgKCk7CiAgICAgY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKnJvb3RPYmplY3QgPSAwOwotICAgIAorCiAgICAgaWYgKHJlZnNC
eVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFsbFZhbHVlcyA9IDA7CiAgICAgICAgIGNv
bnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAg
ICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsK
ICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikg
KiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6
ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xMTgsNyArMTE5LDcgQEANCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMp
OwogICAgIH0KQEAgLTEyOSwxMiArMTMwLDEyIEBADQogewogICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3REaWN0aW9uYXJ5ICgpOwogICAg
IGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICphUm9vdE9iamVjdCA9IDAsICpyZXN1bHQgPSAw
OwotICAgIAorCiAgICAgaWYgKHJlZnNCeVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFs
bFZhbHVlcyA9IDA7CiAgICAgICAgIGNvbnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAg
Q0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25h
cnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoq
KW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChj
b25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xNDYsNyAr
MTQ3LDcgQEANCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KQEAgLTE1Nyw3ICsxNTgsNyBAQA0KIHsK
ICAgICBpZiAocm9vdCkgewogICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5j
ZXNEaWN0aW9uYXJ5ID0gZ2V0UmVmZXJlbmNlc0RpY3Rpb25hcnkgKHJvb3QpOwotICAgICAgICAK
KwogICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUmVmZXJlbmNlcyA9ICh1bnNpZ25lZCBpbnQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCBpbXApOwogICAgICAgICBp
ZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7CiAjaWYgIVVTRV9DT05TRVJWQVRJVkVfR0MKQEAgLTE2
Niw3ICsxNjcsNyBAQA0KICNpZiBVU0VfQ09OU0VSVkFUSVZFX0dDIHwgVEVTVF9DT05TRVJWQVRJ
VkVfR0MKICAgICAgICAgICAgIEludGVycHJldGVyTG9jayBsb2NrOwogICAgICAgICAgICAgZ2NQ
cm90ZWN0KGltcCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlIChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wLCAgKGNvbnN0IHZvaWQgKikxKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE3OCw4ICsxNzksOCBAQA0KIHZvaWQgS0pTOjpC
aW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJbXAgKmltcCkKIHsKICAgICBp
ZiAoIWltcCkKLQlyZXR1cm47Ci0JCisgICAgcmV0dXJuOworCiAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5IChp
bXApOwogCiAgICAgaWYgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5KSB7CkBAIC0xOTEsNyArMTkyLDcg
QEANCiAjaWYgVVNFX0NPTlNFUlZBVElWRV9HQyB8IFRFU1RfQ09OU0VSVkFUSVZFX0dDCiAgICAg
ICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgICAgIGdjVW5wcm90ZWN0KGlt
cCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVl
IChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsK
QEAgLTIyMywxMCArMjI0LDEwIEBADQogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUphdmFTY3JpcHRB
Y2Nlc3NMb2NrKCkKIHsKICAgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7Ci0gICAgCisKICAg
ICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZhdHRyKTsKICAgICBwdGhyZWFkX211dGV4YXR0cl9z
ZXR0eXBlICgmYXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUpOwotICAgIAorCiAgICAgcHRo
cmVhZF9tdXRleF9pbml0KCZqYXZhU2NyaXB0QWNjZXNzTG9jaywgJmF0dHIpOwogfQogCkBAIC0y
NjAsNyArMjYxLDcgQEANCiAgICAgLy8gY2FsbCBjb21wbGV0ZXMuCiAgICAgLy8KICAgICAvLyBG
SVhNRTogIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaXNzdWUuICBDcmVh
dGluZyBhbmQKLSAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNlcyBpcyBleHBlbnNpdmUuICBX
ZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZSAKKyAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNl
cyBpcyBleHBlbnNpdmUuICBXZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZQogICAgIC8vIHBlciB0
aHJlYWQsIGFzIG5lZWRlZCwgaW5zdGVhZC4KICAgICBjb250ZXh0LT5vcmlnaW5hdGluZ0xvb3Ag
PSBjdXJyZW50UnVuTG9vcDsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHNvdXJjZUNvbnRl
eHQgPSB7MCwgY29udGV4dCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgY29tcGxldGVkSmF2YVNjcmlwdEFjY2Vzc307CkBAIC0yNzIsNyArMjczLDcgQEANCiAgICAg
aWYgKENGUnVuTG9vcElzV2FpdGluZyhSb290T2JqZWN0OjpydW5Mb29wKCkpKSB7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChSb290T2JqZWN0OjpydW5Mb29wKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIC8vIFdhaXQgdW50aWwgdGhlIEphdmFTY3JpcHQgYWNjZXNzIHRocmVhZCBpcyBkb25lLgog
ICAgIENGUnVuTG9vcFJ1biAoKTsKIApAQCAtMjg2LDE1ICsyODcsMTUgQEANCiBzdGF0aWMgdm9p
ZCBwZXJmb3JtSmF2YVNjcmlwdEFjY2Vzcyh2b2lkICppKQogewogICAgIGFzc2VydCAoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpID09IFJvb3RPYmplY3Q6OnJ1bkxvb3AoKSk7Ci0gICAgCisKICAgICAv
LyBEaXNwYXRjaCBKYXZhU2NyaXB0IGNhbGxzIGhlcmUuCiAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBzb3VyY2VDb250ZXh0OwogICAgIENGUnVuTG9vcFNvdXJjZUdldENvbnRleHQgKGNvbXBs
ZXRpb25Tb3VyY2UsICZzb3VyY2VDb250ZXh0KTsKLSAgICBKU09iamVjdENhbGxDb250ZXh0ICpj
YWxsQ29udGV4dCA9IChKU09iamVjdENhbGxDb250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOyAg
ICAKKyAgICBKU09iamVjdENhbGxDb250ZXh0ICpjYWxsQ29udGV4dCA9IChKU09iamVjdENhbGxD
b250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOwogICAgIENGUnVuTG9vcFJlZiBvcmlnaW5hdGlu
Z0xvb3AgPSBjYWxsQ29udGV4dC0+b3JpZ2luYXRpbmdMb29wOwogCiAgICAgSlNPYmplY3Q6Omlu
dm9rZSAoY2FsbENvbnRleHQpOwotICAgIAorCiAgICAgLy8gU2lnbmFsIHRoZSBvcmlnaW5hdGlu
ZyB0aHJlYWQgdGhhdCB3ZSdyZSBkb25lLgogICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCAoY29t
cGxldGlvblNvdXJjZSk7CiAgICAgaWYgKENGUnVuTG9vcElzV2FpdGluZyhvcmlnaW5hdGluZ0xv
b3ApKSB7CkBAIC0zMTIsOCArMzEzLDggQEANCiAgICAgYXNzZXJ0IChfZmluZFJvb3RPYmplY3RG
b3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciA9PSAwKTsKIAogICAgIF9maW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyID0gYUZ1bmM7Ci0gICAgCi0gICAgLy8gQXNzdW1lIHRo
YXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJdCdsbCBtb3N0IAorCisg
ICAgLy8gQXNzdW1lIHRoYXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJ
dCdsbCBtb3N0CiAgICAgLy8gbGlrZWx5IChhbHdheXM/KSBiZSB0aGUgbWFpbiBsb29wLgogICAg
IF9ydW5Mb29wID0gKENGUnVuTG9vcFJlZilDRlJldGFpbiAoQ0ZSdW5Mb29wR2V0Q3VycmVudCAo
KSk7CiAKQEAgLTMyNCwxNSArMzI1LDE3IEBADQogICAgIENGUnVuTG9vcEFkZFNvdXJjZShCaW5k
aW5nczo6Um9vdE9iamVjdDo6X3J1bkxvb3AsIEJpbmRpbmdzOjpSb290T2JqZWN0OjpfcGVyZm9y
bUphdmFTY3JpcHRTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKKyovCiAvLyBN
dXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsZXQgaXMgc2h1dGRvd24uCitFWFBPUlRfQwogdm9p
ZCBSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpCiB7Ci0gICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGdldFJlZmVyZW5jZXNEaWN0
aW9uYXJ5ICh0aGlzKTsKLSAgICAKKy8qICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJl
bmNlc0RpY3Rpb25hcnkgPSBnZXRSZWZlcmVuY2VzRGljdGlvbmFyeSAodGhpcyk7CisKICAgICBp
ZiAocmVmZXJlbmNlc0RpY3Rpb25hcnkpIHsKICAgICAgICAgdm9pZCAqKmFsbEltcHMgPSAwOwog
ICAgICAgICBDRkluZGV4IGNvdW50LCBpOwotICAgICAgICAKKwogICAgICAgICBjb3VudCA9IENG
RGljdGlvbmFyeUdldENvdW50KHJlZmVyZW5jZXNEaWN0aW9uYXJ5KTsKICAgICAgICAgYWxsSW1w
cyA9ICh2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCAoY29uc3Qg
dm9pZCAqKilhbGxJbXBzLCBOVUxMKTsKQEAgLTM1NCwxMSArMzU3LDEyNyBAQA0KICAgICAgICAg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERp
Y3Rpb25hcnkoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUgKHJlZnNCeVJvb3Qs
IChjb25zdCB2b2lkICopdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0qLworfQor
CisKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCosIFJlZmVyZW5j
ZXNTZXQqPiBSZWZlcmVuY2VzQnlSb290TWFwOworCitzdGF0aWMgUmVmZXJlbmNlc0J5Um9vdE1h
cCogZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCgpCit7CisgICAgc3RhdGljIFJlZmVyZW5jZXNCeVJv
b3RNYXAqIHJlZmVyZW5jZXNCeVJvb3RNYXAgPSAwOworCisgICAgaWYgKCFyZWZlcmVuY2VzQnlS
b290TWFwKQorICAgICAgICByZWZlcmVuY2VzQnlSb290TWFwID0gbmV3IFJlZmVyZW5jZXNCeVJv
b3RNYXA7CisKKyAgICByZXR1cm4gcmVmZXJlbmNlc0J5Um9vdE1hcDsKK30KKworc3RhdGljIFJl
ZmVyZW5jZXNTZXQqIGdldFJlZmVyZW5jZXNTZXQoY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3QpCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdldFJlZmVy
ZW5jZXNCeVJvb3RNYXAoKTsKKyAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VzU2V0ID0gMDsK
KworICAgIHJlZmVyZW5jZXNTZXQgPSByZWZzQnlSb290LT5nZXQocm9vdCk7CisgICAgaWYgKCFy
ZWZlcmVuY2VzU2V0KSB7CisgICAgICAgIHJlZmVyZW5jZXNTZXQgID0gbmV3IFJlZmVyZW5jZXNT
ZXQ7CisgICAgICAgIHJlZnNCeVJvb3QtPmFkZChyb290LCByZWZlcmVuY2VzU2V0KTsKICAgICB9
CisgICAgcmV0dXJuIHJlZmVyZW5jZXNTZXQ7CiB9CiAKLXZvaWQgUm9vdE9iamVjdDo6c2V0SW50
ZXJwcmV0ZXIgKEtKUzo6SW50ZXJwcmV0ZXIgKmkpCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFy
eSBmb3IgYWxsIHRoZSByb290cyB0byBzZWUgaWYgYW55IGhhdmUgYQorLy8gcmVmZXJlbmNlIHRv
IHRoZSBpbXAsIGFuZCBpZiBzbywgcmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CisvLyBkaWN0
aW9uYXJ5LgorLy8gRklYTUU6ICBUaGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRs
ZW5lY2sgd2l0aCBtYW55IGFwcGxldHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGlt
cCB0byByb290IGRpY3Rpb25hcnkuCitSZWZlcmVuY2VzU2V0KiBLSlM6OkJpbmRpbmdzOjpmaW5k
UmVmZXJlbmNlU2V0KE9iamVjdEltcCAqaW1wKQogeworICAgIFJlZmVyZW5jZXNCeVJvb3RNYXAq
IHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290TWFwICgpOworICAgIGlmIChyZWZzQnlS
b290KSB7CisgICAgICAgIFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHJlZnNCeVJvb3QtPmVuZCgpOworICAgICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBSZWZlcmVuY2VzU2V0KiBzZXQgPSBpdC0+c2Vjb25kOworCisgICAgICAg
ICAgICBpZiAoc2V0LT5jb250YWlucyhpbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBzZXQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gRklYTUU6ICBUaGlz
IGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxldHMu
ICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGltcCB0byByb290IGRpY3Rpb25hcnkuCitj
b25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nczo6cm9vdEZvckltcCAoT2Jq
ZWN0SW1wICppbXApCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdl
dFJlZmVyZW5jZXNCeVJvb3RNYXAgKCk7CisgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3RPYmplY3QgPSAwOworCisgICAgaWYgKHJlZnNCeVJvb3QpIHsKKyAgICAgICAgUmVmZXJl
bmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVmc0J5Um9vdC0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoUmVmZXJlbmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWZz
QnlSb290LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlZmVyZW5j
ZXNTZXQqIHNldCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBpZiAoc2V0LT5jb250YWlucyhp
bXApKSB7CisgICAgICAgICAgICAgICAgcm9vdE9iamVjdCA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiByb290T2JqZWN0OworfQorCitjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpC
aW5kaW5nczo6cm9vdEZvckludGVycHJldGVyIChLSlM6OkludGVycHJldGVyICppbnRlcnByZXRl
cikKK3sKKyAgICBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNl
c0J5Um9vdE1hcCAoKTsKKworICAgIGlmIChyZWZzQnlSb290KSB7CisgICAgICAgIFJlZmVyZW5j
ZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlZnNCeVJvb3QtPmVuZCgpOworICAg
ICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5
Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjb25zdCBCaW5k
aW5nczo6Um9vdE9iamVjdCogYVJvb3RPYmplY3QgPSBpdC0+Zmlyc3Q7CisKKyAgICAgICAgICAg
IGlmIChhUm9vdE9iamVjdC0+aW50ZXJwcmV0ZXIoKSA9PSBpbnRlcnByZXRlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYVJvb3RPYmplY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVuY2UgKGNvbnN0
IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCkKK3sKKyAgICBpZiAo
cm9vdCkgeworICAgICAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VNYXAgPSBnZXRSZWZlcmVu
Y2VzU2V0IChyb290KTsKKworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlTWFwLT5jb3VudChpbXApOworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7Cisv
LyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NQcm90ZWN0KGltcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVmZXJlbmNlTWFwLT5hZGQoaW1wKTsKKyAgICB9Cit9CisKK0VY
UE9SVF9DIHZvaWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJ
bXAgKmltcCkKK3sKKyAgICBpZiAoIWltcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmZXJl
bmNlc1NldCAqcmVmZXJlbmNlc1NldCA9IGZpbmRSZWZlcmVuY2VTZXQoaW1wKTsKKyAgICBpZiAo
cmVmZXJlbmNlc1NldCkgeworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlc1NldC0+Y291bnQoaW1wKTsKKworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAxKSB7
CisvLyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NVbnByb3RlY3QoaW1w
KTsKKyAgICAgICAgfQorICAgICAgICByZWZlcmVuY2VzU2V0LT5yZW1vdmUoaW1wKTsKKyAgICB9
Cit9CisKK0VYUE9SVF9DIHZvaWQgUm9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIgKEtKUzo6SW50
ZXJwcmV0ZXIgKmkpCit7CiAgICAgX2ludGVycHJldGVyID0gaTsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Nyw4ICsyNyw5IEBADQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9vYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9qbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL2puaV9qc29i
amVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDxI
YXNoQ291bnRlZFNldC5oPgogCiBuYW1lc3BhY2UgS0pTIHsKIApAQCAtMzYsOSArMzcsMTEgQEAN
CiAKIGNsYXNzIFJvb3RPYmplY3Q7CiAKK3R5cGVkZWYgSGFzaENvdW50ZWRTZXQ8T2JqZWN0SW1w
Kj4gUmVmZXJlbmNlc1NldDsKIHR5cGVkZWYgUm9vdE9iamVjdCAqKCpGaW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyKSh2b2lkICopOwogCi1leHRlcm4gQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJbXAgKmltcCk7CisvL2V4
dGVybiBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5KE9iamVj
dEltcCAqaW1wKTsKK2V4dGVybiBSZWZlcmVuY2VzU2V0KiBmaW5kUmVmZXJlbmNlU2V0KE9iamVj
dEltcCAqaW1wKTsKIGV4dGVybiBjb25zdCBSb290T2JqZWN0ICpyb290Rm9ySW1wIChPYmplY3RJ
bXAgKmltcCk7CiBleHRlcm4gY29uc3QgUm9vdE9iamVjdCAqcm9vdEZvckludGVycHJldGVyIChJ
bnRlcnByZXRlciAqaW50ZXJwcmV0ZXIpOwogZXh0ZXJuIHZvaWQgYWRkTmF0aXZlUmVmZXJlbmNl
IChjb25zdCBSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCk7CkBAIC03NCwxMCArNzcs
MTAgQEANCiAgICAgCiAgICAgT2JqZWN0SW1wICpyb290T2JqZWN0SW1wKCkgY29uc3QgeyByZXR1
cm4gX2ltcDsgfQogICAgIAotICAgIHZvaWQgc2V0SW50ZXJwcmV0ZXIgKEludGVycHJldGVyICpp
KTsKKyAgICBJTVBPUlRfQyB2b2lkIHNldEludGVycHJldGVyIChJbnRlcnByZXRlciAqaSk7CiAg
ICAgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyKCkgY29uc3QgeyByZXR1cm4gX2ludGVycHJldGVy
OyB9CiAKLSAgICB2b2lkIHJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CisgICAgSU1QT1JU
X0Mgdm9pZCByZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpOwogCiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSB0aHJlYWQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWNjZXNzIEphdmFT
Y3JpcHQuCkBAIC04NiwxMSArODksMTEgQEANCiAgICAgICAgIHJldHVybiBfZmluZFJvb3RPYmpl
Y3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0cjsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENG
UnVuTG9vcFJlZiBydW5Mb29wKCkgeyByZXR1cm4gX3J1bkxvb3A7IH0KLSAgICBzdGF0aWMgQ0ZS
dW5Mb29wU291cmNlUmVmIHBlcmZvcm1KYXZhU2NyaXB0U291cmNlKCkgeyByZXR1cm4gX3BlcmZv
cm1KYXZhU2NyaXB0U291cmNlOyB9CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3Ao
KSB7IHJldHVybiBfcnVuTG9vcDsgfQorICAgIC8vc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBw
ZXJmb3JtSmF2YVNjcmlwdFNvdXJjZSgpIHsgcmV0dXJuIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJj
ZTsgfQorCisgICAgLy9zdGF0aWMgdm9pZCBkaXNwYXRjaFRvSmF2YVNjcmlwdFRocmVhZChKU09i
amVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRj
aFRvSmF2YVNjcmlwdFRocmVhZChKU09iamVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKLSAgICAK
ICAgICBjb25zdCB2b2lkICpuYXRpdmVIYW5kbGUoKSBjb25zdCB7IHJldHVybiBfbmF0aXZlSGFu
ZGxlOyB9CiAKIHByaXZhdGU6CkBAIC05OSw4ICsxMDIsOCBAQA0KICAgICBJbnRlcnByZXRlciAq
X2ludGVycHJldGVyOwogCiAgICAgc3RhdGljIEZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxl
RnVuY3Rpb25QdHIgX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25QdHI7Ci0g
ICAgc3RhdGljIENGUnVuTG9vcFJlZiBfcnVuTG9vcDsKLSAgICBzdGF0aWMgQ0ZSdW5Mb29wU291
cmNlUmVmIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJjZTsKKyAgICAvL3N0YXRpYyBDRlJ1bkxvb3BS
ZWYgX3J1bkxvb3A7CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIF9wZXJmb3JtSmF2
YVNjcmlwdFNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy91dGlsaXR5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvdXRpbGl0eQkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy91dGlsaXR5CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1NDkgQEANCisvLyBDb3B5cmln
aHQgKEMpIDIwMDEsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisv
LyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGli
cmFyeSBpcyBmcmVlDQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkgaXQgdW5kZXIgdGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIg
dmVyc2lvbi4NCisNCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs
b25nDQorLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisv
LyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBv
ZiBhIGZyZWUgc29mdHdhcmUNCisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVj
aWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVz
ZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBp
bGUNCisvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNl
IGFuIGV4ZWN1dGFibGUsIHRoaXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0
aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisv
LyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1p
Z2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQor
DQorLyoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBD
b21wYW55DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0
LVBhY2thcmQgQ29tcGFueSBtYWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUg
c3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlz
IHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQor
ICoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NiwxOTk3DQorICogU2lsaWNvbiBHcmFwaGlj
cyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRz
IGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQg
ZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFy
IGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3Vt
ZW50YXRpb24uICBTaWxpY29uIEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25z
IGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJw
b3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3
YXJyYW50eS4NCisgKi8NCisNCisvLyBoYWNrZWQgdG9nZXRoZXIgZnJvbSB2YXJpb3VzIHN0bCBw
YXJ0IHRvIG1ha2UgSlNDLCBXQyBjb21waWxlDQorDQorI2lmbmRlZiBfVVRJTElUWV9IDQorI2Rl
ZmluZSBfVVRJTElUWV9IIDENCisNCisjaW5jbHVkZSA8aXRlcmF0b3I+DQorDQorI2RlZmluZSBf
X2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoYSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9mdW5jdGlv
bl9yZXF1aXJlcyhhKQ0KKyNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlkX3JhbmdlKGEs
YikNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKGEsYikNCisNCituYW1lc3BhY2Ug
c3RkDQorew0KKyAgLy8vIHBhaXIgaG9sZHMgdHdvIG9iamVjdHMgb2YgYXJiaXRyYXJ5IHR5cGUu
DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgc3RydWN0IHBhaXINCisg
ICAgew0KKyAgICAgIHR5cGVkZWYgX1QxIGZpcnN0X3R5cGU7ICAgIC8vLzwgIEBjIGZpcnN0X3R5
cGUgaXMgdGhlIGZpcnN0IGJvdW5kIHR5cGUNCisgICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlw
ZTsgICAvLy88ICBAYyBzZWNvbmRfdHlwZSBpcyB0aGUgc2Vjb25kIGJvdW5kIHR5cGUNCisNCisg
ICAgICBfVDEgZmlyc3Q7ICAgICAgICAgICAgICAgICAvLy88IEBjIGZpcnN0IGlzIGEgY29weSBv
ZiB0aGUgZmlyc3Qgb2JqZWN0DQorICAgICAgX1QyIHNlY29uZDsgICAgICAgICAgICAgICAgLy8v
PCBAYyBzZWNvbmQgaXMgYSBjb3B5IG9mIHRoZSBzZWNvbmQgb2JqZWN0DQorDQorICAgICAgLy8g
X0dMSUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUw0KKyAgICAgIC8vIDI2NS4gIHN0ZDo6cGFpcjo6
cGFpcigpIGVmZmVjdHMgb3Zlcmx5IHJlc3RyaWN0aXZlDQorICAgICAgLyoqIFRoZSBkZWZhdWx0
IGNvbnN0cnVjdG9yIGNyZWF0ZXMgQGMgZmlyc3QgYW5kIEBjIHNlY29uZCB1c2luZyB0aGVpcg0K
KyAgICAgICAqICByZXNwZWN0aXZlIGRlZmF1bHQgY29uc3RydWN0b3JzLiAgKi8NCisgICAgICBw
YWlyKCkNCisgICAgICA6IGZpcnN0KCksIHNlY29uZCgpIHsgfQ0KKw0KKyAgICAgIC8qKiBUd28g
b2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGEgQGMgcGFpciBjb25zdHJ1Y3RvciB0byBiZSBjb3Bp
ZWQuICAqLw0KKyAgICAgIHBhaXIoY29uc3QgX1QxJiBfX2EsIGNvbnN0IF9UMiYgX19iKQ0KKyAg
ICAgIDogZmlyc3QoX19hKSwgc2Vjb25kKF9fYikgeyB9DQorDQorICAgICAgLyoqIFRoZXJlIGlz
IGFsc28gYSB0ZW1wbGF0ZWQgY29weSBjdG9yIGZvciB0aGUgQGMgcGFpciBjbGFzcyBpdHNlbGYu
ICAqLw0KKyAgICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyPg0KKyAgICAgICAgcGFp
cihjb25zdCBwYWlyPF9VMSwgX1UyPiYgX19wKQ0KKwk6IGZpcnN0KF9fcC5maXJzdCksIHNlY29u
ZChfX3Auc2Vjb25kKSB7IH0NCisgICAgfTsNCisNCisgIC8vLyBUd28gcGFpcnMgb2YgdGhlIHNh
bWUgdHlwZSBhcmUgZXF1YWwgaWZmIHRoZWlyIG1lbWJlcnMgYXJlIGVxdWFsLg0KKyAgdGVtcGxh
dGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQorICAgIGlubGluZSBib29sDQorICAgIG9wZXJhdG9y
PT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkN
CisgICAgeyByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9f
eS5zZWNvbmQ7IH0NCisNCisgIC8vLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli
c3RkYysrLzIwX3V0aWwvaG93dG8uaHRtbCNwYWlybHQ+DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEs
IGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wNCisgICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
IF9feC5maXJzdCA8IF9feS5maXJzdA0KKwkgICAgIHx8ICghKF9feS5maXJzdCA8IF9feC5maXJz
dCkgJiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyB9DQorDQorICAvLy8gVXNlcyBAYyBvcGVy
YXRvcj09IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3Mg
X1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1QxLCBf
VDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194
ID09IF9feSk7IH0NCisNCisgIC8vLyBVc2VzIEBjIG9wZXJhdG9yPCB0byBmaW5kIHRoZSByZXN1
bHQuDQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wN
CisgICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1Qx
LCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuIF9feSA8IF9feDsgfQ0KKw0KKyAgLy8vIFVzZXMg
QGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvcjw9KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
ICEoX195IDwgX194KTsgfQ0KKw0KKyAgLy8vIFVzZXMgQGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhl
IHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUg
Ym9vbA0KKyAgICBvcGVyYXRvcj49KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBh
aXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQ0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIEEgY29udmVuaWVuY2Ugd3JhcHBlciBmb3IgY3JlYXRpbmcgYSBw
YWlyIGZyb20gdHdvIG9iamVjdHMuDQorICAgKiAgQHBhcmFtICB4ICBUaGUgZmlyc3Qgb2JqZWN0
Lg0KKyAgICogIEBwYXJhbSAgeSAgVGhlIHNlY29uZCBvYmplY3QuDQorICAgKiAgQHJldHVybiAg
IEEgbmV3bHktY29uc3RydWN0ZWQgcGFpcjw+IG9iamVjdCBvZiB0aGUgYXBwcm9wcmlhdGUgdHlw
ZS4NCisgICAqDQorICAgKiAgVGhlIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgdGhlIG9iamVjdHMg
YmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS10by1jb25zdCwNCisgICAqICBidXQgTFdHIGlzc3VlICMx
ODEgc2F5cyB0aGV5IHNob3VsZCBiZSBwYXNzZWQgYnkgY29uc3QgdmFsdWUuICBXZSBmb2xsb3cN
CisgICAqICB0aGUgTFdHIGJ5IGRlZmF1bHQuDQorICAgKi8NCisgIC8vIF9HTElCQ1hYX1JFU09M
VkVfTElCX0RFRkVDVFMNCisgIC8vIDE4MS4gIG1ha2VfcGFpcigpIHVuaW50ZW5kZWQgYmVoYXZp
b3INCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgcGFpcjxf
VDEsIF9UMj4NCisgICAgbWFrZV9wYWlyKF9UMSBfX3gsIF9UMiBfX3kpDQorICAgIHsgcmV0dXJu
IHBhaXI8X1QxLCBfVDI+KF9feCwgX195KTsgfQ0KKw0KKw0KKw0KKyAgLy8gaXNfaGVhcCwgYSBw
cmVkaWNhdGUgdGVzdGluZyB3aGV0aGVyIG9yIG5vdCBhIHJhbmdlIGlzDQorICAvLyBhIGhlYXAu
ICBUaGlzIGZ1bmN0aW9uIGlzIGFuIGV4dGVuc2lvbiwgbm90IHBhcnQgb2YgdGhlIEMrKw0KKyAg
Ly8gc3RhbmRhcmQuDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9EaXN0YW5jZT4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX24pDQorICAgIHsNCisgICAgICBfRGlz
dGFuY2UgX19wYXJlbnQgPSAwOw0KKyAgICAgIGZvciAoX0Rpc3RhbmNlIF9fY2hpbGQgPSAxOyBf
X2NoaWxkIDwgX19uOyArK19fY2hpbGQpDQorCXsNCisJICBpZiAoX19maXJzdFtfX3BhcmVudF0g
PCBfX2ZpcnN0W19fY2hpbGRdKQ0KKwkgICAgcmV0dXJuIGZhbHNlOw0KKwkgIGlmICgoX19jaGls
ZCAmIDEpID09IDApDQorCSAgICArK19fcGFyZW50Ow0KKwl9DQorICAgICAgcmV0dXJuIHRydWU7
DQorICAgIH0NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLA0KKyAgICAgICAgICAgdHlwZW5hbWUgX1N0cmljdFdlYWtPcmRl
cmluZz4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
Zmlyc3QsIF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wLA0KKwkgICAgICBfRGlzdGFuY2UgX19u
KQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsNCisgICAgICBmb3IgKF9E
aXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKQ0KKwl7DQorCSAg
aWYgKF9fY29tcChfX2ZpcnN0W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpDQorCSAgICBy
ZXR1cm4gZmFsc2U7DQorCSAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkNCisJICAgICsrX19wYXJl
bnQ7DQorCX0NCisgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKw0KKyAgLyp0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQorICAgIGJvb2wNCisgICAgX19pc19oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0KQ0KKyAgICB7IHJldHVybiBzdGQ6Ol9faXNfaGVhcChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCkpOyB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9TdHJpY3RXZWFrT3JkZXJpbmc+DQorICAgIGJvb2wNCisg
ICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0LA0KKwkgICAgX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApDQorICAg
IHsgcmV0dXJuIHN0ZDo6X19pc19oZWFwKF9fZmlyc3QsIF9fY29tcCwgc3RkOjpkaXN0YW5jZShf
X2ZpcnN0LCBfX2xhc3QpKTsgfSovDQorDQorICAvLyBIZWFwLW1hbmlwdWxhdGlvbiBmdW5jdGlv
bnM6IHB1c2hfaGVhcCwgcG9wX2hlYXAsIG1ha2VfaGVhcCwgc29ydF9oZWFwLg0KKw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2Us
IHR5cGVuYW1lIF9UcD4NCisgICAgdm9pZA0KKyAgICBfX3B1c2hfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwNCisJCV9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9f
dG9wSW5kZXgsIF9UcCBfX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50
ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9f
dG9wSW5kZXggJiYgKihfX2ZpcnN0ICsgX19wYXJlbnQpIDwgX192YWx1ZSkNCisJew0KKwkgICoo
X19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hv
bGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAy
Ow0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAg
fQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQdXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAu
DQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxh
c3QgICBFbmQgb2YgaGVhcCArIGVsZW1lbnQuDQorICAgKiAgQGluZ3JvdXAgaGVhcA0KKyAgICoN
CisgICAqICBUaGlzIG9wZXJhdGlvbiBwdXNoZXMgdGhlIGVsZW1lbnQgYXQgbGFzdC0xIG9udG8g
dGhlIHZhbGlkIGhlYXAgb3ZlciB0aGUNCisgICAqICByYW5nZSBbZmlyc3QsbGFzdC0xKS4gIEFm
dGVyIGNvbXBsZXRpb24sIFtmaXJzdCxsYXN0KSBpcyBhIHZhbGlkIGhlYXAuDQorICAqLw0KKyAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPg0KKyAgICBpbmxpbmUgdm9p
ZA0KKyAgICBwdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QpDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlDQorCSAgX1Zh
bHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VUeXBlOw0KKw0K
KyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9u
X3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVz
KF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4
eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIC8vICAgICAg
X19nbGliY3h4X3JlcXVpcmVzX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSk7DQorDQorICAgICAg
c3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0
KSAtIDEpLA0KKwkJICAgICAgIF9EaXN0YW5jZVR5cGUoMCksIF9WYWx1ZVR5cGUoKihfX2xhc3Qg
LSAxKSkpOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwLA0KKwkgICAgdHlwZW5hbWUg
X0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwNCisJCV9EaXN0YW5jZSBfX3RvcElu
ZGV4LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAgICAgX0Rpc3Rh
bmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hv
bGVJbmRleCA+IF9fdG9wSW5kZXgNCisJICAgICAmJiBfX2NvbXAoKihfX2ZpcnN0ICsgX19wYXJl
bnQpLCBfX3ZhbHVlKSkNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19m
aXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hvbGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFy
ZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19o
b2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQ
dXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAgdXNpbmcgY29tcGFyaXNvbiBmdW5jdG9yLg0KKyAg
ICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAg
RW5kIG9mIGhlYXAgKyBlbGVtZW50Lg0KKyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24g
ZnVuY3Rvci4NCisgICAqICBAaW5ncm91cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3BlcmF0
aW9uIHB1c2hlcyB0aGUgZWxlbWVudCBhdCBsYXN0LTEgb250byB0aGUgdmFsaWQgaGVhcCBvdmVy
IHRoZQ0KKyAgICogIHJhbmdlIFtmaXJzdCxsYXN0LTEpLiAgQWZ0ZXIgY29tcGxldGlvbiwgW2Zp
cnN0LGxhc3QpIGlzIGEgdmFsaWQgaGVhcC4NCisgICAqICBDb21wYXJlIG9wZXJhdGlvbnMgYXJl
IHBlcmZvcm1lZCB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGluZSB2b2lkDQor
ICAgIHB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQor
CSAgX0Rpc3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAg
ICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVy
YXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0IC0gMSwgX19jb21wKTsNCisN
CisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZVR5cGUoKF9fbGFzdCAt
IF9fZmlyc3QpIC0gMSksDQorCQkgICAgICAgX0Rpc3RhbmNlVHlwZSgwKSwgX1ZhbHVlVHlwZSgq
KF9fbGFzdCAtIDEpKSwgX19jb21wKTsNCisgICAgfQ0KKw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsIHR5cGVuYW1lIF9UcD4N
CisgICAgdm9pZA0KKyAgICBfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsDQorCQkgIF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9f
dmFsdWUpDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRleCA9IF9faG9s
ZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4
ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7DQorCSAgaWYg
KCooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQpIDwgKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQg
LSAxKSkpDQorCSAgICBfX3NlY29uZENoaWxkLS07DQorCSAgKihfX2ZpcnN0ICsgX19ob2xlSW5k
ZXgpID0gKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7DQorCSAgX19ob2xlSW5kZXggPSBfX3Nl
Y29uZENoaWxkOw0KKwkgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsN
CisJfQ0KKyAgICAgIGlmIChfX3NlY29uZENoaWxkID09IF9fbGVuKQ0KKwl7DQorCSAgKihfX2Zp
cnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSk7DQor
CSAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsNCisJfQ0KKyAgICAgIHN0ZDo6X19w
dXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUpOw0KKyAg
ICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVu
YW1lIF9UcD4NCisgICAgaW5saW5lIHZvaWQNCisgICAgX19wb3BfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdCwgX1RwIF9fdmFsdWUpDQorICAgIHsNCisg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2UoMCks
IF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSk7DQorICAgIH0NCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgUG9wIGFuIGVsZW1lbnQgb2ZmIGEgaGVhcC4NCisgICAq
ICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVu
ZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhpcyBvcGVy
YXRpb24gcG9wcyB0aGUgdG9wIG9mIHRoZSBoZWFwLiAgVGhlIGVsZW1lbnRzIGZpcnN0IGFuZCBs
YXN0LTENCisgICAqICBhcmUgc3dhcHBlZCBhbmQgW2ZpcnN0LGxhc3QtMSkgaXMgbWFkZSBpbnRv
IGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+DQorICAgIGlubGluZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
dmFsdWVfdHlwZQ0KKwlfVmFsdWVUeXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1l
bnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAg
ICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0
PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2Zp
cnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9f
bGFzdCk7DQorDQorICAgICAgc3RkOjpfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9f
bGFzdCAtIDEsDQorCQkgICAgICBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpKTsNCisgICAgfQ0K
Kw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
RGlzdGFuY2UsDQorCSAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZv
aWQNCisgICAgX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rp
c3RhbmNlIF9faG9sZUluZGV4LA0KKwkJICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlLCBf
Q29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRl
eCA9IF9faG9sZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9f
aG9sZUluZGV4ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7
DQorCSAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwNCisJCSAgICAgKihf
X2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQ0KKwkgICAgX19zZWNvbmRDaGlsZC0tOw0K
KwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQp
Ow0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsNCisJICBfX3NlY29uZENoaWxkID0g
MiAqIChfX3NlY29uZENoaWxkICsgMSk7DQorCX0NCisgICAgICBpZiAoX19zZWNvbmRDaGlsZCA9
PSBfX2xlbikNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCAr
IChfX3NlY29uZENoaWxkIC0gMSkpOw0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZCAt
IDE7DQorCX0NCisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBf
X3RvcEluZGV4LCBfX3ZhbHVlLCBfX2NvbXApOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBh
cmU+DQorICAgIGlubGluZSB2b2lkDQorICAgIF9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsDQorCSAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXAp
DQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpf
X3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBf
RGlzdGFuY2UoMCksIF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSwg
X19jb21wKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQb3AgYW4gZWxlbWVu
dCBvZmYgYSBoZWFwIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZp
cnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0K
KyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAg
QGluZ3JvdXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBwb3BzIHRoZSB0b3Ag
b2YgdGhlIGhlYXAuICBUaGUgZWxlbWVudHMgZmlyc3QgYW5kIGxhc3QtMQ0KKyAgICogIGFyZSBz
d2FwcGVkIGFuZCBbZmlyc3QsbGFzdC0xKSBpcyBtYWRlIGludG8gYSBoZWFwLiAgQ29tcGFyaXNv
bnMgYXJlDQorICAgKiAgbWFkZSB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGlu
ZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LA0KKwkg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkNCisgICAg
ew0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0
aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlk
X3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX2hlYXBf
cHJlZChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7DQorDQorICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQ0KKwlf
VmFsdWVUeXBlOw0KKyAgICAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBf
X2xhc3QgLSAxLA0KKwkJICAgICAgX1ZhbHVlVHlwZSgqKF9fbGFzdCAtIDEpKSwgX19jb21wKTsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBDb25zdHJ1Y3QgYSBoZWFwIG92ZXIg
YSByYW5nZS4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQor
ICAgKiAgVGhpcyBvcGVyYXRpb24gbWFrZXMgdGhlIGVsZW1lbnRzIGluIFtmaXJzdCxsYXN0KSBp
bnRvIGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+DQorICAgIHZvaWQNCisgICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFs
dWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQorCSAgX0Rp
c3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9f
Z2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNv
bmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDxfVmFsdWVUeXBlPikN
CisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsN
CisNCisgICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIpDQorCXJldHVybjsNCisNCisgICAg
ICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsNCisgICAgICBf
RGlzdGFuY2VUeXBlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikgLyAyOw0KKyAgICAgIHdoaWxlICh0
cnVlKQ0KKwl7DQorCSAgc3RkOjpfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xl
biwNCisJCQkgICAgIF9WYWx1ZVR5cGUoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7DQorCSAgaWYg
KF9fcGFyZW50ID09IDApDQorCSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAg
ICB9DQorDQorICAvKioNCisgICAqICBAYnJpZWYgIENvbnN0cnVjdCBhIGhlYXAgb3ZlciBhIHJh
bmdlIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFy
dCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAgQGluZ3JvdXAg
aGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBtYWtlcyB0aGUgZWxlbWVudHMgaW4g
W2ZpcnN0LGxhc3QpIGludG8gYSBoZWFwLg0KKyAgICogIENvbXBhcmlzb25zIGFyZSBtYWRlIHVz
aW5nIGNvbXAuDQorICAqLw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4NCisgICAgaW5saW5lIHZvaWQNCisgICAgbWFrZV9oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LA0KKwkgICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
DQorCSAgX1ZhbHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VU
eXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4
X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwN
CisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVz
X3ZhbGlkX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAgICAgaWYgKF9fbGFzdCAtIF9f
Zmlyc3QgPCAyKQ0KKwlyZXR1cm47DQorDQorICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xl
biA9IF9fbGFzdCAtIF9fZmlyc3Q7DQorICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChf
X2xlbiAtIDIpIC8gMjsNCisgICAgICB3aGlsZSAodHJ1ZSkNCisJew0KKwkgIHN0ZDo6X19hZGp1
c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sDQorCQkJICAgICBfVmFsdWVUeXBlKCoo
X19maXJzdCArIF9fcGFyZW50KSksIF9fY29tcCk7DQorCSAgaWYgKF9fcGFyZW50ID09IDApDQor
CSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAgICB9DQorDQorICAvKioNCisg
ICAqICBAYnJpZWYgIFNvcnQgYSBoZWFwLg0KKyAgICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9m
IGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAgRW5kIG9mIGhlYXAuDQorICAgKiAgQGluZ3Jv
dXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBzb3J0cyB0aGUgdmFsaWQgaGVh
cCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4NCisgICAgdm9pZA0KKyAgICBzb3J0X2hlYXAoX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpDQor
ICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQor
CSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9y
ZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDwNCisJICAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPikNCisgICAgICBf
X2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsNCisgICAgICAv
LyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAg
ICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQ0KKwlzdGQ6OnBvcF9oZWFwKF9fZmlyc3Qs
IF9fbGFzdC0tKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBTb3J0IGEgaGVh
cCB1c2luZyBjb21wYXJpc29uIGZ1bmN0b3IuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQg
b2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAcGFy
YW0gIGNvbXAgICBDb21wYXJpc29uIGZ1bmN0b3IgdG8gdXNlLg0KKyAgICogIEBpbmdyb3VwIGhl
YXANCisgICAqDQorICAgKiAgVGhpcyBvcGVyYXRpb24gc29ydHMgdGhlIHZhbGlkIGhlYXAgaW4g
dGhlIHJhbmdlIFtmaXJzdCxsYXN0KS4NCisgICAqICBDb21wYXJpc29ucyBhcmUgbWFkZSB1c2lu
ZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgc29ydF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LA0KKwkg
ICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVt
ZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21B
Y2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0LCBfX2NvbXAp
Ow0KKw0KKyAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkNCisJc3RkOjpwb3BfaGVh
cChfX2ZpcnN0LCBfX2xhc3QtLSwgX19jb21wKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNl
IHN0ZA0KKw0KKw0KKw0KKyNlbmRpZiANClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODgpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDExMCBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2
YWxsICA8c3JpcmFtLnlhZGF2YWxsaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WmFsYW4gQnVqdGFzICh6YnVqdGFzQGdtYWlsLmNvbSkuCisJREVTQzogU2NyaXB0YWJsZSBwbHVn
aW4gYW5kIHdpZGdldCBvYmplY3Qgc3VwcG9ydAorCWh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNDA3CisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQg
T1IgQ0hBTkdFRAorCisgICAgICAgICogYmluZGluZ3MvTlBfanNvYmplY3QuY3BwOgorICAgICAg
ICAobGlzdEZyb21WYXJpYW50QXJncyk6CisgICAgICAgIChfaXNTYWZlU2NyaXB0KToKKyAgICAg
ICAgKF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKE5QTl9JbnZva2VEZWZhdWx0
KToKKyAgICAgICAgKE5QTl9JbnZva2UpOgorICAgICAgICAoTlBOX0V2YWx1YXRlKToKKyAgICAg
ICAgKE5QTl9HZXRQcm9wZXJ0eSk6CisgICAgICAgIChOUE5fU2V0UHJvcGVydHkpOgorICAgICAg
ICAoTlBOX1JlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKE5QTl9IYXNQcm9wZXJ0eSk6CisgICAg
ICAgIChOUE5fSGFzTWV0aG9kKToKKyAgICAgICAgKE5QTl9TZXRFeGNlcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL05QX2pzb2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvYy9jX2NsYXNz
LmNwcDoKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6Q0NsYXNzKToKKyAgICAgICAg
KEtKUzo6QmluZGluZ3M6OkNDbGFzczo6fkNDbGFzcyk6CisgICAgICAgIChLSlM6OkJpbmRpbmdz
OjpDQ2xhc3M6OmNsYXNzRm9ySXNBKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6
bmFtZSk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6Om1ldGhvZHNOYW1lZCk6Cisg
ICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFtZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2MvY19jbGFzcy5oOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpjb25z
dHJ1Y3RvckF0KToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6bnVtQ29uc3RydWN0
b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoQ0lu
c3RhbmNlOjpDSW5zdGFuY2UpOgorICAgICAgICAoQ0luc3RhbmNlOjp+Q0luc3RhbmNlKToKKyAg
ICAgICAgKENJbnN0YW5jZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKENJbnN0YW5jZTo6Z2V0Q2xh
c3MpOgorICAgICAgICAoQ0luc3RhbmNlOjppbnZva2VNZXRob2QpOgorICAgICAgICAoQ0luc3Rh
bmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKENJbnN0YW5jZTo6ZGVmYXVsdFZh
bHVlKToKKyAgICAgICAgKENJbnN0YW5jZTo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoQ0luc3Rh
bmNlOjp2YWx1ZU9mKToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfcnVudGltZS5oOgorICAgICAg
ICAoS0pTOjpCaW5kaW5nczo6Q0ZpZWxkOjpuYW1lKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6
OkNNZXRob2Q6Om5hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL2MvY191dGlsaXR5LmNwcDoKKyAg
ICAgICAgKGNvbnZlcnRVVEY4VG9VVEYxNik6CisgICAgICAgIChjb252ZXJ0VmFsdWVUb05QVmFy
aWFudCk6CisgICAgICAgIChjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSk6CisgICAgICAgIChpZGVu
dGlmaWVyRnJvbU5QSWRlbnRpZmllcik6CisgICAgICAgICogYmluZGluZ3MvYy9jX3V0aWxpdHku
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9ucGFwaS5oOgorICAgICAgICAoX05QUHJpbnQ6Oik6Cisg
ICAgICAgICogYmluZGluZ3MvbnBydW50aW1lLmNwcDoKKyAgICAgICAgKGdldFN0cmluZ0lkZW50
aWZpZXJNYXApOgorICAgICAgICAoZ2V0SW50SWRlbnRpZmllck1hcCk6CisgICAgICAgIChOUE5f
R2V0U3RyaW5nSWRlbnRpZmllcik6CisgICAgICAgIChOUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMp
OgorICAgICAgICAoTlBOX0dldEludElkZW50aWZpZXIpOgorICAgICAgICAoTlBOX0lkZW50aWZp
ZXJJc1N0cmluZyk6CisgICAgICAgIChOUE5fVVRGOEZyb21JZGVudGlmaWVyKToKKyAgICAgICAg
KE5QTl9JbnRGcm9tSWRlbnRpZmllcik6CisgICAgICAgIChOUE5fVmFyaWFudFRvQm9vbCk6Cisg
ICAgICAgIChOUE5fVmFyaWFudFRvU3RyaW5nKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9JbnQz
Mik6CisgICAgICAgIChOUE5fVmFyaWFudFRvRG91YmxlKToKKyAgICAgICAgKE5QTl9WYXJpYW50
VG9PYmplY3QpOgorICAgICAgICAoTlBOX0luaXRpYWxpemVWYXJpYW50V2l0aE9iamVjdCk6Cisg
ICAgICAgIChOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSk6CisgICAgICAgIChOUE5fQ3JlYXRlT2Jq
ZWN0KToKKyAgICAgICAgKE5QTl9SZXRhaW5PYmplY3QpOgorICAgICAgICAoTlBOX1JlbGVhc2VP
YmplY3QpOgorICAgICAgICAoTlBOX1NldEV4Y2VwdGlvbldpdGhVVEY4KToKKyAgICAgICAgKiBi
aW5kaW5ncy9ucHJ1bnRpbWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lLmNwcDoKKyAg
ICAgICAgKEluc3RhbmNlOjpjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSk6CisgICAg
ICAgIChJbnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9ydW50aW1lLmg6CisgICAgICAgICogYmluZGluZ3MvcnVudGltZV9vYmplY3Qu
Y3BwOgorICAgICAgICAoUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcCk6CisgICAg
ICAgIChSdW50aW1lT2JqZWN0SW1wOjpnZXQpOgorICAgICAgICAoUnVudGltZU9iamVjdEltcDo6
cHV0KToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OmNhblB1dCk6CisgICAgICAgICogYmlu
ZGluZ3MvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX3Jvb3Qu
Y3BwOgorICAgICAgICAoUm9vdE9iamVjdDo6cmVtb3ZlQWxsTmF0aXZlUmVmZXJlbmNlcyk6Cisg
ICAgICAgIChnZXRSZWZlcmVuY2VzQnlSb290TWFwKToKKyAgICAgICAgKGdldFJlZmVyZW5jZXNT
ZXQpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6ZmluZFJlZmVyZW5jZVNldCk6CisgICAgICAg
IChLSlM6OkJpbmRpbmdzOjpyb290Rm9ySW1wKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OnJv
b3RGb3JJbnRlcnByZXRlcik6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZl
cmVuY2UpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlKToK
KyAgICAgICAgKFJvb3RPYmplY3Q6OnNldEludGVycHJldGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9ydW50aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBncm91cC9Cd2luc2N3L0pBVkFTQ1JJUFRDT1JF
VS5ERUY6CisgICAgICAgICogZ3JvdXAvRUFCSS9KYXZhc2NyaXB0Q29yZVUuZGVmOgorICAgICAg
ICAqIGdyb3VwL0phdmFTY3JpcHRDb3JlLm1tcDoKKyAgICAgICAgKiBncm91cC9ibGQuaW5mOgor
ICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5jcHA6CisgICAgICAgIChJbnRlcnByZXRlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAoSW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JW
YWx1ZSk6CisgICAgICAgIChTYXZlZEJ1aWx0aW5zOjpTYXZlZEJ1aWx0aW5zKToKKyAgICAgICAg
KiBranMvaW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBranMvc3RkaW50Lmg6CisgICAgICAgICog
a2pzL3VzdHJpbmcuaDoKKyAgICAgICAgKEtKUzo6VVN0cmluZzo6YXJlcCk6CisKIDIwMDYtMTAt
MDQgIHNhcmVlbiAgPHNoeWFtLnNhcmVlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgWmFsYW4gQnVqdGFzLgpJbmRleDogSmF2YVNjcmlwdENvcmUvZ3JvdXAvYmxkLmluZg0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3VwL2JsZC5pbmYJKHJldmlzaW9uIDE3MDY5
KQ0KKysrIEphdmFTY3JpcHRDb3JlL2dyb3VwL2JsZC5pbmYJKHdvcmtpbmcgY29weSkNCkBAIC0y
MSw2ICsyMSwyMSBAQA0KIFBSSl9QTEFURk9STVMNCiBERUZBVUxUDQogDQorUFJKX0VYUE9SVFMN
CisuLlxranNcaW50ZXJuYWwuaCAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlw
dGNvcmVcaW50ZXJuYWwuaA0KKy4uXGtqc1xpbnRlcnByZXRlci5oICAgICAgXGVwb2MzMlxpbmNs
dWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxpbnRlcnByZXRlci5oDQorLi5ca2pzXG9iamVjdC5oICAg
ICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXG9iamVjdC5oDQorLi5c
a2pzXHByb3RlY3QuaCAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3Jl
XHByb3RlY3QuaA0KKy4uXGtqc1xzdGRpbnQuaCAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9l
bVxqYXZhc2NyaXB0Y29yZVxzdGRpbnQuaA0KKw0KKy4uXGJpbmRpbmdzXG5wcnVudGltZS5oICAg
ICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxucHJ1bnRpbWUuaA0K
Ky4uXGJpbmRpbmdzXG5wcnVudGltZV9pbXBsLmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVc
b2VtXGphdmFzY3JpcHRjb3JlXG5wcnVudGltZV9pbXBsLmgNCisuLlxiaW5kaW5nc1xucHJ1bnRp
bWVfcHJpdi5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxu
cHJ1bnRpbWVfcHJpdi5oDQorLi5cYmluZGluZ3NccnVudGltZS5oICAgICAgICAgICAgXGVwb2Mz
MlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxydW50aW1lLmgNCisuLlxiaW5kaW5nc1xydW50
aW1lX29iamVjdC5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29y
ZVxydW50aW1lX29iamVjdC5oDQorLi5cYmluZGluZ3NccnVudGltZV9yb290LmggICAgICAgICAg
ICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHJ1bnRpbWVfcm9vdC5oDQorLi5c
YmluZGluZ3NcTlBfanNvYmplY3QuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2
YXNjcmlwdGNvcmVcTlBfanNvYmplY3QuaA0KKy4uXGJpbmRpbmdzXGNcY191dGlsaXR5LmggICAg
ICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXGNfdXRpbGl0eS5oDQog
UFJKX01NUEZJTEVTDQogcGNyZS5tbXANCiBKYXZhU2NyaXB0Q29yZS5tbXANCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ncm91cC9Cd2luc2N3L0pBVkFTQ1JJUFRDT1JFVS5ERUYNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ncm91cC9Cd2luc2N3L0pBVkFTQ1JJUFRDT1JFVS5ERUYJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3aW5zY3cvSkFWQVNDUklQ
VENPUkVVLkRFRgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMTM5ICsxLDE2OCBAQA0KIEVYUE9SVFMN
Ci0JPz8wQm9vbGVhbkBLSlNAQFFBRUBfTkBaIEAgMSBOT05BTUUgOyBLSlM6OkJvb2xlYW46OkJv
b2xlYW4oYm9vbCkNCi0JPz8wSW50ZXJwcmV0ZXJAS0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAy
IE5PTkFNRSA7IEtKUzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKGNsYXNzIEtKUzo6T2JqZWN0
IGNvbnN0ICYpDQotCT8/MExpc3RAS0pTQEBRQUVAWFogQCAzIE5PTkFNRSA7IEtKUzo6TGlzdDo6
TGlzdCh2b2lkKQ0KLQk/PzBOdWxsQEtKU0BAUUFFQFhaIEAgNCBOT05BTUUgOyBLSlM6Ok51bGw6
Ok51bGwodm9pZCkNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQEhAWiBAIDUgTk9OQU1FIDsgS0pTOjpO
dW1iZXI6Ok51bWJlcihpbnQpDQotCT8/ME51bWJlckBLSlNAQFFBRUBJQFogQCA2IE5PTkFNRSA7
IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgaW50KQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVA
SkBaIEAgNyBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGxvbmcpDQotCT8/ME51bWJlckBL
SlNAQFFBRUBLQFogQCA4IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgbG9u
ZykNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQE5AWiBAIDkgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51
bWJlcihkb3VibGUpDQotCT8/ME9iamVjdEltcEBLSlNAQFFBRUBBQlZPYmplY3RAMUBAWiBAIDEw
IE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjpPYmplY3RJbXAoY2xhc3MgS0pTOjpPYmplY3QgY29u
c3QgJikNCi0JPz8wT2JqZWN0SW1wQEtKU0BAUUFFQFhaIEAgMTEgTk9OQU1FIDsgS0pTOjpPYmpl
Y3RJbXA6Ok9iamVjdEltcCh2b2lkKQ0KLQk/PzBTdHJpbmdAS0pTQEBRQUVAQUJWVVN0cmluZ0Ax
QEBaIEAgMTIgTk9OQU1FIDsgS0pTOjpTdHJpbmc6OlN0cmluZyhjbGFzcyBLSlM6OlVTdHJpbmcg
Y29uc3QgJikNCi0JPz8wVVN0cmluZ0BLSlNAQFFBRUBBQlYwMUAwQFogQCAxMyBOT05BTUUgOyBL
SlM6OlVTdHJpbmc6OlVTdHJpbmcoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtK
Uzo6VVN0cmluZyBjb25zdCAmKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQERAWiBAIDE0IE5PTkFN
RSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjaGFyKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBB
VVVDaGFyQDFASF9OQFogQCAxNSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoc3RydWN0
IEtKUzo6VUNoYXIgKiwgaW50LCBib29sKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBCREBaIEAg
MTYgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIgY29uc3QgKikNCi0JPz8wVVN0
cmluZ0BLSlNAQFFBRUBQQlVVQ2hhckAxQEhAWiBAIDE3IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6
VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQotCT8/MFVTdHJpbmdAS0pT
QEBRQUVAWFogQCAxOCBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcodm9pZCkNCi0JPz8w
VW5kZWZpbmVkQEtKU0BAUUFFQFhaIEAgMTkgTk9OQU1FIDsgS0pTOjpVbmRlZmluZWQ6OlVuZGVm
aW5lZCh2b2lkKQ0KLQk/PzBWYWx1ZUBLSlNAQFFBRUBBQlYwMUBAWiBAIDIwIE5PTkFNRSA7IEtK
Uzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JPz8wVmFsdWVAS0pT
QEBRQUVAUEFWVmFsdWVJbXBAMUBAWiBAIDIxIE5PTkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNs
YXNzIEtKUzo6VmFsdWVJbXAgKikNCi0JPz8xSW50ZXJwcmV0ZXJAS0pTQEBVQUVAWFogQCAyMiBO
T05BTUUgOyBLSlM6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIodm9pZCkNCi0JPz8xT2JqZWN0
SW1wQEtKU0BAVUFFQFhaIEAgMjMgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6On5PYmplY3RJbXAo
dm9pZCkNCi0JPz8xVmFsdWVAS0pTQEBRQUVAWFogQCAyNCBOT05BTUUgOyBLSlM6OlZhbHVlOjp+
VmFsdWUodm9pZCkNCi0JPz8yVmFsdWVJbXBAS0pTQEBTQVBBWElAWiBAIDI1IE5PTkFNRSA7IHZv
aWQgKiBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBuZXcodW5zaWduZWQgaW50KQ0KLQk/PzNWYWx1
ZUltcEBLSlNAQFNBWFBBWEBaIEAgMjYgTk9OQU1FIDsgdm9pZCBLSlM6OlZhbHVlSW1wOjpvcGVy
YXRvciBkZWxldGUodm9pZCAqKQ0KLQk/PzRDU3RyaW5nQEtKU0BAUUFFQUFWMDFAUEJEQFogQCAy
NyBOT05BTUUgOyBjbGFzcyBLSlM6OkNTdHJpbmcgJiBLSlM6OkNTdHJpbmc6Om9wZXJhdG9yPShj
aGFyIGNvbnN0ICopDQotCT8/NExpc3RAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDI4IE5PTkFN
RSA7IGNsYXNzIEtKUzo6TGlzdCAmIEtKUzo6TGlzdDo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6TGlz
dCBjb25zdCAmKQ0KLQk/PzRTY29wZUNoYWluQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAyOSBO
T05BTUUgOyBjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gJiBLSlM6OlNjb3BlQ2hhaW46Om9wZXJhdG9y
PShjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikNCi0JPz80VVN0cmluZ0BLSlNAQFFBRUFB
VjAxQEFCVjAxQEBaIEAgMzAgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3Ry
aW5nOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQotCT8/NFZhbHVlQEtK
U0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMSBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlICYgS0pT
OjpWYWx1ZTo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JPz84S0pTQEBZ
QV9OQUJWVVN0cmluZ0AwQFBCREBaIEAgMzIgTk9OQU1FIDsgYm9vbCBLSlM6Om9wZXJhdG9yPT0o
Y2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNoYXIgY29uc3QgKikNCi0JP2FkZEBJZGVudGlm
aWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBBVTM0MkBAWiBAIDMzIE5PTkFNRSA7IHN0cnVj
dCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6SWRlbnRpZmllcjo6YWRkKHN0cnVjdCBLSlM6OlVT
dHJpbmc6OlJlcCAqKQ0KLQk/YWRkQElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJA
UEJEQFogQCAzNCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OklkZW50
aWZpZXI6OmFkZChjaGFyIGNvbnN0ICopDQotCT9hcHBlbmRATGlzdEBLSlNAQFFBRVhQQVZWYWx1
ZUltcEAyQEBaIEAgMzUgTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OmFwcGVuZChjbGFzcyBLSlM6
OlZhbHVlSW1wICopDQotCT9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQEFCVjEyQEBaIEAg
MzYgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2xh
c3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQotCT9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEy
QFBCREBaIEAgMzcgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjph
cHBlbmQoY2hhciBjb25zdCAqKQ0KLQk/YXNjaWlAVVN0cmluZ0BLSlNAQFFCRVBBRFhaIEAgMzgg
Tk9OQU1FIDsgY2hhciAqIEtKUzo6VVN0cmluZzo6YXNjaWkodm9pZCkgY29uc3QNCi0JP2F0dGFj
aE51bGxAVVN0cmluZ0BLSlNAQEFBRVhYWiBAIDM5IE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5n
OjphdHRhY2hOdWxsKHZvaWQpDQotCT9idWlsdGluQXJyYXlASW50ZXJwcmV0ZXJAS0pTQEBRQkU/
QVZPYmplY3RAMkBYWiBAIDQwIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJw
cmV0ZXI6OmJ1aWx0aW5BcnJheSh2b2lkKSBjb25zdA0KLQk/YnVpbHRpbkZ1bmN0aW9uQEludGVy
cHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0MSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9i
amVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGluRnVuY3Rpb24odm9pZCkgY29uc3QNCi0JP2J1
aWx0aW5PYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQyIE5PTkFN
RSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3Qodm9p
ZCkgY29uc3QNCi0JP2J1aWx0aW5PYmplY3RQcm90b3R5cGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/
QVZPYmplY3RAMkBYWiBAIDQzIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJw
cmV0ZXI6OmJ1aWx0aW5PYmplY3RQcm90b3R5cGUodm9pZCkgY29uc3QNCi0JP2NhbGxAT2JqZWN0
QEtKU0BAUUFFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQVYxMkBBQlZMaXN0QDJAQFogQCA0
NCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0OjpjYWxsKGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAm
KQ0KLQk/Y2FsbEBPYmplY3RJbXBAS0pTQEBVQUU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFB
Vk9iamVjdEAyQEFCVkxpc3RAMkBAWiBAIDQ1IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pT
OjpPYmplY3RJbXA6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmpl
Y3QgJiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jYW5QdXRAT2JqZWN0SW1wQEtKU0BA
VUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA0NiBOT05BTUUgOyBib29s
IEtKUzo6T2JqZWN0SW1wOjpjYW5QdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9jbGFzc0luZm9AT2JqZWN0SW1wQEtKU0BA
VUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA0NyBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8g
Y29uc3QgKiBLSlM6Ok9iamVjdEltcDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQotCT9jbGFzc05h
bWVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmluZ0AyQFhaIEAgNDggTk9OQU1FIDsgY2xhc3Mg
S0pTOjpVU3RyaW5nIEtKUzo6T2JqZWN0SW1wOjpjbGFzc05hbWUodm9pZCkgY29uc3QNCi0JP2Nv
bGxlY3RAQ29sbGVjdG9yQEtKU0BAU0FfTlhaIEAgNDkgTk9OQU1FIDsgYm9vbCBLSlM6OkNvbGxl
Y3Rvcjo6Y29sbGVjdCh2b2lkKQ0KLQk/Y29tcGF0TW9kZUBJbnRlcnByZXRlckBLSlNAQFFCRT9B
VzRDb21wYXRNb2RlQDEyQFhaIEAgNTAgTk9OQU1FIDsgZW51bSBLSlM6OkludGVycHJldGVyOjpD
b21wYXRNb2RlIEtKUzo6SW50ZXJwcmV0ZXI6OmNvbXBhdE1vZGUodm9pZCkgY29uc3QNCi0JP2Nv
bnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZM
aXN0QDJAQFogQCA1MSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6
Y29uc3RydWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAm
KQ0KLQk/Y29uc3RydWN0QE9iamVjdEltcEBLSlNAQFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0
ZUAyQEFCVkxpc3RAMkBBQlZVU3RyaW5nQDJASEBaIEAgNTIgTk9OQU1FIDsgY2xhc3MgS0pTOjpP
YmplY3QgS0pTOjpPYmplY3RJbXA6OmNvbnN0cnVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBj
bGFzcyBLSlM6Okxpc3QgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCkN
Ci0JP2NvcHlUYWlsQExpc3RAS0pTQEBRQkU/QVYxMkBYWiBAIDUzIE5PTkFNRSA7IGNsYXNzIEtK
Uzo6TGlzdCBLSlM6Okxpc3Q6OmNvcHlUYWlsKHZvaWQpIGNvbnN0DQotCT9jcmVhdGVARXJyb3JA
S0pTQEBTQT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQFc0RXJyb3JUeXBlQDJAUEJESEhQQlZV
U3RyaW5nQDJAQFogQCA1NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkVycm9yOjpj
cmVhdGUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OkVycm9yVHlwZSwgY2hhciBj
b25zdCAqLCBpbnQsIGludCwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICopDQotCT9jcmVhdGVA
UmVwQFVTdHJpbmdAS0pTQEBTQVBBVTEyM0BQQVVVQ2hhckAzQEhAWiBAIDU1IE5PTkFNRSA7IHN0
cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6VVN0cmluZzo6UmVwOjpjcmVhdGUoc3RydWN0
IEtKUzo6VUNoYXIgKiwgaW50KQ0KLQk/Y3JlYXRlQ29weWluZ0BSZXBAVVN0cmluZ0BLSlNAQFNB
UEFVMTIzQFBCVVVDaGFyQDNASEBaIEAgNTYgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6
UmVwICogS0pTOjpVU3RyaW5nOjpSZXA6OmNyZWF0ZUNvcHlpbmcoc3RydWN0IEtKUzo6VUNoYXIg
Y29uc3QgKiwgaW50KQ0KLQk/ZGVmYXVsdFZhbHVlQE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVl
QDJAUEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFogQCA1NyBOT05BTUUgOyBjbGFzcyBLSlM6OlZh
bHVlIEtKUzo6T2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
ZW51bSBLSlM6OlR5cGUpIGNvbnN0DQotCT9kZWxldGVBbGxQcm9wZXJ0aWVzQE9iamVjdEltcEBL
SlNAQFFBRVhQQVZFeGVjU3RhdGVAMkBAWiBAIDU4IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJ
bXA6OmRlbGV0ZUFsbFByb3BlcnRpZXMoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikNCi0JP2RlbGV0
ZVByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEBaIEAgNTkgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlUHJvcGVydHko
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpDQot
CT9kZWxldGVQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBA
IDYwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkNCi0JP2RlcmVmVmFsdWVzQExpc3RAS0pTQEBB
QUVYWFogQCA2MSBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6ZGVyZWZWYWx1ZXModm9pZCkNCi0J
P2Rlc3Ryb3lAUmVwQFVTdHJpbmdAS0pTQEBRQUVYWFogQCA2MiBOT05BTUUgOyB2b2lkIEtKUzo6
VVN0cmluZzo6UmVwOjpkZXN0cm95KHZvaWQpDQotCT9kaXNwYXRjaFRvT2JqZWN0QFZhbHVlSW1w
QEtKU0BAUUJFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFogQCA2MyBOT05BTUUgOyBjbGFz
cyBLSlM6Ok9iamVjdCBLSlM6OlZhbHVlSW1wOjpkaXNwYXRjaFRvT2JqZWN0KGNsYXNzIEtKUzo6
RXhlY1N0YXRlICopIGNvbnN0DQotCT9keW5hbWljQ2FzdEBPYmplY3RAS0pTQEBTQT9BVjEyQEFC
VlZhbHVlQDJAQFogQCA2NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdDo6
ZHluYW1pY0Nhc3QoY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/ZXF1YWxASWRlbnRpZmll
ckBLSlNAQENBX05QQVVSZXBAVVN0cmluZ0AyQFBCREBaIEAgNjUgTk9OQU1FIDsgYm9vbCBLSlM6
OklkZW50aWZpZXI6OmVxdWFsKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqLCBjaGFyIGNvbnN0
ICopDQotCT9lcXVhbEBJZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJVVUNo
YXJAMkBIQFogQCA2NiBOT05BTUUgOyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0
IEtKUzo6VVN0cmluZzo6UmVwICosIHN0cnVjdCBLSlM6OlVDaGFyIGNvbnN0ICosIGludCkNCi0J
P2V2YWx1YXRlQEludGVycHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdA
MkBBQlZWYWx1ZUAyQDBAWiBAIDY3IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6
OkludGVycHJldGVyOjpldmFsdWF0ZShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3Mg
S0pTOjpWYWx1ZSBjb25zdCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0JP2V2YWx1
YXRlQEludGVycHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBIMEFC
VlZhbHVlQDJAQFogQCA2OCBOT05BTUUgOyBjbGFzcyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJbnRl
cnByZXRlcjo6ZXZhbHVhdGUoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCwgY2xhc3Mg
S0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JP2ZpbmRF
bnRyeUBMb29rdXBAS0pTQEBTQVBCVkhhc2hFbnRyeUAyQFBCVkhhc2hUYWJsZUAyQEFCVklkZW50
aWZpZXJAMkBAWiBAIDY5IE5PTkFNRSA7IGNsYXNzIEtKUzo6SGFzaEVudHJ5IGNvbnN0ICogS0pT
OjpMb29rdXA6OmZpbmRFbnRyeShjbGFzcyBLSlM6Okhhc2hUYWJsZSBjb25zdCAqLCBjbGFzcyBL
SlM6OklkZW50aWZpZXIgY29uc3QgJikNCi0JP2Zyb21AVVN0cmluZ0BLSlNAQFNBP0FWMTJASkBa
IEAgNzAgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6VVN0cmluZzo6ZnJvbShsb25n
KQ0KLQk/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUJW
SWRlbnRpZmllckAyQEBaIEAgNzEgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVj
dEltcDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBj
b25zdCAmKSBjb25zdA0KLQk/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhl
Y1N0YXRlQDJASUBaIEAgNzIgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdElt
cDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2dl
dEBQcm9wZXJ0eU1hcEBLSlNAQFFCRVBBVlZhbHVlSW1wQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
NzMgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZUltcCAqIEtKUzo6UHJvcGVydHlNYXA6OmdldChj
bGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCi0JP2dsb2JhbEV4ZWNASW50ZXJw
cmV0ZXJAS0pTQEBRQUVQQVZFeGVjU3RhdGVAMkBYWiBAIDc0IE5PTkFNRSA7IGNsYXNzIEtKUzo6
RXhlY1N0YXRlICogS0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFsRXhlYyh2b2lkKQ0KLQk/Z2xvYmFs
T2JqZWN0QEludGVycHJldGVyQEtKU0BAUUJFQUFWT2JqZWN0QDJAWFogQCA3NSBOT05BTUUgOyBj
bGFzcyBLSlM6Ok9iamVjdCAmIEtKUzo6SW50ZXJwcmV0ZXI6Omdsb2JhbE9iamVjdCh2b2lkKSBj
b25zdA0KLQk/aGFzSW5zdGFuY2VAT2JqZWN0SW1wQEtKU0BAVUFFP0FWQm9vbGVhbkAyQFBBVkV4
ZWNTdGF0ZUAyQEFCVlZhbHVlQDJAQFogQCA3NiBOT05BTUUgOyBjbGFzcyBLSlM6OkJvb2xlYW4g
S0pTOjpPYmplY3RJbXA6Omhhc0luc3RhbmNlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNz
IEtKUzo6VmFsdWUgY29uc3QgJikNCi0JP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9O
UEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzcgTk9OQU1FIDsgYm9vbCBLSlM6
Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBA
S0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDc4IE5PTkFNRSA7
IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/aGFzT3duUHJvcGVy
dHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA3OSBOT05BTUUgOyBi
b29sIEtKUzo6T2JqZWN0SW1wOjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
LCB1bnNpZ25lZCBpbnQpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBB
VkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDgwIE5PTkFNRSA7IGJvb2wgS0pTOjpP
YmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRl
bnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05Q
QVZFeGVjU3RhdGVAMkBJQFogQCA4MSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNQcm9w
ZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQotCT9oYXNQ
cm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJA
MkBAWiBAIDgyIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0K
LQk/aGFzUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4
MyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQotCT9pbXBBdEBMaXN0QEtKU0BAUUJFUEFW
VmFsdWVJbXBAMkBIQFogQCA4NCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlSW1wICogS0pTOjpM
aXN0OjppbXBBdChpbnQpIGNvbnN0DQotCT9pbXBsZW1lbnRzQ2FsbEBPYmplY3RJbXBAS0pTQEBV
QkVfTlhaIEAgODUgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0NhbGwo
dm9pZCkgY29uc3QNCi0JP2ltcGxlbWVudHNDb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUJFX05Y
WiBAIDg2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmltcGxlbWVudHNDb25zdHJ1Y3Qo
dm9pZCkgY29uc3QNCi0JP2ltcGxlbWVudHNIYXNJbnN0YW5jZUBPYmplY3RJbXBAS0pTQEBVQkVf
TlhaIEAgODcgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0hhc0luc3Rh
bmNlKHZvaWQpIGNvbnN0DQotCT9pbmNTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFB
RVhYWiBAIDg4IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5jU3RhdGVtZW50Q291
bnQodm9pZCkNCi0JP2luaGVyaXRzQE9iamVjdEltcEBLSlNAQFFCRV9OUEJVQ2xhc3NJbmZvQDJA
QFogQCA4OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbmhlcml0cyhzdHJ1Y3QgS0pT
OjpDbGFzc0luZm8gY29uc3QgKikgY29uc3QNCi0JP2luaXRHbG9iYWxPYmplY3RASW50ZXJwcmV0
ZXJAS0pTQEBRQUVYWFogQCA5MCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmluaXRH
bG9iYWxPYmplY3Qodm9pZCkNCi0JP2lzTnVsbEBVU3RyaW5nQEtKU0BAUUJFX05YWiBAIDkxIE5P
TkFNRSA7IGJvb2wgS0pTOjpVU3RyaW5nOjppc051bGwodm9pZCkgY29uc3QNCi0JP2xlbmd0aFBy
b3BlcnR5QEtKU0BAWUFBQlZJZGVudGlmaWVyQDFAWFogQCA5MiBOT05BTUUgOyBjbGFzcyBLSlM6
OklkZW50aWZpZXIgY29uc3QgJiBLSlM6Omxlbmd0aFByb3BlcnR5KHZvaWQpDQotCT9sZXhpY2Fs
SW50ZXJwcmV0ZXJARXhlY1N0YXRlQEtKU0BAUUJFUEFWSW50ZXJwcmV0ZXJAMkBYWiBAIDkzIE5P
TkFNRSA7IGNsYXNzIEtKUzo6SW50ZXJwcmV0ZXIgKiBLSlM6OkV4ZWNTdGF0ZTo6bGV4aWNhbElu
dGVycHJldGVyKHZvaWQpIGNvbnN0DQotCT9sb2NrQEludGVycHJldGVyQEtKU0BAU0FYWFogQCA5
NCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmxvY2sodm9pZCkNCi0JP21hcmtAT2Jq
ZWN0SW1wQEtKU0BAVUFFWFhaIEAgOTUgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6bWFy
ayh2b2lkKQ0KLQk/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDk2IE5PTkFNRSA7IGJv
b2wgS0pTOjpWYWx1ZUltcDo6bWFya2VkKHZvaWQpIGNvbnN0DQotCT9tZXNzYWdlUHJvcGVydHlA
S0pTQEBZQUFCVklkZW50aWZpZXJAMUBYWiBAIDk3IE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRp
ZmllciBjb25zdCAmIEtKUzo6bWVzc2FnZVByb3BlcnR5KHZvaWQpDQotCT9wcm9wTGlzdEBPYmpl
Y3RAS0pTQEBRQUU/QVZSZWZlcmVuY2VMaXN0QDJAUEFWRXhlY1N0YXRlQDJAX05AWiBAIDk4IE5P
TkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCi0JP3Byb3BMaXN0QE9iamVjdEltcEBLSlNAQFVB
RT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgOTkgTk9OQU1FIDsgY2xh
c3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0SW1wOjpwcm9wTGlzdChjbGFzcyBLSlM6
OkV4ZWNTdGF0ZSAqLCBib29sKQ0KLQk/cHJvdG90eXBlQE9iamVjdEltcEBLSlNAQFFCRT9BVlZh
bHVlQDJAWFogQCAxMDAgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6
cHJvdG90eXBlKHZvaWQpIGNvbnN0DQotCT9wdXNoQFNjb3BlQ2hhaW5AS0pTQEBRQUVYQUJWMTJA
QFogQCAxMDEgTk9OQU1FIDsgdm9pZCBLSlM6OlNjb3BlQ2hhaW46OnB1c2goY2xhc3MgS0pTOjpT
Y29wZUNoYWluIGNvbnN0ICYpDQotCT9wdXNoQFNjb3BlQ2hhaW5AS0pTQEBRQUVYUEFWT2JqZWN0
SW1wQDJAQFogQCAxMDIgTk9OQU1FIDsgdm9pZCBLSlM6OlNjb3BlQ2hhaW46OnB1c2goY2xhc3Mg
S0pTOjpPYmplY3RJbXAgKikNCi0JP3B1dEBPYmplY3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRl
QDJAQUJWSWRlbnRpZmllckAyQEFCVlZhbHVlQDJASEBaIEAgMTAzIE5PTkFNRSA7IHZvaWQgS0pT
OjpPYmplY3RJbXA6OnB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50
aWZpZXIgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmLCBpbnQpDQotCT9wdXRAT2Jq
ZWN0SW1wQEtKU0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQElBQlZWYWx1ZUAyQEhAWiBAIDEwNCBOT05B
TUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5z
aWduZWQgaW50LCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGludCkNCi0JP3B1dERpcmVjdEBP
YmplY3RJbXBAS0pTQEBRQUVYQUJWSWRlbnRpZmllckAyQEhIQFogQCAxMDUgTk9OQU1FIDsgdm9p
ZCBLSlM6Ok9iamVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAm
LCBpbnQsIGludCkNCi0JP3B1dERpcmVjdEBPYmplY3RJbXBAS0pTQEBRQUVYQUJWSWRlbnRpZmll
ckAyQFBBVlZhbHVlSW1wQDJASEBaIEAgMTA2IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6
OnB1dERpcmVjdChjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1
ZUltcCAqLCBpbnQpDQotCT9yZWZWYWx1ZXNATGlzdEBLSlNAQEFBRVhYWiBAIDEwNyBOT05BTUUg
OyB2b2lkIEtKUzo6TGlzdDo6cmVmVmFsdWVzKHZvaWQpDQotCT9yZWxlYXNlQExpc3RAS0pTQEBB
QUVYWFogQCAxMDggTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OnJlbGVhc2Uodm9pZCkNCi0JP3Jl
bGVhc2VAU2NvcGVDaGFpbkBLSlNAQEFBRVhYWiBAIDEwOSBOT05BTUUgOyB2b2lkIEtKUzo6U2Nv
cGVDaGFpbjo6cmVsZWFzZSh2b2lkKQ0KLQk/cmVzZXRTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRl
ckBLSlNAQFFBRVhYWiBAIDExMCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnJlc2V0
U3RhdGVtZW50Q291bnQodm9pZCkNCi0JP3Jlc3RvcmVAUHJvcGVydHlNYXBAS0pTQEBRQUVYQUJW
U2F2ZWRQcm9wZXJ0aWVzQDJAQFogQCAxMTEgTk9OQU1FIDsgdm9pZCBLSlM6OlByb3BlcnR5TWFw
OjpyZXN0b3JlKGNsYXNzIEtKUzo6U2F2ZWRQcm9wZXJ0aWVzIGNvbnN0ICYpDQotCT9yZXN0b3Jl
QnVpbHRpbnNASW50ZXJwcmV0ZXJAS0pTQEBRQUVYQUJWU2F2ZWRCdWlsdGluc0AyQEBaIEAgMTEy
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzdG9yZUJ1aWx0aW5zKGNsYXNzIEtK
Uzo6U2F2ZWRCdWlsdGlucyBjb25zdCAmKQ0KLQk/c2F2ZUBQcm9wZXJ0eU1hcEBLSlNAQFFCRVhB
QVZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDExMyBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlN
YXA6OnNhdmUoY2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMgJikgY29uc3QNCi0JP3NhdmVCdWls
dGluc0BJbnRlcnByZXRlckBLSlNAQFFCRVhBQVZTYXZlZEJ1aWx0aW5zQDJAQFogQCAxMTQgTk9O
QU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpzYXZlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZl
ZEJ1aWx0aW5zICYpIGNvbnN0DQotCT9zZXRDb21wYXRNb2RlQEludGVycHJldGVyQEtKU0BAUUFF
WFc0Q29tcGF0TW9kZUAxMkBAWiBAIDExNSBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6
OnNldENvbXBhdE1vZGUoZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2RlKQ0KLQk/c2V0
UHJvdG90eXBlQE9iamVjdEltcEBLSlNAQFFBRVhBQlZWYWx1ZUAyQEBaIEAgMTE2IE5PTkFNRSA7
IHZvaWQgS0pTOjpPYmplY3RJbXA6OnNldFByb3RvdHlwZShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0
ICYpDQotCT9zZXRTaG91bGRQcmludEV4Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQVhfTkBa
IEAgMTE3IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0U2hvdWxkUHJpbnRFeGNl
cHRpb25zKGJvb2wpDQotCT9zaG91bGRQcmludEV4Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBT
QV9OWFogQCAxMTggTk9OQU1FIDsgYm9vbCBLSlM6OkludGVycHJldGVyOjpzaG91bGRQcmludEV4
Y2VwdGlvbnModm9pZCkNCi0JP3RvQXJyYXlJbmRleEBVU3RyaW5nQEtKU0BAUUJFSVBBX05AWiBA
IDExOSBOT05BTUUgOyB1bnNpZ25lZCBpbnQgS0pTOjpVU3RyaW5nOjp0b0FycmF5SW5kZXgoYm9v
bCAqKSBjb25zdA0KLQk/dG9Cb29sZWFuQE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRl
QDJAQFogQCAxMjAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6dG9Cb29sZWFuKGNsYXNz
IEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b0ludDMyQFZhbHVlSW1wQEtKU0BAUUJFSlBB
VkV4ZWNTdGF0ZUAyQEBaIEAgMTIxIE5PTkFNRSA7IGxvbmcgS0pTOjpWYWx1ZUltcDo6dG9JbnQz
MihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9JbnRlZ2VyQFZhbHVlSW1wQEtK
U0BAUUJFTlBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTIyIE5PTkFNRSA7IGRvdWJsZSBLSlM6OlZhbHVl
SW1wOjp0b0ludGVnZXIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvTnVtYmVy
QE9iamVjdEltcEBLSlNAQFVCRU5QQVZFeGVjU3RhdGVAMkBAWiBAIDEyMyBOT05BTUUgOyBkb3Vi
bGUgS0pTOjpPYmplY3RJbXA6OnRvTnVtYmVyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0
DQotCT90b09iamVjdEBPYmplY3RJbXBAS0pTQEBVQkU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVA
MkBAWiBAIDEyNCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6dG9P
YmplY3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvUHJpbWl0aXZlQE9iamVj
dEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFogQCAxMjUg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6dG9QcmltaXRpdmUoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OlR5cGUpIGNvbnN0DQotCT90b1N0cmluZ0BP
YmplY3RJbXBAS0pTQEBVQkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFogQCAxMjYgTk9O
QU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6T2JqZWN0SW1wOjp0b1N0cmluZyhjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9VSW50MTZAVmFsdWVJbXBAS0pTQEBRQkVHUEFW
RXhlY1N0YXRlQDJAQFogQCAxMjcgTk9OQU1FIDsgdW5zaWduZWQgc2hvcnQgS0pTOjpWYWx1ZUlt
cDo6dG9VSW50MTYoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvVUludDMyQFZh
bHVlSW1wQEtKU0BARUJFX05BQUlAWiBAIDEyOCBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6
OnRvVUludDMyKHVuc2lnbmVkIGludCAmKSBjb25zdA0KLQk/dG9VSW50MzJAVmFsdWVJbXBAS0pT
QEBRQkVLUEFWRXhlY1N0YXRlQDJAQFogQCAxMjkgTk9OQU1FIDsgdW5zaWduZWQgbG9uZyBLSlM6
OlZhbHVlSW1wOjp0b1VJbnQzMihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9V
TG9uZ0BVU3RyaW5nQEtKU0BAUUJFS1BBX05AWiBAIDEzMCBOT05BTUUgOyB1bnNpZ25lZCBsb25n
IEtKUzo6VVN0cmluZzo6dG9VTG9uZyhib29sICopIGNvbnN0DQotCT90eXBlQE9iamVjdEltcEBL
SlNAQFVCRT9BVzRUeXBlQDJAWFogQCAxMzEgTk9OQU1FIDsgZW51bSBLSlM6OlR5cGUgS0pTOjpP
YmplY3RJbXA6OnR5cGUodm9pZCkgY29uc3QNCi0JP3VubG9ja0BJbnRlcnByZXRlckBLSlNAQFNB
WFhaIEAgMTMyIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dW5sb2NrKHZvaWQpDQot
CT92YWx1ZUBTdHJpbmdAS0pTQEBRQkU/QVZVU3RyaW5nQDJAWFogQCAxMzMgTk9OQU1FIDsgY2xh
c3MgS0pTOjpVU3RyaW5nIEtKUzo6U3RyaW5nOjp2YWx1ZSh2b2lkKSBjb25zdA0KLQk/dmlydHVh
bF9ob29rQEludGVycHJldGVyQEtKU0BATUFFWEhQQVhAWiBAIDEzNCBOT05BTUUgOyB2b2lkIEtK
Uzo6SW50ZXJwcmV0ZXI6OnZpcnR1YWxfaG9vayhpbnQsIHZvaWQgKikNCi0Ja2pzX3N0cnRvZCBA
IDEzNSBOT05BTUUNCi0JP2NsYXNzSW5mb0BPYmplY3RAS0pTQEBRQkVQQlVDbGFzc0luZm9AMkBY
WiBAIDEzNiBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVj
dDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBR
QkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDEzNyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0Ojpo
YXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0
DQorICAgID8/MEJvb2xlYW5AS0pTQEBRQUVAX05AWiBAIDEgTk9OQU1FIDsgS0pTOjpCb29sZWFu
OjpCb29sZWFuKGJvb2wpDQorICAgID8/MEludGVycHJldGVyQEtKU0BAUUFFQEFCVk9iamVjdEAx
QEBaIEAgMiBOT05BTUUgOyBLSlM6OkludGVycHJldGVyOjpJbnRlcnByZXRlcihjbGFzcyBLSlM6
Ok9iamVjdCBjb25zdCAmKQ0KKyAgICA/PzBMaXN0QEtKU0BAUUFFQFhaIEAgMyBOT05BTUUgOyBL
SlM6Okxpc3Q6Okxpc3Qodm9pZCkNCisgICAgPz8wTnVsbEBLSlNAQFFBRUBYWiBAIDQgTk9OQU1F
IDsgS0pTOjpOdWxsOjpOdWxsKHZvaWQpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBIQFogQCA1
IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIoaW50KQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBR
QUVASUBaIEAgNiBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKHVuc2lnbmVkIGludCkNCisg
ICAgPz8wTnVtYmVyQEtKU0BAUUFFQEpAWiBAIDcgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJl
cihsb25nKQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBRQUVAS0BaIEAgOCBOT05BTUUgOyBLSlM6Ok51
bWJlcjo6TnVtYmVyKHVuc2lnbmVkIGxvbmcpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBOQFog
QCA5IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIoZG91YmxlKQ0KKyAgICA/PzBPYmplY3RJ
bXBAS0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAxMCBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6
T2JqZWN0SW1wKGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYpDQorICAgID8/ME9iamVjdEltcEBL
SlNAQFFBRUBYWiBAIDExIE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjpPYmplY3RJbXAodm9pZCkN
CisgICAgPz8wUnVudGltZU9iamVjdEltcEBLSlNAQFFBRUBQQVZJbnN0YW5jZUBCaW5kaW5nc0Ax
QF9OQFogQCAxMiBOT05BTUUgOyBLSlM6OlJ1bnRpbWVPYmplY3RJbXA6OlJ1bnRpbWVPYmplY3RJ
bXAoY2xhc3MgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKiwgYm9vbCkNCisgICAgPz8wU3RyaW5n
QEtKU0BAUUFFQEFCVlVTdHJpbmdAMUBAWiBAIDEzIE5PTkFNRSA7IEtKUzo6U3RyaW5nOjpTdHJp
bmcoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID8/MFVTdHJpbmdAS0pTQEBRQUVA
QUJWMDFAMEBaIEAgMTQgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNsYXNzIEtKUzo6
VVN0cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCisgICAgPz8wVVN0
cmluZ0BLSlNAQFFBRUBEQFogQCAxNSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2hh
cikNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBQQVVVQ2hhckAxQEhfTkBaIEAgMTYgTk9OQU1F
IDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKHN0cnVjdCBLSlM6OlVDaGFyICosIGludCwgYm9vbCkN
CisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBQQkRAWiBAIDE3IE5PTkFNRSA7IEtKUzo6VVN0cmlu
Zzo6VVN0cmluZyhjaGFyIGNvbnN0ICopDQorICAgID8/MFVTdHJpbmdAS0pTQEBRQUVAUEJVVUNo
YXJAMUBIQFogQCAxOCBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoc3RydWN0IEtKUzo6
VUNoYXIgY29uc3QgKiwgaW50KQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQFhaIEAgMTkgTk9O
QU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKHZvaWQpDQorICAgID8/MFVuZGVmaW5lZEBLSlNA
QFFBRUBYWiBAIDIwIE5PTkFNRSA7IEtKUzo6VW5kZWZpbmVkOjpVbmRlZmluZWQodm9pZCkNCisg
ICAgPz8wVmFsdWVAS0pTQEBRQUVAQUJWMDFAQFogQCAyMSBOT05BTUUgOyBLSlM6OlZhbHVlOjpW
YWx1ZShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQorICAgID8/MFZhbHVlQEtKU0BAUUFFQFBB
VlZhbHVlSW1wQDFAQFogQCAyMiBOT05BTUUgOyBLSlM6OlZhbHVlOjpWYWx1ZShjbGFzcyBLSlM6
OlZhbHVlSW1wICopDQorICAgID8/MUludGVycHJldGVyQEtKU0BAVUFFQFhaIEAgMjMgTk9OQU1F
IDsgS0pTOjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKHZvaWQpDQorICAgID8/MU9iamVjdElt
cEBLSlNAQFVBRUBYWiBAIDI0IE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjp+T2JqZWN0SW1wKHZv
aWQpDQorICAgID8/MVZhbHVlQEtKU0BAUUFFQFhaIEAgMjUgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6
flZhbHVlKHZvaWQpDQorICAgID8/MlZhbHVlSW1wQEtKU0BAU0FQQVhJQFogQCAyNiBOT05BTUUg
OyB2b2lkICogS0pTOjpWYWx1ZUltcDo6b3BlcmF0b3IgbmV3KHVuc2lnbmVkIGludCkNCisgICAg
Pz8zVmFsdWVJbXBAS0pTQEBTQVhQQVhAWiBAIDI3IE5PTkFNRSA7IHZvaWQgS0pTOjpWYWx1ZUlt
cDo6b3BlcmF0b3IgZGVsZXRlKHZvaWQgKikNCisgICAgPz80Q1N0cmluZ0BLSlNAQFFBRUFBVjAx
QFBCREBaIEAgMjggTk9OQU1FIDsgY2xhc3MgS0pTOjpDU3RyaW5nICYgS0pTOjpDU3RyaW5nOjpv
cGVyYXRvcj0oY2hhciBjb25zdCAqKQ0KKyAgICA/PzRMaXN0QEtKU0BAUUFFQUFWMDFAQUJWMDFA
QFogQCAyOSBOT05BTUUgOyBjbGFzcyBLSlM6Okxpc3QgJiBLSlM6Okxpc3Q6Om9wZXJhdG9yPShj
bGFzcyBLSlM6Okxpc3QgY29uc3QgJikNCisgICAgPz80U2NvcGVDaGFpbkBLSlNAQFFBRUFBVjAx
QEFCVjAxQEBaIEAgMzAgTk9OQU1FIDsgY2xhc3MgS0pTOjpTY29wZUNoYWluICYgS0pTOjpTY29w
ZUNoYWluOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpTY29wZUNoYWluIGNvbnN0ICYpDQorICAgID8/
NFVTdHJpbmdAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDMxIE5PTkFNRSA7IGNsYXNzIEtKUzo6
VVN0cmluZyAmIEtKUzo6VVN0cmluZzo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6VVN0cmluZyBjb25z
dCAmKQ0KKyAgICA/PzRWYWx1ZUBLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAgMzIgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpWYWx1ZSAmIEtKUzo6VmFsdWU6Om9wZXJhdG9yPShjbGFzcyBLSlM6OlZhbHVl
IGNvbnN0ICYpDQorICAgID8/OEtKU0BAWUFfTkFCVlVTdHJpbmdAMEBQQkRAWiBAIDMzIE5PTkFN
RSA7IGJvb2wgS0pTOjpvcGVyYXRvcj09KGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBjaGFy
IGNvbnN0ICopDQorICAgID9OUE5fU2V0RXhjZXB0aW9uV2l0aFVURjhAQFlBWFBBVU5QT2JqZWN0
QEBQQkRIQFogQCAzNCBOT05BTUUgOyB2b2lkIE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOChzdHJ1
Y3QgTlBPYmplY3QgKiwgY2hhciBjb25zdCAqLCBpbnQpDQorICAgID9hZGRASWRlbnRpZmllckBL
SlNAQENBUEFVUmVwQFVTdHJpbmdAMkBQQVUzNDJAQFogQCAzNSBOT05BTUUgOyBzdHJ1Y3QgS0pT
OjpVU3RyaW5nOjpSZXAgKiBLSlM6OklkZW50aWZpZXI6OmFkZChzdHJ1Y3QgS0pTOjpVU3RyaW5n
OjpSZXAgKikNCisgICAgP2FkZEBJZGVudGlmaWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBC
REBaIEAgMzYgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpJZGVudGlm
aWVyOjphZGQoY2hhciBjb25zdCAqKQ0KKyAgICA/YXBwZW5kQExpc3RAS0pTQEBRQUVYUEFWVmFs
dWVJbXBAMkBAWiBAIDM3IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjphcHBlbmQoY2xhc3MgS0pT
OjpWYWx1ZUltcCAqKQ0KKyAgICA/YXBwZW5kQFVTdHJpbmdAS0pTQEBRQUVBQVYxMkBBQlYxMkBA
WiBAIDM4IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyAmIEtKUzo6VVN0cmluZzo6YXBwZW5k
KGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KKyAgICA/YXBwZW5kQFVTdHJpbmdAS0pTQEBR
QUVBQVYxMkBQQkRAWiBAIDM5IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyAmIEtKUzo6VVN0
cmluZzo6YXBwZW5kKGNoYXIgY29uc3QgKikNCisgICAgP2FzY2lpQFVTdHJpbmdAS0pTQEBRQkVQ
QURYWiBAIDQwIE5PTkFNRSA7IGNoYXIgKiBLSlM6OlVTdHJpbmc6OmFzY2lpKHZvaWQpIGNvbnN0
DQorICAgID9hdHRhY2hOdWxsQFVTdHJpbmdAS0pTQEBBQUVYWFogQCA0MSBOT05BTUUgOyB2b2lk
IEtKUzo6VVN0cmluZzo6YXR0YWNoTnVsbCh2b2lkKQ0KKyAgICA/YnVpbHRpbkFycmF5QEludGVy
cHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0MiBOT05BTUUgOyBjbGFzcyBLSlM6Ok9i
amVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGluQXJyYXkodm9pZCkgY29uc3QNCisgICAgP2J1
aWx0aW5GdW5jdGlvbkBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDMgTk9O
QU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbkZ1bmN0aW9u
KHZvaWQpIGNvbnN0DQorICAgID9idWlsdGluT2JqZWN0QEludGVycHJldGVyQEtKU0BAUUJFP0FW
T2JqZWN0QDJAWFogQCA0NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJl
dGVyOjpidWlsdGluT2JqZWN0KHZvaWQpIGNvbnN0DQorICAgID9idWlsdGluT2JqZWN0UHJvdG90
eXBlQEludGVycHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0NSBOT05BTUUgOyBjbGFz
cyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGluT2JqZWN0UHJvdG90eXBlKHZv
aWQpIGNvbnN0DQorICAgID9jYWxsQE9iamVjdEBLSlNAQFFBRT9BVlZhbHVlQDJAUEFWRXhlY1N0
YXRlQDJAQUFWMTJAQUJWTGlzdEAyQEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBL
SlM6Ok9iamVjdDo6Y2FsbChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Ok9iamVj
dCAmLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJikNCisgICAgP2NhbGxAT2JqZWN0SW1wQEtKU0BA
VUFFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQVZPYmplY3RAMkBBQlZMaXN0QDJAQFogQCA0
NyBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpjYWxsKGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25z
dCAmKQ0KKyAgICA/Y2FuUHV0QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJW
SWRlbnRpZmllckAyQEBaIEAgNDggTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6Y2FuUHV0
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBj
b25zdA0KKyAgICA/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAg
NDkgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pTOjpPYmplY3Q6OmNs
YXNzSW5mbyh2b2lkKSBjb25zdA0KKyAgICA/Y2xhc3NJbmZvQE9iamVjdEltcEBLSlNAQFVCRVBC
VUNsYXNzSW5mb0AyQFhaIEAgNTAgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0
ICogS0pTOjpPYmplY3RJbXA6OmNsYXNzSW5mbyh2b2lkKSBjb25zdA0KKyAgICA/Y2xhc3NOYW1l
QE9iamVjdEltcEBLSlNAQFVCRT9BVlVTdHJpbmdAMkBYWiBAIDUxIE5PTkFNRSA7IGNsYXNzIEtK
Uzo6VVN0cmluZyBLSlM6Ok9iamVjdEltcDo6Y2xhc3NOYW1lKHZvaWQpIGNvbnN0DQorICAgID9j
b2xsZWN0QENvbGxlY3RvckBLSlNAQFNBX05YWiBAIDUyIE5PTkFNRSA7IGJvb2wgS0pTOjpDb2xs
ZWN0b3I6OmNvbGxlY3Qodm9pZCkNCisgICAgP2NvbXBhdE1vZGVASW50ZXJwcmV0ZXJAS0pTQEBR
QkU/QVc0Q29tcGF0TW9kZUAxMkBYWiBAIDUzIE5PTkFNRSA7IGVudW0gS0pTOjpJbnRlcnByZXRl
cjo6Q29tcGF0TW9kZSBLSlM6OkludGVycHJldGVyOjpjb21wYXRNb2RlKHZvaWQpIGNvbnN0DQor
ICAgID9jb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUFFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRl
QDJAQUJWTGlzdEAyQEBaIEAgNTQgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmpl
Y3RJbXA6OmNvbnN0cnVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Okxpc3Qg
Y29uc3QgJikNCisgICAgP2NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZPYmplY3RAMkBQ
QVZFeGVjU3RhdGVAMkBBQlZMaXN0QDJAQUJWVVN0cmluZ0AyQEhAWiBAIDU1IE5PTkFNRSA7IGNs
YXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjpjb25zdHJ1Y3QoY2xhc3MgS0pTOjpFeGVj
U3RhdGUgKiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25z
dCAmLCBpbnQpDQorICAgID9jb3B5VGFpbEBMaXN0QEtKU0BAUUJFP0FWMTJAWFogQCA1NiBOT05B
TUUgOyBjbGFzcyBLSlM6Okxpc3QgS0pTOjpMaXN0Ojpjb3B5VGFpbCh2b2lkKSBjb25zdA0KKyAg
ICA/Y3JlYXRlQEVycm9yQEtKU0BAU0E/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBXNEVycm9y
VHlwZUAyQFBCREhIUEJWVVN0cmluZ0AyQEBaIEAgNTcgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmpl
Y3QgS0pTOjpFcnJvcjo6Y3JlYXRlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpF
cnJvclR5cGUsIGNoYXIgY29uc3QgKiwgaW50LCBpbnQsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25z
dCAqKQ0KKyAgICA/Y3JlYXRlQFJlcEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEFVVUNoYXJAM0BI
QFogQCA1OCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6
OlJlcDo6Y3JlYXRlKHN0cnVjdCBLSlM6OlVDaGFyICosIGludCkNCisgICAgP2NyZWF0ZUJpbmRp
bmdGb3JMYW5ndWFnZUluc3RhbmNlQEluc3RhbmNlQEJpbmRpbmdzQEtKU0BAU0FQQVYxMjNAVzRC
aW5kaW5nTGFuZ3VhZ2VAMTIzQFBBWFBCVlJvb3RPYmplY3RAMjNAQFogQCA1OSBOT05BTUUgOyBj
bGFzcyBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpj
cmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZShlbnVtIEtKUzo6QmluZGluZ3M6Okluc3Rh
bmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIHZvaWQgKiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9i
amVjdCBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlQ29weWluZ0BSZXBAVVN0cmluZ0BLSlNAQFNBUEFV
MTIzQFBCVVVDaGFyQDNASEBaIEAgNjAgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVw
ICogS0pTOjpVU3RyaW5nOjpSZXA6OmNyZWF0ZUNvcHlpbmcoc3RydWN0IEtKUzo6VUNoYXIgY29u
c3QgKiwgaW50KQ0KKyAgICA/Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlQEluc3RhbmNl
QEJpbmRpbmdzQEtKU0BAU0FQQVhQQVZFeGVjU3RhdGVAM0BXNEJpbmRpbmdMYW5ndWFnZUAxMjNA
QUJWT2JqZWN0QDNAUEJWUm9vdE9iamVjdEAyM0AzQFogQCA2MSBOT05BTUUgOyB2b2lkICogS0pT
OjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZShjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5n
TGFuZ3VhZ2UsIGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYsIGNsYXNzIEtKUzo6QmluZGluZ3M6
OlJvb3RPYmplY3QgY29uc3QgKiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25z
dCAqKQ0KKyAgICA/Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlQEludGVycHJldGVyQEtK
U0BAVUFFUEFYUEFWRXhlY1N0YXRlQDJAVzRCaW5kaW5nTGFuZ3VhZ2VASW5zdGFuY2VAQmluZGlu
Z3NAMkBBQlZPYmplY3RAMkBQQlZSb290T2JqZWN0QDYyQDNAWiBAIDYyIE5PTkFNRSA7IHZvaWQg
KiBLSlM6OkludGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6QmluZGluZ0xh
bmd1YWdlLCBjbGFzcyBLSlM6Ok9iamVjdCBjb25zdCAmLCBjbGFzcyBLSlM6OkJpbmRpbmdzOjpS
b290T2JqZWN0IGNvbnN0ICosIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3Qg
KikNCisgICAgP2NyZWF0ZVJ1bnRpbWVPYmplY3RASW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQT9B
Vk9iamVjdEAzQFc0QmluZGluZ0xhbmd1YWdlQDEyM0BQQVhQQlZSb290T2JqZWN0QDIzQEBaIEAg
NjMgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNy
ZWF0ZVJ1bnRpbWVPYmplY3QoZW51bSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6QmluZGluZ0xh
bmd1YWdlLCB2b2lkICosIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKikN
CisgICAgP2RlZmF1bHRWYWx1ZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNT
dGF0ZUAyQFc0VHlwZUAyQEBaIEAgNjQgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9i
amVjdEltcDo6ZGVmYXVsdFZhbHVlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpU
eXBlKSBjb25zdA0KKyAgICA/ZGVsZXRlQWxsUHJvcGVydGllc0BPYmplY3RJbXBAS0pTQEBRQUVY
UEFWRXhlY1N0YXRlQDJAQFogQCA2NSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpkZWxl
dGVBbGxQcm9wZXJ0aWVzKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopDQorICAgID9kZWxldGVQcm9w
ZXJ0eUBPYmplY3RJbXBAS0pTQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBA
WiBAIDY2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKQ0KKyAgICA/
ZGVsZXRlUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUFFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA2
NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShjbGFzcyBLSlM6
OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpDQorICAgID9kZXJlZlZhbHVlc0BMaXN0QEtKU0BA
QUFFWFhaIEAgNjggTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OmRlcmVmVmFsdWVzKHZvaWQpDQor
ICAgID9kZXN0cm95QFJlcEBVU3RyaW5nQEtKU0BAUUFFWFhaIEAgNjkgTk9OQU1FIDsgdm9pZCBL
SlM6OlVTdHJpbmc6OlJlcDo6ZGVzdHJveSh2b2lkKQ0KKyAgICA/ZGlzcGF0Y2hUb09iamVjdEBW
YWx1ZUltcEBLSlNAQFFCRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgNzAgTk9OQU1F
IDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpWYWx1ZUltcDo6ZGlzcGF0Y2hUb09iamVjdChjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/ZHluYW1pY0Nhc3RAT2JqZWN0QEtKU0BA
U0E/QVYxMkBBQlZWYWx1ZUAyQEBaIEAgNzEgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pT
OjpPYmplY3Q6OmR5bmFtaWNDYXN0KGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2Vx
dWFsQElkZW50aWZpZXJAS0pTQEBDQV9OUEFVUmVwQFVTdHJpbmdAMkBQQkRAWiBAIDcyIE5PTkFN
RSA7IGJvb2wgS0pTOjpJZGVudGlmaWVyOjplcXVhbChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAg
KiwgY2hhciBjb25zdCAqKQ0KKyAgICA/ZXF1YWxASWRlbnRpZmllckBLSlNAQENBX05QQVVSZXBA
VVN0cmluZ0AyQFBCVVVDaGFyQDJASEBaIEAgNzMgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZp
ZXI6OmVxdWFsKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqLCBzdHJ1Y3QgS0pTOjpVQ2hhciBj
b25zdCAqLCBpbnQpDQorICAgID9ldmFsdWF0ZUBJbnRlcnByZXRlckBLSlNAQFFBRT9BVkNvbXBs
ZXRpb25AMkBBQlZVU3RyaW5nQDJAQUJWVmFsdWVAMkAwQFogQCA3NCBOT05BTUUgOyBjbGFzcyBL
SlM6OkNvbXBsZXRpb24gS0pTOjpJbnRlcnByZXRlcjo6ZXZhbHVhdGUoY2xhc3MgS0pTOjpVU3Ry
aW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5n
IGNvbnN0ICYpDQorICAgID9ldmFsdWF0ZUBJbnRlcnByZXRlckBLSlNAQFFBRT9BVkNvbXBsZXRp
b25AMkBBQlZVU3RyaW5nQDJASDBBQlZWYWx1ZUAyQEBaIEAgNzUgTk9OQU1FIDsgY2xhc3MgS0pT
OjpDb21wbGV0aW9uIEtKUzo6SW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGNsYXNzIEtKUzo6VVN0cmlu
ZyBjb25zdCAmLCBpbnQsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlZh
bHVlIGNvbnN0ICYpDQorICAgID9maW5kRW50cnlATG9va3VwQEtKU0BAU0FQQlZIYXNoRW50cnlA
MkBQQlZIYXNoVGFibGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3NiBOT05BTUUgOyBjbGFzcyBL
SlM6Okhhc2hFbnRyeSBjb25zdCAqIEtKUzo6TG9va3VwOjpmaW5kRW50cnkoY2xhc3MgS0pTOjpI
YXNoVGFibGUgY29uc3QgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpDQorICAgID9m
cm9tQFVTdHJpbmdAS0pTQEBTQT9BVjEyQEpAWiBAIDc3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0
cmluZyBLSlM6OlVTdHJpbmc6OmZyb20obG9uZykNCisgICAgP2dldEBPYmplY3RJbXBAS0pTQEBV
QkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDc4IE5PTkFN
RSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmdldChjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2dldEBP
YmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQElAWiBAIDc5IE5PTkFN
RSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmdldChjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9nZXRAUHJvcGVydHlNYXBAS0pTQEBR
QkVQQVZWYWx1ZUltcEAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDgwIE5PTkFNRSA7IGNsYXNzIEtK
Uzo6VmFsdWVJbXAgKiBLSlM6OlByb3BlcnR5TWFwOjpnZXQoY2xhc3MgS0pTOjpJZGVudGlmaWVy
IGNvbnN0ICYpIGNvbnN0DQorICAgID9nbG9iYWxFeGVjQEludGVycHJldGVyQEtKU0BAUUFFUEFW
RXhlY1N0YXRlQDJAWFogQCA4MSBOT05BTUUgOyBjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqIEtKUzo6
SW50ZXJwcmV0ZXI6Omdsb2JhbEV4ZWModm9pZCkNCisgICAgP2dsb2JhbE9iamVjdEBJbnRlcnBy
ZXRlckBLSlNAQFFCRUFBVk9iamVjdEAyQFhaIEAgODIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmpl
Y3QgJiBLSlM6OkludGVycHJldGVyOjpnbG9iYWxPYmplY3Qodm9pZCkgY29uc3QNCisgICAgP2hh
c0luc3RhbmNlQE9iamVjdEltcEBLSlNAQFVBRT9BVkJvb2xlYW5AMkBQQVZFeGVjU3RhdGVAMkBB
QlZWYWx1ZUAyQEBaIEAgODMgTk9OQU1FIDsgY2xhc3MgS0pTOjpCb29sZWFuIEtKUzo6T2JqZWN0
SW1wOjpoYXNJbnN0YW5jZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OlZhbHVl
IGNvbnN0ICYpDQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNT
dGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDg0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6
Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRp
ZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFzT3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJF
X05QQVZFeGVjU3RhdGVAMkBJQFogQCA4NSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNP
d25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQor
ICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBAWiBAIDg2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093
blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBj
b25zdCAmKSBjb25zdA0KKyAgICA/aGFzT3duUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUJFX05Q
QVZFeGVjU3RhdGVAMkBJQFogQCA4NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpoYXNP
d25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQor
ICAgID9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50
aWZpZXJAMkBAWiBAIDg4IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25z
dA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFog
QCA4OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RJ
bXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDkwIE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFzUHJvcGVy
dHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA5MSBOT05BTUUgOyBi
b29sIEtKUzo6T2JqZWN0SW1wOjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1
bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9pbXBBdEBMaXN0QEtKU0BAUUJFUEFWVmFsdWVJbXBA
MkBIQFogQCA5MiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlSW1wICogS0pTOjpMaXN0OjppbXBB
dChpbnQpIGNvbnN0DQorICAgID9pbXBsZW1lbnRzQ2FsbEBPYmplY3RJbXBAS0pTQEBVQkVfTlha
IEAgOTMgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0NhbGwodm9pZCkg
Y29uc3QNCisgICAgP2ltcGxlbWVudHNDb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUJFX05YWiBA
IDk0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmltcGxlbWVudHNDb25zdHJ1Y3Qodm9p
ZCkgY29uc3QNCisgICAgP2ltcGxlbWVudHNIYXNJbnN0YW5jZUBPYmplY3RJbXBAS0pTQEBVQkVf
TlhaIEAgOTUgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0hhc0luc3Rh
bmNlKHZvaWQpIGNvbnN0DQorICAgID9pbmNTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNA
QFFBRVhYWiBAIDk2IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5jU3RhdGVtZW50
Q291bnQodm9pZCkNCisgICAgP2luaGVyaXRzQE9iamVjdEltcEBLSlNAQFFCRV9OUEJVQ2xhc3NJ
bmZvQDJAQFogQCA5NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbmhlcml0cyhzdHJ1
Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKikgY29uc3QNCisgICAgP2luaXRHbG9iYWxPYmplY3RA
SW50ZXJwcmV0ZXJAS0pTQEBRQUVYWFogQCA5OCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0
ZXI6OmluaXRHbG9iYWxPYmplY3Qodm9pZCkNCisgICAgP2lzTnVsbEBVU3RyaW5nQEtKU0BAUUJF
X05YWiBAIDk5IE5PTkFNRSA7IGJvb2wgS0pTOjpVU3RyaW5nOjppc051bGwodm9pZCkgY29uc3QN
CisgICAgP2xlbmd0aFByb3BlcnR5QEtKU0BAWUFBQlZJZGVudGlmaWVyQDFAWFogQCAxMDAgTk9O
QU1FIDsgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjpsZW5ndGhQcm9wZXJ0eSh2
b2lkKQ0KKyAgICA/bGV4aWNhbEludGVycHJldGVyQEV4ZWNTdGF0ZUBLSlNAQFFCRVBBVkludGVy
cHJldGVyQDJAWFogQCAxMDEgTk9OQU1FIDsgY2xhc3MgS0pTOjpJbnRlcnByZXRlciAqIEtKUzo6
RXhlY1N0YXRlOjpsZXhpY2FsSW50ZXJwcmV0ZXIodm9pZCkgY29uc3QNCisgICAgP2xvY2tASW50
ZXJwcmV0ZXJAS0pTQEBTQVhYWiBAIDEwMiBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6
OmxvY2sodm9pZCkNCisgICAgP21hcmtAT2JqZWN0SW1wQEtKU0BAVUFFWFhaIEAgMTAzIE5PTkFN
RSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6Om1hcmsodm9pZCkNCisgICAgP21hcmtlZEBWYWx1ZUlt
cEBLSlNAQFFCRV9OWFogQCAxMDQgTk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjptYXJrZWQo
dm9pZCkgY29uc3QNCisgICAgP21lc3NhZ2VQcm9wZXJ0eUBLSlNAQFlBQUJWSWRlbnRpZmllckAx
QFhaIEAgMTA1IE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmIEtKUzo6bWVz
c2FnZVByb3BlcnR5KHZvaWQpDQorICAgID9wcm9wTGlzdEBPYmplY3RAS0pTQEBRQUU/QVZSZWZl
cmVuY2VMaXN0QDJAUEFWRXhlY1N0YXRlQDJAX05AWiBAIDEwNiBOT05BTUUgOyBjbGFzcyBLSlM6
OlJlZmVyZW5jZUxpc3QgS0pTOjpPYmplY3Q6OnByb3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGJvb2wpDQorICAgID9wcm9wTGlzdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZSZWZlcmVuY2VM
aXN0QDJAUEFWRXhlY1N0YXRlQDJAX05AWiBAIDEwNyBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVy
ZW5jZUxpc3QgS0pTOjpPYmplY3RJbXA6OnByb3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IGJvb2wpDQorICAgID9wcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUJFP0FWVmFsdWVAMkBYWiBA
IDEwOCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpwcm90b3R5cGUo
dm9pZCkgY29uc3QNCisgICAgP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhBQlYxMkBAWiBAIDEw
OSBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6OlNjb3BlQ2hh
aW4gY29uc3QgJikNCisgICAgP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhQQVZPYmplY3RJbXBA
MkBAWiBAIDExMCBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6
Ok9iamVjdEltcCAqKQ0KKyAgICA/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQQVZFeGVjU3RhdGVA
MkBBQlZJZGVudGlmaWVyQDJAQUJWVmFsdWVAMkBIQFogQCAxMTEgTk9OQU1FIDsgdm9pZCBLSlM6
Ok9iamVjdEltcDo6cHV0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRp
ZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGludCkNCisgICAgP3B1dEBP
YmplY3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRlQDJASUFCVlZhbHVlQDJASEBaIEAgMTEyIE5P
TkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1
bnNpZ25lZCBpbnQsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJiwgaW50KQ0KKyAgICA/cHV0RGly
ZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVyQDJASEhAWiBAIDExMyBOT05BTUUg
OyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3QoY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNv
bnN0ICYsIGludCwgaW50KQ0KKyAgICA/cHV0RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJ
ZGVudGlmaWVyQDJAUEFWVmFsdWVJbXBAMkBIQFogQCAxMTQgTk9OQU1FIDsgdm9pZCBLSlM6Ok9i
amVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBL
SlM6OlZhbHVlSW1wICosIGludCkNCisgICAgP3JlZlZhbHVlc0BMaXN0QEtKU0BAQUFFWFhaIEAg
MTE1IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjpyZWZWYWx1ZXModm9pZCkNCisgICAgP3JlbGVh
c2VATGlzdEBLSlNAQEFBRVhYWiBAIDExNiBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6cmVsZWFz
ZSh2b2lkKQ0KKyAgICA/cmVsZWFzZUBTY29wZUNoYWluQEtKU0BAQUFFWFhaIEAgMTE3IE5PTkFN
RSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpyZWxlYXNlKHZvaWQpDQorICAgID9yZW1vdmVBbGxO
YXRpdmVSZWZlcmVuY2VzQFJvb3RPYmplY3RAQmluZGluZ3NAS0pTQEBRQUVYWFogQCAxMTggTk9O
QU1FIDsgdm9pZCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZl
cmVuY2VzKHZvaWQpDQorICAgID9yZW1vdmVOYXRpdmVSZWZlcmVuY2VAQmluZGluZ3NAS0pTQEBZ
QVhQQVZPYmplY3RJbXBAMkBAWiBAIDExOSBOT05BTUUgOyB2b2lkIEtKUzo6QmluZGluZ3M6OnJl
bW92ZU5hdGl2ZVJlZmVyZW5jZShjbGFzcyBLSlM6Ok9iamVjdEltcCAqKQ0KKyAgICA/cmVzZXRT
dGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDEyMCBOT05BTUUgOyB2b2lk
IEtKUzo6SW50ZXJwcmV0ZXI6OnJlc2V0U3RhdGVtZW50Q291bnQodm9pZCkNCisgICAgP3Jlc3Rv
cmVAUHJvcGVydHlNYXBAS0pTQEBRQUVYQUJWU2F2ZWRQcm9wZXJ0aWVzQDJAQFogQCAxMjEgTk9O
QU1FIDsgdm9pZCBLSlM6OlByb3BlcnR5TWFwOjpyZXN0b3JlKGNsYXNzIEtKUzo6U2F2ZWRQcm9w
ZXJ0aWVzIGNvbnN0ICYpDQorICAgID9yZXN0b3JlQnVpbHRpbnNASW50ZXJwcmV0ZXJAS0pTQEBR
QUVYQUJWU2F2ZWRCdWlsdGluc0AyQEBaIEAgMTIyIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnBy
ZXRlcjo6cmVzdG9yZUJ1aWx0aW5zKGNsYXNzIEtKUzo6U2F2ZWRCdWlsdGlucyBjb25zdCAmKQ0K
KyAgICA/c2F2ZUBQcm9wZXJ0eU1hcEBLSlNAQFFCRVhBQVZTYXZlZFByb3BlcnRpZXNAMkBAWiBA
IDEyMyBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnNhdmUoY2xhc3MgS0pTOjpTYXZl
ZFByb3BlcnRpZXMgJikgY29uc3QNCisgICAgP3NhdmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNA
QFFCRVhBQVZTYXZlZEJ1aWx0aW5zQDJAQFogQCAxMjQgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVy
cHJldGVyOjpzYXZlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zICYpIGNvbnN0DQor
ICAgID9zZXRDb21wYXRNb2RlQEludGVycHJldGVyQEtKU0BAUUFFWFc0Q29tcGF0TW9kZUAxMkBA
WiBAIDEyNSBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNldENvbXBhdE1vZGUoZW51
bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2RlKQ0KKyAgICA/c2V0SW50ZXJwcmV0ZXJAUm9v
dE9iamVjdEBCaW5kaW5nc0BLSlNAQFFBRVhQQVZJbnRlcnByZXRlckAzQEBaIEAgMTI2IE5PTkFN
RSA7IHZvaWQgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIoY2xhc3Mg
S0pTOjpJbnRlcnByZXRlciAqKQ0KKyAgICA/c2V0UHJvdG90eXBlQE9iamVjdEltcEBLSlNAQFFB
RVhBQlZWYWx1ZUAyQEBaIEAgMTI3IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnNldFBy
b3RvdHlwZShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQorICAgID9zZXRTaG91bGRQcmludEV4
Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQVhfTkBaIEAgMTI4IE5PTkFNRSA7IHZvaWQgS0pT
OjpJbnRlcnByZXRlcjo6c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJvb2wpDQorICAgID9zaG91
bGRQcmludEV4Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQV9OWFogQCAxMjkgTk9OQU1FIDsg
Ym9vbCBLSlM6OkludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnModm9pZCkNCisgICAg
P3RvQXJyYXlJbmRleEBVU3RyaW5nQEtKU0BAUUJFSVBBX05AWiBAIDEzMCBOT05BTUUgOyB1bnNp
Z25lZCBpbnQgS0pTOjpVU3RyaW5nOjp0b0FycmF5SW5kZXgoYm9vbCAqKSBjb25zdA0KKyAgICA/
dG9Cb29sZWFuQE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQFogQCAxMzEgTk9O
QU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6dG9Cb29sZWFuKGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICopIGNvbnN0DQorICAgID90b0ludDMyQFZhbHVlSW1wQEtKU0BAUUJFSFBBVkV4ZWNTdGF0ZUAy
QEBaIEAgMTMyIE5PTkFNRSA7IGludCBLSlM6OlZhbHVlSW1wOjp0b0ludDMyKGNsYXNzIEtKUzo6
RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b0ludGVnZXJAVmFsdWVJbXBAS0pTQEBRQkVOUEFW
RXhlY1N0YXRlQDJAQFogQCAxMzMgTk9OQU1FIDsgZG91YmxlIEtKUzo6VmFsdWVJbXA6OnRvSW50
ZWdlcihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9OdW1iZXJAT2JqZWN0
SW1wQEtKU0BAVUJFTlBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM0IE5PTkFNRSA7IGRvdWJsZSBLSlM6
Ok9iamVjdEltcDo6dG9OdW1iZXIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAg
P3RvT2JqZWN0QE9iamVjdEltcEBLSlNAQFVCRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBa
IEAgMTM1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjp0b09iamVj
dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9QcmltaXRpdmVAT2JqZWN0
SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFR5cGVAMkBAWiBAIDEzNiBO
T05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjp0b1ByaW1pdGl2ZShjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkgY29uc3QNCisgICAgP3RvU3RyaW5n
QE9iamVjdEltcEBLSlNAQFVCRT9BVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWiBAIDEzNyBO
T05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpPYmplY3RJbXA6OnRvU3RyaW5nKGNsYXNz
IEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b1VJbnQxNkBWYWx1ZUltcEBLSlNAQFFC
RUdQQVZFeGVjU3RhdGVAMkBAWiBAIDEzOCBOT05BTUUgOyB1bnNpZ25lZCBzaG9ydCBLSlM6OlZh
bHVlSW1wOjp0b1VJbnQxNihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9V
SW50MzJAVmFsdWVJbXBAS0pTQEBFQkVfTkFBSUBaIEAgMTM5IE5PTkFNRSA7IGJvb2wgS0pTOjpW
YWx1ZUltcDo6dG9VSW50MzIodW5zaWduZWQgaW50ICYpIGNvbnN0DQorICAgID90b1VJbnQzMkBW
YWx1ZUltcEBLSlNAQFFCRUlQQVZFeGVjU3RhdGVAMkBAWiBAIDE0MCBOT05BTUUgOyB1bnNpZ25l
ZCBpbnQgS0pTOjpWYWx1ZUltcDo6dG9VSW50MzIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29u
c3QNCisgICAgP3RvVUxvbmdAVVN0cmluZ0BLSlNAQFFCRUtQQV9OQFogQCAxNDEgTk9OQU1FIDsg
dW5zaWduZWQgbG9uZyBLSlM6OlVTdHJpbmc6OnRvVUxvbmcoYm9vbCAqKSBjb25zdA0KKyAgICA/
dHlwZUBPYmplY3RJbXBAS0pTQEBVQkU/QVc0VHlwZUAyQFhaIEAgMTQyIE5PTkFNRSA7IGVudW0g
S0pTOjpUeXBlIEtKUzo6T2JqZWN0SW1wOjp0eXBlKHZvaWQpIGNvbnN0DQorICAgID91bmxvY2tA
SW50ZXJwcmV0ZXJAS0pTQEBTQVhYWiBAIDE0MyBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0
ZXI6OnVubG9jayh2b2lkKQ0KKyAgICA/dmFsdWVAU3RyaW5nQEtKU0BAUUJFP0FWVVN0cmluZ0Ay
QFhaIEAgMTQ0IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBLSlM6OlN0cmluZzo6dmFsdWUo
dm9pZCkgY29uc3QNCisgICAgP3ZpcnR1YWxfaG9va0BJbnRlcnByZXRlckBLSlNAQE1BRVhIUEFY
QFogQCAxNDUgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjp2aXJ0dWFsX2hvb2soaW50
LCB2b2lkICopDQorICAgIE5QTl9DcmVhdGVPYmplY3QgQCAxNDYgTk9OQU1FDQorICAgIE5QTl9F
dmFsdWF0ZSBAIDE0NyBOT05BTUUNCisgICAgTlBOX0dldEludElkZW50aWZpZXIgQCAxNDggTk9O
QU1FDQorICAgIE5QTl9HZXRQcm9wZXJ0eSBAIDE0OSBOT05BTUUNCisgICAgTlBOX0dldFN0cmlu
Z0lkZW50aWZpZXIgQCAxNTAgTk9OQU1FDQorICAgIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyBA
IDE1MSBOT05BTUUNCisgICAgTlBOX0hhc01ldGhvZCBAIDE1MiBOT05BTUUNCisgICAgTlBOX0hh
c1Byb3BlcnR5IEAgMTUzIE5PTkFNRQ0KKyAgICBOUE5fSWRlbnRpZmllcklzU3RyaW5nIEAgMTU0
IE5PTkFNRQ0KKyAgICBOUE5fSW50RnJvbUlkZW50aWZpZXIgQCAxNTUgTk9OQU1FDQorICAgIE5Q
Tl9JbnZva2UgQCAxNTYgTk9OQU1FDQorICAgIE5QTl9JbnZva2VEZWZhdWx0IEAgMTU3IE5PTkFN
RQ0KKyAgICBOUE5fUmVsZWFzZU9iamVjdCBAIDE1OCBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VW
YXJpYW50VmFsdWUgQCAxNTkgTk9OQU1FDQorICAgIE5QTl9SZW1vdmVQcm9wZXJ0eSBAIDE2MCBO
T05BTUUNCisgICAgTlBOX1JldGFpbk9iamVjdCBAIDE2MSBOT05BTUUNCisgICAgTlBOX1NldEV4
Y2VwdGlvbiBAIDE2MiBOT05BTUUNCisgICAgTlBOX1NldFByb3BlcnR5IEAgMTYzIE5PTkFNRQ0K
KyAgICBOUE5fVVRGOEZyb21JZGVudGlmaWVyIEAgMTY0IE5PTkFNRQ0KKyAgICBfTlBOX0NyZWF0
ZVNjcmlwdE9iamVjdCBAIDE2NSBOT05BTUUNCisgICAga2pzX3N0cnRvZCBAIDE2NiBOT05BTUUN
CiANCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ncm91cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWYN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ncm91cC9FQUJJL0phdmFzY3JpcHRDb3Jl
VS5kZWYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2dyb3VwL0VBQkkvSmF2
YXNjcmlwdENvcmVVLmRlZgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMzkwICsxLDQzNCBAQA0KIEVY
UE9SVFMNCi0JX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEtjIEAgMSBOT05BTUUNCi0JX1pOM0tK
UzEwSWRlbnRpZmllcjNhZGRFUE5TXzdVU3RyaW5nM1JlcEUgQCAyIE5PTkFNRQ0KLQlfWk4zS0pT
MTBJZGVudGlmaWVyNWVxdWFsRVBOU183VVN0cmluZzNSZXBFUEtOU181VUNoYXJFaSBAIDMgTk9O
QU1FDQotCV9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQS2MgQCA0
IE5PTkFNRQ0KLQlfWk4zS0pTMTBTY29wZUNoYWluNHB1c2hFUE5TXzlPYmplY3RJbXBFIEAgNSBO
T05BTUUNCi0JX1pOM0tKUzEwU2NvcGVDaGFpbjdyZWxlYXNlRXYgQCA2IE5PTkFNRQ0KLQlfWk4z
S0pTMTBTY29wZUNoYWluYVNFUktTMF8gQCA3IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRl
cjEwZ2xvYmFsRXhlY0V2IEAgOCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxMnZpcnR1
YWxfaG9va0VpUHYgQCA5IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjEzc2V0Q29tcGF0
TW9kZUVOUzBfMTBDb21wYXRNb2RlRSBAIDEwIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRl
cjE1cmVzdG9yZUJ1aWx0aW5zRVJLTlNfMTNTYXZlZEJ1aWx0aW5zRSBAIDExIE5PTkFNRQ0KLQlf
Wk4zS0pTMTFJbnRlcnByZXRlcjE2aW5pdEdsb2JhbE9iamVjdEV2IEAgMTIgTk9OQU1FDQotCV9a
TjNLSlMxMUludGVycHJldGVyMTdpbmNTdGF0ZW1lbnRDb3VudEV2IEAgMTMgTk9OQU1FDQotCV9a
TjNLSlMxMUludGVycHJldGVyMTlyZXNldFN0YXRlbWVudENvdW50RXYgQCAxNCBOT05BTUUNCi0J
X1pOM0tKUzExSW50ZXJwcmV0ZXIyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2IEAgMTUgTk9OQU1F
DQotCV9aTjNLSlMxMUludGVycHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYiBAIDE2
IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjRsb2NrRXYgQCAxNyBOT05BTUUNCi0JX1pO
M0tKUzExSW50ZXJwcmV0ZXI2dW5sb2NrRXYgQCAxOCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJw
cmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VSS05TXzVWYWx1ZUVTM18gQCAxOSBOT05BTUUN
Ci0JX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VpUzNfUktOU181
VmFsdWVFIEAgMjAgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyQzFFUktOU182T2JqZWN0
RSBAIDIxIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlckMyRVJLTlNfNk9iamVjdEUgQCAy
MiBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXJEMEV2IEAgMjMgTk9OQU1FDQotCV9aTjNL
SlMxMUludGVycHJldGVyRDFFdiBAIDI0IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlckQy
RXYgQCAyNSBOT05BTUUNCi0JX1pOM0tKUzExUHJvcGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2
ZWRQcm9wZXJ0aWVzRSBAIDI2IE5PTkFNRQ0KLQlfWk4zS0pTMTRsZW5ndGhQcm9wZXJ0eUV2IEAg
MjcgTk9OQU1FDQotCV9aTjNLSlMxNW1lc3NhZ2VQcm9wZXJ0eUV2IEAgMjggTk9OQU1FDQotCV9a
TjNLSlM0TGlzdDExZGVyZWZWYWx1ZXNFdiBAIDI5IE5PTkFNRQ0KLQlfWk4zS0pTNExpc3Q2YXBw
ZW5kRVBOU184VmFsdWVJbXBFIEAgMzAgTk9OQU1FDQotCV9aTjNLSlM0TGlzdDdyZWxlYXNlRXYg
QCAzMSBOT05BTUUNCi0JX1pOM0tKUzRMaXN0OXJlZlZhbHVlc0V2IEAgMzIgTk9OQU1FDQotCV9a
TjNLSlM0TGlzdEMxRXYgQCAzMyBOT05BTUUNCi0JX1pOM0tKUzRMaXN0QzJFdiBAIDM0IE5PTkFN
RQ0KLQlfWk4zS0pTNExpc3RhU0VSS1MwXyBAIDM1IE5PTkFNRQ0KLQlfWk4zS0pTNE51bGxDMUV2
IEAgMzYgTk9OQU1FDQotCV9aTjNLSlM0TnVsbEMyRXYgQCAzNyBOT05BTUUNCi0JX1pOM0tKUzVF
cnJvcjZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2NpaVBLTlNfN1VTdHJp
bmdFIEAgMzggTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVDMUVQTlNfOFZhbHVlSW1wRSBAIDM5IE5P
TkFNRQ0KLQlfWk4zS0pTNVZhbHVlQzFFUktTMF8gQCA0MCBOT05BTUUNCi0JX1pOM0tKUzVWYWx1
ZUMyRVBOU184VmFsdWVJbXBFIEAgNDEgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVDMkVSS1MwXyBA
IDQyIE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlRDFFdiBAIDQzIE5PTkFNRQ0KLQlfWk4zS0pTNVZh
bHVlRDJFdiBAIDQ0IE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlYVNFUktTMF8gQCA0NSBOT05BTUUN
Ci0JX1pOM0tKUzZMb29rdXA5ZmluZEVudHJ5RVBLTlNfOUhhc2hUYWJsZUVSS05TXzEwSWRlbnRp
ZmllckUgQCA0NiBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVkIEAgNDcgTk9OQU1FDQotCV9a
TjNLSlM2TnVtYmVyQzFFaSBAIDQ4IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMxRWogQCA0OSBO
T05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVsIEAgNTAgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVy
QzFFbSBAIDUxIE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRWQgQCA1MiBOT05BTUUNCi0JX1pO
M0tKUzZOdW1iZXJDMkVpIEAgNTMgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzJFaiBAIDU0IE5P
TkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRWwgQCA1NSBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJD
MkVtIEAgNTYgTk9OQU1FDQotCV9aTjNLSlM2T2JqZWN0MTFkeW5hbWljQ2FzdEVSS05TXzVWYWx1
ZUUgQCA1NyBOT05BTUUNCi0JX1pOM0tKUzZPYmplY3Q0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSUzBf
UktOU180TGlzdEUgQCA1OCBOT05BTUUNCi0JX1pOM0tKUzZTdHJpbmdDMUVSS05TXzdVU3RyaW5n
RSBAIDU5IE5PTkFNRQ0KLQlfWk4zS0pTNlN0cmluZ0MyRVJLTlNfN1VTdHJpbmdFIEAgNjAgTk9O
QU1FDQotCV9aTjNLSlM3Qm9vbGVhbkMxRWIgQCA2MSBOT05BTUUNCi0JX1pOM0tKUzdCb29sZWFu
QzJFYiBAIDYyIE5PTkFNRQ0KLQlfWk4zS0pTN0NTdHJpbmdhU0VQS2MgQCA2MyBOT05BTUUNCi0J
X1pOM0tKUzdVU3RyaW5nMTBhdHRhY2hOdWxsRXYgQCA2NCBOT05BTUUNCi0JX1pOM0tKUzdVU3Ry
aW5nM1JlcDEzY3JlYXRlQ29weWluZ0VQS05TXzVVQ2hhckVpIEAgNjUgTk9OQU1FDQotCV9aTjNL
SlM3VVN0cmluZzNSZXA2Y3JlYXRlRVBOU181VUNoYXJFaSBAIDY2IE5PTkFNRQ0KLQlfWk4zS0pT
N1VTdHJpbmczUmVwN2Rlc3Ryb3lFdiBAIDY3IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmc0ZnJv
bUVsIEAgNjggTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUEtjIEAgNjkgTk9OQU1F
DQotCV9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUktTMF8gQCA3MCBOT05BTUUNCi0JX1pOM0tKUzdV
U3RyaW5nQzFFUEtOU181VUNoYXJFaSBAIDcxIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQ
S2MgQCA3MiBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzFFUE5TXzVVQ2hhckVpYiBAIDczIE5P
TkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVSS1MwX1MyXyBAIDc0IE5PTkFNRQ0KLQlfWk4zS0pT
N1VTdHJpbmdDMUVjIEAgNzUgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRXYgQCA3NiBOT05B
TUUNCi0JX1pOM0tKUzdVU3RyaW5nQzJFUEtOU181VUNoYXJFaSBAIDc3IE5PTkFNRQ0KLQlfWk4z
S0pTN1VTdHJpbmdDMkVQS2MgQCA3OCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzJFUE5TXzVV
Q2hhckVpYiBAIDc5IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVSS1MwX1MyXyBAIDgwIE5P
TkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVjIEAgODEgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmlu
Z0MyRXYgQCA4MiBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nYVNFUktTMF8gQCA4MyBOT05BTUUN
Ci0JX1pOM0tKUzhWYWx1ZUltcGRsRVB2IEAgODQgTk9OQU1FDQotCV9aTjNLSlM4VmFsdWVJbXBu
d0VqIEAgODUgTk9OQU1FDQotCV9aTjNLSlM5Q29sbGVjdG9yN2NvbGxlY3RFdiBAIDg2IE5PTkFN
RQ0KLQlfWk4zS0pTOU9iamVjdEltcDExaGFzSW5zdGFuY2VFUE5TXzlFeGVjU3RhdGVFUktOU181
VmFsdWVFIEAgODcgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wMTJzZXRQcm90b3R5cGVFUktO
U181VmFsdWVFIEAgODggTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wMTRkZWxldGVQcm9wZXJ0
eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCA4OSBOT05BTUUNCi0JX1pOM0tK
UzlPYmplY3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCA5MCBOT05BTUUN
Ci0JX1pOM0tKUzlPYmplY3RJbXAxOWRlbGV0ZUFsbFByb3BlcnRpZXNFUE5TXzlFeGVjU3RhdGVF
IEAgOTEgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wM3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckVSS05TXzVWYWx1ZUVpIEAgOTIgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0
SW1wM3B1dEVQTlNfOUV4ZWNTdGF0ZUVqUktOU181VmFsdWVFaSBAIDkzIE5PTkFNRQ0KLQlfWk4z
S0pTOU9iamVjdEltcDRjYWxsRVBOU185RXhlY1N0YXRlRVJOU182T2JqZWN0RVJLTlNfNExpc3RF
IEAgOTQgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wNG1hcmtFdiBAIDk1IE5PTkFNRQ0KLQlf
Wk4zS0pTOU9iamVjdEltcDhwcm9wTGlzdEVQTlNfOUV4ZWNTdGF0ZUViIEAgOTYgTk9OQU1FDQot
CV9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RSBA
IDk3IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVF
UktOU180TGlzdEVSS05TXzdVU3RyaW5nRWkgQCA5OCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJ
bXA5cHV0RGlyZWN0RVJLTlNfMTBJZGVudGlmaWVyRVBOU184VmFsdWVJbXBFaSBAIDk5IE5PTkFN
RQ0KLQlfWk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFaWkgQCAx
MDAgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wQzFFUktOU182T2JqZWN0RSBAIDEwMSBOT05B
TUUNCi0JX1pOM0tKUzlPYmplY3RJbXBDMUV2IEAgMTAyIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVj
dEltcEMyRVJLTlNfNk9iamVjdEUgQCAxMDMgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wQzJF
diBAIDEwNCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBEMEV2IEAgMTA1IE5PTkFNRQ0KLQlf
Wk4zS0pTOU9iamVjdEltcEQxRXYgQCAxMDYgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wRDJF
diBAIDEwNyBOT05BTUUNCi0JX1pOM0tKUzlVbmRlZmluZWRDMUV2IEAgMTA4IE5PTkFNRQ0KLQlf
Wk4zS0pTOVVuZGVmaW5lZEMyRXYgQCAxMDkgTk9OQU1FDQotCV9aTjNLSlNlcUVSS05TXzdVU3Ry
aW5nRVBLYyBAIDExMCBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTBjb21wYXRNb2Rl
RXYgQCAxMTEgTk9OQU1FDQotCV9aTkszS0pTMTFJbnRlcnByZXRlcjEyYnVpbHRpbkFycmF5RXYg
QCAxMTIgTk9OQU1FDQotCV9aTkszS0pTMTFJbnRlcnByZXRlcjEyZ2xvYmFsT2JqZWN0RXYgQCAx
MTMgTk9OQU1FDQotCV9aTkszS0pTMTFJbnRlcnByZXRlcjEyc2F2ZUJ1aWx0aW5zRVJOU18xM1Nh
dmVkQnVpbHRpbnNFIEAgMTE0IE5PTkFNRQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIxM2J1aWx0
aW5PYmplY3RFdiBAIDExNSBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTVidWlsdGlu
RnVuY3Rpb25FdiBAIDExNiBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMjJidWlsdGlu
T2JqZWN0UHJvdG90eXBlRXYgQCAxMTcgTk9OQU1FDQotCV9aTkszS0pTMTFQcm9wZXJ0eU1hcDNn
ZXRFUktOU18xMElkZW50aWZpZXJFIEAgMTE4IE5PTkFNRQ0KLQlfWk5LM0tKUzExUHJvcGVydHlN
YXA0c2F2ZUVSTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMTE5IE5PTkFNRQ0KLQlfWk5LM0tKUzRM
aXN0NWltcEF0RWkgQCAxMjAgTk9OQU1FDQotCV9aTkszS0pTNExpc3Q4Y29weVRhaWxFdiBAIDEy
MSBOT05BTUUNCi0JX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckUgQCAxMjIgTk9OQU1FDQotCV9aTkszS0pTNk9iamVjdDExaGFzUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDEyMyBOT05BTUUNCi0JX1pOSzNLSlM2T2JqZWN0MTRo
YXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxMjQgTk9O
QU1FDQotCV9aTkszS0pTNlN0cmluZzV2YWx1ZUV2IEAgMTI1IE5PTkFNRQ0KLQlfWk5LM0tKUzdV
U3RyaW5nMTJ0b0FycmF5SW5kZXhFUGIgQCAxMjYgTk9OQU1FDQotCV9aTkszS0pTN1VTdHJpbmc1
YXNjaWlFdiBAIDEyNyBOT05BTUUNCi0JX1pOSzNLSlM3VVN0cmluZzZpc051bGxFdiBAIDEyOCBO
T05BTUUNCi0JX1pOSzNLSlM3VVN0cmluZzd0b1VMb25nRVBiIEAgMTI5IE5PTkFNRQ0KLQlfWk5L
M0tKUzhWYWx1ZUltcDE2ZGlzcGF0Y2hUb09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzAgTk9O
QU1FDQotCV9aTkszS0pTOFZhbHVlSW1wNm1hcmtlZEV2IEAgMTMxIE5PTkFNRQ0KLQlfWk5LM0tK
UzhWYWx1ZUltcDd0b0ludDMyRVBOU185RXhlY1N0YXRlRSBAIDEzMiBOT05BTUUNCi0JX1pOSzNL
SlM4VmFsdWVJbXA4dG9VSW50MTZFUE5TXzlFeGVjU3RhdGVFIEAgMTMzIE5PTkFNRQ0KLQlfWk5L
M0tKUzhWYWx1ZUltcDh0b1VJbnQzMkVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzQgTk9OQU1FDQotCV9a
TkszS0pTOFZhbHVlSW1wOHRvVUludDMyRVJqIEAgMTM1IE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1
ZUltcDl0b0ludGVnZXJFUE5TXzlFeGVjU3RhdGVFIEAgMTM2IE5PTkFNRQ0KLQlfWk5LM0tKUzlF
eGVjU3RhdGUxOGxleGljYWxJbnRlcnByZXRlckV2IEAgMTM3IE5PTkFNRQ0KLQlfWk5LM0tKUzlP
YmplY3RJbXAxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBA
IDEzOCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNT
dGF0ZUVqIEAgMTM5IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxMXRvUHJpbWl0aXZlRVBO
U185RXhlY1N0YXRlRU5TXzRUeXBlRSBAIDE0MCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1w
MTJkZWZhdWx0VmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTQxIE5PTkFNRQ0KLQlf
Wk5LM0tKUzlPYmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRSBAIDE0MiBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTRoYXNPd25Qcm9w
ZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTQzIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAx
NGltcGxlbWVudHNDYWxsRXYgQCAxNDQgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE5aW1w
bGVtZW50c0NvbnN0cnVjdEV2IEAgMTQ1IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAyMWlt
cGxlbWVudHNIYXNJbnN0YW5jZUV2IEAgMTQ2IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAz
Z2V0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE0NyBOT05BTUUNCi0JX1pO
SzNLSlM5T2JqZWN0SW1wM2dldEVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTQ4IE5PTkFNRQ0KLQlfWk5L
M0tKUzlPYmplY3RJbXA0dHlwZUV2IEAgMTQ5IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA2
Y2FuUHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE1MCBOT05BTUUNCi0J
X1pOSzNLSlM5T2JqZWN0SW1wOGluaGVyaXRzRVBLTlNfOUNsYXNzSW5mb0UgQCAxNTEgTk9OQU1F
DQotCV9aTkszS0pTOU9iamVjdEltcDh0b051bWJlckVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTIgTk9O
QU1FDQotCV9aTkszS0pTOU9iamVjdEltcDh0b09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTMg
Tk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDh0b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUgQCAx
NTQgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDljbGFzc0luZm9FdiBAIDE1NSBOT05BTUUN
Ci0JX1pOSzNLSlM5T2JqZWN0SW1wOWNsYXNzTmFtZUV2IEAgMTU2IE5PTkFNRQ0KLQlfWk5LM0tK
UzlPYmplY3RJbXA5cHJvdG90eXBlRXYgQCAxNTcgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdElt
cDl0b0Jvb2xlYW5FUE5TXzlFeGVjU3RhdGVFIEAgMTU4IE5PTkFNRQ0KLQlfWlRJTjNLSlMxMEFz
c2lnbk5vZGVFIEAgMTU5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwQm9v
bGVhbkltcEUgQCAxNjAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBEZWxl
dGVOb2RlRSBAIDE2MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxME5lZ2F0
ZU5vZGVFIEAgMTYyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwTnVtYmVy
Tm9kZUUgQCAxNjMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBQcmVmaXhO
b2RlRSBAIDE2NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFJlZ0V4cE5v
ZGVFIEAgMTY1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwUmV0dXJuTm9k
ZUUgQCAxNjYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBTdHJpbmdOb2Rl
RSBAIDE2NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFN3aXRjaE5vZGVF
IEAgMTY4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwVHlwZU9mTm9kZUUg
QCAxNjkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFCaXRPcGVyTm9kZUUg
QCAxNzAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFCb29sZWFuTm9kZUUg
QCAxNzEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFEb1doaWxlTm9kZUUg
QCAxNzIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFFbGVtZW50Tm9kZUUg
QCAxNzMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFGaW5hbGx5Tm9kZUUg
QCAxNzQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFGdW5jdGlvbkltcEUg
QCAxNzUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTFJbnRlcnByZXRlckUg
QCAxNzYgTk9OQU1FIERBVEEgOCA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMU1hdGhGdW5jSW1wRSBA
IDE3NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMU5ld0V4cHJOb2RlRSBA
IDE3OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMVBvc3RmaXhOb2RlRSBA
IDE3OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMVJlc29sdmVOb2RlRSBA
IDE4MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMVZhckRlY2xOb2RlRSBA
IDE4MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMkNvbnRpbnVlTm9kZUUg
QCAxODIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJGdW5jRGVjbE5vZGVF
IEAgMTgzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEyRnVuY0V4cHJOb2Rl
RSBAIDE4NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMlByb3BlcnR5Tm9k
ZUUgQCAxODUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJTdGF0TGlzdE5v
ZGVFIEAgMTg2IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEyVW5kZWZpbmVk
SW1wRSBAIDE4NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0FjY2Vzc29y
Tm9kZTFFIEAgMTg4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzQWNjZXNz
b3JOb2RlMkUgQCAxODkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNBY3Rp
dmF0aW9uSW1wRSBAIDE5MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0Fy
Z3VtZW50c05vZGVFIEAgMTkxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEz
Q2FzZUJsb2NrTm9kZUUgQCAxOTIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTNEYXRlT2JqZWN0SW1wRSBAIDE5MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxM0dsb2JhbEZ1bmNJbXBFIEAgMTk0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzEzTWF0aE9iamVjdEltcEUgQCAxOTUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDE5NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMTk3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzEzVW5hcnlQbHVzTm9kZUUgQCAxOTggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAxOTkgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTRBc3NpZ25FeHByTm9kZUUgQCAyMDAgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTRCaXR3aXNlTm90Tm9kZUUgQCAyMDEgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRDYXNlQ2xhdXNlTm9kZUUgQCAyMDIgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRDbGF1c2VMaXN0Tm9kZUUgQCAyMDMgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRFcnJvck9iamVjdEltcEUgQCAyMDQgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAyMDUgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTROYXRpdmVFcnJvckltcEUgQCAyMDYg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRSZWxhdGlvbmFsTm9kZUUgQCAy
MDcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVDb25kaXRpb25hbE5vZGVF
IEAgMjA4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1TnVtYmVyT2JqZWN0
SW1wRSBAIDIwOSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNU9iamVjdE9i
amVjdEltcEUgQCAyMTAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVSZWdF
eHBPYmplY3RJbXBFIEAgMjExIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1
U3RyaW5nT2JqZWN0SW1wRSBAIDIxMiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxNVZhckRlY2xMaXN0Tm9kZUUgQCAyMTMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTZBcmd1bWVudExpc3ROb2RlRSBAIDIxNCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxNkFycmF5SW5zdGFuY2VJbXBFIEAgMjE1IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAyMTYgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZEYXRlUHJvdG9GdW5jSW1wRSBAIDIxNyBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkRhdGVQcm90b3R5cGVJbXBFIEAgMjE4IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAyMTkg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBA
IDIyMCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNlZhclN0YXRlbWVudE5v
ZGVFIEAgMjIxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3QXJyYXlQcm90
b0Z1bmNJbXBFIEAgMjIyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3QXJy
YXlQcm90b3R5cGVJbXBFIEAgMjIzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzE3QmluYXJ5TG9naWNhbE5vZGVFIEAgMjI0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzE3RGF0ZU9iamVjdEZ1bmNJbXBFIEAgMjI1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzE3RXJyb3JQcm90b0Z1bmNJbXBFIEAgMjI2IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMjI3IE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3RnVuY3Rpb25PYmplY3RJbXBFIEAgMjI4IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3T2JqZWN0TGl0ZXJhbE5vZGVFIEAgMjI5
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3UHJvcGVydHlWYWx1ZU5vZGVF
IEAgMjMwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3U3RyaW5nSW5zdGFu
Y2VJbXBFIEAgMjMxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4RW1wdHlT
dGF0ZW1lbnROb2RlRSBAIDIzMiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
OE51bWJlclByb3RvRnVuY0ltcEUgQCAyMzMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMThPYmplY3RQcm90b0Z1bmNJbXBFIEAgMjM0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzE4UmVnRXhwUHJvdG9GdW5jSW1wRSBAIDIzNSBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAyMzYgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThTdHJpbmdQcm90b0Z1bmNJbXBFIEAgMjM3IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4U3RyaW5nUHJvdG90eXBlSW1wRSBA
IDIzOCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOUJvb2xlYW5Qcm90b0Z1
bmNJbXBFIEAgMjM5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE5RGVjbGFy
ZWRGdW5jdGlvbkltcEUgQCAyNDAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTlJbnRlcm5hbEZ1bmN0aW9uSW1wRSBAIDI0MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxOVN0cmluZ09iamVjdEZ1bmNJbXBFIEAgMjQyIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzIwRnVuY3Rpb25Qcm90b0Z1bmNJbXBFIEAgMjQzIE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzIwRnVuY3Rpb25Qcm90b3R5cGVJbXBFIEAgMjQ0IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzROb2RlRSBAIDI0NSBOT05BTUUgREFU
QSA4IDsgIzxUST4jDQotCV9aVElOM0tKUzZJZk5vZGVFIEAgMjQ2IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzdBZGROb2RlRSBAIDI0NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlM3Rm9yTm9kZUUgQCAyNDggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTN051bGxJbXBFIEAgMjQ5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzdUcnlOb2RlRSBAIDI1MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4
RGVidWdnZXJFIEAgMjUxIE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pUSU4zS0pTOE11bHRO
b2RlRSBAIDI1MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4TnVsbE5vZGVF
IEAgMjUzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzhUaGlzTm9kZUUgQCAy
NTQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTOFZhbHVlSW1wRSBAIDI1NSBO
T05BTUUgREFUQSA4IDsgIzxUST4jDQotCV9aVElOM0tKUzhWb2lkTm9kZUUgQCAyNTYgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTOFdpdGhOb2RlRSBAIDI1NyBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5QXJyYXlOb2RlRSBAIDI1OCBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5QmxvY2tOb2RlRSBAIDI1OSBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlM5QnJlYWtOb2RlRSBAIDI2MCBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlM5Q2F0Y2hOb2RlRSBAIDI2MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlM5Q29tbWFOb2RlRSBAIDI2MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlM5RXF1YWxOb2RlRSBAIDI2MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlM5Rm9ySW5Ob2RlRSBAIDI2NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlM5R3JvdXBOb2RlRSBAIDI2NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlM5TGFiZWxOb2RlRSBAIDI2NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5
TnVtYmVySW1wRSBAIDI2NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5T2Jq
ZWN0SW1wRSBAIDI2OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5UmVnRXhw
SW1wRSBAIDI2OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5U2hpZnROb2Rl
RSBAIDI3MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5U3RyaW5nSW1wRSBA
IDI3MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5VGhyb3dOb2RlRSBAIDI3
MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5V2hpbGVOb2RlRSBAIDI3MyBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRWTjNLSlMxMEFzc2lnbk5vZGVFIEAgMjc0IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwQm9vbGVhbkltcEUgQCAyNzUgTk9O
QU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBEZWxldGVOb2RlRSBAIDI3NiBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxME5lZ2F0ZU5vZGVFIEAgMjc3IE5PTkFN
RSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwTnVtYmVyTm9kZUUgQCAyNzggTk9OQU1F
IERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBQcmVmaXhOb2RlRSBAIDI3OSBOT05BTUUg
REFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFJlZ0V4cE5vZGVFIEAgMjgwIE5PTkFNRSBE
QVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwUmV0dXJuTm9kZUUgQCAyODEgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBTdHJpbmdOb2RlRSBAIDI4MiBOT05BTUUgREFU
QSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFN3aXRjaE5vZGVFIEAgMjgzIE5PTkFNRSBEQVRB
IDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwVHlwZU9mTm9kZUUgQCAyODQgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFCaXRPcGVyTm9kZUUgQCAyODUgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFCb29sZWFuTm9kZUUgQCAyODYgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFEb1doaWxlTm9kZUUgQCAyODcgTk9OQU1FIERBVEEg
NDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFFbGVtZW50Tm9kZUUgQCAyODggTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFGaW5hbGx5Tm9kZUUgQCAyODkgTk9OQU1FIERBVEEg
NDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFGdW5jdGlvbkltcEUgQCAyOTAgTk9OQU1FIERBVEEg
MTQ4IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExSW50ZXJwcmV0ZXJFIEAgMjkxIE5PTkFNRSBEQVRB
IDQwIDsgIzxWVD4jDQotCV9aVFZOM0tKUzExTWF0aEZ1bmNJbXBFIEAgMjkyIE5PTkFNRSBEQVRB
IDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDI5MyBOT05BTUUgREFU
QSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMVBvc3RmaXhOb2RlRSBAIDI5NCBOT05BTUUgREFU
QSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMVJlc29sdmVOb2RlRSBAIDI5NSBOT05BTUUgREFU
QSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMVZhckRlY2xOb2RlRSBAIDI5NiBOT05BTUUgREFU
QSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMkNvbnRpbnVlTm9kZUUgQCAyOTcgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJGdW5jRGVjbE5vZGVFIEAgMjk4IE5PTkFNRSBE
QVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDI5OSBOT05BTUUg
REFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMlByb3BlcnR5Tm9kZUUgQCAzMDAgTk9OQU1F
IERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJTdGF0TGlzdE5vZGVFIEAgMzAxIE5PTkFN
RSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEyVW5kZWZpbmVkSW1wRSBAIDMwMiBOT05B
TUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAgMzAzIE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMkUgQCAzMDQg
Tk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNBY3RpdmF0aW9uSW1wRSBAIDMw
NSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNBcmd1bWVudHNOb2RlRSBA
IDMwNiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM0Nhc2VCbG9ja05vZGVF
IEAgMzA3IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzRGF0ZU9iamVjdElt
cEUgQCAzMDggTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzR2xvYmFsRnVu
Y0ltcEUgQCAzMDkgTk9OQU1FIERBVEEgMTQwIDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzTWF0aE9i
amVjdEltcEUgQCAzMTAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzUGFy
YW1ldGVyTm9kZUUgQCAzMTEgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNT
dGF0ZW1lbnROb2RlRSBAIDMxMiBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
M1VuYXJ5UGx1c05vZGVFIEAgMzEzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzE0QXJyYXlPYmplY3RJbXBFIEAgMzE0IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxNEFzc2lnbkV4cHJOb2RlRSBAIDMxNSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDMxNiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxNENhc2VDbGF1c2VOb2RlRSBAIDMxNyBOT05BTUUgREFUQSAzNiA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlMxNENsYXVzZUxpc3ROb2RlRSBAIDMxOCBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDMxOSBOT05BTUUgREFUQSAxMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAzMjAgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTROYXRpdmVFcnJvckltcEUgQCAzMjEgTk9OQU1FIERB
VEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0UmVsYXRpb25hbE5vZGVFIEAgMzIyIE5PTkFN
RSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1Q29uZGl0aW9uYWxOb2RlRSBAIDMyMyBO
T05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNU51bWJlck9iamVjdEltcEUgQCAz
MjQgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1T2JqZWN0T2JqZWN0SW1w
RSBAIDMyNSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVSZWdFeHBPYmpl
Y3RJbXBFIEAgMzI2IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNVN0cmlu
Z09iamVjdEltcEUgQCAzMjcgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1
VmFyRGVjbExpc3ROb2RlRSBAIDMyOCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAgMzI5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAzMzAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAzMzEgTk9OQU1FIERBVEEgMTM2IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzE2RGF0ZVByb3RvRnVuY0ltcEUgQCAzMzIgTk9OQU1FIERBVEEg
MTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAzMzMgTk9OQU1F
IERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAzMzQg
Tk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBA
IDMzNSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNlZhclN0YXRlbWVudE5v
ZGVFIEAgMzM2IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3QXJyYXlQcm90
b0Z1bmNJbXBFIEAgMzM3IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0Fy
cmF5UHJvdG90eXBlSW1wRSBAIDMzOCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAzMzkgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUgQCAzNDAgTk9OQU1FIERBVEEgMTM2IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzE3RXJyb3JQcm90b0Z1bmNJbXBFIEAgMzQxIE5PTkFNRSBEQVRBIDEz
NiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0V4cHJTdGF0ZW1lbnROb2RlRSBAIDM0MiBOT05BTUUg
REFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDM0MyBO
T05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdPYmplY3RMaXRlcmFsTm9kZUUg
QCAzNDQgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdQcm9wZXJ0eVZhbHVl
Tm9kZUUgQCAzNDUgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdTdHJpbmdJ
bnN0YW5jZUltcEUgQCAzNDYgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4
RW1wdHlTdGF0ZW1lbnROb2RlRSBAIDM0NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUgQCAzNDggTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE4T2JqZWN0UHJvdG9GdW5jSW1wRSBAIDM0OSBOT05BTUUgREFUQSAxMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMzUwIE5PTkFNRSBE
QVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAzNTEg
Tk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThTdHJpbmdQcm90b0Z1bmNJbXBF
IEAgMzUyIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFN0cmluZ1Byb3Rv
dHlwZUltcEUgQCAzNTMgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5Qm9v
bGVhblByb3RvRnVuY0ltcEUgQCAzNTQgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzE5RGVjbGFyZWRGdW5jdGlvbkltcEUgQCAzNTUgTk9OQU1FIERBVEEgMTQ4IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE5SW50ZXJuYWxGdW5jdGlvbkltcEUgQCAzNTYgTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5U3RyaW5nT2JqZWN0RnVuY0ltcEUgQCAzNTcgTk9OQU1F
IERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzIwRnVuY3Rpb25Qcm90b0Z1bmNJbXBFIEAg
MzU4IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMyMEZ1bmN0aW9uUHJvdG90
eXBlSW1wRSBAIDM1OSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTNE5vZGVF
IEAgMzYwIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzZJZk5vZGVFIEAgMzYx
IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzdBZGROb2RlRSBAIDM2MiBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM3Rm9yTm9kZUUgQCAzNjMgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTN051bGxJbXBFIEAgMzY0IE5PTkFNRSBEQVRBIDQ4
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzdUcnlOb2RlRSBAIDM2NSBOT05BTUUgREFUQSA0NCA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlM4RGVidWdnZXJFIEAgMzY2IE5PTkFNRSBEQVRBIDQwIDsgIzxWVD4j
DQotCV9aVFZOM0tKUzhNdWx0Tm9kZUUgQCAzNjcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTOE51bGxOb2RlRSBAIDM2OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlM4VGhpc05vZGVFIEAgMzY5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzhWYWx1ZUltcEUgQCAzNzAgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOFZv
aWROb2RlRSBAIDM3MSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4V2l0aE5v
ZGVFIEAgMzcyIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlBcnJheU5vZGVF
IEAgMzczIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlCbG9ja05vZGVFIEAg
Mzc0IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlCcmVha05vZGVFIEAgMzc1
IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlDYXRjaE5vZGVFIEAgMzc2IE5P
TkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlDb21tYU5vZGVFIEAgMzc3IE5PTkFN
RSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlFcXVhbE5vZGVFIEAgMzc4IE5PTkFNRSBE
QVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlGb3JJbk5vZGVFIEAgMzc5IE5PTkFNRSBEQVRB
IDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlHcm91cE5vZGVFIEAgMzgwIE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlMYWJlbE5vZGVFIEAgMzgxIE5PTkFNRSBEQVRBIDQ0IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzlOdW1iZXJJbXBFIEAgMzgyIE5PTkFNRSBEQVRBIDQ4IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzlPYmplY3RJbXBFIEAgMzgzIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlM5UmVnRXhwSW1wRSBAIDM4NCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTOVNoaWZ0Tm9kZUUgQCAzODUgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTOVN0cmluZ0ltcEUgQCAzODYgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTOVRocm93Tm9kZUUgQCAzODcgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTOVdoaWxlTm9kZUUgQCAzODggTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCisgICAgTlBOX0Ny
ZWF0ZU9iamVjdCBAIDEgTk9OQU1FDQorICAgIE5QTl9FdmFsdWF0ZSBAIDIgTk9OQU1FDQorICAg
IE5QTl9HZXRJbnRJZGVudGlmaWVyIEAgMyBOT05BTUUNCisgICAgTlBOX0dldFByb3BlcnR5IEAg
NCBOT05BTUUNCisgICAgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgQCA1IE5PTkFNRQ0KKyAgICBO
UE5fR2V0U3RyaW5nSWRlbnRpZmllcnMgQCA2IE5PTkFNRQ0KKyAgICBOUE5fSGFzTWV0aG9kIEAg
NyBOT05BTUUNCisgICAgTlBOX0hhc1Byb3BlcnR5IEAgOCBOT05BTUUNCisgICAgTlBOX0lkZW50
aWZpZXJJc1N0cmluZyBAIDkgTk9OQU1FDQorICAgIE5QTl9JbnRGcm9tSWRlbnRpZmllciBAIDEw
IE5PTkFNRQ0KKyAgICBOUE5fSW52b2tlIEAgMTEgTk9OQU1FDQorICAgIE5QTl9JbnZva2VEZWZh
dWx0IEAgMTIgTk9OQU1FDQorICAgIE5QTl9SZWxlYXNlT2JqZWN0IEAgMTMgTk9OQU1FDQorICAg
IE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlIEAgMTQgTk9OQU1FDQorICAgIE5QTl9SZW1vdmVQcm9w
ZXJ0eSBAIDE1IE5PTkFNRQ0KKyAgICBOUE5fUmV0YWluT2JqZWN0IEAgMTYgTk9OQU1FDQorICAg
IE5QTl9TZXRFeGNlcHRpb24gQCAxNyBOT05BTUUNCisgICAgTlBOX1NldFByb3BlcnR5IEAgMTgg
Tk9OQU1FDQorICAgIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgQCAxOSBOT05BTUUNCisgICAgX05Q
Tl9DcmVhdGVTY3JpcHRPYmplY3QgQCAyMCBOT05BTUUNCisgICAgX1oyNE5QTl9TZXRFeGNlcHRp
b25XaXRoVVRGOFA4TlBPYmplY3RQS2NpIEAgMjEgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50
aWZpZXIzYWRkRVBLYyBAIDIyIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQ
TlNfN1VTdHJpbmczUmVwRSBAIDIzIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBJZGVudGlmaWVyNWVx
dWFsRVBOU183VVN0cmluZzNSZXBFUEtOU181VUNoYXJFaSBAIDI0IE5PTkFNRQ0KKyAgICBfWk4z
S0pTMTBJZGVudGlmaWVyNWVxdWFsRVBOU183VVN0cmluZzNSZXBFUEtjIEAgMjUgTk9OQU1FDQor
ICAgIF9aTjNLSlMxMFNjb3BlQ2hhaW40cHVzaEVQTlNfOU9iamVjdEltcEUgQCAyNiBOT05BTUUN
CisgICAgX1pOM0tKUzEwU2NvcGVDaGFpbjdyZWxlYXNlRXYgQCAyNyBOT05BTUUNCisgICAgX1pO
M0tKUzEwU2NvcGVDaGFpbmFTRVJLUzBfIEAgMjggTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVy
cHJldGVyMTBnbG9iYWxFeGVjRXYgQCAyOSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0
ZXIxMnZpcnR1YWxfaG9va0VpUHYgQCAzMCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0
ZXIxM3NldENvbXBhdE1vZGVFTlMwXzEwQ29tcGF0TW9kZUUgQCAzMSBOT05BTUUNCisgICAgX1pO
M0tKUzExSW50ZXJwcmV0ZXIxNXJlc3RvcmVCdWlsdGluc0VSS05TXzEzU2F2ZWRCdWlsdGluc0Ug
QCAzMiBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxNmluaXRHbG9iYWxPYmplY3RF
diBAIDMzIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE3aW5jU3RhdGVtZW50Q291
bnRFdiBAIDM0IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE5cmVzZXRTdGF0ZW1l
bnRDb3VudEV2IEAgMzUgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMjFzaG91bGRQ
cmludEV4Y2VwdGlvbnNFdiBAIDM2IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjI0
c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zRWIgQCAzNyBOT05BTUUNCisgICAgX1pOM0tKUzExSW50
ZXJwcmV0ZXIzMGNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVO
U184QmluZGluZ3M4SW5zdGFuY2UxNUJpbmRpbmdMYW5ndWFnZUVSS05TXzZPYmplY3RFUEtOUzNf
MTBSb290T2JqZWN0RVNCXyBAIDM4IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjRs
b2NrRXYgQCAzOSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXI2dW5sb2NrRXYgQCA0
MCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmlu
Z0VSS05TXzVWYWx1ZUVTM18gQCA0MSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXI4
ZXZhbHVhdGVFUktOU183VVN0cmluZ0VpUzNfUktOU181VmFsdWVFIEAgNDIgTk9OQU1FDQorICAg
IF9aTjNLSlMxMUludGVycHJldGVyQzFFUktOU182T2JqZWN0RSBAIDQzIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTMTFJbnRlcnByZXRlckMyRVJLTlNfNk9iamVjdEUgQCA0NCBOT05BTUUNCisgICAgX1pO
M0tKUzExSW50ZXJwcmV0ZXJEMEV2IEAgNDUgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJl
dGVyRDFFdiBAIDQ2IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlckQyRXYgQCA0NyBO
T05BTUUNCisgICAgX1pOM0tKUzExUHJvcGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQcm9w
ZXJ0aWVzRSBAIDQ4IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTRsZW5ndGhQcm9wZXJ0eUV2IEAgNDkg
Tk9OQU1FDQorICAgIF9aTjNLSlMxNW1lc3NhZ2VQcm9wZXJ0eUV2IEAgNTAgTk9OQU1FDQorICAg
IF9aTjNLSlMxNlJ1bnRpbWVPYmplY3RJbXBDMUVQTlNfOEJpbmRpbmdzOEluc3RhbmNlRWIgQCA1
MSBOT05BTUUNCisgICAgX1pOM0tKUzE2UnVudGltZU9iamVjdEltcEMyRVBOU184QmluZGluZ3M4
SW5zdGFuY2VFYiBAIDUyIE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3QxMWRlcmVmVmFsdWVzRXYg
QCA1MyBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0NmFwcGVuZEVQTlNfOFZhbHVlSW1wRSBAIDU0
IE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3Q3cmVsZWFzZUV2IEAgNTUgTk9OQU1FDQorICAgIF9a
TjNLSlM0TGlzdDlyZWZWYWx1ZXNFdiBAIDU2IE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3RDMUV2
IEAgNTcgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdEMyRXYgQCA1OCBOT05BTUUNCisgICAgX1pO
M0tKUzRMaXN0YVNFUktTMF8gQCA1OSBOT05BTUUNCisgICAgX1pOM0tKUzROdWxsQzFFdiBAIDYw
IE5PTkFNRQ0KKyAgICBfWk4zS0pTNE51bGxDMkV2IEAgNjEgTk9OQU1FDQorICAgIF9aTjNLSlM1
RXJyb3I2Y3JlYXRlRVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFUEtjaWlQS05TXzdVU3Ry
aW5nRSBAIDYyIE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlQzFFUE5TXzhWYWx1ZUltcEUgQCA2
MyBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUMxRVJLUzBfIEAgNjQgTk9OQU1FDQorICAgIF9a
TjNLSlM1VmFsdWVDMkVQTlNfOFZhbHVlSW1wRSBAIDY1IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZh
bHVlQzJFUktTMF8gQCA2NiBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUQxRXYgQCA2NyBOT05B
TUUNCisgICAgX1pOM0tKUzVWYWx1ZUQyRXYgQCA2OCBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1
ZWFTRVJLUzBfIEAgNjkgTk9OQU1FDQorICAgIF9aTjNLSlM2TG9va3VwOWZpbmRFbnRyeUVQS05T
XzlIYXNoVGFibGVFUktOU18xMElkZW50aWZpZXJFIEAgNzAgTk9OQU1FDQorICAgIF9aTjNLSlM2
TnVtYmVyQzFFZCBAIDcxIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMxRWkgQCA3MiBOT05B
TUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVqIEAgNzMgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVt
YmVyQzFFbCBAIDc0IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMxRW0gQCA3NSBOT05BTUUN
CisgICAgX1pOM0tKUzZOdW1iZXJDMkVkIEAgNzYgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVy
QzJFaSBAIDc3IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWogQCA3OCBOT05BTUUNCisg
ICAgX1pOM0tKUzZOdW1iZXJDMkVsIEAgNzkgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzJF
bSBAIDgwIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk9iamVjdDExZHluYW1pY0Nhc3RFUktOU181VmFs
dWVFIEAgODEgTk9OQU1FDQorICAgIF9aTjNLSlM2T2JqZWN0NGNhbGxFUE5TXzlFeGVjU3RhdGVF
UlMwX1JLTlNfNExpc3RFIEAgODIgTk9OQU1FDQorICAgIF9aTjNLSlM2U3RyaW5nQzFFUktOU183
VVN0cmluZ0UgQCA4MyBOT05BTUUNCisgICAgX1pOM0tKUzZTdHJpbmdDMkVSS05TXzdVU3RyaW5n
RSBAIDg0IE5PTkFNRQ0KKyAgICBfWk4zS0pTN0Jvb2xlYW5DMUViIEAgODUgTk9OQU1FDQorICAg
IF9aTjNLSlM3Qm9vbGVhbkMyRWIgQCA4NiBOT05BTUUNCisgICAgX1pOM0tKUzdDU3RyaW5nYVNF
UEtjIEAgODcgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzEwYXR0YWNoTnVsbEV2IEAgODgg
Tk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzNSZXAxM2NyZWF0ZUNvcHlpbmdFUEtOU181VUNo
YXJFaSBAIDg5IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmczUmVwNmNyZWF0ZUVQTlNfNVVD
aGFyRWkgQCA5MCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nM1JlcDdkZXN0cm95RXYgQCA5
MSBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nNGZyb21FbCBAIDkyIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTN1VTdHJpbmc2YXBwZW5kRVBLYyBAIDkzIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJp
bmc2YXBwZW5kRVJLUzBfIEAgOTQgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MxRVBLTlNf
NVVDaGFyRWkgQCA5NSBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFFUEtjIEAgOTYgTk9O
QU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MxRVBOU181VUNoYXJFaWIgQCA5NyBOT05BTUUNCisg
ICAgX1pOM0tKUzdVU3RyaW5nQzFFUktTMF9TMl8gQCA5OCBOT05BTUUNCisgICAgX1pOM0tKUzdV
U3RyaW5nQzFFYyBAIDk5IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUV2IEAgMTAwIE5P
TkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMkVQS05TXzVVQ2hhckVpIEAgMTAxIE5PTkFNRQ0K
KyAgICBfWk4zS0pTN1VTdHJpbmdDMkVQS2MgQCAxMDIgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0
cmluZ0MyRVBOU181VUNoYXJFaWIgQCAxMDMgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0My
RVJLUzBfUzJfIEAgMTA0IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMkVjIEAgMTA1IE5P
TkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMkV2IEAgMTA2IE5PTkFNRQ0KKyAgICBfWk4zS0pT
N1VTdHJpbmdhU0VSS1MwXyBAIDEwNyBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczEwUm9v
dE9iamVjdDE0c2V0SW50ZXJwcmV0ZXJFUE5TXzExSW50ZXJwcmV0ZXJFIEAgMTA4IE5PTkFNRQ0K
KyAgICBfWk4zS0pTOEJpbmRpbmdzMTBSb290T2JqZWN0MjVyZW1vdmVBbGxOYXRpdmVSZWZlcmVu
Y2VzRXYgQCAxMDkgTk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGluZ3MyMXJlbW92ZU5hdGl2ZVJl
ZmVyZW5jZUVQTlNfOU9iamVjdEltcEUgQCAxMTAgTk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGlu
Z3M4SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVPYmplY3RFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVB2
UEtOUzBfMTBSb290T2JqZWN0RSBAIDExMSBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczhJ
bnN0YW5jZTMwY3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlRVBOU185RXhlY1N0YXRlRU5T
MV8xNUJpbmRpbmdMYW5ndWFnZUVSS05TXzZPYmplY3RFUEtOUzBfMTBSb290T2JqZWN0RVNBXyBA
IDExMiBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczhJbnN0YW5jZTMyY3JlYXRlQmluZGlu
Z0Zvckxhbmd1YWdlSW5zdGFuY2VFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVB2UEtOUzBfMTBSb290
T2JqZWN0RSBAIDExMyBOT05BTUUNCisgICAgX1pOM0tKUzhWYWx1ZUltcGRsRVB2IEAgMTE0IE5P
TkFNRQ0KKyAgICBfWk4zS0pTOFZhbHVlSW1wbndFaiBAIDExNSBOT05BTUUNCisgICAgX1pOM0tK
UzlDb2xsZWN0b3I3Y29sbGVjdEV2IEAgMTE2IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdElt
cDExaGFzSW5zdGFuY2VFUE5TXzlFeGVjU3RhdGVFUktOU181VmFsdWVFIEAgMTE3IE5PTkFNRQ0K
KyAgICBfWk4zS0pTOU9iamVjdEltcDEyc2V0UHJvdG90eXBlRVJLTlNfNVZhbHVlRSBAIDExOCBO
T05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDExOSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJ
bXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxMjAgTk9OQU1FDQorICAgIF9a
TjNLSlM5T2JqZWN0SW1wMTlkZWxldGVBbGxQcm9wZXJ0aWVzRVBOU185RXhlY1N0YXRlRSBAIDEy
MSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVJLTlNfNVZhbHVlRWkgQCAxMjIgTk9OQU1FDQorICAgIF9aTjNLSlM5T2Jq
ZWN0SW1wM3B1dEVQTlNfOUV4ZWNTdGF0ZUVqUktOU181VmFsdWVFaSBAIDEyMyBOT05BTUUNCisg
ICAgX1pOM0tKUzlPYmplY3RJbXA0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSTlNfNk9iamVjdEVSS05T
XzRMaXN0RSBAIDEyNCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA0bWFya0V2IEAgMTI1
IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDhwcm9wTGlzdEVQTlNfOUV4ZWNTdGF0ZUVi
IEAgMTI2IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDljb25zdHJ1Y3RFUE5TXzlFeGVj
U3RhdGVFUktOU180TGlzdEUgQCAxMjcgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wOWNv
bnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RVJLTlNfN1VTdHJpbmdFaSBAIDEyOCBO
T05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA5cHV0RGlyZWN0RVJLTlNfMTBJZGVudGlmaWVy
RVBOU184VmFsdWVJbXBFaSBAIDEyOSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA5cHV0
RGlyZWN0RVJLTlNfMTBJZGVudGlmaWVyRWlpIEAgMTMwIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9i
amVjdEltcEMxRVJLTlNfNk9iamVjdEUgQCAxMzEgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0
SW1wQzFFdiBAIDEzMiBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBDMkVSS05TXzZPYmpl
Y3RFIEAgMTMzIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEMyRXYgQCAxMzQgTk9OQU1F
DQorICAgIF9aTjNLSlM5T2JqZWN0SW1wRDBFdiBAIDEzNSBOT05BTUUNCisgICAgX1pOM0tKUzlP
YmplY3RJbXBEMUV2IEAgMTM2IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEQyRXYgQCAx
MzcgTk9OQU1FDQorICAgIF9aTjNLSlM5VW5kZWZpbmVkQzFFdiBAIDEzOCBOT05BTUUNCisgICAg
X1pOM0tKUzlVbmRlZmluZWRDMkV2IEAgMTM5IE5PTkFNRQ0KKyAgICBfWk4zS0pTZXFFUktOU183
VVN0cmluZ0VQS2MgQCAxNDAgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRlcjEwY29t
cGF0TW9kZUV2IEAgMTQxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMmJ1aWx0
aW5BcnJheUV2IEAgMTQyIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMmdsb2Jh
bE9iamVjdEV2IEAgMTQzIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMnNhdmVC
dWlsdGluc0VSTlNfMTNTYXZlZEJ1aWx0aW5zRSBAIDE0NCBOT05BTUUNCisgICAgX1pOSzNLSlMx
MUludGVycHJldGVyMTNidWlsdGluT2JqZWN0RXYgQCAxNDUgTk9OQU1FDQorICAgIF9aTkszS0pT
MTFJbnRlcnByZXRlcjE1YnVpbHRpbkZ1bmN0aW9uRXYgQCAxNDYgTk9OQU1FDQorICAgIF9aTksz
S0pTMTFJbnRlcnByZXRlcjIyYnVpbHRpbk9iamVjdFByb3RvdHlwZUV2IEAgMTQ3IE5PTkFNRQ0K
KyAgICBfWk5LM0tKUzExUHJvcGVydHlNYXAzZ2V0RVJLTlNfMTBJZGVudGlmaWVyRSBAIDE0OCBO
T05BTUUNCisgICAgX1pOSzNLSlMxMVByb3BlcnR5TWFwNHNhdmVFUk5TXzE1U2F2ZWRQcm9wZXJ0
aWVzRSBAIDE0OSBOT05BTUUNCisgICAgX1pOSzNLSlM0TGlzdDVpbXBBdEVpIEAgMTUwIE5PTkFN
RQ0KKyAgICBfWk5LM0tKUzRMaXN0OGNvcHlUYWlsRXYgQCAxNTEgTk9OQU1FDQorICAgIF9aTksz
S0pTNk9iamVjdDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
IEAgMTUyIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzZPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhl
Y1N0YXRlRWogQCAxNTMgTk9OQU1FDQorICAgIF9aTkszS0pTNk9iamVjdDE0aGFzT3duUHJvcGVy
dHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTU0IE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzZTdHJpbmc1dmFsdWVFdiBAIDE1NSBOT05BTUUNCisgICAgX1pOSzNLSlM3VVN0cmlu
ZzEydG9BcnJheUluZGV4RVBiIEAgMTU2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzdVU3RyaW5nNWFz
Y2lpRXYgQCAxNTcgTk9OQU1FDQorICAgIF9aTkszS0pTN1VTdHJpbmc2aXNOdWxsRXYgQCAxNTgg
Tk9OQU1FDQorICAgIF9aTkszS0pTN1VTdHJpbmc3dG9VTG9uZ0VQYiBAIDE1OSBOT05BTUUNCisg
ICAgX1pOSzNLSlM4VmFsdWVJbXAxNmRpc3BhdGNoVG9PYmplY3RFUE5TXzlFeGVjU3RhdGVFIEAg
MTYwIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDZtYXJrZWRFdiBAIDE2MSBOT05BTUUN
CisgICAgX1pOSzNLSlM4VmFsdWVJbXA3dG9JbnQzMkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjIgTk9O
QU1FDQorICAgIF9aTkszS0pTOFZhbHVlSW1wOHRvVUludDE2RVBOU185RXhlY1N0YXRlRSBAIDE2
MyBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MzJFUE5TXzlFeGVjU3RhdGVF
IEAgMTY0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQzMkVSaiBAIDE2NSBO
T05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXA5dG9JbnRlZ2VyRVBOU185RXhlY1N0YXRlRSBA
IDE2NiBOT05BTUUNCisgICAgX1pOSzNLSlM5RXhlY1N0YXRlMThsZXhpY2FsSW50ZXJwcmV0ZXJF
diBAIDE2NyBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNjggTk9OQU1FDQorICAgIF9aTkszS0pT
OU9iamVjdEltcDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDE2OSBOT05BTUUNCisg
ICAgX1pOSzNLSlM5T2JqZWN0SW1wMTF0b1ByaW1pdGl2ZUVQTlNfOUV4ZWNTdGF0ZUVOU180VHlw
ZUUgQCAxNzAgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDEyZGVmYXVsdFZhbHVlRVBO
U185RXhlY1N0YXRlRU5TXzRUeXBlRSBAIDE3MSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0
SW1wMTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAx
NzIgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDE0aGFzT3duUHJvcGVydHlFUE5TXzlF
eGVjU3RhdGVFaiBAIDE3MyBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTRpbXBsZW1l
bnRzQ2FsbEV2IEAgMTc0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxOWltcGxlbWVu
dHNDb25zdHJ1Y3RFdiBAIDE3NSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMjFpbXBs
ZW1lbnRzSGFzSW5zdGFuY2VFdiBAIDE3NiBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1w
M2dldEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNzcgTk9OQU1FDQorICAg
IF9aTkszS0pTOU9iamVjdEltcDNnZXRFUE5TXzlFeGVjU3RhdGVFaiBAIDE3OCBOT05BTUUNCisg
ICAgX1pOSzNLSlM5T2JqZWN0SW1wNHR5cGVFdiBAIDE3OSBOT05BTUUNCisgICAgX1pOSzNLSlM5
T2JqZWN0SW1wNmNhblB1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxODAg
Tk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDhpbmhlcml0c0VQS05TXzlDbGFzc0luZm9F
IEAgMTgxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA4dG9OdW1iZXJFUE5TXzlFeGVj
U3RhdGVFIEAgMTgyIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA4dG9PYmplY3RFUE5T
XzlFeGVjU3RhdGVFIEAgMTgzIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA4dG9TdHJp
bmdFUE5TXzlFeGVjU3RhdGVFIEAgMTg0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA5
Y2xhc3NJbmZvRXYgQCAxODUgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDljbGFzc05h
bWVFdiBAIDE4NiBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wOXByb3RvdHlwZUV2IEAg
MTg3IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA5dG9Cb29sZWFuRVBOU185RXhlY1N0
YXRlRSBAIDE4OCBOT05BTUUNCisgICAgX1pUSU4zS0pTMTBBc3NpZ25Ob2RlRSBAIDE4OSBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBCb29sZWFuSW1wRSBAIDE5MCBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTBEZWxldGVOb2RlRSBAIDE5MSBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTMTBOZWdhdGVOb2RlRSBAIDE5MiBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTBOdW1iZXJOb2RlRSBAIDE5MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTMTBQcmVmaXhOb2RlRSBAIDE5NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBS
ZWdFeHBOb2RlRSBAIDE5NSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBSZXR1cm5O
b2RlRSBAIDE5NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBTdHJpbmdOb2RlRSBA
IDE5NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBTd2l0Y2hOb2RlRSBAIDE5OCBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBUeXBlT2ZOb2RlRSBAIDE5OSBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFCaXRPcGVyTm9kZUUgQCAyMDAgTk9OQU1FIDsgIzxU
ST4jDQorICAgIF9aVElOM0tKUzExQm9vbGVhbk5vZGVFIEAgMjAxIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxMURvV2hpbGVOb2RlRSBAIDIwMiBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTFFbGVtZW50Tm9kZUUgQCAyMDMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzExRmluYWxseU5vZGVFIEAgMjA0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
MUZ1bmN0aW9uSW1wRSBAIDIwNSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFJbnRl
cnByZXRlckUgQCAyMDYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExTWF0aEZ1bmNJ
bXBFIEAgMjA3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMU5ld0V4cHJOb2RlRSBA
IDIwOCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFQb3N0Zml4Tm9kZUUgQCAyMDkg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMjEwIE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMVZhckRlY2xOb2RlRSBAIDIxMSBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTJDb250aW51ZU5vZGVFIEAgMjEyIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAyMTMgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDIxNCBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTJQcm9wZXJ0eU5vZGVFIEAgMjE1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAyMTYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzEyVW5kZWZpbmVkSW1wRSBAIDIxNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNB
Y2Nlc3Nvck5vZGUxRSBAIDIxOCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBY2Nl
c3Nvck5vZGUyRSBAIDIxOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBY3RpdmF0
aW9uSW1wRSBAIDIyMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBcmd1bWVudHNO
b2RlRSBAIDIyMSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNDYXNlQmxvY2tOb2Rl
RSBAIDIyMiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNEYXRlT2JqZWN0SW1wRSBA
IDIyMyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDIy
NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDIyNSBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDIyNiBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNTdGF0ZW1lbnROb2RlRSBAIDIyNyBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNVbmFyeVBsdXNOb2RlRSBAIDIyOCBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAyMjkgTk9OQU1FIDsgIzxU
ST4jDQorICAgIF9aVElOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMjMwIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDIzMSBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTMTRDYXNlQ2xhdXNlTm9kZUUgQCAyMzIgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzE0Q2xhdXNlTGlzdE5vZGVFIEAgMjMzIE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDIzNCBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAyMzUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzE0TmF0aXZlRXJyb3JJbXBFIEAgMjM2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxNFJlbGF0aW9uYWxOb2RlRSBAIDIzNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMjM4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxNU51bWJlck9iamVjdEltcEUgQCAyMzkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzE1T2JqZWN0T2JqZWN0SW1wRSBAIDI0MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTVSZWdFeHBPYmplY3RJbXBFIEAgMjQxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
NVJ1bnRpbWVBcnJheUltcEUgQCAyNDIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1
U3RyaW5nT2JqZWN0SW1wRSBAIDI0MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVW
YXJEZWNsTGlzdE5vZGVFIEAgMjQ0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkFy
Z3VtZW50TGlzdE5vZGVFIEAgMjQ1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkFy
cmF5SW5zdGFuY2VJbXBFIEAgMjQ2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkJv
b2xlYW5PYmplY3RJbXBFIEAgMjQ3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkRh
dGVQcm90b0Z1bmNJbXBFIEAgMjQ4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkRh
dGVQcm90b3R5cGVJbXBFIEAgMjQ5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkZ1
bmN0aW9uQm9keU5vZGVFIEAgMjUwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkZ1
bmN0aW9uQ2FsbE5vZGVFIEAgMjUxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlJ1
bnRpbWVNZXRob2RJbXBFIEAgMjUyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlJ1
bnRpbWVPYmplY3RJbXBFIEAgMjUzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlZh
clN0YXRlbWVudE5vZGVFIEAgMjU0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0Fy
cmF5UHJvdG9GdW5jSW1wRSBAIDI1NSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdB
cnJheVByb3RvdHlwZUltcEUgQCAyNTYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3
QmluYXJ5TG9naWNhbE5vZGVFIEAgMjU3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
N0RhdGVPYmplY3RGdW5jSW1wRSBAIDI1OCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTdFcnJvclByb3RvRnVuY0ltcEUgQCAyNTkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMjYwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxN0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDI2MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAyNjIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE3UHJvcGVydHlWYWx1ZU5vZGVFIEAgMjYzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDI2NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMjY1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUgQCAyNjYgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzE4T2JqZWN0UHJvdG9GdW5jSW1wRSBAIDI2NyBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMjY4IE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAyNjkgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE4U3RyaW5nUHJvdG9GdW5jSW1wRSBAIDI3MCBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAgMjcxIE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBFIEAgMjcyIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOURlY2xhcmVkRnVuY3Rpb25JbXBFIEAgMjczIE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAgMjc0IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOVN0cmluZ09iamVjdEZ1bmNJbXBFIEAgMjc1
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMyMEZ1bmN0aW9uUHJvdG9GdW5jSW1wRSBA
IDI3NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMjBGdW5jdGlvblByb3RvdHlwZUlt
cEUgQCAyNzcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzROb2RlRSBAIDI3OCBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTNklmTm9kZUUgQCAyNzkgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzdBZGROb2RlRSBAIDI4MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTN0Zvck5vZGVFIEAgMjgxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM3TnVs
bEltcEUgQCAyODIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzdUcnlOb2RlRSBAIDI4
MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOEJpbmRpbmdzNkNDbGFzc0UgQCAyODQg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzhCaW5kaW5nczZDRmllbGRFIEAgMjg1IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4QmluZGluZ3M4SW5zdGFuY2VFIEAgMjg2IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4QmluZGluZ3M5Q0luc3RhbmNlRSBAIDI4NyBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOERlYnVnZ2VyRSBAIDI4OCBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTOE11bHROb2RlRSBAIDI4OSBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTOE51bGxOb2RlRSBAIDI5MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTOFRoaXNOb2RlRSBAIDI5MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFZhbHVl
SW1wRSBAIDI5MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFZvaWROb2RlRSBAIDI5
MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFdpdGhOb2RlRSBAIDI5NCBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUFycmF5Tm9kZUUgQCAyOTUgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzlCbG9ja05vZGVFIEAgMjk2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlM5QnJlYWtOb2RlRSBAIDI5NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
OUNhdGNoTm9kZUUgQCAyOTggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlDb21tYU5v
ZGVFIEAgMjk5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5RXF1YWxOb2RlRSBAIDMw
MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUZvckluTm9kZUUgQCAzMDEgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlHcm91cE5vZGVFIEAgMzAyIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlM5TGFiZWxOb2RlRSBAIDMwMyBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTOU51bWJlckltcEUgQCAzMDQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzlPYmplY3RJbXBFIEAgMzA1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5UmVnRXhw
SW1wRSBAIDMwNiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOVNoaWZ0Tm9kZUUgQCAz
MDcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlTdHJpbmdJbXBFIEAgMzA4IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5VGhyb3dOb2RlRSBAIDMwOSBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTOVdoaWxlTm9kZUUgQCAzMTAgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVFZOM0tKUzEwQXNzaWduTm9kZUUgQCAzMTEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzEwQm9vbGVhbkltcEUgQCAzMTIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEw
RGVsZXRlTm9kZUUgQCAzMTMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwTmVnYXRl
Tm9kZUUgQCAzMTQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwTnVtYmVyTm9kZUUg
QCAzMTUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwUHJlZml4Tm9kZUUgQCAzMTYg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwUmVnRXhwTm9kZUUgQCAzMTcgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwUmV0dXJuTm9kZUUgQCAzMTggTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzEwU3RyaW5nTm9kZUUgQCAzMTkgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzEwU3dpdGNoTm9kZUUgQCAzMjAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzEwVHlwZU9mTm9kZUUgQCAzMjEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzExQml0T3Blck5vZGVFIEAgMzIyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMUJv
b2xlYW5Ob2RlRSBAIDMyMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFEb1doaWxl
Tm9kZUUgQCAzMjQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExRWxlbWVudE5vZGVF
IEAgMzI1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMUZpbmFsbHlOb2RlRSBAIDMy
NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFGdW5jdGlvbkltcEUgQCAzMjcgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExSW50ZXJwcmV0ZXJFIEAgMzI4IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMU1hdGhGdW5jSW1wRSBAIDMyOSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTFOZXdFeHByTm9kZUUgQCAzMzAgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzExUG9zdGZpeE5vZGVFIEAgMzMxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlMxMVJlc29sdmVOb2RlRSBAIDMzMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTFWYXJEZWNsTm9kZUUgQCAzMzMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEy
Q29udGludWVOb2RlRSBAIDMzNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJGdW5j
RGVjbE5vZGVFIEAgMzM1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMkZ1bmNFeHBy
Tm9kZUUgQCAzMzYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEyUHJvcGVydHlOb2Rl
RSBAIDMzNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJTdGF0TGlzdE5vZGVFIEAg
MzM4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMlVuZGVmaW5lZEltcEUgQCAzMzkg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMUUgQCAzNDAgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMkUgQCAzNDEgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQWN0aXZhdGlvbkltcEUgQCAzNDIgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQXJndW1lbnRzTm9kZUUgQCAzNDMgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzEzQ2FzZUJsb2NrTm9kZUUgQCAzNDQgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzEzRGF0ZU9iamVjdEltcEUgQCAzNDUgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzEzR2xvYmFsRnVuY0ltcEUgQCAzNDYgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzEzTWF0aE9iamVjdEltcEUgQCAzNDcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzEzUGFyYW1ldGVyTm9kZUUgQCAzNDggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzEzU3RhdGVtZW50Tm9kZUUgQCAzNDkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzEzVW5hcnlQbHVzTm9kZUUgQCAzNTAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0
QXJyYXlPYmplY3RJbXBFIEAgMzUxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNEFz
c2lnbkV4cHJOb2RlRSBAIDM1MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRCaXR3
aXNlTm90Tm9kZUUgQCAzNTMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0Q2FzZUNs
YXVzZU5vZGVFIEAgMzU0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNENsYXVzZUxp
c3ROb2RlRSBAIDM1NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRFcnJvck9iamVj
dEltcEUgQCAzNTYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0TG9naWNhbE5vdE5v
ZGVFIEAgMzU3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNE5hdGl2ZUVycm9ySW1w
RSBAIDM1OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRSZWxhdGlvbmFsTm9kZUUg
QCAzNTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1Q29uZGl0aW9uYWxOb2RlRSBA
IDM2MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVOdW1iZXJPYmplY3RJbXBFIEAg
MzYxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNU9iamVjdE9iamVjdEltcEUgQCAz
NjIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1UmVnRXhwT2JqZWN0SW1wRSBAIDM2
MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVSdW50aW1lQXJyYXlJbXBFIEAgMzY0
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNVN0cmluZ09iamVjdEltcEUgQCAzNjUg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1VmFyRGVjbExpc3ROb2RlRSBAIDM2NiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZBcmd1bWVudExpc3ROb2RlRSBAIDM2NyBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZBcnJheUluc3RhbmNlSW1wRSBAIDM2OCBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZCb29sZWFuT2JqZWN0SW1wRSBAIDM2OSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZEYXRlUHJvdG9GdW5jSW1wRSBAIDM3MCBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZEYXRlUHJvdG90eXBlSW1wRSBAIDM3MSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZGdW5jdGlvbkJvZHlOb2RlRSBAIDM3MiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBAIDM3MyBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZSdW50aW1lTWV0aG9kSW1wRSBAIDM3NCBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZSdW50aW1lT2JqZWN0SW1wRSBAIDM3NSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTZWYXJTdGF0ZW1lbnROb2RlRSBAIDM3NiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAzNzcg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3QXJyYXlQcm90b3R5cGVJbXBFIEAgMzc4
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0JpbmFyeUxvZ2ljYWxOb2RlRSBAIDM3
OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUgQCAz
ODAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3RXJyb3JQcm90b0Z1bmNJbXBFIEAg
MzgxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0V4cHJTdGF0ZW1lbnROb2RlRSBA
IDM4MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdGdW5jdGlvbk9iamVjdEltcEUg
QCAzODMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3T2JqZWN0TGl0ZXJhbE5vZGVF
IEAgMzg0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN1Byb3BlcnR5VmFsdWVOb2Rl
RSBAIDM4NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdTdHJpbmdJbnN0YW5jZUlt
cEUgQCAzODYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4RW1wdHlTdGF0ZW1lbnRO
b2RlRSBAIDM4NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThOdW1iZXJQcm90b0Z1
bmNJbXBFIEAgMzg4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOE9iamVjdFByb3Rv
RnVuY0ltcEUgQCAzODkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4UmVnRXhwUHJv
dG9GdW5jSW1wRSBAIDM5MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThTb3VyY2VF
bGVtZW50c05vZGVFIEAgMzkxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOFN0cmlu
Z1Byb3RvRnVuY0ltcEUgQCAzOTIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4U3Ry
aW5nUHJvdG90eXBlSW1wRSBAIDM5MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlC
b29sZWFuUHJvdG9GdW5jSW1wRSBAIDM5NCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDM5NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTlJbnRlcm5hbEZ1bmN0aW9uSW1wRSBAIDM5NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTlTdHJpbmdPYmplY3RGdW5jSW1wRSBAIDM5NyBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMjBGdW5jdGlvblByb3RvRnVuY0ltcEUgQCAzOTggTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzIwRnVuY3Rpb25Qcm90b3R5cGVJbXBFIEAgMzk5IE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlM0Tm9kZUUgQCA0MDAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzZJZk5vZGVFIEAgNDAxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM3QWRkTm9k
ZUUgQCA0MDIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzdGb3JOb2RlRSBAIDQwMyBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTN051bGxJbXBFIEAgNDA0IE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlM3VHJ5Tm9kZUUgQCA0MDUgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzhCaW5kaW5nczZDQ2xhc3NFIEAgNDA2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlM4QmluZGluZ3M2Q0ZpZWxkRSBAIDQwNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTOEJpbmRpbmdzOEluc3RhbmNlRSBAIDQwOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTOEJpbmRpbmdzOUNJbnN0YW5jZUUgQCA0MDkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzhEZWJ1Z2dlckUgQCA0MTAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhN
dWx0Tm9kZUUgQCA0MTEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhOdWxsTm9kZUUg
QCA0MTIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhUaGlzTm9kZUUgQCA0MTMgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhWYWx1ZUltcEUgQCA0MTQgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzhWb2lkTm9kZUUgQCA0MTUgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzhXaXRoTm9kZUUgQCA0MTYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzlBcnJheU5vZGVFIEAgNDE3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5QmxvY2tO
b2RlRSBAIDQxOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUJyZWFrTm9kZUUgQCA0
MTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlDYXRjaE5vZGVFIEAgNDIwIE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5Q29tbWFOb2RlRSBAIDQyMSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOUVxdWFsTm9kZUUgQCA0MjIgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzlGb3JJbk5vZGVFIEAgNDIzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlM5R3JvdXBOb2RlRSBAIDQyNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUxhYmVs
Tm9kZUUgQCA0MjUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlOdW1iZXJJbXBFIEAg
NDI2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5T2JqZWN0SW1wRSBAIDQyNyBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVJlZ0V4cEltcEUgQCA0MjggTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzlTaGlmdE5vZGVFIEAgNDI5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlM5U3RyaW5nSW1wRSBAIDQzMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTOVRocm93Tm9kZUUgQCA0MzEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlXaGls
ZU5vZGVFIEAgNDMyIE5PTkFNRSA7ICM8VlQ+Iw0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dy
b3VwL0phdmFTY3JpcHRDb3JlLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dy
b3VwL0phdmFTY3JpcHRDb3JlLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENv
cmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNDgsNiArNDgs
OSBAQA0KIA0KIA0KIFNZU1RFTUlOQ0xVREUgLi5ca2pzDQorVVNFUklOQ0xVREUgLi5cYmluZGlu
Z3MNCitTWVNURU1JTkNMVURFIC4uXGJpbmRpbmdzDQorU1lTVEVNSU5DTFVERSAuLlxiaW5kaW5n
c1xjDQogU1lTVEVNSU5DTFVERSAuLlxwY3JlDQogU1lTVEVNSU5DTFVERSAuLlwuLlxNZW1vcnlN
YW5hZ2VyXGluYw0KICNpZm5kZWYgX19CUk9XU0VSX1NESw0KQEAgLTEwMiw2ICsxMDUsMjQgQEAN
CiBTT1VSQ0UgdmFsdWUuY3BwDQogLy9TT1VSQ0UgV3J0U3RhdGljcy5jcHANCiANCitTT1VSQ0VQ
QVRIICAuLlxiaW5kaW5ncw0KKw0KK1NPVVJDRSBucHJ1bnRpbWUuY3BwDQorU09VUkNFIE5QX2pz
b2JqZWN0LmNwcCANCitTT1VSQ0UgcnVudGltZS5jcHAgDQorU09VUkNFIHJ1bnRpbWVfYXJyYXku
Y3BwIA0KK1NPVVJDRSBydW50aW1lX21ldGhvZC5jcHAgDQorU09VUkNFIHJ1bnRpbWVfb2JqZWN0
LmNwcCANCitTT1VSQ0UgcnVudGltZV9yb290LmNwcCANCisvL1NPVVJDRSBzb2Z0bGlua2luZy5j
IA0KKw0KK1NPVVJDRVBBVEggIC4uXGJpbmRpbmdzXGMNCisNCitTT1VSQ0UgY19jbGFzcy5jcHAN
CitTT1VSQ0UgY19pbnN0YW5jZS5jcHANCitTT1VSQ0UgY19ydW50aW1lLmNwcA0KK1NPVVJDRSBj
X3V0aWxpdHkuY3BwDQorDQogTElCUkFSWSAgICAgICAgIGVzdGxpYi5saWINCiBMSUJSQVJZICAg
ICAgICAgZXVzZXIubGliDQogDQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVy
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0xMzUsMTIgKzEzNSwxMiBAQA0KICAgICBJbnRlcnByZXRlckxv
Y2sgbG9jazsKICAgICBFeGVjU3RhdGUgKmV4ZWMgPSByZXAtPmdsb2JhbEV4ZWMoKTsKICNpZm5k
ZWYgX19PT01fXwotCS8vRklYTUU6IG1ha2UgYSBtZW1vcnltYW5hZ2VyIHZlcnNpb24gZm9yIHN0
cmR1cAorICAgIC8vRklYTUU6IG1ha2UgYSBtZW1vcnltYW5hZ2VyIHZlcnNpb24gZm9yIHN0cmR1
cAogICAgIGNoYXIgKmYgPSBzdHJkdXAoc291cmNlVVJMLmFzY2lpKCkpOwogI2Vsc2UKLQljb25z
dCBjaGFyKiBzcyA9IHNvdXJjZVVSTC5hc2NpaSgpOworICAgIGNvbnN0IGNoYXIqIHNzID0gc291
cmNlVVJMLmFzY2lpKCk7CiAgICAgY2hhciAqZiA9IChjaGFyKilNZW1vcnlNYW5hZ2VyOjpDYWxs
b2MoIHN0cmxlbihzcykgKyAxLCBzaXplb2YoIGNoYXIgKSApOwotCW1lbWNweSggZiwgc3MsIHN0
cmxlbiggc3MgKSApOworICAgIG1lbWNweSggZiwgc3MsIHN0cmxlbiggc3MgKSApOwogI2VuZGlm
CiAgICAgY29uc3QgY2hhciAqbWVzc2FnZSA9IGNvbXAudmFsdWUoKS50b09iamVjdChleGVjKS50
b1N0cmluZyhleGVjKS5hc2NpaSgpOwogI2lmbmRlZiBOT0tJQV9DSEFOR0VTCkBAIC0zNjIsMTIg
KzM2MiwxMSBAQA0KICAgcHJpbnRFeGNlcHRpb25zID0gcHJpbnQ7CiB9CiAKLSNpZm5kZWYgTk9L
SUFfQ0hBTkdFUworRVhQT1JUX0MKIHZvaWQgKkludGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUlu
c3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmluZGluZ3M6Okluc3RhbmNlOjpCaW5k
aW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IEJpbmRpbmdz
OjpSb290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpjdXJyZW50
KQogewogICAgIHJldHVybiBCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUxhbmd1YWdlSW5zdGFu
Y2VGb3JWYWx1ZSAoZXhlYywgbGFuZ3VhZ2UsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwogfQot
I2VuZGlmCiAKICNlbmRpZgogCkBAIC0zODEsNyArMzgwLDcgQEANCiAgIHJlcC0+cmVzdG9yZUJ1
aWx0aW5zKGJ1aWx0aW5zKTsKIH0KIAotU2F2ZWRCdWlsdGluczo6U2F2ZWRCdWlsdGlucygpIDog
CitTYXZlZEJ1aWx0aW5zOjpTYXZlZEJ1aWx0aW5zKCkgOgogICBfaW50ZXJuYWwoMCkKIHsKIH0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNyAr
MjgsNyBAQA0KICNpbmNsdWRlICJvYmplY3QuaCIKICNpbmNsdWRlICJ0eXBlcy5oIgogCi0jaWYg
QVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKIAogI2lu
Y2x1ZGUgInJ1bnRpbWUuaCIKIApAQCAtMTE0LDcgKzExNCw3IEBADQogICBjbGFzcyBTYXZlZEJ1
aWx0aW5zSW50ZXJuYWw7CiAKICAgY2xhc3MgU2F2ZWRCdWlsdGlucyB7Ci0JT09NX05FV19ERUxF
VEUKKyAgICBPT01fTkVXX0RFTEVURQogICAgIGZyaWVuZCBjbGFzcyBJbnRlcnByZXRlckltcDsK
ICAgcHVibGljOgogICAgIFNhdmVkQnVpbHRpbnMoKTsKQEAgLTIwNSw4ICsyMDUsOCBAQA0KICAg
ICAgKi8KICAgICBJTVBPUlRfQyBDb21wbGV0aW9uIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcgJnNv
dXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgVVN0cmluZyAmY29kZSwgY29u
c3QgVmFsdWUgJnRoaXNWID0gVmFsdWUoKSk7CiAKLQkvLyBPdmVybG9hZCBvZiBldmFsdWF0ZSB0
byBrZWVwIEphdmFTY3JpcHRHbHVlIGJvdGggc291cmNlIGFuZCBiaW5hcnkgY29tcGF0aWJsZS4K
LQlJTVBPUlRfQyBDb21wbGV0aW9uIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcgJmNvZGUsIGNvbnN0
IFZhbHVlICZ0aGlzViA9IFZhbHVlKCksIGNvbnN0IFVTdHJpbmcgJnNvdXJjZUZpbGVuYW1lID0g
VVN0cmluZygpKTsKKyAgICAvLyBPdmVybG9hZCBvZiBldmFsdWF0ZSB0byBrZWVwIEphdmFTY3Jp
cHRHbHVlIGJvdGggc291cmNlIGFuZCBiaW5hcnkgY29tcGF0aWJsZS4KKyAgICBJTVBPUlRfQyBD
b21wbGV0aW9uIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcgJmNvZGUsIGNvbnN0IFZhbHVlICZ0aGlz
ViA9IFZhbHVlKCksIGNvbnN0IFVTdHJpbmcgJnNvdXJjZUZpbGVuYW1lID0gVVN0cmluZygpKTsK
IAogICAgIC8qKgogICAgICAqIEBpbnRlcm5hbApAQCAtMzQwLDcgKzM0MCw3IEBADQogCiAjaWZk
ZWYgTk9LSUFfQ0hBTkdFUwogICAgIElNUE9SVF9DIHZvaWQgaW5jU3RhdGVtZW50Q291bnQoKTsK
LQlJTVBPUlRfQyB2b2lkIHJlc2V0U3RhdGVtZW50Q291bnQoKTsKKyAgICBJTVBPUlRfQyB2b2lk
IHJlc2V0U3RhdGVtZW50Q291bnQoKTsKICAgICBpbnQgc3RhdGVtZW50Q291bnQoKSBjb25zdDsK
ICNlbmRpZgogCkBAIC0zODMsOCArMzgzLDggQEANCiAgICAgICogc2VjdXJpdHkgY2hlY2tzLgog
ICAgICAqLwogICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdChjb25zdCBWYWx1ZSAmdikg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICAvKiogCisKKyAgICAvKioKICAgICAgKiBGaW5k
IHRoZSBpbnRlcnByZXRlciBmb3IgYSBwYXJ0aWN1bGFyIGdsb2JhbCBvYmplY3QuICBUaGlzIHNo
b3VsZCByZWFsbHkKICAgICAgKiBiZSBhIHN0YXRpYyBtZXRob2QsIGJ1dCB3ZSBjYW4ndCBkbyB0
aGF0IGlzIEMrKy4gIEFnYWluLCBhcyB3aXRoIGlzR2xvYmFsT2JqZWN0KCkKICAgICAgKiBpbXBs
ZW1lbnRhdGlvbiByZWFsbHkgbmVlZCB0byBrbm93IGFib3V0IGFsbCBpbnN0YW5jZXMgb2YgSW50
ZXJwcmV0ZXIKQEAgLTM5Miw3ICszOTIsNyBAQA0KICAgICAgKiBvdmVycmlkZSBvZiB0aGlzIG1l
dGhvZCBpcyBjdXJyZW50bHkgaW4gV2ViQ29yZS4KICAgICAgKi8KICAgICB2aXJ0dWFsIEludGVy
cHJldGVyICppbnRlcnByZXRlckZvckdsb2JhbE9iamVjdCAoY29uc3QgVmFsdWVJbXAgKmltcCkg
eyByZXR1cm4gMDsgfQotICAgIAorCiAgICAgLyoqCiAgICAgICogRGV0ZXJtaW5lIGlmIHRoZSBp
dCBpcyAnc2FmZScgdG8gZXhlY3V0ZSBjb2RlIGluIHRoZSB0YXJnZXQgaW50ZXJwcmV0ZXIgZnJv
bSBhbgogICAgICAqIG9iamVjdCB0aGF0IG9yaWdpbmF0ZWQgaW4gdGhpcyBpbnRlcnByZXRlci4g
IFRoaXMgY2hlY2sgaXMgdXNlZCB0byBlbmZvcmNlIFdlYkNvcmUKQEAgLTQwMSwxMSArNDAxLDEw
IEBADQogICAgICAqLwogICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVTY3JpcHQgKGNvbnN0IEludGVy
cHJldGVyICp0YXJnZXQpIHsgcmV0dXJuIHRydWU7IH0KIAotI2lmbmRlZiBOT0tJQV9DSEFOR0VT
ICAgIAorICAgIElNUE9SVF9DCiAgICAgdmlydHVhbCB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3Rh
bmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5n
TGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IEJpbmRpbmdzOjpS
b290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpjdXJyZW50KTsK
ICNlbmRpZgotI2VuZGlmCi0gICAgCisKICAgcHJpdmF0ZToKICAgICBJbnRlcnByZXRlckltcCAq
cmVwOwogCkBAIC00MzIsNyArNDMxLDcgQEANCiAgICAqIGFuZCBhbHNvIHRoZSBjdXJyZW50IGV4
ZWN1dGlvbiBzdGF0ZSBjb250ZXh0LgogICAgKi8KICAgY2xhc3MgRXhlY1N0YXRlIHsKLQlPT01f
TkVXX0RFTEVURQorICAgIE9PTV9ORVdfREVMRVRFCiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJl
dGVySW1wOwogICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkltcDsKICNpZiBBUFBMRV9DSEFOR0VT
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvc3RkaW50LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvc3RkaW50LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9zdGRpbnQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDM2ICsyNSwzMyBAQA0KIA0K
ICNpbmNsdWRlIDxlMzJkZWYuaD4NCiANCi0jaWZuZGVmIHVpbnQzMl90DQotI2RlZmluZSB1aW50
MzJfdCBUVWludDMyDQotI2RlZmluZSBpbnQzMl90CVRJbnQzMg0KLSNlbmRpZg0KK3R5cGVkZWYg
dW5zaWduZWQgY2hhciB1aW50OF90Ow0KK3R5cGVkZWYgc2lnbmVkIGNoYXIgaW50OF90Ow0KK3R5
cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7DQordHlwZWRlZiBzaG9ydCBpbnQxNl90Ow0K
K3R5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90Ow0KK3R5cGVkZWYgaW50IGludDMyX3Q7DQor
dHlwZWRlZiBsb25nIGxvbmcgaW50NjRfdDsNCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1
aW50NjRfdDsNCiANCi0jaWZuZGVmIHVpbnQxNl90DQotI2RlZmluZSB1aW50MTZfdCBUVWludDE2
DQotI2RlZmluZSBpbnQxNl90CVRJbnQxNg0KLSNlbmRpZg0KK3R5cGVkZWYgdW5zaWduZWQgbG9u
ZyB1aW50cHRyX3Q7DQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGludHB0cl90Ow0KIA0KLSNpZm5k
ZWYgdWludDhfdA0KLSNkZWZpbmUgdWludDhfdCBUVWludDgNCi0jZGVmaW5lIGludDhfdAlUSW50
OA0KLSNlbmRpZg0KLQ0KICNlbHNlDQogDQogI2lmbmRlZiB1aW50MzJfdA0KICNkZWZpbmUgdWlu
dDMyX3QgdW5zaWduZWQgaW50DQotI2RlZmluZSBpbnQzMl90CWludA0KKyNkZWZpbmUgaW50MzJf
dCAgICBpbnQNCiAjZW5kaWYNCiANCiAjaWZuZGVmIHVpbnQxNl90DQogI2RlZmluZSB1aW50MTZf
dCB1bnNpZ25lZCBzaG9ydCBpbnQNCi0jZGVmaW5lIGludDE2X3QJIHNob3J0IGludA0KKyNkZWZp
bmUgaW50MTZfdCAgICAgc2hvcnQgaW50DQogI2VuZGlmDQogDQogI2lmbmRlZiB1aW50OF90DQog
I2RlZmluZSB1aW50OF90IHVuc2lnbmVkIGNoYXINCi0jZGVmaW5lIGludDhfdAljaGFyDQorI2Rl
ZmluZSBpbnQ4X3QgICAgY2hhcg0KICNlbmRpZg0KIA0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy91c3RyaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmlu
Zy5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtNDc3LDYgKzQ3Nyw3IEBADQogICAgICAqLwogICAgIHN0YXRpYyB2
b2lkIGdsb2JhbENsZWFyKCk7CiAjZW5kaWYKKyAgICBSZXAgKmFyZXAoKSBjb25zdCB7IHJldHVy
biByZXA7IH0KICAgcHJpdmF0ZToKICAgICBVU3RyaW5nKFJlcCAqcikgeyBhdHRhY2gocik7IH0K
ICAgICB2b2lkIGF0dGFjaChSZXAgKnIpIHsgcmVwID0gcjsgci0+cmVmKCk7IH0KSW5kZXg6IFdl
YkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9i
cmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvYnJp
ZGdlL1dlYkNvcmVCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTY1LDcgKzE2NSw3IEBA
DQogICAgIH0NCiAgICAgaVBhcnQtPnNldEJyaWRnZSgwKTsNCiAgICAgaVBhcnQtPmRlcmVmKCk7
DQotICAgIA0KKw0KICAgICBkZWxldGUgaVNtYXJ0VGV4dEJ1ZmZlcjsNCiAgICAgfQ0KIA0KQEAg
LTI5MSw3ICsyOTEsNyBAQA0KIEVYUE9SVF9DDQogdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q3JlYXRl
RG9jdW1lbnRXaXRoRW5jb2RpbmcoY29uc3QgVERlc0MmIGFFbmNvZGluZywgVEJvb2wgYVVzZXJD
aG9zZW4pDQogew0KLSAgICBpU21hcnRMaW5rTm9kZSA9IE5VTEw7ICAgIA0KKyAgICBpU21hcnRM
aW5rTm9kZSA9IE5VTEw7DQogICAgIGlQYXJ0LT5zZXRFbmNvZGluZyhRU3RyaW5nOjpGcm9tRGVz
KGFFbmNvZGluZyksIGFVc2VyQ2hvc2VuKTsNCiAgICAgQ2xpZW50KCkuRG9jdW1lbnRTdGFydGVk
KCk7DQogfQ0KQEAgLTEzMjYsNiArMTMyNiwxMiBAQA0KIA0KICovDQogRVhQT1JUX0MNCitOUE9i
amVjdCogQ1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KCkNCit7DQorICAgIHJl
dHVybiBpUGFydC0+d2luZG93U2NyaXB0TlBPYmplY3QoKTsNCit9DQorDQorRVhQT1JUX0MNCiB2
b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROYW1lKGNvbnN0IFREZXNDJiBhTmFtZSkNCiB7DQogICAg
IGlQYXJ0LT5LSFRNTFBhcnQ6OnNldE5hbWUoUVN0cmluZzo6RnJvbURlcyhhTmFtZSkpOw0KQEAg
LTE0MjYsMTIgKzE0MzIsMTIgQEANCiBUUHRyQyBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRl
clRleHRGb3JTbWFydExpbmtzTChUQm9vbCYgYUNvbnRpbnVlKQ0KIHsNCiANCi0gICAgaWYoKCFp
UGFydCkgfHwgKCFpUGFydC0+eG1sRG9jSW1wbCgpKSkgDQorICAgIGlmKCghaVBhcnQpIHx8ICgh
aVBhcnQtPnhtbERvY0ltcGwoKSkpDQogICAgICAgICB7DQogICAgICAgICBhQ29udGludWUgPSBF
RmFsc2U7DQogICAgICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAgICAgIH0NCi0gIA0KKw0KICAg
ICBpZiAoaVNtYXJ0TGlua05vZGUgPT0gTlVMTCkNCiAgICAgICAgIHsNCiAgICAgICAgIGlTbWFy
dExpbmtOb2RlID0gaVBhcnQtPnhtbERvY0ltcGwoKTsNCkBAIC0xNDQxLDEwICsxNDQ3LDEwIEBA
DQogICAgICAgICAgICAgfQ0KICAgICAgICAgLy9hZGQgcmVmDQogICAgICAgICB9DQotICAgIGVs
c2UgDQotICAgICAgICB7ICAgDQorICAgIGVsc2UNCisgICAgICAgIHsNCiAgICAgICAgIERPTTo6
Tm9kZUltcGwqIG5vZGVUZW1wID0gaVNtYXJ0TGlua05vZGU7DQotICAgICAgICBpU21hcnRMaW5r
Tm9kZSA9IGlTbWFydExpbmtOb2RlLT50cmF2ZXJzZU5leHROb2RlKCk7ICANCisgICAgICAgIGlT
bWFydExpbmtOb2RlID0gaVNtYXJ0TGlua05vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsNCiAgICAg
ICAgIGlmKGlTbWFydExpbmtOb2RlKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICBpU21h
cnRMaW5rTm9kZS0+cmVmKCk7DQpAQCAtMTQ2MCwxNiArMTQ2NiwxNiBAQA0KICAgICAgICAgaWYo
aVNtYXJ0TGlua05vZGUtPnJlbmRlcmVyKCktPmlzVGV4dCgpKQ0KICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICBhQ29udGludWUgPSBFVHJ1ZTsNCi0gICAgICAgICAgICBSZW5kZXJUZXh0KiB0
ZXh0UmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGlTbWFydExpbmtOb2RlLT5y
ZW5kZXJlcigpKTsgICAgICAgICAgIA0KKyAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5k
ZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oaVNtYXJ0TGlua05vZGUtPnJlbmRlcmVy
KCkpOw0KICAgICAgICAgICAgIGRlbGV0ZSBpU21hcnRUZXh0QnVmZmVyOw0KICAgICAgICAgICAg
IGlTbWFydFRleHRCdWZmZXIgPSBOVUxMOw0KLSAgICAgICAgICAgIGlTbWFydFRleHRCdWZmZXIg
PSB0ZXh0UmVuZGVyZXItPmRhdGEoKS5zdHJpbmcoKS5EZXMoKS5BbGxvY0woKTsgICAgICAgICAg
ICAgICAgDQorICAgICAgICAgICAgaVNtYXJ0VGV4dEJ1ZmZlciA9IHRleHRSZW5kZXJlci0+ZGF0
YSgpLnN0cmluZygpLkRlcygpLkFsbG9jTCgpOw0KICAgICAgICAgICAgIHJldHVybiBpU21hcnRU
ZXh0QnVmZmVyLT5QdHIoKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogDQogICAgIERP
TTo6Tm9kZUltcGwqIG5vZGVUZW1wID0gaVNtYXJ0TGlua05vZGU7DQotICAgIGlTbWFydExpbmtO
b2RlID0gaVNtYXJ0TGlua05vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsgICANCisgICAgaVNtYXJ0
TGlua05vZGUgPSBpU21hcnRMaW5rTm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOw0KICAgICBpZihp
U21hcnRMaW5rTm9kZSkNCiAgICAgICAgIHsNCiAgICAgICAgIGlTbWFydExpbmtOb2RlLT5yZWYo
KTsNCkBAIC0xNDc5LDEzICsxNDg1LDEzIEBADQogICAgIH0NCiANCiAgICAgYUNvbnRpbnVlID0g
RUZhbHNlOw0KLSAgICByZXR1cm4gVFB0ckMoKTsgICAgDQorICAgIHJldHVybiBUUHRyQygpOw0K
IH0NCiANCiBFWFBPUlRfQw0KIHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVh
KGNvbnN0IFREZXNDJiBhVGV4dCwgUkFycmF5PFRSZWN0PiYgYVJlY3QpDQogew0KLSAgaVBhcnQt
PmdldFJlbmRlclRleHRSZWN0QXJyYXkoYVRleHQsIE5vZGUoaVNtYXJ0TGlua05vZGUpLCBhUmVj
dCk7ICAgDQorICBpUGFydC0+Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShhVGV4dCwgTm9kZShpU21h
cnRMaW5rTm9kZSksIGFSZWN0KTsNCiB9DQogDQogDQpAQCAtMjA5Myw3ICsyMDk5LDcgQEANCiAg
ICAgICAgIG5ldyhFTGVhdmUpIENBcnJheVB0ckZsYXQ8Q1dlYkNvcmVQYWdlRGF0YUl0ZW0+KDEw
KTsNCiAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggaXRlbUFycmF5ICk7DQogICAgIENXZWJDb3Jl
UGFnZURhdGFJdGVtKiBkYXRhSXRlbSA9IE5VTEw7DQotICAgIA0KKw0KICAgICAvLyBnZXQgcGFn
ZSBtYXJrdXAgZG9jdW1lbnQgaWYgcmVxdWVzdGVkDQogICAgIGlmKGFUeXBlTWFzayAmIENXZWJD
b3JlUGFnZURhdGFJdGVtOjpFTWFya3VwKQ0KICAgICAgICAgew0KQEAgLTIxMDEsOCArMjEwNyw4
IEBADQogICAgICAgICBkYXRhSXRlbSA9IENXZWJDb3JlUGFnZURhdGFJdGVtOjpOZXdMKENXZWJD
b3JlUGFnZURhdGFJdGVtOjpFTWFya3VwKTsNCiAgICAgICAgIENsZWFudXBTdGFjazo6UHVzaEwo
IGRhdGFJdGVtICk7DQogICAgICAgICBkYXRhSXRlbS0+U2V0VXJsTChpUGFydC0+cmVxdWVzdGVk
VVJMU3RyaW5nKCkuRGVzKCkpOw0KLSAgICAgICAgZGF0YUl0ZW0tPlNldENvbnRlbnRUeXBlTChf
TCgidGV4dC9odG1sIikpOyAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICAgICAgZGF0YUl0
ZW0tPlNldENoYXJzZXRMKF9MKCJ1Y3MtMiIpKTsgDQorICAgICAgICBkYXRhSXRlbS0+U2V0Q29u
dGVudFR5cGVMKF9MKCJ0ZXh0L2h0bWwiKSk7DQorICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNl
dEwoX0woInVjcy0yIikpOw0KICAgICAgICAgZGF0YUl0ZW0tPlNldERhdGFMKCBwYWdlTWFya3Vw
US5EZXMoKSApOw0KICAgICAgICAgaXRlbUFycmF5LT5BcHBlbmRMKGRhdGFJdGVtKTsNCiAgICAg
ICAgIENsZWFudXBTdGFjazo6UG9wKCBkYXRhSXRlbSApOw0KQEAgLTIxMjQsOSArMjEzMCw5IEBA
DQogICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UHVzaEwoIGRhdGFJdGVtICk7DQogICAg
ICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXRVcmxMKHNoZWV0VXJsLnN0cmluZygpLkRlcygpKTsN
CiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldENvbnRlbnRUeXBlTChkU3R5bGVzaGVldC50
eXBlKCkuc3RyaW5nKCkuRGVzKCkpOw0KLSAgICAgICAgICAgICAgICAvL0NoYXJzZXQgaXMgcmVx
dWlyZWQgZm9yIHNhdmVkIHBhZ2VzLiAgIA0KKyAgICAgICAgICAgICAgICAvL0NoYXJzZXQgaXMg
cmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLg0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0
Q2hhcnNldEwoX0woInVjcy0yIikpOw0KLSAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0RGF0
YUwoa1N0eWxlU2hlZXQtPnNoZWV0KCkuc3RyaW5nKCkuRGVzKCkpOyAgICAgICAgICAgICAgICAN
CisgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldERhdGFMKGtTdHlsZVNoZWV0LT5zaGVldCgp
LnN0cmluZygpLkRlcygpKTsNCiAgICAgICAgICAgICAgICAgaXRlbUFycmF5LT5BcHBlbmRMKGRh
dGFJdGVtICk7DQogICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCBkYXRhSXRlbSAp
Ow0KICAgICAgICAgICAgICAgICB9DQpAQCAtMjE1Myw3ICsyMTU5LDcgQEANCiAgICAgICAgICAg
ICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZGF0YUl0ZW0gKTsNCiAgICAgICAgICAgICAgICAg
ZGF0YUl0ZW0tPlNldFVybEwoc2NyaXB0VXJsLnN0cmluZygpLkRlcygpKTsNCiAgICAgICAgICAg
ICAgICAgZGF0YUl0ZW0tPlNldENvbnRlbnRUeXBlTChfTCgiYXBwbGljYXRpb24veC1qYXZhc2Ny
aXB0IikpOw0KLSAgICAgICAgICAgICAgICAvLyBDaGFyc2V0IGlzIHJlcXVpcmVkIGZvciBzYXZl
ZCBwYWdlcy4gDQorICAgICAgICAgICAgICAgIC8vIENoYXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNh
dmVkIHBhZ2VzLg0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVj
cy0yIikpOw0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoa1NjcmlwdC0+c2Ny
aXB0KCkuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAgICAgICBpdGVtQXJyYXktPkFwcGVu
ZEwoZGF0YUl0ZW0pOw0KQEAgLTI4NTksMTQgKzI4NjUsMTQgQEANCiB7DQogICAgIGlmKCFpUGFy
dCB8fCAhaVBhcnQtPnhtbERvY0ltcGwoKSkgcmV0dXJuIEVGYWxzZTsNCiAgICAgaWYoYUluaXRp
YWxpemUpIHsNCi0gICAgICAgIA0KKw0KICAgICAgICAgaWYgKGlQYXJ0LT54bWxEb2NJbXBsKCkg
JiYgaVBhcnQtPnhtbERvY0ltcGwoKS0+Zm9jdXNOb2RlKCkpew0KICAgICAgICAgICAgIFFQb2lu
dCBjcChpUGFydC0+eG1sRG9jSW1wbCgpLT5mb2N1c05vZGUoKS0+Z2V0UmVjdCgpLmNlbnRlcigp
KTsNCiAgICAgICAgICAgICBpUGFydC0+c2V0Q3Vyc29yUG9zaXRpb24oY3ApOw0KICAgICAgICAg
ICAgIGlQYXJ0LT52aWV3KCktPkdldERvY3VtZW50VmlldygpLlNldEZvY3VzKEVUcnVlKTsNCiAg
ICAgICAgICAgICByZXR1cm4gRVRydWU7DQogICAgICAgICB9DQotICAgICAgICANCisNCiAgICAg
ICAgIFFQdHJMaXN0PEtQYXJ0czo6UmVhZE9ubHlQYXJ0PiBjaGlsZFBhcnRMaXN0ID0gaVBhcnQt
PmZyYW1lcygpOw0KICAgICAgICAgZm9yKEtQYXJ0czo6UmVhZE9ubHlQYXJ0KiBjaGlsZFBhcnQg
PSBjaGlsZFBhcnRMaXN0LmZpcnN0KCk7Y2hpbGRQYXJ0O2NoaWxkUGFydCA9IGNoaWxkUGFydExp
c3QubmV4dCgpKXsNCiAgICAgICAgICAgICBLSFRNTFBhcnQgKmtodG1sX3BhcnQgPSBzdGF0aWNf
Y2FzdDxLSFRNTFBhcnQgKj4oY2hpbGRQYXJ0KTsNCkBAIC0yODg0LDcgKzI4OTAsNyBAQA0KICAg
ICAgICAgaVBhcnQtPnRhYmJlZE5hdmlnYXRpb24oMCwxLGFFbFR5cGUsIGFJbml0aWFsaXplKTsN
CiAgICAgICAgIHJldHVybiBFVHJ1ZTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgaW50IGxyID0g
KGFEaXJlY3Rpb24gPT0gRVdlYk5hdkxlZnQpID8gLTEgOiAoYURpcmVjdGlvbiA9PSBFV2ViTmF2
UmlnaHQpID8gMSA6IDAgOw0KICAgICBpbnQgdGIgPSAobHIgIT0gMCkgPyAwOiAoYURpcmVjdGlv
biA9PSBFV2ViTmF2VXApID8gLTEgOiAxIDsNCiAgICAgYm9vbCBmb3VuZCA9IGlQYXJ0LT50YWJi
ZWROYXZpZ2F0aW9uKGxyLHRiLGFFbFR5cGUsYUluaXRpYWxpemUpOw0KSW5kZXg6IFdlYkNvcmUv
YnJpZGdlL1dlYkNvcmVCcmlkZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL1dl
YkNvcmVCcmlkZ2UuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9icmlkZ2UvV2ViQ29y
ZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTMzLDYgKzEzMywxMyBAQA0KIGNsYXNzIEtI
VE1MVmlldzsNCiBjbGFzcyBSZW5kZXJBcmVuYTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KK25hbWVzcGFjZSBLSlMgew0KKyAgICBjbGFzcyBFeGVjU3RhdGU7DQorICAgIGNsYXNz
IE9iamVjdEltcDsNCisgICAgY2xhc3MgUHJvdGVjdGVkVmFsdWU7DQorfQ0KKyNlbmRpZiAvL1JE
X0JST1dTRVJfV0lER0VUUw0KIG5hbWVzcGFjZSBraHRtbCB7DQogICAgIGNsYXNzIFJlbmRlclBh
cnQ7DQogICAgIGNsYXNzIFJlbmRlck9iamVjdDsNCkBAIC0xNTksNiArMTY2LDcgQEANCiANCiBj
bGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dDsNCiBjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRl
bTsNCitjbGFzcyBOUE9iamVjdDsNCiANCiB0eXBlZGVmIGtodG1sOjpSZW5kZXJQYXJ0IEtIVE1M
UmVuZGVyUGFydDsNCiANCkBAIC0yNDUsOCArMjUzLDggQEANCiAgICAgICAgIElNUE9SVF9DIFRQ
dHJDIFJlZmVycmVyKCkgY29uc3Q7DQogICAgICAgICBJTVBPUlRfQyBUUHRyQyBEb21haW4oKSBj
b25zdDsNCiAgICAgICAgIElNUE9SVF9DIEhCdWZDKiBHZXRUZXh0Q29udGVudEwoKTsNCi0gICAg
ICAgICAgICAgICAgDQotICAgICAgICBJTVBPUlRfQyBUUHRyQyBHZXROZXh0UmVuZGVyVGV4dEZv
clNtYXJ0TGlua3NMKFRCb29sJiBhS2VlcEdvaW5nKTsgICAgDQorDQorICAgICAgICBJTVBPUlRf
QyBUUHRyQyBHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKFRCb29sJiBhS2VlcEdvaW5n
KTsNCiAgICAgICAgIElNUE9SVF9DIHZvaWQgR2V0UmVuZGVyVGV4dEFyZWEoY29uc3QgVERlc0Mm
IGFUZXh0LCBSQXJyYXk8VFJlY3Q+JiBhUmVjdCk7DQogDQogICAgICAgICBJTVBPUlRfQyB2b2lk
IEluc3RhbGxJbkZyYW1lKE1XZWJDb3JlU2Nyb2xsVmlldyYgYVZpZXcpOw0KQEAgLTQ0Miw2ICs0
NTAsNyBAQA0KICAgICAgICAgLy92b2lkIGVuc3VyZUNhcmV0VmlzaWJsZTsNCiANCiAgICAgICAg
IC8vLSAoV2ViU2NyaXB0T2JqZWN0ICopd2luZG93U2NyaXB0T2JqZWN0Ow0KKyAgICAgICAgSU1Q
T1JUX0MgTlBPYmplY3QqIFdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7DQogDQogICAgICAgICAvLy0g
KE5TRHJhZ09wZXJhdGlvbilkcmFnT3BlcmF0aW9uRm9yRHJhZ2dpbmdJbmZvKGlkIDxOU0RyYWdn
aW5nSW5mbz4paW5mbzsNCiAgICAgICAgIC8vdm9pZCBkcmFnRXhpdGVkV2l0aERyYWdnaW5nSW5m
byhpZCA8TlNEcmFnZ2luZ0luZm8+KWluZm87DQpAQCAtNTEyLDExICs1MjEsMTEgQEANCiAgICAg
ICAgIFRCb29sIGlTaG91bGRDcmVhdGVSZW5kZXJlcnM7DQogICAgICAgICAvLyBwb2ludGVyIHRv
IHRoZSBjbGllbnQgc2lkZSBicmlkZ2UgaW50ZXJmYWNlDQogICAgICAgICBNV2ViQ2xpZW50QnJp
ZGdlKiBpQ2xpZW50QnJpZGdlOw0KLSAgICAgICAgLy9wb2ludGVyIGZvciByZW5kZXIgdGV4dCBv
YmplY3QgZm9yIHNtYXJ0IGxpbmsgcGFyc2luZyANCisgICAgICAgIC8vcG9pbnRlciBmb3IgcmVu
ZGVyIHRleHQgb2JqZWN0IGZvciBzbWFydCBsaW5rIHBhcnNpbmcNCiAgICAgICAgIERPTTo6Tm9k
ZUltcGwqIGlTbWFydExpbmtOb2RlOw0KICAgICAgICAgLy9wb2ludGVyIGZvciBzbWFydCB0ZXh0
IGJ1ZmZlcg0KICAgICAgICAgSEJ1ZkMqIGlTbWFydFRleHRCdWZmZXI7DQotICAgICAgICANCisN
CiAgICAgfTsNCiANCiANCkBAIC02MTQsNyArNjIzLDcgQEANCiAgICAgdmlydHVhbCBUQm9vbCBE
ZWZlcnNMb2FkaW5nKCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgU2V0RGVmZXJzTG9hZGluZyhU
Qm9vbCBhTG9hZGluZykgPSAwOw0KIA0KLSAgICB2aXJ0dWFsIHZvaWQgU2F2ZUZvcm1EYXRhKGNv
bnN0IENBcnJheVB0ckZsYXQ8Q1dlYkNvcmVGb3JtRGF0YUVsZW1lbnQ+JiBhRm9ybURhdGEpID0g
MDsgDQorICAgIHZpcnR1YWwgdm9pZCBTYXZlRm9ybURhdGEoY29uc3QgQ0FycmF5UHRyRmxhdDxD
V2ViQ29yZUZvcm1EYXRhRWxlbWVudD4mIGFGb3JtRGF0YSkgPSAwOw0KIA0KICAgICB2aXJ0dWFs
IHZvaWQgU2F2ZURvY3VtZW50U3RhdGUoY29uc3QgVEFycmF5PFRQdHJDPiYgYURvY3VtZW50U3Rh
dGUpID0gMDsNCiAgICAgdmlydHVhbCBUQXJyYXk8VFB0ckM+KiBEb2N1bWVudFN0YXRlKCkgY29u
c3QgPSAwOw0KQEAgLTcxNyw2ICs3MjYsOSBAQA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0Rm9ybUNv
bnRyb2xUZXh0QnlOYW1lKGNvbnN0IFREZXNDJiBhTmFtZSwgY29uc3QgVERlc0MmIGFWYWx1ZSkg
PSAwOw0KIA0KICAgICB2aXJ0dWFsIFRCb29sIENhbmNlbEluUHJvZ3Jlc3MoKSA9IDA7DQorI2lm
ZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgdmlydHVhbCBLSlM6Ok9iamVjdEltcCogY3Jl
YXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKSA9IDA7DQorI2VuZGlmIC8vUkRf
QlJPV1NFUl9XSURHRVRTDQogfTsNCiANCiAjZW5kaWYgICAgICAvLyBXRUJDT1JFQlJJREdFX0gN
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlV2lkZ2V0LmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2JyaWRnZS9XZWJDb3JlV2lkZ2V0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNv
cmUvYnJpZGdlL1dlYkNvcmVXaWRnZXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTk0LDYgKzk0LDcg
QEANCiAgICAgdmlydHVhbCB2b2lkIFNldE91dGxpbmVXaWR0aChUVWludDggKSB7fQ0KIA0KICAg
ICB2aXJ0dWFsIHZvaWQgU2V0V3JpdGluZ0RpcmVjdGlvblJ0bChUQm9vbCkge30NCisgICAgdmly
dHVhbCB2b2lkKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCkgeyByZXR1cm4gMDsgfQ0KICAgfTsN
CiANCiANCkluZGV4OiBXZWJDb3JlL0JXSU5TL1dFQkNPUkVVLkRFRg0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvQldJTlMvV0VCQ09SRVUuREVGCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3Jl
L0JXSU5TL1dFQkNPUkVVLkRFRgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMTU5ICsxLDE2MCBAQA0K
IEVYUE9SVFMNCi0JPz8xQ1dlYkNvcmVTZXR0aW5nc0BAVUFFQFhaIEAgMSBOT05BTUUgOyBDV2Vi
Q29yZVNldHRpbmdzOjp+Q1dlYkNvcmVTZXR0aW5ncyh2b2lkKQ0KLQk/QWN0aXZhdGVBY2Nlc3NL
ZXlzQENXZWJDb3JlQnJpZGdlQEBRQUVYVVRLZXlFdmVudEBAQFogQCAyIE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OkFjdGl2YXRlQWNjZXNzS2V5cyhzdHJ1Y3QgVEtleUV2ZW50KQ0KLQk/
QWN0aXZhdGVFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVlRQb2ludEBAQFogQCAzIE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFjdGl2YXRlRXZlbnQoY2xhc3MgVFBvaW50ICYpDQot
CT9BZGREYXRhQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkRGF0YShjbGFzcyBURGVzQzggY29uc3QgJikNCi0JP0Fk
ZEl0ZW1Ub0NhY2hlTEBUV2ViQ29yZUNhY2hlQEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVh
ZGVySW5mb0BAQUFWVERlc0M4QEBIQFogQCA1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6
QWRkSXRlbVRvQ2FjaGVMKGNsYXNzIE1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNs
YXNzIFREZXNDOCAmLCBpbnQpDQotCT9BZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVY
QUFWVFBvaW50QEBAWiBAIDYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250
YWN0cyhjbGFzcyBUUG9pbnQgJikNCi0JP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBR
QUVYWFogQCA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZv
aWQpDQotCT9BbHRUZXh0QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBA
IDggTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRUZXh0
KHZvaWQpDQotCT9BdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAg
OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVkKHZvaWQp
IGNvbnN0DQotCT9Cb2R5QmFja2dyb3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdi
QEBYWiBAIDEwIE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJvZHlCYWNrZ3Jv
dW5kQ29sb3Iodm9pZCkNCi0JP0NhbkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAg
MTEgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uodm9pZCkgY29uc3QN
Ci0JP0NsZWFyRmluZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMTIgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZUJyaWRnZTo6Q2xlYXJGaW5kKHZvaWQpDQotCT9DbGllbnRAQ1dlYkNvcmVCcmlkZ2VA
QFFBRUFBVk1XZWJDbGllbnRCcmlkZ2VAQFhaIEAgMTMgTk9OQU1FIDsgY2xhc3MgTVdlYkNsaWVu
dEJyaWRnZSAmIENXZWJDb3JlQnJpZGdlOjpDbGllbnQodm9pZCkNCi0JP0Nsb3NlVVJMQENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCAxNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbG9z
ZVVSTCh2b2lkKQ0KLQk/Q29va2llQWRhcHRlckBUV2ViQ29yZUNvb2tpZUZhY3RvcnlAQFNBUEFW
TVdlYkNvcmVDb29raWVBZGFwdGVyQEBYWiBAIDE1IE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlQ29v
a2llQWRhcHRlciAqIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6Q29va2llQWRhcHRlcih2b2lkKQ0K
LQk/Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVz
QzE2QEBIQFogQCAxNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVu
dFdpdGhFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCkNCi0JP0NyZWF0ZUtIVE1M
Vmlld0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVk1XZWJDb3JlU2Nyb2xsVmlld0BASEhAWiBAIDE3
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZUtIVE1MVmlldyhjbGFzcyBNV2Vi
Q29yZVNjcm9sbFZpZXcgJiwgaW50LCBpbnQpDQotCT9DdXJzaXZlRm9udEZhbWlseUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE4IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYg
Q1dlYkNvcmVTZXR0aW5nczo6Q3Vyc2l2ZUZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0RlQWN0
aXZhdGVFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDE5IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OkRlQWN0aXZhdGVFdmVudChpbnQpDQotCT9EZWZhdWx0Rml4ZWRGb250U2l6
ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCAyMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0
aW5nczo6RGVmYXVsdEZpeGVkRm9udFNpemUodm9pZCkgY29uc3QNCi0JP0RlZmF1bHRGb250U2l6
ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCAyMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0
aW5nczo6RGVmYXVsdEZvbnRTaXplKHZvaWQpIGNvbnN0DQotCT9EZWZhdWx0VGV4dEVuY29kaW5n
QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMjIgTk9OQU1FIDsgY2xhc3Mg
VFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0
DQotCT9EZWZlcnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50
IENXZWJDb3JlQnJpZGdlOjpEZWZlcnNUaW1lcnModm9pZCkNCi0JP0RldGVybWluZUN1cnNvclBv
c2l0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVIQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBl
QEBBQVZUUmVjdEBAMUFBVlRQb2ludEBASEBaIEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpEZXRlcm1pbmVDdXJzb3JQb3NpdGlvbihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRU
eXBlICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQp
DQotCT9EaWROb3RPcGVuVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAy
NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXND
MTYgY29uc3QgJikNCi0JP0RvbWFpbkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFog
QCAyNiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkg
Y29uc3QNCi0JP0RyYXdSZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNXZWJD
b3JlR3JhcGhpY3NDb250ZXh0QEBAWiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OkRyYXdSZWN0KGNsYXNzIFRSZWN0IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250
ZXh0ICYpDQotCT9EdW1wUmVuZGVyVHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjggTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCi0JP0VuZEBD
V2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
RW5kKHZvaWQpDQotCT9FeGVjdXRlU2NyaXB0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0Mx
NkBAQFogQCAzMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVjdXRlU2NyaXB0KGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCi0JP0ZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3Rv
cnlAQFNBUEFWTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFhaIEAgMzEgTk9OQU1FIDsgY2xh
c3MgTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgKiBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9y
eTo6RmFjdG9yeSh2b2lkKQ0KLQk/RmFjdG9yeUBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5
QEBTQVBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFhaIEAgMzIgTk9OQU1FIDsgY2xh
c3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZh
Y3Rvcnk6OkZhY3Rvcnkodm9pZCkNCi0JP0ZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0
b3J5QEBTQVBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMyBOT05BTUUgOyBj
bGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKiBUV2ViQ29yZVRleHRSZW5kZXJlckZh
Y3Rvcnk6OkZhY3Rvcnkodm9pZCkNCi0JP0ZhbnRhc3lGb250RmFtaWx5QENXZWJDb3JlU2V0dGlu
Z3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzQgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29y
ZVNldHRpbmdzOjpGYW50YXN5Rm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/RmFzdEZpcnN0RGlz
cGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDM1IE5PTkFNRSA7IGludCBDV2ViQ29y
ZUJyaWRnZTo6RmFzdEZpcnN0RGlzcGxheU1vZGUodm9pZCkgY29uc3QNCi0JP0ZpbmRMaW5rc09m
VHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFVUV2ViQ29y
ZUxpbmtJdGVtQEBAQEBaIEAgMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RmluZExp
bmtzT2ZUeXBlKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PHN0cnVjdCBUV2Vi
Q29yZUxpbmtJdGVtPiAmKQ0KLQk/Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFC
RT9BVlRQdHJDMTZAQFhaIEAgMzcgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRp
bmdzOjpGaXhlZEZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0ZvcmNlTGF5b3V0QWRqdXN0aW5n
Vmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAzOCBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpGb3JjZUxheW91dEFkanVzdGluZ1ZpZXdTaXplKGludCkNCi0JP0dldFBhZ2VE
YXRhTEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlQdHJAVkNXZWJDb3JlUGFnZURhdGFJ
dGVtQEBAQEhAWiBAIDM5IE5PTkFNRSA7IGNsYXNzIENBcnJheVB0cjxjbGFzcyBDV2ViQ29yZVBh
Z2VEYXRhSXRlbT4gKiBDV2ViQ29yZUJyaWRnZTo6R2V0UGFnZURhdGFMKGludCkNCi0JP0dldFRl
eHRDb250ZW50TEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAWFogQCA0MCBOT05BTUUg
OyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0K
LQk/R2V0VXJsT2ZOb2RlSW5Gb2N1c0xAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFB
VlRQb2ludEBAQFogQCA0MSBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6
OkdldFVybE9mTm9kZUluRm9jdXNMKGNsYXNzIFRQb2ludCAmKSBjb25zdA0KLQk/SGFzUGVuZGlu
Z0xheW91dEBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpIYXNQZW5kaW5nTGF5b3V0KHZvaWQpIGNvbnN0DQotCT9IaXN0b3J5UHJvdmlkZXJA
VFdlYkNvcmVIaXN0b3J5QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5P
TkFNRSA7IGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpI
aXN0b3J5UHJvdmlkZXIodm9pZCkNCi0JP0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhI
QFogQCA0NCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KLQk/
SW1hZ2VUeXBlQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5P
TkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZv
aWQpDQotCT9JbWFnZXNJblJlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4Rmxh
dEBWVFdlYkNvcmVJbWFnZUNhcnJpZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0FycmF5
Rml4RmxhdDxjbGFzcyBUV2ViQ29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6SW1h
Z2VzSW5SZWN0KGludCkNCi0JP0luaXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRnZUBAUUFF
WEFCVkNXZWJDb3JlU2V0dGluZ3NAQEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6SW5pdGlhbGl6ZVNldHRpbmdzKGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3QgJikNCi0J
P0luc3RhbGxJbkZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3
QEBAWiBAIDQ4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJbkZyYW1lKGNs
YXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmKQ0KLQk/SXNGcmFtZVNldEBDV2ViQ29yZUJyaWRnZUBA
UUJFSFhaIEAgNDkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpJc0ZyYW1lU2V0KHZvaWQp
IGNvbnN0DQotCT9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1MCBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QNCi0JP0ph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJF
SFhaIEAgNTEgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRFbmFibGVkQENX
ZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUyIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdz
OjpKYXZhU2NyaXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KLQk/SnVtcFRvU2VsZWN0aW9uQENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCA1MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpKdW1w
VG9TZWxlY3Rpb24odm9pZCkNCi0JP0tleUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVIVVRLZXlF
dmVudEBASEBaIEAgNTQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpLZXlFdmVudChzdHJ1
Y3QgVEtleUV2ZW50LCBpbnQpDQotCT9Mb2FkSW1hZ2VzQENXZWJDb3JlQnJpZGdlQEBRQUVYWFog
QCA1NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpMb2FkSW1hZ2VzKHZvaWQpDQotCT9M
b2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBUEFWTVdlYkNvcmVMb2Fk
ZXJDb250YWluZXJAQFhaIEAgNTYgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWlu
ZXIgKiBUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjo6TG9hZGVyQ29udGFpbmVyKHZvaWQpDQotCT9N
aW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTcgTk9OQU1FIDsgaW50
IENXZWJDb3JlU2V0dGluZ3M6Ok1pbmltdW1Gb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/TWluaW11
bUxvZ2ljYWxGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1OCBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVTZXR0aW5nczo6TWluaW11bUxvZ2ljYWxGb250U2l6ZSh2b2lkKSBjb25zdA0K
LQk/TmFtZUBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA1OSBOT05BTUUgOyBj
bGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpOYW1lKHZvaWQpIGNvbnN0DQotCT9OYXZpZ2Fi
bGVOb2RlVW5kZXJDdXJzb3JAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhBQVZUUG9pbnRAQEFBVzRUV2Vi
Q29yZUZvY3VzZWRFbGVtZW50VHlwZUBAQUFWVFJlY3RAQEBaIEAgNjAgTk9OQU1FIDsgaW50IENX
ZWJDb3JlQnJpZGdlOjpOYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVu
dW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCi0J
P05lZWRzTGF5b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVCcmlkZ2U6Ok5lZWRzTGF5b3V0KHZvaWQpIGNvbnN0DQotCT9OZXdMQENXZWJDb3JlQnJp
ZGdlQEBTQVBBVjFAQUFWTVdlYkNsaWVudEJyaWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBD
V2ViQ29yZUJyaWRnZSAqIENXZWJDb3JlQnJpZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlk
Z2UgJikNCi0JP05ld0xAQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0
R2NAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUg
OyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0
OjpOZXdMKGNsYXNzIENGYnNCaXRHYyAmLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJD
b3JlU2Nyb2xsVmlldyAqKQ0KLQk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYx
QFBBVkNGYnNCaXRtYXBEZXZpY2VAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmll
d0BAQFogQCA2NCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJD
b3JlR3JhcGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3Mg
Q0Zic0JpdG1hcCAqLCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgKikNCi0JP05ld0xAQ1dlYkNv
cmVTZXR0aW5nc0BAU0FQQVYxQFhaIEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0aW5n
cyAqIENXZWJDb3JlU2V0dGluZ3M6Ok5ld0wodm9pZCkNCi0JP05vdGlmeURlY29kaW5nRXJyb3JA
Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZvaWQpDQot
CT9Ob3RpZnlGaW5pc2hlZEBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2
NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeUZpbmlz
aGVkKHZvaWQpDQotCT9Ob3RpZnlVcGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBA
UUFFWFhaIEAgNjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpO
b3RpZnlVcGRhdGUodm9pZCkNCi0JP051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0BDV2ViQ29y
ZUJyaWRnZUBAUUFFSFhaIEAgNjkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOdW1QZW5k
aW5nT3JMb2FkaW5nUmVxdWVzdHModm9pZCkNCi0JP09wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhBQlZURGVzQzE2QEBIMDBBQlZURGF0ZVRpbWVAQEBaIEAgNzAgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6T3BlblVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgY2xhc3MgVERl
c0MxNiBjb25zdCAmLCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRlVGltZSBjb25z
dCAmKQ0KLQk/UGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBUEFWTVdlYkNv
cmVQbHVnaW5IYW5kbGVyQEBYWiBAIDcxIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFu
ZGxlciAqIFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2luSGFuZGxlcih2b2lkKQ0KLQk/UGx1
Z2luc0VuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNzIgTk9OQU1FIDsgaW50IENX
ZWJDb3JlU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9Qb2ludGVyRXZl
bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhVVFBvaW50ZXJFdmVudEBAQFogQCA3MyBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoc3RydWN0IFRQb2ludGVyRXZlbnQpDQot
CT9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhXNFRUeXBlQFRQb2ludGVyRXZlbnRA
QEFCVlRQb2ludEBAQFogQCA3NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVy
RXZlbnQoZW51bSBUUG9pbnRlckV2ZW50OjpUVHlwZSwgY2xhc3MgVFBvaW50IGNvbnN0ICYpDQot
CT9QcmVwYXJlRm9yRXhpdEBDV2ViQ29yZUJyaWRnZUBAU0FYWFogQCA3NSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpQcmVwYXJlRm9yRXhpdCh2b2lkKQ0KLQk/UHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2b2lkKQ0KLQk/UmF3RGF0YUBUV2ViQ29y
ZUltYWdlQ2FycmllckBAUUFFQUFWVFB0ckM4QEBYWiBAIDc3IE5PTkFNRSA7IGNsYXNzIFRQdHJD
OCAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSYXdEYXRhKHZvaWQpDQotCT9SZWFwcGx5U3R5bGVz
Rm9yRGV2aWNlVHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBA
WiBAIDc4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZp
Y2VUeXBlKGVudW0gVFdlYkNvcmVEZXZpY2VUeXBlKQ0KLQk/UmVmZXJyZXJAQ1dlYkNvcmVCcmlk
Z2VAQFFCRT9BVlRQdHJDMTZAQFhaIEAgNzkgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29y
ZUJyaWRnZTo6UmVmZXJyZXIodm9pZCkgY29uc3QNCi0JP1JlbW92ZUZpbGVOYW1lQENXZWJDb3Jl
QnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDgwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OlJlbW92ZUZpbGVOYW1lKGNsYXNzIFRQb2ludCAmKQ0KLQk/UmVtb3ZlRnJvbUZyYW1lQENX
ZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpS
ZW1vdmVGcm9tRnJhbWUodm9pZCkNCi0JP1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBB
VjBraHRtbEBAWFogQCA4MiBOT05BTUUgOyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJD
b3JlQnJpZGdlOjpSZW5kZXJQYXJ0KHZvaWQpIGNvbnN0DQotCT9SZW5kZXJlckBUV2ViQ29yZUlt
YWdlQ2FycmllckBAUUFFUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7
IGNsYXNzIE1XZWJDb3JlSW1hZ2VSZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5k
ZXJlcih2b2lkKQ0KLQk/UmVzb2x2ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMxNkBA
QUJWVERlc0MxNkBAMEBaIEAgODQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJp
ZGdlOjpSZXNvbHZlVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29u
c3QgJikNCi0JP1Jlc3RvcmVEb2N1bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4
NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0ZSh2b2lk
KQ0KLQk/U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2
QEBYWiBAIDg2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2Fuc1Nl
cmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/U2F2ZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhYWiBAIDg3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNhdmVEb2N1
bWVudFN0YXRlKHZvaWQpDQotCT9TYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BA
UUJFSFhaIEAgODggTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlNhdmVSYXdEYXRhRW5h
YmxlZCh2b2lkKSBjb25zdA0KLQk/U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhIQFogQCA4OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY2FsaW5nRmFjdG9y
Q2hhbmdlZChpbnQpDQotCT9TY3JvbGxUb0FuY2hvckBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlRE
ZXNDMTZAQEBaIEAgOTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2Nyb2xsVG9BbmNo
b3IoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2Nyb2xsVG9BbmNob3JXaXRoVVJMQENXZWJD
b3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpTY3JvbGxUb0FuY2hvcldpdGhVUkwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/
U2VhcmNoQWdhaW5AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkyIE5P
TkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoQWdhaW4oY2xhc3MgVERlc0MxNiBjb25z
dCAmLCBpbnQsIGludCwgaW50KQ0KLQk/U2VhcmNoRm9yQENXZWJDb3JlQnJpZGdlQEBRQUVIQUJW
VERlc0MxNkBASEhIQFogQCA5MyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlNlYXJjaEZv
cihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQotCT9TZWxlY3Rpb25Db2xv
ckBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFJnYkBAWFogQCA5NCBOT05BTUUgOyBjbGFzcyBUUmdi
IENXZWJDb3JlQnJpZGdlOjpTZWxlY3Rpb25Db2xvcih2b2lkKQ0KLQk/U2VuZFJlc2l6ZUV2ZW50
QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA5NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpTZW5kUmVzaXplRXZlbnQodm9pZCkNCi0JP1NlbmRTY3JvbGxFdmVudEBDV2ViQ29yZUJyaWRn
ZUBAUUFFWFhaIEAgOTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2VuZFNjcm9sbEV2
ZW50KHZvaWQpDQotCT9TZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0
ckMxNkBAWFogQCA5NyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlNl
cmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/U2V0QXV0b1JlZnJlc2hFbmFibGVkQENXZWJD
b3JlU2V0dGluZ3NAQFFBRVhIQFogQCA5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6
OlNldEF1dG9SZWZyZXNoRW5hYmxlZChpbnQpDQotCT9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdl
Q2FsbGJhY2tXcmFwcGVyQEBRQUVYUEFWQ2FjaGVkSW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5
OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNr
KGNsYXNzIGtodG1sOjpDYWNoZWRJbWFnZUNhbGxiYWNrICopDQotCT9TZXRDb29raWVBZGFwdGVy
QFRXZWJDb3JlQ29va2llRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBA
IDEwMCBOT05BTUUgOyB2b2lkIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRl
cihjbGFzcyBNV2ViQ29yZUNvb2tpZUFkYXB0ZXIgKikNCi0JP1NldEN1cnNpdmVGb250RmFtaWx5
QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlU2V0dGluZ3M6OlNldEN1cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29u
c3QgJikNCi0JP1NldERlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhI
QFogQCAxMDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRG
b250U2l6ZShpbnQpDQotCT9TZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFF
WEhAWiBAIDEwMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGb250
U2l6ZShpbnQpDQotCT9TZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhBQlZURGVzQzE2QEBAWiBAIDEwNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNl
dERlZmF1bHRUZXh0RW5jb2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RGVmZXJz
VGltZXJzQENXZWJDb3JlQnJpZGdlQEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6U2V0RGVmZXJzVGltZXJzKGludCkNCi0JP1NldERyYXdzQmFja2dyb3VuZEBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEhAWiBAIDEwNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpT
ZXREcmF3c0JhY2tncm91bmQoaW50KQ0KLQk/U2V0RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVT
ZXR0aW5nczo6U2V0RmFudGFzeUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/
U2V0RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMDggTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0RmFzdEZpcnN0RGlzcGxheU1vZGUoaW50KQ0K
LQk/U2V0Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBA
WiBAIDEwOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEZpeGVkRm9udEZhbWls
eShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRGb250U2l6ZUxldmVsQENXZWJDb3JlQnJp
ZGdlQEBRQUVYSEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvbnRT
aXplTGV2ZWwoaW50KQ0KLQk/U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lQENXZWJDb3JlQnJpZGdl
QEBRQUVYQUJWVERlc0MxNkBAMEBaIEAgMTExIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlNldEZvcm1Db250cm9sVGV4dEJ5TmFtZShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFRE
ZXNDMTYgY29uc3QgJikNCi0JP1NldEhpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNB
WFBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBAWiBAIDExMiBOT05BTUUgOyB2b2lkIFRXZWJD
b3JlSGlzdG9yeTo6U2V0SGlzdG9yeVByb3ZpZGVyKGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3Zp
ZGVyICopDQotCT9TZXRKYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTEz
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YUVuYWJsZWQoaW50KQ0KLQk/
U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYSEBaIEAgMTE0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShpbnQpDQotCT9TZXRKYXZhU2NyaXB0RW5h
YmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdEVuYWJsZWQoaW50KQ0KLQk/U2V0TWF4QmlkaVdpZHRo
QENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OlNldE1heEJpZGlXaWR0aChpbnQpDQotCT9TZXRNaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUFFWEhAWiBAIDExNyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNl
dE1pbmltdW1Gb250U2l6ZShpbnQpDQotCT9TZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJD
b3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdz
OjpTZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKGludCkNCi0JP1NldE5hbWVAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDExOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpTZXROYW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldE5lZWRzTGF5b3V0QENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCAxMjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0
TmVlZHNMYXlvdXQodm9pZCkNCi0JP1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFA
QFogQCAxMjEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENX
ZWJDb3JlQnJpZGdlICopDQotCT9TZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBR
QUVYSEBaIEAgMTIyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0Vu
YWJsZWQoaW50KQ0KLQk/U2V0UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVlJlbmRl
clBhcnRAa2h0bWxAQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFJl
bmRlclBhcnQoY2xhc3Mga2h0bWw6OlJlbmRlclBhcnQgKikNCi0JP1NldFNhbnNTZXJpZkZvbnRG
YW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShjbGFzcyBURGVz
QzE2IGNvbnN0ICYpDQotCT9TZXRTYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEhAWiBAIDEyNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFNhdmVSYXdE
YXRhRW5hYmxlZChpbnQpDQotCT9TZXRTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEFCVlREZXNDMTZAQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0U2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFNob3VsZENy
ZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEyNyBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoaW50KQ0KLQk/U2V0U2hv
dWxkUHJpbnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTI4IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhpbnQp
DQotCT9TZXRTdGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXND
MTZAQEBaIEAgMTI5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U3RhbmRhcmRG
b250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTMwIE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjbGFzcyBU
RGVzQzE2IGNvbnN0ICYpDQotCT9TZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QFRXZWJDb3Jl
Rm9ybUNvbnRyb2xGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAQFog
QCAxMzEgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6U2V0V2ViQ29y
ZUZvcm1Db250cm9sRmFjdG9yeShjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqKQ0K
LQk/U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZh
Y3RvcnlAQFNBWFBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTMyIE5PTkFN
RSA7IHZvaWQgVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTo6U2V0V2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgKikNCi0JP1Nl
dFdlYkNvcmVMb2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBWFBBVk1X
ZWJDb3JlTG9hZGVyQ29udGFpbmVyQEBAWiBAIDEzMyBOT05BTUUgOyB2b2lkIFRXZWJDb3JlTG9h
ZGVyQ29udGFpbmVyOjpTZXRXZWJDb3JlTG9hZGVyQ29udGFpbmVyKGNsYXNzIE1XZWJDb3JlTG9h
ZGVyQ29udGFpbmVyICopDQotCT9TZXRXZWJDb3JlUGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdp
bkhhbmRsZXJAQFNBWFBBVk1XZWJDb3JlUGx1Z2luSGFuZGxlckBAQFogQCAxMzQgTk9OQU1FIDsg
dm9pZCBUV2ViQ29yZVBsdWdpbkhhbmRsZXI6OlNldFdlYkNvcmVQbHVnaW5IYW5kbGVyKGNsYXNz
IE1XZWJDb3JlUGx1Z2luSGFuZGxlciAqKQ0KLQk/U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3Rv
cnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZVRleHRSZW5kZXJl
ckZhY3RvcnlAQEBaIEAgMTM1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0
b3J5OjpTZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeShjbGFzcyBNV2ViQ29yZVRleHRSZW5k
ZXJlckZhY3RvcnkgKikNCi0JP1NldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29y
ZVNldHRpbmdzQEBRQUVYSEBaIEAgMTM2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KGludCkNCi0JP1Nob3VsZENyZWF0ZVJlbmRl
cmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFSFhaIEAgMTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJy
aWRnZTo6U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKHZvaWQpDQotCT9TaG91bGRQcmludEJhY2tncm91
bmRzQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVT
ZXR0aW5nczo6U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyh2b2lkKSBjb25zdA0KLQk/U2hvd2luZ0Zh
c3RQcmV2aWV3QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJD
b3JlQnJpZGdlOjpTaG93aW5nRmFzdFByZXZpZXcodm9pZCkgY29uc3QNCi0JP1N0YW5kYXJkRm9u
dEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUg
OyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lk
KSBjb25zdA0KLQk/VGFiYmVkTmF2aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdlYk5h
dkRpcmVjdGlvbkBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEgTk9O
QU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5hdkRp
cmVjdGlvbiwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQotCT9UZXh0
RW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNpZ25lZCBp
bnQgQ1dlYkNvcmVCcmlkZ2U6OlRleHRFbmNvZGluZyh2b2lkKSBjb25zdA0KLQk/VVJMQENXZWJD
b3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2
IENXZWJDb3JlQnJpZGdlOjpVUkwodm9pZCkgY29uc3QNCi0JP1VSTFdpdGhSZWxhdGl2ZVN0cmlu
Z0BDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAQFogQCAxNDQgTk9O
QU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpVUkxXaXRoUmVsYXRpdmVTdHJp
bmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/VXBkYXRlQWxsVmlld3NAQ1dlYkNvcmVCcmlk
Z2VAQFNBWFhaIEAgMTQ1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlVwZGF0ZUFsbFZp
ZXdzKHZvaWQpDQotCT9VcmxAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFha
IEAgMTQ2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6VXJs
KHZvaWQpDQotCT9Vc2VyU3R5bGVTaGVldExvY2F0aW9uQENXZWJDb3JlU2V0dGluZ3NAQFFCRT9B
VlRQdHJDMTZAQFhaIEAgMTQ3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5n
czo6VXNlclN0eWxlU2hlZXRMb2NhdGlvbih2b2lkKSBjb25zdA0KLQk/V2lsbExvYWRJbWFnZXNB
dXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDE0OCBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVTZXR0aW5nczo6V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KHZvaWQpIGNvbnN0
DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklk
ZW50aWZpZXJAMkBAWiBAIDE0OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9w
ZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3Qg
JikgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJA
QUJWSWRlbnRpZmllckAyQEBaIEAgMTUwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1By
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmKSBjb25zdA0KLQk/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDE1MSBOT05BTUUg
OyBib29sIEtKUzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lkKSBjb25zdA0KLQk/Y2xhc3NJbmZvQE9i
amVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgMTUyIE5PTkFNRSA7IHN0cnVjdCBLSlM6
OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0J
P2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTUz
IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNA
QFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTU0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6
Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QN
Ci0JP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3Rh
dGVAMkBfTkBaIEAgMTU1IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9i
amVjdDo6cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCi0JP0dldE5leHRS
ZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0xAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFB
SEBaIEAgMTU2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRS
ZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0woaW50ICYpDQotCT9HZXRSZW5kZXJUZXh0QXJlYUBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1
NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBU
RGVzQzE2IGNvbnN0ICYsIGNsYXNzIFJBcnJheTxjbGFzcyBUUmVjdD4gJikNCisgICAgPz8xQ1dl
YkNvcmVTZXR0aW5nc0BAVUFFQFhaIEAgMSBOT05BTUUgOyBDV2ViQ29yZVNldHRpbmdzOjp+Q1dl
YkNvcmVTZXR0aW5ncyh2b2lkKQ0KKyAgICA/QWN0aXZhdGVBY2Nlc3NLZXlzQENXZWJDb3JlQnJp
ZGdlQEBRQUVYVVRLZXlFdmVudEBAQFogQCAyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OkFjdGl2YXRlQWNjZXNzS2V5cyhzdHJ1Y3QgVEtleUV2ZW50KQ0KKyAgICA/QWN0aXZhdGVFdmVu
dEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVlRQb2ludEBAQFogQCAzIE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OkFjdGl2YXRlRXZlbnQoY2xhc3MgVFBvaW50ICYpDQorICAgID9BZGREYXRh
QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6QWRkRGF0YShjbGFzcyBURGVzQzggY29uc3QgJikNCisgICAgP0FkZEl0ZW1U
b0NhY2hlTEBUV2ViQ29yZUNhY2hlQEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5m
b0BAQUFWVERlc0M4QEBIQFogQCA1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6QWRkSXRl
bVRvQ2FjaGVMKGNsYXNzIE1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNsYXNzIFRE
ZXNDOCAmLCBpbnQpDQorICAgID9BZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFW
VFBvaW50QEBAWiBAIDYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250YWN0
cyhjbGFzcyBUUG9pbnQgJikNCisgICAgP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBR
QUVYWFogQCA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZv
aWQpDQorICAgID9BbHRUZXh0QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBY
WiBAIDggTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRU
ZXh0KHZvaWQpDQorICAgID9BdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJF
SFhaIEAgOSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVk
KHZvaWQpIGNvbnN0DQorICAgID9Cb2R5QmFja2dyb3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBR
QUU/QVZUUmdiQEBYWiBAIDEwIE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJv
ZHlCYWNrZ3JvdW5kQ29sb3Iodm9pZCkNCisgICAgP0NhbkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRn
ZUBAUUJFSFhaIEAgMTEgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uo
dm9pZCkgY29uc3QNCisgICAgP0NsZWFyRmluZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMTIg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q2xlYXJGaW5kKHZvaWQpDQorICAgID9DbGll
bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUFBVk1XZWJDbGllbnRCcmlkZ2VAQFhaIEAgMTMgTk9OQU1F
IDsgY2xhc3MgTVdlYkNsaWVudEJyaWRnZSAmIENXZWJDb3JlQnJpZGdlOjpDbGllbnQodm9pZCkN
CisgICAgP0Nsb3NlVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxNCBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpDbG9zZVVSTCh2b2lkKQ0KKyAgICA/Q29va2llQWRhcHRlckBUV2Vi
Q29yZUNvb2tpZUZhY3RvcnlAQFNBUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBYWiBAIDE1IE5P
TkFNRSA7IGNsYXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqIFRXZWJDb3JlQ29va2llRmFjdG9y
eTo6Q29va2llQWRhcHRlcih2b2lkKQ0KKyAgICA/Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIQFogQCAxNiBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNv
bnN0ICYsIGludCkNCisgICAgP0NyZWF0ZUtIVE1MVmlld0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFB
Vk1XZWJDb3JlU2Nyb2xsVmlld0BASEhAWiBAIDE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkNyZWF0ZUtIVE1MVmlldyhjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgJiwgaW50LCBpbnQp
DQorICAgID9DdXJzaXZlRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2
QEBYWiBAIDE4IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6Q3Vyc2l2
ZUZvbnRGYW1pbHkodm9pZCkgY29uc3QNCisgICAgP0RlQWN0aXZhdGVFdmVudEBDV2ViQ29yZUJy
aWRnZUBAUUFFWEhAWiBAIDE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRlQWN0aXZh
dGVFdmVudChpbnQpDQorICAgID9EZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdz
QEBRQkVIWFogQCAyMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZpeGVk
Rm9udFNpemUodm9pZCkgY29uc3QNCisgICAgP0RlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRp
bmdzQEBRQkVIWFogQCAyMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZv
bnRTaXplKHZvaWQpIGNvbnN0DQorICAgID9EZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0
dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMjIgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2Vi
Q29yZVNldHRpbmdzOjpEZWZhdWx0VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQorICAgID9EZWZl
cnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpEZWZlcnNUaW1lcnModm9pZCkNCisgICAgP0RldGVybWluZUN1cnNvclBvc2l0aW9u
QENXZWJDb3JlQnJpZGdlQEBRQUVIQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZU
UmVjdEBAMUFBVlRQb2ludEBASEBaIEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpE
ZXRlcm1pbmVDdXJzb3JQb3NpdGlvbihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYs
IGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQpDQorICAg
ID9EaWROb3RPcGVuVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAyNSBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXNDMTYg
Y29uc3QgJikNCisgICAgP0RvbWFpbkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFog
QCAyNiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkg
Y29uc3QNCisgICAgP0RyYXdSZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNX
ZWJDb3JlR3JhcGhpY3NDb250ZXh0QEBAWiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkRyYXdSZWN0KGNsYXNzIFRSZWN0IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3ND
b250ZXh0ICYpDQorICAgID9EdW1wUmVuZGVyVHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAg
MjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCisg
ICAgP0VuZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6RW5kKHZvaWQpDQorICAgID9FeGVjdXRlU2NyaXB0QENXZWJDb3JlQnJpZGdlQEBR
QUVYQUJWVERlc0MxNkBAQFogQCAzMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVj
dXRlU2NyaXB0KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP0ZhY3RvcnlAVFdlYkNvcmVG
b3JtQ29udHJvbEZhY3RvcnlAQFNBUEFWTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFhaIEAg
MzEgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgKiBUV2ViQ29yZUZv
cm1Db250cm9sRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29yZUlt
YWdlUmVuZGVyZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFha
IEAgMzIgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqIFRXZWJD
b3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhY3RvcnlAVFdl
YkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9y
eUBAWFogQCAzMyBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKiBU
V2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhbnRhc3lG
b250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzQgTk9OQU1F
IDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGYW50YXN5Rm9udEZhbWlseSh2b2lk
KSBjb25zdA0KKyAgICA/RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhY
WiBAIDM1IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6RmFzdEZpcnN0RGlzcGxheU1vZGUo
dm9pZCkgY29uc3QNCisgICAgP0ZpbmRMaW5rc09mVHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFC
VlREZXNDMTZAQEFBVj8kUkFycmF5QFVUV2ViQ29yZUxpbmtJdGVtQEBAQEBaIEAgMzYgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RmluZExpbmtzT2ZUeXBlKGNsYXNzIFREZXNDMTYgY29u
c3QgJiwgY2xhc3MgUkFycmF5PHN0cnVjdCBUV2ViQ29yZUxpbmtJdGVtPiAmKQ0KKyAgICA/Rml4
ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzcgTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGaXhlZEZvbnRGYW1pbHkodm9p
ZCkgY29uc3QNCisgICAgP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhIQFogQCAzOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGb3JjZUxheW91
dEFkanVzdGluZ1ZpZXdTaXplKGludCkNCisgICAgP0dldFBhZ2VEYXRhTEBDV2ViQ29yZUJyaWRn
ZUBAUUFFUEFWPyRDQXJyYXlQdHJAVkNXZWJDb3JlUGFnZURhdGFJdGVtQEBAQEhAWiBAIDM5IE5P
TkFNRSA7IGNsYXNzIENBcnJheVB0cjxjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbT4gKiBDV2Vi
Q29yZUJyaWRnZTo6R2V0UGFnZURhdGFMKGludCkNCisgICAgP0dldFRleHRDb250ZW50TEBDV2Vi
Q29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAWFogQCA0MCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2
ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KKyAgICA/R2V0VXJsT2ZO
b2RlSW5Gb2N1c0xAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFBVlRQb2ludEBAQFog
QCA0MSBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFVybE9mTm9k
ZUluRm9jdXNMKGNsYXNzIFRQb2ludCAmKSBjb25zdA0KKyAgICA/SGFzUGVuZGluZ0xheW91dEBD
V2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpI
YXNQZW5kaW5nTGF5b3V0KHZvaWQpIGNvbnN0DQorICAgID9IaXN0b3J5UHJvdmlkZXJAVFdlYkNv
cmVIaXN0b3J5QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5PTkFNRSA7
IGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpIaXN0b3J5
UHJvdmlkZXIodm9pZCkNCisgICAgP0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhIQFog
QCA0NCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KKyAgICA/
SW1hZ2VUeXBlQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5P
TkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZv
aWQpDQorICAgID9JbWFnZXNJblJlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4
RmxhdEBWVFdlYkNvcmVJbWFnZUNhcnJpZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0Fy
cmF5Rml4RmxhdDxjbGFzcyBUV2ViQ29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6
SW1hZ2VzSW5SZWN0KGludCkNCisgICAgP0luaXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRn
ZUBAUUFFWEFCVkNXZWJDb3JlU2V0dGluZ3NAQEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6SW5pdGlhbGl6ZVNldHRpbmdzKGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3Qg
JikNCisgICAgP0luc3RhbGxJbkZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVT
Y3JvbGxWaWV3QEBAWiBAIDQ4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJ
bkZyYW1lKGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmKQ0KKyAgICA/SXNGcmFtZVNldEBDV2Vi
Q29yZUJyaWRnZUBAUUJFSFhaIEAgNDkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpJc0Zy
YW1lU2V0KHZvaWQpIGNvbnN0DQorICAgID9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBR
QkVIWFogQCA1MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9p
ZCkgY29uc3QNCisgICAgP0phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dl
YkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTEgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6
OkphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCisgICAg
P0phdmFTY3JpcHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUyIE5PTkFNRSA7
IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhU2NyaXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KKyAg
ICA/SnVtcFRvU2VsZWN0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1MyBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpKdW1wVG9TZWxlY3Rpb24odm9pZCkNCisgICAgP0tleUV2ZW50
QENXZWJDb3JlQnJpZGdlQEBRQUVIVVRLZXlFdmVudEBASEBaIEAgNTQgTk9OQU1FIDsgaW50IENX
ZWJDb3JlQnJpZGdlOjpLZXlFdmVudChzdHJ1Y3QgVEtleUV2ZW50LCBpbnQpDQorICAgID9Mb2Fk
SW1hZ2VzQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1NSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpMb2FkSW1hZ2VzKHZvaWQpDQorICAgID9Mb2FkZXJDb250YWluZXJAVFdlYkNvcmVM
b2FkZXJDb250YWluZXJAQFNBUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJAQFhaIEAgNTYgTk9O
QU1FIDsgY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKiBUV2ViQ29yZUxvYWRlckNvbnRh
aW5lcjo6TG9hZGVyQ29udGFpbmVyKHZvaWQpDQorICAgID9NaW5pbXVtRm9udFNpemVAQ1dlYkNv
cmVTZXR0aW5nc0BAUUJFSFhaIEAgNTcgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Ok1p
bmltdW1Gb250U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/TWluaW11bUxvZ2ljYWxGb250U2l6ZUBD
V2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5n
czo6TWluaW11bUxvZ2ljYWxGb250U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/TmFtZUBDV2ViQ29y
ZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA1OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENX
ZWJDb3JlQnJpZGdlOjpOYW1lKHZvaWQpIGNvbnN0DQorICAgID9OYXZpZ2FibGVOb2RlVW5kZXJD
dXJzb3JAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhBQVZUUG9pbnRAQEFBVzRUV2ViQ29yZUZvY3VzZWRF
bGVtZW50VHlwZUBAQUFWVFJlY3RAQEBaIEAgNjAgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdl
OjpOYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdlYkNvcmVG
b2N1c2VkRWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCisgICAgP05lZWRzTGF5
b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6Ok5lZWRzTGF5b3V0KHZvaWQpIGNvbnN0DQorICAgID9OZXdMQENXZWJDb3JlQnJpZGdlQEBT
QVBBVjFAQUFWTVdlYkNsaWVudEJyaWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBDV2ViQ29y
ZUJyaWRnZSAqIENXZWJDb3JlQnJpZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlkZ2UgJikN
CisgICAgP05ld0xAQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0R2NA
QFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUgOyBj
bGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpO
ZXdMKGNsYXNzIENGYnNCaXRHYyAmLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3Jl
U2Nyb2xsVmlldyAqKQ0KKyAgICA/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYx
QFBBVkNGYnNCaXRtYXBEZXZpY2VAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmll
d0BAQFogQCA2NCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJD
b3JlR3JhcGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3Mg
Q0Zic0JpdG1hcCAqLCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgKikNCisgICAgP05ld0xAQ1dl
YkNvcmVTZXR0aW5nc0BAU0FQQVYxQFhaIEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0
aW5ncyAqIENXZWJDb3JlU2V0dGluZ3M6Ok5ld0wodm9pZCkNCisgICAgP05vdGlmeURlY29kaW5n
RXJyb3JAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZv
aWQpDQorICAgID9Ob3RpZnlGaW5pc2hlZEBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBR
QUVYWFogQCA2NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5v
dGlmeUZpbmlzaGVkKHZvaWQpDQorICAgID9Ob3RpZnlVcGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxi
YWNrV3JhcHBlckBAUUFFWFhaIEAgNjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJh
Y2tXcmFwcGVyOjpOb3RpZnlVcGRhdGUodm9pZCkNCisgICAgP051bVBlbmRpbmdPckxvYWRpbmdS
ZXF1ZXN0c0BDV2ViQ29yZUJyaWRnZUBAUUFFSFhaIEAgNjkgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpOdW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHModm9pZCkNCisgICAgP09wZW5VUkxA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIMDBBQlZURGF0ZVRpbWVAQEBaIEAgNzAg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6T3BlblVSTChjbGFzcyBURGVzQzE2IGNvbnN0
ICYsIGludCwgY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNs
YXNzIFREYXRlVGltZSBjb25zdCAmKQ0KKyAgICA/UGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdp
bkhhbmRsZXJAQFNBUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBYWiBAIDcxIE5PTkFNRSA7IGNs
YXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAqIFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2lu
SGFuZGxlcih2b2lkKQ0KKyAgICA/UGx1Z2luc0VuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJF
SFhaIEAgNzIgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZv
aWQpIGNvbnN0DQorICAgID9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhVVFBvaW50
ZXJFdmVudEBAQFogQCA3MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZl
bnQoc3RydWN0IFRQb2ludGVyRXZlbnQpDQorICAgID9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhXNFRUeXBlQFRQb2ludGVyRXZlbnRAQEFCVlRQb2ludEBAQFogQCA3NCBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoZW51bSBUUG9pbnRlckV2ZW50OjpU
VHlwZSwgY2xhc3MgVFBvaW50IGNvbnN0ICYpDQorICAgID9QcmVwYXJlRm9yRXhpdEBDV2ViQ29y
ZUJyaWRnZUBAU0FYWFogQCA3NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcmVwYXJl
Rm9yRXhpdCh2b2lkKQ0KKyAgICA/UHJvdmlzaW9uYWxMb2FkU3RhcnRlZEBDV2ViQ29yZUJyaWRn
ZUBAUUFFWFhaIEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCh2b2lkKQ0KKyAgICA/UmF3RGF0YUBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFF
QUFWVFB0ckM4QEBYWiBAIDc3IE5PTkFNRSA7IGNsYXNzIFRQdHJDOCAmIFRXZWJDb3JlSW1hZ2VD
YXJyaWVyOjpSYXdEYXRhKHZvaWQpDQorICAgID9SZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUBD
V2ViQ29yZUJyaWRnZUBAUUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDc4IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlKGVudW0gVFdl
YkNvcmVEZXZpY2VUeXBlKQ0KKyAgICA/UmVmZXJyZXJAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQ
dHJDMTZAQFhaIEAgNzkgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6UmVm
ZXJyZXIodm9pZCkgY29uc3QNCisgICAgP1JlbW92ZUZpbGVOYW1lQENXZWJDb3JlQnJpZGdlQEBR
QUVYQUFWVFBvaW50QEBAWiBAIDgwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92
ZUZpbGVOYW1lKGNsYXNzIFRQb2ludCAmKQ0KKyAgICA/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3Jl
QnJpZGdlQEBRQUVYWFogQCA4MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZW1vdmVG
cm9tRnJhbWUodm9pZCkNCisgICAgP1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVjBr
aHRtbEBAWFogQCA4MiBOT05BTUUgOyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJDb3Jl
QnJpZGdlOjpSZW5kZXJQYXJ0KHZvaWQpIGNvbnN0DQorICAgID9SZW5kZXJlckBUV2ViQ29yZUlt
YWdlQ2FycmllckBAUUFFUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7
IGNsYXNzIE1XZWJDb3JlSW1hZ2VSZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5k
ZXJlcih2b2lkKQ0KKyAgICA/UmVzb2x2ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMx
NkBAQUJWVERlc0MxNkBAMEBaIEAgODQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3Jl
QnJpZGdlOjpSZXNvbHZlVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYg
Y29uc3QgJikNCisgICAgP1Jlc3RvcmVEb2N1bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVY
WFogQCA4NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0
ZSh2b2lkKQ0KKyAgICA/U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/
QVZUUHRyQzE2QEBYWiBAIDg2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5n
czo6U2Fuc1NlcmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/U2F2ZURvY3VtZW50U3Rh
dGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDg3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OlNhdmVEb2N1bWVudFN0YXRlKHZvaWQpDQorICAgID9TYXZlUmF3RGF0YUVuYWJsZWRAQ1dl
YkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgODggTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6
OlNhdmVSYXdEYXRhRW5hYmxlZCh2b2lkKSBjb25zdA0KKyAgICA/U2NhbGluZ0ZhY3RvckNoYW5n
ZWRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCA4OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpTY2FsaW5nRmFjdG9yQ2hhbmdlZChpbnQpDQorICAgID9TY3JvbGxUb0FuY2hvckBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgOTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6U2Nyb2xsVG9BbmNob3IoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2Ny
b2xsVG9BbmNob3JXaXRoVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5
MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hvcldpdGhVUkwoY2xh
c3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2VhcmNoQWdhaW5AQ1dlYkNvcmVCcmlkZ2VAQFFB
RUhBQlZURGVzQzE2QEBISEhAWiBAIDkyIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2Vh
cmNoQWdhaW4oY2xhc3MgVERlc0MxNiBjb25zdCAmLCBpbnQsIGludCwgaW50KQ0KKyAgICA/U2Vh
cmNoRm9yQENXZWJDb3JlQnJpZGdlQEBRQUVIQUJWVERlc0MxNkBASEhIQFogQCA5MyBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlNlYXJjaEZvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGlu
dCwgaW50LCBpbnQpDQorICAgID9TZWxlY3Rpb25Db2xvckBDV2ViQ29yZUJyaWRnZUBAUUFFP0FW
VFJnYkBAWFogQCA5NCBOT05BTUUgOyBjbGFzcyBUUmdiIENXZWJDb3JlQnJpZGdlOjpTZWxlY3Rp
b25Db2xvcih2b2lkKQ0KKyAgICA/U2VuZFJlc2l6ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVY
WFogQCA5NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kUmVzaXplRXZlbnQodm9p
ZCkNCisgICAgP1NlbmRTY3JvbGxFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgOTYgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2VuZFNjcm9sbEV2ZW50KHZvaWQpDQorICAgID9T
ZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCA5NyBO
T05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9udEZhbWlseSh2
b2lkKSBjb25zdA0KKyAgICA/U2V0QXV0b1JlZnJlc2hFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NA
QFFBRVhIQFogQCA5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEF1dG9SZWZy
ZXNoRW5hYmxlZChpbnQpDQorICAgID9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdlQ2FsbGJhY2tX
cmFwcGVyQEBRQUVYUEFWQ2FjaGVkSW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5OSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNrKGNsYXNzIGto
dG1sOjpDYWNoZWRJbWFnZUNhbGxiYWNrICopDQorICAgID9TZXRDb29raWVBZGFwdGVyQFRXZWJD
b3JlQ29va2llRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDEwMCBO
T05BTUUgOyB2b2lkIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRlcihjbGFz
cyBNV2ViQ29yZUNvb2tpZUFkYXB0ZXIgKikNCisgICAgP1NldEN1cnNpdmVGb250RmFtaWx5QENX
ZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlU2V0dGluZ3M6OlNldEN1cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3Qg
JikNCisgICAgP1NldERlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhI
QFogQCAxMDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRG
b250U2l6ZShpbnQpDQorICAgID9TZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEhAWiBAIDEwMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRG
b250U2l6ZShpbnQpDQorICAgID9TZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGlu
Z3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGlu
Z3M6OlNldERlZmF1bHRUZXh0RW5jb2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/
U2V0RGVmZXJzVGltZXJzQENXZWJDb3JlQnJpZGdlQEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6U2V0RGVmZXJzVGltZXJzKGludCkNCisgICAgP1NldERyYXdzQmFj
a2dyb3VuZEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEwNiBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpTZXREcmF3c0JhY2tncm91bmQoaW50KQ0KKyAgICA/U2V0RmFudGFzeUZvbnRG
YW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA3IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RmFudGFzeUZvbnRGYW1pbHkoY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KKyAgICA/U2V0RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhIQFogQCAxMDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0RmFzdEZpcnN0
RGlzcGxheU1vZGUoaW50KQ0KKyAgICA/U2V0Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGlu
Z3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGlu
Z3M6OlNldEZpeGVkRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRG
b250U2l6ZUxldmVsQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OlNldEZvbnRTaXplTGV2ZWwoaW50KQ0KKyAgICA/U2V0Rm9ybUNvbnRy
b2xUZXh0QnlOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAMEBaIEAgMTExIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvcm1Db250cm9sVGV4dEJ5TmFtZShjbGFz
cyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldEhpc3Rv
cnlQcm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBWFBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVy
QEBAWiBAIDExMiBOT05BTUUgOyB2b2lkIFRXZWJDb3JlSGlzdG9yeTo6U2V0SGlzdG9yeVByb3Zp
ZGVyKGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICopDQorICAgID9TZXRKYXZhRW5hYmxl
ZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVT
ZXR0aW5nczo6U2V0SmF2YUVuYWJsZWQoaW50KQ0KKyAgICA/U2V0SmF2YVNjcmlwdENhbk9wZW5X
aW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE0IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseShpbnQpDQorICAgID9TZXRKYXZhU2NyaXB0RW5hYmxlZEBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYSEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2
YVNjcmlwdEVuYWJsZWQoaW50KQ0KKyAgICA/U2V0TWF4QmlkaVdpZHRoQENXZWJDb3JlQnJpZGdl
QEBRQUVYSEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE1heEJpZGlX
aWR0aChpbnQpDQorICAgID9TZXRNaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFF
WEhAWiBAIDExNyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Gb250
U2l6ZShpbnQpDQorICAgID9TZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGlu
Z3NAQFFBRVhIQFogQCAxMTggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRNaW5p
bXVtTG9naWNhbEZvbnRTaXplKGludCkNCisgICAgP1NldE5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhBQlZURGVzQzE2QEBAWiBAIDExOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRO
YW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldE5lZWRzTGF5b3V0QENXZWJDb3Jl
QnJpZGdlQEBRQUVYWFogQCAxMjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TmVl
ZHNMYXlvdXQodm9pZCkNCisgICAgP1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFA
QFogQCAxMjEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENX
ZWJDb3JlQnJpZGdlICopDQorICAgID9TZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYSEBaIEAgMTIyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2lu
c0VuYWJsZWQoaW50KQ0KKyAgICA/U2V0UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBB
VlJlbmRlclBhcnRAa2h0bWxAQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlNldFJlbmRlclBhcnQoY2xhc3Mga2h0bWw6OlJlbmRlclBhcnQgKikNCisgICAgP1NldFNhbnNT
ZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShj
bGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRTYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEyNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6
OlNldFNhdmVSYXdEYXRhRW5hYmxlZChpbnQpDQorICAgID9TZXRTZXJpZkZvbnRGYW1pbHlAQ1dl
YkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVTZXR0aW5nczo6U2V0U2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikN
CisgICAgP1NldFNob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBA
IDEyNyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJl
cnMoaW50KQ0KKyAgICA/U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdz
QEBRQUVYSEBaIEAgMTI4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxk
UHJpbnRCYWNrZ3JvdW5kcyhpbnQpDQorICAgID9TZXRTdGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI5IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0U3RhbmRhcmRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikN
CisgICAgP1NldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFC
VlREZXNDMTZAQEBaIEAgMTMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRXZWJD
b3JlRm9ybUNvbnRyb2xGYWN0b3J5QFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBTQVhQQVZN
V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAQFogQCAxMzEgTk9OQU1FIDsgdm9pZCBUV2ViQ29y
ZUZvcm1Db250cm9sRmFjdG9yeTo6U2V0V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeShjbGFzcyBN
V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqKQ0KKyAgICA/U2V0V2ViQ29yZUltYWdlUmVuZGVy
ZXJGYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlSW1h
Z2VSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTMyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVJbWFnZVJl
bmRlcmVyRmFjdG9yeTo6U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJD
b3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgKikNCisgICAgP1NldFdlYkNvcmVMb2FkZXJDb250YWlu
ZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBWFBBVk1XZWJDb3JlTG9hZGVyQ29udGFpbmVy
QEBAWiBAIDEzMyBOT05BTUUgOyB2b2lkIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpTZXRXZWJD
b3JlTG9hZGVyQ29udGFpbmVyKGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29udGFpbmVyICopDQorICAg
ID9TZXRXZWJDb3JlUGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBWFBBVk1X
ZWJDb3JlUGx1Z2luSGFuZGxlckBAQFogQCAxMzQgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVBsdWdp
bkhhbmRsZXI6OlNldFdlYkNvcmVQbHVnaW5IYW5kbGVyKGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFu
ZGxlciAqKQ0KKyAgICA/U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVUZXh0
UmVuZGVyZXJGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQEBaIEAg
MTM1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3Jl
VGV4dFJlbmRlcmVyRmFjdG9yeShjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKikN
CisgICAgP1NldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBR
QUVYSEBaIEAgMTM2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0V2lsbExvYWRJ
bWFnZXNBdXRvbWF0aWNhbGx5KGludCkNCisgICAgP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2Vi
Q29yZUJyaWRnZUBAUUFFSFhaIEAgMTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2hv
dWxkQ3JlYXRlUmVuZGVyZXJzKHZvaWQpDQorICAgID9TaG91bGRQcmludEJhY2tncm91bmRzQENX
ZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5n
czo6U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyh2b2lkKSBjb25zdA0KKyAgICA/U2hvd2luZ0Zhc3RQ
cmV2aWV3QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpTaG93aW5nRmFzdFByZXZpZXcodm9pZCkgY29uc3QNCisgICAgP1N0YW5kYXJkRm9u
dEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUg
OyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lk
KSBjb25zdA0KKyAgICA/VGFiYmVkTmF2aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdl
Yk5hdkRpcmVjdGlvbkBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEg
Tk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5h
dkRpcmVjdGlvbiwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQorICAg
ID9UZXh0RW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNp
Z25lZCBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlRleHRFbmNvZGluZyh2b2lkKSBjb25zdA0KKyAgICA/
VVJMQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFz
cyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpVUkwodm9pZCkgY29uc3QNCisgICAgP1VSTFdpdGhS
ZWxhdGl2ZVN0cmluZ0BDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBA
QFogQCAxNDQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpVUkxXaXRo
UmVsYXRpdmVTdHJpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/VXBkYXRlQWxsVmll
d3NAQ1dlYkNvcmVCcmlkZ2VAQFNBWFhaIEAgMTQ1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OlVwZGF0ZUFsbFZpZXdzKHZvaWQpDQorICAgID9VcmxAVFdlYkNvcmVJbWFnZUNhcnJpZXJA
QFFBRUFBVlRQdHJDMTZAQFhaIEAgMTQ2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29y
ZUltYWdlQ2Fycmllcjo6VXJsKHZvaWQpDQorICAgID9Vc2VyU3R5bGVTaGVldExvY2F0aW9uQENX
ZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQ3IE5PTkFNRSA7IGNsYXNzIFRQ
dHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6VXNlclN0eWxlU2hlZXRMb2NhdGlvbih2b2lkKSBjb25z
dA0KKyAgICA/V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFC
RUhYWiBAIDE0OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6V2lsbExvYWRJbWFnZXNB
dXRvbWF0aWNhbGx5KHZvaWQpIGNvbnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pT
QEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDE0OSBOT05BTUUgOyBi
b29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBj
bGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9i
amVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTUwIE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/bWFya2VkQFZh
bHVlSW1wQEtKU0BAUUJFX05YWiBAIDE1MSBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6Om1h
cmtlZCh2b2lkKSBjb25zdA0KKyAgICA/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNz
SW5mb0AyQFhaIEAgMTUyIE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtK
Uzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9i
amVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTUzIE5PTkFNRSA7IGJvb2wgS0pT
OjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVk
IGludCkgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0
YXRlQDJASUBaIEAgMTU0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP3Byb3BMaXN0
QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAg
MTU1IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExp
c3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP0dldE5leHRSZW5kZXJUZXh0
Rm9yU21hcnRMaW5rc0xAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFBSEBaIEAgMTU2
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRSZW5kZXJUZXh0
Rm9yU21hcnRMaW5rc0woaW50ICYpDQorICAgID9HZXRSZW5kZXJUZXh0QXJlYUBDV2ViQ29yZUJy
aWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1NyBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBURGVzQzE2
IGNvbnN0ICYsIGNsYXNzIFJBcnJheTxjbGFzcyBUUmVjdD4gJikNCisgICAgICAgID9XaW5kb3dT
Y3JpcHROUE9iamVjdEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWTlBPYmplY3RAQFhaIEAgMTU4IE5P
TkFNRSA7IGNsYXNzIE5QT2JqZWN0ICogQ1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2Jq
ZWN0KHZvaWQpDQogDQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODgpDQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsODAgQEANCisyMDA2LTEwLTI1ICB5YWRhdmFsbCAg
PHNyaXJhbS55YWRhdmFsbGlAbm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFs
YW4gQnVqdGFzICh6YnVqdGFzQGdtYWlsLmNvbSkuDQorCURFU0M6IFNjcmlwdGFibGUgcGx1Z2lu
IGFuZCB3aWRnZXQgb2JqZWN0IHN1cHBvcnQNCisJaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE0MDcNCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQg
T1IgQ0hBTkdFRA0KKw0KKyAgICAgICAgKiBCV0lOUy9XRUJDT1JFVS5ERUY6DQorICAgICAgICAq
IEVBQkkvV2ViQ29yZVUuREVGOg0KKyAgICAgICAgKiBicmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHA6
DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6On5DV2ViQ29yZUJyaWRnZSk6DQorICAgICAgICAo
Q1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nKToNCisgICAgICAgIChD
V2ViQ29yZUJyaWRnZTo6V2luZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAgICAgKENXZWJDb3Jl
QnJpZGdlOjpHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKToNCisgICAgICAgIChDV2Vi
Q29yZUJyaWRnZTo6R2V0UmVuZGVyVGV4dEFyZWEpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdl
OjpHZXRQYWdlRGF0YUwpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0
aW9uKToNCisgICAgICAgICogYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaDoNCisgICAgICAgICogYnJp
ZGdlL1dlYkNvcmVXaWRnZXQuaDoNCisgICAgICAgIChNV2ViQ29yZVdpZGdldDo6UGx1Z2luU2Ny
aXB0YWJsZU9iamVjdCk6DQorICAgICAgICAqIGdyb3VwL0tIVE1MLm1tcDoNCisgICAgICAgICog
Z3JvdXAvS1dRLm1tcDoNCisgICAgICAgICogZ3JvdXAvV2ViQ29yZS5tbXA6DQorICAgICAgICAq
IGtodG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwOg0KKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJw
cmV0ZXI6OmlzR2xvYmFsT2JqZWN0KToNCisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVy
OjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOg0KKyAgICAgICAgKiBraHRtbC9lY21h
L2tqc19iaW5kaW5nLmg6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2RvbS5jcHA6DQorICAg
ICAgICAoRE9NTm9kZTo6bWFyayk6DQorICAgICAgICAoRE9NTm9kZTo6Z2V0VmFsdWVQcm9wZXJ0
eSk6DQorICAgICAgICAoRE9NTm9kZTo6Z2V0TGlzdGVuZXIpOg0KKyAgICAgICAgKERPTU5vZGVQ
cm90b0Z1bmM6OnRyeUNhbGwpOg0KKyAgICAgICAgKERPTU5vZGVMaXN0OjpjYWxsKToNCisgICAg
ICAgIChET01Eb2N1bWVudDo6RE9NRG9jdW1lbnQpOg0KKyAgICAgICAgKERPTURvY3VtZW50UHJv
dG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01FbGVtZW50OjpET01FbGVtZW50KToNCisg
ICAgICAgIChET01FbGVtZW50UHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01ET01J
bXBsZW1lbnRhdGlvbjo6RE9NRE9NSW1wbGVtZW50YXRpb24pOg0KKyAgICAgICAgKERPTU5hbWVk
Tm9kZU1hcDo6RE9NTmFtZWROb2RlTWFwKToNCisgICAgICAgIChLSlM6OmdldERPTURvY3VtZW50
Tm9kZSk6DQorICAgICAgICAoS0pTOjpjaGVja05vZGVTZWN1cml0eSk6DQorICAgICAgICAoS0pT
OjpnZXRSdW50aW1lT2JqZWN0KToNCisgICAgICAgIChET01OYW1lZE5vZGVzQ29sbGVjdGlvbjo6
dHJ5R2V0KToNCisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpET01DaGFyYWN0ZXJEYXRhKToN
CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAg
IChET01UZXh0OjpET01UZXh0KToNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93LmNw
cDoNCisgICAgICAgIChXaW5kb3c6OldpbmRvdyk6DQorICAgICAgICAoV2luZG93OjptYXJrKToN
CisgICAgICAgIChXaW5kb3c6OmdldCk6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX3dpbmRv
dy5oOg0KKyAgICAgICAgKEtKUzo6V2luZG93OjopOg0KKyAgICAgICAgKEtKUzo6U2VsZWN0aW9u
OjopOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193aW5kb3cubHV0Lmg6DQorICAgICAgICAo
S0pTOjopOg0KKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHA6DQorICAg
ICAgICAoSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpnZXRBcHBsZXRJbnN0YW5jZSk6DQorICAgICAg
ICAoSFRNTEVtYmVkRWxlbWVudEltcGw6OkhUTUxFbWJlZEVsZW1lbnRJbXBsKToNCisgICAgICAg
IChIVE1MRW1iZWRFbGVtZW50SW1wbDo6Z2V0RW1iZWRJbnN0YW5jZSk6DQorICAgICAgICAqIGto
dG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmg6DQorICAgICAgICAqIGt3cS9LV1FLSFRNTFBhcnQu
Y3BwOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6S1dRS0hUTUxQYXJ0KToNCisgICAgICAgIChL
V1FLSFRNTFBhcnQ6OnN1Ym1pdEZvcm0pOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6YmluZGlu
Z1Jvb3RPYmplY3QpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0UmVuZGVyVGV4dFJlY3RB
cnJheSk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjphZGRQbHVnaW5Sb290T2JqZWN0KToNCisg
ICAgICAgIChLV1FLSFRNTFBhcnQ6OmNsZWFudXBQbHVnaW5Sb290T2JqZWN0cyk6DQorICAgICAg
ICAoS1dRS0hUTUxQYXJ0OjpnZXROZXdUYWJiZWRDdXJzb3JQb3NpdGlvbik6DQorICAgICAgICAo
S1dRS0hUTUxQYXJ0Ojp0YWJiZWROYXZpZ2F0aW9uKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6
OnByZXBhcmVGb3JVc2VyQWN0aW9uKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OmNyZWF0ZVdp
ZGdldE9iamVjdCk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRFbWJlZEluc3RhbmNlRm9y
Vmlldyk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRPYmplY3RJbnN0YW5jZUZvclZpZXcp
Og0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAg
ICAgKiBrd3EvS1dRS0hUTUxQYXJ0Lmg6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRBcHBs
ZXRJbnN0YW5jZUZvclZpZXcpOg0KKw0KIDIwMDYtMTAtMjMgIG5hZ3VvICA8Z2VvcmdlLmd1b0Bu
b2tpYS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBaYWxhbi4NCkluZGV4OiBXZWJDb3Jl
L0VBQkkvV2ViQ29yZVUuREVGDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9FQUJJL1dlYkNvcmVV
LkRFRgkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9FQUJJL1dlYkNvcmVVLkRFRgkod29y
a2luZyBjb3B5KQ0KQEAgLTEsMTYyICsxLDE2MyBAQA0KIEVYUE9SVFMNCi0JX1pOMTNUV2ViQ29y
ZUNhY2hlMTVBZGRJdGVtVG9DYWNoZUxFUjI5TVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlckluZm9S
NlREZXNDOGkgQCAxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTBJbWFnZUNvdW50RWkg
QCAyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTBMb2FkSW1hZ2VzRXYgQCAzIE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTFSZXNvbHZlVXJsTEVSSzdURGVzQzE2UzJfIEAgNCBO
T05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTExU2VhcmNoQWdhaW5FUks3VERlc0MxNmlpaSBA
IDUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkRlZmVyc1RpbWVyc0V2IEAgNiBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEyR2V0UGFnZURhdGFMRWkgQCA3IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMTJJbWFnZXNJblJlY3RFaSBAIDggTk9OQU1FDQotCV9aTjE0Q1dl
YkNvcmVCcmlkZ2UxMlBvaW50ZXJFdmVudEUxM1RQb2ludGVyRXZlbnQgQCA5IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMTJQb2ludGVyRXZlbnRFTjEzVFBvaW50ZXJFdmVudDVUVHlwZUVS
SzZUUG9pbnQgQCAxMCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEzQWN0aXZhdGVFdmVu
dEVSNlRQb2ludCBAIDExIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNBZGRUb0NvbnRh
Y3RzRVI2VFBvaW50IEAgMTIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0RpZE5vdE9w
ZW5VUkxFUks3VERlc0MxNiBAIDEzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNFeGVj
dXRlU2NyaXB0RVJLN1REZXNDMTYgQCAxNCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEz
U2V0UmVuZGVyUGFydEVQTjVraHRtbDEwUmVuZGVyUGFydEUgQCAxNSBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTE0QWRqdXN0Vmlld1NpemVFdiBAIDE2IE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlMTREdW1wUmVuZGVyVHJlZUV2IEAgMTcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UxNEluc3RhbGxJbkZyYW1lRVIxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDE4IE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlMTRQcmVwYXJlRm9yRXhpdEV2IEAgMTkgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2UxNFJlbW92ZUZpbGVOYW1lRVI2VFBvaW50IEAgMjAgTk9OQU1FDQot
CV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNjcm9sbFRvQW5jaG9yRVJLN1REZXNDMTYgQCAyMSBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2VsZWN0aW9uQ29sb3JFdiBAIDIyIE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlMTRTZXROZWVkc0xheW91dEV2IEAgMjMgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2UxNFVwZGF0ZUFsbFZpZXdzRXYgQCAyNCBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTE1Q3JlYXRlS0hUTUxWaWV3RVIxOE1XZWJDb3JlU2Nyb2xsVmlld2lpIEAg
MjUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNURlQWN0aXZhdGVFdmVudEVpIEAgMjYg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUZpbmRMaW5rc09mVHlwZUVSSzdURGVzQzE2
UjZSQXJyYXlJMTZUV2ViQ29yZUxpbmtJdGVtRSBAIDI3IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3Jl
QnJpZGdlMTVHZXRUZXh0Q29udGVudExFdiBAIDI4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlMTVKdW1wVG9TZWxlY3Rpb25FdiBAIDI5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdl
MTVSZW1vdmVGcm9tRnJhbWVFdiBAIDMwIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVT
ZW5kUmVzaXplRXZlbnRFdiBAIDMxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5k
U2Nyb2xsRXZlbnRFdiBAIDMyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXREZWZl
cnNUaW1lcnNFaSBAIDMzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXRNYXhCaWRp
V2lkdGhFaSBAIDM0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTZTZXRGb250U2l6ZUxl
dmVsRWkgQCAzNSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE2VGFiYmVkTmF2aWdhdGlv
bkUxNlRXZWJOYXZEaXJlY3Rpb25SMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZWkgQCAzNiBO
T05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE3U2F2ZURvY3VtZW50U3RhdGVFdiBAIDM3IE5P
TkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMThBY3RpdmF0ZUFjY2Vzc0tleXNFOVRLZXlFdmVu
dCBAIDM4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMThJbml0aWFsaXplU2V0dGluZ3NF
UksxNkNXZWJDb3JlU2V0dGluZ3MgQCAzOSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4
U2V0RHJhd3NCYWNrZ3JvdW5kRWkgQCA0MCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE5
Qm9keUJhY2tncm91bmRDb2xvckV2IEAgNDEgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Uy
MFJlc3RvcmVEb2N1bWVudFN0YXRlRXYgQCA0MiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTIwU2NhbGluZ0ZhY3RvckNoYW5nZWRFaSBAIDQzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlMjFTY3JvbGxUb0FuY2hvcldpdGhVUkxFUks3VERlc0MxNiBAIDQ0IE5PTkFNRQ0KLQlfWk4x
NENXZWJDb3JlQnJpZGdlMjFTaG91bGRDcmVhdGVSZW5kZXJlcnNFdiBAIDQ1IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMjFVUkxXaXRoUmVsYXRpdmVTdHJpbmdFUks3VERlc0MxNiBAIDQ2
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjJQcm92aXNpb25hbExvYWRTdGFydGVkRXYg
QCA0NyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIzRGV0ZXJtaW5lQ3Vyc29yUG9zaXRp
b25FUjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVSNVRSZWN0UzNfUjZUUG9pbnRpIEAgNDgg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyM1NldEZhc3RGaXJzdERpc3BsYXlNb2RlRWkg
QCA0OSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0Rm9ybUNvbnRyb2xUZXh0QnlO
YW1lRVJLN1REZXNDMTZTMl8gQCA1MCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0
U2hvdWxkQ3JlYXRlUmVuZGVyZXJzRWkgQCA1MSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTI2Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdFUks3VERlc0MxNmkgQCA1MiBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTI2UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGVFMThUV2ViQ29y
ZURldmljZVR5cGUgQCA1MyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI3TnVtUGVuZGlu
Z09yTG9hZGluZ1JlcXVlc3RzRXYgQCA1NCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI4
Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUVpIEAgNTUgTk9OQU1FDQotCV9aTjE0Q1dlYkNv
cmVCcmlkZ2UzRW5kRXYgQCA1NiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTROZXdMRVIx
Nk1XZWJDbGllbnRCcmlkZ2UgQCA1NyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTZDbGll
bnRFdiBAIDU4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlN0FkZERhdGFFUks2VERlc0M4
IEAgNTkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U3T3BlblVSTEVSSzdURGVzQzE2aVMy
X1MyX1JLOVREYXRlVGltZSBAIDYwIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlN1NldE5h
bWVFUks3VERlc0MxNiBAIDYxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlOENsb3NlVVJM
RXYgQCA2MiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZThEcmF3UmVjdEVSSzVUUmVjdFIy
M0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgNjMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2U4S2V5RXZlbnRFOVRLZXlFdmVudGkgQCA2NCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTlDbGVhckZpbmRFdiBAIDY1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlOVNlYXJjaEZv
ckVSSzdURGVzQzE2aWlpIEAgNjYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U5U2V0UGFy
ZW50RVBTXyBAIDY3IE5PTkFNRQ0KLQlfWk4xNVRXZWJDb3JlSGlzdG9yeTE1SGlzdG9yeVByb3Zp
ZGVyRXYgQCA2OCBOT05BTUUNCi0JX1pOMTVUV2ViQ29yZUhpc3RvcnkxOFNldEhpc3RvcnlQcm92
aWRlckVQMjNNV2ViQ29yZUhpc3RvcnlQcm92aWRlciBAIDY5IE5PTkFNRQ0KLQlfWk4xNkNXZWJD
b3JlU2V0dGluZ3MxNFNldEphdmFFbmFibGVkRWkgQCA3MCBOT05BTUUNCi0JX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMTdTZXRQbHVnaW5zRW5hYmxlZEVpIEAgNzEgTk9OQU1FDQotCV9aTjE2Q1dlYkNv
cmVTZXR0aW5nczE4U2V0RGVmYXVsdEZvbnRTaXplRWkgQCA3MiBOT05BTUUNCi0JX1pOMTZDV2Vi
Q29yZVNldHRpbmdzMThTZXRGaXhlZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDczIE5PTkFNRQ0K
LQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldE1pbmltdW1Gb250U2l6ZUVpIEAgNzQgTk9OQU1F
DQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0U2VyaWZGb250RmFtaWx5RVJLN1REZXNDMTYg
QCA3NSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRDdXJzaXZlRm9udEZhbWls
eUVSSzdURGVzQzE2IEAgNzYgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0RmFu
dGFzeUZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc3IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0
dGluZ3MyMFNldEphdmFTY3JpcHRFbmFibGVkRWkgQCA3OCBOT05BTUUNCi0JX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMjFTZXRBdXRvUmVmcmVzaEVuYWJsZWRFaSBAIDc5IE5PTkFNRQ0KLQlfWk4xNkNX
ZWJDb3JlU2V0dGluZ3MyMVNldFNhdmVSYXdEYXRhRW5hYmxlZEVpIEAgODAgTk9OQU1FDQotCV9a
TjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0U3RhbmRhcmRGb250RmFtaWx5RVJLN1REZXNDMTYgQCA4
MSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjJTZXREZWZhdWx0VGV4dEVuY29kaW5n
RVJLN1REZXNDMTYgQCA4MiBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjJTZXRTYW5z
U2VyaWZGb250RmFtaWx5RVJLN1REZXNDMTYgQCA4MyBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNl
dHRpbmdzMjNTZXREZWZhdWx0Rml4ZWRGb250U2l6ZUVpIEAgODQgTk9OQU1FDQotCV9aTjE2Q1dl
YkNvcmVTZXR0aW5nczI1U2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZUVpIEAgODUgTk9OQU1FDQot
CV9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0VpIEAgODYg
Tk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bkVSSzdURGVzQzE2IEAgODcgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczMwU2V0V2ls
bExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5RWkgQCA4OCBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNl
dHRpbmdzNDBTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RWkgQCA4OSBO
T05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzNE5ld0xFdiBAIDkwIE5PTkFNRQ0KLQlfWk4x
NkNXZWJDb3JlU2V0dGluZ3NEMEV2IEAgOTEgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5n
c0QxRXYgQCA5MiBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzRDJFdiBAIDkzIE5PTkFN
RQ0KLQlfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyM1VybEV2IEAgOTQgTk9OQU1FDQotCV9aTjIw
VFdlYkNvcmVJbWFnZUNhcnJpZXI3QWx0VGV4dEV2IEAgOTUgTk9OQU1FDQotCV9aTjIwVFdlYkNv
cmVJbWFnZUNhcnJpZXI3UmF3RGF0YUV2IEAgOTYgTk9OQU1FDQotCV9aTjIwVFdlYkNvcmVJbWFn
ZUNhcnJpZXI4UmVuZGVyZXJFdiBAIDk3IE5PTkFNRQ0KLQlfWk4yMFRXZWJDb3JlSW1hZ2VDYXJy
aWVyOUltYWdlVHlwZUV2IEAgOTggTk9OQU1FDQotCV9aTjIxVFdlYkNvcmVDb29raWVGYWN0b3J5
MTNDb29raWVBZGFwdGVyRXYgQCA5OSBOT05BTUUNCi0JX1pOMjFUV2ViQ29yZUNvb2tpZUZhY3Rv
cnkxNlNldENvb2tpZUFkYXB0ZXJFUDIxTVdlYkNvcmVDb29raWVBZGFwdGVyIEAgMTAwIE5PTkFN
RQ0KLQlfWk4yMVRXZWJDb3JlUGx1Z2luSGFuZGxlcjEzUGx1Z2luSGFuZGxlckV2IEAgMTAxIE5P
TkFNRQ0KLQlfWk4yMVRXZWJDb3JlUGx1Z2luSGFuZGxlcjIzU2V0V2ViQ29yZVBsdWdpbkhhbmRs
ZXJFUDIxTVdlYkNvcmVQbHVnaW5IYW5kbGVyIEAgMTAyIE5PTkFNRQ0KLQlfWk4yM0NXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0NE5ld0xFUDE2Q0Zic0JpdG1hcERldmljZVAxMENGYnNCaXRtYXBQMThN
V2ViQ29yZVNjcm9sbFZpZXcgQCAxMDMgTk9OQU1FDQotCV9aTjIzQ1dlYkNvcmVHcmFwaGljc0Nv
bnRleHQ0TmV3TEVSOUNGYnNCaXRHY1AxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcg
QCAxMDQgTk9OQU1FDQotCV9aTjIzVFdlYkNvcmVMb2FkZXJDb250YWluZXIxNUxvYWRlckNvbnRh
aW5lckV2IEAgMTA1IE5PTkFNRQ0KLQlfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVyMjVTZXRX
ZWJDb3JlTG9hZGVyQ29udGFpbmVyRVAyM01XZWJDb3JlTG9hZGVyQ29udGFpbmVyIEAgMTA2IE5P
TkFNRQ0KLQlfWk4yNlRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5MjhTZXRXZWJDb3JlRm9ybUNv
bnRyb2xGYWN0b3J5RVAyNk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5IEAgMTA3IE5PTkFNRQ0K
LQlfWk4yNlRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5N0ZhY3RvcnlFdiBAIDEwOCBOT05BTUUN
Ci0JX1pOMjdUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkyOVNldFdlYkNvcmVUZXh0UmVuZGVy
ZXJGYWN0b3J5RVAyN01XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSBAIDEwOSBOT05BTUUNCi0J
X1pOMjdUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTEwIE5PTkFNRQ0K
LQlfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxMVNldENhbGxiYWNrRVBONWtodG1s
MTlDYWNoZWRJbWFnZUNhbGxiYWNrRSBAIDExMSBOT05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdl
Q2FsbGJhY2tXcmFwcGVyMTJOb3RpZnlVcGRhdGVFdiBAIDExMiBOT05BTUUNCi0JX1pOMjhDV2Vi
Q29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTROb3RpZnlGaW5pc2hlZEV2IEAgMTEzIE5PTkFNRQ0K
LQlfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxOU5vdGlmeURlY29kaW5nRXJyb3JF
diBAIDExNCBOT05BTUUNCi0JX1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5MzBTZXRX
ZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlFUDI4TVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9y
eSBAIDExNSBOT05BTUUNCi0JX1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5N0ZhY3Rv
cnlFdiBAIDExNiBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMElzRnJhbWVTZXRFdiBA
IDExNyBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMFJlbmRlclBhcnRFdiBAIDExOCBO
T05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMU5lZWRzTGF5b3V0RXYgQCAxMTkgTk9OQU1F
DQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTJDYW5DYWNoZVBhZ2VFdiBAIDEyMCBOT05BTUUNCi0J
X1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMlRleHRFbmNvZGluZ0V2IEAgMTIxIE5PTkFNRQ0KLQlfWk5L
MTRDV2ViQ29yZUJyaWRnZTE2SGFzUGVuZGluZ0xheW91dEV2IEAgMTIyIE5PTkFNRQ0KLQlfWk5L
MTRDV2ViQ29yZUJyaWRnZTE4U2hvd2luZ0Zhc3RQcmV2aWV3RXYgQCAxMjMgTk9OQU1FDQotCV9a
TksxNENXZWJDb3JlQnJpZGdlMjBGYXN0Rmlyc3REaXNwbGF5TW9kZUV2IEAgMTI0IE5PTkFNRQ0K
LQlfWk5LMTRDV2ViQ29yZUJyaWRnZTIwR2V0VXJsT2ZOb2RlSW5Gb2N1c0xFUjZUUG9pbnQgQCAx
MjUgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMjROYXZpZ2FibGVOb2RlVW5kZXJDdXJz
b3JFUjZUUG9pbnRSMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZVI1VFJlY3QgQCAxMjYgTk9O
QU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlM1VSTEV2IEAgMTI3IE5PTkFNRQ0KLQlfWk5LMTRD
V2ViQ29yZUJyaWRnZTROYW1lRXYgQCAxMjggTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdl
NkRvbWFpbkV2IEAgMTI5IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZThSZWZlcnJlckV2
IEAgMTMwIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTFKYXZhRW5hYmxlZEV2IEAg
MTMxIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTRQbHVnaW5zRW5hYmxlZEV2IEAg
MTMyIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVEZWZhdWx0Rm9udFNpemVFdiBA
IDEzMyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1Rml4ZWRGb250RmFtaWx5RXYg
QCAxMzQgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNU1pbmltdW1Gb250U2l6ZUV2
IEAgMTM1IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVTZXJpZkZvbnRGYW1pbHlF
diBAIDEzNiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3Q3Vyc2l2ZUZvbnRGYW1p
bHlFdiBAIDEzNyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3RmFudGFzeUZvbnRG
YW1pbHlFdiBAIDEzOCBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3SmF2YVNjcmlw
dEVuYWJsZWRFdiBAIDEzOSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE4QXV0b1Jl
ZnJlc2hFbmFibGVkRXYgQCAxNDAgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOFNh
dmVSYXdEYXRhRW5hYmxlZEV2IEAgMTQxIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MThTdGFuZGFyZEZvbnRGYW1pbHlFdiBAIDE0MiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0
aW5nczE5RGVmYXVsdFRleHRFbmNvZGluZ0V2IEAgMTQzIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29y
ZVNldHRpbmdzMTlTYW5zU2VyaWZGb250RmFtaWx5RXYgQCAxNDQgTk9OQU1FDQotCV9aTksxNkNX
ZWJDb3JlU2V0dGluZ3MyMERlZmF1bHRGaXhlZEZvbnRTaXplRXYgQCAxNDUgTk9OQU1FDQotCV9a
TksxNkNXZWJDb3JlU2V0dGluZ3MyMk1pbmltdW1Mb2dpY2FsRm9udFNpemVFdiBAIDE0NiBOT05B
TUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIyU2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0V2IEAg
MTQ3IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJVc2VyU3R5bGVTaGVldExvY2F0
aW9uRXYgQCAxNDggTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyN1dpbGxMb2FkSW1h
Z2VzQXV0b21hdGljYWxseUV2IEAgMTQ5IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MzdKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RXYgQCAxNTAgTk9OQU1FDQot
CV9aVEkxNENXZWJDb3JlQnJpZGdlIEAgMTUxIE5PTkFNRSA7ICM8VEk+Iw0KLQlfWlRJMTZDV2Vi
Q29yZVNldHRpbmdzIEAgMTUyIE5PTkFNRSA7ICM8VEk+Iw0KLQlfWlRJMjBDV2ViQ29yZVBhZ2VE
YXRhSXRlbSBAIDE1MyBOT05BTUUgOyAjPFRJPiMNCi0JX1pUSTIzQ1dlYkNvcmVHcmFwaGljc0Nv
bnRleHQgQCAxNTQgTk9OQU1FIDsgIzxUST4jDQotCV9aVFYxNENXZWJDb3JlQnJpZGdlIEAgMTU1
IE5PTkFNRSA7ICM8VlQ+Iw0KLQlfWlRWMTZDV2ViQ29yZVNldHRpbmdzIEAgMTU2IE5PTkFNRSA7
ICM8VlQ+Iw0KLQlfWlRWMjBDV2ViQ29yZVBhZ2VEYXRhSXRlbSBAIDE1NyBOT05BTUUgOyAjPFZU
PiMNCi0JX1pUVjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCAxNTggTk9OQU1FIDsgIzxWVD4j
DQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxN0dldFJlbmRlclRleHRBcmVhRVJLN1REZXNDMTZSNlJB
cnJheUk1VFJlY3RFIEAgMTU5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMzFHZXROZXh0
UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMRVJpIEAgMTYwIE5PTkFNRQ0KKyAgICBfWk4xM1RXZWJD
b3JlQ2FjaGUxNUFkZEl0ZW1Ub0NhY2hlTEVSMjlNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5m
b1I2VERlc0M4aSBAIDEgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMEltYWdlQ291
bnRFaSBAIDIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMExvYWRJbWFnZXNFdiBA
IDMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMVJlc29sdmVVcmxMRVJLN1REZXND
MTZTMl8gQCA0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTFTZWFyY2hBZ2FpbkVS
SzdURGVzQzE2aWlpIEAgNSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEyRGVmZXJz
VGltZXJzRXYgQCA2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTJHZXRQYWdlRGF0
YUxFaSBAIDcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkltYWdlc0luUmVjdEVp
IEAgOCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEyUG9pbnRlckV2ZW50RTEzVFBv
aW50ZXJFdmVudCBAIDkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMlBvaW50ZXJF
dmVudEVOMTNUUG9pbnRlckV2ZW50NVRUeXBlRVJLNlRQb2ludCBAIDEwIE5PTkFNRQ0KKyAgICBf
Wk4xNENXZWJDb3JlQnJpZGdlMTNBY3RpdmF0ZUV2ZW50RVI2VFBvaW50IEAgMTEgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0FkZFRvQ29udGFjdHNFUjZUUG9pbnQgQCAxMiBOT05B
TUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEzRGlkTm90T3BlblVSTEVSSzdURGVzQzE2IEAg
MTMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0V4ZWN1dGVTY3JpcHRFUks3VERl
c0MxNiBAIDE0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNTZXRSZW5kZXJQYXJ0
RVBONWtodG1sMTBSZW5kZXJQYXJ0RSBAIDE1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlMTRBZGp1c3RWaWV3U2l6ZUV2IEAgMTYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxNER1bXBSZW5kZXJUcmVlRXYgQCAxNyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRn
ZTE0SW5zdGFsbEluRnJhbWVFUjE4TVdlYkNvcmVTY3JvbGxWaWV3IEAgMTggTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFByZXBhcmVGb3JFeGl0RXYgQCAxOSBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTE0UmVtb3ZlRmlsZU5hbWVFUjZUUG9pbnQgQCAyMCBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2Nyb2xsVG9BbmNob3JFUks3VERlc0MxNiBAIDIx
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRTZWxlY3Rpb25Db2xvckV2IEAgMjIg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNldE5lZWRzTGF5b3V0RXYgQCAyMyBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0VXBkYXRlQWxsVmlld3NFdiBAIDI0IE5P
TkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVDcmVhdGVLSFRNTFZpZXdFUjE4TVdlYkNv
cmVTY3JvbGxWaWV3aWkgQCAyNSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE1RGVB
Y3RpdmF0ZUV2ZW50RWkgQCAyNiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE1Rmlu
ZExpbmtzT2ZUeXBlRVJLN1REZXNDMTZSNlJBcnJheUkxNlRXZWJDb3JlTGlua0l0ZW1FIEAgMjcg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUdldFRleHRDb250ZW50TEV2IEAgMjgg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUp1bXBUb1NlbGVjdGlvbkV2IEAgMjkg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVJlbW92ZUZyb21GcmFtZUV2IEAgMzAg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNlbmRSZXNpemVFdmVudEV2IEAgMzEg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNlbmRTY3JvbGxFdmVudEV2IEAgMzIg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNldERlZmVyc1RpbWVyc0VpIEAgMzMg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNldE1heEJpZGlXaWR0aEVpIEAgMzQg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNlNldEZvbnRTaXplTGV2ZWxFaSBAIDM1
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTZUYWJiZWROYXZpZ2F0aW9uRTE2VFdl
Yk5hdkRpcmVjdGlvblIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlaSBAIDM2IE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTdTYXZlRG9jdW1lbnRTdGF0ZUV2IEAgMzcgTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxOEFjdGl2YXRlQWNjZXNzS2V5c0U5VEtleUV2ZW50
IEAgMzggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxOEluaXRpYWxpemVTZXR0aW5n
c0VSSzE2Q1dlYkNvcmVTZXR0aW5ncyBAIDM5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlMThTZXREcmF3c0JhY2tncm91bmRFaSBAIDQwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMTlCb2R5QmFja2dyb3VuZENvbG9yRXYgQCA0MSBOT05BTUUNCisgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTIwUmVzdG9yZURvY3VtZW50U3RhdGVFdiBAIDQyIE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlMjBTY2FsaW5nRmFjdG9yQ2hhbmdlZEVpIEAgNDMgTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMVNjcm9sbFRvQW5jaG9yV2l0aFVSTEVSSzdURGVzQzE2IEAg
NDQgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMVNob3VsZENyZWF0ZVJlbmRlcmVy
c0V2IEAgNDUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMVVSTFdpdGhSZWxhdGl2
ZVN0cmluZ0VSSzdURGVzQzE2IEAgNDYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2Uy
MlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWRFdiBAIDQ3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMjNEZXRlcm1pbmVDdXJzb3JQb3NpdGlvbkVSMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50
VHlwZVI1VFJlY3RTM19SNlRQb2ludGkgQCA0OCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTIzU2V0RmFzdEZpcnN0RGlzcGxheU1vZGVFaSBAIDQ5IE5PTkFNRQ0KKyAgICBfWk4xNENX
ZWJDb3JlQnJpZGdlMjRTZXRGb3JtQ29udHJvbFRleHRCeU5hbWVFUks3VERlc0MxNlMyXyBAIDUw
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjRTZXRTaG91bGRDcmVhdGVSZW5kZXJl
cnNFaSBAIDUxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjZDcmVhdGVEb2N1bWVu
dFdpdGhFbmNvZGluZ0VSSzdURGVzQzE2aSBAIDUyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMjZSZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUUxOFRXZWJDb3JlRGV2aWNlVHlwZSBA
IDUzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjdOdW1QZW5kaW5nT3JMb2FkaW5n
UmVxdWVzdHNFdiBAIDU0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjhGb3JjZUxh
eW91dEFkanVzdGluZ1ZpZXdTaXplRWkgQCA1NSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTNFbmRFdiBAIDU2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlNE5ld0xFUjE2
TVdlYkNsaWVudEJyaWRnZSBAIDU3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlNkNs
aWVudEV2IEAgNTggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U3QWRkRGF0YUVSSzZU
RGVzQzggQCA1OSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTdPcGVuVVJMRVJLN1RE
ZXNDMTZpUzJfUzJfUks5VERhdGVUaW1lIEAgNjAgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVC
cmlkZ2U3U2V0TmFtZUVSSzdURGVzQzE2IEAgNjEgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVC
cmlkZ2U4Q2xvc2VVUkxFdiBAIDYyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlOERy
YXdSZWN0RVJLNVRSZWN0UjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCA2MyBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZThLZXlFdmVudEU5VEtleUV2ZW50aSBAIDY0IE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlOUNsZWFyRmluZEV2IEAgNjUgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2U5U2VhcmNoRm9yRVJLN1REZXNDMTZpaWkgQCA2NiBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTlTZXRQYXJlbnRFUFNfIEAgNjcgTk9OQU1FDQorICAgIF9a
TjE1VFdlYkNvcmVIaXN0b3J5MTVIaXN0b3J5UHJvdmlkZXJFdiBAIDY4IE5PTkFNRQ0KKyAgICBf
Wk4xNVRXZWJDb3JlSGlzdG9yeTE4U2V0SGlzdG9yeVByb3ZpZGVyRVAyM01XZWJDb3JlSGlzdG9y
eVByb3ZpZGVyIEAgNjkgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE0U2V0SmF2
YUVuYWJsZWRFaSBAIDcwIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MxN1NldFBs
dWdpbnNFbmFibGVkRWkgQCA3MSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMThT
ZXREZWZhdWx0Rm9udFNpemVFaSBAIDcyIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGlu
Z3MxOFNldEZpeGVkRm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzMgTk9OQU1FDQorICAgIF9aTjE2
Q1dlYkNvcmVTZXR0aW5nczE4U2V0TWluaW11bUZvbnRTaXplRWkgQCA3NCBOT05BTUUNCisgICAg
X1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRTZXJpZkZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc1
IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNldEN1cnNpdmVGb250RmFtaWx5
RVJLN1REZXNDMTYgQCA3NiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRG
YW50YXN5Rm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzcgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNv
cmVTZXR0aW5nczIwU2V0SmF2YVNjcmlwdEVuYWJsZWRFaSBAIDc4IE5PTkFNRQ0KKyAgICBfWk4x
NkNXZWJDb3JlU2V0dGluZ3MyMVNldEF1dG9SZWZyZXNoRW5hYmxlZEVpIEAgNzkgTk9OQU1FDQor
ICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0U2F2ZVJhd0RhdGFFbmFibGVkRWkgQCA4MCBO
T05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRTdGFuZGFyZEZvbnRGYW1pbHlF
Uks3VERlc0MxNiBAIDgxIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMlNldERl
ZmF1bHRUZXh0RW5jb2RpbmdFUks3VERlc0MxNiBAIDgyIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJD
b3JlU2V0dGluZ3MyMlNldFNhbnNTZXJpZkZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDgzIE5PTkFN
RQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyM1NldERlZmF1bHRGaXhlZEZvbnRTaXplRWkg
QCA4NCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjVTZXRNaW5pbXVtTG9naWNh
bEZvbnRTaXplRWkgQCA4NSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjVTZXRT
aG91bGRQcmludEJhY2tncm91bmRzRWkgQCA4NiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNl
dHRpbmdzMjVTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRVJLN1REZXNDMTYgQCA4NyBOT05BTUUN
CisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMzBTZXRXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2Fs
bHlFaSBAIDg4IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3M0MFNldEphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlFaSBAIDg5IE5PTkFNRQ0KKyAgICBfWk4xNkNX
ZWJDb3JlU2V0dGluZ3M0TmV3TEV2IEAgOTAgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0
aW5nc0QwRXYgQCA5MSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzRDFFdiBAIDky
IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3NEMkV2IEAgOTMgTk9OQU1FDQorICAg
IF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXIzVXJsRXYgQCA5NCBOT05BTUUNCisgICAgX1pOMjBU
V2ViQ29yZUltYWdlQ2FycmllcjdBbHRUZXh0RXYgQCA5NSBOT05BTUUNCisgICAgX1pOMjBUV2Vi
Q29yZUltYWdlQ2FycmllcjdSYXdEYXRhRXYgQCA5NiBOT05BTUUNCisgICAgX1pOMjBUV2ViQ29y
ZUltYWdlQ2FycmllcjhSZW5kZXJlckV2IEAgOTcgTk9OQU1FDQorICAgIF9aTjIwVFdlYkNvcmVJ
bWFnZUNhcnJpZXI5SW1hZ2VUeXBlRXYgQCA5OCBOT05BTUUNCisgICAgX1pOMjFUV2ViQ29yZUNv
b2tpZUZhY3RvcnkxM0Nvb2tpZUFkYXB0ZXJFdiBAIDk5IE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJD
b3JlQ29va2llRmFjdG9yeTE2U2V0Q29va2llQWRhcHRlckVQMjFNV2ViQ29yZUNvb2tpZUFkYXB0
ZXIgQCAxMDAgTk9OQU1FDQorICAgIF9aTjIxVFdlYkNvcmVQbHVnaW5IYW5kbGVyMTNQbHVnaW5I
YW5kbGVyRXYgQCAxMDEgTk9OQU1FDQorICAgIF9aTjIxVFdlYkNvcmVQbHVnaW5IYW5kbGVyMjNT
ZXRXZWJDb3JlUGx1Z2luSGFuZGxlckVQMjFNV2ViQ29yZVBsdWdpbkhhbmRsZXIgQCAxMDIgTk9O
QU1FDQorICAgIF9aTjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0TmV3TEVQMTZDRmJzQml0bWFw
RGV2aWNlUDEwQ0Zic0JpdG1hcFAxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDEwMyBOT05BTUUNCisg
ICAgX1pOMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dDROZXdMRVI5Q0Zic0JpdEdjUDEwQ0Zic0Jp
dG1hcFAxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDEwNCBOT05BTUUNCisgICAgX1pOMjNUV2ViQ29y
ZUxvYWRlckNvbnRhaW5lcjE1TG9hZGVyQ29udGFpbmVyRXYgQCAxMDUgTk9OQU1FDQorICAgIF9a
TjIzVFdlYkNvcmVMb2FkZXJDb250YWluZXIyNVNldFdlYkNvcmVMb2FkZXJDb250YWluZXJFUDIz
TVdlYkNvcmVMb2FkZXJDb250YWluZXIgQCAxMDYgTk9OQU1FDQorICAgIF9aTjI2VFdlYkNvcmVG
b3JtQ29udHJvbEZhY3RvcnkyOFNldFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlFUDI2TVdlYkNv
cmVGb3JtQ29udHJvbEZhY3RvcnkgQCAxMDcgTk9OQU1FDQorICAgIF9aTjI2VFdlYkNvcmVGb3Jt
Q29udHJvbEZhY3Rvcnk3RmFjdG9yeUV2IEAgMTA4IE5PTkFNRQ0KKyAgICBfWk4yN1RXZWJDb3Jl
VGV4dFJlbmRlcmVyRmFjdG9yeTI5U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlFUDI3TVdl
YkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5IEAgMTA5IE5PTkFNRQ0KKyAgICBfWk4yN1RXZWJDb3Jl
VGV4dFJlbmRlcmVyRmFjdG9yeTdGYWN0b3J5RXYgQCAxMTAgTk9OQU1FDQorICAgIF9aTjI4Q1dl
YkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjExU2V0Q2FsbGJhY2tFUE41a2h0bWwxOUNhY2hlZElt
YWdlQ2FsbGJhY2tFIEAgMTExIE5PTkFNRQ0KKyAgICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFj
a1dyYXBwZXIxMk5vdGlmeVVwZGF0ZUV2IEAgMTEyIE5PTkFNRQ0KKyAgICBfWk4yOENXZWJDb3Jl
SW1hZ2VDYWxsYmFja1dyYXBwZXIxNE5vdGlmeUZpbmlzaGVkRXYgQCAxMTMgTk9OQU1FDQorICAg
IF9aTjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjE5Tm90aWZ5RGVjb2RpbmdFcnJvckV2
IEAgMTE0IE5PTkFNRQ0KKyAgICBfWk4yOFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkzMFNl
dFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUVQMjhNV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0
b3J5IEAgMTE1IE5PTkFNRQ0KKyAgICBfWk4yOFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk3
RmFjdG9yeUV2IEAgMTE2IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTEwSXNGcmFt
ZVNldEV2IEAgMTE3IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTEwUmVuZGVyUGFy
dEV2IEAgMTE4IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTExTmVlZHNMYXlvdXRF
diBAIDExOSBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMkNhbkNhY2hlUGFnZUV2
IEAgMTIwIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTEyVGV4dEVuY29kaW5nRXYg
QCAxMjEgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMTZIYXNQZW5kaW5nTGF5b3V0
RXYgQCAxMjIgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMThTaG93aW5nRmFzdFBy
ZXZpZXdFdiBAIDEyMyBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyMEZhc3RGaXJz
dERpc3BsYXlNb2RlRXYgQCAxMjQgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMjBH
ZXRVcmxPZk5vZGVJbkZvY3VzTEVSNlRQb2ludCBAIDEyNSBOT05BTUUNCisgICAgX1pOSzE0Q1dl
YkNvcmVCcmlkZ2UyNE5hdmlnYWJsZU5vZGVVbmRlckN1cnNvckVSNlRQb2ludFIyNlRXZWJDb3Jl
Rm9jdXNlZEVsZW1lbnRUeXBlUjVUUmVjdCBAIDEyNiBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNv
cmVCcmlkZ2UzVVJMRXYgQCAxMjcgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlNE5h
bWVFdiBAIDEyOCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2U2RG9tYWluRXYgQCAx
MjkgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlOFJlZmVycmVyRXYgQCAxMzAgTk9O
QU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxMUphdmFFbmFibGVkRXYgQCAxMzEgTk9O
QU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNFBsdWdpbnNFbmFibGVkRXYgQCAxMzIg
Tk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNURlZmF1bHRGb250U2l6ZUV2IEAg
MTMzIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVGaXhlZEZvbnRGYW1pbHlF
diBAIDEzNCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1TWluaW11bUZvbnRT
aXplRXYgQCAxMzUgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNVNlcmlmRm9u
dEZhbWlseUV2IEAgMTM2IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdDdXJz
aXZlRm9udEZhbWlseUV2IEAgMTM3IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MTdGYW50YXN5Rm9udEZhbWlseUV2IEAgMTM4IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNl
dHRpbmdzMTdKYXZhU2NyaXB0RW5hYmxlZEV2IEAgMTM5IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2Vi
Q29yZVNldHRpbmdzMThBdXRvUmVmcmVzaEVuYWJsZWRFdiBAIDE0MCBOT05BTUUNCisgICAgX1pO
SzE2Q1dlYkNvcmVTZXR0aW5nczE4U2F2ZVJhd0RhdGFFbmFibGVkRXYgQCAxNDEgTk9OQU1FDQor
ICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOFN0YW5kYXJkRm9udEZhbWlseUV2IEAgMTQyIE5P
TkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTlEZWZhdWx0VGV4dEVuY29kaW5nRXYg
QCAxNDMgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOVNhbnNTZXJpZkZvbnRG
YW1pbHlFdiBAIDE0NCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIwRGVmYXVs
dEZpeGVkRm9udFNpemVFdiBAIDE0NSBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5n
czIyTWluaW11bUxvZ2ljYWxGb250U2l6ZUV2IEAgMTQ2IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2Vi
Q29yZVNldHRpbmdzMjJTaG91bGRQcmludEJhY2tncm91bmRzRXYgQCAxNDcgTk9OQU1FDQorICAg
IF9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMlVzZXJTdHlsZVNoZWV0TG9jYXRpb25FdiBAIDE0OCBO
T05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczI3V2lsbExvYWRJbWFnZXNBdXRvbWF0
aWNhbGx5RXYgQCAxNDkgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MzN0phdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlFdiBAIDE1MCBOT05BTUUNCisgICAgX1pU
STE0Q1dlYkNvcmVCcmlkZ2UgQCAxNTEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVEkxNkNXZWJD
b3JlU2V0dGluZ3MgQCAxNTIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVEkyMENXZWJDb3JlUGFn
ZURhdGFJdGVtIEAgMTUzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJMjNDV2ViQ29yZUdyYXBo
aWNzQ29udGV4dCBAIDE1NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUVjE0Q1dlYkNvcmVCcmlk
Z2UgQCAxNTUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFYxNkNXZWJDb3JlU2V0dGluZ3MgQCAx
NTYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFYyMENXZWJDb3JlUGFnZURhdGFJdGVtIEAgMTU3
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICAgICAgX1pUVjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQg
QCAxNTggTk9OQU1FIDsgIzxWVD4jDQorICAgICAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTdHZXRS
ZW5kZXJUZXh0QXJlYUVSSzdURGVzQzE2UjZSQXJyYXlJNVRSZWN0RSBAIDE1OSBOT05BTUUNCisg
ICAgICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UzMUdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5r
c0xFUmkgQCAxNjAgTk9OQU1FDQorICAgICAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjBXaW5kb3dT
Y3JpcHROUE9iamVjdEV2IEAgMTYxIE5PTkFNRQ0KIA0KSW5kZXg6IFdlYkNvcmUvZ3JvdXAvS0hU
TUwubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9ncm91cC9LSFRNTC5tbXAJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYkNvcmUvZ3JvdXAvS0hUTUwubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAt
NTksNiArNTksNyBAQA0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cLg0KIFNZU1RFTUlOQ0xV
REUgICAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVca2pzDQogU1lTVEVNSU5DTFVERSAgICAgICAu
LlwuLlxKYXZhU2NyaXB0Q29yZVxwY3JlDQorU1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlxKYXZh
U2NyaXB0Q29yZVxiaW5kaW5ncw0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cTWVtb3J5TWFu
YWdlclxJbmMNCiAjaWZuZGVmIF9fQlJPV1NFUl9TREsNCiBTWVNURU1JTkNMVURFICAgICAgIFxT
NjBcbGlieG1sMnBhcnNlclx4bWxlbmdpbmVcaW5jXGxpYnhtbA0KSW5kZXg6IFdlYkNvcmUvZ3Jv
dXAvS1dRLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZ3JvdXAvS1dRLm1tcAkocmV2aXNp
b24gMTcwNjkpDQorKysgV2ViQ29yZS9ncm91cC9LV1EubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAt
NjIsNiArNjIsNyBAQA0KIFNZU1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlDQog
U1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVca2pzDQogU1lTVEVNSU5DTFVE
RSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVccGNyZQ0KK1NZU1RFTUlOQ0xVREUgICAgIC4uXC4u
XEphdmFTY3JpcHRDb3JlXGJpbmRpbmdzDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cTWVtb3J5
TWFuYWdlclxJbmMNCiANCiBPUFRJT04gQ1cgLXByZWZpeCBwcmFnbWFzLnByZWYNCkluZGV4OiBX
ZWJDb3JlL2dyb3VwL1dlYkNvcmUubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9ncm91cC9X
ZWJDb3JlLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9ncm91cC9XZWJDb3JlLm1t
cAkod29ya2luZyBjb3B5KQ0KQEAgLTYzLDYgKzYzLDcgQEANCiBTWVNURU1JTkNMVURFICAgICAg
IC4uXGtodG1sXGVkaXRpbmcNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29y
ZVxranMNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxwY3JlDQorU1lT
VEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVcYmluZGluZ3MNCiBTWVNURU1JTkNM
VURFICAgICAuLlwuLlxNZW1vcnlNYW5hZ2VyXEluYw0KIA0KIA0KSW5kZXg6IFdlYkNvcmUva2h0
bWwvZWNtYS9ranNfYmluZGluZy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX2JpbmRpbmcuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX2JpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzYxLDEzICszNjEsMTMgQEAN
CiAgIHJldHVybiBmYWxzZTsKIH0KIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5H
RVMKKyNpZiBBUFBMRV9DSEFOR0VTCiBib29sIFNjcmlwdEludGVycHJldGVyOjppc0dsb2JhbE9i
amVjdChjb25zdCBWYWx1ZSAmdikKIHsKICAgICBpZiAodi50eXBlKCkgPT0gT2JqZWN0VHlwZSkg
ewotCU9iamVjdCBvID0gdi50b09iamVjdCAoZ2xvYmFsRXhlYygpKTsKLQlpZiAoby5jbGFzc0lu
Zm8oKSA9PSAmV2luZG93OjppbmZvKQotCSAgICByZXR1cm4gdHJ1ZTsKKyAgICBPYmplY3QgbyA9
IHYudG9PYmplY3QgKGdsb2JhbEV4ZWMoKSk7CisgICAgaWYgKG8uY2xhc3NJbmZvKCkgPT0gJldp
bmRvdzo6aW5mbykKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKIH0KQEAgLTM4OSwxMSArMzg5LDEyIEBADQogewogICAgIHZvaWQgKnJlc3VsdCA9IDA7CiAK
KyNpZiAhTk9LSUFfQ0hBTkdFUwogICAgIGlmIChsYW5ndWFnZSA9PSBCaW5kaW5nczo6SW5zdGFu
Y2U6Ok9iamVjdGl2ZUNMYW5ndWFnZSkKLQlyZXN1bHQgPSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JW
YWx1ZSAoZXhlYywgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Ci0KKyAgICByZXN1bHQgPSBjcmVh
dGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Cisj
ZW5kaWYKICAgICBpZiAoIXJlc3VsdCkKLQlyZXN1bHQgPSBJbnRlcnByZXRlcjo6Y3JlYXRlTGFu
Z3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBsYW5ndWFnZSwgdmFsdWUsIG9yaWdpbiwgY3Vy
cmVudCk7CisgICAgcmVzdWx0ID0gSW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VG
b3JWYWx1ZSAoZXhlYywgbGFuZ3VhZ2UsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHJldmlz
aW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMzEsNyArMzEsNyBAQA0KICNpbmNsdWRlIDxranMvbG9va3VwLmg+CiAjaW5j
bHVkZSA8a2pzL3Byb3RlY3QuaD4KIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5H
RVMKKyNpZiBBUFBMRV9DSEFOR0VTCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZS5o
PgogI2VuZGlmCiAKQEAgLTE0MCw3ICsxNDAsNyBAQA0KIAogICAgIERPTTo6RXZlbnQgKmdldEN1
cnJlbnRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZ0OyB9CiAKLSNpZiBBUFBMRV9DSEFOR0VT
ICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogICAgIHZpcnR1YWwgYm9vbCBp
c0dsb2JhbE9iamVjdChjb25zdCBWYWx1ZSAmdik7CiAgICAgdmlydHVhbCBJbnRlcnByZXRlciAq
aW50ZXJwcmV0ZXJGb3JHbG9iYWxPYmplY3QgKGNvbnN0IFZhbHVlSW1wICppbXApOwogICAgIHZp
cnR1YWwgYm9vbCBpc1NhZmVTY3JpcHQgKGNvbnN0IEludGVycHJldGVyICp0YXJnZXQpOwpJbmRl
eDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19kb20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9raHRtbC9lY21hL2tqc19kb20uY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2to
dG1sL2VjbWEva2pzX2RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00Myw3ICs0Myw3IEBADQog
CiAjaW5jbHVkZSAibWlzYy9odG1sdGFncy5oIgogCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9L
SUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9y
dW50aW1lX29iamVjdC5oPgogI2VuZGlmCiAKQEAgLTU4LDIxICs1OCwyMSBAQA0KIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC8qIFNvdXJjZSBmb3IgRE9NTm9kZVByb3RvVGFibGUuIFVzZSAibWFrZSBo
YXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTU5vZGVQcm90b1RhYmxlIDEzCi0g
IGluc2VydEJlZm9yZQlET01Ob2RlOjpJbnNlcnRCZWZvcmUJRG9udERlbGV0ZXxGdW5jdGlvbiAy
Ci0gIHJlcGxhY2VDaGlsZAlET01Ob2RlOjpSZXBsYWNlQ2hpbGQJRG9udERlbGV0ZXxGdW5jdGlv
biAyCi0gIHJlbW92ZUNoaWxkCURPTU5vZGU6OlJlbW92ZUNoaWxkCURvbnREZWxldGV8RnVuY3Rp
b24gMQotICBhcHBlbmRDaGlsZAlET01Ob2RlOjpBcHBlbmRDaGlsZAlEb250RGVsZXRlfEZ1bmN0
aW9uIDEKLSAgaGFzQXR0cmlidXRlcwlET01Ob2RlOjpIYXNBdHRyaWJ1dGVzCURvbnREZWxldGV8
RnVuY3Rpb24gMAotICBoYXNDaGlsZE5vZGVzCURPTU5vZGU6Okhhc0NoaWxkTm9kZXMJRG9udERl
bGV0ZXxGdW5jdGlvbiAwCi0gIGNsb25lTm9kZQlET01Ob2RlOjpDbG9uZU5vZGUJRG9udERlbGV0
ZXxGdW5jdGlvbiAxCisgIGluc2VydEJlZm9yZSAgRE9NTm9kZTo6SW5zZXJ0QmVmb3JlICAgRG9u
dERlbGV0ZXxGdW5jdGlvbiAyCisgIHJlcGxhY2VDaGlsZCAgRE9NTm9kZTo6UmVwbGFjZUNoaWxk
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHJlbW92ZUNoaWxkICAgRE9NTm9kZTo6UmVtb3Zl
Q2hpbGQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGFwcGVuZENoaWxkICAgRE9NTm9kZTo6
QXBwZW5kQ2hpbGQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGhhc0F0dHJpYnV0ZXMgRE9N
Tm9kZTo6SGFzQXR0cmlidXRlcyAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCisgIGhhc0NoaWxkTm9k
ZXMgRE9NTm9kZTo6SGFzQ2hpbGROb2RlcyAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCisgIGNsb25l
Tm9kZSBET01Ob2RlOjpDbG9uZU5vZGUgIERvbnREZWxldGV8RnVuY3Rpb24gMQogIyBET00yCi0g
IG5vcm1hbGl6ZQlET01Ob2RlOjpOb3JtYWxpemUJRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIGlz
U3VwcG9ydGVkICAgRE9NTm9kZTo6SXNTdXBwb3J0ZWQJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisg
IG5vcm1hbGl6ZSBET01Ob2RlOjpOb3JtYWxpemUgIERvbnREZWxldGV8RnVuY3Rpb24gMAorICBp
c1N1cHBvcnRlZCAgIERPTU5vZGU6OklzU3VwcG9ydGVkICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MgogIyBmcm9tIHRoZSBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgYWRkRXZlbnRMaXN0ZW5lcglE
T01Ob2RlOjpBZGRFdmVudExpc3RlbmVyCURvbnREZWxldGV8RnVuY3Rpb24gMwotICByZW1vdmVF
dmVudExpc3RlbmVyCURPTU5vZGU6OlJlbW92ZUV2ZW50TGlzdGVuZXIJRG9udERlbGV0ZXxGdW5j
dGlvbiAzCi0gIGRpc3BhdGNoRXZlbnQJCURPTU5vZGU6OkRpc3BhdGNoRXZlbnQJRG9udERlbGV0
ZXxGdW5jdGlvbiAxCi0gIGNvbnRhaW5zCURPTU5vZGU6OkNvbnRhaW5zCQlEb250RGVsZXRlfEZ1
bmN0aW9uIDEKKyAgYWRkRXZlbnRMaXN0ZW5lciAgRE9NTm9kZTo6QWRkRXZlbnRMaXN0ZW5lciAg
IERvbnREZWxldGV8RnVuY3Rpb24gMworICByZW1vdmVFdmVudExpc3RlbmVyICAgRE9NTm9kZTo6
UmVtb3ZlRXZlbnRMaXN0ZW5lciAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgZGlzcGF0Y2hF
dmVudCAgICAgRE9NTm9kZTo6RGlzcGF0Y2hFdmVudCAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisg
IGNvbnRhaW5zICBET01Ob2RlOjpDb250YWlucyAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEK
ICMgIkRPTSBsZXZlbCAwIiAoZnJvbSBHZWNrbyBET00gcmVmZXJlbmNlOyBhbHNvIGluIFdpbklF
KQogICBpdGVtICAgICAgICAgIERPTU5vZGU6Okl0ZW0gICAgICAgICAgIERvbnREZWxldGV8RnVu
Y3Rpb24gMQogQGVuZApAQCAtMTEzLDcgKzExMyw3IEBADQogICAgIERPTU9iamVjdDo6bWFyaygp
OwogICAgIHJldHVybjsKICAgfQotICAKKwogICAvLyBUaGlzIGlzIGEgbm9kZSBvdXRzaWRlIHRo
ZSBkb2N1bWVudCwgc28gZmluZCB0aGUgcm9vdCBvZiB0aGUgdHJlZSBpdCBpcyBpbiwKICAgLy8g
YW5kIHN0YXJ0IG1hcmtpbmcgZnJvbSB0aGVyZS4KICAgTm9kZUltcGwgKnJvb3QgPSBub2RlLmhh
bmRsZSgpOwpAQCAtMTYzLDc1ICsxNjMsNzUgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NTm9kZVRh
YmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Ob2Rl
VGFibGUgNjcKLSAgbm9kZU5hbWUJRE9NTm9kZTo6Tm9kZU5hbWUJRG9udERlbGV0ZXxSZWFkT25s
eQotICBub2RlVmFsdWUJRE9NTm9kZTo6Tm9kZVZhbHVlCURvbnREZWxldGUKLSAgbm9kZVR5cGUJ
RE9NTm9kZTo6Tm9kZVR5cGUJRG9udERlbGV0ZXxSZWFkT25seQotICBwYXJlbnROb2RlCURPTU5v
ZGU6OlBhcmVudE5vZGUJRG9udERlbGV0ZXxSZWFkT25seQotICBwYXJlbnRFbGVtZW50CURPTU5v
ZGU6OlBhcmVudEVsZW1lbnQJRG9udERlbGV0ZXxSZWFkT25seQotICBjaGlsZE5vZGVzCURPTU5v
ZGU6OkNoaWxkTm9kZXMJRG9udERlbGV0ZXxSZWFkT25seQotICBmaXJzdENoaWxkCURPTU5vZGU6
OkZpcnN0Q2hpbGQJRG9udERlbGV0ZXxSZWFkT25seQotICBsYXN0Q2hpbGQJRE9NTm9kZTo6TGFz
dENoaWxkCURvbnREZWxldGV8UmVhZE9ubHkKKyAgbm9kZU5hbWUgIERPTU5vZGU6Ok5vZGVOYW1l
ICAgRG9udERlbGV0ZXxSZWFkT25seQorICBub2RlVmFsdWUgRE9NTm9kZTo6Tm9kZVZhbHVlICBE
b250RGVsZXRlCisgIG5vZGVUeXBlICBET01Ob2RlOjpOb2RlVHlwZSAgIERvbnREZWxldGV8UmVh
ZE9ubHkKKyAgcGFyZW50Tm9kZSAgICBET01Ob2RlOjpQYXJlbnROb2RlIERvbnREZWxldGV8UmVh
ZE9ubHkKKyAgcGFyZW50RWxlbWVudCBET01Ob2RlOjpQYXJlbnRFbGVtZW50ICBEb250RGVsZXRl
fFJlYWRPbmx5CisgIGNoaWxkTm9kZXMgICAgRE9NTm9kZTo6Q2hpbGROb2RlcyBEb250RGVsZXRl
fFJlYWRPbmx5CisgIGZpcnN0Q2hpbGQgICAgRE9NTm9kZTo6Rmlyc3RDaGlsZCBEb250RGVsZXRl
fFJlYWRPbmx5CisgIGxhc3RDaGlsZCBET01Ob2RlOjpMYXN0Q2hpbGQgIERvbnREZWxldGV8UmVh
ZE9ubHkKICAgcHJldmlvdXNTaWJsaW5nICBET01Ob2RlOjpQcmV2aW91c1NpYmxpbmcgRG9udERl
bGV0ZXxSZWFkT25seQotICBuZXh0U2libGluZwlET01Ob2RlOjpOZXh0U2libGluZwlEb250RGVs
ZXRlfFJlYWRPbmx5Ci0gIGF0dHJpYnV0ZXMJRE9NTm9kZTo6QXR0cmlidXRlcwlEb250RGVsZXRl
fFJlYWRPbmx5Ci0gIG5hbWVzcGFjZVVSSQlET01Ob2RlOjpOYW1lc3BhY2VVUkkJRG9udERlbGV0
ZXxSZWFkT25seQorICBuZXh0U2libGluZyAgIERPTU5vZGU6Ok5leHRTaWJsaW5nICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgYXR0cmlidXRlcyAgICBET01Ob2RlOjpBdHRyaWJ1dGVzIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgbmFtZXNwYWNlVVJJICBET01Ob2RlOjpOYW1lc3BhY2VVUkkgICBE
b250RGVsZXRlfFJlYWRPbmx5CiAjIERPTTIKLSAgcHJlZml4CURPTU5vZGU6OlByZWZpeAkJRG9u
dERlbGV0ZQotICBsb2NhbE5hbWUJRE9NTm9kZTo6TG9jYWxOYW1lCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgb3duZXJEb2N1bWVudAlET01Ob2RlOjpPd25lckRvY3VtZW50CURvbnREZWxldGV8UmVh
ZE9ubHkKKyAgcHJlZml4ICAgIERPTU5vZGU6OlByZWZpeCAgICAgRG9udERlbGV0ZQorICBsb2Nh
bE5hbWUgRE9NTm9kZTo6TG9jYWxOYW1lICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG93bmVyRG9j
dW1lbnQgRE9NTm9kZTo6T3duZXJEb2N1bWVudCAgRG9udERlbGV0ZXxSZWFkT25seQogIwotICBv
bmFib3J0CURPTU5vZGU6Ok9uQWJvcnQJCURvbnREZWxldGUKLSAgb25ibHVyCURPTU5vZGU6Ok9u
Qmx1cgkJCURvbnREZWxldGUKLSAgb25jaGFuZ2UJRE9NTm9kZTo6T25DaGFuZ2UJCURvbnREZWxl
dGUKLSAgb25jbGljawlET01Ob2RlOjpPbkNsaWNrCQlEb250RGVsZXRlCi0gIG9uY29udGV4dG1l
bnUJRE9NTm9kZTo6T25Db250ZXh0TWVudQkJRG9udERlbGV0ZQotICBvbmRibGNsaWNrCURPTU5v
ZGU6Ok9uRGJsQ2xpY2sJCURvbnREZWxldGUKLSAgb25iZWZvcmVjdXQJRE9NTm9kZTo6T25CZWZv
cmVDdXQJCURvbnREZWxldGUKKyAgb25hYm9ydCAgIERPTU5vZGU6Ok9uQWJvcnQgICAgICAgIERv
bnREZWxldGUKKyAgb25ibHVyICAgIERPTU5vZGU6Ok9uQmx1ciAgICAgICAgIERvbnREZWxldGUK
KyAgb25jaGFuZ2UgIERPTU5vZGU6Ok9uQ2hhbmdlICAgICAgIERvbnREZWxldGUKKyAgb25jbGlj
ayAgIERPTU5vZGU6Ok9uQ2xpY2sgICAgICAgIERvbnREZWxldGUKKyAgb25jb250ZXh0bWVudSBE
T01Ob2RlOjpPbkNvbnRleHRNZW51ICAgICAgRG9udERlbGV0ZQorICBvbmRibGNsaWNrICAgIERP
TU5vZGU6Ok9uRGJsQ2xpY2sgICAgIERvbnREZWxldGUKKyAgb25iZWZvcmVjdXQgICBET01Ob2Rl
OjpPbkJlZm9yZUN1dCAgICAgICAgRG9udERlbGV0ZQogICBvbmN1dCAgICAgICAgIERPTU5vZGU6
Ok9uQ3V0ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotICBvbmJlZm9yZWNvcHkJRE9NTm9k
ZTo6T25CZWZvcmVDb3B5CQlEb250RGVsZXRlCi0gIG9uY29weQlET01Ob2RlOjpPbkNvcHkgICAg
ICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25iZWZvcmVwYXN0ZQlET01Ob2RlOjpPbkJlZm9y
ZVBhc3RlCQlEb250RGVsZXRlCi0gIG9ucGFzdGUJRE9NTm9kZTo6T25QYXN0ZQkJRG9udERlbGV0
ZQotICBvbmRyYWcJRE9NTm9kZTo6T25EcmFnCQkJRG9udERlbGV0ZQotICBvbmRyYWdkcm9wCURP
TU5vZGU6Ok9uRHJhZ0Ryb3AJCURvbnREZWxldGUKLSAgb25kcmFnZW5kCURPTU5vZGU6Ok9uRHJh
Z0VuZAkJRG9udERlbGV0ZQotICBvbmRyYWdlbnRlcglET01Ob2RlOjpPbkRyYWdFbnRlcgkJRG9u
dERlbGV0ZQotICBvbmRyYWdsZWF2ZQlET01Ob2RlOjpPbkRyYWdMZWF2ZQkJRG9udERlbGV0ZQot
ICBvbmRyYWdvdmVyCURPTU5vZGU6Ok9uRHJhZ092ZXIJCURvbnREZWxldGUKLSAgb25kcmFnc3Rh
cnQJRE9NTm9kZTo6T25EcmFnU3RhcnQJCURvbnREZWxldGUKLSAgb25kcm9wCURPTU5vZGU6Ok9u
RHJvcCAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotICBvbmVycm9yCURPTU5vZGU6Ok9uRXJy
b3IJCURvbnREZWxldGUKLSAgb25mb2N1cwlET01Ob2RlOjpPbkZvY3VzICAgICAgIAkJRG9udERl
bGV0ZQorICBvbmJlZm9yZWNvcHkgIERPTU5vZGU6Ok9uQmVmb3JlQ29weSAgICAgICBEb250RGVs
ZXRlCisgIG9uY29weSAgICBET01Ob2RlOjpPbkNvcHkgICAgICAgICAgICAgICAgIERvbnREZWxl
dGUKKyAgb25iZWZvcmVwYXN0ZSBET01Ob2RlOjpPbkJlZm9yZVBhc3RlICAgICAgRG9udERlbGV0
ZQorICBvbnBhc3RlICAgRE9NTm9kZTo6T25QYXN0ZSAgICAgICAgRG9udERlbGV0ZQorICBvbmRy
YWcgICAgRE9NTm9kZTo6T25EcmFnICAgICAgICAgRG9udERlbGV0ZQorICBvbmRyYWdkcm9wICAg
IERPTU5vZGU6Ok9uRHJhZ0Ryb3AgICAgIERvbnREZWxldGUKKyAgb25kcmFnZW5kIERPTU5vZGU6
Ok9uRHJhZ0VuZCAgICAgIERvbnREZWxldGUKKyAgb25kcmFnZW50ZXIgICBET01Ob2RlOjpPbkRy
YWdFbnRlciAgICAgICAgRG9udERlbGV0ZQorICBvbmRyYWdsZWF2ZSAgIERPTU5vZGU6Ok9uRHJh
Z0xlYXZlICAgICAgICBEb250RGVsZXRlCisgIG9uZHJhZ292ZXIgICAgRE9NTm9kZTo6T25EcmFn
T3ZlciAgICAgRG9udERlbGV0ZQorICBvbmRyYWdzdGFydCAgIERPTU5vZGU6Ok9uRHJhZ1N0YXJ0
ICAgICAgICBEb250RGVsZXRlCisgIG9uZHJvcCAgICBET01Ob2RlOjpPbkRyb3AgICAgICAgICAg
ICAgICAgIERvbnREZWxldGUKKyAgb25lcnJvciAgIERPTU5vZGU6Ok9uRXJyb3IgICAgICAgIERv
bnREZWxldGUKKyAgb25mb2N1cyAgIERPTU5vZGU6Ok9uRm9jdXMgICAgICAgICAgICBEb250RGVs
ZXRlCiAgIG9uaW5wdXQgICAgICAgRE9NTm9kZTo6T25JbnB1dCAgICAgICAgICAgICAgICBEb250
RGVsZXRlCi0gIG9ua2V5ZG93bglET01Ob2RlOjpPbktleURvd24JCURvbnREZWxldGUKLSAgb25r
ZXlwcmVzcwlET01Ob2RlOjpPbktleVByZXNzCQlEb250RGVsZXRlCi0gIG9ua2V5dXAJRE9NTm9k
ZTo6T25LZXlVcAkJRG9udERlbGV0ZQotICBvbmxvYWQJRE9NTm9kZTo6T25Mb2FkCQkJRG9udERl
bGV0ZQotICBvbm1vdXNlZG93bglET01Ob2RlOjpPbk1vdXNlRG93bgkJRG9udERlbGV0ZQotICBv
bm1vdXNlbW92ZQlET01Ob2RlOjpPbk1vdXNlTW92ZQkJRG9udERlbGV0ZQotICBvbm1vdXNlb3V0
CURPTU5vZGU6Ok9uTW91c2VPdXQJCURvbnREZWxldGUKLSAgb25tb3VzZW92ZXIJRE9NTm9kZTo6
T25Nb3VzZU92ZXIJCURvbnREZWxldGUKLSAgb25tb3VzZXVwCURPTU5vZGU6Ok9uTW91c2VVcAkJ
RG9udERlbGV0ZQotICBvbm1vdXNld2hlZWwJRE9NTm9kZTo6T25Nb3VzZVdoZWVsCQlEb250RGVs
ZXRlCi0gIG9ubW92ZQlET01Ob2RlOjpPbk1vdmUJCQlEb250RGVsZXRlCi0gIG9ucmVzZXQJRE9N
Tm9kZTo6T25SZXNldAkJRG9udERlbGV0ZQotICBvbnJlc2l6ZQlET01Ob2RlOjpPblJlc2l6ZQkJ
RG9udERlbGV0ZQorICBvbmtleWRvd24gRE9NTm9kZTo6T25LZXlEb3duICAgICAgRG9udERlbGV0
ZQorICBvbmtleXByZXNzICAgIERPTU5vZGU6Ok9uS2V5UHJlc3MgICAgIERvbnREZWxldGUKKyAg
b25rZXl1cCAgIERPTU5vZGU6Ok9uS2V5VXAgICAgICAgIERvbnREZWxldGUKKyAgb25sb2FkICAg
IERPTU5vZGU6Ok9uTG9hZCAgICAgICAgIERvbnREZWxldGUKKyAgb25tb3VzZWRvd24gICBET01O
b2RlOjpPbk1vdXNlRG93biAgICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNlbW92ZSAgIERPTU5v
ZGU6Ok9uTW91c2VNb3ZlICAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2VvdXQgICAgRE9NTm9k
ZTo6T25Nb3VzZU91dCAgICAgRG9udERlbGV0ZQorICBvbm1vdXNlb3ZlciAgIERPTU5vZGU6Ok9u
TW91c2VPdmVyICAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2V1cCBET01Ob2RlOjpPbk1vdXNl
VXAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2V3aGVlbCAgRE9NTm9kZTo6T25Nb3VzZVdoZWVs
ICAgICAgIERvbnREZWxldGUKKyAgb25tb3ZlICAgIERPTU5vZGU6Ok9uTW92ZSAgICAgICAgIERv
bnREZWxldGUKKyAgb25yZXNldCAgIERPTU5vZGU6Ok9uUmVzZXQgICAgICAgIERvbnREZWxldGUK
KyAgb25yZXNpemUgIERPTU5vZGU6Ok9uUmVzaXplICAgICAgIERvbnREZWxldGUKICAgb25zY3Jv
bGwgICAgICBET01Ob2RlOjpPblNjcm9sbCAgICAgICAgICAgICAgIERvbnREZWxldGUKICAgb25z
ZWFyY2ggICAgICBET01Ob2RlOjpPblNlYXJjaCAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAg
b25zZWxlY3QJRE9NTm9kZTo6T25TZWxlY3QJCURvbnREZWxldGUKLSAgb25zZWxlY3RzdGFydAlE
T01Ob2RlOjpPblNlbGVjdFN0YXJ0CQlEb250RGVsZXRlCi0gIG9uc3VibWl0CURPTU5vZGU6Ok9u
U3VibWl0CQlEb250RGVsZXRlCi0gIG9udW5sb2FkCURPTU5vZGU6Ok9uVW5sb2FkCQlEb250RGVs
ZXRlCisgIG9uc2VsZWN0ICBET01Ob2RlOjpPblNlbGVjdCAgICAgICBEb250RGVsZXRlCisgIG9u
c2VsZWN0c3RhcnQgRE9NTm9kZTo6T25TZWxlY3RTdGFydCAgICAgIERvbnREZWxldGUKKyAgb25z
dWJtaXQgIERPTU5vZGU6Ok9uU3VibWl0ICAgICAgIERvbnREZWxldGUKKyAgb251bmxvYWQgIERP
TU5vZGU6Ok9uVW5sb2FkICAgICAgIERvbnREZWxldGUKICMgSUUgZXh0ZW5zaW9ucwotICBvZmZz
ZXRMZWZ0CURPTU5vZGU6Ok9mZnNldExlZnQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgb2Zmc2V0
VG9wCURPTU5vZGU6Ok9mZnNldFRvcAkJRG9udERlbGV0ZXxSZWFkT25seQotICBvZmZzZXRXaWR0
aAlET01Ob2RlOjpPZmZzZXRXaWR0aAkJRG9udERlbGV0ZXxSZWFkT25seQotICBvZmZzZXRIZWln
aHQJRE9NTm9kZTo6T2Zmc2V0SGVpZ2h0CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG9mZnNldFBh
cmVudAlET01Ob2RlOjpPZmZzZXRQYXJlbnQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgY2xpZW50
V2lkdGgJRE9NTm9kZTo6Q2xpZW50V2lkdGgJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgY2xpZW50
SGVpZ2h0CURPTU5vZGU6OkNsaWVudEhlaWdodAkJRG9udERlbGV0ZXxSZWFkT25seQotICBzY3Jv
bGxMZWZ0CURPTU5vZGU6OlNjcm9sbExlZnQJCURvbnREZWxldGUKLSAgc2Nyb2xsVG9wCURPTU5v
ZGU6OlNjcm9sbFRvcAkJRG9udERlbGV0ZQorICBvZmZzZXRMZWZ0ICAgIERPTU5vZGU6Ok9mZnNl
dExlZnQgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb2Zmc2V0VG9wIERPTU5vZGU6Ok9mZnNl
dFRvcCAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb2Zmc2V0V2lkdGggICBET01Ob2RlOjpP
ZmZzZXRXaWR0aCAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBvZmZzZXRIZWlnaHQgIERP
TU5vZGU6Ok9mZnNldEhlaWdodCAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9mZnNldFBh
cmVudCAgRE9NTm9kZTo6T2Zmc2V0UGFyZW50ICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAg
Y2xpZW50V2lkdGggICBET01Ob2RlOjpDbGllbnRXaWR0aCAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBjbGllbnRIZWlnaHQgIERPTU5vZGU6OkNsaWVudEhlaWdodCAgICAgICBEb250RGVs
ZXRlfFJlYWRPbmx5CisgIHNjcm9sbExlZnQgICAgRE9NTm9kZTo6U2Nyb2xsTGVmdCAgICAgRG9u
dERlbGV0ZQorICBzY3JvbGxUb3AgRE9NTm9kZTo6U2Nyb2xsVG9wICAgICAgRG9udERlbGV0ZQog
ICBzY3JvbGxXaWR0aCAgIERPTU5vZGU6OlNjcm9sbFdpZHRoICAgICAgICAgICAgRG9udERlbGV0
ZXxSZWFkT25seQogICBzY3JvbGxIZWlnaHQgIERPTU5vZGU6OlNjcm9sbEhlaWdodCAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZApAQCAtMzE0LDkgKzMxNCw5IEBADQogICBjYXNl
IE9uTW91c2VPdmVyOgogICAgIHJldHVybiBnZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6TU9V
U0VPVkVSX0VWRU5UKTsKICAgY2FzZSBPbk1vdXNlVXA6Ci0gICAgcmV0dXJuIGdldExpc3RlbmVy
KERPTTo6RXZlbnRJbXBsOjpNT1VTRVVQX0VWRU5UKTsgICAgICAKKyAgICByZXR1cm4gZ2V0TGlz
dGVuZXIoRE9NOjpFdmVudEltcGw6Ok1PVVNFVVBfRVZFTlQpOwogICBjYXNlIE9uTW91c2VXaGVl
bDoKLSAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudEltcGw6Ok1PVVNFV0hFRUxfRVZF
TlQpOyAgICAgIAorICAgIHJldHVybiBnZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6TU9VU0VX
SEVFTF9FVkVOVCk7CiAgIGNhc2UgT25CZWZvcmVDdXQ6CiAgICAgcmV0dXJuIGdldExpc3RlbmVy
KERPTTo6RXZlbnRJbXBsOjpCRUZPUkVDVVRfRVZFTlQpOwogICBjYXNlIE9uQ3V0OgpAQCAtNjAz
LDkgKzYwMyw5IEBADQogICAgIERPTTo6RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBub2RlLmhh
bmRsZSgpLT5nZXRIVE1MRXZlbnRMaXN0ZW5lcihldmVudElkKTsKICAgICBKU0V2ZW50TGlzdGVu
ZXIgKmpzTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU0V2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcik7
CiAgICAgaWYgKCBqc0xpc3RlbmVyICYmIGpzTGlzdGVuZXItPmxpc3RlbmVyT2JqSW1wKCkgKQot
CXJldHVybiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iaigpOworICAgIHJldHVybiBqc0xpc3RlbmVy
LT5saXN0ZW5lck9iaigpOwogICAgIGVsc2UKLQlyZXR1cm4gTnVsbCgpOworICAgIHJldHVybiBO
dWxsKCk7CiB9CiAKIHZvaWQgRE9NTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0
ZSAqLCBTY29wZUNoYWluICYpIGNvbnN0CkBAIC02NTgsMTMgKzY1OCwxMyBAQA0KICAgICBjYXNl
IERPTU5vZGU6OkNvbnRhaW5zOgogICAgIHsKICAgICAgICAgaW50IGV4Y2VwdGlvbmNvZGU9MDsK
LQlET006Ok5vZGUgb3RoZXIgPSB0b05vZGUoYXJnc1swXSk7Ci0JaWYgKCFvdGhlci5pc051bGwo
KSAmJiBub2RlLm5vZGVUeXBlKCk9PURPTTo6Tm9kZTo6RUxFTUVOVF9OT0RFKQotCXsKLQkgICAg
RE9NOjpOb2RlQmFzZUltcGwgKmltcGwgPSBzdGF0aWNfY2FzdDxET006Ok5vZGVCYXNlSW1wbCAq
Pihub2RlLmhhbmRsZSgpKTsKLQkgICAgYm9vbCByZXR2YWwgPSAhaW1wbC0+Y2hlY2tOb093bmVy
KG90aGVyLmhhbmRsZSgpLGV4Y2VwdGlvbmNvZGUpOwotCSAgICByZXR1cm4gQm9vbGVhbihyZXR2
YWwgJiYgZXhjZXB0aW9uY29kZSA9PSAwKTsKLQl9CisgICAgRE9NOjpOb2RlIG90aGVyID0gdG9O
b2RlKGFyZ3NbMF0pOworICAgIGlmICghb3RoZXIuaXNOdWxsKCkgJiYgbm9kZS5ub2RlVHlwZSgp
PT1ET006Ok5vZGU6OkVMRU1FTlRfTk9ERSkKKyAgICB7CisgICAgICAgIERPTTo6Tm9kZUJhc2VJ
bXBsICppbXBsID0gc3RhdGljX2Nhc3Q8RE9NOjpOb2RlQmFzZUltcGwgKj4obm9kZS5oYW5kbGUo
KSk7CisgICAgICAgIGJvb2wgcmV0dmFsID0gIWltcGwtPmNoZWNrTm9Pd25lcihvdGhlci5oYW5k
bGUoKSxleGNlcHRpb25jb2RlKTsKKyAgICAgICAgcmV0dXJuIEJvb2xlYW4ocmV0dmFsICYmIGV4
Y2VwdGlvbmNvZGUgPT0gMCk7CisgICAgfQogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAg
ICAgfQogICAgIGNhc2UgRE9NTm9kZTo6SXRlbToKQEAgLTc0OSw4ICs3NDksOCBAQA0KICAgICBP
YmplY3QgZXJyID0gRXJyb3I6OmNyZWF0ZShleGVjLCBHZW5lcmFsRXJyb3IsICJFeGNlcHRpb24g
ZnJvbSBET01Ob2RlTGlzdCIpOwogICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihlcnIpOwogICAgIERP
TTo6X2V4Y2VwdGlvbmNvZGUgPSAwOwotICB9ICAKLSNlbHNlICAgICAKKyAgfQorI2Vsc2UKICAg
dHJ5IHsKICAgICB2YWwgPSB0cnlDYWxsKGV4ZWMsIHRoaXNPYmosIGFyZ3MpOwogICB9CkBAIC03
NTksNyArNzU5LDcgQEANCiAgICAgT2JqZWN0IGVyciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2Vu
ZXJhbEVycm9yLCAiRXhjZXB0aW9uIGZyb20gRE9NTm9kZUxpc3QiKTsKICAgICBleGVjLT5zZXRF
eGNlcHRpb24oZXJyKTsKICAgfQotI2VuZGlmICAKKyNlbmRpZgogICByZXR1cm4gdmFsOwogfQog
CkBAIC04MDUsMTAgKzgwNSwxMCBAQA0KIAogLyogU291cmNlIGZvciBET01BdHRyVGFibGUuIFVz
ZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTUF0dHJUYWJsZSA1
Ci0gIG5hbWUJCURPTUF0dHI6Ok5hbWUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgc3BlY2lmaWVk
CURPTUF0dHI6OlNwZWNpZmllZAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHZhbHVlCQlET01BdHRy
OjpWYWx1ZVByb3BlcnR5CURvbnREZWxldGV8UmVhZE9ubHkKLSAgb3duZXJFbGVtZW50CURPTUF0
dHI6Ok93bmVyRWxlbWVudAlEb250RGVsZXRlfFJlYWRPbmx5CisgIG5hbWUgICAgICBET01BdHRy
OjpOYW1lICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3BlY2lmaWVkIERPTUF0dHI6OlNw
ZWNpZmllZCAgRG9udERlbGV0ZXxSZWFkT25seQorICB2YWx1ZSAgICAgRE9NQXR0cjo6VmFsdWVQ
cm9wZXJ0eSAgRG9udERlbGV0ZXxSZWFkT25seQorICBvd25lckVsZW1lbnQgIERPTUF0dHI6Ok93
bmVyRWxlbWVudCAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBET01BdHRy
Ojp0cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUp
IGNvbnN0CkBAIC05MDcsMTQgKzkwNywxNCBAQA0KICovCiAKIERPTURvY3VtZW50OjpET01Eb2N1
bWVudChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6RG9jdW1lbnQgJmQpCi0gIDogRE9NTm9k
ZShkKSAKLXsgCisgIDogRE9NTm9kZShkKQorewogICBzZXRQcm90b3R5cGUoRE9NRG9jdW1lbnRQ
cm90bzo6c2VsZihleGVjKSk7CiB9CiAKIERPTURvY3VtZW50OjpET01Eb2N1bWVudChjb25zdCBE
T006OkRvY3VtZW50ICZkKQotICA6IERPTU5vZGUoZCkgCi17IAorICA6IERPTU5vZGUoZCkKK3sK
IH0KIAogRE9NRG9jdW1lbnQ6On5ET01Eb2N1bWVudCgpCkBAIC0xMDg4LDcgKzEwODgsNyBAQA0K
ICAgICAvLyAiSWYgbm90IHN1cHBvcnRlZCBbZm9yIGEgY29tbWFuZCBpZGVudGlmaWVyXSwgdGhp
cyBtZXRob2QgcmV0dXJucyBhIEJvb2xlYW4gc2V0IHRvIGZhbHNlLiIKICAgICBpZiAoY29tbWFu
ZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gQm9vbGVhbihmYWxzZSk7Ci0gICAgZWxz
ZSAKKyAgICBlbHNlCiAgICAgICAgIHJldHVybiBTdHJpbmcoY29tbWFuZFZhbHVlKTsKICAgfQog
ICBkZWZhdWx0OgpAQCAtMTEwMiwyMSArMTEwMiwyMSBAQA0KIAogLyogU291cmNlIGZvciBET01F
bGVtZW50UHJvdG9UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBA
YmVnaW4gRE9NRWxlbWVudFByb3RvVGFibGUgMTcKLSAgZ2V0QXR0cmlidXRlCQlET01FbGVtZW50
OjpHZXRBdHRyaWJ1dGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHNldEF0dHJpYnV0ZQkJRE9N
RWxlbWVudDo6U2V0QXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rpb24gMgotICByZW1vdmVBdHRy
aWJ1dGUJRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rpb24gMQot
ICBnZXRBdHRyaWJ1dGVOb2RlCURPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGUJRG9udERlbGV0
ZXxGdW5jdGlvbiAxCi0gIHNldEF0dHJpYnV0ZU5vZGUJRE9NRWxlbWVudDo6U2V0QXR0cmlidXRl
Tm9kZQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcmVtb3ZlQXR0cmlidXRlTm9kZQlET01FbGVt
ZW50OjpSZW1vdmVBdHRyaWJ1dGVOb2RlCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRFbGVt
ZW50c0J5VGFnTmFtZQlET01FbGVtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZQlEb250RGVsZXRl
fEZ1bmN0aW9uIDEKLSAgaGFzQXR0cmlidXRlCQlET01FbGVtZW50OjpIYXNBdHRyaWJ1dGUJRG9u
dERlbGV0ZXxGdW5jdGlvbiAxCi0gIGdldEF0dHJpYnV0ZU5TCURPTUVsZW1lbnQ6OkdldEF0dHJp
YnV0ZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBzZXRBdHRyaWJ1dGVOUwlET01FbGVtZW50
OjpTZXRBdHRyaWJ1dGVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDMKLSAgcmVtb3ZlQXR0cmlidXRl
TlMJRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0g
IGdldEF0dHJpYnV0ZU5vZGVOUwlET01FbGVtZW50OjpHZXRBdHRyaWJ1dGVOb2RlTlMJRG9udERl
bGV0ZXxGdW5jdGlvbiAyCi0gIHNldEF0dHJpYnV0ZU5vZGVOUwlET01FbGVtZW50OjpTZXRBdHRy
aWJ1dGVOb2RlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGdldEVsZW1lbnRzQnlUYWdOYW1l
TlMgRE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWVOUwlEb250RGVsZXRlfEZ1bmN0aW9u
IDIKLSAgaGFzQXR0cmlidXRlTlMJRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlTlMJRG9udERlbGV0
ZXxGdW5jdGlvbiAyCisgIGdldEF0dHJpYnV0ZSAgICAgIERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0
ZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgc2V0QXR0cmlidXRlICAgICAgRE9NRWxlbWVu
dDo6U2V0QXR0cmlidXRlICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZW1vdmVBdHRyaWJ1
dGUgICBET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1dGUgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisg
IGdldEF0dHJpYnV0ZU5vZGUgIERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGUgICAgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCisgIHNldEF0dHJpYnV0ZU5vZGUgIERPTUVsZW1lbnQ6OlNldEF0dHJp
YnV0ZU5vZGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHJlbW92ZUF0dHJpYnV0ZU5vZGUg
ICBET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1dGVOb2RlIERvbnREZWxldGV8RnVuY3Rpb24gMQor
ICBnZXRFbGVtZW50c0J5VGFnTmFtZSAgRE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWUg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGhhc0F0dHJpYnV0ZSAgICAgIERPTUVsZW1lbnQ6
Okhhc0F0dHJpYnV0ZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0QXR0cmlidXRlTlMg
ICAgRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTlMgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBz
ZXRBdHRyaWJ1dGVOUyAgICBET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOUyAgRG9udERlbGV0ZXxG
dW5jdGlvbiAzCisgIHJlbW92ZUF0dHJpYnV0ZU5TIERPTUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0
ZU5TICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGdldEF0dHJpYnV0ZU5vZGVOUyAgICBET01F
bGVtZW50OjpHZXRBdHRyaWJ1dGVOb2RlTlMgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBzZXRB
dHRyaWJ1dGVOb2RlTlMgICAgRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlTm9kZU5TICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyBET01FbGVtZW50OjpHZXRF
bGVtZW50c0J5VGFnTmFtZU5TIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBoYXNBdHRyaWJ1dGVO
UyAgICBET01FbGVtZW50OjpIYXNBdHRyaWJ1dGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiAg
IHNjcm9sbEludG9WaWV3ICAgICAgICBET01FbGVtZW50OjpTY3JvbGxJbnRvVmlldyAgICAgIERv
bnREZWxldGV8RnVuY3Rpb24gMQogICBmb2N1cyAgICAgICAgICAgICAgICAgRE9NRWxlbWVudDo6
RWxlbWVudEZvY3VzICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKICAgYmx1ciAgICAgICAg
ICAgICAgICAgIERPTUVsZW1lbnQ6OkVsZW1lbnRCbHVyICAgICAgICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAwCkBAIC0xMTM0LDE5ICsxMTM0LDE5IEBADQogY29uc3QgQ2xhc3NJbmZvIERPTUVsZW1l
bnQ6OmluZm8gPSB7ICJFbGVtZW50IiwgJkRPTU5vZGU6OmluZm8sICZET01FbGVtZW50VGFibGUs
IDAgfTsKIC8qIFNvdXJjZSBmb3IgRE9NRWxlbWVudFRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxl
cyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01FbGVtZW50VGFibGUgMwotICB0YWdOYW1lCURP
TUVsZW1lbnQ6OlRhZ05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQotICBzdHlsZQkJRE9NRWxlbWVudDo6U3R5bGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHRhZ05hbWUgICBET01FbGVtZW50OjpUYWdOYW1lICAg
ICAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3R5bGUgICAgIERP
TUVsZW1lbnQ6OlN0eWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQogQGVuZAogKi8KIERPTUVsZW1lbnQ6OkRPTUVsZW1lbnQoRXhlY1N0YXRlICpleGVjLCBj
b25zdCBET006OkVsZW1lbnQgJmUpCi0gIDogRE9NTm9kZShlKSAKKyAgOiBET01Ob2RlKGUpCiB7
CiAgIHNldFByb3RvdHlwZShET01FbGVtZW50UHJvdG86OnNlbGYoZXhlYykpOwogfQogCiBET01F
bGVtZW50OjpET01FbGVtZW50KGNvbnN0IERPTTo6RWxlbWVudCAmZSkKLSAgOiBET01Ob2RlKGUp
IAoteyAKKyAgOiBET01Ob2RlKGUpCit7CiB9CiAKIFZhbHVlIERPTUVsZW1lbnQ6OnRyeUdldChF
eGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAg
LTEyMzEsNyArMTIzMSw3IEBADQogICAgICAgcmV0dXJuIGdldERPTU5vZGVMaXN0KGV4ZWMsZWxl
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKGFyZ3NbMF0udG9TdHJpbmcoZXhlYykuc3RyaW5n
KCksYXJnc1sxXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSkpOwogICAgIGNhc2UgRE9NRWxlbWVu
dDo6SGFzQXR0cmlidXRlTlM6IC8vIERPTTIKICAgICAgIHJldHVybiBCb29sZWFuKGVsZW1lbnQu
aGFzQXR0cmlidXRlTlMoYXJnc1swXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSxhcmdzWzFdLnRv
U3RyaW5nKGV4ZWMpLnN0cmluZygpKSk7Ci0gICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxJbnRv
VmlldzogCisgICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxJbnRvVmlldzoKICAgICAgIChhcmdz
WzBdLnR5cGUoKSAhPSBVbmRlZmluZWRUeXBlICYmIGFyZ3NbMF0udHlwZSgpICE9IE51bGxUeXBl
KSA/IGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoYXJnc1swXS50b0Jvb2xlYW4oZXhlYykpIDogZWxl
bWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTsKICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAg
ICBjYXNlIERPTUVsZW1lbnQ6OlNjcm9sbEJ5TGluZXM6CkBAIC0xMjQwLDcgKzEyNDAsNyBAQA0K
ICAgICAgICAgRE9NOjpEb2N1bWVudEltcGwqIGRvY2ltcGwgPSBub2RlLmhhbmRsZSgpLT5nZXRE
b2N1bWVudCgpOwogICAgICAgICBpZiAoZG9jaW1wbCkgewogICAgICAgICAgICAgZG9jaW1wbC0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgICAgIH0gICAgICAg
ICAgICAKKyAgICAgICAgfQogICAgICAgICBraHRtbDo6UmVuZGVyT2JqZWN0ICpyZW5kID0gbm9k
ZS5oYW5kbGUoKSA/IG5vZGUuaGFuZGxlKCktPnJlbmRlcmVyKCkgOiAwTDsKICAgICAgICAgaWYg
KHJlbmQgJiYgcmVuZC0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKICAgICAgICAgICAgIEtXUVNjcm9s
bERpcmVjdGlvbiBkaXJlY3Rpb24gPSBLV1FTY3JvbGxEb3duOwpAQCAtMTI1Myw3ICsxMjUzLDcg
QEANCiAgICAgICAgICAgICByZW5kLT5sYXllcigpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxh
cml0eSwgbXVsdGlwbGllcik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgp
OwotICAgICAgICAKKwogICAgIH0KICAgICBjYXNlIERPTUVsZW1lbnQ6OkVsZW1lbnRGb2N1czoK
ICAgICAgICAgZWxlbWVudC5mb2N1cygpOwpAQCAtMTI3MCwxMSArMTI3MCwxMSBAQA0KIAogLyog
U291cmNlIGZvciBET01ET01JbXBsZW1lbnRhdGlvblByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNo
dGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTURPTUltcGxlbWVudGF0aW9uUHJvdG9U
YWJsZSA1Ci0gIGhhc0ZlYXR1cmUJCURPTURPTUltcGxlbWVudGF0aW9uOjpIYXNGZWF0dXJlCQlE
b250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgaGFzRmVhdHVyZSAgICAgICAgRE9NRE9NSW1wbGVtZW50
YXRpb246Okhhc0ZlYXR1cmUgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgogIyBET00yCi0g
IGNyZWF0ZUNTU1N0eWxlU2hlZXQJRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZUNTU1N0eWxl
U2hlZXQJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGNyZWF0ZURvY3VtZW50VHlwZQlET01ET01J
bXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1lbnRUeXBlCURvbnREZWxldGV8RnVuY3Rpb24gMwot
ICBjcmVhdGVEb2N1bWVudAlET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1lbnQJCURv
bnREZWxldGV8RnVuY3Rpb24gMworICBjcmVhdGVDU1NTdHlsZVNoZWV0ICAgRE9NRE9NSW1wbGVt
ZW50YXRpb246OkNyZWF0ZUNTU1N0eWxlU2hlZXQgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAg
Y3JlYXRlRG9jdW1lbnRUeXBlICAgIERPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVEb2N1bWVu
dFR5cGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCisgIGNyZWF0ZURvY3VtZW50ICAgIERPTURP
TUltcGxlbWVudGF0aW9uOjpDcmVhdGVEb2N1bWVudCAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlv
biAzCiAgIGNyZWF0ZUhUTUxEb2N1bWVudCAgICBET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRl
SFRNTERvY3VtZW50ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKIEBlbmQKICovCkBAIC0x
Mjg1LDggKzEyODUsOCBAQA0KIGNvbnN0IENsYXNzSW5mbyBET01ET01JbXBsZW1lbnRhdGlvbjo6
aW5mbyA9IHsgIkRPTUltcGxlbWVudGF0aW9uIiwgMCwgMCwgMCB9OwogCiBET01ET01JbXBsZW1l
bnRhdGlvbjo6RE9NRE9NSW1wbGVtZW50YXRpb24oRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006
OkRPTUltcGxlbWVudGF0aW9uICZpKQotICA6IGltcGxlbWVudGF0aW9uKGkpIAoteyAKKyAgOiBp
bXBsZW1lbnRhdGlvbihpKQorewogICBzZXRQcm90b3R5cGUoRE9NRE9NSW1wbGVtZW50YXRpb25Q
cm90bzo6c2VsZihleGVjKSk7CiB9CiAKQEAgLTEzMjgsMTMgKzEzMjgsMTMgQEANCiAKIC8qIFNv
dXJjZSBmb3IgRE9NRG9jdW1lbnRUeXBlVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byBy
ZWdlbmVyYXRlLgogQGJlZ2luIERPTURvY3VtZW50VHlwZVRhYmxlIDYKLSAgbmFtZQkJCURPTURv
Y3VtZW50VHlwZTo6TmFtZQkJRG9udERlbGV0ZXxSZWFkT25seQotICBlbnRpdGllcwkJRE9NRG9j
dW1lbnRUeXBlOjpFbnRpdGllcwlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5vdGF0aW9ucwkJRE9N
RG9jdW1lbnRUeXBlOjpOb3RhdGlvbnMJRG9udERlbGV0ZXxSZWFkT25seQorICBuYW1lICAgICAg
ICAgIERPTURvY3VtZW50VHlwZTo6TmFtZSAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGVu
dGl0aWVzICAgICAgRE9NRG9jdW1lbnRUeXBlOjpFbnRpdGllcyAgIERvbnREZWxldGV8UmVhZE9u
bHkKKyAgbm90YXRpb25zICAgICBET01Eb2N1bWVudFR5cGU6Ok5vdGF0aW9ucyAgRG9udERlbGV0
ZXxSZWFkT25seQogIyBET00yCi0gIHB1YmxpY0lkCQlET01Eb2N1bWVudFR5cGU6OlB1YmxpY0lk
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgc3lzdGVtSWQJCURPTURvY3VtZW50VHlwZTo6U3lzdGVt
SWQJRG9udERlbGV0ZXxSZWFkT25seQotICBpbnRlcm5hbFN1YnNldAlET01Eb2N1bWVudFR5cGU6
OkludGVybmFsU3Vic2V0CURvbnREZWxldGV8UmVhZE9ubHkKKyAgcHVibGljSWQgICAgICBET01E
b2N1bWVudFR5cGU6OlB1YmxpY0lkICAgRG9udERlbGV0ZXxSZWFkT25seQorICBzeXN0ZW1JZCAg
ICAgIERPTURvY3VtZW50VHlwZTo6U3lzdGVtSWQgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGlu
dGVybmFsU3Vic2V0ICAgIERPTURvY3VtZW50VHlwZTo6SW50ZXJuYWxTdWJzZXQgRG9udERlbGV0
ZXxSZWFkT25seQogQGVuZAogKi8KIERPTURvY3VtZW50VHlwZTo6RE9NRG9jdW1lbnRUeXBlKEV4
ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpEb2N1bWVudFR5cGUgJmR0KQpAQCAtMTM3MSwxNCAr
MTM3MSwxNCBAQA0KIAogLyogU291cmNlIGZvciBET01OYW1lZE5vZGVNYXBQcm90b1RhYmxlLiBV
c2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01OYW1lZE5vZGVN
YXBQcm90b1RhYmxlIDcKLSAgZ2V0TmFtZWRJdGVtCQlET01OYW1lZE5vZGVNYXA6OkdldE5hbWVk
SXRlbQkJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHNldE5hbWVkSXRlbQkJRE9NTmFtZWROb2Rl
TWFwOjpTZXROYW1lZEl0ZW0JCURvbnREZWxldGV8RnVuY3Rpb24gMQotICByZW1vdmVOYW1lZEl0
ZW0JRE9NTmFtZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0ZW0JRG9udERlbGV0ZXxGdW5jdGlvbiAx
Ci0gIGl0ZW0JCQlET01OYW1lZE5vZGVNYXA6Okl0ZW0JCQlEb250RGVsZXRlfEZ1bmN0aW9uIDEK
KyAgZ2V0TmFtZWRJdGVtICAgICAgRE9NTmFtZWROb2RlTWFwOjpHZXROYW1lZEl0ZW0gICAgICAg
RG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHNldE5hbWVkSXRlbSAgICAgIERPTU5hbWVkTm9kZU1h
cDo6U2V0TmFtZWRJdGVtICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICByZW1vdmVOYW1l
ZEl0ZW0gICBET01OYW1lZE5vZGVNYXA6OlJlbW92ZU5hbWVkSXRlbSAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDEKKyAgaXRlbSAgICAgICAgICBET01OYW1lZE5vZGVNYXA6Okl0ZW0gICAgICAgICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMQogIyBET00yCi0gIGdldE5hbWVkSXRlbU5TCURPTU5hbWVk
Tm9kZU1hcDo6R2V0TmFtZWRJdGVtTlMJCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBzZXROYW1l
ZEl0ZW1OUwlET01OYW1lZE5vZGVNYXA6OlNldE5hbWVkSXRlbU5TCQlEb250RGVsZXRlfEZ1bmN0
aW9uIDEKLSAgcmVtb3ZlTmFtZWRJdGVtTlMJRE9NTmFtZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0
ZW1OUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgZ2V0TmFtZWRJdGVtTlMgICAgRE9NTmFtZWRO
b2RlTWFwOjpHZXROYW1lZEl0ZW1OUyAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHNldE5h
bWVkSXRlbU5TICAgIERPTU5hbWVkTm9kZU1hcDo6U2V0TmFtZWRJdGVtTlMgICAgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQorICByZW1vdmVOYW1lZEl0ZW1OUyBET01OYW1lZE5vZGVNYXA6OlJlbW92
ZU5hbWVkSXRlbU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKIEBlbmQKICovCiBERUZJTkVfUFJP
VE9UWVBFKCJOYW1lZE5vZGVNYXAiLCBET01OYW1lZE5vZGVNYXBQcm90bykKQEAgLTEzODgsOCAr
MTM4OCw4IEBADQogY29uc3QgQ2xhc3NJbmZvIERPTU5hbWVkTm9kZU1hcDo6aW5mbyA9IHsgIk5h
bWVkTm9kZU1hcCIsIDAsIDAsIDAgfTsKIAogRE9NTmFtZWROb2RlTWFwOjpET01OYW1lZE5vZGVN
YXAoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006Ok5hbWVkTm9kZU1hcCAmbSkKLSAgOiBtYXAo
bSkgCi17IAorICA6IG1hcChtKQorewogICBzZXRQcm90b3R5cGUoRE9NTmFtZWROb2RlTWFwUHJv
dG86OnNlbGYoZXhlYykpOwogfQogCkBAIC0xNDU5LDkgKzE0NTksOSBAQA0KIAogLyogU291cmNl
IGZvciBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMi
IHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFibGUgMwot
ICB0YXJnZXQJRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpUYXJnZXQJRG9udERlbGV0ZXxSZWFk
T25seQotICBkYXRhCQlET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OkRhdGEJCURvbnREZWxldGUK
LSAgc2hlZXQJCURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6U2hlZXQJCURvbnREZWxldGV8UmVh
ZE9ubHkKKyAgdGFyZ2V0ICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6VGFyZ2V0ICAgIERv
bnREZWxldGV8UmVhZE9ubHkKKyAgZGF0YSAgICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
RGF0YSAgICAgIERvbnREZWxldGUKKyAgc2hlZXQgICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6U2hlZXQgICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZp
ZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTE0OTksOCArMTQ5OSw4IEBADQogCiAvKiBTb3Vy
Y2UgZm9yIERPTU5vdGF0aW9uVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVy
YXRlLgogQGJlZ2luIERPTU5vdGF0aW9uVGFibGUgMgotICBwdWJsaWNJZAkJRE9NTm90YXRpb246
OlB1YmxpY0lkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgc3lzdGVtSWQJCURPTU5vdGF0aW9uOjpT
eXN0ZW1JZAlEb250RGVsZXRlfFJlYWRPbmx5CisgIHB1YmxpY0lkICAgICAgRE9NTm90YXRpb246
OlB1YmxpY0lkICAgRG9udERlbGV0ZXxSZWFkT25seQorICBzeXN0ZW1JZCAgICAgIERPTU5vdGF0
aW9uOjpTeXN0ZW1JZCAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBET01O
b3RhdGlvbjo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVy
dHlOYW1lKSBjb25zdApAQCAtMTUyNyw5ICsxNTI3LDkgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9N
RW50aXR5VGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2lu
IERPTUVudGl0eVRhYmxlIDIKLSAgcHVibGljSWQJCURPTUVudGl0eTo6UHVibGljSWQJCURvbnRE
ZWxldGV8UmVhZE9ubHkKLSAgc3lzdGVtSWQJCURPTUVudGl0eTo6U3lzdGVtSWQJCURvbnREZWxl
dGV8UmVhZE9ubHkKLSAgbm90YXRpb25OYW1lCQlET01FbnRpdHk6Ok5vdGF0aW9uTmFtZQlEb250
RGVsZXRlfFJlYWRPbmx5CisgIHB1YmxpY0lkICAgICAgRE9NRW50aXR5OjpQdWJsaWNJZCAgICAg
RG9udERlbGV0ZXxSZWFkT25seQorICBzeXN0ZW1JZCAgICAgIERPTUVudGl0eTo6U3lzdGVtSWQg
ICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgbm90YXRpb25OYW1lICAgICAgRE9NRW50aXR5OjpO
b3RhdGlvbk5hbWUgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIFZhbHVlIERPTUVudGl0
eTo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1l
KSBjb25zdApAQCAtMTU2OCw3ICsxNTY4LDcgQEANCiAgICAgcmV0ID0gbmV3IERPTURvY3VtZW50
KGV4ZWMsIG4pOwogCiAgIFZhbHVlIHZhbChyZXQpOwotICAKKwogICAvLyBNYWtlIHN1cmUgdGhl
IGRvY3VtZW50IGlzIGtlcHQgYXJvdW5kIGJ5IHRoZSB3aW5kb3cgb2JqZWN0LCBhbmQgd29ya3Mg
cmlnaHQgd2l0aCB0aGUKICAgLy8gYmFjay9mb3J3YXJkIGNhY2hlLgogICBpZiAobi52aWV3KCkp
IHsKQEAgLTE1ODMsNyArMTU4Myw3IEBADQogCiBib29sIEtKUzo6Y2hlY2tOb2RlU2VjdXJpdHko
RXhlY1N0YXRlICpleGVjLCBjb25zdCBET006Ok5vZGUmIG4pCiB7Ci0gIGlmICghbi5oYW5kbGUo
KSkgCisgIGlmICghbi5oYW5kbGUoKSkKICAgICByZXR1cm4gZmFsc2U7CiAKICAgLy8gQ2hlY2sg
dG8gc2VlIGlmIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGludGVycHJldGVyIGlzIGFsbG93ZWQg
dG8gYWNjZXNzIHRoZSBzcGVjaWZpZWQgbm9kZQpAQCAtMTY2MCwxMyArMTY2MCwxMiBAQA0KIAog
VmFsdWUgS0pTOjpnZXRSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpO
b2RlICZub2RlKQogewotI2lmICFOT0tJQV9DSEFOR0VTICAKICAgICBET006OkhUTUxFbGVtZW50
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhUTUxFbGVtZW50Pihub2RlKTsKIAogICAgIGlm
ICghbm9kZS5pc051bGwoKSkgewogICAgICAgICBpZiAobm9kZS5oYW5kbGUoKS0+aWQoKSA9PSBJ
RF9BUFBMRVQpIHsKICAgICAgICAgICAgIERPTTo6SFRNTEFwcGxldEVsZW1lbnRJbXBsICphcHBs
ZXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NOjpIVE1MQXBwbGV0RWxlbWVudEltcGwgKj4oZWxl
bWVudC5oYW5kbGUoKSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGFwcGxldEVs
ZW1lbnQtPmdldEFwcGxldEluc3RhbmNlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgaW5z
dGFuY2UgaXMgb3duZWQgYnkgdGhlIGFwcGxldCBlbGVtZW50LgogICAgICAgICAgICAgICAgIFJ1
bnRpbWVPYmplY3RJbXAgKmFwcGxldEltcCA9IG5ldyBSdW50aW1lT2JqZWN0SW1wKGFwcGxldEVs
ZW1lbnQtPmdldEFwcGxldEluc3RhbmNlKCksIGZhbHNlKTsKQEAgLTE2NzUsNyArMTY3NCw3IEBA
DQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFuZGxlKCktPmlkKCkgPT0gSURf
RU1CRUQpIHsKICAgICAgICAgICAgIERPTTo6SFRNTEVtYmVkRWxlbWVudEltcGwgKmVtYmVkRWxl
bWVudCA9IHN0YXRpY19jYXN0PERPTTo6SFRNTEVtYmVkRWxlbWVudEltcGwgKj4oZWxlbWVudC5o
YW5kbGUoKSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGVtYmVkRWxlbWVudC0+
Z2V0RW1iZWRJbnN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAgUnVudGltZU9iamVjdEltcCAq
cnVudGltZUltcCA9IG5ldyBSdW50aW1lT2JqZWN0SW1wKGVtYmVkRWxlbWVudC0+Z2V0RW1iZWRJ
bnN0YW5jZSgpLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZhbHVlKHJ1bnRpbWVJ
bXApOwpAQCAtMTY4MywxNCArMTY4MiwxMyBAQA0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlm
IChub2RlLmhhbmRsZSgpLT5pZCgpID09IElEX09CSkVDVCkgewogICAgICAgICAgICAgRE9NOjpI
VE1MT2JqZWN0RWxlbWVudEltcGwgKm9iamVjdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhU
TUxPYmplY3RFbGVtZW50SW1wbCAqPihlbGVtZW50LmhhbmRsZSgpKTsKLSAgICAgICAgICAgIAor
CiAgICAgICAgICAgICBpZiAob2JqZWN0RWxlbWVudC0+Z2V0T2JqZWN0SW5zdGFuY2UoKSkgewog
ICAgICAgICAgICAgICAgIFJ1bnRpbWVPYmplY3RJbXAgKnJ1bnRpbWVJbXAgPSBuZXcgUnVudGlt
ZU9iamVjdEltcChvYmplY3RFbGVtZW50LT5nZXRPYmplY3RJbnN0YW5jZSgpLCBmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZhbHVlKHJ1bnRpbWVJbXApOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQotI2VuZGlmICAgIAogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBy
dW50aW1lIG9iamVjdCByZXR1cm4gdGhlIGEgVmFsdWUgdGhhdCByZXBvcnRzIGlzTnVsbCgpID09
IHRydWUuCiAgICAgcmV0dXJuIFZhbHVlKCk7CiB9CkBAIC0xNzEwLDE4ICsxNzA4LDE4IEBADQog
Y29uc3QgQ2xhc3NJbmZvIE5vZGVDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIk5vZGVDb25zdHJ1Y3Rv
ciIsIDAsICZOb2RlQ29uc3RydWN0b3JUYWJsZSwgMCB9OwogLyogU291cmNlIGZvciBOb2RlQ29u
c3RydWN0b3JUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVn
aW4gTm9kZUNvbnN0cnVjdG9yVGFibGUgMTEKLSAgRUxFTUVOVF9OT0RFCQlET006Ok5vZGU6OkVM
RU1FTlRfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQotICBBVFRSSUJVVEVfTk9ERQlET006Ok5v
ZGU6OkFUVFJJQlVURV9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIFRFWFRfTk9ERQkJRE9N
OjpOb2RlOjpURVhUX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgQ0RBVEFfU0VDVElPTl9O
T0RFCURPTTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFCURvbnREZWxldGV8UmVhZE9ubHkKLSAg
RU5USVRZX1JFRkVSRU5DRV9OT0RFCURPTTo6Tm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFCURv
bnREZWxldGV8UmVhZE9ubHkKLSAgRU5USVRZX05PREUJCURPTTo6Tm9kZTo6RU5USVRZX05PREUJ
CURvbnREZWxldGV8UmVhZE9ubHkKKyAgRUxFTUVOVF9OT0RFICAgICAgRE9NOjpOb2RlOjpFTEVN
RU5UX05PREUgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgQVRUUklCVVRFX05PREUgICAgRE9N
OjpOb2RlOjpBVFRSSUJVVEVfTk9ERSAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIFRFWFRf
Tk9ERSAgICAgRE9NOjpOb2RlOjpURVhUX05PREUgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkK
KyAgQ0RBVEFfU0VDVElPTl9OT0RFICAgIERPTTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFICAg
RG9udERlbGV0ZXxSZWFkT25seQorICBFTlRJVFlfUkVGRVJFTkNFX05PREUgRE9NOjpOb2RlOjpF
TlRJVFlfUkVGRVJFTkNFX05PREUgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBFTlRJVFlfTk9E
RSAgICAgICBET006Ok5vZGU6OkVOVElUWV9OT0RFICAgICAgRG9udERlbGV0ZXxSZWFkT25seQog
ICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgRE9NOjpOb2RlOjpQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREUgRG9udERlbGV0ZXxSZWFkT25seQotICBDT01NRU5UX05PREUJCURPTTo6Tm9k
ZTo6Q09NTUVOVF9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIERPQ1VNRU5UX05PREUJCURP
TTo6Tm9kZTo6RE9DVU1FTlRfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQotICBET0NVTUVOVF9U
WVBFX05PREUJRE9NOjpOb2RlOjpET0NVTUVOVF9UWVBFX05PREUJRG9udERlbGV0ZXxSZWFkT25s
eQotICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIERPTTo6Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIE5PVEFUSU9OX05PREUJCURPTTo6Tm9kZTo6Tk9U
QVRJT05fTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQorICBDT01NRU5UX05PREUgICAgICBET006
Ok5vZGU6OkNPTU1FTlRfTk9ERSAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBET0NVTUVOVF9O
T0RFICAgICBET006Ok5vZGU6OkRPQ1VNRU5UX05PREUgICAgICAgIERvbnREZWxldGV8UmVhZE9u
bHkKKyAgRE9DVU1FTlRfVFlQRV9OT0RFICAgIERPTTo6Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RF
ICAgRG9udERlbGV0ZXxSZWFkT25seQorICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIERPTTo6Tm9k
ZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgRG9udERlbGV0ZXxSZWFkT25seQorICBOT1RBVElP
Tl9OT0RFICAgICBET006Ok5vZGU6Ok5PVEFUSU9OX05PREUgICAgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBOb2RlQ29uc3RydWN0b3I6OnRyeUdldChFeGVjU3RhdGUg
KmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTE3NzcsMjEg
KzE3NzUsMjEgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NRXhjZXB0aW9uQ29uc3RydWN0b3JUYWJs
ZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRXhjZXB0
aW9uQ29uc3RydWN0b3JUYWJsZSAxNQotICBJTkRFWF9TSVpFX0VSUgkJRE9NOjpET01FeGNlcHRp
b246OklOREVYX1NJWkVfRVJSCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIERPTVNUUklOR19TSVpF
X0VSUgkJRE9NOjpET01FeGNlcHRpb246OkRPTVNUUklOR19TSVpFX0VSUglEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIEhJRVJBUkNIWV9SRVFVRVNUX0VSUgkJRE9NOjpET01FeGNlcHRpb246OkhJRVJB
UkNIWV9SRVFVRVNUX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIFdST05HX0RPQ1VNRU5UX0VS
UgkJRE9NOjpET01FeGNlcHRpb246OldST05HX0RPQ1VNRU5UX0VSUglEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIElOVkFMSURfQ0hBUkFDVEVSX0VSUgkJRE9NOjpET01FeGNlcHRpb246OklOVkFMSURf
Q0hBUkFDVEVSX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIE5PX0RBVEFfQUxMT1dFRF9FUlIJ
CURPTTo6RE9NRXhjZXB0aW9uOjpOT19EQVRBX0FMTE9XRURfRVJSCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSCURPTTo6RE9NRXhjZXB0aW9uOjpOT19N
T0RJRklDQVRJT05fQUxMT1dFRF9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBOT1RfRk9VTkRf
RVJSCQkJRE9NOjpET01FeGNlcHRpb246Ok5PVF9GT1VORF9FUlIJCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgTk9UX1NVUFBPUlRFRF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpOT1RfU1VQUE9SVEVE
X0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIElOVVNFX0FUVFJJQlVURV9FUlIJCURPTTo6RE9N
RXhjZXB0aW9uOjpJTlVTRV9BVFRSSUJVVEVfRVJSCURvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5W
QUxJRF9TVEFURV9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX1NUQVRFX0VSUglEb250
RGVsZXRlfFJlYWRPbmx5Ci0gIFNZTlRBWF9FUlIJCQlET006OkRPTUV4Y2VwdGlvbjo6U1lOVEFY
X0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQotICBJTlZBTElEX01PRElGSUNBVElPTl9FUlIJRE9N
OjpET01FeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUglEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIE5BTUVTUEFDRV9FUlIJCQlET006OkRPTUV4Y2VwdGlvbjo6TkFNRVNQQUNFX0VSUgkJ
RG9udERlbGV0ZXxSZWFkT25seQotICBJTlZBTElEX0FDQ0VTU19FUlIJCURPTTo6RE9NRXhjZXB0
aW9uOjpJTlZBTElEX0FDQ0VTU19FUlIJRG9udERlbGV0ZXxSZWFkT25seQorICBJTkRFWF9TSVpF
X0VSUiAgICAgICAgRE9NOjpET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSICAgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICBET006OkRPTUV4Y2Vw
dGlvbjo6RE9NU1RSSU5HX1NJWkVfRVJSICAgRG9udERlbGV0ZXxSZWFkT25seQorICBISUVSQVJD
SFlfUkVRVUVTVF9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpISUVSQVJDSFlfUkVRVUVTVF9F
UlIgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBXUk9OR19ET0NVTUVOVF9FUlIgICAgICAgIERP
TTo6RE9NRXhjZXB0aW9uOjpXUk9OR19ET0NVTUVOVF9FUlIgICBEb250RGVsZXRlfFJlYWRPbmx5
CisgIElOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAgRE9NOjpET01FeGNlcHRpb246OklOVkFMSURf
Q0hBUkFDVEVSX0VSUiAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5PX0RBVEFfQUxMT1dFRF9F
UlIgICAgICAgRE9NOjpET01FeGNlcHRpb246Ok5PX0RBVEFfQUxMT1dFRF9FUlIgIERvbnREZWxl
dGV8UmVhZE9ubHkKKyAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSICAgRE9NOjpET01FeGNl
cHRpb246Ok5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgRG9udERlbGV0ZXxSZWFkT25seQor
ICBOT1RfRk9VTkRfRVJSICAgICAgICAgRE9NOjpET01FeGNlcHRpb246Ok5PVF9GT1VORF9FUlIg
ICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgTk9UX1NVUFBPUlRFRF9FUlIgICAgIERPTTo6
RE9NRXhjZXB0aW9uOjpOT1RfU1VQUE9SVEVEX0VSUiAgICBEb250RGVsZXRlfFJlYWRPbmx5Cisg
IElOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgRE9NOjpET01FeGNlcHRpb246OklOVVNFX0FUVFJJ
QlVURV9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgSU5WQUxJRF9TVEFURV9FUlIgICAgIERP
TTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX1NUQVRFX0VSUiAgICBEb250RGVsZXRlfFJlYWRPbmx5
CisgIFNZTlRBWF9FUlIgICAgICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6U1lOVEFYX0VSUiAg
ICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgRE9N
OjpET01FeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiBEb250RGVsZXRlfFJlYWRP
bmx5CisgIE5BTUVTUEFDRV9FUlIgICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6TkFNRVNQQUNF
X0VSUiAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBJTlZBTElEX0FDQ0VTU19FUlIgICAg
ICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX0FDQ0VTU19FUlIgICBEb250RGVsZXRlfFJl
YWRPbmx5CiBAZW5kCiAqLwogCkBAIC0xODc4LDE2ICsxODc2LDE2IEBADQogICAgICAgRE9NOjpO
b2RlIG5vZGUgPSAqaXQ7CiAgICAgICBET006Ok5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gbm9k
ZS5hdHRyaWJ1dGVzKCk7CiAgICAgICBpZiAoYXR0cmlidXRlcy5pc051bGwoKSkgewotCWNvbnRp
bnVlOworICAgIGNvbnRpbnVlOwogICAgICAgfQogCiAgICAgICBET006Ok5vZGUgaWRBdHRyID0g
YXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oImlkIik7CiAgICAgICBpZiAoaWRBdHRyLmlzTnVsbCgp
KSB7Ci0JY29udGludWU7CisgICAgY29udGludWU7CiAgICAgICB9CiAKICAgICAgIGlmIChpZEF0
dHIubm9kZVZhbHVlKCkgPT0gcHJvcGVydHlOYW1lLnN0cmluZygpKSB7Ci0JcmV0dXJuIGdldERP
TU5vZGUoZXhlYyxub2RlKTsKKyAgICByZXR1cm4gZ2V0RE9NTm9kZShleGVjLG5vZGUpOwogICAg
ICAgfQogICAgIH0KICAgfQpAQCAtMTg5OCwxOCArMTg5NiwxOCBAQA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIERPTUNoYXJhY3RlckRhdGE6OmluZm8gPSB7ICJDaGFy
YWN0ZXJJbXAiLAotCQkJCQkgICZET01Ob2RlOjppbmZvLCAmRE9NQ2hhcmFjdGVyRGF0YVRhYmxl
LCAwIH07CisgICAgICAgICAgICAgICAgICAgICAgJkRPTU5vZGU6OmluZm8sICZET01DaGFyYWN0
ZXJEYXRhVGFibGUsIDAgfTsKIC8qCiBAYmVnaW4gRE9NQ2hhcmFjdGVyRGF0YVRhYmxlIDIKLSAg
ZGF0YQkJRE9NQ2hhcmFjdGVyRGF0YTo6RGF0YQkJRG9udERlbGV0ZQotICBsZW5ndGgJRE9NQ2hh
cmFjdGVyRGF0YTo6TGVuZ3RoCURvbnREZWxldGV8UmVhZE9ubHkKKyAgZGF0YSAgICAgIERPTUNo
YXJhY3RlckRhdGE6OkRhdGEgICAgICBEb250RGVsZXRlCisgIGxlbmd0aCAgICBET01DaGFyYWN0
ZXJEYXRhOjpMZW5ndGggICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogQGJlZ2luIERPTUNo
YXJhY3RlckRhdGFQcm90b1RhYmxlIDcKLSAgc3Vic3RyaW5nRGF0YQlET01DaGFyYWN0ZXJEYXRh
OjpTdWJzdHJpbmdEYXRhCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBhcHBlbmREYXRhCURPTUNo
YXJhY3RlckRhdGE6OkFwcGVuZERhdGEJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGluc2VydERh
dGEJRE9NQ2hhcmFjdGVyRGF0YTo6SW5zZXJ0RGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAg
ZGVsZXRlRGF0YQlET01DaGFyYWN0ZXJEYXRhOjpEZWxldGVEYXRhCURvbnREZWxldGV8RnVuY3Rp
b24gMgotICByZXBsYWNlRGF0YQlET01DaGFyYWN0ZXJEYXRhOjpSZXBsYWNlRGF0YQlEb250RGVs
ZXRlfEZ1bmN0aW9uIDIKKyAgc3Vic3RyaW5nRGF0YSBET01DaGFyYWN0ZXJEYXRhOjpTdWJzdHJp
bmdEYXRhIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBhcHBlbmREYXRhICAgIERPTUNoYXJhY3Rl
ckRhdGE6OkFwcGVuZERhdGEgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGluc2VydERhdGEg
ICAgRE9NQ2hhcmFjdGVyRGF0YTo6SW5zZXJ0RGF0YSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIK
KyAgZGVsZXRlRGF0YSAgICBET01DaGFyYWN0ZXJEYXRhOjpEZWxldGVEYXRhICAgIERvbnREZWxl
dGV8RnVuY3Rpb24gMgorICByZXBsYWNlRGF0YSAgIERPTUNoYXJhY3RlckRhdGE6OlJlcGxhY2VE
YXRhICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiBAZW5kCiAqLwogREVGSU5FX1BST1RPVFlQRSgi
RE9NQ2hhcmFjdGVyRGF0YSIsRE9NQ2hhcmFjdGVyRGF0YVByb3RvKQpAQCAtMTkxNywxMyArMTkx
NSwxMyBAQA0KIElNUExFTUVOVF9QUk9UT1RZUEVfV0lUSF9QQVJFTlQoRE9NQ2hhcmFjdGVyRGF0
YVByb3RvLERPTUNoYXJhY3RlckRhdGFQcm90b0Z1bmMsIERPTU5vZGVQcm90bykKIAogRE9NQ2hh
cmFjdGVyRGF0YTo6RE9NQ2hhcmFjdGVyRGF0YShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6
Q2hhcmFjdGVyRGF0YSAmZCkKLSA6IERPTU5vZGUoZCkgCisgOiBET01Ob2RlKGQpCiB7CiAgIHNl
dFByb3RvdHlwZShET01DaGFyYWN0ZXJEYXRhUHJvdG86OnNlbGYoZXhlYykpOwogfQogCiBET01D
aGFyYWN0ZXJEYXRhOjpET01DaGFyYWN0ZXJEYXRhKGNvbnN0IERPTTo6Q2hhcmFjdGVyRGF0YSAm
ZCkKLSA6IERPTU5vZGUoZCkgCisgOiBET01Ob2RlKGQpCiB7CiB9CiAKQEAgLTE5NzQsOSArMTk3
Miw5IEBADQogICAgICAgICBET006Ol9leGNlcHRpb25jb2RlID0gRE9NRXhjZXB0aW9uOjpJTkRF
WF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwogICAgICAgfQotI2Vsc2Ug
ICAgICAKKyNlbHNlCiAgICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246OklO
REVYX1NJWkVfRVJSKTsKLSNlbmRpZiAgICAgICAgCisjZW5kaWYKICAgICAgIHJldHVybiBnZXRT
dHJpbmdPck51bGwoZGF0YS5zdWJzdHJpbmdEYXRhKGFyZ3NbMF0udG9JbnQzMihleGVjKSwgY291
bnQpKTsKICAgICB9CiAgICAgY2FzZSBET01DaGFyYWN0ZXJEYXRhOjpBcHBlbmREYXRhOgpAQCAt
MTk5Myw5ICsxOTkxLDkgQEANCiAgICAgICAgIERPTTo6X2V4Y2VwdGlvbmNvZGUgPSBET01FeGNl
cHRpb246OklOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAg
ICB9Ci0jZWxzZSAgICAgCisjZWxzZQogICAgICAgICB0aHJvdyBET01FeGNlcHRpb24oRE9NRXhj
ZXB0aW9uOjpJTkRFWF9TSVpFX0VSUik7Ci0jZW5kaWYgIAorI2VuZGlmCiAgICAgICBkYXRhLmRl
bGV0ZURhdGEoYXJnc1swXS50b0ludDMyKGV4ZWMpLCBjb3VudCk7CiAgICAgICByZXR1cm4gVW5k
ZWZpbmVkKCk7CiAgICAgfQpAQCAtMjAwNyw5ICsyMDA1LDkgQEANCiAgICAgICAgIERPTTo6X2V4
Y2VwdGlvbmNvZGUgPSBET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1
cm4gVW5kZWZpbmVkKCk7CiAgICAgICB9Ci0jZWxzZSAgICAgIAorI2Vsc2UKICAgICAgICAgdGhy
b3cgRE9NRXhjZXB0aW9uKERPTUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlIpOwotI2VuZGlmICAK
KyNlbmRpZgogICAgICAgZGF0YS5yZXBsYWNlRGF0YShhcmdzWzBdLnRvSW50MzIoZXhlYyksIGNv
dW50LCBhcmdzWzJdLnRvU3RyaW5nKGV4ZWMpLnN0cmluZygpKTsKICAgICAgIHJldHVybiBVbmRl
ZmluZWQoKTsKICAgICB9CkBAIC0yMDIxLDEwICsyMDE5LDEwIEBADQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBjb25zdCBDbGFzc0luZm8gRE9NVGV4dDo6aW5mbyA9IHsgIlRleHQiLAotCQkJCSAm
RE9NQ2hhcmFjdGVyRGF0YTo6aW5mbywgMCwgMCB9OworICAgICAgICAgICAgICAgICAmRE9NQ2hh
cmFjdGVyRGF0YTo6aW5mbywgMCwgMCB9OwogLyoKIEBiZWdpbiBET01UZXh0UHJvdG9UYWJsZSAx
Ci0gIHNwbGl0VGV4dAlET01UZXh0OjpTcGxpdFRleHQJRG9udERlbGV0ZXxGdW5jdGlvbiAxCisg
IHNwbGl0VGV4dCBET01UZXh0OjpTcGxpdFRleHQgIERvbnREZWxldGV8RnVuY3Rpb24gMQogQGVu
ZAogKi8KIERFRklORV9QUk9UT1RZUEUoIkRPTVRleHQiLERPTVRleHRQcm90bykKQEAgLTIwMzIs
OCArMjAzMCw4IEBADQogSU1QTEVNRU5UX1BST1RPVFlQRV9XSVRIX1BBUkVOVChET01UZXh0UHJv
dG8sRE9NVGV4dFByb3RvRnVuYyxET01DaGFyYWN0ZXJEYXRhUHJvdG8pCiAKIERPTVRleHQ6OkRP
TVRleHQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006OlRleHQgJnQpCi0gIDogRE9NQ2hhcmFj
dGVyRGF0YSh0KSAKLXsgCisgIDogRE9NQ2hhcmFjdGVyRGF0YSh0KQorewogICBzZXRQcm90b3R5
cGUoRE9NVGV4dFByb3RvOjpzZWxmKGV4ZWMpKTsKIH0KIApJbmRleDogV2ViQ29yZS9raHRtbC9l
Y21hL2tqc193aW5kb3cuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tq
c193aW5kb3cuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pz
X3dpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMjIsNiArMzIyLDkgQEANCiAgICwgaGlz
dG9yeSgwKQogICAsIGZyYW1lcygwKQogICAsIGxvYygwKQorI2lmZGVmIFJEX0JST1dTRVJfV0lE
R0VUUworICAsIG1fd2lkZ2V0KDApCisjZW5kaWYKICAgLCBtX3NlbGVjdGlvbigwKQogICAsIG1f
bG9jYXRpb25iYXIoMCkKICAgLCBtX21lbnViYXIoMCkKQEAgLTQ4Myw2ICs0ODYsMTAgQEANCiAg
ICAgbV9zdGF0dXNiYXItPm1hcmsoKTsKICAgaWYgKG1fdG9vbGJhciAmJiAhbV90b29sYmFyLT5t
YXJrZWQoKSkKICAgICBtX3Rvb2xiYXItPm1hcmsoKTsKKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdF
VFMKKyAgaWYgKG1fd2lkZ2V0ICYmICFtX3dpZGdldC0+bWFya2VkKCkpCisgICAgbV93aWRnZXQt
Pm1hcmsoKTsKKyNlbmRpZgogfQogCiBVU3RyaW5nIFdpbmRvdzo6dG9TdHJpbmcoRXhlY1N0YXRl
ICopIGNvbnN0CkBAIC04MDcsNiArODE0LDEyIEBADQogI2VuZGlmCiAgICAgY2FzZSBMb2NhdGlv
bmJhcjoKICAgICAgIHJldHVybiBWYWx1ZShsb2NhdGlvbmJhcihleGVjKSk7CisjaWZkZWYgUkRf
QlJPV1NFUl9XSURHRVRTCisgICAgY2FzZSBfV2lkZ2V0OgorICAgICAgICByZXR1cm4gVmFsdWUo
bV93aWRnZXQgPyBtX3dpZGdldCA6CisgICAgICAgICAgICAgICAgICAgKGNvbnN0X2Nhc3Q8V2lu
ZG93Kj4odGhpcyktPm1fd2lkZ2V0ID0gS1dRKG1fcGFydCktPmNyZWF0ZVdpZGdldE9iamVjdChl
eGVjKSkpOworCisjZW5kaWYKICAgICBjYXNlIE1lbnViYXI6CiAgICAgICByZXR1cm4gVmFsdWUo
bWVudWJhcihleGVjKSk7CiAgICAgY2FzZSBPZmZzY3JlZW5CdWZmZXJpbmc6CkluZGV4OiBXZWJD
b3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRt
bC9lY21hL2tqc193aW5kb3cuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9raHRtbC9l
Y21hL2tqc193aW5kb3cuaAkod29ya2luZyBjb3B5KQ0KQEAgLTEwMSwxMyArMTAxLDEzIEBADQog
ICAgIGJvb2wgaGFzVGltZW91dHMoKTsKICAgICBRTWFwPGludCwgU2NoZWR1bGVkQWN0aW9uKj4g
KnBhdXNlVGltZW91dHMoY29uc3Qgdm9pZCAqa2V5KTsKICAgICB2b2lkIHJlc3VtZVRpbWVvdXRz
KFFNYXA8aW50LCBTY2hlZHVsZWRBY3Rpb24qPipzYSwgY29uc3Qgdm9pZCAqa2V5KTsKLSAgICAK
KwogICAgIEtKUzo6SW50ZXJwcmV0ZXIgKmludGVycHJldGVyKCkgY29uc3Q7CiAKICAgICBzdGF0
aWMgYm9vbCBpc1NhZmVTY3JpcHQgKGNvbnN0IEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXIgKm9yaWdp
biwgY29uc3QgS0pTOjpTY3JpcHRJbnRlcnByZXRlciAqdGFyZ2V0KTsKICNlbmRpZgogICAgIHZv
aWQgc2NoZWR1bGVDbG9zZSgpOwotICAgICAgICAKKwogICAgIGJvb2wgaXNTYWZlU2NyaXB0KEV4
ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CiAgICAgTG9jYXRpb24gKmxvY2F0aW9uKCkgY29uc3Q7CiAg
ICAgU2VsZWN0aW9uICpzZWxlY3Rpb24oKSBjb25zdDsKQEAgLTE0MSwxMyArMTQxLDE3IEBADQog
ICAgICAgICAgICBTY3JlZW5Ub3AsIFNjcmVlbkxlZnQsCiAgICAgICAgICAgIFNjcm9sbFRvLCBT
Y3JvbGxYLCBTY3JvbGxZLCBNb3ZlQnksIE1vdmVUbywgUmVzaXplQnksIFJlc2l6ZVRvLCBTZWxm
LCBfV2luZG93LCBUb3AsIF9TY3JlZW4sCiAgICAgICAgICAgIEltYWdlLCBPcHRpb24sIEFsZXJ0
LCBDb25maXJtLCBQcm9tcHQsIE9wZW4sIFByaW50LCBTZXRUaW1lb3V0LCBDbGVhclRpbWVvdXQs
Ci0gICAgICAgICAgIEZvY3VzLCBHZXRTZWxlY3Rpb24sIEJsdXIsIENsb3NlLCBTZXRJbnRlcnZh
bCwgQ2xlYXJJbnRlcnZhbCwgQ2FwdHVyZUV2ZW50cywgCisgICAgICAgICAgIEZvY3VzLCBHZXRT
ZWxlY3Rpb24sIEJsdXIsIENsb3NlLCBTZXRJbnRlcnZhbCwgQ2xlYXJJbnRlcnZhbCwgQ2FwdHVy
ZUV2ZW50cywKICAgICAgICAgICAgUmVsZWFzZUV2ZW50cywgQWRkRXZlbnRMaXN0ZW5lciwgUmVt
b3ZlRXZlbnRMaXN0ZW5lciwgWE1MSHR0cFJlcXVlc3QsIFhNTFNlcmlhbGl6ZXIsIERPTVBhcnNl
ciwKLSAgICAgT25hYm9ydCwgT25ibHVyLCBPbmNoYW5nZSwgT25jbGljaywgT25kYmxjbGljaywg
T25kcmFnZHJvcCwgT25lcnJvciwgCisgICAgIE9uYWJvcnQsIE9uYmx1ciwgT25jaGFuZ2UsIE9u
Y2xpY2ssIE9uZGJsY2xpY2ssIE9uZHJhZ2Ryb3AsIE9uZXJyb3IsCiAgICAgIE9uZm9jdXMsIE9u
a2V5ZG93biwgT25rZXlwcmVzcywgT25rZXl1cCwgT25sb2FkLCBPbm1vdXNlZG93biwgT25tb3Vz
ZW1vdmUsCiAgICAgICAgICAgIE9ubW91c2VvdXQsIE9ubW91c2VvdmVyLCBPbm1vdXNldXAsIE9u
V2luZG93TW91c2VXaGVlbCwgT25tb3ZlLCBPbnJlc2V0LCBPbnJlc2l6ZSwgT25zY3JvbGwsIE9u
c2VhcmNoLAogICAgICAgICAgICBPbnNlbGVjdCwgT25zdWJtaXQsIE9udW5sb2FkLCBPbmJlZm9y
ZXVubG9hZCwKLSAgICAgICAgICAgU3RhdHVzYmFyLCBUb29sYmFyLCBGcmFtZUVsZW1lbnQsIFNo
b3dNb2RhbERpYWxvZyB9OworICAgICAgICAgICBTdGF0dXNiYXIsIFRvb2xiYXIsIEZyYW1lRWxl
bWVudCwgU2hvd01vZGFsRGlhbG9nCisjaWZkZWYgTk9LSUFfQ0hBTkdFUworICAgICAgICAgICAs
X1dpZGdldAorI2VuZGlmCisgICAgICAgICAgIH07CiAgIHByb3RlY3RlZDoKICAgICBWYWx1ZSBn
ZXRMaXN0ZW5lcihFeGVjU3RhdGUgKmV4ZWMsIGludCBldmVudElkKSBjb25zdDsKICAgICB2b2lk
IHNldExpc3RlbmVyKEV4ZWNTdGF0ZSAqZXhlYywgaW50IGV2ZW50SWQsIFZhbHVlIGZ1bmMpOwpA
QCAtMTU1LDYgKzE1OSw5IEBADQogICAgIHZvaWQgdXBkYXRlTGF5b3V0KGJvb2wgaWdub3JlU3R5
bGVzaGVldHMgPSB0cnVlKSBjb25zdDsKIAogICAgIFFHdWFyZGVkUHRyPEtIVE1MUGFydD4gbV9w
YXJ0OworI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUworICAgIE9iamVjdEltcCAqbV93aWRnZXQ7
CisjZW5kaWYKICAgICBTY3JlZW4gKnNjcmVlbjsKICAgICBIaXN0b3J5ICpoaXN0b3J5OwogICAg
IEZyYW1lQXJyYXkgKmZyYW1lczsKQEAgLTI0MSw4ICsyNDgsOCBAQA0KICAgICB2aXJ0dWFsIHZv
aWQgcHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBj
b25zdCBWYWx1ZSAmdmFsdWUsIGludCBhdHRyID0gTm9uZSk7CiAgICAgdmlydHVhbCBWYWx1ZSB0
b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIFR5cGUgcHJlZmVycmVkKSBjb25zdDsKICAgICB2
aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlICpleGVjKSBjb25zdDsKLSAgICBlbnVt
IHsgQW5jaG9yTm9kZSwgQW5jaG9yT2Zmc2V0LCBGb2N1c05vZGUsIEZvY3VzT2Zmc2V0LCBCYXNl
Tm9kZSwgQmFzZU9mZnNldCwgRXh0ZW50Tm9kZSwgRXh0ZW50T2Zmc2V0LCAKLSAgICAgICAgICAg
SXNDb2xsYXBzZWQsIF9UeXBlLCBFcXVhbEVxdWFsLCBDb2xsYXBzZSwgQ29sbGFwc2VUb0VuZCwg
Q29sbGFwc2VUb1N0YXJ0LCBFbXB0eSwgVG9TdHJpbmcsIAorICAgIGVudW0geyBBbmNob3JOb2Rl
LCBBbmNob3JPZmZzZXQsIEZvY3VzTm9kZSwgRm9jdXNPZmZzZXQsIEJhc2VOb2RlLCBCYXNlT2Zm
c2V0LCBFeHRlbnROb2RlLCBFeHRlbnRPZmZzZXQsCisgICAgICAgICAgIElzQ29sbGFwc2VkLCBf
VHlwZSwgRXF1YWxFcXVhbCwgQ29sbGFwc2UsIENvbGxhcHNlVG9FbmQsIENvbGxhcHNlVG9TdGFy
dCwgRW1wdHksIFRvU3RyaW5nLAogICAgICAgICAgICBTZXRCYXNlQW5kRXh0ZW50LCBTZXRQb3Np
dGlvbiwgTW9kaWZ5IH07CiAgICAgS0hUTUxQYXJ0ICpwYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9w
YXJ0OyB9CiAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5sdXQu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oCShy
ZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5sdXQuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTI5LDEwICsyOSwxMCBAQA0KICAgIHsgIkNTU1J1bGUiLCBXaW5k
b3c6OkNTU1J1bGUsIERvbnREZWxldGUsIDAsICZXaW5kb3dUYWJsZUVudHJpZXNbMTEyXSB9LAog
ICAgeyAibGVuZ3RoIiwgV2luZG93OjpMZW5ndGgsIERvbnREZWxldGV8UmVhZE9ubHksIDAsIDAg
fSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9LAorICAgeyAid2lkZ2V0IiwgV2luZG93OjpfV2lkZ2V0
LCBEb250RGVsZXRlfEZ1bmN0aW9uLCAwLCAwIH0sCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwKICAg
IHsgMCwgMCwgMCwgMCwgMCB9LAogICAgeyAwLCAwLCAwLCAwLCAwIH0sCi0gICB7IDAsIDAsIDAs
IDAsIDAgfSwKICAgIHsgInByaW50IiwgV2luZG93OjpQcmludCwgRG9udERlbGV0ZXxGdW5jdGlv
biwgMiwgJldpbmRvd1RhYmxlRW50cmllc1sxMTFdIH0sCiAgICB7ICJvcGVuZXIiLCBXaW5kb3c6
Ok9wZW5lciwgRG9udERlbGV0ZXxSZWFkT25seSwgMCwgMCB9LAogICAgeyAicGFyZW50IiwgV2lu
ZG93OjpQYXJlbnQsIERvbnREZWxldGV8UmVhZE9ubHksIDAsIDAgfSwKSW5kZXg6IFdlYkNvcmUv
a2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9r
aHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNv
cmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTk5
LDcgKzE5OSw2IEBADQogfQogCiAjaWYgQVBQTEVfQ0hBTkdFUwotI2lmICFOT0tJQV9DSEFOR0VT
CiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpnZXRBcHBs
ZXRJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgS0hUTUxQYXJ0KiBwYXJ0ID0gZ2V0RG9jdW1lbnQo
KS0+cGFydCgpOwpAQCAtMjA4LDcgKzIwNyw3IEBADQogCiAgICAgaWYgKGFwcGxldEluc3RhbmNl
KQogICAgICAgICByZXR1cm4gYXBwbGV0SW5zdGFuY2U7Ci0KKyNpZiAhTk9LSUFfQ0hBTkdFUwog
ICAgIFJlbmRlckFwcGxldCAqciA9IHN0YXRpY19jYXN0PFJlbmRlckFwcGxldCo+KG1fcmVuZGVy
KTsKICAgICBpZiAocikgewogICAgICAgICByLT5jcmVhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpOwpA
QCAtMjE5LDkgKzIxOCw5IEBADQogICAgICAgICAgICAgYXBwbGV0SW5zdGFuY2UgPSBLV1EocGFy
dCktPmdldEFwcGxldEluc3RhbmNlRm9yVmlldygoTlNWaWV3ICopX3ZpZXcpOwogICAgICAgICB9
CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGFwcGxldEluc3RhbmNlOwogfQotI2VuZGlmCiAK
IHZvaWQgSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpjbG9zZVJlbmRlcmVyKCkKIHsKQEAgLTI0Myw5
ICsyNDIsNyBAQA0KIAogSFRNTEVtYmVkRWxlbWVudEltcGw6OkhUTUxFbWJlZEVsZW1lbnRJbXBs
KERvY3VtZW50UHRyICpkb2MpCiAgICAgOiBIVE1MRWxlbWVudEltcGwoZG9jKQotI2lmICFOT0tJ
QV9DSEFOR0VTCiAgICAgLCBlbWJlZEluc3RhbmNlKDApCi0jZW5kaWYKIHsKICNpZiBOT0tJQV9D
SEFOR0VTCiAgIG5lZWRXaWRnZXRVcGRhdGUgPSBmYWxzZTsKQEAgLTI2MSw3ICsyNTgsNyBAQA0K
ICAgICByZXR1cm4gSURfRU1CRUQ7CiB9CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9D
SEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKkhUTUxF
bWJlZEVsZW1lbnRJbXBsOjpnZXRFbWJlZEluc3RhbmNlKCkgY29uc3QKIHsKICAgICBLSFRNTFBh
cnQqIHBhcnQgPSBnZXREb2N1bWVudCgpLT5wYXJ0KCk7CkBAIC0yNzcsMTAgKzI3NCwxNyBAQA0K
ICAgICAgICAgICAgIC8vIENhbGwgaW50byB0aGUgcGFydCAoYW5kIG92ZXIgdGhlIGJyaWRnZSkg
dG8gcHVsbCB0aGUgQmluZGluZ3M6Okluc3RhbmNlCiAgICAgICAgICAgICAvLyBmcm9tIHRoZSBn
dXRzIG9mIHRoZSBKYXZhIFZNLgogICAgICAgICAgICAgdm9pZCAqX3ZpZXcgPSByLT53aWRnZXQo
KS0+Z2V0VmlldygpOworI2lmIE5PS0lBX0NIQU5HRVMKKyAgICAgICAgICAgIGVtYmVkSW5zdGFu
Y2UgPSBLV1EocGFydCktPmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3KChNV2ViQ29yZVdpZGdldCAq
KV92aWV3KTsKKyAgICAgICAgICAgIC8vIEFwcGxldCBtYXkgc3BlY2lmaWVkIHdpdGggPGVtYmVk
PiB0YWcuCisgICAgICAgICAgICBpZiAoIWVtYmVkSW5zdGFuY2UpCisgICAgICAgICAgICAgICAg
ZW1iZWRJbnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3KChNV2Vi
Q29yZVdpZGdldCAqKV92aWV3KTsKKyNlbHNlCiAgICAgICAgICAgICBlbWJlZEluc3RhbmNlID0g
S1dRKHBhcnQpLT5nZXRFbWJlZEluc3RhbmNlRm9yVmlldygoTlNWaWV3ICopX3ZpZXcpOwogICAg
ICAgICAgICAgLy8gQXBwbGV0IG1heSBzcGVjaWZpZWQgd2l0aCA8ZW1iZWQ+IHRhZy4KICAgICAg
ICAgICAgIGlmICghZW1iZWRJbnN0YW5jZSkKICAgICAgICAgICAgICAgICBlbWJlZEluc3RhbmNl
ID0gS1dRKHBhcnQpLT5nZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcoKE5TVmlldyAqKV92aWV3KTsK
KyNlbmRpZgogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBlbWJlZEluc3RhbmNlOwpAQCAt
NTY4LDcgKzU3Miw3IEBADQogICAgIHJldHVybiBJRF9PQkpFQ1Q7CiB9CiAKLSNpZiBBUFBMRV9D
SEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2UgKkhUTUxPYmplY3RFbGVtZW50SW1wbDo6Z2V0T2JqZWN0SW5zdGFuY2UoKSBj
b25zdAogewogICAgIEtIVE1MUGFydCogcGFydCA9IGdldERvY3VtZW50KCktPnBhcnQoKTsKQEAg
LTU4MSw3ICs1ODUsMTEgQEANCiAgICAgaWYgKFJlbmRlck9iamVjdCAqciA9IG1fcmVuZGVyKSB7
CiAgICAgICAgIGlmIChyLT5pc1dpZGdldCgpKSB7CiAgICAgICAgICAgICBpZiAoUVdpZGdldCAq
d2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyV2lkZ2V0ICo+KHIpLT53aWRnZXQoKSkgeworI2lm
IE5PS0lBX0NIQU5HRVMgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKE1XZWJD
b3JlV2lkZ2V0ICp2aWV3ID0gd2lkZ2V0LT5nZXRWaWV3KCkpICB7CisjZWxzZQogICAgICAgICAg
ICAgICAgIGlmIChOU1ZpZXcgKnZpZXcgPSB3aWRnZXQtPmdldFZpZXcoKSkgIHsKKyNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGludG8gdGhlIHBhcnQgKGFuZCBvdmVyIHRoZSBi
cmlkZ2UpIHRvIHB1bGwgdGhlIEJpbmRpbmdzOjpJbnN0YW5jZQogICAgICAgICAgICAgICAgICAg
ICAvLyBmcm9tIHRoZSBndXRzIG9mIHRoZSBwbHVnaW4uCiAgICAgICAgICAgICAgICAgICAgIG9i
amVjdEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRPYmplY3RJbnN0YW5jZUZvclZpZXcodmlldyk7
CkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmgJKHJldmlzaW9uIDE3MDY5
KQ0KKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTY0LDE5ICs2NCwxNiBAQA0KICNpZiBBUFBMRV9DSEFOR0VTCiAgICAgdmlydHVhbCBi
b29sIGFsbFBhcmFtc0F2YWlsYWJsZSgpOwogICAgIHZvaWQgc2V0dXBBcHBsZXQoKSBjb25zdDsK
LSNpZiAhTk9LSUFfQ0hBTkdFUworCiAgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEFw
cGxldEluc3RhbmNlKCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAg
a2h0bWw6OlZBbGlnbiB2YWxpZ247CiAKIHByaXZhdGU6CiAjaWYgQVBQTEVfQ0hBTkdFUwotI2lm
ICFOT0tJQV9DSEFOR0VTCiAgICAgbXV0YWJsZSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqYXBw
bGV0SW5zdGFuY2U7Ci0jZW5kaWYKICAgICBib29sIG1fYWxsUGFyYW1zQXZhaWxhYmxlOwogI2Vu
ZGlmCiB9OwpAQCAtMTEzLDcgKzExMCw3IEBADQogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50SW1wbCAqZXZ0KTsKICNlbmRpZgogCi0jaWYgQVBQTEVfQ0hBTkdFUyAm
JiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICAgICBLSlM6OkJpbmRpbmdzOjpJ
bnN0YW5jZSAqZ2V0RW1iZWRJbnN0YW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTEyNCw3ICsx
MjEsNyBAQA0KICAgYm9vbCBuZWVkV2lkZ2V0VXBkYXRlOwogICAgIEhUTUxJbWFnZUxvYWRlciog
bV9pbWFnZUxvYWRlcjsKICNlbmRpZgotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5H
RVMKKyNpZiBBUFBMRV9DSEFOR0VTCiBwcml2YXRlOgogICAgIG11dGFibGUgS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2UgKmVtYmVkSW5zdGFuY2U7CiAjZW5kaWYKQEAgLTE4Niw3ICsxODMsNyBAQA0K
IAogICAgIHZvaWQgcmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CiAKLSNpZiBBUFBMRV9DSEFOR0VT
ICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogICAgIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlICpnZXRPYmplY3RJbnN0YW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTE5Nyw3
ICsxOTQsNyBAQA0KICAgICBib29sIG1fdXNlRmFsbGJhY2tDb250ZW50IDogMTsKICAgICBIVE1M
SW1hZ2VMb2FkZXIqIG1faW1hZ2VMb2FkZXI7CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJ
QV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogcHJpdmF0ZToKICAgICBtdXRhYmxlIEtKUzo6
QmluZGluZ3M6Okluc3RhbmNlICpvYmplY3RJbnN0YW5jZTsKICNlbmRpZgpJbmRleDogV2ViQ29y
ZS9rd3EvS1dRS0hUTUxQYXJ0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva3dxL0tXUUtI
VE1MUGFydC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFy
dC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02Miw2ICs2Miw4IEBADQogI2luY2x1ZGUgImtqc193
aW5kb3cuaCIKICNlbmRpZgogCisjaW5jbHVkZSAicHJvdGVjdC5oIgorI2luY2x1ZGUgImtqc193
aW5kb3cuaCIKICNpbmNsdWRlICJyZW5kZXJfY2FudmFzLmgiCiAjaW5jbHVkZSAicmVuZGVyX2Zy
YW1lcy5oIgogI2luY2x1ZGUgInJlbmRlcl9pbWFnZS5oIgpAQCAtMjE5LDEwICsyMjEsOSBAQA0K
ICAgICAsIF91c2VzSW5hY3RpdmVUZXh0QmFja2dyb3VuZENvbG9yKGZhbHNlKQogICAgICwgX3No
b3dzRmlyc3RSZXNwb25kZXIodHJ1ZSkKICAgICAsIF9kcmF3U2VsZWN0aW9uT25seShmYWxzZSkK
LSNpZiAhS0hUTUxfTk9fU0NSSVBUSU5HCi0vLyAgICAsIF9iaW5kaW5nUm9vdCgwKQorICAgICwg
X3dpbmRvd1NjcmlwdE5QT2JqZWN0KDApCisgICAgLCBfYmluZGluZ1Jvb3QoMCkKICAgICAsIF93
aW5kb3dTY3JpcHRPYmplY3QoMCkKLSNlbmRpZgogLy8gICAgLCBfZHJhZ1NyYygwKQogLy8gICAg
LCBfZHJhZ0NsaXBib2FyZCgwKQogICAgICwgX2VsZW1lbnRUb0RyYXcoMCkKQEAgLTc0OSw3ICs3
NTAsNyBAQA0KICAgICAvLyBGSVhNRTogRnJhbWUgdGFyZ2V0aW5nIGlzIG9ubHkgb25lIG9mIHRo
ZSB3YXlzIHRoZSBzdWJtaXNzaW9uIGNvdWxkIGVuZCB1cCBkb2luZyBzb21ldGhpbmcgb3RoZXIK
ICAgICAvLyB0aGFuIHJlcGxhY2luZyB0aGlzIGZyYW1lJ3MgY29udGVudCwgc28gdGhpcyBjaGVj
ayBpcyBmbGF3ZWQuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgY2hlY2sgaXMgaGFyZGx5CiAgICAg
Ly8gbmVlZGVkIGFueSBtb3JlIG5vdyB0aGF0IHdlIHJlc2V0IF9zdWJtaXR0ZWRGb3JtVVJMIG9u
IGVhY2ggbW91c2Ugb3Iga2V5IGRvd24gZXZlbnQuCi0gICAgCisKICAgICBDV2ViQ29yZUJyaWRn
ZSAqdGFyZ2V0ID0gYXJncy5mcmFtZU5hbWUuaXNFbXB0eSgpID8gX2JyaWRnZSA6IF9icmlkZ2Ut
PkNsaWVudCgpLkZpbmRGcmFtZU5hbWVkKGFyZ3MuZnJhbWVOYW1lLkRlcygpKTsKICAgICBLSFRN
TFBhcnQgKnRhcmdldFBhcnQgPSB0YXJnZXQtPlBhcnQoKTsKICAgICBib29sIHdpbGxSZXBsYWNl
VGhpc0ZyYW1lID0gZmFsc2U7CkBAIC03NTksNyArNzYwLDcgQEANCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmICh3aWxsUmVwbGFjZVRoaXNGcmFt
ZSkgewogICAgICAgICBpZiAoX3N1Ym1pdHRlZEZvcm1VUkwgPT0gdXJsKSB7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMjYwLDggKzEyNjEsNyBAQA0KICAgfQogfQogCi0jaWYgIUtIVE1MX05P
X1NDUklQVElORwotLypLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpLV1FLSFRNTFBhcnQ6OmJp
bmRpbmdSb290T2JqZWN0KCkKK0tKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKktXUUtIVE1MUGFy
dDo6YmluZGluZ1Jvb3RPYmplY3QoKQogewogICAgIGlmICghX2JpbmRpbmdSb290KSB7CiAgICAg
ICAgIF9iaW5kaW5nUm9vdCA9IG5ldyBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0KDApOyAgICAv
LyBUaGUgcm9vdCBnZXRzIGRlbGV0ZWQgYnkgSmF2YVNjcmlwdENvcmUuCkBAIC0xMjczLDcgKzEy
NzMsOCBAQA0KICAgICByZXR1cm4gX2JpbmRpbmdSb290OwogfQogCi1XZWJTY3JpcHRPYmplY3Qg
KktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0T2JqZWN0KCkKKworLypXZWJTY3JpcHRPYmplY3Qg
KktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0T2JqZWN0KCkKIHsKICAgICBpZiAoIV93aW5kb3dT
Y3JpcHRPYmplY3QpIHsKICAgICAgICAgS0pTOjpPYmplY3RJbXAgKndpbiA9IHN0YXRpY19jYXN0
PEtKUzo6T2JqZWN0SW1wICo+KEtKUzo6V2luZG93OjpyZXRyaWV2ZVdpbmRvdyh0aGlzKSk7CkBA
IC0xMjgyLDcgKzEyODMsNiBAQA0KIAogICAgIHJldHVybiBfd2luZG93U2NyaXB0T2JqZWN0Owog
fSovCi0jZW5kaWYKIAogdm9pZCBLV1FLSFRNTFBhcnQ6OnBhcnRDbGVhcmVkSW5CZWdpbigpCiB7
CkBAIC0yOTU5LDQ2ICsyOTU5LDQ2IEBADQogCiB2b2lkIEtXUUtIVE1MUGFydDo6Z2V0UmVuZGVy
VGV4dFJlY3RBcnJheShjb25zdCBURGVzQyYgYVRleHRFbnRyeSwgY29uc3QgRE9NOjpOb2RlJiBh
Tm9kZSwgUkFycmF5PFRSZWN0PiYgYUVudHJ5UmVjdExpc3QpCiB7Ci0gIAotICAgIFFTdHJpbmcg
dGFyZ2V0ID0gUVN0cmluZzo6RnJvbURlcyhhVGV4dEVudHJ5KTsgICAgCi0gICAgCisKKyAgICBR
U3RyaW5nIHRhcmdldCA9IFFTdHJpbmc6OkZyb21EZXMoYVRleHRFbnRyeSk7CisKICAgICBjb25z
dCBsb25nIHN0YXJ0ID0gMDsKLSAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nh
c3Q8UmVuZGVyVGV4dCAqPihhTm9kZS5oYW5kbGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgICAgICAK
KyAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihh
Tm9kZS5oYW5kbGUoKS0+cmVuZGVyZXIoKSk7CiAgIGNvbnN0IGxvbmcgb2Zmc2V0ID0gdGV4dFJl
bmRlcmVyLT5sZW5ndGgoKTsKLSAgICBSYW5nZSBzZWFyY2hSYW5nZShhTm9kZSwgc3RhcnQsIGFO
b2RlLCBvZmZzZXQpOyAgICAgCi0gICAgICAgIAorICAgIFJhbmdlIHNlYXJjaFJhbmdlKGFOb2Rl
LCBzdGFydCwgYU5vZGUsIG9mZnNldCk7CisKICAgICBSYW5nZSByZXN1bHRSYW5nZSA9IGtodG1s
OjpmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUpOwogCiAgIHdo
aWxlICghcmVzdWx0UmFuZ2UuY29sbGFwc2VkKCkpCiAgICAgewotICAgICAgICAKKwogICAgIHNl
dFNlbGVjdGlvbihraHRtbDo6U2VsZWN0aW9uKHJlc3VsdFJhbmdlLCBraHRtbDo6RE9XTlNUUkVB
TSwga2h0bWw6OlNFTF9QUkVGRVJfVVBTVFJFQU1fQUZGSU5JVFkpLCBmYWxzZSk7Ci0gICAgCi0g
ICAgCi0gICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkpIAorCisKKyAg
ICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkKICAgICAgIHsKLSAgICAg
IGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkLT5tX3Nl
bGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpICAgICAgICAgICAg
IAorICAgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpICYm
IGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RleHQoKSkKICAg
ICAgICAgewotICAgICAgICAvL2dldCB0aGUgc2VsZWN0aW9uIHJlY3QgICAgCi0gICAgICAgIFJl
bmRlclRleHQgKnJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihkLT5tX3NlbGVjdGlvbi5z
dGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgCi0gICAgICAgICAgICAgIGlmIChydCkg
CisgICAgICAgIC8vZ2V0IHRoZSBzZWxlY3Rpb24gcmVjdAorICAgICAgICBSZW5kZXJUZXh0ICpy
dCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2Rl
KCktPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgICBpZiAocnQpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgUVJlY3QgclNlbGVjdGlvbiA9IHJ0LT5zZWxlY3Rpb25SZWN0
KCk7Ci0gICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVjdGlv
bik7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0
LT5hcHBlbmQoclNlbGVjdGlvbik7CiAgICAgICAgICAgICAgICAgICBhRW50cnlSZWN0TGlzdC5B
cHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9wKCksIHJTZWxlY3Rp
b24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20oKSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgfSAgICAgCi0gICAgICAKLSAgICAKLSAgICAgICAgc2VhcmNoUmFuZ2Uu
c2V0U3RhcnQoYU5vZGUsIHJlc3VsdFJhbmdlLmVuZE9mZnNldCgpKTsgICAgICAgICAgICAgCisg
ICAgICB9CisKKworICAgICAgICBzZWFyY2hSYW5nZS5zZXRTdGFydChhTm9kZSwgcmVzdWx0UmFu
Z2UuZW5kT2Zmc2V0KCkpOwogICAgICAgICBzZWFyY2hSYW5nZS5zZXRFbmQoYU5vZGUsIG9mZnNl
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgCi0gICAgICByZXN1bHRSYW5nZSA9IGtodG1sOjpm
aW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUpOyAgICAKLSAgICB9
ICAgCiAKKyAgICAgIHJlc3VsdFJhbmdlID0ga2h0bWw6OmZpbmRQbGFpblRleHQoc2VhcmNoUmFu
Z2UsIHRhcmdldCwgdHJ1ZSwgdHJ1ZSk7CisgICAgfQorCiAgICAgY2xlYXJTZWxlY3Rpb24oKTsK
LSAgICAgIAorCiB9CiAKIC8qCkBAIC0zMDA5LDUyICszMDA5LDUyIEBADQogICAgICAgewogICAg
ICAgICBkLT5tX2ZpcnN0Rm91bmQgPSBkLT5tX3NlbGVjdGlvbjsKICAgICAgIH0KLSAgICBlbHNl
IAotICAgICAgeyAgICAgICAgCisgICAgZWxzZQorICAgICAgewogICAgICAgICBkLT5tX2ZpcnN0
Rm91bmQgPSBraHRtbDo6U2VsZWN0aW9uKCk7CiAgICAgICB9Ci0gICAgCisKICAga2h0bWw6OlNl
bGVjdGlvbiBmaXJzdEZvdW5kKGQtPm1fZmlyc3RGb3VuZCk7CiAgIGtodG1sOjpTZWxlY3Rpb24g
bGFzdEZvdW5kKGQtPm1fbGFzdEZvdW5kKTsKICAga2h0bWw6OlNlbGVjdGlvbiBjdXJzZWxlY3Rp
b24oZC0+bV9zZWxlY3Rpb24pOwogCiAKICAgICBUSW50IHJlc3VsdCA9IEZpbmRTdHJpbmcoYVRl
eHRFbnRyeSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gIAorCiAgIHdoaWxlIChyZXN1bHQg
PT0gVEJyQ3RsRGVmczo6RUZpbmRNYXRjaCkKICAgICB7CiAKLSAgICBpZiAoZC0+bV9zZWxlY3Rp
b24uc3RhcnQoKS5pc05vdE51bGwoKSkgCisgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCku
aXNOb3ROdWxsKCkpCiAgICAgICB7Ci0gICAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5u
b2RlKCktPnJlbmRlcmVyKCkgJiYgZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRl
cmVyKCktPmlzVGV4dCgpKSAgICAgICAgICAgICAKKyAgICAgIGlmIChkLT5tX3NlbGVjdGlvbi5z
dGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUo
KS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpCiAgICAgICAgIHsKLSAgICAgICAgLy9nZXQgdGhlIHNl
bGVjdGlvbiByZWN0ICAgIAotICAgICAgICBSZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJl
bmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOyAg
ICAgIAotICAgICAgICAgICAgICBpZiAocnQpIAorICAgICAgICAvL2dldCB0aGUgc2VsZWN0aW9u
IHJlY3QKKyAgICAgICAgUmVuZGVyVGV4dCAqcnQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+
KGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAg
ICAgaWYgKHJ0KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIFFSZWN0IHJT
ZWxlY3Rpb24gPSBydC0+c2VsZWN0aW9uUmVjdCgpOwogCiAgICAgICAgICAgYm9vbCBiRXhpc3Rz
ID0gRUZhbHNlOwotICAgICAgICAgICAgZm9yKGludCBpID0gMDtpIDwgX2ZvY3VzYWJsZU5vZGVM
aXN0LT5jb3VudCgpO2krKykgCisgICAgICAgICAgICBmb3IoaW50IGkgPSAwO2kgPCBfZm9jdXNh
YmxlTm9kZUxpc3QtPmNvdW50KCk7aSsrKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgUVJlY3QgbnIgPSBfZm9jdXNhYmxlTm9kZUxpc3QtPm9wZXJhdG9yW10oaSk7CiAgICAgICAg
ICAgICAgICAgaWYoIW5yLmludGVyc2VjdHMoclNlbGVjdGlvbikpCi0gICAgICAgICAgICAgICAg
ICB7ICAgICAKKyAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGJFeGlzdHMg
PSBFVHJ1ZTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAKKwogICAgICAgICAgIGlmICghYkV4aXN0cykKLSAgICAgICAgICAgIHsgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVj
dGlvbik7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICBfZm9jdXNhYmxlTm9kZUxpc3QtPmFwcGVuZChyU2VsZWN0aW9uKTsKICAgICAgICAgICAgIH0K
LSAgICAgIAorCiAgICAgICAgICAgICAgICAgICBhRW50cnlSZWN0TGlzdC5BcHBlbmQoVFJlY3Qo
clNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9wKCksIHJTZWxlY3Rpb24ucmlnaHQoKSwg
clNlbGVjdGlvbi5ib3R0b20oKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgfQotICAgICAgCisKICAgICByZXN1bHQgPSBGaW5kU3RyaW5nKGFUZXh0RW50cnksIHRydWUs
IHRydWUsIHRydWUsIHRydWUpOwogICAgIH0KIApAQCAtMzA2Miw3ICszMDYyLDcgQEANCiAgIGQt
Pm1fZmlyc3RGb3VuZCA9IGZpcnN0Rm91bmQ7CiAgIGQtPm1fbGFzdEZvdW5kID0gbGFzdEZvdW5k
OwogICBkLT5tX3NlbGVjdGlvbiA9IGN1cnNlbGVjdGlvbjsKLSAgICAgICAgCisKIH0KICovCiAv
LyByZXR1cm5zIE5TUmVjdCBiZWNhdXNlIGdvaW5nIHRocm91Z2ggUVJlY3Qgd291bGQgdHJ1bmNh
dGUgYW55IGZsb2F0cwpAQCAtMzM1NiwyMyArMzM1NiwyMSBAQA0KICAgICB9CiAgICAgcmV0dXJu
IDA7CiB9CisjZW5kaWYKIAogdm9pZCBLV1FLSFRNTFBhcnQ6OmFkZFBsdWdpblJvb3RPYmplY3Qo
Y29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdCkKIHsKICAgICByb290T2JqZWN0
cy5hcHBlbmQgKHJvb3QpOwogfQotI2VuZGlmCiAKIHZvaWQgS1dRS0hUTUxQYXJ0OjpjbGVhbnVw
UGx1Z2luUm9vdE9iamVjdHMoKQogewogLy8gIyMjIE5PVCBJTVBMRU1FTlRFRCBzY3JpcHRpbmcs
IHBsdWdpbnMKLS8qCiAgICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdDsKICAgICB3
aGlsZSAoKHJvb3QgPSByb290T2JqZWN0cy5nZXRMYXN0KCkpKSB7CiAgICAgICAgIHJvb3QtPnJl
bW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CiAgICAgICAgIHJvb3RPYmplY3RzLnJlbW92ZUxh
c3QoKTsKICAgICB9Ci0qLwogfQogCiAKQEAgLTM3OTMsNyArMzc5MSw3IEBADQogICAgICAgICAg
IFFQb2ludCBucCA9IG5lYXJlc3RQb2ludEluUmVjdChfY3Vyc29yUG9zaXRpb24saW50ZXJzZWN0
UmVjdCk7CiAgICAgICAgICAgaW50IHggPSAobnAueCgpIC0gX2N1cnNvclBvc2l0aW9uLngoKSk7
CiAgICAgICAgICAgaW50IHkgPSAobnAueSgpIC0gX2N1cnNvclBvc2l0aW9uLnkoKSk7Ci0gICAg
ICAgICAgCisKICAgICAgICAgICBpZihsciAhPSAwICYmIEFicyh5KSA+IHZpZXcoKS0+dmlzaWJs
ZUhlaWdodCgpLzQpIGNvbnRpbnVlOwogCiAgICAgICAgICAgaWYoIWZvY3VzUmFuZ2UuaXNFbXB0
eSgpICYmICFmb2N1c1JlY3QuaXNFbXB0eSgpKSB7CkBAIC0zOTgyLDcgKzM5ODAsNyBAQA0KICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihmb2N1c1JlY3QuaXNFbXB0eSgpKSByZXR1
cm4gZmFsc2U7Ci0gICAgICAgCisKICAgICAgICBmb2N1c2VkRnJhbWVQYXJ0LT5icmlkZ2UoKS0+
UG9pbnRlckV2ZW50KFRQb2ludGVyRXZlbnQ6OkVNb3ZlLGZvY3VzUmVjdC5jZW50ZXIoKS5Qb2lu
dCgpKTsKIAogICAgICAgIFFSZWN0IHZpZXdSZWN0KGZvY3VzZWRGcmFtZVBhcnQtPnZpZXcoKS0+
Y29udGVudHNYKCksZm9jdXNlZEZyYW1lUGFydC0+dmlldygpLT5jb250ZW50c1koKSwKQEAgLTQw
NjQsNCArNDA2MiwzNyBAQA0KICAgICAvLyBSZXNldCB0aGUgbXVsdGlwbGUgZm9ybSBzdWJtaXNz
aW9uIHByb3RlY3Rpb24gY29kZS4KICAgICAvLyBXZSdsbCBsZXQgeW91IHN1Ym1pdCB0aGUgc2Ft
ZSBmb3JtIHR3aWNlIGlmIHlvdSBkbyB0d28gc2VwYXJhdGUgdXNlciBhY3Rpb25zLgogICAgIF9z
dWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOwotfQ0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
DQorfQorCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUworS0pTOjpPYmplY3RJbXAqIEtXUUtI
VE1MUGFydDo6Y3JlYXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKQoreworICAg
IHJldHVybiBfYnJpZGdlLT5DbGllbnQoKS5jcmVhdGVXaWRnZXRPYmplY3QoZXhlYyk7Cit9Cisj
ZW5kaWYKKworS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKktXUUtIVE1MUGFydDo6Z2V0RW1iZWRJ
bnN0YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICphVmlldykKK3sKKyAgICByZXR1cm4gZ2V0
T2JqZWN0SW5zdGFuY2VGb3JWaWV3KGFWaWV3KTsKK30KKworS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2UgKktXUUtIVE1MUGFydDo6Z2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3IChNV2ViQ29yZVdpZGdl
dCAqYVZpZXcpCit7CisgICAgdm9pZCogb2JqZWN0ID0gYVZpZXctPlBsdWdpblNjcmlwdGFibGVP
YmplY3QoKTsKKyAgICBpZiAob2JqZWN0KSB7CisgICAgICAgIC8vS0pTOjpCaW5kaW5nczo6Um9v
dE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCA9IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6OmZp
bmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb24gKCkoYVZpZXcpOworICAgICAgICAv
L3JldHVybiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdl
SW5zdGFuY2UgKEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpDTGFuZ3VhZ2UsIG9iamVjdCwgZXhl
Y3V0aW9uQ29udGV4dCk7CisgICAgICAgIHJldHVybiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6
Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UgKEtKUzo6QmluZGluZ3M6Okluc3RhbmNl
OjpDTGFuZ3VhZ2UsIG9iamVjdCk7CisgICAgfQorfQorCitOUE9iamVjdCAqS1dRS0hUTUxQYXJ0
Ojp3aW5kb3dTY3JpcHROUE9iamVjdCgpCit7CisgICAgaWYgKCFfd2luZG93U2NyaXB0TlBPYmpl
Y3QpIHsKKyAgICAgICAgS0pTOjpPYmplY3RJbXAgKndpbiA9IHN0YXRpY19jYXN0PEtKUzo6T2Jq
ZWN0SW1wICo+KEtKUzo6V2luZG93OjpyZXRyaWV2ZVdpbmRvdyh0aGlzKSk7CisgICAgICAgIF93
aW5kb3dTY3JpcHROUE9iamVjdCA9IF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0ICgwLCB3aW4sIGJp
bmRpbmdSb290T2JqZWN0KCksIGJpbmRpbmdSb290T2JqZWN0KCkpOworICAgIH0KKworICAgIHJl
dHVybiBfd2luZG93U2NyaXB0TlBPYmplY3Q7Cit9CisKSW5kZXg6IFdlYkNvcmUva3dxL0tXUUtI
VE1MUGFydC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmgJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzQsNiArMzQsNyBAQA0KICNpbmNsdWRlICJkb21fbm9kZWltcGwuaCIKICNpbmNs
dWRlICJodG1sX2Zvcm1pbXBsLmgiCiAjaW5jbHVkZSAiaHRtbF90YWJsZWltcGwuaCIKKyNpbmNs
dWRlICJvYmplY3QuaCIKIAogI2luY2x1ZGUgIldlYkNvcmVLZXlib2FyZEFjY2Vzcy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVLZXlWYWx1ZVBhaXIuaCIKQEAgLTQxLDYgKzQyLDkgQEANCiAKICNpbmNs
dWRlIDxlMzJiYXNlLmg+CiAjaW5jbHVkZSA8dzMyc3RkLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvbnBydW50aW1lLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTlBfanNvYmplY3Qu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+CiAKICNpbmNsdWRlICJLV1FE
aWN0LmgiCiAjaW5jbHVkZSAiS1dRQ2xpcGJvYXJkLmgiCkBAIC01OCw2ICs2Miw3IEBADQogICAg
IGNsYXNzIFNhdmVkUHJvcGVydGllczsKICAgICBjbGFzcyBTYXZlZEJ1aWx0aW5zOwogICAgIGNs
YXNzIFNjaGVkdWxlZEFjdGlvbjsKKyAgICBjbGFzcyBQcm90ZWN0ZWRWYWx1ZTsKIH0KIAogY2xh
c3MgQ1dlYkNvcmVCcmlkZ2U7CkBAIC0yMDMsNyArMjA4LDcgQEANCiAKICAgICBRUmVjdCBzZWxl
Y3Rpb25SZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBnZXRSZW5kZXJUZXh0UmVjdEFycmF5KGNvbnN0
IFREZXNDJiBhVGV4dEVudHJ5LCBjb25zdCBET006Ok5vZGUmIGFOb2RlLCBSQXJyYXk8VFJlY3Q+
JiBhRW50cnlSZWN0TGlzdCk7Ci0gICAgCisKIC8vICAgIE5TUmVjdCB2aXNpYmxlU2VsZWN0aW9u
UmVjdCgpIGNvbnN0OwogLy8gICAgTlNJbWFnZSAqc2VsZWN0aW9uSW1hZ2UoKSBjb25zdDsKIC8v
ICAgIE5TSW1hZ2UgKnNuYXBzaG90RHJhZ0ltYWdlKERPTTo6Tm9kZSBub2RlLCBOU1JlY3QgKmlt
YWdlUmVjdCwgTlNSZWN0ICplbGVtZW50UmVjdCkgY29uc3Q7CkBAIC0yMjIsNiArMjI3LDkgQEAN
CiAgICAgYm9vbCBLZXlFdmVudChjb25zdCBUS2V5RXZlbnQmIGV2ZW50LCBib29sIHVwKTsKICAg
ICAvL2Jvb2wgTGFzdEV2ZW50SXNNb3VzZVVwKCk7CiAKKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURH
RVRTCisgICAgS0pTOjpPYmplY3RJbXAqIGNyZWF0ZVdpZGdldE9iamVjdChLSlM6OkV4ZWNTdGF0
ZSogZXhlYykgOworI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTCiAKICAgICAvL01ldGhvZHMg
dG8gdXBkYXRlIGZvY3VzYWJsZSBub2RlIGxpc3QKICAgICB2b2lkIHVwZGF0ZUZvY3VzYWJsZVJl
Y3RMaXN0KCk7CkBAIC0yODksOSArMjk3LDEzIEBADQogICAgIHZvaWQgZGlkVGVsbEJyaWRnZUFi
b3V0TG9hZChjb25zdCBRU3RyaW5nICZ1cmxTdHJpbmcpOwogICAgIGJvb2wgaGF2ZVRvbGRCcmlk
Z2VBYm91dExvYWQoY29uc3QgUVN0cmluZyAmdXJsU3RyaW5nKTsKIAotLy8gICAgS0pTOjpCaW5k
aW5nczo6SW5zdGFuY2UgKmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3IChOU1ZpZXcgKmFWaWV3KTsK
LS8vICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcg
KE5TVmlldyAqYVZpZXcpOwotLy8gICAgdm9pZCBhZGRQbHVnaW5Sb290T2JqZWN0KGNvbnN0IEtK
Uzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKnJvb3QpOworICAgIEtKUzo6QmluZGluZ3M6Okluc3Rh
bmNlICpnZXRFbWJlZEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVXaWRnZXQgKmFWaWV3KTsKKyAg
ICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3KE1XZWJD
b3JlV2lkZ2V0ICphVmlldyk7CisgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEFwcGxl
dEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVXaWRnZXQgKikgeyByZXR1cm4gMDsgfQorICAgIHZv
aWQgYWRkUGx1Z2luUm9vdE9iamVjdChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpy
b290KTsKKyAgICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpiaW5kaW5nUm9vdE9iamVjdCgp
OworICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKmV4ZWN1dGlvbkNvbnRleHRGb3JET00o
KTsKKyAgICBOUE9iamVjdCAqd2luZG93U2NyaXB0TlBPYmplY3QoKTsKICAgICB2b2lkIGNsZWFu
dXBQbHVnaW5Sb290T2JqZWN0cygpOwogCiAgICAgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRv
KGNvbnN0IGtodG1sOjpFZGl0Q29tbWFuZFB0ciAmKTsKQEAgLTQyNyw5ICs0MzksMTAgQEANCiAK
ICAgICBmcmllbmQgY2xhc3MgS0hUTUxQYXJ0OwogCi0vLyAgICBLSlM6OkJpbmRpbmdzOjpSb290
T2JqZWN0ICpfYmluZGluZ1Jvb3Q7ICAvLyBUaGUgcm9vdCBvYmplY3QgdXNlZCBmb3Igb2JqZWN0
cworICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKl9iaW5kaW5nUm9vdDsgIC8vIFRoZSBy
b290IG9iamVjdCB1c2VkIGZvciBvYmplY3RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGJvdW5kIG91dHNpZGUgdGhlIGNvbnRleHQgb2YgYSBwbHVnaW4u
Ci0vLyAgICBRUHRyTGlzdDxLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2JqZWN0czsK
KyAgICBOUE9iamVjdCAqX3dpbmRvd1NjcmlwdE5QT2JqZWN0OworICAgIFFQdHJMaXN0PEtKUzo6
QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3RPYmplY3RzOwogICAgIENXZWJTY3JpcHRPYmplY3Qg
Kl93aW5kb3dTY3JpcHRPYmplY3Q7CiAKICAgICBET006Ok5vZGUgX2RyYWdTcmM7ICAgICAvLyBl
bGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBn
ZXN0dXJlCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgJKHJldmlzaW9uIDE3MDY5
KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGwuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTcyMyw2ICs3MjMsMTIgQEANCiAgICAgICAgICovDQogICAgICAgICBUQm9vbCBTZW5kQ29t
bWFuZHNUb0NsaWVudChUQnJDdGxEZWZzOjpUQnJDdGxDbGllbnRDb21tYW5kcyBhQ29tbWFuZCwg
Y29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZXNOYW1lcywNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0
ZVZhbHVlcyk7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBDcmVhdGVzIHRoZSB3aWRnZXQgZXh0ZW5zaW9uIG9iamVjdA0KKyAgICAgICAgKi8N
CisgICAgICAgIE1XaWRnZXRFeHRlbnNpb24qIENyZWF0ZVdpZGdldEV4dGVuc2lvbkwoTVdpZGdl
dENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spIDsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdF
VFMNCiAgICAgcHJvdGVjdGVkOiAgLy8gRnVuY3Rpb25zIGZyb20gQ0NvZUNvbnRyb2wNCiANCiAg
ICAgICAgIC8qKg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxEZWZzLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oCShy
ZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtNjAzLDcgKzYwMyw3IEBADQogDQogICAgICAgICAgICAgRUVs
ZW1lbnRNb3VzZUJ1dHRvbkxpc3RlbmVyLCAvLy88IEEgTW91c2UgYnV0dG9uIGxpc3RlbmVyDQog
ICAgICAgICAgICAgRUVsZW1lbnRTY3JvbGxCYXIsICAgIC8vLzwgQSBzY3JvbGwgYmFyDQotICAg
ICAgICAgICAgDQorDQogICAgICAgICAgICAgRUVsZW1lbnRTbWFydExpbmtUZWwsIC8vLzwgQSB0
ZWxlcGhvbmUgbnVtYmVyIGluIHRoZSBwYWdlLg0KICAgICAgICAgICAgIEVFbGVtZW50U21hcnRM
aW5rRW1haWwgLy8vPCBhbiBlbWFpbCBhZGRyZXNzIGluIHRoZSBwYWdlLg0KICAgICAgICAgfTsN
CkBAIC03MTYsNiArNzE2LDE3IEBADQogICAgICAgICBFQ2xpZW50Q29tbWFuZExhdW5jaEZpbmRL
ZXl3b3JkID0gMCwNCiAgICAgICAgIEVDbGllbnRDb21tYW5kU3Vic2NyaWJlVG9GZWVkcw0KICAg
ICAgICAgfTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAvKioNCisgICAgKiBU
aGUgd2lkZ2V0IHBhcmFtcy4NCisgICAgKi8NCisgICAgZW51bSBUQnJDdGxXaWRnZXRQYXJhbXMN
CisgICAgICAgIHsNCisgICAgICAgIEVXaWRnZXRJZGVudGlmaWVyID0gMCwNCisgICAgICAgIEVX
aWRnZXRCdW5kbGVJZCwNCisgICAgICAgIEVXaWRnZXRCYXNlUGF0aA0KKyAgICAgICAgfTsNCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfTsNCiANCiAjZW5kaWYgICAgICAvLyBC
UkNUTERFRlNfSA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxJbnRlcmZh
Y2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxJbnRl
cmZhY2UuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9C
ckN0bEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzEsNyArNzEsMTAgQEANCiBjbGFz
cyBUQnJDdGxTdWJzY3JpYmVUbzsNCiBjbGFzcyBNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyOw0K
IGNsYXNzIE1CckN0bENvbW1hbmRPYnNlcnZlcjsNCi0NCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KK2NsYXNzIE1XaWRnZXRDYWxsYmFjazsNCitjbGFzcyBNV2lkZ2V0RXh0ZW5zaW9uOw0K
KyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIGNsYXNzIENCckN0bEludGVyZmFjZTsNCiBj
bGFzcyBDUGx1Z2luSW5mbzsNCiANCkBAIC01OTYsNiArNTk5LDE1IEBADQogICAgICAgICAqLw0K
ICAgICAgICAgSU1QT1JUX0MgdmlydHVhbCB2b2lkIFJlbW92ZUNvbW1hbmRPYnNlcnZlcihNQnJD
dGxDb21tYW5kT2JzZXJ2ZXIqIGFCckN0bENvbW1hbmRPYnNlcnZlcikgPSAwOw0KIA0KKyNpZmRl
ZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogVW5yZWdpc3Rl
ciBhIGNsaWVudCBjb21tYW5kIGludGVyZmFjZSBmb3IgdGhlIGJyb3dzZXIgZW5naW5lDQorICAg
ICAgICAqIEBzaW5jZSAzLjENCisgICAgICAgICogQHBhcmFtIFRoZSBvYnNlcnZlciB0byB1bnJl
Z2lzdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIElN
UE9SVF9DIHZpcnR1YWwgTVdpZGdldEV4dGVuc2lvbiogQ3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTChN
V2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykgPSAwOw0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KICAgICB9Ow0KIA0KIA0KQEAgLTg2OCw2ICs4ODAsNDkgQEANCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBIYW5kbGVDb21tYW5kTChUQnJDdGxEZWZzOjpUQnJDdGxDbGllbnRDb21t
YW5kcyBhQ29tbWFuZCwgY29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZXNOYW1lcywN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0FycmF5Rml4PFRQ
dHJDPiYgYUF0dHJpYnV0ZVZhbHVlcykgPSAwOw0KICAgICB9Ow0KKyNpZmRlZiAgUkRfQlJPV1NF
Ul9XSURHRVRTDQorLy8gQ0xBU1MgREVDTEFSQVRJT04NCisvKioNCisqICBUaGlzIGNsYXNzIHBy
b3ZpZGVzIGEgbWVjaGFuaXNtIGZvciB0aGUgYnJvd3NlciBlbmdpbmUgdG8gaW50ZXJhY3Qgd2l0
aCB0aGUgd2lkZ2V0IGhvc3QgYXBwbGljYXRpb24NCisqDQorKiAgQGxpYiBCcm93c2VyRW5naW5l
LmxpYg0KKyogIEBzaW5jZSAzLjINCisqLw0KK2NsYXNzIE1XaWRnZXRDYWxsYmFjaw0KKyAgICB7
DQorICAgIHB1YmxpYzogLy8gTmV3IGZ1bmN0aW9ucw0KKw0KKyAgICAgICAgLy9UTyBCRSBJTVBM
RU1FTlRFRA0KKyAgICB9Ow0KKy8vIENMQVNTIERFQ0xBUkFUSU9ODQorLyoqDQorKiAgVGhpcyBj
bGFzcyBwcm92aWRlcyBhbiBleHRlbnNpb24gbWVjaGFuaXNtIGZvciB0aGUgd2lkZ2V0IGhvc3Qg
YXBwIHRvIGludGVyYWN0IHdpdGggdGhlIGJyb3dzZXIgZW5naW5lDQorKiAgVGhpcyBjbGFzcyBp
bmNsdWRlcyB0aGUgV2lkZ2V0IHNwZWNpZmljIGV4dGVuc2lvbiBuZWVkZWQgaW4gdGhlIGJyb3dz
ZXIgZW5naW5lDQorKiAgQGxpYiBCcm93c2VyRW5naW5lLmxpYg0KKyogIEBzaW5jZSAzLjINCisq
Lw0KK2NsYXNzIE1XaWRnZXRFeHRlbnNpb24NCisgICAgew0KKyAgICBwdWJsaWM6IC8vIE5ldyBm
dW5jdGlvbnMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgdG8gc2V0IHBhcmFtZXRl
cnMgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHBhcmFtIFRoZSB3aWRnZXQgaWRlbnRpZmllcg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHZh
bHVlIGZvciB0aGUgcGFyYW1hdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAg
Ki8NCisgICAgICAgIHZpcnR1YWwgdm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lk
Z2V0UGFyYW1zIGFQYXJhbSwgY29uc3QgVERlc0MmIGFWYWx1ZSkgPSAwOw0KKw0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJvd3NlciBl
bmdpbmUNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHdpZGdl
dCBwYXJhbWV0ZXIgYVBhcmFtDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBw
YXJhbWF0ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAg
dmlydHVhbCB2b2lkIFNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBh
cmFtLCBUVWludCBhVmFsdWUpID0gMDsNCisgICAgfTsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJ
REdFVFMNCiAjZW5kaWYgICAgICAvLyBCUkNUTElOVEVSRkFDRV9IDQogDQogLy8gRW5kIG9mIEZp
bGUNCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcAkod29ya2luZyBjb3B5
KQ0KQEAgLTc3LDYgKzc3LDkgQEANCiAjaW5jbHVkZSAiRmF2aWNvbi5oIg0KICNpbmNsdWRlICJV
cmxSZXF1ZXN0SW5mby5oIg0KICNpbmNsdWRlICJUb29sQmFyLmgiDQorI2lmZGVmICBSRF9CUk9X
U0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRf
QlJPV1NFUl9XSURHRVRTDQogDQogI2lmZGVmIFJEXzMyX0JST1dTRVINCiAjaW5jbHVkZSAiU21h
cnRMaW5rSGFuZGxlci5oIg0KQEAgLTg3Niw2ICs4NzksMTcgQEANCiAgICAgICAgICAgICAgICAg
VFBsdWdpbkNvbnRyb2wgcGx1Z2luQ29udHJvbCgqaVdlYktpdENvbnRyb2wpOw0KICAgICAgICAg
ICAgICAgICBwbHVnaW5Db250cm9sLkhhbmRsZVBsdWdpbkNvbW1hbmRMKGFDb21tYW5kKTsNCiAg
ICAgICAgICAgICAgICAgfQ0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAg
ICAgZWxzZQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIENXaWRnZXRFeHRl
bnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAg
ICAgICAgICAgICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAgICAgICAgICAgICAgICAgew0KKyAgICAg
ICAgICAgICAgICAgICAgd2RndEV4dC0+T3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQoYUNvbW1hbmQp
Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAg
ICAgICAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0gICAvLyBlbmQgb2Ygc3dpdGNoDQpA
QCAtMTEwNiw2ICsxMTIwLDEzIEBADQogICAgIC8vIEJhc2Ugd2UncmUgdXNpbmcgZm9yIHRoZSBw
bHVnLWlucw0KICAgICBUUGx1Z2luQ29udHJvbCBwbHVnaW5Db250cm9sKCppV2ViS2l0Q29udHJv
bCk7DQogICAgIHBsdWdpbkNvbnRyb2wuQWRkUGx1Z2luT3B0aW9uTWVudUl0ZW1zTChhTWVudVBh
bmUsIFRCckN0bERlZnM6OkVDb21tYW5kSWRQbHVnaW5CYXNlLCBhQWZ0ZXIpOw0KKyNpZmRlZiAg
UkRfQlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2Vi
S2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAg
ICAgew0KKyAgICAgICAgd2RndEV4dC0+QWRkT3B0aW9uTWVudUl0ZW1zTChhTWVudVBhbmUpOw0K
KyAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9DQogDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0yMzYzLDQgKzIzODQsMTYgQEANCiAgICAgcmV0dXJu
IEVUcnVlOw0KICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorTVdpZGdldEV4dGVuc2lvbiogQ0JyQ3Rs
OjpDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNr
KQ0KKyAgICB7DQorICAgIHJldHVybiBpV2ViS2l0Q29udHJvbC0+Q3JlYXRlV2lkZ2V0RXh0ZW5z
aW9uTChhV2lkZ2V0Q2FsbGJhY2spOw0KKyAgICAgICAgfQ0KKw0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KIC8vICBFbmQgb2YgRmlsZQ0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9p
bmMvd2Via2l0YnJpZGdlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5j
L3dlYmtpdGJyaWRnZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcv
aW5jL3dlYmtpdGJyaWRnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTUsNiArNTUsMTIgQEANCiBj
bGFzcyBDV2ViS2l0Q29udHJvbDsNCiBjbGFzcyBNQnJDdGxEaWFsb2dzUHJvdmlkZXI7DQogY2xh
c3MgTUJyQ3RsTG9hZEV2ZW50T2JzZXJ2ZXI7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMN
CituYW1lc3BhY2UgS0pTew0KKyAgICBjbGFzcyBFeGVjU3RhdGU7DQorICAgIGNsYXNzIE9iamVj
dEltcDsNCit9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogLy9DT05TVEFOVFMN
CiANCkBAIC05MCw2ICs5Niw5IEBADQogICAgICAgICB2b2lkIENvbnN0cnVjdEwoKTsNCiANCiAg
ICAgcHVibGljOiAvLyBNZXRob2RzIEZyb20gTVdlYkNsaWVudEJyaWRnZQ0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQorICAgICAgICBLSlM6Ok9iamVjdEltcCogY3JlYXRlV2lkZ2V0T2Jq
ZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKTsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMN
CiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBDaGlsZEZyYW1lcw0KSW5kZXg6IFdlYktpdC9C
cm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJvbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jy
b3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktp
dC9Ccm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtOTAs
NiArOTAsOSBAQA0KIGNsYXNzIENIdHRwQ2FjaGVNYW5hZ2VyOw0KIGNsYXNzIENTdGF0aWNJbWFn
ZURlY29kZXI7DQogY2xhc3MgQ1BsdWdpbkNvbnRlbnRQbGF5ZXI7DQorI2lmZGVmICBSRF9CUk9X
U0VSX1dJREdFVFMNCitjbGFzcyBDV2lkZ2V0RXh0ZW5zaW9uOw0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KIA0KIC8vIENMQVNTIERFQ0xBUkFUSU9ODQogLyoqDQpAQCAtMzExLDYgKzMx
NCwxNiBAQA0KICAgICAgICAgKi8NCiAgICAgICAgIENXZWJLaXRWaWV3KiBDcmVhdGVXaW5kb3co
Y29uc3QgVERlc0MmIGFGcmFtZU5hbWUsVEJvb2wgYVVzZXJJbml0aWF0ZWQpOw0KIA0KKyNpZmRl
ZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogQ3JlYXRlV2lk
Z2V0RXh0ZW5zaW9uDQorICAgICAgICAqIFB1cnBvc2U6IENyZWF0ZXMgdGhlIHdpZGdldCBleHRl
bnNpb24gb2JqZWN0DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIE1X
aWRnZXRDYWxsYmFjayogYVdpZGdldENhbGxiYWNrDQorICAgICAgICAqIEByZXR1cm4gTVdpZGdl
dEV4dGVuc2lvbioNCisgICAgICAgICovDQorICAgICAgICBNV2lkZ2V0RXh0ZW5zaW9uKiBDcmVh
dGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKSA7DQor
I2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogICAgICAgICAvKioNCiAgICAgICAgICog
RmluZFdpbmRvd05hbWVkDQpAQCAtNDkzLDcgKzUwNiwxNiBAQA0KICAgICAgICAgKi8NCiAgICAg
ICAgIENCckN0bCYgQnJDdGwoKSBjb25zdCB7IHJldHVybiAqaUJyQ3RsOyB9DQogDQorI2lmZGVm
ICBSRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgICAgIC8qKg0KKyAgICAgICAgKiBBc3NvY2lhdGVk
IGJyb3dzZXIgY29udHJvbA0KKyAgICAgICAgKiBAc2luY2UgMy4wDQorICAgICAgICAqIEByZXR1
cm4gQSByZWZlcmVuY2UgdG8gQnJDdGwNCisgICAgICAgICovDQorICAgICAgICBDV2lkZ2V0RXh0
ZW5zaW9uKiBXaWRnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBpV2lkZ2V0RXh0ZW5zaW9u
OyB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQorDQorICAgICAgICAvKioNCiAgICAg
ICAgICogUmVzb3VyY2UgbG9hZGVyIHNldHRpbmdzIGNvbnRyb2xsZXINCiAgICAgICAgICogQHNp
bmNlIDMuMA0KICAgICAgICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlDQpAQCAtODkzLDYgKzkxNSw5
IEBADQogICAgICAgICAvLyBwbHVnaW4gcGxheWVyDQogICAgICAgICBDUGx1Z2luQ29udGVudFBs
YXllciogICAgICAgaVBsdWdpblBsYXllcjsNCiAjZW5kaWYNCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogaVdpZGdldEV4dGVuc2lvbjsNCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfTsNCiANCiAjZW5kaWYgICAgICAvLyBX
RUJLSVRDT05UUk9MX0gNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldEV4dGVu
c2lvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRFeHRl
bnNpb24uaAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldEV4
dGVuc2lvbi5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzNTUgQEANCisvKg0KKyogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRlcmZhY2Uu
aA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldEludGVyZmFjZQ0KKyog
IERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0KKyogIENvcHlyaWdo
dCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRp
bmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRlciBwcm9ncmFtcywg
aXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyogIGluY2x1ZGluZyBy
ZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0KKyogIG9y
IGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQg
b2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNv
bmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUgZGlzY2xvc2VkIHRv
IG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBOb2tpYSBD
b3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQorDQorI2lmbmRlZiBf
X1dJREdFVEVOR0lORUNBTExCQUNLDQorI2RlZmluZSBfX1dJREdFVEVOR0lORUNBTExCQUNLDQor
DQorLy8gIElOQ0xVREVTDQorI2luY2x1ZGUgPGUzMmJhc2UuaD4NCisjaW5jbHVkZSA8ZTMyaGFz
aHRhYi5oPg0KKyNpbmNsdWRlIDxCckN0bEludGVyZmFjZS5oPg0KKyNpbmNsdWRlICJXaWRnZXRF
bmdpbmVCcmlkZ2UuaCINCisNCisvLyBDT05TVEFOVFMNCisNCisvLyBNQUNST1MNCisNCisvLyBE
QVRBIFRZUEVTDQorDQorLy8gRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIEZPUldBUkQgREVD
TEFSQVRJT04NCitjbGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2lkZ2V0UHJlZmVyZW5jZXM7
DQorY2xhc3MgVFdpZGdldFJlbmRlcmVyOw0KK2NsYXNzIENFaWtNZW51UGFuZTsNCisNCisvLyBD
TEFTUyBERUNMQVJBVElPTg0KKy8qKg0KKyogIENXaWRnZXRFeHRlbnNpb24NCisqDQorKiAgQGxp
YiBicm93c2VyZW5naW5lLmRsbA0KKyogIEBzaW5jZSAzLjINCisqLw0KK2NsYXNzIENXaWRnZXRF
eHRlbnNpb246IHB1YmxpYyBDQmFzZSwgcHVibGljIE1XaWRnZXRFbmdpbmVDYWxsQmFjaywgcHVi
bGljIE1XaWRnZXRFeHRlbnNpb24NCisgICAgew0KKyAgICBwdWJsaWM6DQorICAgICAgICAvKioN
CisgICAgICAgICogQ29uc3RydWN0b3INCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAg
KiBAcGFyYW0gV2Via2l0Vmlldw0KKyAgICAgICAgKiBAcGFyYW0gV2lkZ2V0Q2FsbGJhY2sgaW50
ZXJmYWNlDQorICAgICAgICAqIEByZXR1cm4gQ1dpZGdldEV4dGVuc2lvbiBvYmplY3QuDQorICAg
ICAgICAqLw0KKyAgICAgICAgc3RhdGljIENXaWRnZXRFeHRlbnNpb24qIE5ld0woQ1dlYktpdFZp
ZXcmIGFXZWJLaXRWaWV3LE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKTsNCisNCisg
ICAgICAgIC8qKg0KKyAgICAgICAgKiBEZXN0cnVjdG9yLg0KKyAgICAgICAgKi8NCisgICAgICAg
IHZpcnR1YWwgfkNXaWRnZXRFeHRlbnNpb24oKTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCBBZGRPcHRpb25NZW51SXRlbXNMDQorICAgICAgICAqIEBz
aW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSBvcHRpb25zIG1lbnUNCisgICAgICAgICog
QHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBBZGRPcHRpb25NZW51SXRl
bXNMKCBDRWlrTWVudVBhbmUmIGFNZW51UGFuZSApOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAg
ICAqIE1ldGhvZCBPcHRpb25zTWVudUl0ZW1TZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4y
DQorICAgICAgICAqIEBwYXJhbSBUaGUgb3B0aW9ucyBtZW51IGNvbW1hbmQNCisgICAgICAgICog
QHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBPcHRpb25zTWVudUl0ZW1T
ZWxlY3RlZCggVEludCBhQ29tbWFuZCApOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1l
dGhvZCBPbkhpZGVTZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT25IaWRlU2VsZWN0ZWQoKTsN
CisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT25SZW1vdmVTZWxlY3RlZA0KKyAg
ICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8N
CisgICAgICAgIHZvaWQgT25SZW1vdmVTZWxlY3RlZCgpOw0KKw0KKyAgICAgICAgLyoqDQorICAg
ICAgICAqIE1ldGhvZCBPblNob3dTZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAg
ICAgICAqIEBwYXJhbSBUaGUgd2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICogQHBhcmFtIFRo
ZSB2YWx1ZSBmb3IgdGhlIHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAg
ICAgICovDQorICAgICAgICB2b2lkIE9uU2hvd1NlbGVjdGVkKCk7DQorDQorICAgIHB1YmxpYzog
Ly8gRnJvbSBNV2lkZ2V0RW5naW5lQ2FsbEJhY2sNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAg
KiBNZXRob2QgT3BlbkFwcGxpY2F0aW9uDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHBhcmFtIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBvcGVuDQorICAgICAgICAq
IEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT3BlbkFwcGxpY2F0aW9u
KGNvbnN0IFREZXNDJiBhQXBwTmFtZSwgY29uc3QgVERlc0MmIGFQYXJhbSk7DQorDQorICAgICAg
ICAvKioNCisgICAgICAgICogTWV0aG9kIE9wZW5VcmwNCisgICAgICAgICogQHNpbmNlIDMuMg0K
KyAgICAgICAgKiBAcGFyYW0gVGhlIHVybCB0byBvcGVuDQorICAgICAgICAqIEByZXR1cm4gdm9p
ZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT3BlblVybChjb25zdCBURGVzQyYgYVVybCk7
DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFByZWZlcmVuY2VGb3JLZXkNCisg
ICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVuY2Uga2V5
DQorICAgICAgICAqIEBwYXJhbSBUaGUgcHJlZmVyZW5jZSB2YWx1ZQ0KKyAgICAgICAgKiBAcmV0
dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICBUSW50IFByZWZlcmVuY2VGb3JLZXkoY29u
c3QgVERlc0MmIGFLZXksIFRQdHJDJiBhVmFsdWUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAg
ICAqIE1ldGhvZCBQcmVwYXJlRm9yVHJhbnNpdGlvbg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEBwYXJhbSBUaGUgdHJhbnNpdGlvbiB0eXBlDQorICAgICAgICAqIEByZXR1cm4g
dm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgUHJlcGFyZUZvclRyYW5zaXRpb24oY29u
c3QgVERlc0MmIGFUcmFuc2l0aW9uKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRo
b2QgUGVyZm9ybVRyYW5zaXRpb24NCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBA
cmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFBlcmZvcm1UcmFuc2l0aW9u
KCk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFNldFByZWZlcmVuY2VGb3JL
ZXkNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVu
Y2Uga2V5DQorICAgICAgICAqIEBwYXJhbSBUaGUgcHJlZmVyZW5jZSB2YWx1ZQ0KKyAgICAgICAg
KiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldFByZWZlcmVuY2VG
b3JLZXkoY29uc3QgVERlc0MmIGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUpOw0KKw0KKyAgICAg
ICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBBZGRPcHRpb25zTWVudUl0ZW0NCisgICAgICAgICog
QHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gTmFtZSBvZiBvcHRpb25zIG1lbnUgaXRlbQ0K
KyAgICAgICAgKiBAcmV0dXJuIGNvbW1hbmQgaWQNCisgICAgICAgICovDQorICAgICAgICBUSW50
IEFkZE9wdGlvbnNNZW51SXRlbShjb25zdCBURGVzQyYgYU5hbWUpOw0KKw0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCBDbGVhck9wdGlvbnNNZW51DQorICAgICAgICAqIEBzaW5jZSAz
LjINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBD
bGVhck9wdGlvbnNNZW51KCk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIEdl
dFdpZGdldElkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiBUaGUg
d2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICovDQorICAgICAgICBURGVzQyYgR2V0V2lkZ2V0
QnVuZGxlSWQoKSB7IHJldHVybiAqaVdpZGdldEJ1bmRsZUlkOyB9DQorDQorICAgICAgICAvKioN
CisgICAgICAgICogTWV0aG9kIFNldFNjcm9sbEJhcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEBwYXJhbSBUQm9vbCB2aXNpYmxlDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0K
KyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0U2Nyb2xsQmFyKFRCb29sIGFWaXNpYmxlKTsN
CisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgU2V0TmF2aWdhdGlvbkVuYWJsZWQN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVEJvb2wgZW5hYmxlZA0K
KyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldE5h
dmlnYXRpb25FbmFibGVkKFRCb29sIGFFbmFibGUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAg
ICAqIE1ldGhvZCBTZXRPcHRpb25zTWVudUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjIN
CisgICAgICAgICogQHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVy
biB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPcHRpb25zTWVudUxpc3RlbmVy
KENXaWRnZXRFdmVudEhhbmRsZXIqIGFDYWxsYmFjayk7DQorDQorICAgICAgICAvKioNCisgICAg
ICAgICogTWV0aG9kIFNldE9uSGlkZUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2
b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPbkhpZGVMaXN0ZW5lcihDV2lkZ2V0
RXZlbnRIYW5kbGVyKiBhQ2FsbGJhY2spOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1l
dGhvZCBTZXRPblJlbW92ZUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQor
ICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPblJlbW92ZUxpc3RlbmVyKENXaWRnZXRFdmVu
dEhhbmRsZXIqIGFDYWxsYmFjayk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9k
IFNldE9uU2hvd0xpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBh
cmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAg
ICAqLw0KKyAgICAgICAgdm9pZCBTZXRPblNob3dMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5kbGVy
KiBhQ2FsbGJhY2spOw0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICAvKioNCisgICAgICAgICog
TWV0aG9kIFdpZGdldFJlbmRlcmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICog
QHJldHVybiB3aWRnZXQgcmVuZGVyZXINCisgICAgICAgICovDQorICAgICAgICBUV2lkZ2V0UmVu
ZGVyZXIqIFdpZGdldFJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gaVdpZGdldFJlbmRlcmVyOyB9
DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFdpZGdldEVuZ2luZUJyaWRnZXQN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHdpZGdldCBlbmdpbmUg
YnJpZGdlDQorICAgICAgICAqLw0KKyAgICAgICAgTVdpZGdldEVuZ2luZUJyaWRnZSYgV2lkZ2V0
RW5naW5lQnJpZGdlKCkgY29uc3QgeyByZXR1cm4gKmlXaWRnZXRFbmdpbmVCcmlkZ2U7IH0NCisN
CisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgTmF2aWdhdGlvbkVuYWJsZWQNCisgICAg
ICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIGJvb2wNCisgICAgICAgICovDQor
ICAgICAgICBUQm9vbCBOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlOYXZpZ2F0
aW9uRW5hYmxlZDsgfQ0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBXaWRnZXRC
YXNlUGF0aA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gVERlc0Mg
d2lkZ2V0IGJhc2UgcGF0aA0KKyAgICAgICAgKi8NCisgICAgICAgIFREZXNDJiBXaWRnZXRCYXNl
UGF0aCgpIGNvbnN0IHsgcmV0dXJuICppV2lkZ2V0QmFzZVBhdGg7IH0NCisNCisgICAgICAgIC8q
Kg0KKyAgICAgICAgKiBNZXRob2QgR2V0V2lkZ2V0SWQNCisgICAgICAgICogQHNpbmNlIDMuMg0K
KyAgICAgICAgKiBAcmV0dXJuIFRoZSB3aWRnZXQgdWlkDQorICAgICAgICAqLw0KKyAgICAgICAg
VEludCBHZXRXaWRnZXRJZCgpIHsgcmV0dXJuIGlXaWRnZXRJZDsgfQ0KKw0KKyAgICBwdWJsaWM6
IC8vIE5ldyBmdW5jdGlvbnMNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgdG8g
c2V0IHBhcmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQorICAgICAgICAqIEBzaW5jZSAz
LjINCisgICAgICAgICogQHBhcmFtIFRoZSB3aWRnZXQgaWRlbnRpZmllcg0KKyAgICAgICAgKiBA
cGFyYW0gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW1hdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9p
ZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6OlRCckN0
bFdpZGdldFBhcmFtcyBhUGFyYW0sIGNvbnN0IFREZXNDJiBhVmFsdWUpOw0KKw0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJvd3NlciBl
bmdpbmUNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHdpZGdl
dCBwYXJhbWV0ZXIgYVBhcmFtDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBw
YXJhbWF0ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAg
dm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgVFVp
bnQgYVZhbHVlKTsNCisNCisgICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIGNyZWF0ZVdp
ZGdldE9iamVjdA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbQ0KKyAg
ICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICBLSlM6Ok9iamVjdElt
cCogY3JlYXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKTsNCisNCisgICAgcHJp
dmF0ZToNCisgICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIExvYWRXaWRnZXRFbmdpbmVE
bGxMDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAg
ICAgICAqLw0KKyAgICAgICAgdm9pZCBMb2FkV2lkZ2V0RW5naW5lRGxsTCgpOw0KKw0KKyAgICAg
ICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgQ3JlYXRlQXBwSGFzaFRhYmxlTA0KKyAgICAgICAg
KiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAg
ICAgIHZvaWQgQ3JlYXRlQXBwSGFzaFRhYmxlTCgpOw0KKw0KKyAgICAgICAgLyoNCisgICAgICAg
ICogTWV0aG9kIExhdW5jaEFwcGxpY2F0aW9uTA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAg
ICAgICAqIEBwYXJhbSBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdG8gb3Blbg0KKyAgICAg
ICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIExhdW5jaEFwcGxp
Y2F0aW9uTChjb25zdCBUVWlkJiBhVWlkLCBjb25zdCBURGVzQyYgYVBhcmFtKTsNCisNCisgICAg
cHJvdGVjdGVkOg0KKyAgICAgICAgLyoqDQorICAgICAgICAqIDJuZCBwaGFzZSBjb25zdHJ1Y3Rv
ci4NCisgICAgICAgICovDQorICAgICAgICB2b2lkIENvbnN0cnVjdEwoKTsNCisNCisgICAgICAg
IC8qKg0KKyAgICAgICAgKiBDKysgY29uc3RydWN0b3IuDQorICAgICAgICAqLw0KKyAgICAgICAg
Q1dpZGdldEV4dGVuc2lvbiggQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3LE1XaWRnZXRDYWxsYmFj
ayYgYVdpZGdldENhbGxiYWNrICk7DQorDQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBDV2Vi
S2l0VmlldyogaVdlYktpdFZpZXc7ICAgICAgICAgICAgICAgICAgICAvL25vdCBvd25lZA0KKw0K
KyAgICAgICAgQ1dpZGdldFByZWZlcmVuY2VzKiBpUHJlZmVyZW5jZXM7DQorICAgICAgICBUV2lk
Z2V0UmVuZGVyZXIqIGlXaWRnZXRSZW5kZXJlcjsNCisNCisgICAgICAgIHN0cnVjdCBUTWVudUl0
ZW0NCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgSEJ1ZkMqIGlUZXh0Ow0KKyAgICAgICAg
ICAgIFRJbnQgaUNtZElkOw0KKyAgICAgICAgICAgIH07DQorDQorICAgICAgICBSQXJyYXk8VE1l
bnVJdGVtPiBpTWVudUl0ZW1zOw0KKw0KKyAgICAgICAgVEludCAgICBpV2lkZ2V0SWQ7DQorICAg
ICAgICBUQm9vbCAgIGlOYXZpZ2F0aW9uRW5hYmxlZDsNCisgICAgICAgIFRCb29sICAgaVBhZ2VT
Y2FsZXJXYXNFbmFibGVkOw0KKyAgICAgICAgSEJ1ZkMqICBpV2lkZ2V0QmFzZVBhdGg7DQorICAg
ICAgICBIQnVmQyogIGlXaWRnZXRCdW5kbGVJZDsNCisNCisgICAgICAgIE1XaWRnZXRFbmdpbmVC
cmlkZ2UqIGlXaWRnZXRFbmdpbmVCcmlkZ2U7DQorICAgICAgICBNV2lkZ2V0Q2FsbGJhY2sqIGlX
aWRnZXRDYWxsYmFjazsNCisNCisgICAgICAgIFJQdHJIYXNoTWFwPFREZXNDLFRJbnQ+IGlBcHBV
aWRNYXA7DQorICAgICAgICBSTGlicmFyeSBpTGlicmFyeTsNCisNCisgICAgfTsNCisNCisjZW5k
aWYNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFByZWZlcmVuY2VzLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFByZWZlcmVuY2VzLmgJ
KHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRQcmVmZXJlbmNl
cy5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw3NCBAQA0KKy8qDQorKiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktpdFdpZGdldEludGVyZmFjZS5oDQorKiAg
UGFydCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVzY3Jp
cHRpb24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChjKSAy
MDA0IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBkb2N1
bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBwcm90
ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJvZHVj
aW5nLCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxsIG9m
IHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0KKyog
IE5va2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlkZW50
aWFsDQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3RoZXJz
IHdpdGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBvcmF0
aW9uLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisjaWZuZGVmIF9fV0lER0VU
RU5HSU5FUFJFRkVSRU5DRVMNCisjZGVmaW5lIF9fV0lER0VURU5HSU5FUFJFRkVSRU5DRVMNCisN
CisvLyAgSU5DTFVERVMNCisjaW5jbHVkZSA8ZTMyYmFzZS5oPg0KKyNpbmNsdWRlIDxlMzJoYXNo
dGFiLmg+DQorLy8gQ09OU1RBTlRTDQorDQorLy8gTUFDUk9TDQorDQorLy8gREFUQSBUWVBFUw0K
Kw0KKy8vIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyBGT1JXQVJEIERFQ0xBUkFUSU9ODQor
Y2xhc3MgQ1dpZGdldEV4dGVuc2lvbjsNCisNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKy8qKg0K
KyogIENXaWRnZXRQcmVmZXJlbmNlcw0KKyoNCisqICBAbGliIHdpZGdldGVuZ2luZS5kbGwNCisq
ICBAc2luY2UgMy4xDQorKi8NCitjbGFzcyBDV2lkZ2V0UHJlZmVyZW5jZXMgOiBwdWJsaWMgQ0Jh
c2UNCisgICAgew0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICBzdGF0aWMgQ1dpZGdldFByZWZl
cmVuY2VzKiBOZXdMKENXaWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICAg
ICAgc3RhdGljIENXaWRnZXRQcmVmZXJlbmNlcyogTmV3TEMoQ1dpZGdldEV4dGVuc2lvbiYgYVdp
ZGdldEV4dGVuc2lvbik7DQorICAgICAgICB+Q1dpZGdldFByZWZlcmVuY2VzKCk7DQorDQorICAg
IHB1YmxpYzoNCisgICAgICAgIHZvaWQgTG9hZEwoKTsNCisgICAgICAgIHZvaWQgU2F2ZUwoKTsN
CisgICAgICAgIFRJbnQgUHJlZmVyZW5jZUwoY29uc3QgVERlc0MmIGFOYW1lLCBUUHRyQyYgYVZh
bHVlKTsNCisgICAgICAgIHZvaWQgU2V0UHJlZmVyZW5jZUwoY29uc3QgVERlc0MmIGFOYW1lLCBj
b25zdCBURGVzQyYgYVZhbHVlKTsNCisNCisgICAgcHJvdGVjdGVkOg0KKyAgICAgICAgdm9pZCBF
bXB0eSgpOw0KKyAgICAgICAgdm9pZCBDcmVhdGVGaWxlUGF0aEwoKTsNCisgICAgICAgIEhCdWZD
KiBNYWtlS2V5TEMoY29uc3QgVERlc0MmIGFOYW1lKTsNCisNCisgICAgcHJvdGVjdGVkOg0KKyAg
ICAgICAgQ1dpZGdldFByZWZlcmVuY2VzKENXaWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNp
b24pOw0KKyAgICAgICAgdm9pZCBDb25zdHJ1Y3RMKCk7DQorDQorICAgIHByaXZhdGU6DQorICAg
ICAgICBSUHRySGFzaE1hcDxURGVzQyxURGVzQz4gaU1hcDsNCisgICAgICAgIEhCdWZDKiBpRmls
ZVBhdGg7DQorICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiBpV2lkZ2V0RXh0ZW5zaW9uOyAvL25v
dCBvd25lZA0KKw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmll
dy9pbmMvV2lkZ2V0UmVuZGVyZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmll
dy9pbmMvV2lkZ2V0UmVuZGVyZXIuaAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvQnJvd3NlclZp
ZXcvaW5jL1dpZGdldFJlbmRlcmVyLmgJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDc4IEBADQor
LyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5hbWUgICAgICAgIDogV2lkZ2V0RW5n
aW5lUmVuZGVyZXIuaA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldElu
dGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0K
KyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVy
aWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRl
ciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAg
Tm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyog
IGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcs
IGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0
dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNv
IGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUg
ZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2Vu
dCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQor
DQorI2lmbmRlZiBfX1dJREdFVEVOR0lORVJFTkRFUkVSDQorI2RlZmluZSBfX1dJREdFVEVOR0lO
RVJFTkRFUkVSDQorDQorLy8gIElOQ0xVREVTDQorI2luY2x1ZGUgPGUzMmJhc2UuaD4NCisvLyBD
T05TVEFOVFMNCisNCisvLyBNQUNST1MNCisNCisvLyBEQVRBIFRZUEVTDQorDQorLy8gRlVOQ1RJ
T04gUFJPVE9UWVBFUw0KKw0KKy8vIEZPUldBUkQgREVDTEFSQVRJT04NCitjbGFzcyBDV2ViS2l0
VmlldzsNCitjbGFzcyBDV2luZG93R2M7DQorY2xhc3MgQ0Zic0JpdG1hcDsNCisNCisvLyBDTEFT
UyBERUNMQVJBVElPTg0KKw0KKy8qKg0KKyogIFRXaWRnZXRSZW5kZXJlcg0KKyoNCisqICBAbGli
IHdpZGdldGVuZ2luZS5kbGwNCisqICBAc2luY2UgMy4xDQorKi8gICAgDQorY2xhc3MgVFdpZGdl
dFJlbmRlcmVyDQorICAgIHsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgVFdpZGdldFJlbmRl
cmVyKENXZWJLaXRWaWV3JiBhV2ViS2l0Vmlldyk7DQorICAgICAgICB+VFdpZGdldFJlbmRlcmVy
KCk7DQorDQorICAgIHB1YmxpYzogICAgDQorICAgICAgICB2b2lkIFByZXBhcmVGb3JUcmFuc2l0
aW9uTChjb25zdCBURGVzQyYgYVRyYW5zaXRpb24pOw0KKyAgICAgICAgdm9pZCBQZXJmb3JtVHJh
bnNpdGlvbkwoKTsNCisgICAgICAgIA0KKyAgICBwdWJsaWM6DQorICAgICAgICB2b2lkIFRyYW5z
aXRpb25DYigpOw0KKyAgICAgICAgVEJvb2wgVHJhbnNpdGlvbkluUHJvZ3Jlc3MoKSB7IHJldHVy
biBpVHJhbnNpdGlvbkJpdG1hcCE9MDsgfQ0KKyAgICAgICAgdm9pZCBEcmF3VHJhbnNpdGlvbihD
V2luZG93R2MmIGdjLCBDRmJzQml0bWFwKiBhQ3VycmVudEJpdG1hcCk7DQorDQorICAgIHByb3Rl
Y3RlZDoNCisgICAgICAgIHZvaWQgQ3JlYXRlVHJhbnNpdGlvbkJpdG1hcEwoKTsNCisgICAgICAg
IHZvaWQgRGVzdHJveVRyYW5zaXRpb25CaXRtYXAoKTsNCisgICAgICAgIHZvaWQgQ3JlYXRlRmFk
ZU1hc2tMKCk7DQorICAgICAgICB2b2lkIERlc3Ryb3lGYWRlTWFzaygpOw0KKyAgICAgICAgdm9p
ZCBEcmF3RmFkZU1hc2tMKCk7DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBDV2ViS2l0Vmll
dyogaVdlYktpdFZpZXc7DQorICAgICAgICBDRmJzQml0bWFwKiBpVHJhbnNpdGlvbkJpdG1hcDsN
CisgICAgICAgIENGYnNCaXRtYXAqIGlGYWRlTWFzazsNCisgICAgICAgIENQZXJpb2RpYyogaVRy
YW5zaXRpb25UaW1lcjsNCisgICAgICAgIFRJbnQgaVRyYW5zaXRpb25Db3VudDsgICAgICAgIA0K
KyAgICAgICAgICAgICAgICANCisgICAgfTsNCisgICAgICAgIA0KKyNlbmRpZg0KSW5kZXg6IFdl
YktpdC9Ccm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9LZXlFdmVudEhhbmRsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtNTQ1LDcgKzU0NSw3IEBADQogICAgICAgICAgICAgew0KICAgICAgICAg
ICAgIGlmKCBpV2ViS2l0Vmlldy0+Rm9jdXNlZEVsZW1lbnRUeXBlKCkgPT0gVEJyQ3RsRGVmczo6
RUVsZW1lbnROb25lDQogICAgICAgICAgICAgICAgICYmIGFFdmVudENvZGUgPT0gRUV2ZW50S2V5
RG93biAmJiBhS2V5RXZlbnQuaVJlcGVhdHMgPT0gMA0KLSAgICAgICAgICAgICAgICAvKiYmIGlX
ZWJLaXRWaWV3LT5XZWJLaXRDb250cm9sKCkuQnJDdGwoKS5DYXBhYmlsaXRpZXMoKSAmIFRCckN0
bERlZnM6OkVDYXBhYmlsaXR5VG9vbEJhciovICkNCisgICAgICAgICAgICAgICAgJiYgaVdlYktp
dFZpZXctPldlYktpdENvbnRyb2woKS5CckN0bCgpLkNhcGFiaWxpdGllcygpICYgVEJyQ3RsRGVm
czo6RUNhcGFiaWxpdHlUb29sQmFyICkNCiAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICBpV2ViS2l0Vmlldy0+TGF1bmNoVG9vbEJhckwoKTsNCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEVLZXlXYXNDb25zdW1lZDsNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL3dlYmtp
dGJyaWRnZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL3dlYmtp
dGJyaWRnZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMv
d2Via2l0YnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTUxLDYgKzUxLDkgQEANCiAjaW5j
bHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCINCiAjaW5jbHVkZSAiTG9hZGVyVXRpbHMuaCINCiAj
aW5jbHVkZSAiV2ViS2l0TG9nZ2VyLmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisj
aW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRT
DQogDQogLy9DT05TVEFOVFMNCiBfTElUKEtEYXRlU3RyaW5nLCAiJS1CJTowJUolOjElVCU6MiVT
JS4lKkM0JTozJStCIik7DQpAQCAtMTM1MCw0ICsxMzUzLDE1IEBADQogICAgIH0NCiAgIH0NCiAN
CisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK0tKUzo6T2JqZWN0SW1wKiBDV2ViS2l0QnJp
ZGdlOjpjcmVhdGVXaWRnZXRPYmplY3QoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpDQorICAgIHsNCisg
ICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IGlGcmFtZS0+V2ViS2l0VmlldygpLldlYktp
dENvbnRyb2woKS5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgaWYod2RndEV4dCkNCisgICAgICAg
ew0KKyAgICAgICByZXR1cm4gd2RndEV4dC0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4ZWMpOw0KKyAg
ICAgICB9DQorICAgIHJldHVybiAwOw0KKyAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURH
RVRTDQogLy8gZW5kIG9mIGZpbGUNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktp
dENvbnRyb2wuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJL
aXRDb250cm9sLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3Ny
Yy9XZWJLaXRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTgxLDYgKzgxLDkgQEANCiAj
aW5jbHVkZSAiV2ViQ29yZUhpc3RvcnkuaCINCiAjaW5jbHVkZSAiSHR0cENhY2hlTWFuYWdlci5o
Ig0KICNpbmNsdWRlICJTdGF0aWNJbWFnZURlY29kZXIuaCINCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisjZW5kaWYgLy9SRF9CUk9X
U0VSX1dJREdFVFMNCiANCiAjaWZkZWYgUkRfMzJfQlJPV1NFUg0KICNpbmNsdWRlICJQbHVnaW5D
b250ZW50UGxheWVyLmgiDQpAQCAtNjI3LDYgKzYzMCw5IEBADQogDQogICAgIC8vIGNsZWF1cCB0
aGUgc3RhdGljIG9iamVjdA0KICAgICBDU3RhdGljT2JqZWN0Q29udGFpbmVyOjpJbnN0YW5jZSgp
LkRlcmVmKCk7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgZGVsZXRlIGlXaWRn
ZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgIH0NCiANCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTIwOTAsNiArMjA5NiwyMiBAQA0KICAgICAgICAg
Q1dlYkNvcmVCcmlkZ2U6OlNldERlZmVyc1RpbWVycyggRUZhbHNlICk7DQogICAgICAgICB9DQog
ICAgIH0NCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gQ1dlYktpdENvbnRyb2w6OkNyZWF0ZVdpZGdldEV4dGVuc2lvbg0KKy8vDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK01XaWRnZXRFeHRlbnNpb24qIENXZWJLaXRDb250
cm9sOjpDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxi
YWNrKQ0KKyAgICB7DQorICAgIGlmKCAhaVdpZGdldEV4dGVuc2lvbiApDQorICAgICAgICB7DQor
ICAgICAgICBpV2lkZ2V0RXh0ZW5zaW9uID0gQ1dpZGdldEV4dGVuc2lvbjo6TmV3TCgqaVdlYktp
dFZpZXcsYVdpZGdldENhbGxiYWNrKTsNCisgICAgICAgIH0NCisgICAgUGx1Z2luSGFuZGxlcigp
LkxvYWRQbHVnaW5zU3luY0woKTsNCisgICAgcmV0dXJuIGlXaWRnZXRFeHRlbnNpb247DQorICAg
IH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAjaWZkZWYgUkRfMzJfQlJPV1NFUg0K
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENhbGxlZCB3aGVuIHVzZXIgY2xpY2tzIGEg
cGx1Z2luIHdoaWNoIGlzIGFibGUgdG8gYWNjZXB0IHVzZXIgaW5wdXQsDQpJbmRleDogV2ViS2l0
L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9C
cm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktp
dC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02MCw2
ICs2MCwxMSBAQA0KICNpbmNsdWRlICJXZWJLaXRTdXJmYWNlLmgiDQogI2luY2x1ZGUgIldlYktp
dFRvb2xCYXJJbnRlcmZhY2UuaCINCiAjaW5jbHVkZSAiVG9vbEJhci5oIg0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNpbmNsdWRl
ICJXaWRnZXRFbmdpbmVCcmlkZ2UuaCINCisjaW5jbHVkZSAiV2lkZ2V0UmVuZGVyZXIuaCINCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAjaW5jbHVkZSAiRmVhdE1nci5oIg0KIA0KIA0K
QEAgLTYxMyw2ICs2MTgsMTcgQEANCiAgICAgICAgIHJldHVybjsNCiAgICAgICAgIH0NCiAgICAg
U2V0Vmlld1Zpc2libGUoYVZpc2libGUpOw0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQor
ICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0
ZW5zaW9uKCk7DQorICAgIGlmKCB3ZGd0RXh0ICkNCisgICAgICAgIHsNCisgICAgICAgIE1XaWRn
ZXRFbmdpbmVCcmlkZ2UqIHdkZ3RCcmlkZ2UgPSAmd2RndEV4dC0+V2lkZ2V0RW5naW5lQnJpZGdl
KCk7DQorICAgICAgICBpZiggd2RndEJyaWRnZSApDQorICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgIHdkZ3RCcmlkZ2UtPlNldFdpZGdldFZpc2liaWxpdHkoYVZpc2libGUpOw0KKyAgICAgICAg
ICAgIH0NCisgICAgICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfQ0K
IA0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTg3NCw2ICs4OTAsMTcgQEANCiAgICAg
Ly8gcHV0IG9mZnNjcmVlbiBiaXRtYXAgb250byB0aGUgc2NyZWVuDQogICBpUmVuZGVyVGFyZ2V0
LT5GbGlwKCBSZWN0KCkuaVRsLCBnYyApOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRT
DQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0
RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAgICAgew0KKyAgICAgICAgVFdp
ZGdldFJlbmRlcmVyKiB3aWRnZXRSZW5kZXJlciA9IGlXZWJLaXRDb250cm9sLT5XaWRnZXRFeHRl
bnNpb24oKS0+V2lkZ2V0UmVuZGVyZXIoKTsNCisgICAgICAgIGlmICh3aWRnZXRSZW5kZXJlciAm
JiB3aWRnZXRSZW5kZXJlci0+VHJhbnNpdGlvbkluUHJvZ3Jlc3MoKSkNCisgICAgICAgICAgICB7
DQorICAgICAgICAgICAgd2lkZ2V0UmVuZGVyZXItPkRyYXdUcmFuc2l0aW9uKGdjLCBPZmZzY3Jl
ZW5CaXRtYXAoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JS
T1dTRVJfV0lER0VUUw0KICAgICBpZiAoaUlzUGFnZVNjYWxlckVuYWJsZWQpDQogICAgICAgICB7
DQogICAgICAgICBpUGFnZVNjYWxlci0+RHJhdyggZ2MsYVJlY3QgKTsNCkluZGV4OiBXZWJLaXQv
QnJvd3NlclZpZXcvc3JjL1dpZGdldEV4dGVuc2lvbi5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldEV4dGVuc2lvbi5jcHAJKHJldmlzaW9uIDApDQorKysg
V2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSw1MTAgQEANCisvKg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKiAgTmFt
ZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRlcmZhY2UuY3BwDQorKiAgUGFydCBvZiAgICAgOiBX
ZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVzY3JpcHRpb24gOg0KKyogIFZl
cnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChjKSAyMDA0IE5va2lhIENvcnBv
cmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGFuZCBh
bnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkgY29weXJp
Z2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBhcmUg
cmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9yaW5nLCBh
ZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0ZXJpYWwg
cmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0KKyogIE5va2lhIENvcnBvcmF0
aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlkZW50aWFsDQorKiAgaW5mb3Jt
YXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQgdGhlDQor
KiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBvcmF0aW9uLg0KKyogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQorKi8NCisNCisvLyBJTkNMVURFIEZJTEVTDQorI2luY2x1ZGUgPGUz
MnN0ZC5oPg0KKyNpbmNsdWRlIDxlaWtlbnYuaD4NCisjaW5jbHVkZSA8YXBnY2xpLmg+DQorI2lu
Y2x1ZGUgPGFwZ3Rhc2suaD4NCisjaW5jbHVkZSA8YnJvd3NlcmxhdW5jaGVyLmg+DQorDQorI2lu
Y2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNpbmNsdWRlICJXaWRnZXRQcmVmZXJlbmNlcy5o
Ig0KKyNpbmNsdWRlICJXaWRnZXRSZW5kZXJlci5oIg0KKyNpbmNsdWRlICJXaWRnZXRFdmVudEhh
bmRsZXIuaCINCisjaW5jbHVkZSAiV2ViQ29yZVdpZGdldC5oIg0KKyNpbmNsdWRlICJXZWJLaXRD
b250cm9sLmgiDQorI2luY2x1ZGUgIldlYktpdEN1cnNvci5oIg0KKyNpbmNsdWRlICJXZWJLaXRG
cmFtZS5oIg0KKyNpbmNsdWRlICJXZWJLaXRWaWV3LmgiDQorI2luY2x1ZGUgIkJyQ3RsLmgiDQor
I2luY2x1ZGUgIkJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIuaCINCisvLyNpbmNsdWRlICJTY3JvbGxi
YXIuaCINCisNCisvLyBFWFRFUk5BTCBEQVRBIFNUUlVDVFVSRVMNCisNCisvLyBFWFRFUk5BTCBG
VU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gQ09OU1RBTlRTDQorDQorLy8gTUFDUk9TDQorDQor
Ly8gTE9DQUwgQ09OU1RBTlRTIEFORCBNQUNST1MNCitjb25zdCBUSW50IEtPcHRpb25zQ21kSWQg
PSA2MDAwOw0KK2NvbnN0IFRJbnQgS01heE9wdGlvbnNNZW51ID0gMjU7DQorY29uc3QgVEludCBL
TWF4T3B0aW9uc01lbnVJdGVtU2l6ZSA9IDI1NjsgLy9ieXRlcw0KKw0KKw0KKy8vLw0KK2NvbnN0
IFRJbnQgS01lZGlhR2FsbGVyeVVpZCA9IDB4MTAxRjg1OTk7DQorX0xJVChLTWVkaWFHYWxsZXJ5
LCJtZWRpYWdhbGxlcnkiKTsNCitjb25zdCBUSW50IEtXZWJCcm93c2VyVWlkID0gMHgxMDAwOEQz
OTsNCitfTElUKEtXZWJCcm93c2VyLCJ3ZWJicm93c2VyIik7DQorY29uc3QgVEludCBLQ2FtQXBw
RW5naW5lVWlkID0gMHgxMDFGODU3QTsNCitfTElUKEtDYW1BcHBFbmdpbmUsImNhbWVyYSIpOw0K
Kw0KKy8vIE1PRFVMRSBEQVRBIFNUUlVDVFVSRVMNCit1c2luZyBuYW1lc3BhY2UgS0pTOw0KKw0K
Ky8vIExPQ0FMIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8gQ1dpZGdldEVuZ2luZUNhbGxCYWNrOjpOZXdMDQorLy8NCisvLw0KKy8vDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRFeHRlbnNpb24qIENXaWRnZXRFeHRlbnNpb246Ok5l
d0woDQorICAgIENXZWJLaXRWaWV3JiBhV2ViS2l0VmlldywNCisgICAgTVdpZGdldENhbGxiYWNr
JiBhV2lkZ2V0Q2FsbGJhY2sgKQ0KKyAgICB7DQorICAgIENXaWRnZXRFeHRlbnNpb24qIHNlbGYg
PSBuZXcgKEVMZWF2ZSkgQ1dpZGdldEV4dGVuc2lvbihhV2ViS2l0VmlldyxhV2lkZ2V0Q2FsbGJh
Y2spOw0KKyAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHNlbGYpOw0KKyAgICBzZWxmLT5Db25zdHJ1
Y3RMKCk7DQorICAgIENsZWFudXBTdGFjazo6UG9wKCk7DQorICAgIHJldHVybiBzZWxmOw0KKyAg
ICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkNX
aWRnZXRFeHRlbnNpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
Q1dpZGdldEV4dGVuc2lvbjo6Q1dpZGdldEV4dGVuc2lvbigNCisgICAgQ1dlYktpdFZpZXcmIGFX
ZWJLaXRWaWV3LA0KKyAgICBNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjayApDQorICAg
IDppV2ViS2l0VmlldygmYVdlYktpdFZpZXcpLA0KKyAgICBpV2lkZ2V0Q2FsbGJhY2soJmFXaWRn
ZXRDYWxsYmFjaykNCisgICAgew0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vIENXaWRnZXRFeHRlbnNpb246On5DV2lkZ2V0RXh0ZW5zaW9uDQorLy8NCisvLw0KKy8vDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRFeHRlbnNpb246On5DV2lkZ2V0RXh0ZW5z
aW9uKCkNCisgICAgew0KKyAgICBpZiAoaVByZWZlcmVuY2VzKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgVFJBUF9JR05PUkUoaVByZWZlcmVuY2VzLT5TYXZlTCgpKTsNCisgICAgICAgIH0NCisgICAg
ZGVsZXRlIGlQcmVmZXJlbmNlczsNCisgICAgZGVsZXRlIGlXaWRnZXRSZW5kZXJlcjsNCisgICAg
ZGVsZXRlIGlXaWRnZXRFbmdpbmVCcmlkZ2U7DQorICAgIGRlbGV0ZSBpV2lkZ2V0QmFzZVBhdGg7
DQorICAgIGRlbGV0ZSBpV2lkZ2V0QnVuZGxlSWQ7DQorICAgIGlBcHBVaWRNYXAuUmVzZXRBbmRE
ZXN0cm95KCk7DQorICAgIGlMaWJyYXJ5LkNsb3NlKCk7DQorICAgIH0NCisNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6Q29uc3RydWN0TA0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkNv
bnN0cnVjdEwoKQ0KKyAgICB7DQorDQorICAgIGlQcmVmZXJlbmNlcyA9IENXaWRnZXRQcmVmZXJl
bmNlczo6TmV3TCgqdGhpcyk7DQorICAgIGlXaWRnZXRSZW5kZXJlciA9IG5ldyAoRUxlYXZlKSBU
V2lkZ2V0UmVuZGVyZXIoKmlXZWJLaXRWaWV3KTsNCisgICAgTG9hZFdpZGdldEVuZ2luZURsbEwo
KTsNCisgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0T2JzZXJ2ZXIoKnRoaXMpOw0KKyAgICBD
cmVhdGVBcHBIYXNoVGFibGVMKCk7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6Q3JlYXRlQXBwSGFzaFRhYmxlTA0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkNy
ZWF0ZUFwcEhhc2hUYWJsZUwoKQ0KKyAgICB7DQorICAgIFRJbnQqIHVpZG1nID0gbmV3IFRJbnQo
S01lZGlhR2FsbGVyeVVpZCk7DQorICAgIEhCdWZDKiBidWZtZWRpYSA9IEhCdWZDOjpOZXdMKFRQ
dHJDKEtNZWRpYUdhbGxlcnkpLkxlbmd0aCgpKTsNCisgICAgKmJ1Zm1lZGlhID0gS01lZGlhR2Fs
bGVyeTsNCisNCisgICAgVEludCogdWlkd2ViID0gbmV3IFRJbnQoS1dlYkJyb3dzZXJVaWQpOw0K
KyAgICBIQnVmQyogYnVmd2ViID0gSEJ1ZkM6Ok5ld0woVFB0ckMoS1dlYkJyb3dzZXIpLkxlbmd0
aCgpKTsNCisgICAgKmJ1ZndlYiA9IEtXZWJCcm93c2VyOw0KKw0KKyAgICBUSW50KiB1aWRjYW0g
PSBuZXcgVEludChLQ2FtQXBwRW5naW5lVWlkKTsNCisgICAgSEJ1ZkMqIGJ1ZmNhbSA9IEhCdWZD
OjpOZXdMKFRQdHJDKEtDYW1BcHBFbmdpbmUpLkxlbmd0aCgpKTsNCisgICAgKmJ1ZmNhbSA9IEtD
YW1BcHBFbmdpbmU7DQorDQorICAgIGlBcHBVaWRNYXAuSW5zZXJ0TChidWZtZWRpYSx1aWRtZyk7
DQorICAgIGlBcHBVaWRNYXAuSW5zZXJ0TChidWZ3ZWIsdWlkd2ViKTsNCisgICAgaUFwcFVpZE1h
cC5JbnNlcnRMKGJ1ZmNhbSx1aWRjYW0pOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkxhdW5jaEFwcGxpY2F0aW9uTA0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Okxh
dW5jaEFwcGxpY2F0aW9uTChjb25zdCBUVWlkJiBhVWlkLCBjb25zdCBURGVzQyYgYVBhcmFtKQ0K
KyAgICB7DQorDQorICAgIFJBcGFMc1Nlc3Npb24gYXBhTHNTZXNzaW9uOw0KKyAgICBUQXBhVGFz
a0xpc3QgdGFza0xpc3QoQ0Vpa29uRW52OjpTdGF0aWMoKS0+V3NTZXNzaW9uKCkpOw0KKyAgICBU
QXBhVGFzayB0YXNrID0gdGFza0xpc3QuRmluZEFwcChhVWlkKTsNCisgICAgaWYgKHRhc2suRXhp
c3RzKCkpDQorICAgICAgICB7DQorICAgICAgICB0YXNrLkJyaW5nVG9Gb3JlZ3JvdW5kKCk7DQor
ICAgICAgICBpZiAoYVBhcmFtLkxlbmd0aCgpID4gMCkNCisgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgSEJ1ZkM4KiBwYXJhbTggPSBIQnVmQzg6Ok5ld0xDKGFQYXJhbS5MZW5ndGgoKSk7DQor
ICAgICAgICAgICAgcGFyYW04LT5EZXMoKS5BcHBlbmQoYVBhcmFtKTsNCisgICAgICAgICAgICB0
YXNrLlNlbmRNZXNzYWdlKFRVaWQ6OlVpZCgwKSwqcGFyYW04KTsNCisgICAgICAgICAgICBDbGVh
bnVwU3RhY2s6OlBvcEFuZERlc3Ryb3kocGFyYW04KTsNCisgICAgICAgICAgICB9DQorICAgICAg
ICB9DQorICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgIFRJbnQgZUNvbm5lY3QgPSBLRXJy
Tm9uZTsNCisgICAgICAgIGlmICghYXBhTHNTZXNzaW9uLkhhbmRsZSgpKQ0KKyAgICAgICAgICAg
IHsNCisgICAgICAgICAgICBlQ29ubmVjdCA9IGFwYUxzU2Vzc2lvbi5Db25uZWN0KCk7DQorICAg
ICAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGVDb25uZWN0ID09IEtFcnJOb25lKQ0KKyAgICAg
ICAgICAgIHsNCisgICAgICAgICAgICBUVGhyZWFkSWQgdGhyZWFkSWQ7DQorICAgICAgICAgICAg
YXBhTHNTZXNzaW9uLlN0YXJ0RG9jdW1lbnQoYVBhcmFtLCBhVWlkLCB0aHJlYWRJZCk7DQorICAg
ICAgICAgICAgYXBhTHNTZXNzaW9uLkNsb3NlKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAg
fQ0KKw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRF
eHRlbnNpb246Ok9wZW5BcHBsaWNhdGlvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9wZW5BcHBsaWNhdGlvbihjb25zdCBU
RGVzQyYgYUFwcE5hbWUsIGNvbnN0IFREZXNDJiBhUGFyYW0pDQorICAgIHsNCisNCisgICAgVElu
dCogdWlkID0gaUFwcFVpZE1hcC5GaW5kKGFBcHBOYW1lKTsNCisgICAgaWYgKHVpZCkNCisgICAg
ICAgIHsNCisgICAgICAgIFRVaWQgdWlkQXBwID0gVFVpZDo6VWlkKCp1aWQpOw0KKyAgICAgICAg
TGF1bmNoQXBwbGljYXRpb25MKHVpZEFwcCxhUGFyYW0pOw0KKyAgICAgICAgfQ0KKw0KKyAgICB9
DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246Ok9wZW5V
cmwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0
RXh0ZW5zaW9uOjpPcGVuVXJsKGNvbnN0IFREZXNDJiBhVXJsKQ0KKyAgICB7DQorICAgIEhCdWZD
KiBwYXJhbSA9IEhCdWZDOjpOZXdMQyhhVXJsLkxlbmd0aCgpKzIpOw0KKyAgICBwYXJhbS0+RGVz
KCkuQXBwZW5kKF9MKCI0ICIpKTsNCisgICAgcGFyYW0tPkRlcygpLkFwcGVuZChhVXJsKTsNCisg
ICAgVFJBUF9JR05PUkUoTGF1bmNoQXBwbGljYXRpb25MKFRVaWQ6OlVpZChLV2ViQnJvd3NlclVp
ZCksICpwYXJhbSkpOw0KKyAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3kocGFyYW0pOw0K
KyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246
OlByZWZlcmVuY2VGb3JLZXkNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorVEludCBDV2lkZ2V0RXh0ZW5zaW9uOjpQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXNDJiBh
S2V5LCBUUHRyQyYgYVZhbHVlKQ0KKyAgICB7DQorICAgIHJldHVybiBpUHJlZmVyZW5jZXMtPlBy
ZWZlcmVuY2VMKGFLZXksIGFWYWx1ZSk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6UHJlcGFyZUZvclRyYW5zaXRpb24NCisvLw0KKy8v
DQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpQ
cmVwYXJlRm9yVHJhbnNpdGlvbihjb25zdCBURGVzQyYgYVRyYW5zaXRpb24pDQorICAgIHsNCisg
ICAgaVdpZGdldFJlbmRlcmVyLT5QcmVwYXJlRm9yVHJhbnNpdGlvbkwoYVRyYW5zaXRpb24pOw0K
KyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246
OlBlcmZvcm1UcmFuc2l0aW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6UGVyZm9ybVRyYW5zaXRpb24oKQ0KKyAgICB7DQor
ICAgIGlXaWRnZXRSZW5kZXJlci0+UGVyZm9ybVRyYW5zaXRpb25MKCk7DQorICAgIH0NCisNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0UHJlZmVyZW5j
ZUZvcktleQ0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENX
aWRnZXRFeHRlbnNpb246OlNldFByZWZlcmVuY2VGb3JLZXkoY29uc3QgVERlc0MmIGFLZXksIGNv
bnN0IFREZXNDJiBhVmFsdWUpDQorICAgIHsNCisgICAgaVByZWZlcmVuY2VzLT5TZXRQcmVmZXJl
bmNlTChhS2V5LCBhVmFsdWUpOw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlNldFNjcm9sbEJhcg0KKy8vDQorLy8NCisvLw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNldFNjcm9sbEJh
cihUQm9vbCAvKmFWaXNpYmxlKi8pDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXROYXZpZ2F0aW9uRW5hYmxlZA0KKy8v
DQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNp
b246OlNldE5hdmlnYXRpb25FbmFibGVkKFRCb29sIGFFbmFibGUpDQorICAgIHsNCisgICAgaU5h
dmlnYXRpb25FbmFibGVkID0gYUVuYWJsZTsNCisgICAgaVdlYktpdFZpZXctPlNldFRhYmJlZE5h
dmlnYXRpb24oICFhRW5hYmxlICk7DQorICAgIGlmICggaVdlYktpdFZpZXctPkN1cnNvcigpICkN
CisgICAgICAgIHsNCisgICAgICAgIGlXZWJLaXRWaWV3LT5DdXJzb3IoKS0+Q3Vyc29yVXBkYXRl
KCBhRW5hYmxlICk7DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6QWRkT3B0aW9uc01lbnVJdGVtDQorLy8NCisvLw0K
Ky8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RJbnQgQ1dpZGdldEV4dGVuc2lvbjo6QWRk
T3B0aW9uc01lbnVJdGVtKGNvbnN0IFREZXNDJiBhVGV4dCkNCisgICAgew0KKyAgICBUSW50IGNt
ZElkID0gKFRCckN0bERlZnM6OkVDb21tYW5kSWRCYXNlICsgVEJyQ3RsRGVmczo6RUNvbW1hbmRJ
ZFN1YnNjcmliZVRvQmFzZSArIEtPcHRpb25zQ21kSWQpICsgaU1lbnVJdGVtcy5Db3VudCgpOw0K
Kw0KKyAgICBpZiAoaU1lbnVJdGVtcy5Db3VudCgpIDw9IEtNYXhPcHRpb25zTWVudSAmJg0KKyAg
ICAgICAgYVRleHQuTGVuZ3RoKCkgPiAwICYmIGFUZXh0Lkxlbmd0aCgpIDw9IEtNYXhPcHRpb25z
TWVudUl0ZW1TaXplICkNCisgICAgICAgIHsNCisgICAgICAgIFRNZW51SXRlbSBpdGVtOw0KKyAg
ICAgICAgaXRlbS5pVGV4dCA9IGFUZXh0LkFsbG9jKCk7DQorICAgICAgICBpdGVtLmlDbWRJZCA9
IGNtZElkOw0KKyAgICAgICAgaU1lbnVJdGVtcy5BcHBlbmQoaXRlbSk7DQorICAgICAgICB9DQor
DQorICAgIHJldHVybiBjbWRJZDsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpDbGVhck9wdGlvbnNNZW51DQorLy8NCisvLw0KKy8vDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6Q2xlYXJPcHRp
b25zTWVudSgpDQorICAgIHsNCisNCisgICAgZm9yIChUSW50IG49MDsgbjxpTWVudUl0ZW1zLkNv
dW50KCk7IG4rKykNCisgICAgICAgIHsNCisgICAgICAgIGRlbGV0ZSBpTWVudUl0ZW1zW25dLmlU
ZXh0Ow0KKyAgICAgICAgfQ0KKw0KKyAgICBpTWVudUl0ZW1zLlJlc2V0KCk7DQorICAgIH0NCisN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6QWRkT3B0aW9u
TWVudUl0ZW1zTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lk
IENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbk1lbnVJdGVtc0woQ0Vpa01lbnVQYW5lJiBhTWVu
dVBhbmUpDQorICAgIHsNCisNCisgICAgaWYgKCBhTWVudVBhbmUuTnVtYmVyT2ZJdGVtc0luUGFu
ZSgpID4gMSkNCisgICAgICAgIHsNCisgICAgICAgIGFNZW51UGFuZS5EZWxldGVCZXR3ZWVuTWVu
dUl0ZW1zKCAwLCBhTWVudVBhbmUuTnVtYmVyT2ZJdGVtc0luUGFuZSgpLTIgKTsNCisgICAgICAg
IH0NCisNCisNCisgICAgZm9yIChUSW50IG49aU1lbnVJdGVtcy5Db3VudCgpLTE7IG4+PTA7IG4t
LSkNCisgICAgICAgIHsNCisgICAgICAgIENFaWtNZW51UGFuZUl0ZW06OlNEYXRhIG1lbnVEYXRh
Ow0KKyAgICAgICAgbWVudURhdGEuaUNvbW1hbmRJZCA9IGlNZW51SXRlbXNbbl0uaUNtZElkOw0K
KyAgICAgICAgbWVudURhdGEuaUNhc2NhZGVJZCA9IDA7DQorICAgICAgICBtZW51RGF0YS5pRmxh
Z3MgPSAwOw0KKyAgICAgICAgbWVudURhdGEuaVRleHQgPSAqaU1lbnVJdGVtc1tuXS5pVGV4dDsN
CisgICAgICAgIGFNZW51UGFuZS5JbnNlcnRNZW51SXRlbUwobWVudURhdGEsMCk7DQorICAgICAg
ICB9DQorDQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdl
dEV4dGVuc2lvbjo6T3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQNCisvLw0KKy8vDQorLy8NCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPcHRpb25zTWVudUl0
ZW1TZWxlY3RlZChUSW50IGFDb21tYW5kKQ0KKyAgICB7DQorICAgIGlmIChpV2lkZ2V0RW5naW5l
QnJpZGdlKQ0KKyAgICAgICAgew0KKyAgICAgICAgVEludCBuID0gYUNvbW1hbmQtKFRCckN0bERl
ZnM6OkVDb21tYW5kSWRCYXNlICsgVEJyQ3RsRGVmczo6RUNvbW1hbmRJZFN1YnNjcmliZVRvQmFz
ZSArIEtPcHRpb25zQ21kSWQpOw0KKyAgICAgICAgaWYgKG4+PTAgJiYgbjxpTWVudUl0ZW1zLkNv
dW50KCkpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIEhCdWZDKiBpdGVtVGV4dCA9IGlN
ZW51SXRlbXNbbl0uaVRleHQ7DQorICAgICAgICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+T3B0
aW9uc01lbnVJdGVtU2VsZWN0ZWQoKml0ZW1UZXh0KTsNCisgICAgICAgICAgICBPblNob3dTZWxl
Y3RlZCgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPbkhpZGVTZWxlY3RlZA0KKy8v
DQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNp
b246Ok9uSGlkZVNlbGVjdGVkKCkNCisgICAgew0KKyAgICBpZiAoaVdpZGdldEVuZ2luZUJyaWRn
ZSkNCisgICAgICAgIHsNCisgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlNldFdpZGdldFZp
c2liaWxpdHkoRUZhbHNlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPblNob3dTZWxlY3RlZA0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9u
U2hvd1NlbGVjdGVkKCkNCisgICAgew0KKyAgICBpZihpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAg
ICAgICAgew0KKyAgICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0V2lkZ2V0VmlzaWJpbGl0
eShFVHJ1ZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6Y3JlYXRlV2lkZ2V0T2JqZWN0DQorLy8NCisvLw0K
Ky8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0tKUzo6T2JqZWN0SW1wKiBDV2lkZ2V0RXh0
ZW5zaW9uOjpjcmVhdGVXaWRnZXRPYmplY3QoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpDQorICAgIHsN
CisgICAgaWYoaVdpZGdldEVuZ2luZUJyaWRnZSkNCisgICAgICAgew0KKyAgICAgICByZXR1cm4g
aVdpZGdldEVuZ2luZUJyaWRnZS0+V2lkZ2V0KGV4ZWMpOw0KKyAgICAgICB9DQorICAgIHJldHVy
biBOVUxMOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0
RXh0ZW5zaW9uOjpMb2FkV2lkZ2V0RW5naW5lRGxsTA0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6TG9hZFdpZGdldEVuZ2luZURsbEwo
KQ0KKyAgICB7DQorDQorICAgIGlmKCFpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAgICAgICAgew0K
Kw0KKyAgICAgICAgX0xJVCggS0Jyb3dzZXJXaWRnZXRFbmdpbmVOYW1lLCAid2lkZ2V0ZW5naW5l
LmRsbCIgKTsNCisgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvciggaUxpYnJhcnkuTG9hZCggS0Jy
b3dzZXJXaWRnZXRFbmdpbmVOYW1lICkgKTsNCisNCisgICAgICAgIFRMaWJyYXJ5RnVuY3Rpb24g
ZW50cnkgPSBpTGlicmFyeS5Mb29rdXAoMSk7DQorDQorICAgICAgICBpZiAoIWVudHJ5KQ0KKyAg
ICAgICAgICAgIFVzZXI6OkxlYXZlKEtFcnJOb3RGb3VuZCk7DQorDQorICAgICAgICAvL0NhbGwg
dGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGluc3RhbmNlIG9mIGNsYXNzDQorICAgICAgICBpV2lk
Z2V0RW5naW5lQnJpZGdlID0gKE1XaWRnZXRFbmdpbmVCcmlkZ2UqKSBlbnRyeSgpOw0KKyAgICAg
ICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0
ZW5zaW9uOjpTZXRQYXJhbUwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCit2
b2lkIENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQ
YXJhbXMgYVBhcmFtLCBjb25zdCBURGVzQyYgYVZhbHVlKQ0KKyAgICB7DQorICAgIHN3aXRjaChh
UGFyYW0pDQorICAgICAgICB7DQorICAgICAgICBjYXNlIFRCckN0bERlZnM6OkVXaWRnZXRCYXNl
UGF0aDoNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgaVdpZGdldEJhc2VQYXRoID0gYVZh
bHVlLkFsbG9jTCgpOw0KKyAgICAgICAgICAgIGlQcmVmZXJlbmNlcy0+TG9hZEwoKTsNCisgICAg
ICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgY2FzZSBUQnJDdGxEZWZz
OjpFV2lkZ2V0QnVuZGxlSWQ6DQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlXaWRnZXRC
dW5kbGVJZCA9IGFWYWx1ZS5BbGxvY0woKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAg
ICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAg
fQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpTZXRQYXJhbUwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCit2b2lk
IENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJh
bXMgYVBhcmFtLCBUVWludCBhVmFsdWUpDQorICAgIHsNCisgICAgc3dpdGNoKGFQYXJhbSkNCisg
ICAgICAgIHsNCisgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RVdpZGdldElkZW50aWZpZXI6DQor
ICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlXaWRnZXRJZCA9IGFWYWx1ZTsNCisgICAgICAg
ICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAg
ICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy9FTkQgT0YgRklMRQ0KKw0KKw0K
Kw0KKw0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UHJlZmVyZW5jZXMuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRQcmVmZXJlbmNl
cy5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRQcmVm
ZXJlbmNlcy5jcHAJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDI5MSBAQA0KKy8qDQorKiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktpdFdpZGdldEludGVyZmFj
ZS5jcHANCisqICBQYXJ0IG9mICAgICA6IFdlYkVuZ2luZS9XZWJLaXRXaWRnZXRJbnRlcmZhY2UN
CisqICBEZXNjcmlwdGlvbiA6DQorKiAgVmVyc2lvbiAgICAgOiAyLjEuMQ0KKyoNCisqICBDb3B5
cmlnaHQgKGMpIDIwMDQgTm9raWEgQ29ycG9yYXRpb24uDQorKiAgVGhpcyBtYXRlcmlhbCwgaW5j
bHVkaW5nIGRvY3VtZW50YXRpb24gYW5kIGFueSByZWxhdGVkDQorKiAgY29tcHV0ZXIgcHJvZ3Jh
bXMsIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgY29udHJvbGxlZCBieQ0KKyogIE5va2lhIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIGFyZSByZXNlcnZlZC4gQ29weWluZywNCisqICBpbmNsdWRp
bmcgcmVwcm9kdWNpbmcsIHN0b3JpbmcsIGFkYXB0aW5nIG9yIHRyYW5zbGF0aW5nLCBhbnkNCisq
ICBvciBhbGwgb2YgdGhpcyBtYXRlcmlhbCByZXF1aXJlcyB0aGUgcHJpb3Igd3JpdHRlbiBjb25z
ZW50IG9mDQorKiAgTm9raWEgQ29ycG9yYXRpb24uIFRoaXMgbWF0ZXJpYWwgYWxzbyBjb250YWlu
cyBjb25maWRlbnRpYWwNCisqICBpbmZvcm1hdGlvbiB3aGljaCBtYXkgbm90IGJlIGRpc2Nsb3Nl
ZCB0byBvdGhlcnMgd2l0aG91dCB0aGUNCisqICBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YgTm9r
aWEgQ29ycG9yYXRpb24uDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqLw0KKw0KKy8vIElO
Q0xVREUgRklMRVMNCisjaW5jbHVkZSA8ZTMyc3RkLmg+DQorI2luY2x1ZGUgPFMzMkZJTEUuSD4N
CisjaW5jbHVkZSA8ZjMyZmlsZS5oPg0KKyNpbmNsdWRlIDx1cmkxNi5oPg0KKyNpbmNsdWRlICJX
aWRnZXRQcmVmZXJlbmNlcy5oIg0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisNCisv
LyBFWFRFUk5BTCBEQVRBIFNUUlVDVFVSRVMNCisNCisvLyBFWFRFUk5BTCBGVU5DVElPTiBQUk9U
T1RZUEVTDQorDQorLy8gQ09OU1RBTlRTDQorY29uc3QgVEludCBLTWF4SW50TGVuZ3RoID0gMTA7
DQorY29uc3QgVEludCBLTWF4S2V5VmFsdWVTaXplID0gNDA5NjsgLy80IGsNCisNCitfTElUKCBL
S2V5Rm9ybWF0LCAiJWQuJVMiICk7DQorX0xJVCggS1ByZWZzRmlsZSwicHJlZnMuZGF0IiApOw0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0wN
CisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldFByZWZlcmVu
Y2VzKiBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0woQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4
dGVuc2lvbikNCisgICAgew0KKyAgICBDV2lkZ2V0UHJlZmVyZW5jZXMqIHNlbGYgPSBOZXdMQyhh
V2lkZ2V0RXh0ZW5zaW9uKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQb3AoIHNlbGYgKTsNCisgICAg
cmV0dXJuIHNlbGY7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
Q1dpZGdldFByZWZlcmVuY2VzOjpOZXdMQw0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCitDV2lkZ2V0UHJlZmVyZW5jZXMqIENXaWRnZXRQcmVmZXJlbmNlczo6TmV3TEMo
Q1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbikNCisgICAgew0KKyAgICBDV2lkZ2V0
UHJlZmVyZW5jZXMqIHNlbGYgPSBuZXcgKCBFTGVhdmUgKSBDV2lkZ2V0UHJlZmVyZW5jZXMoYVdp
ZGdldEV4dGVuc2lvbik7DQorICAgIENsZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCisgICAg
c2VsZi0+Q29uc3RydWN0TCgpOw0KKyAgICByZXR1cm4gc2VsZjsNCisgICAgfQ0KKw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OkNXaWRnZXRQcmVmZXJl
bmNlcw0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0UHJl
ZmVyZW5jZXM6OkNXaWRnZXRQcmVmZXJlbmNlcyhDV2lkZ2V0RXh0ZW5zaW9uJiBhV2lkZ2V0RXh0
ZW5zaW9uKQ0KKyAgICA6IGlXaWRnZXRFeHRlbnNpb24oJmFXaWRnZXRFeHRlbnNpb24pDQorICAg
IHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVy
ZW5jZXM6On5DV2lkZ2V0UHJlZmVyZW5jZXMNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorQ1dpZGdldFByZWZlcmVuY2VzOjp+Q1dpZGdldFByZWZlcmVuY2VzKCkNCisg
ICAgew0KKyAgICBpTWFwLlJlc2V0QW5kRGVzdHJveSgpOw0KKyAgICBpTWFwLkNsb3NlKCk7DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2Vz
OjpDb25zdHJ1Y3RMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3Zv
aWQgQ1dpZGdldFByZWZlcmVuY2VzOjpDb25zdHJ1Y3RMKCkNCisgICAgew0KKyAgICB9DQorDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6UHJlZmVyZW5j
ZUwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVEludCBDV2lkZ2V0
UHJlZmVyZW5jZXM6OlByZWZlcmVuY2VMKGNvbnN0IFREZXNDJiBhS2V5LCBUUHRyQyYgYVZhbHVl
KQ0KKyAgICB7DQorDQorICAgIFRJbnQgclN1Y2Nlc3MgPSBLRXJyTm90Rm91bmQ7DQorDQorICAg
IGlmIChhS2V5Lkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1ZVNpemUpDQorICAgICAgICB7DQorICAg
ICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xDKGFLZXkuTGVuZ3RoKCkrS01heEludExlbmd0
aCsxKTsNCisgICAgICAgIGtleS0+RGVzKCkuRm9ybWF0KCBLS2V5Rm9ybWF0LCBpV2lkZ2V0RXh0
ZW5zaW9uLT5HZXRXaWRnZXRJZCgpLCAmYUtleSApOw0KKw0KKyAgICAgICAgVERlc0MqIHJlcyA9
IGlNYXAuRmluZCgqa2V5KTsNCisgICAgICAgIGlmIChyZXMpDQorICAgICAgICAgICAgew0KKyAg
ICAgICAgICAgIGFWYWx1ZS5TZXQoKnJlcyk7DQorICAgICAgICAgICAgclN1Y2Nlc3MgPSBLRXJy
Tm9uZTsNCisgICAgICAgICAgICB9DQorDQorDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcChr
ZXkpOw0KKw0KKyAgICAgICAgfQ0KKw0KKyAgICAgcmV0dXJuIHJTdWNjZXNzOw0KKyAgICB9DQor
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6U2V0UHJl
ZmVyZW5jZUwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6U2V0UHJlZmVyZW5jZUwN
CisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0UHJl
ZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMKGNvbnN0IFREZXNDJiBhS2V5LCBjb25zdCBURGVzQyYg
YVZhbHVlKQ0KKyAgICB7DQorDQorICAgIGlmIChhS2V5Lkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1
ZVNpemUpDQorICAgICAgICB7DQorDQorICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xD
KGFLZXkuTGVuZ3RoKCkrS01heEludExlbmd0aCsxKTsNCisgICAgICAgIGtleS0+RGVzKCkuRm9y
bWF0KCBLS2V5Rm9ybWF0LCBpV2lkZ2V0RXh0ZW5zaW9uLT5HZXRXaWRnZXRJZCgpLCAmYUtleSAp
Ow0KKw0KKyAgICAgICAgaWYgKGFWYWx1ZS5MZW5ndGgoKSA8PSBLTWF4S2V5VmFsdWVTaXplKQ0K
KyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBIQnVmQyogdmFsdWUgPSBhVmFsdWUuQWxsb2NM
QygpOw0KKyAgICAgICAgICAgIGlNYXAuSW5zZXJ0TChrZXksdmFsdWUpOw0KKyAgICAgICAgICAg
IENsZWFudXBTdGFjazo6UG9wKHZhbHVlKTsNCisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cChrZXkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgaU1hcC5SZW1vdmUoa2V5KTsNCisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6
OlBvcEFuZERlc3Ryb3koa2V5KTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICB9DQorICAg
IH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2Vz
OjpTYXZlDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dp
ZGdldFByZWZlcmVuY2VzOjpTYXZlTCgpDQorICAgIHsNCisgICAgUkZzIGZzOw0KKyAgICBpZiAo
IGZzLkNvbm5lY3QoKSA9PSBLRXJyTm9uZSApDQorICAgICAgICB7DQorDQorICAgICAgICBDbGVh
bnVwQ2xvc2VQdXNoTCggZnMgKTsNCisNCisgICAgICAgIEhCdWZDKiBmaWxlUGF0aCA9IGZpbGVQ
YXRoID0gSEJ1ZkM6Ok5ld0xDKGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkuTGVu
Z3RoKCkgICsgS1ByZWZzRmlsZSgpLkxlbmd0aCgpKTsNCisNCisgICAgICAgIFRQdHIgZk5hbWUo
ZmlsZVBhdGgtPkRlcygpKTsNCisgICAgICAgIGZOYW1lLkFwcGVuZChpV2lkZ2V0RXh0ZW5zaW9u
LT5XaWRnZXRCYXNlUGF0aCgpKTsNCisgICAgICAgIGZOYW1lLkFwcGVuZChLUHJlZnNGaWxlKTsN
CisNCisgICAgICAgIFJGaWxlV3JpdGVTdHJlYW0gd3JpdGVTdHJlYW07DQorICAgICAgICBUSW50
IGZpbGVlcnJvciA9IHdyaXRlU3RyZWFtLlJlcGxhY2UoIGZzLCAqZmlsZVBhdGgsIEVGaWxlV3Jp
dGUgKTsNCisNCisgICAgICAgIGlmIChmaWxlZXJyb3IgIT0gS0Vyck5vbmUpDQorICAgICAgICAg
ICAgew0KKyAgICAgICAgICAgIGZzLkNyZWF0ZVByaXZhdGVQYXRoKEVEcml2ZUMpOw0KKyAgICAg
ICAgICAgIGZpbGVlcnJvciA9IHdyaXRlU3RyZWFtLkNyZWF0ZSggZnMsICpmaWxlUGF0aCwgRUZp
bGVXcml0ZSB8IEVGaWxlU2hhcmVFeGNsdXNpdmUgKTsNCisgICAgICAgICAgICB9DQorDQorICAg
ICAgICBpZiAoZmlsZWVycm9yID09IEtFcnJOb25lKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICBDbGVhbnVwQ2xvc2VQdXNoTCh3cml0ZVN0cmVhbSk7DQorDQorICAgICAgICAgICAgd3Jp
dGVTdHJlYW0uV3JpdGVJbnQzMkwoaU1hcC5Db3VudCgpKTsNCisgICAgICAgICAgICBUUHRySGFz
aE1hcEl0ZXI8VERlc0MsVERlc0M+IGl0KGlNYXApOw0KKyAgICAgICAgICAgIGNvbnN0IFREZXND
KiBrZXk7DQorICAgICAgICAgICAgY29uc3QgVERlc0MqIHZhbHVlOw0KKyAgICAgICAgICAgIHdo
aWxlICgoa2V5ID0gaXQuTmV4dEtleSgpKSAhPSAwKQ0KKyAgICAgICAgICAgICAgICB7DQorICAg
ICAgICAgICAgICAgIHZhbHVlID0gaXQuQ3VycmVudFZhbHVlKCk7DQorICAgICAgICAgICAgICAg
IHdyaXRlU3RyZWFtLldyaXRlSW50MzJMKGtleS0+TGVuZ3RoKCkpOw0KKyAgICAgICAgICAgICAg
ICB3cml0ZVN0cmVhbS5Xcml0ZUwoKmtleSk7DQorICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFt
LldyaXRlSW50MzJMKHZhbHVlLT5MZW5ndGgoKSk7DQorICAgICAgICAgICAgICAgIHdyaXRlU3Ry
ZWFtLldyaXRlTCgqdmFsdWUpOw0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAg
d3JpdGVTdHJlYW0uQ29tbWl0TCgpOw0KKyAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5k
RGVzdHJveSgpOyAvL3dyaXRlU3RyZWFtDQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgQ2xl
YW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZmlsZVBhdGgNCisgICAgICAgIENsZWFudXBT
dGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL2ZzDQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2VzOjpMb2FkTA0KKy8vDQor
Ly8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRQcmVmZXJlbmNl
czo6TG9hZEwoKQ0KKyAgICB7DQorDQorICAgIFJGcyBmczsNCisgICAgaWYgKGZzLkNvbm5lY3Qo
KSA9PSBLRXJyTm9uZSkNCisgICAgICAgIHsNCisgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKCBm
cyApOw0KKw0KKyAgICAgICAgSEJ1ZkMqIGZpbGVQYXRoID0gSEJ1ZkM6Ok5ld0xDKGlXaWRnZXRF
eHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkuTGVuZ3RoKCkgICsgS1ByZWZzRmlsZSgpLkxlbmd0
aCgpKTsNCisNCisgICAgICAgIFRQdHIgZk5hbWUoZmlsZVBhdGgtPkRlcygpKTsNCisgICAgICAg
IGZOYW1lLkFwcGVuZChpV2lkZ2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNlUGF0aCgpKTsNCisgICAg
ICAgIGZOYW1lLkFwcGVuZChLUHJlZnNGaWxlKTsNCisNCisgICAgICAgIFJGaWxlUmVhZFN0cmVh
bSByZWFkU3RyZWFtOw0KKyAgICAgICAgaWYgKHJlYWRTdHJlYW0uT3BlbiggZnMsICpmaWxlUGF0
aCwgRUZpbGVSZWFkICkgPT0gS0Vyck5vbmUpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAg
IENsZWFudXBDbG9zZVB1c2hMKHJlYWRTdHJlYW0pOw0KKw0KKyAgICAgICAgICAgIFRJbnQgY291
bnQoIHJlYWRTdHJlYW0uUmVhZEludDMyTCgpICk7DQorICAgICAgICAgICAgZm9yKCBUSW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKyApDQorICAgICAgICAgICAgICAgIHsNCisNCisgICAgICAgICAg
ICAgICAgVEludCBsZW4gPSByZWFkU3RyZWFtLlJlYWRJbnQzMkwoKTsNCisgICAgICAgICAgICAg
ICAgaWYgKGxlbj4wKQ0KKyAgICAgICAgICAgICAgICAgICAgew0KKw0KKyAgICAgICAgICAgICAg
ICAgICAgSEJ1ZkMqIGtleSA9IEhCdWZDOjpOZXdMQyhsZW4pOw0KKyAgICAgICAgICAgICAgICAg
ICAgVFB0ciBwdHJrZXkgPSBrZXktPkRlcygpOw0KKyAgICAgICAgICAgICAgICAgICAgcmVhZFN0
cmVhbS5SZWFkTChwdHJrZXksbGVuKTsNCisgICAgICAgICAgICAgICAgICAgIGxlbiA9IHJlYWRT
dHJlYW0uUmVhZEludDMyTCgpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbjw9S01h
eEtleVZhbHVlU2l6ZSkNCisgICAgICAgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAg
ICAgICAgICAgICAgSEJ1ZkMqIHZhbHVlID0gSEJ1ZkM6Ok5ld0xDKGxlbik7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgVFB0ciBwdHJ2YWx1ZSA9IHZhbHVlLT5EZXMoKTsNCisgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkU3RyZWFtLlJlYWRMKHB0cnZhbHVlLGxlbik7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgaU1hcC5JbnNlcnRMKGtleSx2YWx1ZSk7DQorDQorICAgICAgICAgICAg
ICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AodmFsdWUpOw0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIENsZWFudXBTdGFjazo6UG9wKGtleSk7DQorICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHsN
CisgICAgICAgICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koa2V5
KTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQor
ICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAg
ICB9DQorDQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vcmVh
ZFN0cmVhbQ0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5k
RGVzdHJveSgpOyAvL2ZpbGVQYXRoDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ry
b3koKTsgLy9mcw0KKyAgICAgICAgfQ0KKw0KKyAgICB9DQorDQpJbmRleDogV2ViS2l0L0Jyb3dz
ZXJWaWV3L3NyYy9XaWRnZXRSZW5kZXJlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJv
d3NlclZpZXcvc3JjL1dpZGdldFJlbmRlcmVyLmNwcAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQv
QnJvd3NlclZpZXcvc3JjL1dpZGdldFJlbmRlcmVyLmNwcAkocmV2aXNpb24gMCkNCkBAIC0wLDAg
KzEsMjI4IEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5hbWUgICAgICAg
IDogV2lkZ2V0RW5naW5lUmVuZGVyZXIuY3BwDQorKiAgUGFydCBvZiAgICAgOiBXZWJFbmdpbmUv
V2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVzY3JpcHRpb24gOg0KKyogIFZlcnNpb24gICAg
IDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChjKSAyMDA0IE5va2lhIENvcnBvcmF0aW9uLg0K
KyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRl
ZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRy
b2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQu
IENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9yaW5nLCBhZGFwdGluZyBv
ciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMg
dGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBUaGlz
IG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlkZW50aWFsDQorKiAgaW5mb3JtYXRpb24gd2hp
Y2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQgdGhlDQorKiAgcHJpb3Ig
d3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBvcmF0aW9uLg0KKyogPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQorKi8NCisNCisvLyBJTkNMVURFIEZJTEVTDQorI2luY2x1ZGUgPGVpa21lbnViLmg+
DQorI2luY2x1ZGUgPGdkaS5oPg0KKyNpbmNsdWRlIDxiaXRkZXYuaD4NCisNCisjaW5jbHVkZSAi
V2lkZ2V0UmVuZGVyZXIuaCINCisjaW5jbHVkZSAiV2ViS2l0Vmlldy5oIg0KKw0KKy8vIEVYVEVS
TkFMIERBVEEgU1RSVUNUVVJFUw0KKw0KKy8vIEVYVEVSTkFMIEZVTkNUSU9OIFBST1RPVFlQRVMN
CisNCisvLyBDT05TVEFOVFMNCitjb25zdCBUSW50IE1heFRyYW5zaXRpb25Db3VudCA9IDMwOw0K
Kw0KKy8vIExPQ0FMIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gVHJhbnNpdGlvbkNiDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK1RJbnQgVHJhbnNpdGlvbkNiKCBUQW55KiBhUHRyICkNCisgICAgew0KKyAgICBz
dGF0aWNfY2FzdDxUV2lkZ2V0UmVuZGVyZXIqPihhUHRyKS0+VHJhbnNpdGlvbkNiKCk7DQorICAg
IHJldHVybiBFVHJ1ZTsNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBUV2lkZ2V0UmVuZGVyZXI6OlRXaWRnZXRSZW5kZXJlcg0KKy8vDQorLy8NCisvLw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCitUV2lkZ2V0UmVuZGVyZXI6OlRXaWRnZXRSZW5kZXJlcihDV2Vi
S2l0VmlldyYgYVdlYktpdFZpZXcpIDogaVdlYktpdFZpZXcoJmFXZWJLaXRWaWV3KSwgaVRyYW5z
aXRpb25CaXRtYXAoMCksIGlGYWRlTWFzaygwKSwgaVRyYW5zaXRpb25UaW1lcigwKSwgaVRyYW5z
aXRpb25Db3VudCgwKSAgIA0KKyAgICB7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjp+VFdpZGdldFJlbmRlcmVyDQorLy8NCisvLw0KKy8v
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RXaWRnZXRSZW5kZXJlcjo6flRXaWRnZXRSZW5k
ZXJlcigpDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBU
V2lkZ2V0UmVuZGVyZXI6OlByZXBhcmVGb3JUcmFuc2l0aW9uDQorLy8NCisvLw0KKy8vDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpQcmVwYXJlRm9yVHJh
bnNpdGlvbkwoY29uc3QgVERlc0MmIC8qYVRyYW5zaXRpb24qLykNCisgICAgeyAgIA0KKyAgICBp
VHJhbnNpdGlvbkNvdW50ID0gMDsgICAgICAgIA0KKyAgICBEZXN0cm95VHJhbnNpdGlvbkJpdG1h
cCgpOw0KKyAgICBDcmVhdGVUcmFuc2l0aW9uQml0bWFwTCgpOyAgICAgICAgICAgICAgICAgICAg
DQorICAgIERlc3Ryb3lGYWRlTWFzaygpOw0KKyAgICBDcmVhdGVGYWRlTWFza0woKTsNCisgICAg
RHJhd0ZhZGVNYXNrTCgpOyAgICAgICAgDQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpQZXJmb3JtVHJhbnNpdGlvbkwNCisvLw0KKy8vDQor
Ly8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OlBlcmZv
cm1UcmFuc2l0aW9uTCgpDQorICAgIHsNCisgICAgDQorICAgIGRlbGV0ZSBpVHJhbnNpdGlvblRp
bWVyOw0KKyAgICBpVHJhbnNpdGlvblRpbWVyID0gMDsNCisgICAgVFJBUF9JR05PUkUoaVRyYW5z
aXRpb25UaW1lciA9IENQZXJpb2RpYzo6TmV3TCggQ0FjdGl2ZTo6RVByaW9yaXR5TG93ICkpOw0K
KyAgICBpVHJhbnNpdGlvbkNvdW50ID0gMDsNCisgICAgaVRyYW5zaXRpb25UaW1lci0+U3RhcnQo
IDIwLCAyMCwgVENhbGxCYWNrKCAmOjpUcmFuc2l0aW9uQ2IsIHRoaXMgKSApOw0KKyAgICB9DQor
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6VHJhbnNpdGlv
bkNiDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdl
dFJlbmRlcmVyOjpUcmFuc2l0aW9uQ2IoKQ0KKyAgICB7DQorICAgIA0KKyAgICBpVHJhbnNpdGlv
bkNvdW50Kys7DQorICAgIA0KKyAgICBpZiAoaVRyYW5zaXRpb25Db3VudD09TWF4VHJhbnNpdGlv
bkNvdW50KQ0KKyAgICAgICAgew0KKyAgICAgICAgRGVzdHJveVRyYW5zaXRpb25CaXRtYXAoKTsN
CisgICAgICAgIGlUcmFuc2l0aW9uVGltZXItPkNhbmNlbCgpOw0KKyAgICAgICAgRGVzdHJveUZh
ZGVNYXNrKCk7DQorICAgICAgICB9DQorDQorICAgIFRSQVBfSUdOT1JFKERyYXdGYWRlTWFza0wo
KSk7DQorICAgIGlXZWJLaXRWaWV3LT5EcmF3RGVmZXJyZWQoKTsNCisgICAgDQorICAgIH0NCisN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpDcmVhdGVUcmFu
c2l0aW9uQml0bWFwTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2
b2lkIFRXaWRnZXRSZW5kZXJlcjo6Q3JlYXRlVHJhbnNpdGlvbkJpdG1hcEwoKQ0KKyAgICB7DQor
ICAgIGlUcmFuc2l0aW9uQml0bWFwID0gbmV3IChFTGVhdmUpIENGYnNCaXRtYXAoKTsNCisgICAg
VXNlcjo6TGVhdmVJZkVycm9yKGlUcmFuc2l0aW9uQml0bWFwLT5DcmVhdGUoIGlXZWJLaXRWaWV3
LT5PZmZzY3JlZW5CaXRtYXAoKS0+U2l6ZUluUGl4ZWxzKCksICBpV2ViS2l0Vmlldy0+RGlzcGxh
eU1vZGUoKSkpOw0KKyAgICBDRmJzQml0bWFwRGV2aWNlKiBkZXYgPSBDRmJzQml0bWFwRGV2aWNl
OjpOZXdMKGlUcmFuc2l0aW9uQml0bWFwKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChkZXYp
Ow0KKyAgICBDRmJzQml0R2MqIGdjOw0KKyAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoZGV2LT5DcmVh
dGVDb250ZXh0KGdjKSk7DQorICAgIGdjLT5CaXRCbHQoVFBvaW50KDAsMCksaVdlYktpdFZpZXct
Pk9mZnNjcmVlbkJpdG1hcCgpKTsNCisgICAgZGVsZXRlIGdjOw0KKyAgICBDbGVhbnVwU3RhY2s6
OlBvcEFuZERlc3Ryb3koKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBUV2lkZ2V0UmVuZGVyZXI6OkRlc3Ryb3lUcmFuc2l0aW9uQml0bWFwDQorLy8NCisvLw0KKy8v
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpEZXN0cm95
VHJhbnNpdGlvbkJpdG1hcCgpDQorICAgIHsNCisgICAgZGVsZXRlIGlUcmFuc2l0aW9uQml0bWFw
Ow0KKyAgICBpVHJhbnNpdGlvbkJpdG1hcCA9IDA7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpDcmVhdGVGYWRlTWFza0wNCisvLw0KKy8v
DQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OkNy
ZWF0ZUZhZGVNYXNrTCgpDQorICAgIHsNCisgICAgaUZhZGVNYXNrID0gbmV3IChFTGVhdmUpIENG
YnNCaXRtYXAoKTsNCisgICAgaUZhZGVNYXNrLT5DcmVhdGUoaVRyYW5zaXRpb25CaXRtYXAtPlNp
emVJblBpeGVscygpLEVHcmF5MjU2KTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkRlc3Ryb3lGYWRlTWFzaw0KKy8vDQorLy8NCisvLw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6RGVzdHJveUZh
ZGVNYXNrKCkNCisgICAgew0KKyAgICBkZWxldGUgaUZhZGVNYXNrOw0KKyAgICBpRmFkZU1hc2sg
PSAwOw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRS
ZW5kZXJlcjo6RHJhd0ZhZGVNYXNrTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6RHJhd0ZhZGVNYXNrTCgpDQorICAgIHsNCisg
ICAgaWYgKGlGYWRlTWFzaykNCisgICAgICAgIHsgICAgICAgIA0KKyAgICAgICAgQ0Zic0JpdG1h
cERldmljZSogZGV2ID0gQ0Zic0JpdG1hcERldmljZTo6TmV3TChpRmFkZU1hc2spOw0KKyAgICAg
ICAgQ2xlYW51cFN0YWNrOjpQdXNoTChkZXYpOw0KKyAgICAgICAgQ0Zic0JpdEdjKiBnYzsNCisg
ICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihkZXYtPkNyZWF0ZUNvbnRleHQoZ2MpKTsNCisgICAg
ICAgIGlGYWRlTWFzay0+TG9ja0hlYXAoKTsNCisgICAgICAgIFRTaXplIHMgPSBpRmFkZU1hc2st
PlNpemVJblBpeGVscygpOw0KKyAgICAgICAgVFVpbnQ4KiBkYXRhID0gKFRVaW50OCopaUZhZGVN
YXNrLT5EYXRhQWRkcmVzcygpOw0KKyAgICAgICAgVFVpbnQ4KiBlbmQgPSBkYXRhICsgcy5pV2lk
dGgqcy5pSGVpZ2h0Ow0KKyAgICAgICAgd2hpbGUgKCBkYXRhPGVuZCApDQorICAgICAgICAgICAg
ew0KKyAgICAgICAgICAgICooZGF0YSsrKSA9ICgyNTUqaVRyYW5zaXRpb25Db3VudC9NYXhUcmFu
c2l0aW9uQ291bnQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGlGYWRlTWFzay0+VW5sb2Nr
SGVhcCgpOw0KKyAgICAgICAgZGVsZXRlIGdjOw0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BB
bmREZXN0cm95KCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpEcmF3VHJhbnNpdGlvbg0KKy8vDQorLy8NCisv
Lw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6RHJhd1Ry
YW5zaXRpb24oQ1dpbmRvd0djJiBnYywgQ0Zic0JpdG1hcCogYUN1cnJlbnRCaXRtYXApDQorICAg
IHsNCisNCisgICAgaWYgKCFpVHJhbnNpdGlvbkJpdG1hcCB8fCAhYUN1cnJlbnRCaXRtYXAgfHwg
IWlGYWRlTWFzaykNCisgICAgICAgIHJldHVybjsNCisgICAgDQorICAgIFRTaXplIHMgPSBpVHJh
bnNpdGlvbkJpdG1hcC0+U2l6ZUluUGl4ZWxzKCk7DQorICAgIGdjLkJpdEJsdChUUG9pbnQoMCww
KSxpVHJhbnNpdGlvbkJpdG1hcCk7DQorICAgIGdjLkJpdEJsdE1hc2tlZChUUG9pbnQoMCwwKSxh
Q3VycmVudEJpdG1hcCwgVFJlY3QocyksIGlGYWRlTWFzaywgRUZhbHNlKTsNCisNCisgICAgfQ0K
Kw0KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzI4OCkNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDY0IEBADQorMjAwNi0xMC0yNSAgeWFkYXZhbGwgIDxzcmlyYW0ueWFkYXZh
bGxpQG5va2lhLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcyAoemJ1
anRhc0BnbWFpbC5jb20pLg0KKwlERVNDOiBTY3JpcHRhYmxlIHBsdWdpbiBhbmQgd2lkZ2V0IG9i
amVjdCBzdXBwb3J0DQorCWh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NDA3DQorICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQNCisN
CisgICAgICAgICogQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmg6DQorICAgICAgICAqIEJyb3dz
ZXJDb250cm9sL2luYy9CckN0bERlZnMuaDoNCisgICAgICAgIChUQnJDdGxEZWZzOjopOg0KKyAg
ICAgICAgKiBCcm93c2VyQ29udHJvbC9pbmMvQnJDdGxJbnRlcmZhY2UuaDoNCisgICAgICAgICog
QnJvd3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcDoNCisgICAgICAgIChDQnJDdGw6OkhhbmRsZUNv
bW1hbmRMKToNCisgICAgICAgIChDQnJDdGw6OkFkZE9wdGlvbk1lbnVJdGVtc0wpOg0KKyAgICAg
ICAgKENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTCk6DQorICAgICAgICAqIEJyb3dzZXJW
aWV3L2luYy9XZWJLaXRDb250cm9sLmg6DQorICAgICAgICAoQ1dlYktpdENvbnRyb2w6OldpZGdl
dEV4dGVuc2lvbik6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2UuaDoN
CisgICAgICAgICogQnJvd3NlclZpZXcvc3JjL0tleUV2ZW50SGFuZGxlci5jcHA6DQorICAgICAg
ICAoQ0tleUV2ZW50SGFuZGxlcjo6SGFuZGxlQWN0aXZhdGVLZXlzTCk6DQorICAgICAgICAqIEJy
b3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9sLmNwcDoNCisgICAgICAgIChDV2ViS2l0Q29udHJv
bDo6fkNXZWJLaXRDb250cm9sKToNCisgICAgICAgIChDV2ViS2l0Q29udHJvbDo6Q3JlYXRlV2lk
Z2V0RXh0ZW5zaW9uTCk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNw
cDoNCisgICAgICAgIChDV2ViS2l0Vmlldzo6TWFrZVZpc2libGUpOg0KKyAgICAgICAgKENXZWJL
aXRWaWV3OjpEcmF3KToNCisgICAgICAgICogQnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5j
cHA6DQorICAgICAgICAoQ1dlYktpdEJyaWRnZTo6Y3JlYXRlV2lkZ2V0T2JqZWN0KToNCisgICAg
ICAgICogUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmg6DQorICAgICAgICAqIFBsdWdpbi9pbmMv
UGx1Z2luU2tpbi5oOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpXZWJLaXRDb250cm9sKToNCisg
ICAgICAgIChDUGx1Z2luU2tpbjo6RnJhbWUpOg0KKyAgICAgICAgKiBQbHVnaW4vaW5jL1BsdWdp
bldpbi5oOg0KKyAgICAgICAgKiBQbHVnaW4vaW5jL25wYXBpLmg6DQorICAgICAgICAqIFBsdWdp
bi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwOg0KKyAgICAgICAgKE5wbkdldFZhbHVlKToNCisg
ICAgICAgICogUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcDoNCisgICAgICAgIChDUGx1Z2lu
SW5mbzo6UGFyc2VEZWZhdWx0RGF0YUwpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpMb2Fk
UGx1Z2luc1N5bmNMKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6TG9hZFBsdWdpbnNMKToN
CisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6UmVsb2FkUGx1Z2lucyk6DQorICAgICAgICAoQ1Bs
dWdpbkhhbmRsZXI6OkdldFBsdWdpbk5hbWUpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpH
ZXRQbHVnaW5GaWxlTmFtZSk6DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkRl
c2NyaXB0aW9uKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luQ291bnQpOg0K
KyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpSZWxvYWRQbHVnaW5zTCk6DQorICAgICAgICAqIFBs
dWdpbi9zcmMvUGx1Z2luU2tpbi5jcHA6DQorICAgICAgICAoQ1BsdWdpblNraW46OkNvbnN0cnVj
dEwpOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpDcmVhdGVQbHVnaW5XaW5MKToNCisgICAgICAg
IChDUGx1Z2luU2tpbjo6U2VsZWN0Vmlld2VyQW5kRG93bmxvYWRMKToNCisgICAgICAgIChDUGx1
Z2luU2tpbjo6UGx1Z2luU2NyaXB0YWJsZU9iamVjdCk6DQorICAgICAgICAqIFBsdWdpbi9zcmMv
UGx1Z2luV2luLmNwcDoNCisgICAgICAgIChDUGx1Z2luV2luOjpXaW5kb3dTY3JpcHROUE9iamVj
dCk6DQorICAgICAgICAoQ1BsdWdpbldpbjo6UGx1Z2luU2NyaXB0YWJsZU9iamVjdCk6DQorICAg
ICAgICAqIFJlc291cmNlTG9hZGVyL3NyYy9GaWxlVHJhbnNhY3Rpb24uY3BwOg0KKyAgICAgICAg
KENGaWxlVHJhbnNhY3Rpb246OlBhcnNlRmlsZU5hbWVMQyk6DQorICAgICAgICAqIGdyb3VwL0Jy
b3dzZXJWaWV3Lm1tcDoNCisgICAgICAgICogZ3JvdXAvUGx1Z2luLm1tcDoNCisgICAgICAgICog
Z3JvdXAvd2Via2l0Lm1tcDoNCisgICAgICAgICogcm9tL3dlYmtpdC5pYnk6DQorDQogMjAwNi0x
MC0yMyAgbmFndW8gIDxnZW9yZ2UuZ3VvQG5va2lhLmNvbT4NCiANCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhY2hpbi4NCkluZGV4OiBXZWJLaXQvZ3JvdXAvQnJvd3NlclZpZXcubW1wDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L2dyb3VwL0Jyb3dzZXJWaWV3Lm1tcAkocmV2aXNpb24gMTcwNjkpDQor
KysgV2ViS2l0L2dyb3VwL0Jyb3dzZXJWaWV3Lm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTc3LDYg
Kzc3LDEyIEBADQogU09VUkNFICAgICAgICAgIFNtYXJ0TGlua0hhbmRsZXIuY3BwDQogU09VUkNF
ICAgICAgICAgIFNtYXJ0TGlua01hcC5jcHANCiAjZW5kaWYNCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KK1NPVVJDRSAgICAgICAgICBXaWRnZXRFeHRlbnNpb24uY3BwDQorU09VUkNFICAg
ICAgICAgIFdpZGdldFByZWZlcmVuY2VzLmNwcA0KK1NPVVJDRSAgICAgICAgICBXaWRnZXRSZW5k
ZXJlci5jcHANCitTWVNURU1JTkNMVURFCQkuLlwuLlwuLlxXaWRnZXRFbmdpbmVcaW5jDQorI2Vu
ZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogVVNFUklOQ0xVREUgICAgIC4uXFJlc291cmNlTG9h
ZGVyXEluYw0KIFVTRVJJTkNMVURFICAgICAuLlxSZXNvdXJjZUxvYWRlclxjYWNoZUluYw0KIFVT
RVJJTkNMVURFICAgICAuLlxCcm93c2VyVmlld1xJbmMNCkluZGV4OiBXZWJLaXQvZ3JvdXAvUGx1
Z2luLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC9QbHVnaW4ubW1wCShyZXZpc2lv
biAxNzA2OSkNCisrKyBXZWJLaXQvZ3JvdXAvUGx1Z2luLm1tcAkod29ya2luZyBjb3B5KQ0KQEAg
LTYwLDYgKzYwLDkgQEANCiBVU0VSSU5DTFVERSAgICAgLi5cUmVzb3VyY2VMb2FkZXJcSW5jDQog
I2lmbmRlZiBfX0JST1dTRVJfU0RLDQogVVNFUklOQ0xVREUgICAgIC4uXC4uXC4uXFBhZ2VTY2Fs
ZXJcSW5jDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitVU0VSSU5DTFVERSAgICAgXFM2
MFxtd1x3ZWJcV2ViRW5naW5lXFdpZGdldEVuZ2luZVxJbmMNCisjZW5kaWYgLy9SRF9CUk9XU0VS
X1dJREdFVFMNCiAjZW5kaWYNCiBVU0VSSU5DTFVERSAgICAgLi5cLi5cV0VCQ09SRVxicmlkZ2UN
CiANCkluZGV4OiBXZWJLaXQvZ3JvdXAvd2Via2l0Lm1tcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9ncm91cC93ZWJraXQubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvZ3JvdXAvd2Vi
a2l0Lm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTExNSw2ICsxMTUsOSBAQA0KIFNZU1RFTUlOQ0xV
REUgXEVwb2MzMlxpbmNsdWRlIFxFcG9jMzJcaW5jbHVkZVxvZW0NCiAjZW5kaWYNCiANCisjaWZk
ZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK1VTRVJJTkNMVURFICAgLi5cLi5cLi5cV2lkZ2V0RW5n
aW5lXGluYw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIC8vLS0NCiANCiBTWVNURU1J
TkNMVURFIFxFcG9jMzJcaW5jbHVkZVxodHRwDQpJbmRleDogV2ViS2l0L1BsdWdpbi9pbmMvbnBh
cGkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0xNCw3ICsxNCw3IEBADQogICoNCiAgKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBtb3ppbGxhLm9y
ZyBjb2RlLg0KICAqDQotICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBD
b2RlIGlzIA0KKyAqIFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBp
cw0KICAqIE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLg0KICAqIFBvcnRpb25z
IGNyZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgN
CiAgKiB0aGUgSW5pdGlhbCBEZXZlbG9wZXIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQpAQCAtNzMs
MTIgKzczLDEyIEBADQogI2VuZGlmDQogI2VuZGlmDQogDQotLyogDQotICogTk9fTlNQUl8xMF9T
VVBQT1JUIGRpc2FibGVzIHRoZSBpbmNsdXNpb24gDQotICogb2Ygb2Jzb2xldGUvcHJvdHlwZXMu
aCwgd2hvc2UgaW50MTYsIHVpbnQxNiwgDQotICogaW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMg
Y29uZmxpY3Qgd2l0aCB0aG9zZSANCi0gKiBpbiB0aGlzIGZpbGUuIA0KLSAqLyANCisvKg0KKyAq
IE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVzaW9uDQorICogb2Ygb2Jzb2xl
dGUvcHJvdHlwZXMuaCwgd2hvc2UgaW50MTYsIHVpbnQxNiwNCisgKiBpbnQzMiwgYW5kIHVpbnQz
MiB0eXBlZGVmcyBjb25mbGljdCB3aXRoIHRob3NlDQorICogaW4gdGhpcyBmaWxlLg0KKyAqLw0K
ICNpZm5kZWYgTk9fTlNQUl8xMF9TVVBQT1JUDQogI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQN
CiAjZW5kaWYNCkBAIC0xMjAsNyArMTIwLDcgQEANCiAgICNpbmNsdWRlIDxFdmVudHMuaD4NCiAj
ZW5kaWYNCiANCi0jaWYgZGVmaW5lZChYUF9VTklYKSANCisjaWYgZGVmaW5lZChYUF9VTklYKQ0K
ICMgaW5jbHVkZSA8c3RkaW8uaD4NCiAjIGlmIGRlZmluZWQoTU9aX1gxMSkNCiAjICAgaW5jbHVk
ZSA8WDExL1hsaWIuaD4NCkBAIC0yOTgsMTEgKzI5OCwxMSBAQA0KICAgdWludDE2IHJpZ2h0Ow0K
IH0gTlBSZWN0Ow0KIA0KLXR5cGVkZWYgc3RydWN0IF9OUFNpemUgDQoteyANCi0gIGludDMyIHdp
ZHRoOyANCi0gIGludDMyIGhlaWdodDsgDQotfSBOUFNpemU7IA0KK3R5cGVkZWYgc3RydWN0IF9O
UFNpemUNCit7DQorICBpbnQzMiB3aWR0aDsNCisgIGludDMyIGhlaWdodDsNCit9IE5QU2l6ZTsN
CiANCiAjaWZkZWYgWFBfVU5JWA0KIC8qDQpAQCAtMzQ1LDIxICszNDUsMjEgQEANCiANCiANCiAv
Kg0KLSAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRm
b3JtcyB0byBOUE5WIGFuZCANCi0gKiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91bmQg
cG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyIA0KLSAqICAgY29tcGlsZXJzIG9uIHNv
bWUgcGxhdGZvcm1zIG1heSBnZW5lcmF0ZSB2dGFibGVzIHRoYXQgYXJlIG5vdCANCi0gKiAgIGNv
bXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBm
cm9tIA0KLSAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2Ug
bWFza3MgY2hhbmdlIHRoZSANCisgKiAgIFRoZSBmb2xsb3dpbmcgbWFza3MgYXJlIGFwcGxpZWQg
b24gY2VydGFpbiBwbGF0Zm9ybXMgdG8gTlBOViBhbmQNCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRo
YXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyDQorICogICBj
b21waWxlcnMgb24gc29tZSBwbGF0Zm9ybXMgbWF5IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUg
bm90DQorICogICBjb21wYXRpYmxlIHdpdGggb2xkZXIgY29tcGlsZXJzLiBUbyBwcmV2ZW50IG9s
ZGVyIHBsdWdpbnMgZnJvbQ0KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3Nlcidz
IEFCSSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZQ0KICAqICAgdmFsdWVzIG9mIHRob3NlIHNlbGVj
dG9ycyBvbiB0aG9zZSBwbGF0Zm9ybXMuIFRvIHJlbWFpbiBiYWNrd2FyZHMNCi0gKiAgIGNvbXBh
dGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNh
biANCisgKiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93
c2VyLCBwbHVnaW5zIGNhbg0KICAqICAgdXNlIHRoZXNlIG1hc2tzIHRvIGR5bmFtaWNhbGx5IGRl
dGVybWluZSBhbmQgdXNlIHRoZSBjb3JyZWN0IEMrKw0KLSAqICAgQUJJIHRoYXQgdGhlIGJyb3dz
ZXIgaXMgZXhwZWN0aW5nLiBUaGlzIGRvZXMgbm90IGFwcGx5IHRvIFdpbmRvd3MgDQorICogICBB
QkkgdGhhdCB0aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8g
V2luZG93cw0KICAqICAgYXMgTWljcm9zb2Z0J3MgQ09NIEFCSSB3aWxsIGxpa2VseSBub3QgY2hh
bmdlLg0KICAqLw0KIA0KICNkZWZpbmUgTlBfQUJJX0dDQzNfTUFTSyAgMHgxMDAwMDAwMA0KIC8q
DQotICogICBnY2MgMy54IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5j
b21wYXRpYmxlIHdpdGggDQorICogICBnY2MgMy54IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVgg
YW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgNCiAgKiAgIHByZXZpb3VzIGNvbXBpbGVycy4N
CiAgKi8NCiAjaWYgKGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoX19HTlVDX18pICYmIChf
X0dOVUNfXyA+PSAzKSkNCkBAIC0zNzUsNyArMzc1LDcgQEANCiAgKiAgIGRpZmZlcmVudCB0aGFu
IENGTS4gSW4gYWRkaXRpb24gdG8gaGF2aW5nIGEgZGlmZmVyZW50DQogICogICBDKysgQUJJLCBp
dCBhbHNvIGhhcyBoYXMgZGlmZmVyZW50IEMgY2FsbGluZyBjb252ZW50aW9uLg0KICAqICAgWW91
IG11c3QgdXNlIGdsdWUgY29kZSB3aGVuIGNhbGxpbmcgYmV0d2VlbiBDRk0gYW5kDQotICogICBN
YWNoLU8gQyBmdW5jdGlvbnMuIA0KKyAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLg0KICAqLw0KICNp
ZiAoZGVmaW5lZChUQVJHRVRfUlRfTUFDX01BQ0hPKSkNCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5f
Rk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLDQpAQCAtNDA0LDExICs0MDQsMTQgQEANCiAgIC8q
IDEyIGFuZCBvdmVyIGFyZSBhdmFpbGFibGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0
aCAwLjkuOSAqLw0KICAgTlBQVmphdmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLA0KICAgTlBQ
VnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUgaW4gTW96aWxs
YSAxLjAgKi8NCi0gIC8qIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lmaWMgdG8gTm9raWEsIHNvIHZh
bHVlIGlzIA0KLSAgICogc3RhcnRlZCBmcm9tIDEwMC4gVGhlIG51bWJlcnMgMTMgdG8gMTAwMCBh
cmUgbGVmdA0KKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMNCisgIE5QUFZwbHVnaW5OZWVkc1hF
bWJlZCAgICAgICAgID0gMTQsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisgICAv
KiBzdGFydGVkIGZyb20gMTAwLiBUaGUgbnVtYmVycyAxMyB0byAxMDAwIGFyZSBsZWZ0DQogICAg
KiBmb3Igc3RhbmRhcml6YXRpb24gYW5kIG90aGVyIGZ1dHVyZSB1c2UuIFZhbHVlIHJldHVybiBp
cyB6ZXJvIGZvcg0KICAgICogaW5ldGVyYWN0aXZlIGFuZCAnb25lJyBmb3Igbm9uLWludGVyYWN0
aXZlLg0KICAgICovDQorICBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0ICA9IDE1LA0KKyNl
bmRpZg0KICAgTlBQVnBsdWdpbkludGVyYWN0aXZlQm9vbCA9IDEwMDANCiB9IE5QUFZhcmlhYmxl
Ow0KIA0KQEAgLTQyNyw2ICs0MzAsMTYgQEANCiAgIE5QTlZzZXJ2aWNlTWFuYWdlciA9ICgxMCB8
IE5QX0FCSV9NQVNLKSwNCiAgIE5QTlZET01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNL
KSwgICAvKiBhdmFpbGFibGUgaW4gTW96aWxsYSAxLjIgKi8NCiAgIE5QTlZET01XaW5kb3cgICAg
ICA9ICgxMiB8IE5QX0FCSV9NQVNLKQ0KKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMNCisgICxO
UE5WVG9vbGtpdCAgICAgICAgPSAoMTMgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50
ZWQgaW4gV2ViS2l0ICovDQorICBOUE5WU3VwcG9ydHNYRW1iZWRCb29sID0gMTQsICAgICAgICAg
ICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQorDQorICAvKiBHZXQgdGhlIE5Q
T2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBicm93c2VyIHdpbmRvdy4gKi8NCisgIE5QTlZXaW5kb3dO
UE9iamVjdCA9IDE1LA0KKw0KKyAgICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRo
ZSBwbHVnaW5zIERPTSBlbGVtZW50LiAqLw0KKyAgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdCAg
ICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0KKyNlbmRpZg0K
IH0gTlBOVmFyaWFibGU7DQogDQogLyoNCkluZGV4OiBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5I
YW5kbGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVy
LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbkhhbmRsZXIu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTEzNyw2ICsxMzcsMTYgQEANCiAgICAgICAgICovDQogICAg
ICAgICBUVWludCBHZXRJbmRleEZyb21IYW5kbGUoVEludCBhSGFuZGxlKTsNCiANCisjaWZkZWYg
IFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEdldCB0aGUgaW5k
ZXggb2YgcGx1Z2luIGluZm8gZnJvbSBpdHMgaGFuZGxlLg0KKyAgICAgICAgKg0KKyAgICAgICAg
KiBAc2luY2UgMy4xDQorICAgICAgICAqIEBwYXJhbSBhSGFuZGxlIFRoZSBoYW5kbGUgb2YgdGhl
IHBsdWdpbiwgcmV0dXJuZWQgZnJvbSBGaW5kUGx1Z2luLg0KKyAgICAgICAgKiBAcmV0dXJuIHRo
ZSBpbmRleCBvZiB0aGUgcGx1Z2luIGluZm8uDQorICAgICAgICAqLw0KKyAgICAgICAgVEJvb2wg
TG9hZFBsdWdpbnNTeW5jTCgpOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICBw
dWJsaWM6IC8vRnJvbSBNV2ViQ29yZVBsdWdpbkhhbmRsZXINCiAgICAgICAgIC8qKg0KICAgICAg
ICAgKiBTY2FucyBmb3IgbmV3IHBsdWdpbnMuDQpJbmRleDogV2ViS2l0L1BsdWdpbi9pbmMvUGx1
Z2luU2tpbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luU2tpbi5o
CShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5Ta2luLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0xNjgsNyArMTY4LDE0IEBADQogICAgICAgICAqIEBzaW5jZSAzLjEN
CiAgICAgICAgICogQHJldHVybiBUaGUgV2ViS2l0Q29udHJvbCBvYmplY3QNCiAgICAgICAgICov
DQotICAgICAgICBDV2ViS2l0Q29udHJvbCogV2ViS2l0Q29udHJvbCgpIHsgcmV0dXJuICZpV2Vi
S2l0RnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRDb250cm9sKCk7IH0NCisgICAgICAgIENXZWJL
aXRDb250cm9sKiBXZWJLaXRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gJmlXZWJLaXRGcmFtZS0+
V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKTsgfQ0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IEZyYW1lDQorICAgICAgICAqIFJldHVybnMgYSBwb2ludGVyIHRvIFdlYktpdEZyYW1lIG9iamVj
dC4NCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuIFRoZSBXZWJLaXRD
b250cm9sIG9iamVjdA0KKyAgICAgICAgKi8NCisgICAgICAgIENXZWJLaXRGcmFtZSogRnJhbWUo
KSBjb25zdCB7IHJldHVybiBpV2ViS2l0RnJhbWU7IH0gDQogDQogICAgICAgICAvKioNCiAgICAg
ICAgICogSGFzUmVzaXplZA0KQEAgLTM2Miw2ICszNjksMTUgQEANCiAgICAgICAgIFRCb29sIENh
bkludGVyYWN0KCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIGlDYW5QbHVnaW5JbnRlcmFjdDsg
fQ0KICNlbmRpZg0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioN
CisgICAgICAgICogR2V0IHRoZSBzY3JpcHRpbmcgb2JqZWN0IGZyb20gcGx1Z2luDQorICAgICAg
ICAqIFNldHMgdGhlIGZvbnQNCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0
dXJuDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCAqUGx1Z2luU2NyaXB0YWJsZU9iamVjdCgp
OyANCisjZW5kaWYNCiAgIHB1YmxpYzogLy8gRnVuY3Rpb25zIGZyb20gTVZpZXdGb2N1c09ic2Vy
dmVyDQogDQogICAgICAgICAvKioNCkluZGV4OiBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5XaW4u
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbldpbi5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5XaW4uaAkod29ya2luZyBjb3B5
KQ0KQEAgLTU3LDYgKzU3LDkgQEANCiBjbGFzcyBDV2ViS2l0Q29udHJvbDsNCiBjbGFzcyBDUGx1
Z2luU2tpbjsNCiBjbGFzcyBDUGx1Z2luSGFuZGxlcjsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KK2NsYXNzIE5QT2JqZWN0Ow0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0K
IC8vIExPQ0FMIENPTlNUQU5UUyBBTkQgTUFDUk9TDQogLy8gVGhlc2UgYXJlIHVzZWQgdG8gZGVz
aWduYXRlIHRoZSBoYW5kbGluZyBvZiBpbmNvbWluZyBjb250ZW50IGFuZCBsb2FkaW5nIFBsdWdp
bnMNCkBAIC00NjYsNiArNDY5LDIxIEBADQogICAgICAgICAqLw0KICAgICB2b2lkIEhhbmRsZUxv
c2luZ0ZvcmVncm91bmQoKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAg
ICAgLyoqDQorICAgICAgICAqIFJldHVybiB3aW5kb3cgb2JqZWN0IHVzYWJsZSBmcm9tIHNjcmlw
dGFibGUgcGx1Z2lucyANCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJu
IG5vbmUNCisgICAgICAgICovICAgICAgICANCisgICAgICAgIE5QT2JqZWN0KiBXaW5kb3dTY3Jp
cHROUE9iamVjdCgpOyANCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBHZXQgdGhlIHNjcmlwdGlu
ZyBvYmplY3QgZnJvbSBwbHVnaW4NCisgICAgICAgICogU2V0cyB0aGUgZm9udA0KKyAgICAgICAg
KiBAc2luY2UgMy4xDQorICAgICAgICAqIEByZXR1cm4NCisgICAgICAgICovDQorICAgICAgICB2
b2lkICpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCk7ICAgICAgICAgDQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQogDQogICAgIHByb3RlY3RlZDogLy8gTmV3IGZ1bmN0aW9ucw0KIA0KSW5k
ZXg6IFdlYktpdC9QbHVnaW4vc3JjL05wbkltcGxlbWVudGF0aW9uLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9QbHVnaW4vc3JjL05wbkltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgV2ViS2l0L1BsdWdpbi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtNDI1LDcgKzQyNSwyMCBAQA0KICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgIH0NCiAgICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCisjaWZkZWYgIFJEX0JS
T1dTRVJfV0lER0VUUw0KKyAgICAgICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6DQorICAgICAg
ICAgICAgew0KKyAgICAgICAgICAgIENQbHVnaW5XaW4qIHBsdWdpbldpbiA9IChDUGx1Z2luV2lu
KilhSW5zdGFuY2UtPm5kYXRhOw0KKyAgICAgICAgICAgIE5QT2JqZWN0KiB3aW5kb3dPYmplY3Qg
PSBwbHVnaW5XaW4tPldpbmRvd1NjcmlwdE5QT2JqZWN0KCk7DQorICAgICAgICAgICAgaWYgKHdp
bmRvd09iamVjdCkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2b2lkICoq
diA9ICh2b2lkICoqKWFSZXRWYWx1ZTsNCisgICAgICAgICAgICAgICAgKnYgPSB3aW5kb3dPYmpl
Y3Q7DQorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsNCisgICAgICAgICAg
ICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOw0KKyAgICAg
ICAgICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgICAgIGNhc2UgTlBO
VkRPTVdpbmRvdzoNCiAgICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiAgICAgICAgICAvLyBVbml4
IG9ubHk6IFJldHVybnMgdGhlIGN1cnJlbnQgRGlzcGxheQ0KICAgICAgICAgY2FzZSBOUE5WeHRB
cHBDb250ZXh0OiAgICAgIC8vIFVuaXggb25seTogUmV0dXJucyB0aGUgYXBwbGljYXRpb24ncyBY
dEFwcENvbnRleHQNCkluZGV4OiBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbkhhbmRsZXIuY3BwCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQ0KQEAgLTEwLDkgKzEwLDkgQEANCiAqICAgIENvcHlyaWdodCAoYykgMjAwNiwg
Tm9raWEgQ29ycG9yYXRpb24NCiAqICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKiAgDQotKiAg
CVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dA0KLSogIAltb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCi0qICAJYXJlIG1ldDoNCisqICAgICAgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0DQorKiAgICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyogICAgICBhcmUgbWV0Og0KICogIA0KICogICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0DQogKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KQEAgLTI0LDE4ICsyNCwxOCBAQA0KICogICAgICAgIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZA0KICogICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAqICANCi0qICAJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KLSogIAkiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VA0KLSogIAlMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1INCi0qICAJQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCi0qICAJT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
DQotKiAgCVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QNCi0qICAJTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQotKiAgCURBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KLSog
IAlUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUDQotKiAgCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFDQotKiAgCVVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCi0qICAJREFNQUdFLg0K
KyogICAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTDQorKiAgICAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgICAgIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
Ug0KKyogICAgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyogICAgICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisqICAgICAgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVA0KKyogICAgICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisqICAgICAgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorKiAgICAg
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQNCisqICAgICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUNCisqICAgICAgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KKyogICAgICBE
QU1BR0UuDQogKiAgDQogKiAgICBQbGVhc2Ugc2VlIGZpbGUgcGF0ZW50bGljZW5zZS50eHQgZm9y
IGZ1cnRoZXIgZ3JhbnRzLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzI1LDggKzMy
NSw4IEBADQogICAgICAgICAgICAgaWYgKGkgPiBtYXJrZXIpDQogICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgVFB0ckM4IG1pbWVGaWxlRXh0OChhTUlNRURlc2NyaXB0aW9uLk1p
ZChtYXJrZXIsaS1tYXJrZXIpKTsNCi0JICAgICAgICAgICAgbmV3TWltZUZpbGVFeHRFbnRyeSA9
IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQotCSAgICAgICAgICAgIG5ld01pbWVGaWxlRXh0RW50
cnktPkRlcygpLkNvcHkobWltZUZpbGVFeHQ4KTsNCisgICAgICAgICAgICAgICAgbmV3TWltZUZp
bGVFeHRFbnRyeSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQorICAgICAgICAgICAgICAgIG5l
d01pbWVGaWxlRXh0RW50cnktPkRlcygpLkNvcHkobWltZUZpbGVFeHQ4KTsNCiAgICAgICAgICAg
ICAgICAgVXNlcjo6TGVhdmVJZkVycm9yKGlNaW1lRmlsZUV4dGVuc2lvbnMuQXBwZW5kKG5ld01p
bWVGaWxlRXh0RW50cnkpKTsNCiAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsg
Ly9wb3AgbmV3TWltZUZpbGVFeHRFbnRyeQ0KIA0KQEAgLTM2Niw4ICszNjYsOCBAQA0KICAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBtaW1l
RGVzY3JpcHRpb24gZW50cnkNCiAgICAgICAgICAgICAgICAgICAgIFRQdHJDOCBtaW1lRGVzYzgo
YU1JTUVEZXNjcmlwdGlvbi5NaWQobWFya2VyLGktbWFya2VyKSk7DQotCQkgICAgICAgICAgICBu
ZXdNaW1lRGVzY3JpcHRpb25FbnRyeSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQotCQkgICAg
ICAgICAgICBuZXdNaW1lRGVzY3JpcHRpb25FbnRyeS0+RGVzKCkuQ29weShtaW1lRGVzYzgpOw0K
KyAgICAgICAgICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnkgPSBIQnVmQzo6TmV3
TEMoaS1tYXJrZXIpOw0KKyAgICAgICAgICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50
cnktPkRlcygpLkNvcHkobWltZURlc2M4KTsNCiANCiAgICAgICAgICAgICAgICAgICAgIFVzZXI6
OkxlYXZlSWZFcnJvcihpTWltZURlc2NyaXB0aW9ucy5BcHBlbmQobmV3TWltZURlc2NyaXB0aW9u
RW50cnkpKTsNCiAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCk7ICAvL3Bv
cCBuZXdNaW1lRGVzY3JpcHRpb25FbnRyeQ0KQEAgLTUyMSw3ICs1MjEsMjggQEANCiAgICAgcmV0
dXJuIGRvbmVJbml0Ow0KICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENQbHVnaW5IYW5kbGVyOjpJbml0aWFsaXplDQor
Ly8NCisvLyBJbml0aWFsaXplcyB0aGUgUGx1Z2luSGFuZGxlciwgcG9zc2libHkgYXN5bmNocm9u
b3VzbHkNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorVEJvb2wgQ1BsdWdpbkhhbmRs
ZXI6OkxvYWRQbHVnaW5zU3luY0woKQ0KKyAgICB7DQorICAgIGlmKCBpUGx1Z2luSW5mb0FycmF5
LkNvdW50KCkgIT0gMCApDQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gRVRydWU7DQorICAg
ICAgICB9DQorDQorICAgIC8vQ2FuY2VsIHRoZSBlYXJsaWVyIHJlcXVlc3QgYW5kIGxvYWQgcGx1
Z2lucyBub3cNCisgICAgaWYoIGlJZGxlICkNCisgICAgICAgIHsNCisgICAgICAgIGlJZGxlLT5D
YW5jZWwoKTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIExvYWRQbHVnaW5zTCgpOw0KKyAgICB9
DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogLy8gQ1BsdWdpbkhhbmRsZXI6OkxvYWRQ
bHVnaW5zTA0KIC8vDQogLy8gTG9hZHMgYWxsIHRoZSBwbHVnaW5zIGFuZCBxdWVyeSB0aGVtIGZv
ciBkZXRhaWxzLg0KQEAgLTUzNSwzMiArNTU2LDMyIEBADQogICAgIC8vIENyZWF0ZSB0aGUgRUNv
bSBpbmZvIGFycmF5LCBjb250YWlucyB0aGUgcGx1Z2luIGluZm9ybWF0aW9uDQogICAgIFJJbXBs
SW5mb1B0ckFycmF5IGVjb21QbHVnaW5JbmZvQXJyYXk7DQogDQotCS8vIEdldCBsaXN0IG9mIEVD
T00gcGx1Z2lucyB0aGF0IG1hdGNoIHRoZSBLTkJyb3dzZXJQbHVnaW5JbnRlcmZhY2VVaWQNCi0J
UkVDb21TZXNzaW9uOjpMaXN0SW1wbGVtZW50YXRpb25zTChLQnJvd3NlclBsdWdpbkludGVyZmFj
ZVVpZCwgZWNvbVBsdWdpbkluZm9BcnJheSk7DQorICAgIC8vIEdldCBsaXN0IG9mIEVDT00gcGx1
Z2lucyB0aGF0IG1hdGNoIHRoZSBLTkJyb3dzZXJQbHVnaW5JbnRlcmZhY2VVaWQNCisgICAgUkVD
b21TZXNzaW9uOjpMaXN0SW1wbGVtZW50YXRpb25zTChLQnJvd3NlclBsdWdpbkludGVyZmFjZVVp
ZCwgZWNvbVBsdWdpbkluZm9BcnJheSk7DQogDQotCS8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIE5l
dHNjYXBlIHBsdWdpbnMgZm91bmQgYnkgRUNvbSBhbmQgcG9wdWxhdGUgdGhlDQotCS8vIGlQbHVn
aW5JbmZvQXJyYXkNCi0JY29uc3QgVEludCBwbHVnaW5Db3VudCA9IGVjb21QbHVnaW5JbmZvQXJy
YXkuQ291bnQoKTsNCi0JZm9yIChUSW50IGluZGV4PTA7IGluZGV4PHBsdWdpbkNvdW50OyArK2lu
ZGV4KQ0KKyAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBOZXRzY2FwZSBwbHVnaW5zIGZvdW5k
IGJ5IEVDb20gYW5kIHBvcHVsYXRlIHRoZQ0KKyAgICAvLyBpUGx1Z2luSW5mb0FycmF5DQorICAg
IGNvbnN0IFRJbnQgcGx1Z2luQ291bnQgPSBlY29tUGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQor
ICAgIGZvciAoVEludCBpbmRleD0wOyBpbmRleDxwbHVnaW5Db3VudDsgKytpbmRleCkNCiAgICAg
ICAgIHsNCi0JCUNQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gbmV3KEVMZWF2ZSkgQ1BsdWdpbklu
Zm87DQotCSAgICBwbHVnaW5JbmZvLT5pSGFuZGxlID0gaU5leHRIYW5kbGUrKzsNCi0JICAgIENs
ZWFudXBTdGFjazo6UHVzaEwocGx1Z2luSW5mbyk7DQorICAgICAgICBDUGx1Z2luSW5mbyogcGx1
Z2luSW5mbyA9IG5ldyhFTGVhdmUpIENQbHVnaW5JbmZvOw0KKyAgICAgICAgcGx1Z2luSW5mby0+
aUhhbmRsZSA9IGlOZXh0SGFuZGxlKys7DQorICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHBs
dWdpbkluZm8pOw0KIA0KLQkgICAgLy8gU2V0IHRoZSBwbHVnaW4gcHJvcGVydGllcw0KLQkgICAg
cGx1Z2luSW5mby0+aVBsdWdpbkluZm8gPSBlY29tUGx1Z2luSW5mb0FycmF5W2luZGV4XTsNCi0J
ICAgIC8vIFJlYWQgdGhlIHBsdWdpbidzIG5hbWUgYW5kIHBsdWdpbiBGaWxlTmFtZSAoZGlzcGxh
eV9uYW1lKSBmcm9tIHRoZSBJTVBMRU1FTlRBVElPTl9JTkZPDQotCSAgICBwbHVnaW5JbmZvLT5Q
YXJzZURpc3BsYXlOYW1lTChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+RGlzcGxheU5hbWUoKSk7
DQotCSAgICBwbHVnaW5JbmZvLT5pRGVzY3JpcHRpb24gPSBIQnVmQzo6TmV3TChwbHVnaW5JbmZv
LT5pUGx1Z2luSW5mby0+T3BhcXVlRGF0YSgpLkxlbmd0aCgpKTsNCi0JICAgIHBsdWdpbkluZm8t
PmlEZXNjcmlwdGlvbi0+RGVzKCkuQ29weShwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+T3BhcXVl
RGF0YSgpKTsNCi0JICAgIHBsdWdpbkluZm8tPmlVaWQgPSBwbHVnaW5JbmZvLT5pUGx1Z2luSW5m
by0+SW1wbGVtZW50YXRpb25VaWQoKTsNCi0JICAgIC8vIFBhcnNlcyB0aGUgYU1JTUVEZXNjcmlw
dGlvbiBzdHJpbmcgdG8gcG9wdWxhdGUgdGhlIG1pbWVUeXBlcywgbWltZUV4dGVuc2lvbnMsDQot
CSAgICAvLyBhbmQgbWltZURlc2NyaXB0aW9ucyBhcnJheXMuDQotCSAgICBwbHVnaW5JbmZvLT5Q
YXJzZURlZmF1bHREYXRhTChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+RGF0YVR5cGUoKSk7DQor
ICAgICAgICAvLyBTZXQgdGhlIHBsdWdpbiBwcm9wZXJ0aWVzDQorICAgICAgICBwbHVnaW5JbmZv
LT5pUGx1Z2luSW5mbyA9IGVjb21QbHVnaW5JbmZvQXJyYXlbaW5kZXhdOw0KKyAgICAgICAgLy8g
UmVhZCB0aGUgcGx1Z2luJ3MgbmFtZSBhbmQgcGx1Z2luIEZpbGVOYW1lIChkaXNwbGF5X25hbWUp
IGZyb20gdGhlIElNUExFTUVOVEFUSU9OX0lORk8NCisgICAgICAgIHBsdWdpbkluZm8tPlBhcnNl
RGlzcGxheU5hbWVMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5EaXNwbGF5TmFtZSgpKTsNCisg
ICAgICAgIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbiA9IEhCdWZDOjpOZXdMKHBsdWdpbkluZm8t
PmlQbHVnaW5JbmZvLT5PcGFxdWVEYXRhKCkuTGVuZ3RoKCkpOw0KKyAgICAgICAgcGx1Z2luSW5m
by0+aURlc2NyaXB0aW9uLT5EZXMoKS5Db3B5KHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5PcGFx
dWVEYXRhKCkpOw0KKyAgICAgICAgcGx1Z2luSW5mby0+aVVpZCA9IHBsdWdpbkluZm8tPmlQbHVn
aW5JbmZvLT5JbXBsZW1lbnRhdGlvblVpZCgpOw0KKyAgICAgICAgLy8gUGFyc2VzIHRoZSBhTUlN
RURlc2NyaXB0aW9uIHN0cmluZyB0byBwb3B1bGF0ZSB0aGUgbWltZVR5cGVzLCBtaW1lRXh0ZW5z
aW9ucywNCisgICAgICAgIC8vIGFuZCBtaW1lRGVzY3JpcHRpb25zIGFycmF5cy4NCisgICAgICAg
IHBsdWdpbkluZm8tPlBhcnNlRGVmYXVsdERhdGFMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5E
YXRhVHlwZSgpKTsNCiANCi0JICAgIC8vIEFkZCB0aGUgZmlsdGVyIGluZm9ybWF0aW9uIHRvIHRo
ZSBsaXN0DQotCSAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoaVBsdWdpbkluZm9BcnJheS5BcHBlbmQo
cGx1Z2luSW5mbykpOw0KLQkgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsgICAgLy8gcGx1Z2luSW5m
bw0KKyAgICAgICAgLy8gQWRkIHRoZSBmaWx0ZXIgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QNCisg
ICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpUGx1Z2luSW5mb0FycmF5LkFwcGVuZChwbHVnaW5J
bmZvKSk7DQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOyAgICAvLyBwbHVnaW5JbmZvDQog
ICAgICAgICB9DQogDQogICAgIC8vIENsZWFuIHVwIHRoZSBFQ29tIGluZm8gYXJyYXkNCkBAIC03
MTksNyArNzQwLDcgQEANCiAvLw0KIHZvaWQgQ1BsdWdpbkhhbmRsZXI6OlJlbG9hZFBsdWdpbnMo
VEJvb2wgYVJlbG9hZFBhZ2VzLCAgTVdlYkNsaWVudEJyaWRnZSYgYVdlYkNsaWVudEJyaWRnZSkN
CiAgICB7DQotCVRSQVBfSUdOT1JFKCBSZWxvYWRQbHVnaW5zTChhUmVsb2FkUGFnZXMsIGFXZWJD
bGllbnRCcmlkZ2UpKTsNCisgICAgVFJBUF9JR05PUkUoIFJlbG9hZFBsdWdpbnNMKGFSZWxvYWRQ
YWdlcywgYVdlYkNsaWVudEJyaWRnZSkpOw0KICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KQEAgLTcyOSwxMiArNzUwLDEyIEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBU
UHRyQyBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luTmFtZShUSW50IGFJbmRleCkNCiAgICAgew0K
LSAJQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQot
IAlpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pTmFtZSkNCi0gCSAgIHsNCi0gCSAgIHJl
dHVybiBwbHVnaW5JbmZvLT5OYW1lKCktPkRlcygpOw0KLSAJICAgfQ0KLSAJcmV0dXJuIFRQdHJD
KCk7DQorICAgICBDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUlu
ZGV4XTsNCisgICAgIGlmIChwbHVnaW5JbmZvICYmIHBsdWdpbkluZm8tPmlOYW1lKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgcmV0dXJuIHBsdWdpbkluZm8tPk5hbWUoKS0+RGVzKCk7DQorICAgICAg
ICB9DQorICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQpAQCAtNzQ0LDEyICs3NjUsMTIgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IFRQdHJDIENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5GaWxlTmFtZShUSW50IGFJbmRleCkNCiAg
ICAgew0KLSAJQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRl
eF07DQotIAlpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pRmlsZU5hbWUpDQotIAkgICB7
DQotIAkgICByZXR1cm4gcGx1Z2luSW5mby0+RmlsZU5hbWUoKS0+RGVzKCk7DQotIAkgICB9DQot
IAlyZXR1cm4gVFB0ckMoKTsNCisgICAgIENQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdp
bkluZm9BcnJheVthSW5kZXhdOw0KKyAgICAgaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+
aUZpbGVOYW1lKQ0KKyAgICAgICAgew0KKyAgICAgICAgcmV0dXJuIHBsdWdpbkluZm8tPkZpbGVO
YW1lKCktPkRlcygpOw0KKyAgICAgICAgfQ0KKyAgICAgcmV0dXJuIFRQdHJDKCk7DQogICAgIH0N
CiANCiANCkBAIC03NjAsMTIgKzc4MSwxMiBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
VFB0ckMgQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkRlc2NyaXB0aW9uKFRJbnQgYUluZGV4KQ0K
ICAgICB7DQotIAlDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUlu
ZGV4XTsNCi0gCWlmIChwbHVnaW5JbmZvICYmIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbikNCi0g
CSAgIHsNCi0gCSAgIHJldHVybiBwbHVnaW5JbmZvLT5EZXNjcmlwdGlvbigpLT5EZXMoKTsNCi0g
CSAgIH0NCi0gCXJldHVybiBUUHRyQygpOw0KKyAgICAgQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8g
PSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQorICAgICBpZiAocGx1Z2luSW5mbyAmJiBwbHVn
aW5JbmZvLT5pRGVzY3JpcHRpb24pDQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gcGx1Z2lu
SW5mby0+RGVzY3JpcHRpb24oKS0+RGVzKCk7DQorICAgICAgICB9DQorICAgICByZXR1cm4gVFB0
ckMoKTsNCiAgICAgfQ0KIA0KIA0KQEAgLTc3Nyw4ICs3OTgsOCBAQA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogVEludCBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luQ291bnQoKQ0KICAgICB7
DQotCXJldHVybiBpUGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQotCX0NCisgICAgcmV0dXJuIGlQ
bHVnaW5JbmZvQXJyYXkuQ291bnQoKTsNCisgICAgfQ0KIA0KIA0KIA0KQEAgLTkwNiw3ICs5Mjcs
NyBAQA0KICAgICB0bXBQbHVnaW5JbmZvQXJyYXkuQ2xvc2UoKTsNCiAgICAgaWYgKGFSZWxvYWRQ
YWdlcykNCiAgICAgICAgIHsNCi0JCWFXZWJDbGllbnRCcmlkZ2UuUmVsb2FkKCk7DQorICAgICAg
ICBhV2ViQ2xpZW50QnJpZGdlLlJlbG9hZCgpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpJbmRl
eDogV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luU2tpbi5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvUGx1Z2luL3NyYy9QbHVnaW5Ta2luLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0
L1BsdWdpbi9zcmMvUGx1Z2luU2tpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02OSw2ICs2OSw5
IEBADQogI2luY2x1ZGUgIldlYktpdFZpZXcuaCINCiAjaW5jbHVkZSAiV2ViS2l0Q29udHJvbC5o
Ig0KICNpbmNsdWRlICJXZWJDb3JlR3JhcGhpY3NDb250ZXh0LmgiDQorI2lmZGVmICBSRF9CUk9X
U0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRf
QlJPV1NFUl9XSURHRVRTDQogDQogLy8gQ09OU1RBTlRTDQogLy8gc2NoZW1lIGZvciBSVFNQIHVy
bA0KQEAgLTE1NSw3ICsxNTgsNyBAQA0KICNlbmRpZg0KICAgICByZXAtPkdldCggS0Jyb3dzZXJV
c0J1aWxkLCB2YWx1ZSApOw0KICAgICBkZWxldGUgcmVwOw0KLSAgICANCisNCiAgICAgaWYgKCAh
dmFsdWUgfHwgYUNhblBsdWdpbkludGVyYWN0ICkNCiAgICAgICAgIHsNCiAgICAgICAgIGlDYW5Q
bHVnaW5JbnRlcmFjdCA9IEVUcnVlOw0KQEAgLTIwNCw3ICsyMDcsMTIgQEANCiAgICAgICAgICAg
ICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgIC8vIHVybFNjaGVtZQ0KICAgICAgICAg
ICAgIH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgQ1dpZGdldEV4
dGVuc2lvbiogd2RndEV4dCA9IGlXZWJLaXRGcmFtZS0+V2ViS2l0VmlldygpLldlYktpdENvbnRy
b2woKS5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgICAgIGlmICggYlJ0c3BGb3VuZCB8fCAod2Rn
dEV4dCAmJiBhVXJsLkxlbmd0aCgpID09IDApKQ0KKyNlbHNlDQogICAgICAgICBpZiAoIGJSdHNw
Rm91bmQgKQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAvLyBJZiBydHNwIHNjaGVtZSBpbiB1cmwsIHBhc3MgdG8gcGx1Z2luIGRpcmVj
dGx5LA0KICAgICAgICAgICAgIC8vIGFmdGVyIHRoZSBhdHRyaWJ1dGUgYXJyYXlzIGluaXRpYWxp
emVkDQpAQCAtNTU1LDcgKzU2Myw3IEBADQogICAgIHsNCiAgICAgLy8gVGhlIGFMb2FkTW9kZSBp
cyBub3QgY3VycmVudGx5IHVzZWQuICBJdCB3b3VsZCBiZSB1c2VkIGZvciBjaGVja2luZyB0aGUN
CiAgICAgLy8gbG9hZCBtb2RlIGFuZCBkZXRlcm1pbmluZyBpZiB0aGUgcGx1Z2luIHNob3VsZCBi
ZSBkZWxldGVkIGFuZCByZWNyZWF0ZWQuDQotICAgIA0KKw0KICAgICAvLyBDcmVhdGUgdGhlIFBs
dWdpbldpbiwgaWYgaXQgZG9lc24ndCBleGlzdCwNCiAgICAgaWYgKCAhaVBsdWdpbldpbiApDQog
ICAgICAgICB7DQpAQCAtNTYzLDcgKzU3MSw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKmlBdHRyaWJ1dGVOYW1lcywgKmlBdHRyaWJ1dGVWYWx1ZXMsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRoaXMsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaVdlYktpdEZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJv
bCgpKSApOw0KLSAgICAgICAgDQorDQogICAgICAgICBpZiAoIGVyciAhPSBLRXJyTm9uZSApDQog
ICAgICAgICAgICAgew0KICAgICAgICAgICAgIGlmICggZXJyID09IEtFcnJOb3RTdXBwb3J0ZWQg
KQ0KQEAgLTU3NSw3ICs1ODMsNyBAQA0KICAgICAgICAgICAgICAgICBVc2VyOjpMZWF2ZSggZXJy
ICk7DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQotICAgICAgICAgICAgDQor
DQogICAgICAgICBpZiAoICFpSXNTb3VuZHN0YXJ0ICkNCiAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgLy8gUmVmcmVzaA0KQEAgLTYxOCw3ICs2MjYsNyBAQA0KICAgICBDQXJyYXlGaXhGbGF0
PFRCckN0bFNlbGVjdE9wdGlvbkRhdGE+KiBvYmpMaXN0ID0gbmV3IChFTGVhdmUpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQXJyYXlGaXhGbGF0PFRC
ckN0bFNlbGVjdE9wdGlvbkRhdGE+KDIpOw0KICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKG9iakxp
c3QpOw0KLSAgICANCisNCiAgICAgLy8gQWRkIG9iamVjdCBsaXN0IGVudHJ5DQogICAgIGZvciAo
aW50IGk9MDsgaTwyOyBpKyspDQogICAgICAgICB7DQpAQCAtNjUwLDEwICs2NTgsMTAgQEANCiAg
ICAgb2JqTGlzdC0+UmVzZXQoKTsNCiAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCA0
ICk7Ly8gb2JqTGlzdCwgdGV4dCwgdGV4dCwgdGl0bGUNCiAgICAgfQ0KLSAgICANCisNCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENQbHVnaW5Ta2luOjpJc0ZvY3VzYWJsZQ0KLS8vIA0K
Ky8vDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENQbHVnaW5Ta2luOjpJ
c0ZvY3VzYWJsZSgpIGNvbnN0DQpAQCAtNjY0LDMgKzY3MiwxMCBAQA0KICAgICAgICAgcmV0dXJu
IEVGYWxzZTsNCiAgICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQordm9pZCog
Q1BsdWdpblNraW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QoKQ0KKyAgICB7DQorICAgIHJldHVy
biBpUGx1Z2luV2luP2lQbHVnaW5XaW4tPlBsdWdpblNjcmlwdGFibGVPYmplY3QoKTowOw0KKyAg
ICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQorDQpJbmRleDogV2ViS2l0L1BsdWdp
bi9zcmMvUGx1Z2luV2luLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vc3JjL1Bs
dWdpbldpbi5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdp
bldpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC01Myw2ICs1Myw3IEBADQogI2luY2x1ZGUgIlBs
dWdpblNraW4uaCINCiAjaW5jbHVkZSAiUGx1Z2luSGFuZGxlci5oIg0KICNpbmNsdWRlICJXZWJL
aXRDb250cm9sLmgiDQorI2luY2x1ZGUgIldlYktpdEJyaWRnZS5oIg0KIA0KIC8vIENPTlNUQU5U
Uw0KIGNvbnN0IFRJbnQgS1BsdWdpbkdyYW51bGFyaXR5ID0gMzsNCkBAIC0xMTk5LDggKzEyMDAs
MzMgQEANCiAgICAgICAgIH0gICAgICAgICAgICAgICAgIA0KICAgfQ0KIA0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgDQorTlBPYmpl
Y3QqIENQbHVnaW5XaW46OldpbmRvd1NjcmlwdE5QT2JqZWN0KCkNCisgICAgew0KKyAgICByZXR1
cm4gaVBsdWdpblNraW4tPkZyYW1lKCktPldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5X
aW5kb3dTY3JpcHROUE9iamVjdCgpOw0KKyAgICB9DQogDQorDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisvLyBDUGx1Z2luV2luOjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0IA0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorLy8gIA0KK3ZvaWQqIENQbHVnaW5XaW46OlBsdWdpblNjcmlwdGFi
bGVPYmplY3QoKQ0KKyAgICB7DQorICAgIGlmIChpUGx1Z2luRnVuY3MtPmdldHZhbHVlKSB7DQor
ICAgICAgICB2b2lkICp2YWx1ZSA9IDA7DQorICAgICAgICBOUEVycm9yIG5wRXJyID0gaVBsdWdp
bkZ1bmNzLT5nZXR2YWx1ZSggaUluc3RhbmNlLCBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0
LCAodm9pZCAqKSZ2YWx1ZSk7DQorICAgICAgICBpZiAobnBFcnIgPT0gTlBFUlJfTk9fRVJST1Ip
IHsNCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7DQorICAgICAgICB9DQorICAgIH0NCisgICAg
cmV0dXJuICh2b2lkICopMDsgICAgDQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdF
VFMNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENQbHVnaW5XaW46OklzQ29udGVu
dEludGVyYWN0aXZlKCkNCiAvLyBUZWxscyAgdGhhdCBwbHVnaW4gY29udGVudCBjYW4gYWNjZXB0
IHVzZXIgaW50ZXJhY3Rpb24uIA0KIC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgaVBsdWdpbkZ1bmNz
LT5nZXR2YWx1ZSAiMCIgb3IgZmFsc2UgbWVhbnMgIHBsdWdpbiBpcyBpbnRlcmFjdGl2ZS4gDQpJ
bmRleDogV2ViS2l0L1Jlc291cmNlTG9hZGVyL3NyYy9GaWxlVHJhbnNhY3Rpb24uY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L1Jlc291cmNlTG9hZGVyL3NyYy9GaWxlVHJhbnNhY3Rpb24uY3Bw
CShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUmVzb3VyY2VMb2FkZXIvc3JjL0ZpbGVUcmFu
c2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00MDEsMTUgKzQwMSwyNyBAQA0KICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAgICAgZmlsZU5hbWVQdHIuQXBwZW5k
KCBwYXRoICk7DQotICAgICAgICAvLyBmaXggc2xhc2hlcw0KLSAgICAgICAgZm9yKCBUSW50IGkg
PSAwOyBpIDwgZmlsZU5hbWVQdHIuTGVuZ3RoKCk7IGkrKyApDQorICAgICAgICAvLyBmaXggc2xh
c2hlcyBhbmQgZXNjYXBpbmdzDQorICAgICAgICBib29sIHVuZXNjYXBlZCA9IEVGYWxzZTsNCisg
ICAgICAgIFRJbnQgaiA9IDA7DQorICAgICAgICBmb3IoIFRJbnQgaSA9IDA7IGkgPCBmaWxlTmFt
ZVB0ci5MZW5ndGgoKTsgaSsrLCBqKysgKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAv
Lw0KICAgICAgICAgICAgIGlmKCBmaWxlTmFtZVB0clsgaSBdID09ICcvJyApDQogICAgICAgICAg
ICAgICAgIHsNCi0gICAgICAgICAgICAgICAgZmlsZU5hbWVQdHJbIGkgXSA9ICdcXCc7DQorICAg
ICAgICAgICAgICAgIGZpbGVOYW1lUHRyWyBqIF0gPSAnXFwnOw0KICAgICAgICAgICAgICAgICB9
DQorICAgICAgICAgICAgZWxzZSBpZiAoZmlsZU5hbWVQdHJbaV0gPT0gJyUnICYmIChpIDwgZmls
ZU5hbWVQdHIuTGVuZ3RoKCkgLTIgKSAmJiBmaWxlTmFtZVB0cltpKzFdID09ICcyJyAmJiBmaWxl
TmFtZVB0cltpKzJdID09ICcwJykNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAg
ICBmaWxlTmFtZVB0clsgaiBdID0gMHgyMDsNCisgICAgICAgICAgICAgICAgaSArPSAyOw0KKyAg
ICAgICAgICAgICAgICB1bmVzY2FwZWQgPSBFVHJ1ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAg
ICAgICAgICAgIGVsc2UgaWYgKHVuZXNjYXBlZCkNCisgICAgICAgICAgICAgICAgZmlsZU5hbWVQ
dHJbIGogXSA9IGZpbGVOYW1lUHRyWyBpIF07DQogICAgICAgICAgICAgfQ0KKyAgICAgICAgICAg
IGlmICh1bmVzY2FwZWQpDQorICAgICAgICAgICAgICAgIGZpbGVOYW1lUHRyLlNldExlbmd0aChq
KTsNCiAgICAgICAgIH0NCiAgICAgcmV0dXJuIGZpbGVOYW1lOw0KICAgICB9DQpJbmRleDogV2Vi
S2l0L3JvbS93ZWJraXQuaWJ5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3JvbS93ZWJraXQuaWJ5
CShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvcm9tL3dlYmtpdC5pYnkJKHdvcmtpbmcgY29w
eSkNCkBAIC01OCw2ICs1OCw5IEBADQogZmlsZT1BQklfRElSXEJVSUxEX0RJUlxCcm93c2VyQ2Fj
aGUuZGxsICAgICAgICAgICAgICAgICBTSEFSRURfTElCX0RJUlxCcm93c2VyQ2FjaGUuZGxsDQog
ZmlsZT1BQklfRElSXEJVSUxEX0RJUlxIaXN0b3J5UHJvdmlkZXIuZGxsICAgICAgICAgICAgICBT
SEFSRURfTElCX0RJUlxIaXN0b3J5UHJvdmlkZXIuZGxsDQogZmlsZT1BQklfRElSXEJVSUxEX0RJ
UlxUb29sQmFyLmRsbCAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfTElCX0RJUlxUb29sQmFy
LmRsbA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorZmlsZT1BQklfRElSXEJVSUxEX0RJ
UlxXaWRnZXRFbmdpbmUuZGxsICAgICAgICAgICAgICAgICAgICAgIFNIQVJFRF9MSUJfRElSXFdp
ZGdldEVuZ2luZS5kbGwNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiBFQ09NX1BM
VUdJTihCcm93c2VyUmVjLmRsbCwgMDEwMDVBMDIucnNjKQ0KIEVDT01fUExVR0lOKE1lbW9yeVBs
dWdpbi5kbGwsIG1lbW9yeXBsdWdpbi5SU0MpDQo=
</data>
<flag name="review"
          id="3847"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11211</attachid>
            <date>2006-10-25 14:07:39 -0700</date>
            <delta_ts>2006-10-25 14:18:54 -0700</delta_ts>
            <desc>Remove FileTransaction changes to previous patch</desc>
            <filename>WidgetImpl.patch</filename>
            <type>text/plain</type>
            <size>554741</size>
            <attacher name="Sriram">sriram.yadavalli</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQ0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQkocmV2aXNpb24gMCkNCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9hbGdvcml0aG0JKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDE4
MCBAQA0KKy8vIEJpdHMgYW5kIHBpZWNlcyB1c2VkIGluIGFsZ29yaXRobXMgLSotIEMrKyAtKi0N
CisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8gc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlDQor
Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8v
IFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUNCisvLyBs
aWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVz
IGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0
aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUgYW5kIGxp
bmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMNCisv
LyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUg
dG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRo
aXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBvdGhlciBy
ZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENvcHlyaWdo
dCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQZXJtaXNz
aW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdh
cmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBn
cmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBz
dXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBtYWtlcyBu
bw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0
d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91
dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHlyaWdodCAo
YykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMu
DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFu
ZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBw
dXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQg
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICog
dGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBo
aWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBv
ZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFz
IGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisNCisjaWZu
ZGVmIF9fQUxHT1JJVEhNDQorI2RlZmluZSBfX0FMR09SSVRITQ0KKw0KKyNkZWZpbmUgX19nbGli
Y3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9fQSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc192
YWxpZF9yYW5nZShfX0EsIF9fQikNCisNCituYW1lc3BhY2Ugc3RkDQorew0KKw0KKyAgdHlwZWRl
ZiBpbnQgcHRyZGlmZl90Ow0KKw0KKyAgI3VuZGVmIG1pbg0KKyAgI3VuZGVmIG1heA0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAg
ICogIEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0g
IGIgIEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRo
ZSBsZXNzZXIgb2YgdGhlIHBhcmFtZXRlcnMuDQorICAgKg0KKyAgICogIFRoaXMgaXMgdGhlIHNp
bXBsZSBjbGFzc2ljIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICBJdCB3aWxsIHdvcmsgb24NCisg
ICAqICB0ZW1wb3JhcnkgZXhwcmVzc2lvbnMsIHNpbmNlIHRoZXkgYXJlIG9ubHkgZXZhbHVhdGVk
IG9uY2UsIHVubGlrZSBhDQorICAgKiAgcHJlcHJvY2Vzc29yIG1hY3JvLg0KKyAgKi8NCisgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgaW5saW5lIGNvbnN0IF9UcCYNCisgICAgbWluKGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikNCisgICAgew0KKyAgICAgIGlmIChfX2IgPCBf
X2EpDQorCXJldHVybiBfX2I7DQorICAgICAgcmV0dXJuIF9fYTsNCisgICAgfQ0KKw0KKyAgLyoq
DQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAgICog
IEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0gIGIg
IEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRoZSBn
cmVhdGVyIG9mIHRoZSBwYXJhbWV0ZXJzLg0KKyAgICoNCisgICAqICBUaGlzIGlzIHRoZSBzaW1w
bGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAgSXQgd2lsbCB3b3JrIG9uDQorICAg
KiAgdGVtcG9yYXJ5IGV4cHJlc3Npb25zLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGV2YWx1YXRlZCBv
bmNlLCB1bmxpa2UgYQ0KKyAgICogIHByZXByb2Nlc3NvciBtYWNyby4NCisgICovDQorICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+DQorICAgIGlubGluZSBjb25zdCBfVHAmDQorICAgIG1heChjb25z
dCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpDQorICAgIHsNCisgICAgICBpZiAoX19hIDwgX19i
KQ0KKwlyZXR1cm4gX19iOw0KKyAgICAgIHJldHVybiBfX2E7DQorICAgIH0NCisgICAgDQorICAv
KioNCisgICAqICBAYnJpZWYgU3dhcHMgdHdvIHZhbHVlcy4NCisgICAqICBAcGFyYW0gIGEgIEEg
dGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHBhcmFtICBiICBBbm90aGVyIHRoaW5n
IG9mIGFyYml0cmFyeSB0eXBlLg0KKyAgICogIEByZXR1cm4gICBOb3RoaW5nLg0KKyAgICoNCisg
ICAqICBUaGlzIGlzIHRoZSBzaW1wbGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAg
SXQgd2lsbCB3b3JrIG9uDQorICAgKiAgYW55IHR5cGUgd2hpY2ggaGFzIGEgY29weSBjb25zdHJ1
Y3RvciBhbmQgYW4gYXNzaWdubWVudCBvcGVyYXRvci4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+DQorICAgIGlubGluZSB2b2lkDQorICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19i
KQ0KKyAgICB7DQorICAgICAgY29uc3QgX1RwIF9fdG1wID0gX19hOw0KKyAgICAgIF9fYSA9IF9f
YjsNCisgICAgICBfX2IgPSBfX3RtcDsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBs
aWVkIHZlcnNpb24gb2YgbGlic3RkYysrICogc3RkOjpjb3B5LA0KKyAgICogc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIG91ciBwdXJwb3NlLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+DQorICAgIGlubGluZSBfT3V0
cHV0SXRlcmF0b3INCisgICAgY29weSggX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQgKQ0KKyAgICB7DQorICAgICAg
ICBmb3IoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0ICkNCisgICAg
ICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAgICAgIHJldHVybiBfX3Jlc3VsdDsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBsaWVkIHZlcnNpb24gb2YgbGlic3RkYysr
ICogc3RkOjpmaWxsLA0KKyAgICogc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nl
Lg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVl
Pg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBmaWxsKCBfSXRlcmF0b3IgX19zdGFydCwgX0l0ZXJh
dG9yIF9fZW5kLCBfVmFsdWUgX192YWwgKQ0KKyAgICB7DQorICAgICAgICBmb3IoOyBfX3N0YXJ0
ICE9IF9fZW5kOyArK19fc3RhcnQgKQ0KKyAgICAgICAgICAgICpfX3N0YXJ0ID0gX192YWw7DQor
ICAgIH0NCisgICAgDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCB0eXBlbmFtZSBDb21wYXJl
Pg0KKyAgICAgIGlubGluZSB2b2lkIHNvcnQoVHlwZSogYmVnaW4sIFR5cGUqIGVuZCwgQ29tcGFy
ZSBjb21wYXJlKQ0KKyAgICB7DQorICAgIHN0YWJsZV9zb3J0KGJlZ2luLGVuZCxjb21wYXJlKTsN
CisgICAgfQ0KKyAgICANCisgIC8vIEZJWE1FIGJ1YmJsZXNvcnQNCisgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGUsIHR5cGVuYW1lIENvbXBhcmU+DQorICAgIGlubGluZSB2b2lkIHN0YWJsZV9zb3J0
KFR5cGUqIGJlZ2luLCBUeXBlKiBlbmQsIENvbXBhcmUgY29tcGFyZSkNCisgICAgew0KKyAgICAg
ICAgVHlwZSogZSA9IGVuZDsNCisgICAgICAgIHdoaWxlIChlIT1iZWdpbikgew0KKyAgICAgICAg
ICAgIGJvb2wgc29ydGVkID0gdHJ1ZTsNCisgICAgICAgICAgICBmb3IgKFR5cGUqIGkgPSBiZWdp
bjsgaSE9ZTsgaSsrKSB7DQorICAgICAgICAgICAgICAgIGlmICghY29tcGFyZSgqaSwqKGkrMSkp
KSB7DQorICAgICAgICAgICAgICAgICAgICBUeXBlIHRlbXAgPSAqaTsNCisgICAgICAgICAgICAg
ICAgICAgICppID0gKihpKzEpOw0KKyAgICAgICAgICAgICAgICAgICAgKihpKzEpPXRlbXA7DQor
ICAgICAgICAgICAgICAgICAgICBzb3J0ZWQgPSBmYWxzZTsNCisgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoc29ydGVkKQ0K
KyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBlLS07DQorICAgICAgICB9DQor
ICAgIH0NCit9DQorDQorI2VuZGlmDQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTEsNSArMSw1IEBADQogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMTE0ICsyMCw5NSBAQA0KICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KLSNpbmNsdWRlIDxjX2NsYXNzLmg+Ci0jaW5jbHVkZSA8Y19pbnN0YW5jZS5oPgotI2lu
Y2x1ZGUgPGNfcnVudGltZS5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJjX2NsYXNzLmgiCiAKLWJvb2wgTlBOX0lzVmFs
aWRJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5hbWUpOworI2luY2x1ZGUgImNfaW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJjX3J1bnRpbWUuaCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgor
I2luY2x1ZGUgImlkZW50aWZpZXIuaCIKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25EZWxldGUoKSB7
Ci0gICAgQ0ZSZWxlYXNlIChfZmllbGRzKTsKLSAgICBDRlJlbGVhc2UgKF9tZXRob2RzKTsKLX0K
LSAgICAKKy8vIEZJWE1FOiBTaG91bGQgdXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBDRkRpY3Rpb25h
cnkgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgZm9yIHBvcnRhYmlsaXR5LgogCi12b2lkIEND
bGFzczo6X2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZvdGhlcikgewotICAgIF9pc2EgPSBvdGhl
ci5faXNhOwotICAgIF9tZXRob2RzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weSAoTlVMTCwgb3Ro
ZXIuX21ldGhvZHMpOwotICAgIF9maWVsZHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVDb3B5IChOVUxM
LCBvdGhlci5fZmllbGRzKTsKLX0KLSAgICAKK25hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25Jbml0IChOUENsYXNzICphQ2xhc3MpCitD
Q2xhc3M6OkNDbGFzcyhOUENsYXNzKiBhQ2xhc3MpCiB7CiAgICAgX2lzYSA9IGFDbGFzczsKLSAg
ICBfbWV0aG9kcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKLSAgICBfZmllbGRzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsIE5V
TEwpOwogfQogCi0KLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9
IDA7Ci0KLXN0YXRpYyB2b2lkIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCitDQ2xh
c3M6On5DQ2xhc3MoKQogewotICAgIGlmIChjbGFzc2VzQnlJc0EgPT0gMCkKLSAgICAgICAgY2xh
c3Nlc0J5SXNBID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgTlVMTCwgTlVM
TCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKF9tZXRob2RzKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMo
X2ZpZWxkcyk7CiB9CiAKLUNDbGFzcyAqQ0NsYXNzOjpjbGFzc0ZvcklzQSAoTlBDbGFzcyAqaXNh
KQordHlwZWRlZiBIYXNoTWFwPE5QQ2xhc3MqLCBDQ2xhc3MqPiBDbGFzc2VzQnlJc0FNYXA7Citz
dGF0aWMgQ2xhc3Nlc0J5SXNBTWFwKiBjbGFzc2VzQnlJc0EgPSAwOworCitDQ2xhc3MqIENDbGFz
czo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQogewotICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJ
Zk5lY2Vzc2FyeSgpOwotICAgIAotICAgIENDbGFzcyAqYUNsYXNzID0gKENDbGFzcyAqKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgaXNhKTsKLSAgICBpZiAoYUNsYXNzID09IE5V
TEwpIHsKLSAgICAgICAgYUNsYXNzID0gbmV3IENDbGFzcyAoaXNhKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUgKGNsYXNzZXNCeUlzQSwgaXNhLCBhQ2xhc3MpOworICAgIGlmICghY2xh
c3Nlc0J5SXNBKQorICAgICAgICBjbGFzc2VzQnlJc0EgPSBuZXcgQ2xhc3Nlc0J5SXNBTWFwOwor
CisgICAgQ0NsYXNzKiBhQ2xhc3MgPSBjbGFzc2VzQnlJc0EtPmdldChpc2EpOworICAgIGlmICgh
YUNsYXNzKSB7CisgICAgICAgIGFDbGFzcyA9IG5ldyBDQ2xhc3MoaXNhKTsKKyAgICAgICAgY2xh
c3Nlc0J5SXNBLT5zZXQoaXNhLCBhQ2xhc3MpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBh
Q2xhc3M7CiB9CiAKLQotQ0NsYXNzOjpDQ2xhc3MgKE5QQ2xhc3MgKmlzYSkKK2NvbnN0IGNoYXIq
IENDbGFzczo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgX2NvbW1vbkluaXQgKGlzYSk7Ci19Ci0KLWNv
bnN0IGNoYXIgKkNDbGFzczo6bmFtZSgpIGNvbnN0Ci17CiAgICAgcmV0dXJuICIiOwogfQogCi1N
ZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKl9uYW1lLCBJbnN0YW5j
ZSAqaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0
IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7CiAKLSAgICBD
RlN0cmluZ1JlZiBtZXRob2ROYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBf
bmFtZSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSk7Ci0gICAgTWV0aG9kICptZXRob2QgPSAoTWV0
aG9kICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKF9tZXRob2RzLCBtZXRob2ROYW1lKTsKKyAgICBN
ZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChhLmFyZXAoKSk7CiAgICAgaWYgKG1ldGhvZCkg
ewotICAgICAgICBDRlJlbGVhc2UgKG1ldGhvZE5hbWUpOwogICAgICAgICBtZXRob2RMaXN0LmFk
ZE1ldGhvZChtZXRob2QpOwogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9Ci0gICAg
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChfbmFt
ZSk7Ci0gICAgY29uc3QgQ0luc3RhbmNlICppbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3Rh
bmNlKj4oaW5zdGFuY2UpOwotICAgIE5QT2JqZWN0ICpvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsK
LSAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2EtPmhhc01ldGhvZCAob2JqLCBpZGVudCkp
ewotICAgICAgICBNZXRob2QgKmFNZXRob2QgPSBuZXcgQ01ldGhvZCAoaWRlbnQpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpX21ldGhvZHMs
IG1ldGhvZE5hbWUsIGFNZXRob2QpOwotICAgICAgICBtZXRob2RMaXN0LmFkZE1ldGhvZCAoYU1l
dGhvZCk7CisKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cihhLmFzY2lpKCkpOworICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNv
bnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKKyAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0
T2JqZWN0KCk7CisgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2Jq
LCBpZGVudCkpeworICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7
IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIF9tZXRob2RzLnNl
dChhLmFyZXAoKSwgYU1ldGhvZCk7CisgICAgICAgIG1ldGhvZExpc3QuYWRkTWV0aG9kKGFNZXRo
b2QpOwogICAgIH0KIAotICAgIENGUmVsZWFzZSAobWV0aG9kTmFtZSk7Ci0gICAgCiAgICAgcmV0
dXJuIG1ldGhvZExpc3Q7CiB9CiAKIAotRmllbGQgKkNDbGFzczo6ZmllbGROYW1lZChjb25zdCBj
aGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogQ0NsYXNzOjpmaWVs
ZE5hbWVkKGNvbnN0IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QK
IHsKLSAgICBDRlN0cmluZ1JlZiBmaWVsZE5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KE5VTEwsIG5hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwotICAgIEZpZWxkICphRmllbGQg
PSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoX2ZpZWxkcywgZmllbGROYW1lKTsKLSAg
ICBpZiAoYUZpZWxkKSB7Ci0gICAgICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKKyAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQoYS5h
cmVwKCkpOworICAgIGlmIChhRmllbGQpCiAgICAgICAgIHJldHVybiBhRmllbGQ7Ci0gICAgfQog
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1l
KTsKLSAgICBjb25zdCBDSW5zdGFuY2UgKmluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFu
Y2UqPihpbnN0YW5jZSk7Ci0gICAgTlBPYmplY3QgKm9iaiA9IGluc3QtPmdldE9iamVjdCgpOwot
ICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9wZXJ0eSAob2JqLCBpZGVu
dCkpewotICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkIChpZGVudCk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlICgoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilfZmllbGRzLCBmaWVsZE5h
bWUsIGFGaWVsZCk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIoYS5hc2NpaSgpKTsKKyAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CisgICAgTlBPYmplY3QqIG9iaiA9IGluc3Qt
PmdldE9iamVjdCgpOworICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9w
ZXJ0eShvYmosIGlkZW50KSl7CisgICAgICAgIGFGaWVsZCA9IG5ldyBDRmllbGQoaWRlbnQpOyAv
LyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBfZmllbGRzLnNldChh
LmFyZXAoKSwgYUZpZWxkKTsKICAgICB9Ci0gICAgCi0gICAgQ0ZSZWxlYXNlIChmaWVsZE5hbWUp
OwotCiAgICAgcmV0dXJuIGFGaWVsZDsKLX07Cit9CisKK30KK30KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvYy9jX2NsYXNzLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL2MvY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsMTIgKzIwLDEzIEBA
DQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogI2lmbmRlZiBfQklORElOR1NfT0JKQ19DTEFTU19IXwog
I2RlZmluZSBfQklORElOR1NfT0JKQ19DTEFTU19IXwogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlICJmYXN0X21hbGxvYy5oIgorI2luY2x1ZGUg
PEhhc2hNYXAuaD4KIAogCiAjaW5jbHVkZSA8cnVudGltZS5oPgpAQCAtMzksNTQgKzQwLDI4IEBA
DQogY2xhc3MgQ0NsYXNzIDogcHVibGljIEtKUzo6QmluZGluZ3M6OkNsYXNzCiB7CiAgICAgLy8g
VXNlIHRoZSBwdWJsaWMgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyB0byBnZXQgaW5zdGFuY2VzIG9m
IEphdmFDbGFzcy4KLSAgICAKKwogcHJvdGVjdGVkOgotICAgIHZvaWQgX2NvbW1vbkluaXQgKE5Q
Q2xhc3MgKmFDbGFzcyk7Ci0gICAgdm9pZCBfY29tbW9uQ29weShjb25zdCBDQ2xhc3MgJm90aGVy
KTsKLSAgICB2b2lkIF9jb21tb25EZWxldGUoKTsKLSAgICAgICAgCisgICAgQ0NsYXNzKE5QQ2xh
c3MqKTsgLy8gVXNlIGNsYXNzRm9ySXNBIHRvIGNyZWF0ZSBhIENDbGFzcy4KKwogcHVibGljOgot
ICAgIENDbGFzcyAoTlBDbGFzcyAqYUNsYXNzKTsKKyAgICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0Zv
cklzQShOUENsYXNzKik7CisgICAgdmlydHVhbCB+Q0NsYXNzKCk7CiAKLSAgICAvLyBSZXR1cm4g
dGhlIGNhY2hlZCBPYmpDIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAvL3N0YXRpYyBDQ2xh
c3MgKmNsYXNzRm9yTmFtZSAoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgc3RhdGljIENDbGFzcyAq
Y2xhc3NGb3JJc0EgKE5QQ2xhc3MgKmFDbGFzcyk7Ci0gICAgICAgICAgICAKLSAgICB+Q0NsYXNz
ICgpIHsKLSAgICAgICAgX2NvbW1vbkRlbGV0ZSgpOwotICAgIH0KLSAgICAKLSAgICBDQ2xhc3Mg
KGNvbnN0IENDbGFzcyAmb3RoZXIpIDogQ2xhc3MoKSB7Ci0gICAgICAgIF9jb21tb25Db3B5IChv
dGhlcik7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqLCBJbnN0YW5jZSop
IGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgY2hhciAqLCBJbnN0
YW5jZSopIGNvbnN0OwogCi0gICAgQ0NsYXNzICZvcGVyYXRvcj0oY29uc3QgQ0NsYXNzICZvdGhl
cikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgICAgIAotICAgICAgICBfY29tbW9uRGVsZXRlKCk7Ci0gICAgICAg
IF9jb21tb25Db3B5IChvdGhlcik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQorICAgIHZpcnR1YWwgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yQXQobG9uZykgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgbG9uZyBudW1Db25zdHJ1Y3RvcnMoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKLSAg
ICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKm5hbWUs
IEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBGaWVsZCAqZmll
bGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwotICAg
IAotICAgIHZpcnR1YWwgQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yQXQobG9uZyBpKSBjb25zdCB7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH07Ci0gICAgCi0gICAgdmlydHVhbCBsb25nIG51bUNv
bnN0cnVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07Ci0gICAgICAgIAogcHJpdmF0ZToKLSAg
ICBOUENsYXNzICpfaXNhOwotICAgIENGRGljdGlvbmFyeVJlZiBfbWV0aG9kczsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgX2ZpZWxkczsKKyAgICBDQ2xhc3MoY29uc3QgQ0NsYXNzJik7IC8vIHByb2hp
Yml0IGNvcHlpbmcKKyAgICBDQ2xhc3MmIG9wZXJhdG9yPShjb25zdCBDQ2xhc3MmKTsgLy8gcHJv
aGliaXQgYXNzaWdubWVudAorCisgICAgTlBDbGFzcyogX2lzYTsKKyAgICBtdXRhYmxlIE1ldGhv
ZE1hcCBfbWV0aG9kczsKKyAgICBtdXRhYmxlIEZpZWxkTWFwIF9maWVsZHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2lu
c3RhbmNlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19p
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMCw3ICsyMCw3IEBADQogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogI2luY2x1ZGUgPGNfY2xhc3MuaD4KICNpbmNsdWRlIDxjX2luc3Rh
bmNlLmg+CkBAIC0zMywzMiArMzMsMjkgQEANCiAjaWZkZWYgTkRFQlVHCiAjZGVmaW5lIENfTE9H
KGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQogI2Vsc2UKLSNkZWZpbmUgQ19MT0coZm9ybWF0
QW5kQXJncy4uLikgeyBcCi0gICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQgLS0gJXM6ICAiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IFwKLSAgICBmcHJpbnRmKHN0ZGVyciwg
Zm9ybWF0QW5kQXJncyk7IFwKLX0KKyNkZWZpbmUgQ19MT0coZm9ybWF0QW5kQXJncy4uLikgKCh2
b2lkKTApCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7CiB1c2luZyBu
YW1lc3BhY2UgS0pTOwogCi1DSW5zdGFuY2U6OkNJbnN0YW5jZSAoTlBPYmplY3QgKm8pIAorQ0lu
c3RhbmNlOjpDSW5zdGFuY2UgKE5QT2JqZWN0ICpvKQogewotICAgIF9vYmplY3QgPSBfTlBOX1Jl
dGFpbk9iamVjdCAobyk7CisgICAgX29iamVjdCA9IE5QTl9SZXRhaW5PYmplY3QgKG8pOwogICAg
IF9jbGFzcyA9IDA7CiAgICAgc2V0RXhlY3V0aW9uQ29udGV4dCAoMCk7CiB9OwogCi1DSW5zdGFu
Y2U6On5DSW5zdGFuY2UgKCkgCitDSW5zdGFuY2U6On5DSW5zdGFuY2UgKCkKIHsKLSAgICBfTlBO
X1JlbGVhc2VPYmplY3QgKF9vYmplY3QpOworICAgIE5QTl9SZWxlYXNlT2JqZWN0IChfb2JqZWN0
KTsKICAgICBkZWxldGUgX2NsYXNzOwogfQogCiAKLUNJbnN0YW5jZTo6Q0luc3RhbmNlIChjb25z
dCBDSW5zdGFuY2UgJm90aGVyKSA6IEluc3RhbmNlKCkgCitDSW5zdGFuY2U6OkNJbnN0YW5jZSAo
Y29uc3QgQ0luc3RhbmNlICZvdGhlcikgOiBJbnN0YW5jZSgpCiB7Ci0gICAgX29iamVjdCA9IF9O
UE5fUmV0YWluT2JqZWN0IChvdGhlci5fb2JqZWN0KTsKKyAgICBfb2JqZWN0ID0gTlBOX1JldGFp
bk9iamVjdCAob3RoZXIuX29iamVjdCk7CiAgICAgX2NsYXNzID0gMDsKICAgICBzZXRFeGVjdXRp
b25Db250ZXh0IChvdGhlci5leGVjdXRpb25Db250ZXh0KCkpOwogfTsKQEAgLTY2LDE5ICs2Mywx
OSBAQA0KIENJbnN0YW5jZSAmQ0luc3RhbmNlOjpvcGVyYXRvcj0oY29uc3QgQ0luc3RhbmNlICZv
dGhlcil7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgCisKICAgICBOUE9iamVjdCAqX29sZE9iamVjdCA9IF9vYmplY3Q7Ci0gICAgX29iamVjdD0g
X05QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3QpOwotICAgIF9OUE5fUmVsZWFzZU9iamVj
dCAoX29sZE9iamVjdCk7CisgICAgX29iamVjdD0gTlBOX1JldGFpbk9iamVjdCAob3RoZXIuX29i
amVjdCk7CisgICAgTlBOX1JlbGVhc2VPYmplY3QgKF9vbGRPYmplY3QpOwogICAgIF9jbGFzcyA9
IDA7Ci0gICAgCisKICAgICByZXR1cm4gKnRoaXM7CiB9OwogCiBDbGFzcyAqQ0luc3RhbmNlOjpn
ZXRDbGFzcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFfY2xhc3MpIHsKLSAgICAgICAgX2NsYXNzID0g
bmV3IENDbGFzcyAoX29iamVjdC0+X2NsYXNzKTsKKyAgICBpZiAoIV9jbGFzcyl7CisgICAgICAg
IF9jbGFzcyA9IENDbGFzczo6Y2xhc3NGb3JJc0EoX29iamVjdC0+X2NsYXNzKTsKICAgICB9CiAg
ICAgcmV0dXJuIF9jbGFzczsKIH0KQEAgLTEwNSw3ICsxMDIsNyBAQA0KICAgICBDTWV0aG9kICpt
ZXRob2QgPSAwOwogICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihtZXRob2RMaXN0
Lm1ldGhvZEF0KDApKTsKIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5n
SWRlbnRpZmllciAobWV0aG9kLT5uYW1lKCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IE5Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyIChtZXRob2QtPm5hbWUoKSk7CiAgICAgaWYgKCFfb2JqZWN0
LT5fY2xhc3MtPmhhc01ldGhvZCAoX29iamVjdCwgaWRlbnQpKSB7CiAgICAgICAgIHJldHVybiBV
bmRlZmluZWQoKTsKICAgICB9CkBAIC0xMTcsNyArMTE0LDcgQEANCiAgICAgICAgIGNBcmdzID0g
KE5QVmFyaWFudCAqKW1hbGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgIGVsc2UK
ICAgICAgICAgY0FyZ3MgPSBsb2NhbEJ1ZmZlcjsKLSAgICAKKwogICAgIGZvciAoaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChleGVjLCBh
cmdzLmF0KGkpLCAmY0FyZ3NbaV0pOwogICAgIH0KQEAgLTEyOCwyMCArMTI1LDIwIEBADQogICAg
IF9vYmplY3QtPl9jbGFzcy0+aW52b2tlIChfb2JqZWN0LCBpZGVudCwgY0FyZ3MsIGNvdW50LCAm
cmVzdWx0VmFyaWFudCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAg
ICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJnc1tpXSk7CisgICAgICAgIE5QTl9S
ZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOwogICAgIH0KIAogICAgIGlmIChjQXJncyAh
PSBsb2NhbEJ1ZmZlcikKICAgICAgICAgZnJlZSAoKHZvaWQgKiljQXJncyk7Ci0gICAgICAgICAg
ICAKKwogICAgIGlmICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAg
ICAgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoZXhlYywgJnJlc3VsdFZh
cmlhbnQpOwotICAgICAgICAKLSAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgIAorCisgICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVl
ICgmcmVzdWx0VmFyaWFudCk7CisKICAgICAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0KIApAQCAtMTUwLDcgKzE0Nyw3IEBA
DQogewogICAgIFZhbHVlIHJlc3VsdFZhbHVlOwogCi0gICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+
aW52b2tlRGVmYXVsdCkgeyAgICAgCisgICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+aW52b2tlRGVm
YXVsdCkgewogICAgICAgICB1bnNpZ25lZCBpLCBjb3VudCA9IGFyZ3Muc2l6ZSgpOwogICAgICAg
ICBOUFZhcmlhbnQgKmNBcmdzOwogICAgICAgICBOUFZhcmlhbnQgbG9jYWxCdWZmZXJbMTI4XTsK
QEAgLTE1OCw3ICsxNTUsNyBAQA0KICAgICAgICAgICAgIGNBcmdzID0gKE5QVmFyaWFudCAqKW1h
bGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjQXJncyA9IGxvY2FsQnVmZmVyOwotICAgICAgICAKKwogICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQgKGV4
ZWMsIGFyZ3MuYXQoaSksICZjQXJnc1tpXSk7CiAgICAgICAgIH0KQEAgLTE2OSwyMSArMTY2LDIx
IEBADQogICAgICAgICBfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQgKF9vYmplY3QsIGNB
cmdzLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJn
c1tpXSk7CisgICAgICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJmNBcmdzW2ldKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChjQXJncyAhPSBsb2NhbEJ1ZmZlcikKICAgICAgICAg
ICAgIGZyZWUgKCh2b2lkICopY0FyZ3MpOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgIGlm
ICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAgICAgICAgIHJlc3Vs
dFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUgKGV4ZWMsICZyZXN1bHRWYXJpYW50KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUgKCZyZXN1bHRWYXJpYW50KTsKKwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFZh
bHVlOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwog
fQogCkBAIC0xOTksMTQgKzE5NiwxNCBAQA0KICAgICBlbHNlIGlmIChoaW50ID09IEtKUzo6Qm9v
bGVhblR5cGUpIHsKICAgICAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZSgpOwogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB2YWx1ZU9mKCk7CiB9CiAKIEtKUzo6VmFsdWUgQ0luc3RhbmNlOjpzdHJp
bmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgY2hhciBidWZbMTAyNF07Ci0gICAgc25wcmludGYgKGJ1
ZiwgMTAyNCwgIk5QT2JqZWN0ICVwLCBOUENsYXNzICVwIiwgX29iamVjdCwgX29iamVjdC0+X2Ns
YXNzKTsKKyAgICAvL3NucHJpbnRmIChidWYsIDEwMjQsICJOUE9iamVjdCAlcCwgTlBDbGFzcyAl
cCIsIF9vYmplY3QsIF9vYmplY3QtPl9jbGFzcyk7CiAgICAgS0pTOjpTdHJpbmcgdihidWYpOwog
ICAgIHJldHVybiB2OwogfQpAQCAtMjI1LDcgKzIyMiw3IEBADQogICAgIHJldHVybiB2OwogfQog
Ci1LSlM6OlZhbHVlIENJbnN0YW5jZTo6dmFsdWVPZigpIGNvbnN0IAorS0pTOjpWYWx1ZSBDSW5z
dGFuY2U6OnZhbHVlT2YoKSBjb25zdAogewogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwogfTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19ydW50aW1lLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjUsNyArMjUsNyBAQA0KICNpZm5kZWYgX0JJTkRJTkdTX09CSkNfUlVOVElNRV9I
XwogI2RlZmluZSBfQklORElOR1NfT0JKQ19SVU5USU1FX0hfCiAKLSNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorLy8jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KIAogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1ZGUgPG5wcnVu
dGltZV9pbXBsLmg+CkBAIC01Miw3ICs1Miw3IEBADQogICAgIHZpcnR1YWwgS0pTOjpWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmlu
c3RhbmNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEtKUzo6
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEtKUzo6VmFs
dWUgJmFWYWx1ZSkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkg
Y29uc3QgeyByZXR1cm4gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIoX2ZpZWxkSWRlbnRpZmllcik7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBOUE5fVVRG
OEZyb21JZGVudGlmaWVyKF9maWVsZElkZW50aWZpZXIpOyB9CiAgICAgdmlydHVhbCBSdW50aW1l
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KICAgICAKIHByaXZhdGU6CkBAIC02Nyw3
ICs2Nyw3IEBADQogCiAgICAgQ01ldGhvZChOUElkZW50aWZpZXIgaWRlbnQpIDogTWV0aG9kKCks
IF9tZXRob2RJZGVudGlmaWVyKGlkZW50KSB7fTsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBfTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9k
SWRlbnRpZmllcik7IH07CisgICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9kSWRlbnRpZmllcik7IH07CiAKICAg
ICB2aXJ0dWFsIGxvbmcgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07CiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjAsMTAgKzIwLDEwIEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1
ZGUgPGNfaW5zdGFuY2UuaD4gCi0jaW5jbHVkZSA8Y191dGlsaXR5Lmg+IAorI2luY2x1ZGUgPGNf
aW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxjX3V0aWxpdHkuaD4KICNpbmNsdWRlIDxpbnRlcm5hbC5o
PgogI2luY2x1ZGUgPG5wcnVudGltZV9pbXBsLmg+CiAjaW5jbHVkZSA8bnBydW50aW1lX3ByaXYu
aD4KQEAgLTQ1LDIwICs0NSw1MCBAQA0KIC8vIFJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBV
VEYxNkNoYXJzLgogdm9pZCBjb252ZXJ0VVRGOFRvVVRGMTYgKGNvbnN0IE5QVVRGOCAqVVRGOENo
YXJzLCBpbnQgVVRGOExlbmd0aCwgTlBVVEYxNiAqKlVURjE2Q2hhcnMsIHVuc2lnbmVkIGludCAq
VVRGMTZMZW5ndGgpCiB7Ci0gICAgYXNzZXJ0IChVVEY4Q2hhcnMpOwotICAgIAogICAgIGlmIChV
VEY4TGVuZ3RoID09IC0xKQogICAgICAgICBVVEY4TGVuZ3RoID0gc3RybGVuKFVURjhDaGFycyk7
Ci0gICAgICAgIAotICAgIENGU3RyaW5nUmVmIHN0cmluZ1JlZiA9IENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzIChOVUxMLCAoY29uc3QgVUludDgqKVVURjhDaGFycywgKENGSW5kZXgpVVRGOExlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSk7CiAKLSAgICAqVVRGMTZMZW5ndGggPSAo
dW5zaWduZWQgaW50KUNGU3RyaW5nR2V0TGVuZ3RoIChzdHJpbmdSZWYpOwotICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2MgKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgp
KTsKKyAgICAqVVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoOwogCi0gICAgLy8gQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURjE2LgotICAgIENGUmFuZ2UgcmFuZ2UgPSB7IDAsICpVVEYxNkxlbmd0aCB9
OwotICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyAoc3RyaW5nUmVmLCByYW5nZSwgKFVuaUNoYXIg
KikqVVRGMTZDaGFycyk7Ci0gICAgQ0ZSZWxlYXNlIChzdHJpbmdSZWYpOworICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRGMTYpICogKCpVVEYxNkxlbmd0aCkp
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8ICpVVEYxNkxlbmd0aDsgaSsrKQorICAg
ICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKworICAgLyogYXNz
ZXJ0KFVURjhDaGFycyB8fCBVVEY4TGVuZ3RoID09IDApOworICAgIGFzc2VydChVVEYxNkNoYXJz
KTsKKworICAgIGlmIChVVEY4TGVuZ3RoID09IC0xKQorICAgICAgICBVVEY4TGVuZ3RoID0gc3Ry
bGVuKFVURjhDaGFycyk7CisKKyAgICAvLyBVVEYxNkxlbmd0aCBtYXhpbXVtIGxlbmd0aCBpcyB0
aGUgbGVuZ3RoIG9mIHRoZSBVVEY4IHN0cmluZywgcGx1cyBvbmUgdG8gaW5jbHVkZSB0ZXJtaW5h
dG9yCisgICAgLy8gV2l0aG91dCB0aGUgcGx1cyBvbmUsIGl0IHdpbGwgY29udmVydCBvaywgYnV0
IGEgd2FybmluZyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY29udmVydGVyIGFzCisgICAgLy8gdGhl
cmUgaXMgbm90IGVub3VnaCByb29tIGZvciBhIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICAq
VVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoICsgMTsKKworICAgICpVVEYxNkNoYXJzID0gMDsKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBVQ29udmVydGVyKiBjb252
ID0gdWNudl9vcGVuKCJ1dGY4IiwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMp
KSB7CisgICAgICAgICpVVEYxNkNoYXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRG
MTYpICogKCpVVEYxNkxlbmd0aCkpOworICAgICAgICB1Y252X3NldFRvVUNhbGxCYWNrKGNvbnYs
IFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QLCAwLCAwLCAwLCAmc3RhdHVzKTsKKyAgICAgICAgKlVU
RjE2TGVuZ3RoID0gdWNudl90b1VDaGFycyhjb252LCAoOjpVQ2hhciopKlVURjE2Q2hhcnMsICpV
VEYxNkxlbmd0aCwgVVRGOENoYXJzLCBVVEY4TGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgdWNu
dl9jbG9zZShjb252KTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGNvbnZl
cnNpb24gd2FzIHN1Y2Nlc3NmdWwKKyAgICAvLyBTb21lIHBsdWdpbnMgcmV0dXJuIGludmFsaWQg
VVRGLTggaW4gTlBWYXJpYW50VHlwZV9TdHJpbmcsIHNlZSA8aHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYzPgorICAgIC8vIFRoZXJlIGlzIG5vICJiYWQg
ZGF0YSIgZm9yIGxhdGluMS4gSXQgaXMgdW5saWtlbHkgdGhhdCB0aGUgcGx1Z2luIHdhcyByZWFs
bHkgc2VuZGluZyB0ZXh0IGluIHRoaXMgZW5jb2RpbmcsCisgICAgLy8gYnV0IGl0IHNob3VsZCBo
YXZlIHVzZWQgVVRGLTgsIGFuZCBub3cgd2UgYXJlIHNpbXBseSBhdm9pZGluZyBhIGNyYXNoLgor
ICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgKlVURjE2TGVuZ3RoID0gVVRG
OExlbmd0aDsKKworICAgICAgICBpZiAoISpVVEYxNkNoYXJzKSAgIC8vIElmIHRoZSBtZW1vcnkg
d2Fzbid0IGFsbG9jYXRlZCwgYWxsb2NhdGUgaXQuCisgICAgICAgICAgICAqVVRGMTZDaGFycyA9
IChOUFVURjE2ICopbWFsbG9jKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgpKTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKlVURjE2TGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKyAgICB9Ki8K
IH0KIAogLy8gVmFyaWFudCB2YWx1ZSBtdXN0IGJlIHJlbGVhc2VkIHdpdGggTlBSZWxlYXNlVmFy
aWFudFZhbHVlKCkKQEAgLTc0LDcgKzEwNCw3IEBADQogdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZh
cmlhbnQgKnJlc3VsdCkKIHsKICAgICBUeXBlIHR5cGUgPSB2YWx1ZS50eXBlKCk7Ci0gICAgCisK
ICAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlKSB7CiAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5n
LlVURjhTdHJpbmcoKTsKQEAgLTEwMCwzMSArMTMwLDMxIEBADQogICAgICAgICAgICAgQ0luc3Rh
bmNlICppbnN0YW5jZSA9IHN0YXRpY19jYXN0PENJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKICAgICAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3Qg
KHJlc3VsdCwgaW5zdGFuY2UtPmdldE9iamVjdCgpKTsKICAgICAgICAgfQotCWVsc2UgeworICAg
IGVsc2UgewogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gZXhl
Yy0+aW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgS0pTOjpJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJw
cmV0ZXIgPSBleGVjLT5pbnRlcnByZXRlcigpOwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6
OlJvb3RPYmplY3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIo
b3JpZ2luSW50ZXJwcmV0ZXIpOwogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKmludGVycHJldGVy
ID0gMDsKLQkgICAgaWYgKG9yaWdpbkludGVycHJldGVyLT5pc0dsb2JhbE9iamVjdCh2YWx1ZSkp
IHsKLQkJaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRlci0+aW50ZXJwcmV0ZXJGb3JHbG9i
YWxPYmplY3QgKHZhbHVlLmltcCgpKTsKLQkgICAgfQorICAgICAgICBLSlM6OkludGVycHJldGVy
ICppbnRlcnByZXRlciA9IDA7CisgICAgICAgIGlmIChvcmlnaW5JbnRlcnByZXRlci0+aXNHbG9i
YWxPYmplY3QodmFsdWUpKSB7CisgICAgICAgIGludGVycHJldGVyID0gb3JpZ2luSW50ZXJwcmV0
ZXItPmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0ICh2YWx1ZS5pbXAoKSk7CisgICAgICAgIH0K
IAotCSAgICBpZiAoIWludGVycHJldGVyKQotCQlpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJl
dGVyOwotCQkKKyAgICAgICAgaWYgKCFpbnRlcnByZXRlcikKKyAgICAgICAgaW50ZXJwcmV0ZXIg
PSBvcmlnaW5JbnRlcnByZXRlcjsKKwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RP
YmplY3QgKmV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIp
OwogICAgICAgICAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KSB7CiAgICAgICAgICAgICAgICAg
QmluZGluZ3M6OlJvb3RPYmplY3QgKm5ld0V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgS0pTOjpCaW5k
aW5nczo6Um9vdE9iamVjdCgwKTsKICAgICAgICAgICAgICAgICBuZXdFeGVjdXRpb25Db250ZXh0
LT5zZXRJbnRlcnByZXRlciAoaW50ZXJwcmV0ZXIpOwogICAgICAgICAgICAgICAgIGV4ZWN1dGlv
bkNvbnRleHQgPSBuZXdFeGVjdXRpb25Db250ZXh0OwogICAgICAgICAgICAgfQotICAgIAotCSAg
ICBOUE9iamVjdCAqb2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRl
TGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1
ZS50b09iamVjdChleGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4
dCk7Ci0JICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsK
LQkgICAgX05QTl9SZWxlYXNlT2JqZWN0IChvYmopOwotCX0KKworICAgICAgICBOUE9iamVjdCAq
b2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1ZS50b09iamVjdChl
eGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsKKyAgICAgICAg
TlBOX1JlbGVhc2VPYmplY3QgKG9iaik7CiAgICAgfQorICAgIH0KICAgICBlbHNlCiAgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudEFzVW5kZWZpbmVkKHJlc3VsdCk7CiB9CkBAIC0xNjcsNyAr
MTk3LDcgQEANCiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmpl
Y3QpIHsKICAgICAgICAgTlBPYmplY3QgKm9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
OwotICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RD
bGFzcykgewogICAgICAgICAgICAgLy8gR2V0IE9iamVjdEltcCBmcm9tIE5QX0phdmFTY3JpcHRP
YmplY3QuCiAgICAgICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvID0gKEphdmFTY3JpcHRPYmpl
Y3QgKilvYmo7CkBAIC0xNzgsNyArMjA4LDE2IEBADQogICAgICAgICAgICAgcmV0dXJuIEluc3Rh
bmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopb2Jq
KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0K
IAorSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5h
bWUpCit7CisgICAgTlBVVEYxNiAqbWV0aG9kTmFtZTsKKyAgICB1bnNpZ25lZCBVVEYxNkxlbmd0
aDsKKyAgICBjb252ZXJ0VVRGOFRvVVRGMTYobmFtZSwgLTEsICZtZXRob2ROYW1lLCAmVVRGMTZM
ZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgorICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5n
dGgpOworICAgIGZyZWUobWV0aG9kTmFtZSk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkocmV2aXNpb24gMTcwNjkp
DQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSA8cnVudGltZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWVfb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZV9yb290Lmg+CisjaW5jbHVkZSA8aWRl
bnRpZmllci5oPgogCiB0eXBlZGVmIHVpbnQxNl90IE5QVVRGMTY7CiBOUFVURjE2ICpOUE5fVVRG
MTZGcm9tU3RyaW5nIChOUFN0cmluZyAqb2JqKTsKQEAgLTUxLDYgKzUyLDcgQEANCiBleHRlcm4g
dm9pZCBjb2VyY2VWYWx1ZVRvTlBWYXJpYW50U3RyaW5nVHlwZSAoS0pTOjpFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4g
dm9pZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0
IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4gS0pTOjpWYWx1
ZSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5Q
VmFyaWFudCAqdmFyaWFudCk7CitLSlM6OklkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50
aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKTsKIAogdHlwZWRlZiBzdHJ1Y3QgCiB7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaENvdW50ZWRTZXQuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oCShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSwxNzggQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAt
Ki0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
Q29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICov
DQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX0NPVU5URURfU0VUX0gNCisjZGVmaW5lIEtYTUxD
T1JFX0hBU0hfQ09VTlRFRF9TRVRfSA0KKw0KKy8vI2luY2x1ZGUgIkFzc2VydGlvbnMuaCINCisj
aW5jbHVkZSAiSGFzaE1hcC5oIg0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucyA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPFZhbHVlPjo6SGFzaCwNCisgICAgICAgIHR5cGVuYW1lIFRyYWl0cyA9IEhhc2hUcmFp
dHM8VmFsdWU+ID4gY2xhc3MgSGFzaENvdW50ZWRTZXQgew0KKyAgICBwcml2YXRlOg0KKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFZhbHVlLCB1bnNpZ25lZCwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
PiBJbXBsVHlwZTsNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5
cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciBpdGVyYXRv
cjsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNv
bnN0X2l0ZXJhdG9yOw0KKw0KKyAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQ0KKw0KKyAgICAg
ICAgaW50IHNpemUoKSBjb25zdDsNCisgICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0Ow0KKyAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7DQorDQorICAgICAgICAvLyBpdGVyYXRvcnMgaXRl
cmF0ZSBvdmVyIHBhaXJzIG9mIHZhbHVlcyBhbmQgY291bnRzDQorICAgICAgICBpdGVyYXRvciBi
ZWdpbigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQor
DQorICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpOw0KKyAgICAg
ICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisg
ICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3Q7DQorICAg
ICAgICB1bnNpZ25lZCBjb3VudChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisNCisg
ICAgICAgIC8vIGluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFk
eSBwcmVzZW50DQorICAgICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBp
bnRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLA0KKyAgICAgICAgLy8gYW5kIGEg
Ym9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZA0KKyAgICAgICAgc3Rk
OjpwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSk7DQorDQor
ICAgICAgICAvLyByZWR1Y2VzIHRoZSBjb3VudCBvZiB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIGl0
IGlmIGNvdW50DQorICAgICAgICAvLyBnb2VzIGRvd24gdG8gemVybw0KKyAgICAgICAgdm9pZCBy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSk7DQorICAgICAgICB2b2lkIHJlbW92ZShpdGVy
YXRvciBpdCk7DQorDQorICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIEltcGxUeXBlIG1faW1wbDsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAg
aW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
c2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOw0KKyAg
ICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBpbnQgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNhcGFjaXR5KCkgY29uc3QNCisgICAgew0KKyAg
ICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHNpemUoKSA9
PSAwOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNo
Q291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmJlZ2luKCkNCisgICAgew0K
KyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdpbigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmVuZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7DQor
ICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSBjb25zdA0KKyAg
ICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZW5kKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdHlw
ZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJh
dG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNv
bnN0IFZhbHVlVHlwZSYgdmFsdWUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmlu
ZCh2YWx1ZSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVy
YXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9p
bXBsLmZpbmQodmFsdWUpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBi
b29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250YWlu
cyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
bV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBp
bmxpbmUgdW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OmNvdW50KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZ2V0KHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAg
ICBpbmxpbmUgc3RkOjpwYWlyPHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQ0KKyAgICB7
DQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVl
LCAwKTsNCisgICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNvbmQ7DQorICAgICAgICByZXR1cm4g
cmVzdWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkNCisgICAgew0KKyAgICAgICAgcmVtb3ZlKGZpbmQodmFsdWUpKTsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAgICB7
DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAg
ICAgICAgdW5zaWduZWQgb2xkVmFsID0gaXQtPnNlY29uZDsNCisgICAgICAgIC8vQVNTRVJUKG9s
ZFZhbCAhPSAwKTsNCisgICAgICAgIHVuc2lnbmVkIG5ld1ZhbCA9IG9sZFZhbCAtIDE7DQorICAg
ICAgICBpZiAobmV3VmFsID09IDApDQorICAgICAgICAgICAgbV9pbXBsLnJlbW92ZShpdCk7DQor
ICAgICAgICBlbHNlDQorICAgICAgICAgICAgaXQtPnNlY29uZCA9IG5ld1ZhbDsNCisgICAgfQ0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBtX2ltcGwu
Y2xlYXIoKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNlIGtodG1sDQorDQordXNpbmcgV1RG
OjpIYXNoQ291bnRlZFNldDsNCisNCisjZW5kaWYgLyogS1hNTENPUkVfSEFTSF9DT1VOVEVEX1NF
VF9IICovDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oCShy
ZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hGdW5jdGlvbnMuaAko
cmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTA1IEBADQorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxp
YnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
Lg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0K
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwNCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNf
SA0KKyNkZWZpbmUgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNfSA0KKw0KKyNpbmNsdWRlICJSZWZQ
dHIuaCINCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAg
IHRlbXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgSW50VHlwZXM7DQorICAgIHRlbXBsYXRlPD4g
c3RydWN0IEludFR5cGVzPDE+IHsgdHlwZWRlZiBpbnQ4X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1
aW50OF90IFVuc2lnbmVkVHlwZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50VHlwZXM8
Mj4geyB0eXBlZGVmIGludDE2X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50MTZfdCBVbnNpZ25l
ZFR5cGU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDQ+IHsgdHlwZWRlZiBp
bnQzMl90IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDMyX3QgVW5zaWduZWRUeXBlOyB9Ow0KKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw4PiB7IHR5cGVkZWYgaW50NjRfdCBTaWduZWRU
eXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2lnbmVkVHlwZTsgfTsNCisNCisgICAgLy8gaW50ZWdl
ciBoYXNoIGZ1bmN0aW9uDQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgMzIgQml0IE1peCBGdW5j
dGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFzaC5odG0NCisgICAg
aW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDMyX3Qga2V5KQ0KKyAgICB7DQorICAgICAgICBr
ZXkgKz0gfihrZXkgPDwgMTUpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4gMTApOw0KKyAgICAg
ICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiA2KTsNCisgICAg
ICAgIGtleSArPSB+KGtleSA8PCAxMSk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7DQor
ICAgICAgICByZXR1cm4ga2V5Ow0KKyAgICB9DQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgNjQg
Yml0IE1peCBGdW5jdGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFz
aC5odG0NCisgICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQ0KKyAgICB7
DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMzIpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4g
MjIpOw0KKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsNCisgICAgICAgIGtleSBePSAoa2V5
ID4+IDgpOw0KKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtl
eSA+PiAxNSk7DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMjcpOw0KKyAgICAgICAga2V5IF49
IChrZXkgPj4gMzEpOw0KKyAgICAgICAgcmV0dXJuIGtleTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSW50SGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChUIGtleSkgeyByZXR1cm4gaW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRU
eXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGU+KGtleSkpOyB9DQorICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChUIGEsIFQgYikgeyByZXR1cm4gYSA9PSBiOyB9DQorICAgIH07DQorDQorICAg
IC8vIHBvaW50ZXIgaWRlbnRpdHkgaGFzaCBmdW5jdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUHRySGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChU
IGtleSkgeyByZXR1cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihrZXkpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgUHRySGFzaDxSZWZQdHI8UD4gPiB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBSZWZQdHI8UD4mIGtleSkgeyByZXR1cm4gUHRySGFzaDxQKj46Omhhc2goa2V5Lmdl
dCgpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFA+JiBhLCBj
b25zdCBSZWZQdHI8UD4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKw0KKyAgICAv
LyBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIGVhY2ggdHlwZQ0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQorDQorICAgIC8vIG1ha2UgSW50SGFzaCB0
aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBtYW55IGludGVnZXIgdHlwZXMNCisNCisgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNp
Z25lZD4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
PiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBs
b25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNoOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nIGxvbmc+IHsgdHlwZWRlZiBJbnRIYXNoPHVu
c2lnbmVkIGxvbmcgbG9uZz4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
IGxvbmc+IEhhc2g7IH07DQorDQorICAgIC8vIG1ha2UgUHRySGFzaCB0aGUgZGVmYXVsdCBoYXNo
IGZ1bmN0aW9uIGZvciBwb2ludGVyIHR5cGVzIHRoYXQgZG9uJ3Qgc3BlY2lhbGl6ZQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UCo+IHsgdHlwZWRlZiBQ
dHJIYXNoPFAqPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8UmVmUHRyPFA+ID4geyB0eXBlZGVmIFB0ckhhc2g8UmVmUHRyPFA+ID4gSGFzaDsg
fTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6OkRlZmF1bHRIYXNoOw0K
K3VzaW5nIFdURjo6SW50SGFzaDsNCit1c2luZyBXVEY6OlB0ckhhc2g7DQorDQorI2VuZGlmIC8v
IEtYTE1DT1JFX0hBU0hfRlVOQ1RJT05TX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9IYXNoTWFwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNo
TWFwLmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaE1hcC5o
CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzMzIgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
bGlicmFyaWVzDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4NCisgKg0KKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisg
Kg0KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bw0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsDQorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisjaWZuZGVmIEtYTUxDT1JFX0hBU0hfTUFQ
X0gNCisjZGVmaW5lIEtYTUxDT1JFX0hBU0hfTUFQX0gNCisNCisjaW5jbHVkZSAiSGFzaFRhYmxl
LmgiDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJU
eXBlPiBzdHJ1Y3QgUGFpckZpcnN0RXh0cmFjdG9yOw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1l
IERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsDQorICAgICAgICB0eXBlbmFtZSBLZXlUcmFpdHNB
cmcgPSBIYXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hU
cmFpdHM8TWFwcGVkQXJnPiA+DQorICAgIGNsYXNzIEhhc2hNYXAgew0KKyAgICBwcml2YXRlOg0K
KyAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOw0KKyAgICAgICAgdHlwZWRl
ZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiBQYWlyQmFz
ZUhhc2hUcmFpdHM8S2V5VHJhaXRzLCBNYXBwZWRUcmFpdHM+IFZhbHVlVHJhaXRzOw0KKw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVRyYWl0czo6VHJhaXRUeXBl
IEtleVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6VHJhaXRU
eXBlIE1hcHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpU
cmFpdFR5cGUgVmFsdWVUeXBlOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgdHlwZWRlZiBI
YXNoQXJnIEhhc2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hL
ZXlTdG9yYWdlVHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46Okhhc2ggU3RvcmFnZUhh
c2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hLZXlTdG9yYWdl
VHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46OlRyYWl0cyBLZXlTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6OlN0b3JhZ2VUcmFpdHMg
TWFwcGVkU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8S2V5
U3RvcmFnZVRyYWl0cywgTWFwcGVkU3RvcmFnZVRyYWl0cz4gVmFsdWVTdG9yYWdlVHJhaXRzOw0K
Kw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBLZXlTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUg
S2V5U3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFN0b3JhZ2VU
cmFpdHM6OlRyYWl0VHlwZSBNYXBwZWRTdG9yYWdlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleVN0b3JhZ2VUeXBlLCBWYWx1ZVN0b3JhZ2VU
eXBlLCBQYWlyRmlyc3RFeHRyYWN0b3I8VmFsdWVTdG9yYWdlVHlwZT4sDQorICAgICAgICAgICAg
U3RvcmFnZUhhc2hGdW5jdGlvbnMsIFZhbHVlU3RvcmFnZVRyYWl0cywgS2V5U3RvcmFnZVRyYWl0
cz4gSGFzaFRhYmxlVHlwZTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxl
VHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsNCisNCisgICAgICAgIEhhc2hNYXAoKTsN
CisgICAgICAgIEhhc2hNYXAoY29uc3QgSGFzaE1hcCYpOw0KKyAgICAgICAgSGFzaE1hcCYgb3Bl
cmF0b3I9KGNvbnN0IEhhc2hNYXAmKTsNCisgICAgICAgIH5IYXNoTWFwKCk7DQorDQorICAgICAg
ICBpbnQgc2l6ZSgpIGNvbnN0Ow0KKyAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7DQorICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsNCisNCisgICAgICAgIC8vIGl0ZXJhdG9ycyBpdGVy
YXRlIG92ZXIgcGFpcnMgb2Yga2V5cyBhbmQgdmFsdWVzDQorICAgICAgICBpdGVyYXRvciBiZWdp
bigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQorDQor
ICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KKyAgICAgICAgYm9vbCBjb250YWlu
cyhjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAgICAgICBNYXBwZWRUeXBlIGdldChjb25zdCBL
ZXlUeXBlJikgY29uc3Q7DQorDQorICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtl
eSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50DQorICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMg
YSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCANCisgICAgICAgIC8v
IGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFk
ZGVkDQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIGNv
bnN0IE1hcHBlZFR5cGUmKTsgDQorDQorICAgICAgICAvLyBkb2VzIG5vdGhpbmcgaWYga2V5IGlz
IGFscmVhZHkgcHJlc2VudA0KKyAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0
aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgDQorICAgICAgICAvLyBhbmQgYSBib29s
ZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZA0KKyAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRU
eXBlJik7IA0KKw0KKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOw0KKyAgICAg
ICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpOw0KKyAgICAgICAgdm9pZCBjbGVhcigpOw0KKw0K
KyAgICBwcml2YXRlOg0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNv
bnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7DQorICAgICAgICB2b2lkIHJlZkFsbCgp
Ow0KKyAgICAgICAgdm9pZCBkZXJlZkFsbCgpOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlVHlwZSBt
X2ltcGw7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJUeXBlPiBzdHJ1
Y3QgUGFpckZpcnN0RXh0cmFjdG9yIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSBQ
YWlyVHlwZTo6Zmlyc3RfdHlwZSYgZXh0cmFjdChjb25zdCBQYWlyVHlwZSYgcCkgeyByZXR1cm4g
cC5maXJzdDsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTxib29sIGNhblJlcGxhY2VEZWxl
dGVkS2V5LCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0cywg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yOw0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFu
c2xhdG9yPHRydWUsIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHlwZTo6Zmlyc3RfdHlwZSBLZXlU
eXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1h
cHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6
VHJhaXRUeXBlIFZhbHVlU3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZh
bHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgS2V5U3RvcmFnZVRyYWl0czsNCisgICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgS2V5U3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIEtleVN0b3JhZ2VU
eXBlOw0KKw0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5VHlwZSYga2V5
KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0NCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IEtleVN0b3JhZ2VUeXBlJiBhLCBjb25zdCBLZXlUeXBlJiBiKSB7IHJl
dHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbCgqKEtleVR5cGUqKSZhLCBiKTsgfQ0KKyAgICAgICAg
c3RhdGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlU3RvcmFnZVR5cGUmIGxvY2F0aW9uLCBjb25zdCBL
ZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCwgdW5zaWduZWQpDQorICAgICAg
ICB7DQorICAgICAgICAgICAgKihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAg
ICAgICAgICAgKihNYXBwZWRUeXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAg
ICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIFZhbHVlU3RvcmFnZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3Ry
dWN0IEhhc2hNYXBUcmFuc2xhdG9yPGZhbHNlLCBWYWx1ZVR5cGUsIFZhbHVlU3RvcmFnZVRyYWl0
cywgSGFzaEZ1bmN0aW9ucz4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6
OmZpcnN0X3R5cGUgS2V5VHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUeXBl
OjpzZWNvbmRfdHlwZSBNYXBwZWRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1
ZVN0b3JhZ2VUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVN0b3JhZ2VUeXBlOw0KKyAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEtleVN0b3JhZ2VU
cmFpdHM7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVN0b3JhZ2VUcmFpdHM6OlRyYWl0
VHlwZSBLZXlTdG9yYWdlVHlwZTsNCisNCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9DQor
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXlTdG9yYWdlVHlwZSYgYSwgY29uc3Qg
S2V5VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoKihLZXlUeXBlKikmYSwg
Yik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZVN0b3JhZ2VUeXBlJiBs
b2NhdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiBtYXBwZWQsIHVu
c2lnbmVkKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChsb2NhdGlvbi5maXJzdCA9PSBL
ZXlTdG9yYWdlVHJhaXRzOjpkZWxldGVkVmFsdWUoKSkNCisgICAgICAgICAgICAgICAgbG9jYXRp
b24uZmlyc3QgPSBLZXlTdG9yYWdlVHJhaXRzOjplbXB0eVZhbHVlKCk7DQorICAgICAgICAgICAg
KihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAgICAgICAgICAgKihNYXBwZWRU
eXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZWZBbGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJs
ZVR5cGUsIFZhbHVlVHJhaXRzPjo6cmVmQWxsKG1faW1wbCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZGVyZWZB
bGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJsZVR5cGUs
IFZhbHVlVHJhaXRzPjo6ZGVyZWZBbGwobV9pbXBsKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6SGFzaE1hcCgpDQorICAg
IHsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6SGFzaE1hcChjb25zdCBIYXNoTWFwJiBvdGhlcikNCisgICAgICAgIDogbV9p
bXBsKG90aGVyLm1faW1wbCkNCisgICAgew0KKyAgICAgICAgcmVmQWxsKCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46Om9wZXJhdG9yPShjb25zdCBIYXNoTWFwJiBvdGhlcikNCisg
ICAgew0KKyAgICAgICAgSGFzaE1hcCB0bXAob3RoZXIpOw0KKyAgICAgICAgbV9pbXBsLnN3YXAo
dG1wLm1faW1wbCk7IA0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+DQorICAgIGlubGluZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp+SGFzaE1hcCgp
DQorICAgIHsNCisgICAgICAgIGRlcmVmQWxsKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4NCisgICAgaW5saW5lIGludCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QN
CisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+DQorICAgIGlubGluZSBpbnQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2Fw
YWNpdHkoKSBjb25zdA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgp
OyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5pc0VtcHR5KCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmJlZ2luKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdp
bigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpl
bmQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+Ojpjb25zdF9pdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0
DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsNCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkgY29uc3QNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBl
Kikma2V5KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBlKikma2V5KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIHJldHVybiBtX2ltcGwuY29udGFpbnMoKihjb25zdCBLZXlTdG9yYWdlVHlwZSopJmtleSk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHBhaXI8dHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+DQorICAgIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5
cGUmIG1hcHBlZCkgDQorICAgIHsgDQorI2lmbmRlZiBfX0FSTUNDX18NCisgICAgICAgIGNvbnN0
IGJvb2wgY2FuUmVwbGFjZURlbGV0ZWRLZXkgPSAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9u
IHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb247DQorICAgICAgICB0eXBlZGVm
IEhhc2hNYXBUcmFuc2xhdG9yPGNhblJlcGxhY2VEZWxldGVkS2V5LCBWYWx1ZVR5cGUsIFZhbHVl
U3RvcmFnZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7DQorI2Vsc2UNCisg
ICAgICAgIC8vIGdldCBhcm91bmQgDQorICAgICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xhdG9y
PCAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uIHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRz
RGVzdHJ1Y3Rpb24sIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiBUcmFuc2xhdG9yVHlwZTsNCisjZW5kaWYNCisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgYWRkPEtleVR5cGUsIE1hcHBlZFR5cGUsIFRyYW5zbGF0b3JUeXBlPihrZXksIG1hcHBlZCk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4NCisgICAgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKSAN
CisgICAgew0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsNCisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAg
ICAvLyBhZGQgY2FsbCBhYm92ZSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLCBzbyBzZXQgdGhlIG1h
cHBlZCB2YWx1ZQ0KKyAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbWFwcGVkOw0K
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAg
ICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPg0K
KyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBjb25z
dCBNYXBwZWRUeXBlJiBtYXBwZWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBtYXBwZWQpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4NCisg
ICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFw
cGVkVHlwZQ0KKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0
ID0gZmluZChrZXkpOw0KKyAgICAgICAgaWYgKGl0ID09IGVuZCgpKQ0KKyAgICAgICAgICAgIHJl
dHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKTsNCisgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkNCisgICAgew0KKyAgICAgICAg
aWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKyAg
ICAgICAgUmVmQ291bnRlcjxWYWx1ZVRyYWl0cywgVmFsdWVTdG9yYWdlVHJhaXRzPjo6ZGVyZWYo
Kml0Lm1faW1wbCk7DQorICAgICAgICBtX2ltcGwucmVtb3ZlKGl0Lm1faW1wbCk7DQorICAgIH0N
CisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkNCisgICAgew0KKyAgICAgICAgcmVtb3Zl
KGZpbmQoa2V5KSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZv
aWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBkZXJl
ZkFsbCgpOw0KKyAgICAgICAgbV9pbXBsLmNsZWFyKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWFwcGVkVHlwZSwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZT4NCisgICAgdm9p
ZCBkZWxldGVBbGxQYWlyU2Vjb25kcyhIYXNoVGFibGVUeXBlJiBjb2xsZWN0aW9uKQ0KKyAgICB7
DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXJhdG9yOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsNCisg
ICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkNCisgICAgICAgICAgICBkZWxldGUgKihNYXBwZWRUeXBlKikmaXQtPnNlY29uZDsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBkZWxldGVBbGxWYWx1
ZXMoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbikNCisgICAgew0KKyAg
ICAgICAgZGVsZXRlQWxsUGFpclNlY29uZHM8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6TWFwcGVkVHlwZT4oY29sbGVjdGlvbik7DQorICAgIH0NCisNCit9IC8vIG5hbWVzcGFjZSBX
VEYNCisNCit1c2luZyBXVEY6Okhhc2hNYXA7DQorDQorI2VuZGlmIC8qIEtYTUxDT1JFX0hBU0hf
TUFQX0ggKi8NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVGFibGUuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lv
biAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw5MzUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0K
KyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RBQkxFX0gNCisjZGVmaW5lIEtY
TUxDT1JFX0hBU0hfVEFCTEVfSA0KKw0KKyNpbmNsdWRlICJGYXN0X01hbGxvYy5oIg0KKyNpbmNs
dWRlICJIYXNoVHJhaXRzLmgiDQorI2luY2x1ZGUgPGFzc2VydC5oPg0KKw0KK25hbWVzcGFjZSBX
VEYgew0KKw0KKyNkZWZpbmUgRFVNUF9IQVNIVEFCTEVfU1RBVFMgMA0KKyNkZWZpbmUgQ0hFQ0tf
SEFTSFRBQkxFX0NPTlNJU1RFTkNZIDANCisNCisjaWZkZWYgTkRFQlVHDQorI2RlZmluZSBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTIDANCisjZWxzZQ0KKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUyAxDQorI2VuZGlmDQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorDQor
ICAgIHN0cnVjdCBIYXNoVGFibGVTdGF0cyB7DQorICAgICAgICB+SGFzaFRhYmxlU3RhdHMoKTsN
CisgICAgICAgIHN0YXRpYyBpbnQgbnVtQWNjZXNzZXM7DQorICAgICAgICBzdGF0aWMgaW50IG51
bUNvbGxpc2lvbnM7DQorICAgICAgICBzdGF0aWMgaW50IGNvbGxpc2lvbkdyYXBoWzQwOTZdOw0K
KyAgICAgICAgc3RhdGljIGludCBtYXhDb2xsaXNpb25zOw0KKyAgICAgICAgc3RhdGljIGludCBu
dW1SZWhhc2hlczsNCisgICAgICAgIHN0YXRpYyBpbnQgbnVtUmVtb3ZlczsNCisgICAgICAgIHN0
YXRpYyBpbnQgbnVtUmVpbnNlcnRzOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVjb3JkQ29sbGlz
aW9uQXRDb3VudChpbnQgY291bnQpOw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGU7DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJs
ZUl0ZXJhdG9yOw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNo
VGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+Kik7DQorI2Vsc2UNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKSB7IH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRl
cmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopIHsgfQ0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yIHsNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAgICB0eXBlZGVm
IEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1
ZVR5cGU7DQorICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlwZTsN
CisgICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsNCisNCisgICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47DQorICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz47DQorDQorICAgICAgICB2b2lkIHNraXBFbXB0eUJ1Y2tldHMoKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgICAgIHdoaWxlIChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24gJiYg
SGFzaFRhYmxlVHlwZTo6aXNFbXB0eU9yRGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlvbikpDQorICAg
ICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgICAgIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBl
IHBvc2l0aW9uLCBQb2ludGVyVHlwZSBlbmRQb3NpdGlvbikNCisgICAgICAgICAgICA6IG1fcG9z
aXRpb24ocG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKQ0KKyAgICAgICAgew0K
KyAgICAgICAgICAgIGFkZEl0ZXJhdG9yKHRhYmxlLCB0aGlzKTsNCisgICAgICAgICAgICBza2lw
RW1wdHlCdWNrZXRzKCk7DQorICAgICAgICB9DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGFkZEl0ZXJh
dG9yKDAsIHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gZGVmYXVsdCBjb3B5LCBh
c3NpZ25tZW50IGFuZCBkZXN0cnVjdG9yIGFyZSBPSyBpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTIGlzIDANCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAgICAgICAgfkhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJlbW92ZUl0
ZXJhdG9yKHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvcihjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpDQorICAgICAgICAgICAgOiBtX3Bvc2l0
aW9uKG90aGVyLm1fcG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKG90aGVyLm1fZW5kUG9zaXRpb24p
DQorICAgICAgICB7DQorICAgICAgICAgICAgYWRkSXRlcmF0b3Iob3RoZXIubV90YWJsZSwgdGhp
cyk7DQorICAgICAgICB9DQorDQorICAgICAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3I9KGNv
bnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikNCisgICAgICAgIHsNCisgICAgICAgICAgICBtX3Bv
c2l0aW9uID0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgICAgICBtX2VuZFBvc2l0aW9uID0g
b3RoZXIubV9lbmRQb3NpdGlvbjsNCisNCisgICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0aGlz
KTsNCisgICAgICAgICAgICBhZGRJdGVyYXRvcihvdGhlci5tX3RhYmxlLCB0aGlzKTsNCisNCisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgICAgICB9DQorI2VuZGlmDQorDQorICAgICAg
ICBQb2ludGVyVHlwZSBnZXQoKSBjb25zdA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNoZWNr
VmFsaWRpdHkoKTsNCisgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbjsNCisgICAgICAgIH0N
CisgICAgICAgIFJlZmVyZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9DQorICAgICAgICBQb2ludGVyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0NCisNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkNCisgICAgICAg
IHsNCisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7DQorICAgICAgICAgICAgYXNzZXJ0KG1f
cG9zaXRpb24gIT0gbV9lbmRQb3NpdGlvbik7DQorICAgICAgICAgICAgKyttX3Bvc2l0aW9uOw0K
KyAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsNCisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkg
b21pdHRlZA0KKw0KKyAgICAgICAgLy8gQ29tcGFyaXNvbi4NCisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQorICAg
ICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1fcG9z
aXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisgICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQor
ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1f
cG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgcHJpdmF0
ZToNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0DQorICAgICAgICB7DQorI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAgICAgICBhc3NlcnQobV90YWJsZSk7
DQorI2VuZGlmDQorICAgICAgICB9DQorDQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRP
UlMNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25zdF9pdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0DQorICAgICAgICB7DQorICAgICAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAg
ICAgICAgICAgIGFzc2VydChvdGhlci5tX3RhYmxlKTsNCisgICAgICAgICAgICBhc3NlcnQobV90
YWJsZSA9PSBvdGhlci5tX3RhYmxlKTsNCisgICAgICAgIH0NCisjZWxzZQ0KKyAgICAgICAgdm9p
ZCBjaGVja1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJikgY29uc3QgeyB9DQorI2VuZGlm
DQorDQorICAgICAgICBQb2ludGVyVHlwZSBtX3Bvc2l0aW9uOw0KKyAgICAgICAgUG9pbnRlclR5
cGUgbV9lbmRQb3NpdGlvbjsNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7
DQorICAgICAgICBtdXRhYmxlIGNvbnN0X2l0ZXJhdG9yKiBtX25leHQ7DQorICAgICAgICBtdXRh
YmxlIGNvbnN0X2l0ZXJhdG9yKiBtX3ByZXZpb3VzOw0KKyNlbmRpZg0KKyAgICB9Ow0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciB7DQorICAgIHByaXZhdGU6DQor
ICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOw0KKyAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFs
dWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7DQorICAg
ICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7DQorDQorICAgICAgICBmcmllbmQg
Y2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+Ow0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoSGFzaFRhYmxl
VHlwZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvcywgUG9pbnRlclR5cGUgZW5kKSA6IG1faXRlcmF0
b3IodGFibGUsIHBvcywgZW5kKSB7IH0NCisNCisgICAgcHVibGljOg0KKyAgICAgICAgSGFzaFRh
YmxlSXRlcmF0b3IoKSB7IH0NCisNCisgICAgICAgIC8vIGRlZmF1bHQgY29weSwgYXNzaWdubWVu
dCBhbmQgZGVzdHJ1Y3RvciBhcmUgT0sNCisNCisgICAgICAgIFBvaW50ZXJUeXBlIGdldCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KG1faXRlcmF0b3IuZ2V0KCkpOyB9
DQorICAgICAgICBSZWZlcmVuY2VUeXBlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQo
KTsgfQ0KKyAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9DQorDQorICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2l0ZXJhdG9y
OyByZXR1cm4gKnRoaXM7IH0NCisNCisgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxs
eSBvbWl0dGVkDQorDQorICAgICAgICAvLyBDb21wYXJpc29uLg0KKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9
PSBvdGhlci5tX2l0ZXJhdG9yOyB9DQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0
b3I7IH0NCisNCisgICAgICAgIG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvcjsgfQ0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgY29uc3RfaXRlcmF0
b3IgbV9pdGVyYXRvcjsNCisgICAgfTsNCisNCisgICAgdXNpbmcgc3RkOjpzd2FwOw0KKw0KKy8v
I2lmICFDT01QSUxFUihNU1ZDKQ0KKyAgICAvLyBWaXN1YWwgQysrIGhhcyBhIHN3YXAgZm9yIHBh
aXJzIGRlZmluZWQuDQorDQorICAgIC8vIHN3YXAgcGFpcnMgYnkgY29tcG9uZW50LCBpbiBjYXNl
IG9mIHBhaXIgbWVtYmVycyB0aGF0IHNwZWNpYWxpemUgc3dhcA0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBzd2FwKHBhaXI8VCwgVT4mIGEsIHBhaXI8
VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAgIHN3YXAoYS5maXJzdCwgYi5maXJzdCk7DQorICAg
ICAgICBzd2FwKGEuc2Vjb25kLCBiLnNlY29uZCk7DQorICAgIH0NCisvLyNlbmRpZg0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIHVzZVN3YXA+IHN0cnVjdCBNb3ZlcjsNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1vdmVyPFQsIHRydWU+IHsgc3RhdGljIHZvaWQg
bW92ZShUJiBmcm9tLCBUJiB0bykgeyBzd2FwKGZyb20sIHRvKTsgfSB9Ow0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTW92ZXI8VCwgZmFsc2U+IHsgc3RhdGljIHZvaWQgbW92ZShU
JiBmcm9tLCBUJiB0bykgeyB0byA9IGZyb207IH0gfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgSWRl
bnRpdHlIYXNoVHJhbnNsYXRvciB7DQorICAgIHB1YmxpYzoNCisgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtl
eSk7IH0NCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5
JiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQ0KKyAgICAgICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlJiBsb2NhdGlvbiwgY29uc3QgS2V5JiwgY29uc3QgVmFs
dWUmIHZhbHVlLCB1bnNpZ25lZCkgeyBsb2NhdGlvbiA9IHZhbHVlOyB9DQorICAgIH07DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJsZSB7DQorICAgIHB1YmxpYzoNCisgICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFRy
YWl0cyBWYWx1ZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNo
VHJhbnNsYXRvcjxLZXksIFZhbHVlLCBIYXNoRnVuY3Rpb25zPiBJZGVudGl0eVRyYW5zbGF0b3JU
eXBlOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlKCk7DQorICAgICAgICB+SGFzaFRhYmxlKCkgeyBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6
ZSk7IH0NCisNCisgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsNCisgICAgICAg
IHZvaWQgc3dhcChIYXNoVGFibGUmKTsNCisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNv
bnN0IEhhc2hUYWJsZSYpOw0KKw0KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBt
YWtlSXRlcmF0b3IobV90YWJsZSk7IH0NCisgICAgICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJu
IG1ha2VJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorICAgICAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKG1fdGFibGUp
OyB9DQorICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlQ29u
c3RJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorDQorICAgICAgICBpbnQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0NCisgICAgICAgIGludCBjYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9DQorICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9rZXlDb3VudDsgfQ0KKw0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxLZXlUeXBlLCBW
YWx1ZVR5cGUsIElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1
ZSksIHZhbHVlKTsgfQ0KKw0KKyAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRkKCkg
dGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZw0KKyAgICAgICAg
Ly8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVy
c2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkNCisgICAgICAgIC8vIGluIHRoZSB0YWJsZS4N
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29u
c3QgRXh0cmEmKTsNCisNCisgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOw0K
KyAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAg
ICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmKSBjb25zdDsNCisNCisgICAgICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9y
KTsNCisgICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1w
dHlCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRXh0cmFjdG9yOjpleHRy
YWN0KHZhbHVlKSA9PSBLZXlUcmFpdHM6OmVtcHR5VmFsdWUoKTsgfQ0KKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEV4
dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkgPT0gS2V5VHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0K
KyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5QnVja2V0KHZhbHVlKSB8fCBpc0RlbGV0ZWRCdWNr
ZXQodmFsdWUpOyB9DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBzdGF0aWMgVmFsdWVUeXBl
KiBhbGxvY2F0ZVRhYmxlKGludCBzaXplKTsNCisgICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2Nh
dGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCBpbnQgc2l6ZSk7DQorDQorICAgICAgICB0eXBlZGVm
IHBhaXI8VmFsdWVUeXBlKiwgYm9vbD4gTG9va3VwVHlwZTsNCisgICAgICAgIHR5cGVkZWYgcGFp
cjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7DQorDQorICAgICAgICBMb29r
dXBUeXBlIGxvb2t1cChjb25zdCBLZXkmIGtleSkgeyByZXR1cm4gbG9va3VwPEtleSwgSWRlbnRp
dHlUcmFuc2xhdG9yVHlwZT4oa2V5KS5maXJzdDsgfQ0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEZ1bGxMb29rdXBUeXBlIGxvb2t1cChjb25z
dCBUJik7DQorDQorICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsNCisNCisgICAgICAg
IGJvb2wgc2hvdWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0
ZWRDb3VudCkgKiBtX21heExvYWQgPj0gbV90YWJsZVNpemU7IH0NCisgICAgICAgIGJvb2wgbXVz
dFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwg
bV90YWJsZVNpemUgKiAyOyB9DQorICAgICAgICBib29sIHNob3VsZFNocmluaygpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3RhYmxlU2l6ZSAmJiBtX3RhYmxlU2l6
ZSA+IG1fbWluVGFibGVTaXplOyB9DQorICAgICAgICB2b2lkIGV4cGFuZCgpOw0KKyAgICAgICAg
dm9pZCBzaHJpbmsoKSB7IHJlaGFzaChtX3RhYmxlU2l6ZSAvIDIpOyB9DQorDQorICAgICAgICB2
b2lkIHJlaGFzaChpbnQgbmV3VGFibGVTaXplKTsNCisgICAgICAgIHZvaWQgcmVpbnNlcnQoVmFs
dWVUeXBlJik7DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQnVja2V0KFZhbHVl
VHlwZSYgYnVja2V0KSB7IC8qbmV3ICgmYnVja2V0KSBWYWx1ZVR5cGUoVHJhaXRzOjplbXB0eVZh
bHVlKCkpOyovIH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUJ1Y2tldChWYWx1ZVR5cGUm
IGJ1Y2tldCkgeyBhc3NpZ25EZWxldGVkPFZhbHVlVHlwZSwgVHJhaXRzPihidWNrZXQpOyB9DQor
DQorICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZhbHVlVHlwZSogcG9z
aXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpDQorICAgICAgICAgICAgeyByZXR1cm4g
RnVsbExvb2t1cFR5cGUoTG9va3VwVHlwZShwb3NpdGlvbiwgZm91bmQpLCBoYXNoKTsgfQ0KKw0K
KyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBp
dGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0NCisgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7IHJl
dHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0N
CisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZDQorICAgICAgICB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0Ow0KKyAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lz
dGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7DQorI2Vsc2UNCisgICAgICAgIHN0YXRpYyB2b2lkIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJs
ZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQ0KKyNlbmRpZg0KKw0KKyNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTDQorICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisj
ZWxzZQ0KKyAgICAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUl0ZXJhdG9ycygpIHsgfQ0KKyNl
bmRpZg0KKw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21pblRhYmxlU2l6ZSA9IDY0Ow0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heExvYWQgPSAyOw0KKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBtX21pbkxvYWQgPSA2Ow0KKw0KKyAgICAgICAgVmFsdWVUeXBlKiBtX3RhYmxl
Ow0KKyAgICAgICAgaW50IG1fdGFibGVTaXplOw0KKyAgICAgICAgaW50IG1fdGFibGVTaXplTWFz
azsNCisgICAgICAgIGludCBtX2tleUNvdW50Ow0KKyAgICAgICAgaW50IG1fZGVsZXRlZENvdW50
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHB1YmxpYzoNCisgICAg
ICAgIG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1faXRlcmF0b3JzOw0KKyNlbmRpZg0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQ0KKyAg
ICAgICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAs
IG1fdGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAs
IG1fZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAg
ICAgICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPg0K
KyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpGdWxsTG9va3VwVHlwZSBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Omxvb2t1cChjb25zdCBUJiBrZXkpDQorICAgIHsNCisgICAgICAgIGFzc2VydChtX3RhYmxlKTsN
CisNCisgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOw0KKyAg
ICAgICAgaW50IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOw0KKyAgICAgICAgaW50IGkgPSBo
ICYgc2l6ZU1hc2s7DQorICAgICAgICBpbnQgayA9IDA7DQorDQorI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTDQorICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsNCisgICAgICAg
IGludCBwcm9iZUNvdW50ID0gMDsNCisjZW5kaWYNCisNCisgICAgICAgIFZhbHVlVHlwZSAqdGFi
bGUgPSBtX3RhYmxlOw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeTsNCisgICAgICAgIFZhbHVl
VHlwZSAqZGVsZXRlZEVudHJ5ID0gMDsNCisgICAgICAgIHdoaWxlICghaXNFbXB0eUJ1Y2tldCgq
KGVudHJ5ID0gdGFibGUgKyBpKSkpIHsNCisgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0
KCplbnRyeSkpDQorICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Ow0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3Qo
KmVudHJ5KSwga2V5KSkNCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQo
ZW50cnksIHRydWUsIGgpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgICAg
ICsrcHJvYmVDb3VudDsNCisgICAgICAgICAgICBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlz
aW9uQXRDb3VudChwcm9iZUNvdW50KTsNCisjZW5kaWYNCisgICAgICAgICAgICBpZiAoayA9PSAw
KQ0KKyAgICAgICAgICAgICAgICBrID0gMSB8IChoICUgc2l6ZU1hc2spOw0KKyAgICAgICAgICAg
IGkgPSAoaSArIGspICYgc2l6ZU1hc2s7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4g
bWFrZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFs
c2UsIGgpOw0KKyAgICB9DQorDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4NCisgICAgaW5saW5l
IHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQo
Y29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSAmZXh0cmEpDQorICAgIHsNCisgICAgICAgIGludmFs
aWRhdGVJdGVyYXRvcnMoKTsNCisNCisgICAgICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAg
ICBleHBhbmQoKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAg
ICAgICAgRnVsbExvb2t1cFR5cGUgbG9va3VwUmVzdWx0ID0gbG9va3VwPFQsIEhhc2hUcmFuc2xh
dG9yPihrZXkpOw0KKw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeSA9IGxvb2t1cFJlc3VsdC5m
aXJzdC5maXJzdDsNCisgICAgICAgIGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vj
b25kOw0KKyAgICAgICAgdW5zaWduZWQgaCA9IGxvb2t1cFJlc3VsdC5zZWNvbmQ7DQorDQorICAg
ICAgICBpZiAoZm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJ
dGVyYXRvcihlbnRyeSksIGZhbHNlKTsNCisNCisgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50Ow0KKw0KKyAgICAgICAgSGFz
aFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIGtleSwgZXh0cmEsIGgpOw0KKyAgICAgICAg
KyttX2tleUNvdW50Ow0KKw0KKyAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKSB7DQorICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgbWFrZXMgYW4gZXh0cmEgY29weSBvbiBleHBhbmQuIFByb2Jh
Ymx5IG5vdCB0aGF0IGJhZCBzaW5jZQ0KKyAgICAgICAgICAgIC8vIGV4cGFuZCBpcyByYXJlLCBi
dXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYSB2ZXJzaW9uIG9mIGV4cGFuZCB0aGF0IGNhbg0K
KyAgICAgICAgICAgIC8vIGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBw
b3NpdGlvbg0KKyAgICAgICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0
cmFjdCgqZW50cnkpOw0KKyAgICAgICAgICAgIGV4cGFuZCgpOw0KKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsNCisgICAgICAgIH0NCisN
CisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcihlbnRyeSksIHRydWUpOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiBl
bnRyeSkNCisgICAgew0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAgICAgICAgYXNzZXJ0
KCFsb29rdXAoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuc2Vjb25kKTsNCisgICAgICAgIGFz
c2VydCghaXNEZWxldGVkQnVja2V0KCoobG9va3VwKEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkp
LmZpcnN0KSkpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgKytIYXNoVGFi
bGVTdGF0czo6bnVtUmVpbnNlcnRzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgTW92ZXI8VmFsdWVU
eXBlLCBUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24+Ojptb3ZlKGVudHJ5LCAqKGxvb2t1cChFeHRy
YWN0b3I6OmV4dHJhY3QoZW50cnkpKS5maXJzdCkpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQor
ICAgIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IEtl
eSYga2V5KQ0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAgICAgICAgcmV0
dXJuIGVuZCgpOw0KKw0KKyAgICAgICAgTG9va3VwVHlwZSByZXN1bHQgPSBsb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKHJlc3VsdC5maXJzdCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4NCisgICAgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OmZpbmQoY29uc3QgS2V5JiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICgh
bV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7DQorDQorICAgICAgICBMb29rdXBU
eXBlIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IocmVzdWx0LmZpcnN0KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KKw0KKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SGFzaFRh
YmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KS5zZWNvbmQ7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4N
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykNCisgICAgew0KKyAg
ICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3Rl
bmN5KCk7DQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorICAgICAgICArK0hhc2hUYWJs
ZVN0YXRzOjpudW1SZW1vdmVzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgZGVsZXRlQnVja2V0KCpw
b3MpOw0KKyAgICAgICAgKyttX2RlbGV0ZWRDb3VudDsNCisgICAgICAgIC0tbV9rZXlDb3VudDsN
CisNCisgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkNCisgICAgICAgICAgICBzaHJpbmsoKTsN
CisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAg
ICB7DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0K
KyAgICAgICAgcmVtb3ZlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bv
c2l0aW9uKSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQ0KKyAgICB7DQorICAgICAgICByZW1vdmUo
ZmluZChrZXkpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBWYWx1ZSAqSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjphbGxvY2F0ZVRhYmxlKGludCBzaXplKQ0KKyAgICB7DQorICAgICAgICAvLyB3b3VsZCB1c2Ug
YSB0ZW1wbGF0ZSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMg
aGVyZSwgYnV0DQorICAgICAgICAvLyBnY2MgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCB0aGF0
DQorICAgICAgICBpZiAoVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvKQ0KKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUgKj4oS0pTOjpranNfZmFzdF9jYWxsb2Moc2l6ZSwg
c2l6ZW9mKFZhbHVlVHlwZSkpKTsNCisgICAgICAgIFZhbHVlVHlwZSogcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VmFsdWVUeXBlKj4oS0pTOjpranNfZmFzdF9tYWxsb2Moc2l6ZSAqIHNpemVvZihWYWx1
ZVR5cGUpKSk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykNCisgICAg
ICAgICAgICBpbml0aWFsaXplQnVja2V0KHJlc3VsdFtpXSk7DQorICAgICAgICByZXR1cm4gcmVz
dWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9j
YXRlVGFibGUoVmFsdWVUeXBlICp0YWJsZSwgaW50IHNpemUpDQorICAgIHsNCisgICAgICAgIGlm
IChUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24pDQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyArK2kpDQorICAgICAgICAgICAgICAgIHRhYmxlW2ldLn5WYWx1ZVR5cGUoKTsN
CisgICAgICAgIEtKUzo6a2pzX2Zhc3RfZnJlZSh0YWJsZSk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZCgpDQorICAgIHsNCisgICAgICAgIGludCBu
ZXdTaXplOw0KKyAgICAgICAgaWYgKG1fdGFibGVTaXplID09IDApDQorICAgICAgICAgICAgbmV3
U2l6ZSA9IG1fbWluVGFibGVTaXplOw0KKyAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxh
Y2UoKSkNCisgICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemU7DQorICAgICAgICBlbHNl
DQorICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVTaXplICogMjsNCisNCisgICAgICAgIHJl
aGFzaChuZXdTaXplKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6cmVoYXNoKGludCBuZXdUYWJsZVNpemUpDQorICAgIHsNCisgICAgICAgIGNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsNCisNCisgICAgICAgIGludCBvbGRUYWJsZVNpemUgPSBt
X3RhYmxlU2l6ZTsNCisgICAgICAgIFZhbHVlVHlwZSAqb2xkVGFibGUgPSBtX3RhYmxlOw0KKw0K
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgaWYgKG9sZFRhYmxlU2l6ZSAhPSAw
KQ0KKyAgICAgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaGFzaGVzOw0KKyNlbmRpZg0K
Kw0KKyAgICAgICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7DQorICAgICAgICBtX3RhYmxl
U2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAxOw0KKyAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRl
VGFibGUobmV3VGFibGVTaXplKTsNCisNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICE9IG9s
ZFRhYmxlU2l6ZTsgKytpKQ0KKyAgICAgICAgICAgIGlmICghaXNFbXB0eU9yRGVsZXRlZEJ1Y2tl
dChvbGRUYWJsZVtpXSkpDQorICAgICAgICAgICAgICAgIHJlaW5zZXJ0KG9sZFRhYmxlW2ldKTsN
CisNCisgICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsNCisNCisgICAgICAgIGRlYWxsb2NhdGVU
YWJsZShvbGRUYWJsZSwgb2xkVGFibGVTaXplKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpj
bGVhcigpDQorICAgIHsNCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisgICAgICAg
IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7DQorICAgICAgICBtX3RhYmxl
ID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplTWFz
ayA9IDA7DQorICAgICAgICBtX2tleUNvdW50ID0gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0K
KyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQ0KKyAgICAg
ICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAsIG1f
dGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAg
ICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICAgICAgLy8gQ29weSB0aGUg
aGFzaCB0YWJsZSB0aGUgZHVtYiB3YXksIGJ5IGFkZGluZyBlYWNoIGVsZW1lbnQgdG8gdGhlIG5l
dyB0YWJsZS4NCisgICAgICAgIC8vIEl0IG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IHRvIGNvcHkg
dGhlIHRhYmxlIHNsb3RzLCBidXQgaXQncyBub3QgY2xlYXIgdGhhdCBlZmZpY2llbmN5IGlzIG5l
ZWRlZC4NCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCA9IG90aGVyLmVuZCgpOw0KKyAgICAg
ICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkNCisgICAgICAgICAgICBhZGQoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQ0KKyAgICB7DQorICAgICAgICBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3Jz
KCk7DQorDQorICAgICAgICBWYWx1ZVR5cGUgKnRtcF90YWJsZSA9IG1fdGFibGU7DQorICAgICAg
ICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsNCisgICAgICAgIG90aGVyLm1fdGFibGUgPSB0bXBf
dGFibGU7DQorDQorICAgICAgICBpbnQgdG1wX3RhYmxlU2l6ZSA9IG1fdGFibGVTaXplOw0KKyAg
ICAgICAgbV90YWJsZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsNCisgICAgICAgIG90aGVyLm1f
dGFibGVTaXplID0gdG1wX3RhYmxlU2l6ZTsNCisNCisgICAgICAgIGludCB0bXBfdGFibGVTaXpl
TWFzayA9IG1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG1fdGFibGVTaXplTWFzayA9IG90aGVy
Lm1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IHRtcF90
YWJsZVNpemVNYXNrOw0KKw0KKyAgICAgICAgaW50IHRtcF9rZXlDb3VudCA9IG1fa2V5Q291bnQ7
DQorICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsNCisgICAgICAgIG90aGVy
Lm1fa2V5Q291bnQgPSB0bXBfa2V5Q291bnQ7DQorDQorICAgICAgICBpbnQgdG1wX2RlbGV0ZWRD
b3VudCA9IG1fZGVsZXRlZENvdW50Ow0KKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5t
X2RlbGV0ZWRDb3VudDsNCisgICAgICAgIG90aGVyLm1fZGVsZXRlZENvdW50ID0gdG1wX2RlbGV0
ZWRDb3VudDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4mIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpDQorICAgIHsNCisgICAgICAgIEhh
c2hUYWJsZSB0bXAob3RoZXIpOw0KKyAgICAgICAgc3dhcCh0bXApOw0KKyAgICAgICAgcmV0dXJu
ICp0aGlzOw0KKyAgICB9DQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkg
Y29uc3QNCisgICAgew0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgp
Ow0KKyAgICAgICAgYXNzZXJ0KCFzaG91bGRFeHBhbmQoKSk7DQorICAgICAgICBhc3NlcnQoIXNo
b3VsZFNocmluaygpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm47DQorDQorICAgICAgICBpbnQg
Y291bnQgPSAwOw0KKyAgICAgICAgaW50IGRlbGV0ZWRDb3VudCA9IDA7DQorICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG1fdGFibGVTaXplOyArK2opIHsNCisgICAgICAgICAgICBWYWx1ZVR5
cGUgKmVudHJ5ID0gbV90YWJsZSArIGo7DQorICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAgICAgICAgaWYg
KGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7DQorICAgICAgICAgICAgICAgICsrZGVsZXRlZENv
dW50Ow0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorDQorICAg
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50
cnkpKTsNCisgICAgICAgICAgICBhc3NlcnQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7DQorICAg
ICAgICAgICAgKytjb3VudDsNCisgICAgICAgIH0NCisNCisgICAgICAgIGFzc2VydChjb3VudCA9
PSBtX2tleUNvdW50KTsNCisgICAgICAgIGFzc2VydChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVk
Q291bnQpOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGVTaXplID49IG1fbWluVGFibGVTaXplKTsN
CisgICAgICAgIGFzc2VydChtX3RhYmxlU2l6ZU1hc2spOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFi
bGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOw0KKyAgICB9DQorDQorI2VuZGlmIC8vIENI
RUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0
b3JzKCkNCisgICAgew0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5leHQ7DQorICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7DQorICAg
ICAgICAgICAgbmV4dCA9IHAtPm1fbmV4dDsNCisgICAgICAgICAgICBwLT5tX3RhYmxlID0gMDsN
CisgICAgICAgICAgICBwLT5tX25leHQgPSAwOw0KKyAgICAgICAgICAgIHAtPm1fcHJldmlvdXMg
PSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pdGVyYXRvcnMgPSAwOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiB0YWJsZSwN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQ0KKyAgICB7DQorICAgICAgICBp
dC0+bV90YWJsZSA9IHRhYmxlOw0KKyAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOw0KKw0KKyAg
ICAgICAgLy8gSW5zZXJ0IGl0ZXJhdG9yIGF0IGhlYWQgb2YgZG91Ymx5LWxpbmtlZCBsaXN0IG9m
IGl0ZXJhdG9ycy4NCisgICAgICAgIGlmICghdGFibGUpIHsNCisgICAgICAgICAgICBpdC0+bV9u
ZXh0ID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYXNzZXJ0KHRhYmxlLT5t
X2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAgaXQtPm1fbmV4dCA9IHRhYmxlLT5tX2l0
ZXJhdG9yczsNCisgICAgICAgICAgICB0YWJsZS0+bV9pdGVyYXRvcnMgPSBpdDsNCisgICAgICAg
ICAgICBpZiAoaXQtPm1fbmV4dCkgew0KKyAgICAgICAgICAgICAgICBhc3NlcnQoIWl0LT5tX25l
eHQtPm1fcHJldmlvdXMpOw0KKyAgICAgICAgICAgICAgICBpdC0+bV9uZXh0LT5tX3ByZXZpb3Vz
ID0gaXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
DQorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpDQor
ICAgIHsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorDQorICAg
ICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJvbSBkb3VibHktbGlua2VkIGxpc3Qgb2YgaXRlcmF0
b3JzLg0KKyAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgew0KKyAgICAgICAgICAgIGFzc2VydCgh
aXQtPm1fbmV4dCk7DQorICAgICAgICAgICAgYXNzZXJ0KCFpdC0+bV9wcmV2aW91cyk7DQorICAg
ICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7DQorICAgICAgICAg
ICAgICAgIGFzc2VydChpdC0+bV9uZXh0LT5tX3ByZXZpb3VzID09IGl0KTsNCisgICAgICAgICAg
ICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9IGl0LT5tX3ByZXZpb3VzOw0KKyAgICAgICAg
ICAgIH0NCisgICAgICAgICAgICBpZiAoaXQtPm1fcHJldmlvdXMpIHsNCisgICAgICAgICAgICAg
ICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAg
ICAgIGFzc2VydChpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0KTsNCisgICAgICAgICAgICAg
ICAgaXQtPm1fcHJldmlvdXMtPm1fbmV4dCA9IGl0LT5tX25leHQ7DQorICAgICAgICAgICAgfSBl
bHNlIHsNCisgICAgICAgICAgICAgICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9
PSBpdCk7DQorICAgICAgICAgICAgICAgIGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9IGl0LT5t
X25leHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaXQtPm1fdGFi
bGUgPSAwOw0KKyAgICAgICAgaXQtPm1fbmV4dCA9IDA7DQorICAgICAgICBpdC0+bV9wcmV2aW91
cyA9IDA7DQorICAgIH0NCisNCisjZW5kaWYgLy8gQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0K
Kw0KKyAgICAvLyBpdGVyYXRvciBhZGFwdGVycw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlciB7DQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcihj
b25zdCB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciYgaW1wbCkgOiBtX2lt
cGwoaW1wbCkge30NCisNCisgICAgICAgIGNvbnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gKGNvbnN0IFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9DQorICAgICAgICBjb25zdCBW
YWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KKyAgICAgICAg
Y29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0NCisN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyAr
K21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlv
bmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFk
YXB0ZXIgew0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1l
IEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KKw0KKyAg
ICAgICAgVmFsdWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2ltcGwu
Z2V0KCk7IH0NCisgICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KmdldCgpOyB9DQorICAgICAgICBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVy
biBnZXQoKTsgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRv
cisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsr
IGludGVudGlvbmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIHsNCisgICAgICAg
ICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOw0K
KyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdHlwZW5hbWUg
SGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5tX2ltcGwg
IT0gYi5tX2ltcGw7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4NCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYg
YikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9
DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBj
b25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAg
IHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsNCisgICAgfQ0KKw0KKyAgICAvLyByZWZlcmVu
Y2UgY291bnQgbWFuYWdlcg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzPiBzdHJ1Y3QgTmVlZHNSZWYgew0KKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBWYWx1ZVRyYWl0czo6bmVlZHNSZWYgJiYgIVZhbHVl
U3RvcmFnZVRyYWl0czo6bmVlZHNSZWY7DQorICAgIH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZpcnN0VHJhaXRzLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHMsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cz4NCisgICAgc3RydWN0IE5lZWRzUmVmPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRy
YWl0cywgU2Vjb25kVHJhaXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgRmlyc3RTdG9yYWdl
VHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OlNl
Y29uZFRyYWl0cyBTZWNvbmRTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgZmlyc3ROZWVkc1JlZiA9IE5lZWRzUmVmPEZpcnN0VHJhaXRzLCBGaXJzdFN0b3JhZ2VUcmFp
dHM+Ojp2YWx1ZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNlY29uZE5lZWRzUmVmID0g
TmVlZHNSZWY8U2Vjb25kVHJhaXRzLCBTZWNvbmRTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZpcnN0TmVlZHNSZWYgfHwgc2Vjb25kTmVl
ZHNSZWY7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPGJvb2wgbmVlZHNSZWYsIHR5cGVuYW1l
IFZhbHVlVHJhaXRzPiBzdHJ1Y3QgUmVmQ291bnRlckJhc2U7DQorDQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUmVmQ291bnRlckJhc2U8ZmFsc2UsIFZh
bHVlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFp
dFR5cGUgVmFsdWVUeXBlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlVHlw
ZSYpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3QgVmFsdWVUeXBlJikgeyB9
DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBz
dHJ1Y3QgUmVmQ291bnRlckJhc2U8dHJ1ZSwgVmFsdWVUcmFpdHM+IHsNCisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAgICBz
dGF0aWMgdm9pZCByZWYoY29uc3QgVmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpyZWYoKihj
b25zdCBWYWx1ZVR5cGUqKSZ2KTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3Qg
VmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpkZXJlZigqKGNvbnN0IFZhbHVlVHlwZSopJnYp
OyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBl
bmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+IHN0cnVjdCBSZWZDb3VudGVyIHsNCisgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlU3Rv
cmFnZVR5cGU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc1JlZiA9IE5lZWRzUmVm
PFZhbHVlVHJhaXRzLCBWYWx1ZVN0b3JhZ2VUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5cGVk
ZWYgUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIFZhbHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAg
c3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6cmVmKCoo
Y29uc3QgVmFsdWVUeXBlKikmdik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmKGNvbnN0
IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6ZGVyZWYoKihjb25zdCBWYWx1ZVR5cGUqKSZ2
KTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlw
ZW5hbWUgU2Vjb25kVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+DQorICAgIHN0
cnVjdCBSZWZDb3VudGVyPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRyYWl0cywgU2Vjb25kVHJh
aXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEZp
cnN0VHJhaXRzOjpUcmFpdFR5cGUgRmlyc3RUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZSBTZWNvbmRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEZpcnN0U3RvcmFnZVRyYWl0
czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpTZWNvbmRU
cmFpdHMgU2Vjb25kU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFs
dWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGZpcnN0TmVlZHNSZWYgPSBOZWVkc1JlZjxGaXJzdFRyYWl0cywgRmly
c3RTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzZWNv
bmROZWVkc1JlZiA9IE5lZWRzUmVmPFNlY29uZFRyYWl0cywgU2Vjb25kU3RvcmFnZVRyYWl0cz46
OnZhbHVlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxmaXJzdE5lZWRzUmVmLCBG
aXJzdFRyYWl0cz4gRmlyc3RCYXNlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxz
ZWNvbmROZWVkc1JlZiwgU2Vjb25kVHJhaXRzPiBTZWNvbmRCYXNlOw0KKyAgICAgICAgc3RhdGlj
IHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsNCisgICAgICAgICAgICBGaXJz
dEJhc2U6OnJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmlyc3QpOw0KKyAgICAgICAgICAgIFNl
Y29uZEJhc2U6OnJlZigqKGNvbnN0IFNlY29uZFR5cGUqKSZ2LnNlY29uZCk7DQorICAgICAgICB9
DQorICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZihjb25zdCBWYWx1ZVN0b3JhZ2VUeXBlJiB2KSB7
DQorICAgICAgICAgICAgRmlyc3RCYXNlOjpkZXJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmly
c3QpOw0KKyAgICAgICAgICAgIFNlY29uZEJhc2U6OmRlcmVmKCooY29uc3QgU2Vjb25kVHlwZSop
JnYuc2Vjb25kKTsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBu
ZWVkc1JlZiwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+IHN0
cnVjdCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHN0cnVjdCBIYXNoVGFi
bGVSZWZDb3VudGVyQmFzZTxmYWxzZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+DQorICAg
IHsNCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAg
ICAgICBzdGF0aWMgdm9pZCBkZXJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAgIH07DQor
DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJh
aXRzPg0KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxl
VHlwZSwgVmFsdWVUcmFpdHM+DQorICAgIHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aFRhYmxlVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFJlZkNvdW50
ZXI8VmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHJhaXRzPiBWYWx1
ZVJlZkNvdW50ZXI7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWZBbGwoSGFzaFRhYmxlVHlwZSYp
Ow0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZBbGwoSGFzaFRhYmxlVHlwZSYpOw0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1
ZVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTx0cnVlLCBIYXNoVGFi
bGVUeXBlLCBWYWx1ZVRyYWl0cz46OnJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAg
ew0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAg
IFZhbHVlUmVmQ291bnRlcjo6cmVmKCppdCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHZvaWQgSGFz
aFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+Ojpk
ZXJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAgew0KKyAgICAgICAgaXRlcmF0b3Ig
ZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gdGFibGUuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAgIFZhbHVlUmVmQ291bnRlcjo6ZGVy
ZWYoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
LCB0eXBlbmFtZSBWYWx1ZVRyYWl0cz4gc3RydWN0IEhhc2hUYWJsZVJlZkNvdW50ZXIgew0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYgPSBOZWVkc1JlZjxWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmQWxsKEhhc2hUYWJsZVR5
cGUmIHRhYmxlKSB7IEJhc2U6OnJlZkFsbCh0YWJsZSk7IH0NCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlcmVmQWxsKEhhc2hUYWJsZVR5cGUmIHRhYmxlKSB7IEJhc2U6OmRlcmVmQWxsKHRhYmxlKTsg
fQ0KKyAgICB9Ow0KKw0KK30gLy8gbmFtZXNwYWNlIFdURg0KKw0KKyNlbmRpZiAvLyBLWE1MQ09S
RV9IQVNIX1RBQkxFX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRz
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRzLmgJ
KHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaFRyYWl0cy5oCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxOTUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2lj
LW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGli
cmFyaWVzDQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
DQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLg0KKyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQor
I2RlZmluZSBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQorDQorI2luY2x1ZGUgIkhhc2hGdW5jdGlv
bnMuaCINCisjaW5jbHVkZSA8dXRpbGl0eT4NCisNCituYW1lc3BhY2UgV1RGIHsNCisNCisgICAg
dXNpbmcgc3RkOjpwYWlyOw0KKyAgICB1c2luZyBzdGQ6Om1ha2VfcGFpcjsNCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElzSW50ZWdlciAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVn
ZXI8Ym9vbD4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGNoYXI+ICAgICAgICAgICAgICAg
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IElzSW50ZWdlcjxzaWduZWQgY2hhcj4gICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQg
Y2hhcj4gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNob3J0PiAgICAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdl
cjx1bnNpZ25lZCBzaG9ydD4gICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8aW50PiAgICAgICAgICAgICAgICB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGludD4gICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxsb25nPiAgICAg
ICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgbG9uZz4gICAgICB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2Vy
PGxvbmcgbG9uZz4gICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+IHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVn
ZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U7DQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8dHJ1ZSwgVD4gew0K
KyAgICAgICAgdHlwZWRlZiBUIFRyYWl0VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRyYWl0
czx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQor
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7DQorICAg
IH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8ZmFsc2UsIFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUcmFpdFR5cGU7DQorICAgICAgICB0
eXBlZGVmIEhhc2hUcmFpdHM8VD4gU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4gew0KKyAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIFQoKTsgfQ0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYg
PSBmYWxzZTsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhh
c2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7IH07DQorDQorICAgIC8vIHNpZ25lZCBp
bnRlZ2VyIHRyYWl0cyBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBhbGwgdXNlcyBzaW5jZSB0
aGV5IGRpc2FsbG93IDAgYW5kIC0xIGFzIGtleXMNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxzaWduZWQgY2hhcj4gOiBHZW5lcmljSGFzaFRyYWl0czxpbnQ+IHsNCisgICAgICAg
IHN0YXRpYyBzaWduZWQgY2hhciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPHNob3J0PiA6IEdlbmVyaWNIYXNo
VHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIHNob3J0IGRlbGV0ZWRWYWx1ZSgpIHsgcmV0
dXJuIC0xOyB9DQorICAgIH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8aW50
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIGludCBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8bG9uZz4gew0KKyAgICAgICAgc3Rh
dGljIGxvbmcgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisgICAgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxsb25nIGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8
bG9uZyBsb25nPiB7DQorICAgICAgICBzdGF0aWMgbG9uZyBkZWxldGVkVmFsdWUoKSB7IHJldHVy
biAtMTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxQKj4gOiBHZW5lcmljSGFzaFRyYWl0czxQKj4gew0KKyAgICAgICAgdHlwZWRlZiBI
YXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9y
YWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7DQorICAgICAgICBzdGF0aWMgUCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxQKj4oLTEpOyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBIYXNoVHJhaXRzPFJlZlB0cjxQPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8UmVmUHRy
PFA+ID4gew0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNp
emVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc1JlZiA9IHRydWU7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWYoY29uc3QgUmVm
UHRyPFA+JiBwKSB7IGlmIChwKSBwLT5yZWYoKTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVy
ZWYoY29uc3QgUmVmUHRyPFA+JiBwKSB7IGlmIChwKSBwLT5kZXJlZigpOyB9DQorICAgIH07DQor
DQorICAgIC8vIHRlbXBsYXRlIHRvIHNldCBkZWxldGVkIHZhbHVlcw0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBEZWxldGVkVmFsdWVBc3NpZ25lciB7DQorICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUodHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5
cGUmIGxvY2F0aW9uKSB7IGxvY2F0aW9uID0gVHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0KKyAg
ICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGlubGlu
ZSB2b2lkIGFzc2lnbkRlbGV0ZWQoVCYgbG9jYXRpb24pDQorICAgIHsNCisgICAgICAgIERlbGV0
ZWRWYWx1ZUFzc2lnbmVyPFRyYWl0cz46OmFzc2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQor
ICAgIH0NCisNCisgICAgLy8gc3BlY2lhbCB0cmFpdHMgZm9yIHBhaXJzLCBoZWxwZnVsIGZvciB0
aGVpciB1c2UgaW4gSGFzaE1hcCBpbXBsZW1lbnRhdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGaXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPiBzdHJ1Y3QgUGFpckhhc2hU
cmFpdHM7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnLCB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHNBcmc+DQorICAgIHN0cnVjdCBQYWlyQmFzZUhhc2hUcmFpdHMgOiBHZW5l
cmljSGFzaFRyYWl0czxwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5
cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPiA+IHsNCisgICAgICAgIHR5cGVkZWYg
Rmlyc3RUcmFpdHNBcmcgRmlyc3RUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIFNlY29uZFRyYWl0
c0FyZyBTZWNvbmRUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIHBhaXI8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlRyYWl0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+IFRyYWl0
VHlwZTsNCisNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlN0b3JhZ2VUcmFpdHMsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6U3RvcmFnZVRyYWl0
cz4gU3RvcmFnZVRyYWl0czsNCisNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6
OmVtcHR5VmFsdWVJc1plcm87DQorDQorICAgICAgICBzdGF0aWMgVHJhaXRUeXBlIGVtcHR5VmFs
dWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoRmlyc3RUcmFp
dHM6OmVtcHR5VmFsdWUoKSwgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlKCkpOw0KKyAgICAgICAg
fQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlwZW5h
bWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUGFpckhhc2hUcmFpdHMgOiBQYWlyQmFzZUhh
c2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gew0KKyAgICAgICAgdHlwZWRlZiBw
YWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0
czo6VHJhaXRUeXBlPiBUcmFpdFR5cGU7DQorDQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gRmlyc3RUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgU2Vjb25k
VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uOw0KKw0KKyAgICAgICAgc3RhdGljIFRyYWl0VHlwZSBk
ZWxldGVkVmFsdWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBUcmFpdFR5cGUo
Rmlyc3RUcmFpdHM6OmRlbGV0ZWRWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7
DQorICAgICAgICB9DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUo
VHJhaXRUeXBlJiBsb2NhdGlvbikNCisgICAgICAgIHsNCisgICAgICAgICAgICBhc3NpZ25EZWxl
dGVkPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIEZpcnN0VHJhaXRzPihsb2NhdGlv
bi5maXJzdCk7DQorICAgICAgICAgICAgbG9jYXRpb24uc2Vjb25kID0gU2Vjb25kVHJhaXRzOjpl
bXB0eVZhbHVlKCk7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZpcnN0LCB0eXBlbmFtZSBTZWNvbmQ+DQorICAgIHN0cnVjdCBIYXNoVHJhaXRzPHBhaXI8
Rmlyc3QsIFNlY29uZD4gPiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEZpcnN0
PiwgSGFzaFRyYWl0czxTZWNvbmQ+ID4geyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
aXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZh
bHVlQXNzaWduZXI8UGFpckhhc2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gPg0K
KyAgICB7DQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjx0eXBl
bmFtZSBGaXJzdFRyYWl0czo6VHJhaXRUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OlRyYWl0
VHlwZT4mIGxvY2F0aW9uKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIFBhaXJIYXNoVHJhaXRz
PEZpcnN0VHJhaXRzLCBTZWNvbmRUcmFpdHM+Ojphc3NpZ25EZWxldGVkVmFsdWUobG9jYXRpb24p
Ow0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwg
dHlwZW5hbWUgU2Vjb25kPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZhbHVlQXNzaWduZXI8SGFzaFRy
YWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID4gPg0KKyAgICB7DQorICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjxGaXJzdCwgU2Vjb25kPiYgbG9jYXRpb24pDQorICAg
ICAgICB7DQorICAgICAgICAgICAgSGFzaFRyYWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID46OmFz
c2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAg
IC8vIGhhc3NoIGZ1bmN0aW9ucyBhbmQgdHJhaXRzIHRoYXQgYXJlIGVxdWl2YWxlbnQgKGZvciBj
b2RlIHNoYXJpbmcpDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IFRyYWl0c0FyZz4gc3RydWN0IEhhc2hLZXlTdG9yYWdlVHJhaXRzIHsNCisgICAgICAgIHR5cGVk
ZWYgSGFzaEFyZyBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBUcmFpdHNBcmcgVHJhaXRzOw0KKyAg
ICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFp
dHM8UHRySGFzaDxQKj4sIEhhc2hUcmFpdHM8UCo+ID4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBJbnRUeXBlczxzaXplb2YoUCopPjo6U2lnbmVkVHlwZSBJbnRUeXBlOw0KKyAgICAgICAg
dHlwZWRlZiBJbnRIYXNoPEludFR5cGU+IEhhc2g7DQorICAgICAgICB0eXBlZGVmIEhhc2hUcmFp
dHM8SW50VHlwZT4gVHJhaXRzOw0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFpdHM8UHRySGFzaDxSZWZQdHI8UD4gPiwgSGFzaFRyYWl0
czxSZWZQdHI8UD4gPiA+IHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW50VHlwZXM8c2l6
ZW9mKFAqKT46OlNpZ25lZFR5cGUgSW50VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSW50SGFzaDxJ
bnRUeXBlPiBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPEludFR5cGU+IFRyYWl0
czsNCisgICAgfTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6Okhhc2hU
cmFpdHM7DQordXNpbmcgV1RGOjpQYWlySGFzaFRyYWl0czsNCisNCisjZW5kaWYgLy8gS1hNTENP
UkVfSEFTSF9UUkFJVFNfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2l0ZXJhdG9y
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlz
aW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlzaW9uIDAp
DQpAQCAtMCwwICsxLDE3MCBAQA0KKy8vIFR5cGVzIHVzZWQgaW4gaXRlcmF0b3IgaW1wbGVtZW50
YXRpb24gLSotIEMrKyAtKi0NCisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8g
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg
dGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u
IDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhj
ZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUN
CisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVy
IGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5l
IGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUg
YW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRo
aXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1
dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBv
dGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkN
CisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENv
cHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQ
ZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMg
c29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhl
cmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRo
YXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisg
KiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBt
YWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhp
cyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIg
d2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHly
aWdodCAoYykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1z
LCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29u
IEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJp
bGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlk
ZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisN
CisvKiogQGZpbGUgc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaA0KKyAqICBUaGlzIGlzIGFuIGlu
dGVybmFsIGhlYWRlciBmaWxlLCBpbmNsdWRlZCBieSBvdGhlciBsaWJyYXJ5IGhlYWRlcnMuDQor
ICogIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gdXNlIGl0IGRpcmVjdGx5Lg0KKyAqDQorICog
IFRoaXMgZmlsZSBjb250YWlucyBhbGwgb2YgdGhlIGdlbmVyYWwgaXRlcmF0b3ItcmVsYXRlZCB1
dGlsaXR5IHR5cGVzLA0KKyAqICBzdWNoIGFzIGl0ZXJhdG9yX3RyYWl0cyBhbmQgc3RydWN0IGl0
ZXJhdG9yLg0KKyAqLw0KKw0KKyNpZm5kZWYgX0lURVJBVE9SX0JBU0VfVFlQRVNfSA0KKyNkZWZp
bmUgX0lURVJBVE9SX0JBU0VfVFlQRVNfSCAxDQorDQorLy8jcHJhZ21hIEdDQyBzeXN0ZW1faGVh
ZGVyDQorDQorbmFtZXNwYWNlIHN0ZA0KK3sNCisgIC8vQHsNCisgIC8qKg0KKyAgICogIEBkZWZn
cm91cCBpdGVyYXRvcl90YWdzIEl0ZXJhdG9yIFRhZ3MNCisgICAqICBUaGVzZSBhcmUgZW1wdHkg
dHlwZXMsIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGl0ZXJhdG9ycy4gIFRoZQ0KKyAg
ICogIGRpc3RpbmN0aW9uIGlzIG5vdCBtYWRlIGJ5IHdoYXQgdGhleSBjb250YWluLCBidXQgc2lt
cGx5IGJ5IHdoYXQgdGhleQ0KKyAgICogIGFyZS4gIERpZmZlcmVudCB1bmRlcmx5aW5nIGFsZ29y
aXRobXMgY2FuIHRoZW4gYmUgdXNlZCBiYXNlZCBvbiB0aGUNCisgICAqICBkaWZmZXJlbnQgb3Bl
cmF0aW9ucyBzdXBwb3JldGQgYnkgZGlmZmVyZW50IGl0ZXJhdG9yIHR5cGVzLg0KKyAgKi8NCisg
IC8vLyAgTWFya2luZyBpbnB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9Ow0KKyAgLy8vICBNYXJraW5nIG91dHB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3Qgb3V0
cHV0X2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vLyBGb3J3YXJkIGl0ZXJhdG9ycyBzdXBwb3J0IGEg
c3VwZXJzZXQgb2YgaW5wdXQgaXRlcmF0b3Igb3BlcmF0aW9ucy4NCisgIHN0cnVjdCBmb3J3YXJk
X2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcge307DQorICAvLy8gQmlk
aXJlY3Rpb25hbCBpdGVyYXRvcnMgc3VwcG9ydCBhIHN1cGVyc2V0IG9mIGZvcndhcmQgaXRlcmF0
b3INCisgIC8vLyBvcGVyYXRpb25zLg0KKyAgc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9Ow0KKyAgLy8vIFJhbmRvbS1hY2Nl
c3MgaXRlcmF0b3JzIHN1cHBvcnQgYSBzdXBlcnNldCBvZiBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9y
DQorICAvLy8gb3BlcmF0aW9ucy4NCisgIHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vQH0NCisNCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgQ29tbW9uICVpdGVyYXRvciBjbGFzcy4NCisgICAqDQor
ICAgKiAgVGhpcyBjbGFzcyBkb2VzIG5vdGhpbmcgYnV0IGRlZmluZSBuZXN0ZWQgdHlwZWRlZnMu
ICAlSXRlcmF0b3IgY2xhc3Nlcw0KKyAgICogIGNhbiBpbmhlcml0IGZyb20gdGhpcyBjbGFzcyB0
byBzYXZlIHNvbWUgd29yay4gIFRoZSB0eXBlZGVmcyBhcmUgdGhlbg0KKyAgICogIHVzZWQgaW4g
c3BlY2lhbGl6YXRpb25zIGFuZCBvdmVybG9hZGluZy4NCisgICAqDQorICAgKiAgSW4gcGFydGlj
dWxhciwgdGhlcmUgYXJlIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHJlcXVpcmVtZW50
cw0KKyAgICogIHN1Y2ggYXMgQGMgb3BlcmF0b3IrKyBhbmQgdGhlIGxpa2UuICAoSG93IGNvdWxk
IHRoZXJlIGJlPykNCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2F0ZWdvcnksIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0gcHRyZGlmZl90LA0KKyAgICAgICAgICAgdHlw
ZW5hbWUgX1BvaW50ZXIgPSBfVHAqLCB0eXBlbmFtZSBfUmVmZXJlbmNlID0gX1RwJj4NCisgICAg
c3RydWN0IGl0ZXJhdG9yDQorICAgIHsNCisgICAgICAvLy8gT25lIG9mIHRoZSBAbGluayBpdGVy
YXRvcl90YWdzIHRhZyB0eXBlc0BlbmRsaW5rLg0KKyAgICAgIHR5cGVkZWYgX0NhdGVnb3J5ICBp
dGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICAvLy8gVGhlIHR5cGUgInBvaW50ZWQgdG8iIGJ5IHRo
ZSBpdGVyYXRvci4NCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlwZTsNCisgICAg
ICAvLy8gRGlzdGFuY2UgYmV0d2VlbiBpdGVyYXRvcnMgaXMgcmVwcmVzZW50ZWQgYXMgdGhpcyB0
eXBlLg0KKyAgICAgIHR5cGVkZWYgX0Rpc3RhbmNlICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAg
Ly8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgcG9pbnRlci10by12YWx1ZV90eXBlLg0KKyAgICAg
IHR5cGVkZWYgX1BvaW50ZXIgICBwb2ludGVyOw0KKyAgICAgIC8vLyBUaGlzIHR5cGUgcmVwcmVz
ZW50cyBhIHJlZmVyZW5jZS10by12YWx1ZV90eXBlLg0KKyAgICAgIHR5cGVkZWYgX1JlZmVyZW5j
ZSByZWZlcmVuY2U7DQorICAgIH07DQorDQorICAvKioNCisgICAqICBUaGlzIGNsYXNzIGRvZXMg
bm90aGluZyBidXQgZGVmaW5lIG5lc3RlZCB0eXBlZGVmcy4gIFRoZSBnZW5lcmFsDQorICAgKiAg
dmVyc2lvbiBzaW1wbHkgImZvcndhcmRzIiB0aGUgbmVzdGVkIHR5cGVkZWZzIGZyb20gdGhlIEl0
ZXJhdG9yDQorICAgKiAgYXJndW1lbnQuICBTcGVjaWFsaXplZCB2ZXJzaW9ucyBmb3IgcG9pbnRl
cnMgYW5kIHBvaW50ZXJzLXRvLWNvbnN0DQorICAgKiAgcHJvdmlkZSB0aWdodGVyLCBtb3JlIGNv
cnJlY3Qgc2VtYW50aWNzLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4N
CisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0cw0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5Ow0KKyAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUg
ICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBv
aW50ZXIgICAgICAgICAgIHBvaW50ZXI7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0
b3I6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPg0KKyAgICB7
DQorICAgICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsNCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsNCisgICAgICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyOw0KKyAgICAgIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxjb25zdCBfVHAqPg0KKyAgICB7DQorICAgICAgdHlwZWRlZiByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICB0eXBlZGVmIF9U
cCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRy
ZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsNCisgICAgICB0eXBlZGVm
IGNvbnN0IF9UcCogICAgICAgICAgICAgICAgICBwb2ludGVyOw0KKyAgICAgIHR5cGVkZWYgY29u
c3QgX1RwJiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIC8qKg0K
KyAgICogIEBpZiBtYWludA0KKyAgICogIFRoaXMgZnVuY3Rpb24gaXMgbm90IGEgcGFydCBvZiB0
aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyBzeW50YWN0aWMNCisgICAqICBzdWdhciBmb3IgaW50ZXJu
YWwgbGlicmFyeSB1c2Ugb25seS4NCisgICAqICBAZW5kaWYNCisgICovDQorICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcj4NCisgICAgaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRl
cj46Oml0ZXJhdG9yX2NhdGVnb3J5DQorICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0
ZXImKQ0KKyAgICB7IHJldHVybiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVy
YXRvcl9jYXRlZ29yeSgpOyB9DQorDQorfSAvLyBuYW1lc3BhY2Ugc3RkDQorDQorI2VuZGlmIC8q
IF9JVEVSQVRPUl9CQVNFX1RZUEVTX0ggKi8NCisNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9uZXcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9uZXcJKHJl
dmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbmV3CShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSBAQA0KKyNpbmNsdWRlIDxlMzJjbW4uaD4NClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNvYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsNyArMjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KICNpbmNsdWRlIDxOUF9qc29iamVjdC5oPgogCkBAIC0zNSwxNSArMzUsMTUgQEANCiAKIHN0
YXRpYyBLSlM6Okxpc3QgbGlzdEZyb21WYXJpYW50QXJncyhLSlM6OkV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgTlBWYXJpYW50ICphcmdzLCB1bnNpZ25lZCBhcmdDb3VudCkKIHsKLSAgICBLSlM6Okxp
c3QgYUxpc3Q7IAorICAgIEtKUzo6TGlzdCBhTGlzdDsKICAgICB1bnNpZ25lZCBpOwogICAgIGNv
bnN0IE5QVmFyaWFudCAqdiA9IGFyZ3M7Ci0gICAgCisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJn
Q291bnQ7IGkrKykgewogICAgICAgICBhTGlzdC5hcHBlbmQgKGNvbnZlcnROUFZhcmlhbnRUb1Zh
bHVlIChleGVjLCB2KSk7CiAgICAgICAgIHYrKzsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
YUxpc3Q7CiB9CiAKQEAgLTU3LDEwICs1NywxMCBAQA0KICAgICBmcmVlIChvYmopOwogfQogCi1z
dGF0aWMgTlBDbGFzcyBfamF2YXNjcmlwdENsYXNzID0geyAKK3N0YXRpYyBOUENsYXNzIF9qYXZh
c2NyaXB0Q2xhc3MgPSB7CiAgICAgMSwKLSAgICBqc0FsbG9jYXRlLCAKLSAgICAoTlBEZWFsbG9j
YXRlRnVuY3Rpb25QdHIpanNEZWFsbG9jYXRlLCAKKyAgICBqc0FsbG9jYXRlLAorICAgIChOUERl
YWxsb2NhdGVGdW5jdGlvblB0cilqc0RlYWxsb2NhdGUsCiAgICAgMCwKICAgICAwLAogICAgIDAs
CkBAIC03MywxMjcgKzczLDEzMCBAQA0KIAogTlBDbGFzcyAqTlBTY3JpcHRPYmplY3RDbGFzcyA9
ICZfamF2YXNjcmlwdENsYXNzOwogCi1zdGF0aWMgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5Q
SWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpCi17Ci0gICAgTlBVVEYxNiAqbWV0aG9kTmFt
ZTsKLSAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7Ci0gICAgCi0gICAgY29udmVydFVURjhU
b1VURjE2IChuYW1lLCAtMSwgJm1ldGhvZE5hbWUsICZVVEYxNkxlbmd0aCk7IC8vIHJlcXVpcmVz
IGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCi0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyICgo
Y29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOwotICAgIGZyZWUgKCh2
b2lkICopbWV0aG9kTmFtZSk7Ci0gICAgCi0gICAgcmV0dXJuIGlkZW50aWZpZXI7Ci19CiAKIHN0
YXRpYyBib29sIF9pc1NhZmVTY3JpcHQoSmF2YVNjcmlwdE9iamVjdCAqb2JqKQogewogICAgIGlm
IChvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQpIHsKLQlJbnRlcnByZXRlciAqb3JpZ2luSW50
ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCk7Ci0J
aWYgKG9yaWdpbkludGVycHJldGVyKSB7Ci0JICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+
aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwotCX0K
KyAgICBJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCk7CisgICAgaWYgKG9yaWdpbkludGVycHJldGVyKSB7Cisg
ICAgICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwogICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK0VYUE9SVF9DCiBOUE9iamVjdCAqX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKE5Q
UCBucHAsIEtKUzo6T2JqZWN0SW1wICppbXAsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKmV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEph
dmFTY3JpcHRPYmplY3QgKilfTlBOX0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xh
c3MpOworICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopTlBO
X0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xhc3MpOwogCiAgICAgb2JqLT5pbXAg
PSBpbXA7Ci0gICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsgICAgCi0gICAgb2JqLT5leGVjdXRpb25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4
dDsgICAgCisgICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsKKyAgICBvYmotPmV4ZWN1dGlvbkNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0Owog
CiAgICAgYWRkTmF0aXZlUmVmZXJlbmNlIChleGVjdXRpb25Db250ZXh0LCBpbXApOwotICAgIAor
CiAgICAgcmV0dXJuIChOUE9iamVjdCAqKW9iajsKIH0KIAotYm9vbCBfTlBOX0ludm9rZURlZmF1
bHQgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90
IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKK0VYUE9SVF9DCitib29sIE5QTl9JbnZva2VE
ZWZhdWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50
MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9
PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAgIC8vIE5vIG5vdGlvbiBvZiBhIGRlZmF1
bHQgZnVuY3Rpb24gb24gSlMgb2JqZWN0cy4gIEp1c3QgcmV0dXJuIGZhbHNlLCBjYW4ndCBoYW5k
bGUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2Jq
ID0gKEphdmFTY3JpcHRPYmplY3QgKilvOworICAgICAgICBPYmplY3RJbXAgKmZ1bmNJbXAgPSBv
YmotPmltcDsKKyAgICAgICAgaWYgKCFmdW5jSW1wLT5pbXBsZW1lbnRzQ2FsbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgT2JqZWN0
IHRoaXNPYmogPSBPYmplY3QoY29uc3RfY2FzdDxPYmplY3RJbXAqPihvYmotPmltcCkpOworICAg
ICAgICBMaXN0IGFyZ0xpc3QgPSBsaXN0RnJvbVZhcmlhbnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0Nv
dW50KTsKKyAgICAgICAgVmFsdWUgcmVzdWx0ViA9IE9iamVjdChmdW5jSW1wKS5jYWxsIChleGVj
LCB0aGlzT2JqLCBhcmdMaXN0KTsKKworICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhl
IHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgY29udmVydFZhbHVlVG9OUFZh
cmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGVsc2UgewogICAgICAgICBpZiAoby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KSB7CiAg
ICAgICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0IChvLCBhcmdzLCBhcmdD
b3VudCwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIF9OUE5fSW52b2tlIChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQs
IE5QVmFyaWFudCAqcmVzdWx0KQorRVhQT1JUX0MKK2Jvb2wgTlBOX0ludm9rZSAoTlBQIG5wcCwg
TlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFy
Z3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKIHsKICAgICBpZiAoby0+
X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVj
dCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAgCi0JaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKLQkgICAgCisgICAgICAgIEphdmFTY3Jp
cHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKKworICAgIGlmICghX2lzU2Fm
ZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgUHJpdmF0ZUlk
ZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKiltZXRob2ROYW1lOwogICAgICAgICBp
ZiAoIWktPmlzU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Ci0JLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgotCWlmIChtZXRob2ROYW1lID09
IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcigiZXZhbCIpKSB7Ci0JICAgIGlmIChhcmdDb3VudCAh
PSAxKQotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIGlmIChhcmdzWzBdLnR5cGUgIT0gTlBWYXJpYW50
VHlwZV9TdHJpbmcpCi0JCXJldHVybiBmYWxzZTsKLQkgICAgCi0JICAgIHJldHVybiBfTlBOX0V2
YWx1YXRlIChucHAsIG8sIChOUFN0cmluZyAqKSZhcmdzWzBdLnZhbHVlLnN0cmluZ1ZhbHVlLCBy
ZXN1bHQpOwotCX0KLQllbHNlIHsKLQkgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBvYmplY3Qu
Ci0JICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0
ZXIoKS0+Z2xvYmFsRXhlYygpOwotCSAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKLQkgICAgVmFs
dWUgZnVuYyA9IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZykpOwogCi0JICAgIGlmIChmdW5jLmlzTnVsbCgpKSB7Ci0JCU5QTl9J
bml0aWFsaXplVmFyaWFudEFzTnVsbChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0g
ZWxzZSBpZiAoZnVuYy50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkgewotCQlOUE5fSW5pdGlhbGl6
ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0gZWxz
ZSB7Ci0JCS8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KLQkJT2JqZWN0SW1wICpmdW5jSW1w
ID0gc3RhdGljX2Nhc3Q8T2JqZWN0SW1wKj4oZnVuYy5pbXAoKSk7Ci0JCU9iamVjdCB0aGlzT2Jq
ID0gT2JqZWN0KGNvbnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKLQkJTGlzdCBhcmdM
aXN0ID0gbGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCk7Ci0JCVZhbHVl
IHJlc3VsdFYgPSBPYmplY3QoZnVuY0ltcCkuY2FsbCAoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7
CisgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgorICAgIGlmIChtZXRob2RO
YW1lID09IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKCJldmFsIikpIHsKKyAgICAgICAgaWYgKGFy
Z0NvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3NbMF0u
dHlwZSAhPSBOUFZhcmlhbnRUeXBlX1N0cmluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0J
CS8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgot
CQljb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwotCQlyZXR1
cm4gdHJ1ZTsKLQkgICAgfQotCX0KKyAgICAgICAgcmV0dXJuIE5QTl9FdmFsdWF0ZSAobnBwLCBv
LCAoTlBTdHJpbmcgKikmYXJnc1swXS52YWx1ZS5zdHJpbmdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICAgIC8vIExvb2t1cCB0aGUgZnVuY3Rpb24gb2JqZWN0LgorICAg
ICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVy
KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CisgICAgICAg
IFZhbHVlIGZ1bmMgPSBvYmotPmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRp
ZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKKworICAgICAgICBpZiAoZnVuYy5pc051bGwoKSkgewor
ICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc051bGwocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmMudHlwZSgpID09IFVuZGVmaW5lZFR5
cGUpIHsKKyAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNVbmRlZmluZWQocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAvLyBDYWxs
IHRoZSBmdW5jdGlvbiBvYmplY3QuCisgICAgICAgIE9iamVjdEltcCAqZnVuY0ltcCA9IHN0YXRp
Y19jYXN0PE9iamVjdEltcCo+KGZ1bmMuaW1wKCkpOworICAgICAgICBPYmplY3QgdGhpc09iaiA9
IE9iamVjdChjb25zdF9jYXN0PE9iamVjdEltcCo+KG9iai0+aW1wKSk7CisgICAgICAgIExpc3Qg
YXJnTGlzdCA9IGxpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQpOworICAg
ICAgICBWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXApLmNhbGwgKGV4ZWMsIHRoaXNPYmos
IGFyZ0xpc3QpOworCisgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9m
IHRoZSBmdW5jdGlvbiBjYWxsLgorICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCByZXN1bHRWLCByZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KICAgICB9IGVsc2UgaWYgKG8tPl9jbGFzcy0+aW52b2tlKQogICAgICAgICByZXR1cm4gby0+
X2NsYXNzLT5pbnZva2UgKG8sIG1ldGhvZE5hbWUsIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOwot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgX05QTl9FdmFsdWF0ZSAoTlBQIG5w
cCwgTlBPYmplY3QgKm8sIE5QU3RyaW5nICpzLCBOUFZhcmlhbnQgKnZhcmlhbnQpCitFWFBPUlRf
QworYm9vbCBOUE5fRXZhbHVhdGUgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUFN0cmluZyAqcywg
TlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmpl
Y3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnBy
ZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIE9iamVjdCB0aGlzT2JqID0gT2JqZWN0KGNv
bnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKICAgICAgICAgVmFsdWUgcmVzdWx0Owot
ICAgICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgTlBVVEYx
NiAqc2NyaXB0U3RyaW5nOwogICAgICAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7CiAgICAg
ICAgIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYgKHMsICZzY3JpcHRTdHJpbmcsICZVVEYxNkxlbmd0
aCk7ICAgIC8vIHJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCiAgICAgICAgIENv
bXBsZXRpb24gY29tcGxldGlvbiA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+ZXZhbHVhdGUoVVN0cmluZygpLCAwLCBVU3RyaW5nKChjb25zdCBVQ2hhciAqKXNjcmlwdFN0
cmluZyxVVEYxNkxlbmd0aCkpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24u
Y29tcGxUeXBlKCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0eXBlID09IE5vcm1hbCkgewog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcGxldGlvbi52YWx1ZSgpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkgewpAQCAtMjAyLDIzICsyMDUsMjQgQEANCiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gVW5kZWZpbmVkKCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBmcmVlICgodm9pZCAqKXNjcmlwdFN0cmluZyk7Ci0gICAgICAgIAorCiAg
ICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdCwgdmFyaWFudCk7Ci0g
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBfTlBOX0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MKK2Jvb2wgTlBO
X0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3Jp
cHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5p
bnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAKQEAgLTIzNSwxNCArMjM5LDE0IEBADQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgVmFsdWUgcmVz
dWx0OwogICAgICAgICBpZiAoaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBvYmot
PmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJp
bmcpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5pbXAtPmdldCAo
ZXhlYywgaS0+dmFsdWUubnVtYmVyKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHJlc3VsdC5p
c051bGwoKSkgewogICAgICAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNOdWxsKHZhcmlh
bnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY4LDEzICsyNzIsMTQgQEANCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIF9OUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5Q
T2JqZWN0ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZh
cmlhbnQpCitFWFBPUlRfQworYm9vbCBOUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0
ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKICAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CkBAIC0yODMsNyArMjg4LDcgQEANCiAg
ICAgICAgICAgICBvYmotPmltcC0+cHV0KGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZyksIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPnB1dChleGVjLCBpLT52YWx1
ZS5udW1iZXIsIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQpKTsKLSAgICAg
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPnNl
dFByb3BlcnR5KQogICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAobywgcHJv
cGVydHlOYW1lLCB2YXJpYW50KTsKQEAgLTI5MSwxMyArMjk2LDE0IEBADQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAq
bywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9DCitib29sIE5QTl9SZW1vdmVQ
cm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKIApAQCAtMzE4LDE5ICszMjQsMjAgQEANCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRl
UHJvcGVydHkgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmlu
ZykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRlUHJvcGVydHkg
KGV4ZWMsIGktPnZhbHVlLm51bWJlcik7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgX05QTl9IYXNQcm9wZXJ0eShO
UFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9D
Citib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xh
c3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOyAKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOwogCi0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+Z2xvYmFsRXhlYygpOwogCkBAIC0zMzksMjYgKzM0NiwyNyBAQA0KIAogICAgICAgICBpZiAo
aS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4
ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmluZykpOwotICAgICAg
ICAKKwogICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4ZWMsIGktPnZhbHVl
Lm51bWJlcik7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPmhhc1Byb3BlcnR5KQogICAgICAg
ICByZXR1cm4gby0+X2NsYXNzLT5oYXNQcm9wZXJ0eSAobywgcHJvcGVydHlOYW1lKTsKLSAgICAK
KwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBfTlBOX0hhc01ldGhvZChOUFAgbnBwLCBO
UE9iamVjdCAqbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCitFWFBPUlRfQworYm9vbCBOUE5f
SGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
IHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAg
Ci0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOwogCisgICAgaWYg
KCFfaXNTYWZlU2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKW1ldGhvZE5hbWU7CiAg
ICAgICAgIGlmICghaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAvLyBMb29rdXAgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAg
ICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigp
LT5nbG9iYWxFeGVjKCk7CiAKQEAgLTM2OCwyMSArMzc2LDIyIEBADQogICAgICAgICBpZiAoZnVu
Yy5pc051bGwoKSB8fCBmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAorCiAgICAgZWxzZSBpZiAoby0+X2NsYXNzLT5oYXNNZXRob2QpIHsK
ICAgICAgICAgcmV0dXJuIG8tPl9jbGFzcy0+aGFzTWV0aG9kIChvLCBtZXRob2ROYW1lKTsKICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRp
b24gKE5QT2JqZWN0ICpvLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpCitFWFBPUlRfQwordm9pZCBO
UE5fU2V0RXhjZXB0aW9uIChOUE9iamVjdCAqbywgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogewog
ICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87CiAgICAgICAgIEV4ZWNT
dGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFs
RXhlYygpOwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgT2JqZWN0IGVy
ciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDUsNiArNDUsNyBAQA0KICAgICBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVj
dXRpb25Db250ZXh0OwogfSBKYXZhU2NyaXB0T2JqZWN0OwogCitJTVBPUlRfQwogTlBPYmplY3Qg
Kl9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IChOUFAgbnBwLCBLSlM6Ok9iamVjdEltcCAqaW1wLCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW5FeGVjdXRpb25Db250ZXh0LCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0KTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucGFwaS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkocmV2aXNpb24g
MTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTEsMTAgKzEsMTEgQEANCisvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRl
bnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwogLyogKioqKiogQkVH
SU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwg
Mi4xCisgKiBWZXJzaW9uOiBOUEwgMS4xL0dQTCAyLjAvTEdQTCAyLjEKICAqCi0gKiBUaGUgY29u
dGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNl
bnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAotICogdGhlIExpY2Vuc2UuIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9NUEwvCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBO
ZXRzY2FwZSBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvTlBMLwogICoKICAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCiAgKiBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBT
ZWUgdGhlIExpY2Vuc2UKQEAgLTE5LDExMSArMjAsMjEwIEBADQogICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIENvbnRyaWJ1dG9yKHMpOgorICog
ICAgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIE5va2lhIENvcnBvcmF0aW9uCiAg
KgorICoKICAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJl
IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKICAqIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAi
TEdQTCIpLAogICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRo
ZSBMR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKICAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ug
d2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CiAgKiB1
bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8g
YWxsb3cgb3RoZXJzIHRvCi0gKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogdXNlIHlvdXIgdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBOUEwsIGluZGljYXRlIHlvdXIKICAq
IGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRo
ZW0gd2l0aCB0aGUgbm90aWNlCiAgKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0
aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQogICogdGhlIHByb3Zpc2lv
bnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1
bmRlcgotICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUg
TEdQTC4KKyAqIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZSBOUEwsIHRoZSBHUEwgb3IgdGhl
IExHUEwuCiAgKgogICogKioqKiogRU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8KLSAKLSAKLSAv
KgotICAqICBOZXRzY2FwZSBjbGllbnQgcGx1Zy1pbiBBUEkgc3BlYwotICAqLwotIAogCisvKiBO
T1RFUzoKKyAqIE5va2lhIG1vZGlmaWVkIHRoaXMgZmlsZSwgYnkgY2hhbmdpbmcgY2VydGFpbiB2
YXJpYWJsZXMgZm9yIHRoZSBwdXJwb3NlIG9mCisgKiBwb3J0aW5nIHRoZSBmaWxlIHRvIHRoZSBT
eW1iaWFuIHBsYXRmb3JtIG9uIE1heSAxc3QsIDIwMDQuCisgKi8KKworCisvKgorICogIG5wYXBp
LmggJFJldmlzaW9uJAorICogIE5ldHNjYXBlIGNsaWVudCBwbHVnLWluIEFQSSBzcGVjCisgKi8K
KwogI2lmbmRlZiBfTlBBUElfSF8KICNkZWZpbmUgX05QQVBJX0hfCiAKLSNpZmRlZiBJTkNMVURF
X0pBVkEKKyNpZmRlZiBfX09TMl9fCisjcHJhZ21hIHBhY2soMSkKKyNlbmRpZgorCisjaW5jbHVk
ZSAicHJ0eXBlcy5oIgorLyogQ29waWVkIGZyb20geHBfY29yZS5oICovCisvKiByZW1vdmVkICNp
ZmRlZiBmb3IgaHB1eCBkZWZpbmVkIGluIC91c3IvaW5jbHVkZS9tb2RlbC5oICovCisjaWZuZGVm
IFhQX01BQworI2lmbmRlZiBfSU5UMTYKKyNkZWZpbmUgX0lOVDE2CisjZW5kaWYKKyNpZm5kZWYg
X0lOVDMyCisjZGVmaW5lIF9JTlQzMgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMTYKKyNkZWZpbmUg
X1VJTlQxNgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMzIKKyNkZWZpbmUgX1VJTlQzMgorI2VuZGlm
CisjZW5kaWYKKworLyoKKyAqIE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVz
aW9uCisgKiBvZiBvYnNvbGV0ZS9wcm90eXBlcy5oLCB3aG9zZSBpbnQxNiwgdWludDE2LAorICog
aW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0aCB0aG9zZQorICogaW4gdGhp
cyBmaWxlLgorICovCisjaWZuZGVmIE5PX05TUFJfMTBfU1VQUE9SVAorI2RlZmluZSBOT19OU1BS
XzEwX1NVUFBPUlQKKyNlbmRpZgorI2lmZGVmIE9KSQogI2luY2x1ZGUgImpyaS5oIiAgICAgICAg
ICAgICAgICAvKiBKYXZhIFJ1bnRpbWUgSW50ZXJmYWNlICovCi0jZWxzZQotI2RlZmluZSBqcmVm
ICAgIHZvaWQgKgotI2RlZmluZSBKUklFbnYgIHZvaWQKICNlbmRpZgogCisjaWYgZGVmaW5lZCAo
X19PUzJfXyApIHx8IGRlZmluZWQgKE9TMikKKyMgaWZuZGVmIFhQX09TMgorIyAgIGRlZmluZSBY
UF9PUzIgMQorIyBlbmRpZiAvKiBYUF9PUzIgKi8KKyNlbmRpZiAvKiBfX09TMl9fICovCisKICNp
ZmRlZiBfV0lORE9XUwotIyAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICBkZWZpbmUgWFBfV0lO
IDEKLSMgICAgZW5kaWYgLyogWFBfV0lOICovCisjIGluY2x1ZGUgPHdpbmRlZi5oPgorIyBpZm5k
ZWYgWFBfV0lOCisjICAgZGVmaW5lIFhQX1dJTiAxCisjIGVuZGlmIC8qIFhQX1dJTiAqLwogI2Vu
ZGlmIC8qIF9XSU5ET1dTICovCiAKICNpZmRlZiBfX01XRVJLU19fCi0jICAgIGRlZmluZSBfZGVj
bHNwZWMgX19kZWNsc3BlYwotIyAgICBpZmRlZiBtYWNpbnRvc2gKLSMgICAgICAgIGlmbmRlZiBY
UF9NQUMKLSMgICAgICAgICAgICBkZWZpbmUgWFBfTUFDIDEKLSMgICAgICAgIGVuZGlmIC8qIFhQ
X01BQyAqLwotIyAgICBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KLSMgICAgaWZkZWYgX19JTlRFTF9f
Ci0jICAgICAgICB1bmRlZiBOVUxMCi0jICAgICAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICAg
ICAgZGVmaW5lIFhQX1dJTiAxCi0jICAgICAgICBlbmRpZiAvKiBfX0lOVEVMX18gKi8KLSMgICAg
ZW5kaWYgLyogWFBfUEMgKi8KKyMgZGVmaW5lIF9kZWNsc3BlYyBfX2RlY2xzcGVjCisjIGlmZGVm
IG1hY2ludG9zaAorIyAgIGlmbmRlZiBYUF9NQUMKKyMgICAgIGRlZmluZSBYUF9NQUMgMQorIyAg
IGVuZGlmIC8qIFhQX01BQyAqLworIyBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KKyMgaWZkZWYgX19J
TlRFTF9fCisjICAgdW5kZWYgTlVMTAorIyAgIGlmbmRlZiBYUF9XSU4KKyMgICAgIGRlZmluZSBY
UF9XSU4gMQorIyAgIGVuZGlmIC8qIFhQX1dJTiAqLworIyBlbmRpZiAvKiBfX0lOVEVMX18gKi8K
ICNlbmRpZiAvKiBfX01XRVJLU19fICovCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYg
IWRlZmluZWQoX19NQUNPU19DTEFTU0lDX18pCi0jICAgZGVmaW5lIFhQX01BQ09TWAorI2lmbmRl
ZiBfX1NZTUJJQU4zMl9fCisjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NY
KQorICAjaW5jbHVkZSA8UXVpY2tkcmF3Lmg+CisgICNpbmNsdWRlIDxFdmVudHMuaD4KICNlbmRp
ZgogCi0jaWZkZWYgWFBfTUFDCi0gICAgI2luY2x1ZGUgPFF1aWNrZHJhdy5oPgotICAgICNpbmNs
dWRlIDxFdmVudHMuaD4KKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjIGluY2x1ZGUgPHN0ZGlvLmg+
CisjIGlmIGRlZmluZWQoTU9aX1gxMSkKKyMgICBpbmNsdWRlIDxYMTEvWGxpYi5oPgorIyAgIGlu
Y2x1ZGUgPFgxMS9YdXRpbC5oPgorIyBlbmRpZgogI2VuZGlmCi0KLSNpZmRlZiBYUF9NQUNPU1gK
LSAgICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotICAgICNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNlbHNlCitjbGFzcyBURGVzQzg7Citj
bGFzcyBURGVzQzE2OworY2xhc3MgSEJ1ZkMxNjsKK2NsYXNzIENEZXNDQXJyYXk7CisjaW5jbHVk
ZSA8ZTMyZGVmLmg+CiAjZW5kaWYKIAotI2lmZGVmIFhQX1VOSVgKLSAgICAjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KLSAgICAjaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jZW5kaWYKLQotCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwotLyogICAgICAgICAgICAgUGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
UGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwogCiAjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMAotI2RlZmluZSBOUF9WRVJT
SU9OX01JTk9SIDE0CisjZGVmaW5lIE5QX1ZFUlNJT05fTUlOT1IgMTMKIAogCisvKiBUaGUgT1Mv
MiB2ZXJzaW9uIG9mIE5ldHNjYXBlIHVzZXMgUkNfREFUQSB0byBkZWZpbmUgdGhlCisgICBtaW1l
IHR5cGVzLCBmaWxlIGV4dGVudGlvbnMsIGV0YyB0aGF0IGFyZSByZXF1aXJlZC4KKyAgIFVzZSBh
IHZlcnRpY2FsIGJhciB0byBzZXBhcmF0ZSB0eXBlcywgZW5kIHR5cGVzIHdpdGggXDAuCisgICBG
aWxlVmVyc2lvbiBhbmQgUHJvZHVjdFZlcnNpb24gYXJlIDMyYml0IGludHMsIGFsbCBvdGhlcgor
ICAgZW50cmllcyBhcmUgc3RyaW5ncyB0aGUgTVVTVCBiZSB0ZXJtaW5hdGVkIHd3aXRoIGEgXDAu
CiAKK0FOIEVYQU1QTEU6CisKK1JDREFUQSBOUF9JTkZPX1Byb2R1Y3RWZXJzaW9uIHsgMSwwLDAs
MSx9CisKK1JDREFUQSBOUF9JTkZPX01JTUVUeXBlICAgIHsgInZpZGVvL3gtdmlkZW98IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpZGVvL3gtZmxpY2tcMCIgfQorUkNEQVRBIE5Q
X0lORk9fRmlsZUV4dGVudHMgeyAiYXZpfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmbGNcMCIgfQorUkNEQVRBIE5QX0lORk9fRmlsZU9wZW5OYW1leyAiTU1PUzIgdmlkZW8gcGxh
eWVyKCouYXZpKXwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTU1PUzIgRmxjL0Zs
aSBwbGF5ZXIoKi5mbGMpXDAiIH0KKworUkNEQVRBIE5QX0lORk9fRmlsZVZlcnNpb24gICAgICAg
eyAxLDAsMCwxIH0KK1JDREFUQSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgIHsgIk5ldHNjYXBl
IENvbW11bmljYXRpb25zXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVEZXNjcmlwdGlvbiAgIHsg
Ik5QQVZJMzIgRXh0ZW5zaW9uIERMTFwwIgorUkNEQVRBIE5QX0lORk9fSW50ZXJuYWxOYW1lICAg
ICAgeyAiTlBBVkkzMlwwIiApCitSQ0RBVEEgTlBfSU5GT19MZWdhbENvcHlyaWdodCAgICB7ICJD
b3B5cmlnaHQgTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgXDI1MSAxOTk2XDAiCitSQ0RBVEEgTlBf
SU5GT19PcmlnaW5hbEZpbGVuYW1lICB7ICJOVkFQSTMyLkRMTCIgfQorUkNEQVRBIE5QX0lORk9f
UHJvZHVjdE5hbWUgICAgICAgeyAiTlBBVkkzMiBEeW5hbWljIExpbmsgTGlicmFyeVwwIiB9CisK
KyovCisKKworLyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gcmVxdWlyZWQgKi8K
KyNkZWZpbmUgTlBfSU5GT19Qcm9kdWN0VmVyc2lvbiAgICAgIDEKKyNkZWZpbmUgTlBfSU5GT19N
SU1FVHlwZSAgICAgICAgICAgIDIKKyNkZWZpbmUgTlBfSU5GT19GaWxlT3Blbk5hbWUgICAgICAg
IDMKKyNkZWZpbmUgTlBfSU5GT19GaWxlRXh0ZW50cyAgICAgICAgIDQKKworLyogUkNfREFUQSB0
eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLworI2RlZmluZSBOUF9JTkZP
X0ZpbGVEZXNjcmlwdGlvbiAgICAgNQorI2RlZmluZSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAg
ICAgNgorCisvKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSBvcHRpb25hbCAqLwor
I2RlZmluZSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgICAgNworI2RlZmluZSBOUF9JTkZPX0Zp
bGVWZXJzaW9uICAgICAgICAgOAorI2RlZmluZSBOUF9JTkZPX0ludGVybmFsTmFtZSAgICAgICAg
OQorI2RlZmluZSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgICAgMTAKKyNkZWZpbmUgTlBfSU5G
T19PcmlnaW5hbEZpbGVuYW1lICAgIDExCisKKyNpZm5kZWYgUkNfSU5WT0tFRAorCisKKwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KLS8qICAgICAgICAgICAgIERlZmluaXRpb24gb2YgQmFzaWMgVHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgRGVmaW5pdGlvbiBvZiBCYXNpYyBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAqLwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KIAogI2lmbmRlZiBfVUlOVDE2CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHVpbnQxNjsKICNlbmRpZgorCiAjaWZuZGVmIF9VSU5UMzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEp
CisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsK
LSNlbHNlIC8qIF9fYWxwaGEgKi8KKyMgICAgZWxzZSAgLyogX19hbHBoYSAqLwogdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHVpbnQzMjsKLSNlbmRpZiAvKiBfX2FscGhhICovCisjICAgIGVuZGlmIC8q
IF9fYWxwaGEgKi8KICNlbmRpZgorCisvKgorICogQUlYIGRlZmluZXMgdGhlc2UgaW4gc3lzL2lu
dHR5cGVzLmggaW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAorICovCisjaWZuZGVmIEFJWAogI2lm
bmRlZiBfSU5UMTYKIHR5cGVkZWYgc2hvcnQgaW50MTY7CiAjZW5kaWYKKwogI2lmbmRlZiBfSU5U
MzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEpCisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVk
ZWYgaW50IGludDMyOwotI2Vsc2UgLyogX19hbHBoYSAqLworIyAgICBlbHNlICAvKiBfX2FscGhh
ICovCiB0eXBlZGVmIGxvbmcgaW50MzI7Ci0jZW5kaWYgLyogX19hbHBoYSAqLworIyAgICBlbmRp
ZiAvKiBfX2FscGhhICovCiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIEZBTFNFCiAjZGVmaW5l
IEZBTFNFICgwKQpAQCAtMTM1LDE1ICsyMzUsMTkgQEANCiAjZGVmaW5lIE5VTEwgKDBMKQogI2Vu
ZGlmCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBOUEJvb2w7Ci10eXBlZGVmIGludDE2ICAg
ICAgICAgICAgTlBFcnJvcjsKLXR5cGVkZWYgaW50MTYgICAgICAgICAgICBOUFJlYXNvbjsKLXR5
cGVkZWYgY2hhciogICAgICAgICAgICBOUE1JTUVUeXBlOwordHlwZWRlZiB1bnNpZ25lZCBjaGFy
IE5QQm9vbDsKK3R5cGVkZWYgaW50MTYgICAgIE5QRXJyb3I7Cit0eXBlZGVmIGludDE2ICAgICBO
UFJlYXNvbjsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordHlwZWRlZiBjaGFyKiAgICAgTlBNSU1F
VHlwZTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordHlwZWRlZiBjb25zdCBURGVzQzgmIE5Q
TUlNRVR5cGU7CisjZW5kaWYKIAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyAgICAgICAgICAgICAqLworLyogICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAg
ICAgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZmRlZiBYUF9NQUMKQEAgLTE1NSw0NyArMjU5
LDU2IEBADQogICovCiB0eXBlZGVmIHN0cnVjdCBfTlBQCiB7Ci0gICAgdm9pZCogICAgcGRhdGE7
ICAgICAgICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KLSAgICB2b2lkKiAgICBuZGF0
YTsgICAgICAgICAgICAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogcGRhdGE7
ICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogbmRhdGE7ICAgICAgLyog
bmV0c2NhcGUgcHJpdmF0ZSBkYXRhICovCiB9IE5QUF90OwogCi10eXBlZGVmIE5QUF90KiAgICBO
UFA7Cit0eXBlZGVmIE5QUF90KiAgTlBQOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUFN0cmVhbQog
ewotICAgIHZvaWQqICAgICAgICBwZGF0YTsgICAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRh
ICovCi0gICAgdm9pZCogICAgICAgIG5kYXRhOyAgICAgICAgLyogbmV0c2NhcGUgcHJpdmF0ZSBk
YXRhICovCi0gICAgY29uc3QgY2hhciogIHVybDsKLSAgICB1aW50MzIgICAgICAgZW5kOwotICAg
IHVpbnQzMiAgICAgICBsYXN0bW9kaWZpZWQ7Ci0gICAgdm9pZCogICAgICAgIG5vdGlmeURhdGE7
CisgIHZvaWQqICBwZGF0YTsgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogIG5k
YXRhOyAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
ICBjb25zdCAgY2hhciogdXJsOworI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovCisgIEhCdWZDMTYq
ICB1cmw7CisjZW5kaWYKKyAgdWludDMyIGVuZDsKKyAgdWludDMyIGxhc3Rtb2RpZmllZDsKKyAg
dm9pZCogIG5vdGlmeURhdGE7CiB9IE5QU3RyZWFtOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUEJ5
dGVSYW5nZQogewotICAgIGludDMyICAgICAgb2Zmc2V0OyAgICAgICAgIC8qIG5lZ2F0aXZlIG9m
ZnNldCBtZWFucyBmcm9tIHRoZSBlbmQgKi8KLSAgICB1aW50MzIgICAgIGxlbmd0aDsKLSAgICBz
dHJ1Y3QgX05QQnl0ZVJhbmdlKiBuZXh0OworICBpbnQzMiAgb2Zmc2V0OyAvKiBuZWdhdGl2ZSBv
ZmZzZXQgbWVhbnMgZnJvbSB0aGUgZW5kICovCisgIHVpbnQzMiBsZW5ndGg7CisgIHN0cnVjdCBf
TlBCeXRlUmFuZ2UqIG5leHQ7CiB9IE5QQnl0ZVJhbmdlOwogCiAKIHR5cGVkZWYgc3RydWN0IF9O
UFNhdmVkRGF0YQogewotICAgIGludDMyICAgIGxlbjsKLSAgICB2b2lkKiAgICBidWY7CisgIGlu
dDMyIGxlbjsKKyAgdm9pZCogYnVmOwogfSBOUFNhdmVkRGF0YTsKIAogCiB0eXBlZGVmIHN0cnVj
dCBfTlBSZWN0CiB7Ci0gICAgdWludDE2ICAgIHRvcDsKLSAgICB1aW50MTYgICAgbGVmdDsKLSAg
ICB1aW50MTYgICAgYm90dG9tOwotICAgIHVpbnQxNiAgICByaWdodDsKKyAgdWludDE2IHRvcDsK
KyAgdWludDE2IGxlZnQ7CisgIHVpbnQxNiBib3R0b207CisgIHVpbnQxNiByaWdodDsKIH0gTlBS
ZWN0OwogCit0eXBlZGVmIHN0cnVjdCBfTlBTaXplCit7CisgIGludDMyIHdpZHRoOworICBpbnQz
MiBoZWlnaHQ7Cit9IE5QU2l6ZTsKIAogI2lmZGVmIFhQX1VOSVgKIC8qCkBAIC0yMDgsNDggKzMy
MSw1MSBAQA0KICAqIFRoZXNlIGFyZSB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBwbGF0Zm9ybSBz
cGVjaWZpYyBpbmZvcm1hdGlvbi4KICAqLwogZW51bSB7Ci0gICAgTlBfU0VUV0lORE9XID0gMSwK
LSAgICBOUF9QUklOVAorICBOUF9TRVRXSU5ET1cgPSAxLAorICBOUF9QUklOVAogfTsKIAogdHlw
ZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAgICAgdHlwZTsKKyAgaW50MzIgdHlwZTsKIH0g
TlBBbnlDYWxsYmFja1N0cnVjdDsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAg
ICAgICAgdHlwZTsKLSAgICBEaXNwbGF5KiAgICAgICAgZGlzcGxheTsKLSAgICBWaXN1YWwqICAg
ICAgICAgdmlzdWFsOwotICAgIENvbG9ybWFwICAgICAgICBjb2xvcm1hcDsKLSAgICB1bnNpZ25l
ZCBpbnQgICAgZGVwdGg7CisgIGludDMyICAgICAgICB0eXBlOworI2lmZGVmIE1PWl9YMTEKKyAg
RGlzcGxheSogICAgIGRpc3BsYXk7CisgIFZpc3VhbCogICAgICB2aXN1YWw7CisgIENvbG9ybWFw
ICAgICBjb2xvcm1hcDsKKyAgdW5zaWduZWQgaW50IGRlcHRoOworI2VuZGlmCiB9IE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3Q7CiAKIHR5cGVkZWYgc3RydWN0CiB7Ci0gICAgaW50MzIgICAgICAg
ICAgICB0eXBlOwotICAgIEZJTEUqICAgICAgICAgICAgZnA7CisgIGludDMyIHR5cGU7CisgIEZJ
TEUqIGZwOwogfSBOUFByaW50Q2FsbGJhY2tTdHJ1Y3Q7CiAKICNlbmRpZiAvKiBYUF9VTklYICov
CiAKKwogLyoKLSAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWlu
IHBsYXRmb3JtcyB0byBOUE5WIGFuZCAKLSAqICAgTlBQViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFy
b3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4gTmV3ZXIgCi0gKiAgIGNvbXBpbGVycyBv
biBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QgCi0gKiAg
IGNvbXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lu
cyBmcm9tIAotICogICBub3QgdW5kZXJzdGFuZGluZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0aGVz
ZSBtYXNrcyBjaGFuZ2UgdGhlIAorICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVk
IG9uIGNlcnRhaW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRo
YXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyCisgKiAgIGNv
bXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBu
b3QKKyAqICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRl
ciBwbHVnaW5zIGZyb20KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFC
SSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZQogICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3Jz
IG9uIHRob3NlIHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcwotICogICBjb21wYXRpYmxl
IHdpdGggZGlmZmVyZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4gCisg
KiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBw
bHVnaW5zIGNhbgogICogICB1c2UgdGhlc2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5l
IGFuZCB1c2UgdGhlIGNvcnJlY3QgQysrCi0gKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4
cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBXaW5kb3dzIAorICogICBBQkkgdGhhdCB0
aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cwog
ICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuCiAgKi8K
IAogI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAwCiAvKgotICogICBnY2MgMy54
IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgg
CisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBpbmNv
bXBhdGlibGUgd2l0aAogICogICBwcmV2aW91cyBjb21waWxlcnMuCiAgKi8KICNpZiAoZGVmaW5l
ZCAoWFBfVU5JWCkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQpAQCAt
MjU4LDEzICszNzQsMTQgQEANCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX0dDQzMgMAogI2Vu
ZGlmCiAKKwogI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwCiAvKgogICogICBP
biBPU1gsIHRoZSBNYWNoLU8gZXhlY3V0YWJsZSBmb3JtYXQgaXMgc2lnbmlmaWNhbnRseQogICog
ICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGRpZmZlcmVudAog
ICogICBDKysgQUJJLCBpdCBhbHNvIGhhcyBoYXMgZGlmZmVyZW50IEMgY2FsbGluZyBjb252ZW50
aW9uLgogICogICBZb3UgbXVzdCB1c2UgZ2x1ZSBjb2RlIHdoZW4gY2FsbGluZyBiZXR3ZWVuIENG
TSBhbmQKLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiAKKyAqICAgTWFjaC1PIEMgZnVuY3Rpb25z
LgogICovCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JUX01BQ19NQUNITykpCiAjZGVmaW5lIF9OUF9B
QklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLCkBAIC0yNzksNTAgKzM5Niw0OCBA
QA0KICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QUF9HZXRWYWx1ZSBzaGFs
bCBiZSBpbXBsZW1lbnRlZAogICovCiB0eXBlZGVmIGVudW0gewotICAgIE5QUFZwbHVnaW5OYW1l
U3RyaW5nID0gMSwKLSAgICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCi0gICAgTlBQVnBs
dWdpbldpbmRvd0Jvb2wsCi0gICAgTlBQVnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVnBs
dWdpbk5hbWVTdHJpbmcgPSAxLAorICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCisgIE5Q
UFZwbHVnaW5XaW5kb3dCb29sLAorICBOUFBWcGx1Z2luVHJhbnNwYXJlbnRCb29sLAorICBOUFBW
amF2YUNsYXNzLCAgICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gTW96aWxsYSAx
LjAgKi8KKyAgTlBQVnBsdWdpbldpbmRvd1NpemUsCisgIE5QUFZwbHVnaW5UaW1lckludGVydmFs
LAogCi0gICAgTlBQVmphdmFDbGFzcywgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5XaW5kb3dTaXplLCAgICAgICAgIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1Z2luVGltZXJJbnRlcnZhbCwgICAg
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxl
SW5zdGFuY2UgPSAoMTAgfCBOUF9BQklfTUFTSyksCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlSUlE
ID0gMTEsCiAKLSAgICBOUFBWcGx1Z2luU2NyaXB0YWJsZUluc3RhbmNlID0gKDEwIHwgTlBfQUJJ
X01BU0spLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBQVnBsdWdpblNj
cmlwdGFibGVJSUQgPSAxMSwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotCi0gICAg
LyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3
aXRoIDAuOS45ICovCi0gICAgTlBQVmphdmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLCAgLyog
Tm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5LZWVwTGlicmFyeUlu
TWVtb3J5ID0gMTMsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1
Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovCi0KKyAgLyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBz
dGFydGluZyB3aXRoIDAuOS45ICovCisgIE5QUFZqYXZhc2NyaXB0UHVzaENhbGxlckJvb2wgPSAx
MiwKKyAgTlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUg
aW4gTW96aWxsYSAxLjAgKi8KKyAgTlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAxNCwg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwogICAgIC8qIEdldCB0aGUgTlBPYmplY3Qg
Zm9yIHNjcmlwdGluZyB0aGUgcGx1Z2luLiAqLwotICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QgID0gMTUKKyAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVjdCAgPSAxNQogfSBOUFBW
YXJpYWJsZTsKIAogLyoKICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QTl9H
ZXRWYWx1ZSBpcyBpbXBsZW1lbnRlZCBieSBNb3ppbGxhCiAgKi8KIHR5cGVkZWYgZW51bSB7Ci0g
ICAgTlBOVnhEaXNwbGF5ID0gMSwKLSAgICBOUE5WeHRBcHBDb250ZXh0LAotICAgIE5QTlZuZXRz
Y2FwZVdpbmRvdywKLSAgICBOUE5WamF2YXNjcmlwdEVuYWJsZWRCb29sLAotICAgIE5QTlZhc2RF
bmFibGVkQm9vbCwKLSAgICBOUE5WaXNPZmZsaW5lQm9vbCwKKyAgTlBOVnhEaXNwbGF5ID0gMSwK
KyAgTlBOVnh0QXBwQ29udGV4dCwKKyAgTlBOVm5ldHNjYXBlV2luZG93LAorICBOUE5WamF2YXNj
cmlwdEVuYWJsZWRCb29sLAorICBOUE5WYXNkRW5hYmxlZEJvb2wsCisgIE5QTlZpc09mZmxpbmVC
b29sLAogCi0gICAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxk
cyBzdGFydGluZyB3aXRoIDAuOS40ICovCi0gICAgTlBOVnNlcnZpY2VNYW5hZ2VyID0gKDEwIHwg
TlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QTlZE
T01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBp
biBXZWJLaXQgKi8KLSAgICBOUE5WRE9NV2luZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyks
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBOVlRvb2xraXQgICAgICAg
ID0gKDEzIHwgTlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwot
ICAgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBN
b3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3aXRoIDAuOS40ICovCisgIE5QTlZzZXJ2aWNlTWFuYWdl
ciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwKKyAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBf
QUJJX01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLworICBOUE5WRE9NV2lu
ZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyksCisgIE5QTlZUb29sa2l0ICAgICAgICA9ICgx
MyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgTlBO
VlN1cHBvcnRzWEVtYmVkQm9vbCA9IDE0LCAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwogCi0gICAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUg
YnJvd3NlciB3aW5kb3cuICovCi0gICAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCisgIC8qIEdl
dCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLworICBOUE5W
V2luZG93TlBPYmplY3QgPSAxNSwKIAotICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBm
b3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovCi0gICAgTlBOVlBsdWdpbkVsZW1lbnROUE9i
amVjdCAgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICAv
KiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50LiAq
LworICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ICAgICAgICAgICAgICAgICAvKiBOb3QgaW1w
bGVtZW50ZWQgaW4gV2ViS2l0ICovCiB9IE5QTlZhcmlhYmxlOwogCiAvKgpAQCAtMzMwLDcxICs0
NDUsNzggQEANCiAgKiByZXR1cm5lZCBpbiB0aGUgd2luZG93IGZpZWxkLgogICovCiB0eXBlZGVm
IGVudW0gewotICAgIE5QV2luZG93VHlwZVdpbmRvdyA9IDEsCi0gICAgTlBXaW5kb3dUeXBlRHJh
d2FibGUKKyAgTlBXaW5kb3dUeXBlV2luZG93ID0gMSwKKyAgTlBXaW5kb3dUeXBlRHJhd2FibGUK
IH0gTlBXaW5kb3dUeXBlOwogCiB0eXBlZGVmIHN0cnVjdCBfTlBXaW5kb3cKIHsKLSAgICB2b2lk
KiAgICB3aW5kb3c7ICAgICAvKiBQbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlICovCi0g
ICAgaW50MzIgICAgeDsgICAgICAgICAgICAvKiBQb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIg
cmVsYXRpdmUgKi8KLSAgICBpbnQzMiAgICB5OyAgICAgICAgICAgIC8qICAgIHRvIGEgbmV0c2Nh
cGUgcGFnZS4gICAgICAgICAgICAgICAgICAgICovCi0gICAgdWludDMyICAgIHdpZHRoOyAgICAg
ICAgLyogTWF4aW11bSB3aW5kb3cgc2l6ZSAqLwotICAgIHVpbnQzMiAgICBoZWlnaHQ7Ci0gICAg
TlBSZWN0ICAgIGNsaXBSZWN0OyAgICAvKiBDbGlwcGluZyByZWN0YW5nbGUgaW4gcG9ydCBjb29y
ZGluYXRlcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVXNlZCBieSBNQUMgb25seS4g
ICAgICAgICAgICAgICovCi0jaWZkZWYgWFBfVU5JWAotICAgIHZvaWQgKiAgICB3c19pbmZvOyAg
ICAvKiBQbGF0Zm9ybS1kZXBlbmRlbnQgYWRkaXRvbmFsIGRhdGEgKi8KKyAgdm9pZCogd2luZG93
OyAgLyogUGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSAqLworICAgICAgICAgICAgICAg
ICAvKiBPUy8yOiB4IC0gUG9zaXRpb24gb2YgYm90dG9tIGxlZnQgY29ybmVyICAqLworICAgICAg
ICAgICAgICAgICAvKiBPUy8yOiB5IC0gcmVsYXRpdmUgdG8gdmlzaWJsZSBuZXRzY2FwZSB3aW5k
b3cgKi8KKyAgaW50MzIgeDsgICAgICAgLyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJl
bGF0aXZlICovCisgIGludDMyIHk7ICAgICAgIC8qIHRvIGEgbmV0c2NhcGUgcGFnZS4gICAgICAg
ICAqLworICB1aW50MzIgd2lkdGg7ICAvKiBNYXhpbXVtIHdpbmRvdyBzaXplICovCisgIHVpbnQz
MiBoZWlnaHQ7CisgIE5QUmVjdCBjbGlwUmVjdDsgLyogQ2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBv
cnQgY29vcmRpbmF0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAvKiBVc2VkIGJ5IE1BQyBvbmx5
LiAgICAgICAqLworI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgIWRlZmluZWQoWFBfTUFDT1NYKQor
ICB2b2lkICogd3NfaW5mbzsgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFkZGl0b25hbCBkYXRhICov
CiAjZW5kaWYgLyogWFBfVU5JWCAqLwotICAgIE5QV2luZG93VHlwZSB0eXBlOyAgICAvKiBJcyB0
aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCisgIE5QV2luZG93VHlwZSB0eXBlOyAvKiBJ
cyB0aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCiB9IE5QV2luZG93OwogCiAKIHR5cGVk
ZWYgc3RydWN0IF9OUEZ1bGxQcmludAogewotICAgIE5QQm9vbCAgICBwbHVnaW5QcmludGVkOyAg
ICAvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBmdWxsc2NyZWVuICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogICAgcHJpbnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgTlBCb29sICAgIHByaW50T25lOyAgICAgICAgLyogVFJVRSBpZiBwbHVnaW4g
c2hvdWxkIHByaW50IG9uZSBjb3B5ICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
ICAgIHRvIGRlZmF1bHQgcHJpbnRlciAgICAgICAgICAgICAgICAgICAgICovCi0gICAgdm9pZCog
ICAgcGxhdGZvcm1QcmludDsgICAgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAq
LworICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBm
dWxsc2NyZWVuIHByaW50aW5nICovCisgIE5QQm9vbCBwcmludE9uZTsgICAgIC8qIFRSVUUgaWYg
cGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSB0byBkZWZhdWx0IHByaW50ZXIgKi8KKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEZ1bGxQcmludDsKIAogdHlwZWRlZiBzdHJ1Y3QgX05QRW1iZWRQcmludAogewotICAgIE5Q
V2luZG93ICAgIHdpbmRvdzsKLSAgICB2b2lkKiAgICBwbGF0Zm9ybVByaW50OyAgICAvKiBQbGF0
Zm9ybS1zcGVjaWZpYyBwcmludGluZyBpbmZvICovCisgIE5QV2luZG93IHdpbmRvdzsKKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEVtYmVkUHJpbnQ7CiAKIHR5cGVkZWYgc3RydWN0IF9OUFByaW50CiB7Ci0gICAgdWludDE2
ICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogTlBfRlVMTCBvciBOUF9FTUJFRCAq
LwotICAgIHVuaW9uCi0gICAgewotICAgICAgICBOUEZ1bGxQcmludCAgICAgZnVsbFByaW50OyAg
ICAgICAgLyogaWYgbW9kZSBpcyBOUF9GVUxMICovCi0gICAgICAgIE5QRW1iZWRQcmludCAgICBl
bWJlZFByaW50OyAgICAgICAgLyogaWYgbW9kZSBpcyBOUF9FTUJFRCAqLwotICAgIH0gcHJpbnQ7
CisgIHVpbnQxNiBtb2RlOyAgICAgICAgICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8K
KyAgdW5pb24KKyAgeworICAgIE5QRnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlz
IE5QX0ZVTEwgKi8KKyAgICBOUEVtYmVkUHJpbnQgZW1iZWRQcmludDsgLyogaWYgbW9kZSBpcyBO
UF9FTUJFRCAqLworICB9IHByaW50OwogfSBOUFByaW50OwogCiAjaWYgZGVmaW5lZChYUF9NQUMp
IHx8IGRlZmluZWQoWFBfTUFDT1NYKQotdHlwZWRlZiBFdmVudFJlY29yZCAgICBOUEV2ZW50Owor
dHlwZWRlZiBFdmVudFJlY29yZCBOUEV2ZW50OwogI2VsaWYgZGVmaW5lZChYUF9XSU4pCiB0eXBl
ZGVmIHN0cnVjdCBfTlBFdmVudAogewotICAgIHVpbnQxNiAgIGV2ZW50OwotICAgIHVpbnQzMiAg
IHdQYXJhbTsKLSAgICB1aW50MzIgICBsUGFyYW07CisgIHVpbnQxNiBldmVudDsKKyAgdWludDMy
IHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKIH0gTlBFdmVudDsKLSNlbGlmIGRlZmluZWQgKFhQ
X1VOSVgpCisjZWxpZiBkZWZpbmVkKFhQX09TMikKK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50Cit7
CisgIHVpbnQzMiBldmVudDsKKyAgdWludDMyIHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKK30g
TlBFdmVudDsKKyNlbGlmIGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoTU9aX1gxMSkKIHR5
cGVkZWYgWEV2ZW50IE5QRXZlbnQ7CiAjZWxzZQotdHlwZWRlZiB2b2lkKiAgICAgICAgICAgIE5Q
RXZlbnQ7Cit0eXBlZGVmIHZvaWQqICAgICBOUEV2ZW50OwogI2VuZGlmIC8qIFhQX01BQyAqLwog
CiAjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NYKQogdHlwZWRlZiBSZ25I
YW5kbGUgTlBSZWdpb247CiAjZWxpZiBkZWZpbmVkKFhQX1dJTikKIHR5cGVkZWYgSFJHTiBOUFJl
Z2lvbjsKLSNlbGlmIGRlZmluZWQoWFBfVU5JWCkKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkgJiYg
ZGVmaW5lZChNT1pfWDExKQogdHlwZWRlZiBSZWdpb24gTlBSZWdpb247CiAjZWxzZQogdHlwZWRl
ZiB2b2lkICpOUFJlZ2lvbjsKQEAgLTQwNywzNiArNTI5LDQ3IEBADQogCiB0eXBlZGVmIHN0cnVj
dCBOUF9Qb3J0CiB7Ci0gICAgQ0dyYWZQdHIgICAgIHBvcnQ7ICAgICAgICAvKiBHcmFmcG9ydCAq
LwotICAgIGludDMyICAgICAgICBwb3J0eDsgICAgICAgIC8qIHBvc2l0aW9uIGluc2lkZSB0aGUg
dG9wbW9zdCB3aW5kb3cgKi8KLSAgICBpbnQzMiAgICAgICAgcG9ydHk7CisgIENHcmFmUHRyIHBv
cnQ7IC8qIEdyYWZwb3J0ICovCisgIGludDMyIHBvcnR4OyAgIC8qIHBvc2l0aW9uIGluc2lkZSB0
aGUgdG9wbW9zdCB3aW5kb3cgKi8KKyAgaW50MzIgcG9ydHk7CiB9IE5QX1BvcnQ7CiAKIC8qCiAg
KiAgTm9uLXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVF
dmVudAogICovCi0jZGVmaW5lIGdldEZvY3VzRXZlbnQgICAgICAgIChvc0V2dCArIDE2KQotI2Rl
ZmluZSBsb3NlRm9jdXNFdmVudCAgICAgICAgKG9zRXZ0ICsgMTcpCi0jZGVmaW5lIGFkanVzdEN1
cnNvckV2ZW50ICAgKG9zRXZ0ICsgMTgpCiAKK2VudW0gTlBFdmVudFR5cGUgeworICBOUEV2ZW50
VHlwZV9HZXRGb2N1c0V2ZW50ID0gKG9zRXZ0ICsgMTYpLAorICBOUEV2ZW50VHlwZV9Mb3NlRm9j
dXNFdmVudCwKKyAgTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZlbnQsCisgIE5QRXZlbnRUeXBl
X01lbnVDb21tYW5kRXZlbnQsCisgIE5QRXZlbnRUeXBlX0NsaXBwaW5nQ2hhbmdlZEV2ZW50LAor
ICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdCZWdpbnNFdmVudCA9IDEwMDAsCisgIE5QRXZlbnRUeXBl
X1Njcm9sbGluZ0VuZHNFdmVudAorfTsKKworI2lmZGVmIE9CU09MRVRFCisjZGVmaW5lIGdldEZv
Y3VzRXZlbnQgICAgIChvc0V2dCArIDE2KQorI2RlZmluZSBsb3NlRm9jdXNFdmVudCAgICAob3NF
dnQgKyAxNykKKyNkZWZpbmUgYWRqdXN0Q3Vyc29yRXZlbnQgKG9zRXZ0ICsgMTgpCisjZW5kaWYK
ICNlbmRpZiAvKiBYUF9NQUMgKi8KIAotCiAvKgogICogVmFsdWVzIGZvciBtb2RlIHBhc3NlZCB0
byBOUFBfTmV3OgogICovCi0jZGVmaW5lIE5QX0VNQkVEICAgICAgICAxCi0jZGVmaW5lIE5QX0ZV
TEwgICAgICAgICAyCisjZGVmaW5lIE5QX0VNQkVEIDEKKyNkZWZpbmUgTlBfRlVMTCAgMgogCiAv
KgogICogVmFsdWVzIGZvciBzdHJlYW0gdHlwZSBwYXNzZWQgdG8gTlBQX05ld1N0cmVhbToKICAq
LwotI2RlZmluZSBOUF9OT1JNQUwgICAgICAgIDEKLSNkZWZpbmUgTlBfU0VFSyAgICAgICAgIDIK
LSNkZWZpbmUgTlBfQVNGSUxFICAgICAgICAzCi0jZGVmaW5lIE5QX0FTRklMRU9OTFkgICAgICAg
IDQKKyNkZWZpbmUgTlBfTk9STUFMICAgICAxCisjZGVmaW5lIE5QX1NFRUsgICAgICAgMgorI2Rl
ZmluZSBOUF9BU0ZJTEUgICAgIDMKKyNkZWZpbmUgTlBfQVNGSUxFT05MWSA0CiAKLSNkZWZpbmUg
TlBfTUFYUkVBRFkgICAgKCgodW5zaWduZWQpKH4wKTw8MSk+PjEpCisjZGVmaW5lIE5QX01BWFJF
QURZICgoKHVuc2lnbmVkKSh+MCk8PDEpPj4xKQogCiAjaWZkZWYgWFBfTUFDCiAjcHJhZ21hIG9w
dGlvbnMgYWxpZ249cmVzZXQKQEAgLTQ0NCwzOCArNTc3LDM4IEBADQogCiAKIC8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCi0vKiAgICAgICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlvbnMg
ICAgICAgICAgICAqLworLyogICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlv
bnMgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqICAgIFZhbHVlcyBvZiB0eXBl
IE5QRXJyb3I6CisgKiBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgogICovCi0jZGVmaW5lIE5QRVJS
X0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotI2RlZmluZSBOUEVSUl9OT19FUlJP
UiAgICAgICAgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMCkKLSNkZWZpbmUgTlBFUlJf
R0VORVJJQ19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQotI2RlZmlu
ZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDIpCi0j
ZGVmaW5lIE5QRVJSX0lOVkFMSURfRlVOQ1RBQkxFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSAr
IDMpCi0jZGVmaW5lIE5QRVJSX01PRFVMRV9MT0FEX0ZBSUxFRF9FUlJPUiAgICAgICAgKE5QRVJS
X0JBU0UgKyA0KQotI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQotI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgICAgIChOUEVSUl9CQVNFICsgNikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVHSU5fRElS
X0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDcpCi0jZGVmaW5lIE5QRVJSX0lOQ09NUEFUSUJM
RV9WRVJTSU9OX0VSUk9SICAgIChOUEVSUl9CQVNFICsgOCkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJ
RF9QQVJBTSAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDkpCi0jZGVmaW5lIE5QRVJSX0lO
VkFMSURfVVJMICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEwKQotI2RlZmluZSBO
UEVSUl9GSUxFX05PVF9GT1VORCAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQotI2Rl
ZmluZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAx
MikKLSNkZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAgICAgIChOUEVSUl9C
QVNFICsgMTMpCisjZGVmaW5lIE5QRVJSX0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgMAor
I2RlZmluZSBOUEVSUl9OT19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAw
KQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VSUk9SICAgICAgICAgICAgICAgKE5QRVJSX0JBU0Ug
KyAxKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgKE5QRVJSX0JB
U0UgKyAyKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0ZVTkNUQUJMRV9FUlJPUiAgICAgKE5QRVJS
X0JBU0UgKyAzKQorI2RlZmluZSBOUEVSUl9NT0RVTEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5Q
RVJSX0JBU0UgKyA0KQorI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgKE5QRVJSX0JBU0UgKyA2KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJS
T1IgICAgKE5QRVJSX0JBU0UgKyA3KQorI2RlZmluZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lP
Tl9FUlJPUiAgKE5QRVJSX0JBU0UgKyA4KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BBUkFNICAg
ICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAg
ICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMCkKKyNkZWZpbmUgTlBFUlJfRklMRV9OT1Rf
Rk9VTkQgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTEpCisjZGVmaW5lIE5QRVJSX05PX0RB
VEEgICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEyKQorI2RlZmluZSBOUEVSUl9T
VFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMykKIAogLyoKLSAqICAg
IFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgorICogVmFsdWVzIG9mIHR5cGUgTlBSZWFzb246CiAg
Ki8KLSNkZWZpbmUgTlBSRVNfQkFTRSAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIE5QUkVTX0RP
TkUgICAgICAgICAgICAgICAgICAgIChOUFJFU19CQVNFICsgMCkKLSNkZWZpbmUgTlBSRVNfTkVU
V09SS19FUlIgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDEpCi0jZGVmaW5lIE5QUkVTX1VTRVJf
QlJFQUsgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDIpCisjZGVmaW5lIE5QUkVTX0JBU0UgICAg
ICAgICAgMAorI2RlZmluZSBOUFJFU19ET05FICAgICAgICAgKE5QUkVTX0JBU0UgKyAwKQorI2Rl
ZmluZSBOUFJFU19ORVRXT1JLX0VSUiAgKE5QUkVTX0JBU0UgKyAxKQorI2RlZmluZSBOUFJFU19V
U0VSX0JSRUFLICAgKE5QUkVTX0JBU0UgKyAyKQogCiAvKgotICogICAgICBEb24ndCB1c2UgdGhl
c2Ugb2Jzb2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCisgKiBEb24ndCB1c2UgdGhlc2Ugb2Jz
b2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCiAgKi8KICNkZWZpbmUgTlBfTk9FUlIgIE5QX05P
RVJSX2lzX29ic29sZXRlX3VzZV9OUEVSUl9OT19FUlJPUgogI2RlZmluZSBOUF9FSU5WQUwgTlBf
RUlOVkFMX2lzX29ic29sZXRlX3VzZV9OUEVSUl9HRU5FUklDX0VSUk9SCkBAIC00ODQsMjYgKzYx
NywzMiBAQA0KIC8qCiAgKiBWZXJzaW9uIGZlYXR1cmUgaW5mb3JtYXRpb24KICAqLwotI2RlZmlu
ZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgOAotI2RlZmluZSBOUFZFUlNfSEFTX05PVElG
SUNBVElPTiAgICAgOQotI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVDT05ORUNUICAgICAgICA5Ci0j
ZGVmaW5lIE5QVkVSU19XSU4xNl9IQVNfTElWRUNPTk5FQ1QgICAgOQotI2RlZmluZSBOUFZFUlNf
NjhLX0hBU19MSVZFQ09OTkVDVCAgICAxMQotI2RlZmluZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1Mg
ICAgICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hBU19TVFJFQU1PVVRQVVQgICAgICA4CisjZGVmaW5l
IE5QVkVSU19IQVNfTk9USUZJQ0FUSU9OICAgICAgOQorI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVD
T05ORUNUICAgICAgIDkKKyNkZWZpbmUgTlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCA5Cisj
ZGVmaW5lIE5QVkVSU182OEtfSEFTX0xJVkVDT05ORUNUICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hB
U19XSU5ET1dMRVNTICAgICAgICAxMQorI2RlZmluZSBOUFZFUlNfSEFTX1hQQ09OTkVDVF9TQ1JJ
UFRJTkcgMTMKIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgRnVuY3Rpb24g
UHJvdG90eXBlcyAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICBG
dW5jdGlvbiBQcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCiAKICNpZiBkZWZpbmVkKF9XSU5ET1dTKSAmJiAhZGVmaW5lZChXSU4zMikKICNk
ZWZpbmUgTlBfTE9BRERTICBfbG9hZGRzCiAjZWxzZQorI2lmIGRlZmluZWQoX19PUzJfXykKKyNk
ZWZpbmUgTlBfTE9BRERTIF9TeXN0ZW0KKyNlbHNlCiAjZGVmaW5lIE5QX0xPQUREUwogI2VuZGlm
CisjZW5kaWYKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKKyNpZm5kZWYgX19T
WU1CSUFOMzJfXworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgog
I2VuZGlmCiAKIC8qCkBAIC01MTEsNzggKzY1MCwxNTAgQEANCiAgKi8KIAogI2lmZGVmIFhQX1VO
SVgKLWNoYXIqICAgICAgICAgICAgICAgICAgICBOUFBfR2V0TUlNRURlc2NyaXB0aW9uKHZvaWQp
OworY2hhciogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lkKTsKICNlbmRpZiAvKiBYUF9VTklY
ICovCiAKLU5QRXJyb3IgICAgIE5QUF9Jbml0aWFsaXplKHZvaWQpOwotdm9pZCAgICAgICAgTlBQ
X1NodXRkb3duKHZvaWQpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAgIE5QUF9OZXcoTlBNSU1F
VHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsK
LU5QRXJyb3IgICAgIE5QX0xPQUREUyAgICBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2
ZWREYXRhKiogc2F2ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX1NldFdpbmRvdyhO
UFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAg
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVr
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlw
ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlBSZWFzb24gcmVhc29uKTsKLWludDMyICAgICAgICBOUF9MT0FERFMgICAgTlBQ
X1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtKTsKLWludDMyICAgICAg
ICBOUF9MT0FERFMgICAgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwg
aW50MzIgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyIGxl
biwgdm9pZCogYnVmZmVyKTsKLXZvaWQgICAgICAgIE5QX0xPQUREUyAgICBOUFBfU3RyZWFtQXNG
aWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCAgICAgICAgTlBf
TE9BRERTICAgIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQp
OwotaW50MTYgICAgICAgICAgICBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBl
dmVudCk7Ci12b2lkICAgICAgICBOUF9MT0FERFMgICAgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFu
Y2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsKLWpyZWYgICAgICAgIE5QX0xP
QUREUyAgICAgICAgICAgIE5QUF9HZXRKYXZhQ2xhc3Modm9pZCk7Ci1OUEVycm9yICAgICBOUFBf
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yICAgICBOUFBf
U2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7CisjaWZkZWYgX19TWU1CSUFO
MzJfXworSU1QT1JUX0MgY29uc3QgVERlc0MxNiogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lk
KTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCiAKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9J
bml0aWFsaXplKHZvaWQpOworI2lmZGVmIF9fU1lNQklBTjMyX18KK0lNUE9SVF9DCisjZW5kaWYg
LyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQp
OworCisjaWZuZGVmIF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXcoTlBN
SU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbHNlCitO
UEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAorICAgICAgICAgICAgICB1aW50MTYgbW9kZSwgQ0Rlc0NBcnJheSogYXJnbiwKKyAgICAg
ICAgICAgICAgQ0Rlc0NBcnJheSogYXJndiwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbmRpZiAv
KiBfX1NZTUJJQU4zMl9fICovCisKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95KE5QUCBp
bnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRX
aW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKK05QRXJyb3IgTlBfTE9BRERT
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlwZSk7CitOUEVycm9y
IE5QX0xPQUREUyBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24p
OworaW50MzIgICBOUF9MT0FERFMgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVh
bSogc3RyZWFtKTsKK2ludDMyICAgTlBfTE9BRERTIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5Q
U3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7CisKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordm9p
ZCAgICBOUF9MT0FERFMgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZu
YW1lKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1N0
cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGZuYW1lKTsKKyNlbmRpZiAvKiBf
X1NZTUJJQU4zMl9fICovCisKK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9QcmludChOUFAgaW5zdGFu
Y2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOworaW50MTYgICBOUF9MT0FERFMgTlBQX0hhbmRs
ZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpOworCisjaWZuZGVmIF9fU1lNQklBTjMy
X18KK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBj
aGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNv
biwgdm9pZCogbm90aWZ5RGF0YSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK3ZvaWQgICAg
TlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCisjaWZkZWYgT0pJCitq
cmVmICAgIE5QX0xPQUREUyBOUFBfR2V0SmF2YUNsYXNzKHZvaWQpOworI2VuZGlmCisKKyNpZmRl
ZiBfX1NZTUJJQU4zMl9fCitJTVBPUlRfQworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KK05Q
RXJyb3IgTlBfTE9BRERTIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7CitOUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOworCiAvKgogICog
TlBOXyogZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBieSB0aGUgbmF2aWdhdG9yIGFuZCBjYWxsZWQg
YnkgdGhlIHBsdWdpbi4KICAqLwordm9pZCAgICBOUF9MT0FERFMgTlBOX1ZlcnNpb24oaW50KiBw
bHVnaW5fbWFqb3IsIGludCogcGx1Z2luX21pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBuZXRzY2FwZV9tYWpvciwgaW50KiBuZXRzY2FwZV9taW5vcik7CiAKLXZvaWQg
ICAgICAgIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQqIG5l
dHNjYXBlX21pbm9yKTsKLU5QRXJyb3IgICAgIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGlmeURhdGEpOwotTlBFcnJvciAgICAgTlBOX0dldFVS
TChOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7Ci1OUEVycm9yICAgICBOUE5fUG9zdFVSTE5vdGlmeShO
UFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsKLU5QRXJyb3IgICAg
IE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlKTsKLU5QRXJy
b3IgICAgIE5QTl9SZXF1ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFu
Z2VMaXN0KTsKLU5QRXJyb3IgICAgIE5QTl9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVU
eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJn
ZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKLWludDMyICAgICAgICBOUE5fV3JpdGUoTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQqIGJ1ZmZlcik7Ci1OUEVycm9yICAgICBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uKTsKLXZvaWQgICAgICAgIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLWNvbnN0IGNoYXIqICAgIE5QTl9Vc2VyQWdlbnQoTlBQ
IGluc3RhbmNlKTsKLXZvaWQqICAgICAgICBOUE5fTWVtQWxsb2ModWludDMyIHNpemUpOwotdm9p
ZCAgICAgICAgTlBOX01lbUZyZWUodm9pZCogcHRyKTsKLXVpbnQzMiAgICAgICAgTlBOX01lbUZs
dXNoKHVpbnQzMiBzaXplKTsKLXZvaWQgICAgICAgIE5QTl9SZWxvYWRQbHVnaW5zKE5QQm9vbCBy
ZWxvYWRQYWdlcyk7Ci1KUklFbnYqICAgICBOUE5fR2V0SmF2YUVudih2b2lkKTsKLWpyZWYgICAg
ICAgIE5QTl9HZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwotTlBFcnJvciAgICAgTlBOX0dldFZh
bHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnZhbHVlKTsKLU5QRXJyb3IgICAgIE5QTl9TZXRWYWx1ZShOUFAg
aW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICp2YWx1ZSk7Ci12b2lkICAgICAgICBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGlu
c3RhbmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsKLXZvaWQgICAgICAgIE5QTl9JbnZhbGlkYXRl
UmVnaW9uKE5QUCBpbnN0YW5jZSwgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Ci12b2lkICAgICAg
ICBOUE5fRm9yY2VSZWRyYXcoTlBQIGluc3RhbmNlKTsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
TlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFVSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNo
YXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
dGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRVUkwo
TlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTE5v
dGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsK
K05QRXJyb3IgTlBfTE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB1
aW50MzIgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVm
LCBOUEJvb2wgZmlsZSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK05QRXJyb3IgTlBfTE9B
RERTIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwg
dm9pZCogbm90aWZ5RGF0YSk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0
YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBURGVzQzE2KiB0YXJnZXQpOworTlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkxOb3Rp
ZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7CitOUEVy
cm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIHVy
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGJ1ZiwgTlBCb29s
IGZpbGUpOworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVz
Ci19ICAvKiBlbmQgZXh0ZXJuICJDIiAqLworTlBFcnJvciBOUF9MT0FERFMgTlBOX1JlcXVlc3RS
ZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiByYW5nZUxpc3QpOworCisjaWZuZGVm
IF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9OZXdTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRhcmdldCwgTlBTdHJlYW0qKiBzdHJlYW0pOworI2Vsc2UvKiBfX1NZTUJJQU4z
Ml9fICovCitOUEVycm9yIE5QX0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBN
SU1FVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVz
QzE2KiB0YXJnZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9f
ICovCisKK2ludDMyICAgTlBfTE9BRERTIE5QTl9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sIGludDMyIGxlbiwgdm9pZCogYnVmZmVyKTsKK05QRXJyb3IgTlBfTE9BRERTIE5Q
Tl9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24g
cmVhc29uKTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9fCit2b2lkICAgIE5QX0xPQUREUyBOUE5f
U3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogbWVzc2FnZSk7CisjZWxzZS8qIF9fU1lN
QklBTjMyX18gKi8KK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNlLCBj
b25zdCBURGVzQzE2JiBtZXNzYWdlKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCisKKyNp
Zm5kZWYgX19TWU1CSUFOMzJfXworY29uc3QgY2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQo
TlBQIGluc3RhbmNlKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLworY29uc3QgVERlc0MxNiog
TlBfTE9BRERTICBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7CisjZW5kaWYgLyogX19TWU1C
SUFOMzJfXyAqLworCisKK3ZvaWQqICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1aW50MzIgc2l6
ZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fTWVtRnJlZSh2b2lkKiBwdHIpOwordWludDMyICBO
UF9MT0FERFMgTlBOX01lbUZsdXNoKHVpbnQzMiBzaXplKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5Q
Tl9SZWxvYWRQbHVnaW5zKE5QQm9vbCByZWxvYWRQYWdlcyk7CisjaWZkZWYgT0pJCitKUklFbnYq
IE5QX0xPQUREUyBOUE5fR2V0SmF2YUVudih2b2lkKTsKK2pyZWYgICAgTlBfTE9BRERTIE5QTl9H
ZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwogI2VuZGlmCitOUEVycm9yIE5QX0xPQUREUyBOUE5f
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUp
OworTlBFcnJvciBOUF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9JbnZhbGlk
YXRlUmVjdChOUFAgaW5zdGFuY2UsIE5QUmVjdCAqaW52YWxpZFJlY3QpOwordm9pZCAgICBOUF9M
T0FERFMgTlBOX0ludmFsaWRhdGVSZWdpb24oTlBQIGluc3RhbmNlLCBOUFJlZ2lvbiBpbnZhbGlk
UmVnaW9uKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9Gb3JjZVJlZHJhdyhOUFAgaW5zdGFuY2Up
OwogCisjaWZuZGVmIF9fU1lNQklBTjMyX18KKyAjaWZkZWYgX19jcGx1c3BsdXMKKyB9ICAvKiBl
bmQgZXh0ZXJuICJDIiAqLworICNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBSQ19JTlZPS0VE
ICovCisjaWZkZWYgX19PUzJfXworI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorCiAjZW5kaWYgLyog
X05QQVBJX0hfICovCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTIwLDE1ICsyMCwxNiBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCisjaW5jbHVk
ZSA8SGFzaE1hcC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZV9pbXBsLmg+
CisjaW5jbHVkZSA8aWRlbnRpZmllci5oPgogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1
ZGUgPGNfdXRpbGl0eS5oPgogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lX2lt
cGwuaD4KLQorLyoKIHN0YXRpYyBCb29sZWFuIHN0cmluZ0lkZW50aWZpZXJFcXVhbChjb25zdCB2
b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVlMikKIHsKICAgICByZXR1cm4gc3RyY21wKChj
b25zdCBjaGFyICopdmFsdWUxLCAoY29uc3QgY2hhciAqKXZhbHVlMikgPT0gMDsKQEAgLTEwMCwx
NCArMTAxLDE0IEBADQogICAgIHJldHVybiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeTsKIH0KIAot
TlBJZGVudGlmaWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoY29uc3QgTlBVVEY4ICpuYW1l
KQorTlBJZGVudGlmaWVyIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5h
bWUpCiB7CiAgICAgYXNzZXJ0IChuYW1lKTsKLSAgICAKKwogICAgIGlmIChuYW1lKSB7CiAgICAg
ICAgIFByaXZhdGVJZGVudGlmaWVyICppZGVudGlmaWVyID0gMDsKLSAgICAgICAgCi0gICAgICAg
IGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAo
Z2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKiluYW1lKTsKKwor
ICAgICAgICAvL2lkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilu
YW1lKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgewogICAgICAgICAgICAgaWRlbnRp
ZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKW1hbGxvYyAoc2l6ZW9mKFByaXZhdGVJZGVudGlm
aWVyKSk7CiAgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMs
IHNvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwKQEAgLTExNiw2MCArMTE3LDEz
OCBAQA0KICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlkZW50aWZpZXJOYW1lID0gc3RyZHVwIChu
YW1lKTsKICAgICAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9IGlkZW50aWZpZXJO
YW1lOwogCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRp
ZmllckRpY3Rpb25hcnkoKSwgaWRlbnRpZmllck5hbWUsIChjb25zdCB2b2lkICopaWRlbnRpZmll
cik7CisgICAgICAgICAgICAvL0NGRGljdGlvbmFyeUFkZFZhbHVlIChnZXRTdHJpbmdJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCBpZGVudGlmaWVyTmFtZSwgKGNvbnN0IHZvaWQgKilpZGVudGlmaWVy
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCi12b2lkIF9OUE5fR2V0U3RyaW5nSWRl
bnRpZmllcnMgKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwgTlBJZGVu
dGlmaWVyICppZGVudGlmaWVycykKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIChjb25z
dCBOUFVURjggKipuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciAqaWRlbnRp
ZmllcnMpCiB7CiAgICAgYXNzZXJ0IChuYW1lcyk7CiAgICAgYXNzZXJ0IChpZGVudGlmaWVycyk7
Ci0gICAgCisKICAgICBpZiAobmFtZXMgJiYgaWRlbnRpZmllcnMpIHsKICAgICAgICAgaW50IGk7
Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykgewot
ICAgICAgICAgICAgaWRlbnRpZmllcnNbaV0gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG5h
bWVzW2ldKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIgKG5hbWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotTlBJZGVudGlmaWVyIF9O
UE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludGlkKQorTlBJZGVudGlmaWVyIE5QTl9HZXRJ
bnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCiB7CisvL2ZvcmNlIGFzc2VydAorCisKICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaWRlbnRpZmllciA9IDA7Ci0gICAgCi0gICAgaWRlbnRpZmllciA9
IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFyeUdldFZhbHVlIChnZXRJbnRJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWludGlkKTsKK2Fzc2VydCggaWRlbnRpZmll
ciApOworICAgIC8vaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFy
eUdldFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWlu
dGlkKTsKICAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7CiAgICAgICAgIGlkZW50aWZpZXIgPSAo
UHJpdmF0ZUlkZW50aWZpZXIgKiltYWxsb2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOwog
ICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMsIHNvIHRoaXMgZGlj
dGlvbmFyeSB3aWxsIGdyb3cuCiAgICAgICAgIGlkZW50aWZpZXItPmlzU3RyaW5nID0gZmFsc2U7
CiAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLm51bWJlciA9IGludGlkOwogCi0gICAgICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qg
dm9pZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOworICAgICAgICAvL0NGRGlj
dGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9p
ZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4g
KE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworfSovCisKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
S0pTOjpVU3RyaW5nOjpSZXA+LCBQcml2YXRlSWRlbnRpZmllcio+IFN0cmluZ0lkZW50aWZpZXJN
YXA7CisKK3N0YXRpYyBTdHJpbmdJZGVudGlmaWVyTWFwKiBnZXRTdHJpbmdJZGVudGlmaWVyTWFw
KCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nSWRlbnRpZmllck1hcCogc3RyaW5nSWRlbnRpZmllck1h
cCA9IDA7CisgICAgaWYgKCFzdHJpbmdJZGVudGlmaWVyTWFwKQorICAgICAgICBzdHJpbmdJZGVu
dGlmaWVyTWFwID0gbmV3IFN0cmluZ0lkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIHN0cmluZ0lk
ZW50aWZpZXJNYXA7CiB9CiAKLWJvb2wgX05QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit0eXBlZGVmIEhhc2hNYXA8aW50LCBQcml2YXRlSWRlbnRpZmllcio+
IEludElkZW50aWZpZXJNYXA7CisKK3N0YXRpYyBJbnRJZGVudGlmaWVyTWFwKiBnZXRJbnRJZGVu
dGlmaWVyTWFwKCkKIHsKKyAgICBzdGF0aWMgSW50SWRlbnRpZmllck1hcCogaW50SWRlbnRpZmll
ck1hcCA9IDA7CisgICAgaWYgKCFpbnRJZGVudGlmaWVyTWFwKQorICAgICAgICBpbnRJZGVudGlm
aWVyTWFwID0gbmV3IEludElkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIGludElkZW50aWZpZXJN
YXA7Cit9CisKK0VYUE9SVF9DCitOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
Y29uc3QgTlBVVEY4KiBuYW1lKQoreworICAgIGFzc2VydChuYW1lKTsKKworICAgIGlmIChuYW1l
KSB7CisgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsKKworICAgICAg
ICBpZGVudGlmaWVyID0gZ2V0U3RyaW5nSWRlbnRpZmllck1hcCgpLT5nZXQoaWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIobmFtZSkudXN0cmluZygpLmFyZXAoKSk7CisgICAgICAgIGlmIChpZGVu
dGlmaWVyID09IDApIHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZp
ZXIqKW1hbGxvYyhzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIC8vIFdl
IG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwg
Z3JvdywgYXMgd2lsbAorICAgICAgICAgICAgLy8gdGhlIG1lbW9yeSBmb3IgdGhlIGlkZW50aWZp
ZXIgbmFtZSBzdHJpbmdzLgorICAgICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSB0cnVl
OworICAgICAgICAgICAgaWRlbnRpZmllci0+dmFsdWUuc3RyaW5nID0gc3RyZHVwKG5hbWUpOwor
CisgICAgICAgICAgICBnZXRTdHJpbmdJZGVudGlmaWVyTWFwKCktPnNldChpZGVudGlmaWVyRnJv
bU5QSWRlbnRpZmllcihuYW1lKS51c3RyaW5nKCkuYXJlcCgpLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitFWFBPUlRfQwordm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cnMoY29uc3QgTlBVVEY4KiogbmFtZXMsIGludDMyX3QgbmFtZUNvdW50LCBOUElkZW50aWZpZXIq
IGlkZW50aWZpZXJzKQoreworICAgIGFzc2VydChuYW1lcyk7CisgICAgYXNzZXJ0KGlkZW50aWZp
ZXJzKTsKKworICAgIGlmIChuYW1lcyAmJiBpZGVudGlmaWVycykKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0g
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZXNbaV0pOworfQorCitFWFBPUlRfQworTlBJZGVu
dGlmaWVyIE5QTl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCit7CisgICAgUHJpdmF0
ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSAwOworCisgICAgaWRlbnRpZmllciA9IGdldEludElk
ZW50aWZpZXJNYXAoKS0+Z2V0KGludGlkKTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7Cisg
ICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKW1hbGxvYyhzaXplb2YoUHJp
dmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgLy8gV2UgbmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVy
IG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBncm93LgorICAgICAgICBpZGVudGlmaWVy
LT5pc1N0cmluZyA9IGZhbHNlOworICAgICAgICBpZGVudGlmaWVyLT52YWx1ZS5udW1iZXIgPSBp
bnRpZDsKKworICAgICAgICBnZXRJbnRJZGVudGlmaWVyTWFwKCktPnNldChpbnRpZCwgaWRlbnRp
Zmllcik7CisgICAgfQorICAgIHJldHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7Cit9CisK
K0VYUE9SVF9DCitib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIg
KilpZGVudGlmaWVyOwogICAgIHJldHVybiBpLT5pc1N0cmluZzsKIH0KIAotTlBVVEY4ICpfTlBO
X1VURjhGcm9tSWRlbnRpZmllciAoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQwor
TlBVVEY4ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyIChOUElkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBQcml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKWlkZW50
aWZpZXI7CiAgICAgaWYgKCFpLT5pc1N0cmluZyB8fCAhaS0+dmFsdWUuc3RyaW5nKQogICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICAgICAgCisKICAgICByZXR1cm4gKE5QVVRGOCAqKXN0cmR1cChp
LT52YWx1ZS5zdHJpbmcpOwogfQogCi1pbnQzMl90IF9OUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQworaW50MzJfdCBOUE5fSW50RnJvbUlkZW50
aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIg
KmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilpZGVudGlmaWVyOwogICAgIGlmICghaS0+aXNTdHJp
bmcpCkBAIC0yMjEsOSArMzAwLDkgQEANCiB7CiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgIT0gTlBW
YXJpYW50VHlwZV9Cb29sKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAg
KnJlc3VsdCA9IHZhcmlhbnQtPnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzMsNyArMzEyLDcgQEANCiAgICAgICAgIE5QU3RyaW5nIGVtcHR5U3Ry
aW5nID0geyAwLCAwIH07CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZzsKICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgIHJldHVybiB2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZTsKIH0KIApA
QCAtMjQ1LDcgKzMyNCw3IEBADQogICAgICAgICAqcmVzdWx0ID0gKGludDMyX3QpdmFyaWFudC0+
dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU3LDcgKzMzNiw3IEBADQogICAgICAgICAq
cmVzdWx0ID0gdmFyaWFudC0+dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY1LDkgKzM0
NCw5IEBADQogewogICAgIGlmICh2YXJpYW50LT50eXBlICE9IE5QVmFyaWFudFR5cGVfT2JqZWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKKwogICAgICpyZXN1bHQgPSB2
YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zMjEsNyArNDAwLDcgQEANCiB2b2lkIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmpl
Y3QgKE5QVmFyaWFudCAqdmFyaWFudCwgTlBPYmplY3QgKnZhbHVlKQogewogICAgIHZhcmlhbnQt
PnR5cGUgPSBOUFZhcmlhbnRUeXBlX09iamVjdDsKLSAgICB2YXJpYW50LT52YWx1ZS5vYmplY3RW
YWx1ZSA9IF9OUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CisgICAgdmFyaWFudC0+dmFsdWUub2Jq
ZWN0VmFsdWUgPSBOUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CiB9CiAKIHZvaWQgTlBOX0luaXRp
YWxpemVWYXJpYW50V2l0aFZhcmlhbnQgKE5QVmFyaWFudCAqZGVzdGluYXRpb24sIGNvbnN0IE5Q
VmFyaWFudCAqc291cmNlKQpAQCAtMzYyLDEyICs0NDEsMTMgQEANCiAgICAgfQogfQogCi12b2lk
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MK
K3ZvaWQgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKE5QVmFyaWFudCAqdmFyaWFudCkKIHsKICAg
ICBhc3NlcnQgKHZhcmlhbnQpOwotICAgIAorCiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgPT0gTlBW
YXJpYW50VHlwZV9PYmplY3QpIHsKLSAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CisgICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
ID0gMDsKICAgICB9CiAgICAgZWxzZSBpZiAodmFyaWFudC0+dHlwZSA9PSBOUFZhcmlhbnRUeXBl
X1N0cmluZykgewpAQCAtMzc1LDM0ICs0NTUsMzYgQEANCiAgICAgICAgIHZhcmlhbnQtPnZhbHVl
LnN0cmluZ1ZhbHVlLlVURjhDaGFyYWN0ZXJzID0gMDsKICAgICAgICAgdmFyaWFudC0+dmFsdWUu
c3RyaW5nVmFsdWUuVVRGOExlbmd0aCA9IDA7CiAgICAgfQotICAgIAorCiAgICAgdmFyaWFudC0+
dHlwZSA9IE5QVmFyaWFudFR5cGVfVm9pZDsKIH0KIAogCi1OUE9iamVjdCAqX05QTl9DcmVhdGVP
YmplY3QgKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcykKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBO
X0NyZWF0ZU9iamVjdCAoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKQogewogICAgIGFzc2VydCAo
YUNsYXNzKTsKIAogICAgIGlmIChhQ2xhc3MpIHsKICAgICAgICAgTlBPYmplY3QgKm9iajsKLSAg
ICAgICAgCisKICAgICAgICAgaWYgKGFDbGFzcy0+YWxsb2NhdGUgIT0gTlVMTCkKICAgICAgICAg
ICAgIG9iaiA9IGFDbGFzcy0+YWxsb2NhdGUgKG5wcCwgYUNsYXNzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgb2JqID0gKE5QT2JqZWN0ICopbWFsbG9jIChzaXplb2YoTlBPYmplY3QpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgIG9iai0+X2NsYXNzID0gYUNsYXNzOwogICAgICAgICBv
YmotPnJlZmVyZW5jZUNvdW50ID0gMTsKIAogICAgICAgICByZXR1cm4gb2JqOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiAwOwogfQogCiAKLU5QT2JqZWN0ICpfTlBOX1JldGFpbk9iamVjdCAo
TlBPYmplY3QgKm9iaikKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBOX1JldGFpbk9iamVjdCAoTlBP
YmplY3QgKm9iaikKIHsKICAgICBhc3NlcnQgKG9iaik7CiAKQEAgLTQxMywxNCArNDk1LDE1IEBA
DQogfQogCiAKLXZvaWQgX05QTl9SZWxlYXNlT2JqZWN0IChOUE9iamVjdCAqb2JqKQorRVhQT1JU
X0MKK3ZvaWQgTlBOX1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpvYmopCiB7CiAgICAgYXNzZXJ0
IChvYmopOwogICAgIGFzc2VydCAob2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKTsKIAogICAgIGlm
IChvYmogJiYgb2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKSB7CiAgICAgICAgIG9iai0+cmVmZXJl
bmNlQ291bnQtLTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5yZWZlcmVu
Y2VDb3VudCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUp
CiAgICAgICAgICAgICAgICAgb2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUgKG9iaik7CkBAIC00MzAs
MTIgKzUxMywxMyBAQA0KICAgICB9CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb25XaXRoVVRG
OCAoTlBPYmplY3QgKm9iaiwgY29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkK
K0VYUE9SVF9DCit2b2lkIE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOCAoTlBPYmplY3QgKm9iaiwg
Y29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkKIHsKICAgICBhc3NlcnQgKG9i
aik7CiAgICAgYXNzZXJ0IChtZXNzYWdlKTsKLSAKKwogICAgIGlmIChvYmogJiYgbWVzc2FnZSkg
ewotICAgICAgICBfTlBOX1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKKyAgICAgICAgTlBO
X1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKICAgICB9CiB9CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL25wcnVudGltZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTczLDYgKzczLDcgQEAN
CiAjZW5kaWYKIAogI2luY2x1ZGUgIm5wYXBpLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
c3RkaW50Lmg+CiAKIC8qCiAgICAgVGhpcyBBUEkgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGJpbmRp
bmcgY29kZSB3cml0dGVuIGluIEMgdG8gc2NyaXB0CkBAIC0xNTEsNiArMTUyLDcgQEANCiAgICAg
QWZ0ZXIgY2FsbGluZyBOUFJlbGVhc2VWYXJpYW50VmFsdWUsIHRoZSB0eXBlIG9mIHRoZSB2YXJp
YW50IHdpbGwKICAgICBiZSBzZXQgdG8gTlBWYXJpYW50VW5kZWZpbmVkVHlwZS4KICovCitJTVBP
UlRfQwogdm9pZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KTsK
IAogI2RlZmluZSBOUFZBUklBTlRfSVNfVk9JRChfdikgICAgKChfdikudHlwZSA9PSBOUFZhcmlh
bnRUeXBlX1ZvaWQpCkBAIC0yMTIsMjAgKzIxNCwyNiBAQA0KICAgICBjb21wYXJlZCB1c2luZyA9
PS4gIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhlIHJlcXVlc3RlZAogICAgIE5QSWRlbnRpZmll
cihzKSB3aWxsIGJlIE5VTEwuCiAqLworSU1QT1JUX0MKIE5QSWRlbnRpZmllciBOUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpOworSU1QT1JUX0MKIHZvaWQgTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3Vu
dCwgTlBJZGVudGlmaWVyICppZGVudGlmaWVycyk7CitJTVBPUlRfQwogTlBJZGVudGlmaWVyIE5Q
Tl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0lk
ZW50aWZpZXJJc1N0cmluZyhOUElkZW50aWZpZXIgaWRlbnRpZmllcik7CiAKIC8qCiAgICAgVGhl
IE5QVVRGOCByZXR1cm5lZCBmcm9tIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgU0hPVUxEIGJlIGZy
ZWVkLgogKi8KK0lNUE9SVF9DCiBOUFVURjggKk5QTl9VVEY4RnJvbUlkZW50aWZpZXIoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpOwogCiAvKgogICAgIEdldCB0aGUgaW50ZWdlciByZXByZXNlbnRl
ZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlzIG5vdCBhbgogICAgIGludGVnZXIgaWRl
bnRpZmllciwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCiAqLworSU1QT1JUX0MKIGludDMy
X3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKIAogLyoK
QEAgLTI5MSwxMSArMjk5LDEzIEBADQogICAgIGZ1bmN0aW9uIGl0IGlzIHRoZSByZXNwb25zaWJp
bGl0eSBvZiB0aGF0IGltcGxlbWVudGF0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCByZXRhaW4KICAg
ICBjb3VudCB0byAxLgogKi8KK0lNUE9SVF9DCiBOUE9iamVjdCAqTlBOX0NyZWF0ZU9iamVjdChO
UFAgbnBwLCBOUENsYXNzICphQ2xhc3MpOwogCiAvKgogICAgIEluY3JlbWVudCB0aGUgTlBPYmpl
Y3QncyByZWZlcmVuY2UgY291bnQuCiAqLworSU1QT1JUX0MKIE5QT2JqZWN0ICpOUE5fUmV0YWlu
T2JqZWN0IChOUE9iamVjdCAqb2JqKTsKIAogLyoKQEAgLTMwMyw2ICszMTMsNyBAQA0KICAgICBj
b3VudCBnb2VzIHRvIHplcm8sIHRoZSBjbGFzcydzIGRlc3Ryb3kgZnVuY3Rpb24gaXMgaW52b2tl
IGlmCiAgICAgc3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIG9iamVjdCBpcyBmcmVlZCBkaXJlY3Rs
eS4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fUmVsZWFzZU9iamVjdCAoTlBPYmplY3QgKm9iaik7
CiAKIC8qCkBAIC0zMTYsMTkgKzMyNywyOCBAQA0KICAgICBDYWxscyBtYWRlIGZyb20gcGx1Z2lu
IGNvZGUgdG8gc2NyaXB0IG11c3QgYmUgbWFkZSBmcm9tIHRoZSB0aHJlYWQKICAgICBvbiB3aGlj
aCB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZC4KICovCitJTVBPUlRfQwogYm9vbCBOUE5fSW52
b2tlKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNv
bnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0
KTsKK0lNUE9SVF9DCiBib29sIE5QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpu
cG9iaiwgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50
ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0V2YWx1YXRlKE5QUCBucHAsIE5QT2JqZWN0
ICpucG9iaiwgTlBTdHJpbmcgKnNjcmlwdCwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MK
IGJvb2wgTlBOX0dldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBO
X1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSwgY29uc3QgTlBWYXJpYW50ICp2YWx1ZSk7CitJTVBPUlRfQwogYm9vbCBOUE5fUmVt
b3ZlUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKTsKK0lNUE9SVF9DCiBib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVj
dCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOworSU1QT1JUX0MKIGJvb2wgTlBO
X0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKTsKIAogLyoKICAgICBOUE5fU2V0RXhjZXB0aW9uIG1heSBiZSBjYWxsZWQgdG8gdHJpZ2dl
ciBhIHNjcmlwdCBleGNlcHRpb24gdXBvbiByZXR1cm4KICAgICBmcm9tIGVudHJ5IHBvaW50cyBp
bnRvIE5QT2JqZWN0cy4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fU2V0RXhjZXB0aW9uIChOUE9i
amVjdCAqb2JqLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDE4OCBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQ0K
Ky8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICogIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUEFTU19SRUZfUFRSX0gNCisj
ZGVmaW5lIEtYTUxDT1JFX1BBU1NfUkVGX1BUUl9IDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFBh
c3NSZWZQdHI8VD4gYWRvcHRSZWYoVCAqcCk7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IA0KKyAgICBjbGFzcyBQYXNzUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAg
UGFzc1JlZlB0cigpIDogbV9wdHIoMCkge30NCisgICAgICAgIFBhc3NSZWZQdHIoVCAqcHRyKSA6
IG1fcHRyKHB0cikgeyBpZiAocHRyKSBwdHItPnJlZigpOyB9DQorICAgICAgICAvLyBJdCBzb21l
d2hhdCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFsbG93IHRyYW5zZmVyIG9mIG93bmVyc2hp
cCBvdXQgb2YNCisgICAgICAgIC8vIGEgY29uc3QgUGFzc1JlZlB0ci4gSG93ZXZlciwgaXQgbWFr
ZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NSZWZQdHINCisgICAgICAgIC8vIHRl
bXBvcmFyaWVzLCBhbmQgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYSBuZWVkIHRvIHVzZSByZWFsIGNv
bnN0IFBhc3NSZWZQdHJzIA0KKyAgICAgICAgLy8gYW55d2F5Lg0KKyAgICAgICAgUGFzc1JlZlB0
cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZSgpKSB7fQ0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykg
OiBtX3B0cihvLnJlbGVhc2UoKSkgeyB9DQorDQorICAgICAgICB+UGFzc1JlZlB0cigpIHsgaWYg
KFQgKnB0ciA9IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFU+IA0KKyAgICAgICAgUGFzc1JlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8p
IDogbV9wdHIoby5nZXQoKSkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisg
ICAgICAgIA0KKyAgICAgICAgVCAqZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisNCisg
ICAgICAgIFQgKnJlbGVhc2UoKSBjb25zdCB7IFQgKnRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7IHJl
dHVybiB0bXA7IH0NCisNCisgICAgICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpt
X3B0cjsgfQ0KKyAgICAgICAgVCAqb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9
DQorICAgICAgICANCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
cHRyOyB9DQorDQorICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGlt
cGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMu
DQorICAgICAgICB0eXBlZGVmIFQqIChQYXNzUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSko
KSBjb25zdDsNCisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3B0ciA/ICZQYXNzUmVmUHRyOjpnZXQgOiAwOyB9DQorICAgICAgICANCisgICAg
ICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShUICopOw0KKyAgICAgICAgUGFzc1JlZlB0ciYgb3Bl
cmF0b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8
VT4mKTsNCisNCisgICAgICAgIGZyaWVuZCBQYXNzUmVmUHRyIGFkb3B0UmVmPFQ+KFQgKik7DQor
ICAgIHByaXZhdGU6DQorICAgICAgICAvLyBhZG9wdGluZyBjb25zdHJ1Y3Rvcg0KKyAgICAgICAg
UGFzc1JlZlB0cihUICpwdHIsIGJvb2wpIDogbV9wdHIocHRyKSB7fQ0KKyAgICAgICAgbXV0YWJs
ZSBUICptX3B0cjsNCisgICAgfTsNCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46
Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mIG8pIA0KKyAgICB7DQorICAgICAgICBUKiBvcHRy
ID0gby5nZXQoKTsNCisgICAgICAgIGlmIChvcHRyKQ0KKyAgICAgICAgICAgIG9wdHItPnJlZigp
Ow0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG9wdHI7DQorICAg
ICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJldHVy
biAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikNCisgICAg
ew0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQorICAgICAg
ICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAgIGlmIChw
dHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0K
KyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxU
PiYgUGFzc1JlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIHJlZikNCisg
ICAgew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxl
YXNlKCk7DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisg
ICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiYgUGFzc1Jl
ZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHJlZikNCisgICAgew0KKyAg
ICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxlYXNlKCk7DQor
ICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJl
dHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwg
Y29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQo
KSA9PSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBj
b25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0g
Yi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNz
UmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0
KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpIA0KKyAg
ICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgDQorICAgIH0NCisgICAgDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
YSA9PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYg
YSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBh
LCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQ
YXNzUmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGIu
Z2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQq
IGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUICpwKQ0KKyAgICB7DQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxUPihwLCB0cnVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJf
Y2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihzdGF0aWNfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiBj
b25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgDQorICAgIHsgDQorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoY29uc3RfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAg
ICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpQYXNzUmVmUHRyOw0K
K3VzaW5nIFdURjo6YWRvcHRSZWY7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0K
K3VzaW5nIFdURjo6Y29uc3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9Q
QVNTX1JFRl9QVFJfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1JlZlB0ci5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9u
IDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9uIDApDQpA
QCAtMCwwICsxLDE4NSBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQ0KKy8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUkVGX1BUUl9IDQorI2Rl
ZmluZSBLWE1MQ09SRV9SRUZfUFRSX0gNCisNCisjaW5jbHVkZSA8YWxnb3JpdGhtPg0KKyNpbmNs
dWRlIDxQYXNzUmVmUHRyLmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAgUmVmUHRy
KCkgOiBtX3B0cigwKSB7fQ0KKyAgICAgICAgUmVmUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsg
aWYgKHB0cikgcHRyLT5yZWYoKTsgfQ0KKyAgICAgICAgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5yZWYoKTsgfQ0KKyAg
ICAgICAgLy8gc2VlIGNvbW1lbnQgaW4gUGFzc1JlZlB0ci5oIGZvciB3aHkgdGhpcyB0YWtlcyBj
b25zdCByZWZlcmVuY2UNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29u
c3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAgICAgflJlZlB0cigpIHsgaWYgKFQgKnB0ciA9
IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyBp
ZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgVCAq
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisgICAgICAgIA0KKyAgICAgICAgUGFzc1Jl
ZlB0cjxUPiByZWxlYXNlKCkgeyBQYXNzUmVmUHRyPFQ+IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsg
bV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9DQorDQorICAgICAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqbV9wdHI7IH0NCisgICAgICAgIFQgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQ0KKyAgICAgICAgDQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3B0cjsgfQ0KKyAgICANCisgICAgICAgIC8vIFRoaXMgY29udmVyc2lvbiBv
cGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3Ro
ZXIgaW50ZWdlciB0eXBlcy4NCisgICAgICAgIHR5cGVkZWYgVCAqIChSZWZQdHI6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKSgpIGNvbnN0Ow0KKyAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6Z2V0IDogMDsgfQ0KKyAgICAg
ICAgDQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsNCisgICAgICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFQgKik7DQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFQ+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAg
ICAgdm9pZCBzd2FwKFJlZlB0ciYpOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVCAqbV9w
dHI7DQorICAgIH07DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+
JiBvKQ0KKyAgICAgICAgOiBtX3B0cihvLnJlbGVhc2UoKSkNCisgICAgew0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9w
ZXJhdG9yPShjb25zdCBSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIG9wdHIgPSBv
LmdldCgpOw0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQor
ICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAg
IGlmIChwdHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0
aGlzOw0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxVPiYgbykNCisgICAgew0KKyAgICAgICAgVCogb3B0ciA9IG8uZ2V0KCk7DQorICAg
ICAgICBpZiAob3B0cikNCisgICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0
ciA9IG1fcHRyOw0KKyAgICAgICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisg
ICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0N
CisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQ0KKyAgICB7DQorICAgICAgICBpZiAob3B0cikNCisg
ICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAgICAg
ICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRl
cmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFBhc3NSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAg
ICAgICAgbV9wdHIgPSBvLnJlbGVhc2UoKTsNCisgICAgICAgIGlmIChwdHIpDQorICAgICAgICAg
ICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0
cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYgbykNCisgICAg
ew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgp
Ow0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAg
ICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIHN0
ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGlubGluZSB2b2lkIHN3YXAoUmVmUHRyPFQ+JiBhLCBSZWZQdHI8VD4mIGIpDQorICAgIHsN
CisgICAgICAgIGEuc3dhcChiKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEs
IGNvbnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09
IGIuZ2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYgYSwgVSogYikNCisg
ICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IA0KKyAgICB9DQorICAgIA0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25z
dCBSZWZQdHI8VT4mIGIpDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdl
dCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpDQorICAgIHsN
CisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IA0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIFJlZlB0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFJlZlB0cjxVPiYgcCkN
CisgICAgeyANCisgICAgICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgUmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHAp
DQorICAgIHsgDQorICAgICAgICByZXR1cm4gUmVmUHRyPFQ+KGNvbnN0X2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpS
ZWZQdHI7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0KK3VzaW5nIFdURjo6Y29u
c3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9SRUZfUFRSX0gNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI2
LDExICsyNiwxMSBAQA0KICNpbmNsdWRlIDxpbnRlcnByZXRlci5oPgogCiAjaW5jbHVkZSA8cnVu
dGltZV9vYmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KLSNpbmNsdWRlIDxvYmpj
X2luc3RhbmNlLmg+CisvLyNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KKy8vI2luY2x1ZGUgPG9i
amNfaW5zdGFuY2UuaD4KICNpbmNsdWRlIDxjX2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8TlBfanNv
YmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPGpuaV9qc29i
amVjdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIEtKUzo6Qmlu
ZGluZ3M7CkBAIC05OSwzMyArOTksMzUgQEANCiAgICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFu
Y2UgKGV4ZWMsIHRoaXMsIGFWYWx1ZSk7CiB9CiAKK0VYUE9SVF9DCiBJbnN0YW5jZSAqSW5zdGFu
Y2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChCaW5kaW5nTGFuZ3VhZ2UgbGFu
Z3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0ICpleGVjdXRpb25D
b250ZXh0KQogewogICAgIEluc3RhbmNlICpuZXdJbnN0YW5jZSA9IDA7CiAgICAgCiAgICAgc3dp
dGNoIChsYW5ndWFnZSkgewotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICBu
ZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJ
bnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4dCk7Ci0JICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3Rh
bmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGlu
Z3M6Ok9iamNJbnN0YW5jZSAoKHN0cnVjdCBvYmpjX29iamVjdCAqKW5hdGl2ZUluc3RhbmNlKTsK
LQkgICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogewotCSAgICBuZXdJ
bnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6Q0luc3RhbmNlICgoTlBPYmplY3QgKiluYXRpdmVJbnN0
YW5jZSk7Ci0JICAgIGJyZWFrOwotCX0KLQlkZWZhdWx0OgotCSAgICBicmVhazsKKyAgICBjYXNl
IEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBC
aW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEluc3RhbmNlOjpPYmpl
Y3RpdmVDTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6
T2JqY0luc3RhbmNlICgoc3RydWN0IG9iamNfb2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAg
ICAgIG5ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpDSW5zdGFuY2UgKChOUE9iamVjdCAqKW5h
dGl2ZUluc3RhbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGlmIChuZXdJbnN0YW5jZSkKLQluZXdJbnN0YW5jZS0+
c2V0RXhlY3V0aW9uQ29udGV4dCAoZXhlY3V0aW9uQ29udGV4dCk7Ci0JCisgICAgbmV3SW5zdGFu
Y2UtPnNldEV4ZWN1dGlvbkNvbnRleHQgKGV4ZWN1dGlvbkNvbnRleHQpOworICAgIAogICAgIHJl
dHVybiBuZXdJbnN0YW5jZTsKIH0KIAorRVhQT1JUX0MKIE9iamVjdCBJbnN0YW5jZTo6Y3JlYXRl
UnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0
YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBJbnN0YW5j
ZSAqaW50ZXJmYWNlT2JqZWN0ID0gSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUlu
c3RhbmNlIChsYW5ndWFnZSwgKHZvaWQgKiluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4
dCk7CkBAIC0xMzQsMzIgKzEzNiwzMyBAQA0KICAgICByZXR1cm4gT2JqZWN0KG5ldyBSdW50aW1l
T2JqZWN0SW1wKGludGVyZmFjZU9iamVjdCx0cnVlKSk7CiB9CiAKK0VYUE9SVF9DCiB2b2lkICpJ
bnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChFeGVjU3RhdGUgKmV4ZWMs
IEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgUm9v
dE9iamVjdCAqb3JpZ2luLCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KQogewogICAgIHZvaWQg
KnJlc3VsdCA9IDA7CiAgICAgCiAgICAgaWYgKHZhbHVlLnR5cGUoKSAhPSBPYmplY3RUeXBlKQot
CXJldHVybiAwOworICAgIHJldHVybiAwOwogCiAgICAgT2JqZWN0SW1wICppbXAgPSBzdGF0aWNf
Y2FzdDxPYmplY3RJbXAqPih2YWx1ZS5pbXAoKSk7CiAgICAgCiAgICAgc3dpdGNoIChsYW5ndWFn
ZSkgewotCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewotCSAgICByZXN1bHQg
PSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAodmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Ci0J
ICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3RhbmNlOjpDTGFuZ3VhZ2U6IHsKLQkgICAgcmVzdWx0
ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKDAsIGltcCwgb3JpZ2luLCBjdXJyZW50KTsKLQkg
ICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICAvLyBG
SVhNRTogIGZhY3RvciBjcmVhdGlvbiBvZiBqbmlfanNvYmplY3RzLCBhbHNvIHJlbW92ZSB1bm5l
Y2Vzc2FyeSB0aHJlYWQKLQkgICAgLy8gaW52b2NhdGlvbiBjb2RlLgotCSAgICBicmVhazsKLQl9
Ci0JZGVmYXVsdDoKLQkgICAgYnJlYWs7CisgICAgY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xh
bmd1YWdlOiB7CisgICAgICAgIC8vcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFsdWUg
KHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOworICAgICAgICBicmVhazsKICAgICB9CisgICAgY2Fz
ZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAgICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2Ny
aXB0T2JqZWN0ICgwLCBpbXAsIG9yaWdpbiwgY3VycmVudCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy8gRklYTUU6
ICBmYWN0b3IgY3JlYXRpb24gb2Ygam5pX2pzb2JqZWN0cywgYWxzbyByZW1vdmUgdW5uZWNlc3Nh
cnkgdGhyZWFkCisgICAgICAgIC8vIGludm9jYXRpb24gY29kZS4KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2luY2x1ZGUgImxpc3QuaCIKICNpbmNsdWRlICJv
YmplY3QuaCIKICNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImhhc2htYXAuaCIKIAogbmFt
ZXNwYWNlIEtKUyAKIHsKQEAgLTEzNiw5ICsxMzcsOSBAQA0KICAgICBzdGF0aWMgdm9pZCBzZXRE
aWRFeGVjdXRlRnVuY3Rpb24gKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKICAgICBz
dGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbiAoKTsKICAg
ICAKLSAgICBzdGF0aWMgSW5zdGFuY2UgKmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNl
IChCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBS
b290T2JqZWN0ICpyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFu
Y2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNv
bnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgUm9vdE9i
amVjdCAqY3VycmVudCk7Ci0gICAgc3RhdGljIE9iamVjdCBjcmVhdGVSdW50aW1lT2JqZWN0IChC
aW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290
T2JqZWN0ICpyID0gMCk7CisgICAgSU1QT1JUX0Mgc3RhdGljIEluc3RhbmNlICpjcmVhdGVCaW5k
aW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpu
YXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOworICAgIElNUE9SVF9DIHN0
YXRpYyB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhl
YywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBjb25zdCBPYmplY3QgJnZhbHVlLCBjb25zdCBS
b290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QgKmN1cnJlbnQpOworICAgIElNUE9S
VF9DIHN0YXRpYyBPYmplY3QgY3JlYXRlUnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxh
bmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOwog
CiAgICAgSW5zdGFuY2UgKCkgOiBfZXhlY3V0aW9uQ29udGV4dCgwKSB7fTsKICAgICAKQEAgLTE4
Nyw2ICsxODgsOSBAQA0KIAogY29uc3QgY2hhciAqc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25z
dCBLSlM6Okxpc3QgJmFMaXN0KTsKIAordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpS
ZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOwordHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVU3RyaW5nOjpSZXA+LCBGaWVsZCo+IEZpZWxkTWFwOwogfSAvLyBuYW1lc3BhY2UgQmluZGlu
Z3MKIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9y
dW50aW1lX29iamVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0LDcgKzU0
LDcgQEANCiAgICAgfQogfQogCi1SdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKEJp
bmRpbmdzOjpJbnN0YW5jZSAqaSwgYm9vbCBvaSkgOiBPYmplY3RJbXAgKChPYmplY3RJbXAgKikw
KQorRVhQT1JUX0MgUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChCaW5kaW5nczo6
SW5zdGFuY2UgKmksIGJvb2wgb2kpIDogT2JqZWN0SW1wICgoT2JqZWN0SW1wICopMCkKIHsKICAg
ICBvd25zSW5zdGFuY2UgPSBvaTsKICAgICBpbnN0YW5jZSA9IGk7CkBAIC04Myw3ICs4Myw3IEBA
DQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdCAobmV3IFJ1bnRpbWVNZXRob2RJbXAo
ZXhlYywgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQkKKyAgICAKICAgICAgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkg
ewogICAgICAgICAgICAgLy8gVHJ5IGEgZmFsbGJhY2sgb2JqZWN0LgogICAgICAgICAgICAgcmVz
dWx0ID0gYUNsYXNzLT5mYWxsYmFja09iamVjdCAoZXhlYywgaW5zdGFuY2UsIHByb3BlcnR5TmFt
ZSk7CkBAIC0xMDcsMTAgKzEwNywxMCBAQA0KICAgICAgICAgZ2V0SW50ZXJuYWxJbnN0YW5jZSgp
LT5zZXRWYWx1ZU9mRmllbGQoZXhlYywgYUZpZWxkLCB2YWx1ZSk7CiAgICAgfQogICAgIGVsc2Ug
ewotCWlmIChnZXRJbnRlcm5hbEluc3RhbmNlKCktPnN1cHBvcnRzU2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKCkpewotCSAgICBnZXRJbnRlcm5hbEluc3RhbmNlKCktPnNldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLQl9CisgICAgaWYgKGdldEludGVy
bmFsSW5zdGFuY2UoKS0+c3VwcG9ydHNTZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoKSl7CisgICAg
ICAgIGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0KKyAgICB9CiAKICAgICBpbnN0YW5jZS0+ZW5k
KCk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEANCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogCiAgICAg
aWYgKGFGaWVsZCkKLQlyZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9v
YmplY3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVf
b2JqZWN0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1
bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNyw3ICszNyw3IEBADQogICAgIAog
ICAgIH5SdW50aW1lT2JqZWN0SW1wKCk7CiAgICAgCi0gICAgUnVudGltZU9iamVjdEltcChCaW5k
aW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3RhbmNlID0gdHJ1ZSk7CisgICAgSU1QT1JU
X0MgUnVudGltZU9iamVjdEltcChCaW5kaW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3Rh
bmNlID0gdHJ1ZSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8gKmNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CiAKQEAgLTQ5LDcgKzQ5LDcgQEANCiAgICAgdmlydHVhbCBib29sIGNh
blB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLAot
CQkJICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC0yMCw5ICsyMCw5IEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1ZGUgPGpuaV9q
c29iamVjdC5oPgorLy8jaW5jbHVkZSA8am5pX2pzb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZV9yb290Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CkBAIC00Miw2ICs0Miw3IEBADQogLy8g
MSBPUiB0aGUgYXBwbGV0IGlzIHNodXRkb3duIHdlIGRlcmVmIHRoZSBKYXZhU2NyaXB0IGluc3Rh
bmNlLiAgQXBwbGV0IGluc3RhbmNlcwogLy8gYXJlIHJlcHJlc2VudGVkIGJ5IGEgamxvbmcuCiAK
Ky8qCiBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzQnlSb290RGljdGlv
bmFyeSA9IDA7CiAKIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGdldFJlZmVyZW5jZXNC
eVJvb3REaWN0aW9uYXJ5KCkKQEAgLTU1LDcgKzU2LDcgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkoKTsK
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gMDsKLSAg
ICAKKwogICAgIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKHJlZnNCeVJvb3QsIChjb25zdCB2b2lkICopcm9vdCk7CiAg
ICAgaWYgKCFyZWZlcmVuY2VzRGljdGlvbmFyeSkgewogICAgICAgICByZWZlcmVuY2VzRGljdGlv
bmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwgTlVMTCk7CkBA
IC02NSw3ICs2Niw3IEBADQogICAgIHJldHVybiByZWZlcmVuY2VzRGljdGlvbmFyeTsKIH0KIAot
Ly8gU2NhbiBhbGwgdGhlIGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9vdHMgdG8gc2VlIGlmIGFu
eSBoYXZlIGEgCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFyeSBmb3IgYWxsIHRoZSByb290cyB0
byBzZWUgaWYgYW55IGhhdmUgYQogLy8gcmVmZXJlbmNlIHRvIHRoZSBpbXAsIGFuZCBpZiBzbywg
cmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CiAvLyBkaWN0aW9uYXJ5LgogLy8gRklYTUU6ICBU
aGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxl
dHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKQEAgLTc0LDExICs3NSwxMSBAQA0KIHsKICAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290
RGljdGlvbmFyeSAoKTsKICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZvdW5kRGljdGlvbmFy
eSA9IDA7Ci0gICAgCisKICAgICBpZiAocmVmc0J5Um9vdCkgewogICAgICAgICBjb25zdCB2b2lk
ICoqYWxsVmFsdWVzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisK
ICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAg
ICAgYWxsVmFsdWVzID0gKGNvbnN0IHZvaWQgKiopbWFsbG9jIChzaXplb2Yodm9pZCAqKSAqIGNv
dW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyAocmVmc0J5Um9vdCwg
TlVMTCwgYWxsVmFsdWVzKTsKQEAgLTg5LDcgKzkwLDcgQEANCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAo
KHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KICAgICByZXR1cm4gZm91bmREaWN0aW9uYXJ5OwpA
QCAtMTAxLDEyICsxMDIsMTIgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZz
QnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgKCk7CiAgICAgY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKnJvb3RPYmplY3QgPSAwOwotICAgIAorCiAgICAgaWYgKHJlZnNC
eVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFsbFZhbHVlcyA9IDA7CiAgICAgICAgIGNv
bnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAg
ICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsK
ICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikg
KiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6
ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xMTgsNyArMTE5LDcgQEANCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMp
OwogICAgIH0KQEAgLTEyOSwxMiArMTMwLDEyIEBADQogewogICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3REaWN0aW9uYXJ5ICgpOwogICAg
IGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICphUm9vdE9iamVjdCA9IDAsICpyZXN1bHQgPSAw
OwotICAgIAorCiAgICAgaWYgKHJlZnNCeVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFs
bFZhbHVlcyA9IDA7CiAgICAgICAgIGNvbnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAg
Q0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25h
cnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoq
KW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChj
b25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xNDYsNyAr
MTQ3LDcgQEANCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KQEAgLTE1Nyw3ICsxNTgsNyBAQA0KIHsK
ICAgICBpZiAocm9vdCkgewogICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5j
ZXNEaWN0aW9uYXJ5ID0gZ2V0UmVmZXJlbmNlc0RpY3Rpb25hcnkgKHJvb3QpOwotICAgICAgICAK
KwogICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUmVmZXJlbmNlcyA9ICh1bnNpZ25lZCBpbnQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCBpbXApOwogICAgICAgICBp
ZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7CiAjaWYgIVVTRV9DT05TRVJWQVRJVkVfR0MKQEAgLTE2
Niw3ICsxNjcsNyBAQA0KICNpZiBVU0VfQ09OU0VSVkFUSVZFX0dDIHwgVEVTVF9DT05TRVJWQVRJ
VkVfR0MKICAgICAgICAgICAgIEludGVycHJldGVyTG9jayBsb2NrOwogICAgICAgICAgICAgZ2NQ
cm90ZWN0KGltcCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlIChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wLCAgKGNvbnN0IHZvaWQgKikxKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE3OCw4ICsxNzksOCBAQA0KIHZvaWQgS0pTOjpC
aW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJbXAgKmltcCkKIHsKICAgICBp
ZiAoIWltcCkKLQlyZXR1cm47Ci0JCisgICAgcmV0dXJuOworCiAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5IChp
bXApOwogCiAgICAgaWYgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5KSB7CkBAIC0xOTEsNyArMTkyLDcg
QEANCiAjaWYgVVNFX0NPTlNFUlZBVElWRV9HQyB8IFRFU1RfQ09OU0VSVkFUSVZFX0dDCiAgICAg
ICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgICAgIGdjVW5wcm90ZWN0KGlt
cCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVl
IChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsK
QEAgLTIyMywxMCArMjI0LDEwIEBADQogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUphdmFTY3JpcHRB
Y2Nlc3NMb2NrKCkKIHsKICAgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7Ci0gICAgCisKICAg
ICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZhdHRyKTsKICAgICBwdGhyZWFkX211dGV4YXR0cl9z
ZXR0eXBlICgmYXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUpOwotICAgIAorCiAgICAgcHRo
cmVhZF9tdXRleF9pbml0KCZqYXZhU2NyaXB0QWNjZXNzTG9jaywgJmF0dHIpOwogfQogCkBAIC0y
NjAsNyArMjYxLDcgQEANCiAgICAgLy8gY2FsbCBjb21wbGV0ZXMuCiAgICAgLy8KICAgICAvLyBG
SVhNRTogIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaXNzdWUuICBDcmVh
dGluZyBhbmQKLSAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNlcyBpcyBleHBlbnNpdmUuICBX
ZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZSAKKyAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNl
cyBpcyBleHBlbnNpdmUuICBXZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZQogICAgIC8vIHBlciB0
aHJlYWQsIGFzIG5lZWRlZCwgaW5zdGVhZC4KICAgICBjb250ZXh0LT5vcmlnaW5hdGluZ0xvb3Ag
PSBjdXJyZW50UnVuTG9vcDsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHNvdXJjZUNvbnRl
eHQgPSB7MCwgY29udGV4dCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgY29tcGxldGVkSmF2YVNjcmlwdEFjY2Vzc307CkBAIC0yNzIsNyArMjczLDcgQEANCiAgICAg
aWYgKENGUnVuTG9vcElzV2FpdGluZyhSb290T2JqZWN0OjpydW5Mb29wKCkpKSB7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChSb290T2JqZWN0OjpydW5Mb29wKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIC8vIFdhaXQgdW50aWwgdGhlIEphdmFTY3JpcHQgYWNjZXNzIHRocmVhZCBpcyBkb25lLgog
ICAgIENGUnVuTG9vcFJ1biAoKTsKIApAQCAtMjg2LDE1ICsyODcsMTUgQEANCiBzdGF0aWMgdm9p
ZCBwZXJmb3JtSmF2YVNjcmlwdEFjY2Vzcyh2b2lkICppKQogewogICAgIGFzc2VydCAoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpID09IFJvb3RPYmplY3Q6OnJ1bkxvb3AoKSk7Ci0gICAgCisKICAgICAv
LyBEaXNwYXRjaCBKYXZhU2NyaXB0IGNhbGxzIGhlcmUuCiAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBzb3VyY2VDb250ZXh0OwogICAgIENGUnVuTG9vcFNvdXJjZUdldENvbnRleHQgKGNvbXBs
ZXRpb25Tb3VyY2UsICZzb3VyY2VDb250ZXh0KTsKLSAgICBKU09iamVjdENhbGxDb250ZXh0ICpj
YWxsQ29udGV4dCA9IChKU09iamVjdENhbGxDb250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOyAg
ICAKKyAgICBKU09iamVjdENhbGxDb250ZXh0ICpjYWxsQ29udGV4dCA9IChKU09iamVjdENhbGxD
b250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOwogICAgIENGUnVuTG9vcFJlZiBvcmlnaW5hdGlu
Z0xvb3AgPSBjYWxsQ29udGV4dC0+b3JpZ2luYXRpbmdMb29wOwogCiAgICAgSlNPYmplY3Q6Omlu
dm9rZSAoY2FsbENvbnRleHQpOwotICAgIAorCiAgICAgLy8gU2lnbmFsIHRoZSBvcmlnaW5hdGlu
ZyB0aHJlYWQgdGhhdCB3ZSdyZSBkb25lLgogICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCAoY29t
cGxldGlvblNvdXJjZSk7CiAgICAgaWYgKENGUnVuTG9vcElzV2FpdGluZyhvcmlnaW5hdGluZ0xv
b3ApKSB7CkBAIC0zMTIsOCArMzEzLDggQEANCiAgICAgYXNzZXJ0IChfZmluZFJvb3RPYmplY3RG
b3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciA9PSAwKTsKIAogICAgIF9maW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyID0gYUZ1bmM7Ci0gICAgCi0gICAgLy8gQXNzdW1lIHRo
YXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJdCdsbCBtb3N0IAorCisg
ICAgLy8gQXNzdW1lIHRoYXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJ
dCdsbCBtb3N0CiAgICAgLy8gbGlrZWx5IChhbHdheXM/KSBiZSB0aGUgbWFpbiBsb29wLgogICAg
IF9ydW5Mb29wID0gKENGUnVuTG9vcFJlZilDRlJldGFpbiAoQ0ZSdW5Mb29wR2V0Q3VycmVudCAo
KSk7CiAKQEAgLTMyNCwxNSArMzI1LDE3IEBADQogICAgIENGUnVuTG9vcEFkZFNvdXJjZShCaW5k
aW5nczo6Um9vdE9iamVjdDo6X3J1bkxvb3AsIEJpbmRpbmdzOjpSb290T2JqZWN0OjpfcGVyZm9y
bUphdmFTY3JpcHRTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKKyovCiAvLyBN
dXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsZXQgaXMgc2h1dGRvd24uCitFWFBPUlRfQwogdm9p
ZCBSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpCiB7Ci0gICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGdldFJlZmVyZW5jZXNEaWN0
aW9uYXJ5ICh0aGlzKTsKLSAgICAKKy8qICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJl
bmNlc0RpY3Rpb25hcnkgPSBnZXRSZWZlcmVuY2VzRGljdGlvbmFyeSAodGhpcyk7CisKICAgICBp
ZiAocmVmZXJlbmNlc0RpY3Rpb25hcnkpIHsKICAgICAgICAgdm9pZCAqKmFsbEltcHMgPSAwOwog
ICAgICAgICBDRkluZGV4IGNvdW50LCBpOwotICAgICAgICAKKwogICAgICAgICBjb3VudCA9IENG
RGljdGlvbmFyeUdldENvdW50KHJlZmVyZW5jZXNEaWN0aW9uYXJ5KTsKICAgICAgICAgYWxsSW1w
cyA9ICh2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCAoY29uc3Qg
dm9pZCAqKilhbGxJbXBzLCBOVUxMKTsKQEAgLTM1NCwxMSArMzU3LDEyNyBAQA0KICAgICAgICAg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERp
Y3Rpb25hcnkoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUgKHJlZnNCeVJvb3Qs
IChjb25zdCB2b2lkICopdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0qLworfQor
CisKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCosIFJlZmVyZW5j
ZXNTZXQqPiBSZWZlcmVuY2VzQnlSb290TWFwOworCitzdGF0aWMgUmVmZXJlbmNlc0J5Um9vdE1h
cCogZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCgpCit7CisgICAgc3RhdGljIFJlZmVyZW5jZXNCeVJv
b3RNYXAqIHJlZmVyZW5jZXNCeVJvb3RNYXAgPSAwOworCisgICAgaWYgKCFyZWZlcmVuY2VzQnlS
b290TWFwKQorICAgICAgICByZWZlcmVuY2VzQnlSb290TWFwID0gbmV3IFJlZmVyZW5jZXNCeVJv
b3RNYXA7CisKKyAgICByZXR1cm4gcmVmZXJlbmNlc0J5Um9vdE1hcDsKK30KKworc3RhdGljIFJl
ZmVyZW5jZXNTZXQqIGdldFJlZmVyZW5jZXNTZXQoY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3QpCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdldFJlZmVy
ZW5jZXNCeVJvb3RNYXAoKTsKKyAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VzU2V0ID0gMDsK
KworICAgIHJlZmVyZW5jZXNTZXQgPSByZWZzQnlSb290LT5nZXQocm9vdCk7CisgICAgaWYgKCFy
ZWZlcmVuY2VzU2V0KSB7CisgICAgICAgIHJlZmVyZW5jZXNTZXQgID0gbmV3IFJlZmVyZW5jZXNT
ZXQ7CisgICAgICAgIHJlZnNCeVJvb3QtPmFkZChyb290LCByZWZlcmVuY2VzU2V0KTsKICAgICB9
CisgICAgcmV0dXJuIHJlZmVyZW5jZXNTZXQ7CiB9CiAKLXZvaWQgUm9vdE9iamVjdDo6c2V0SW50
ZXJwcmV0ZXIgKEtKUzo6SW50ZXJwcmV0ZXIgKmkpCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFy
eSBmb3IgYWxsIHRoZSByb290cyB0byBzZWUgaWYgYW55IGhhdmUgYQorLy8gcmVmZXJlbmNlIHRv
IHRoZSBpbXAsIGFuZCBpZiBzbywgcmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CisvLyBkaWN0
aW9uYXJ5LgorLy8gRklYTUU6ICBUaGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRs
ZW5lY2sgd2l0aCBtYW55IGFwcGxldHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGlt
cCB0byByb290IGRpY3Rpb25hcnkuCitSZWZlcmVuY2VzU2V0KiBLSlM6OkJpbmRpbmdzOjpmaW5k
UmVmZXJlbmNlU2V0KE9iamVjdEltcCAqaW1wKQogeworICAgIFJlZmVyZW5jZXNCeVJvb3RNYXAq
IHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290TWFwICgpOworICAgIGlmIChyZWZzQnlS
b290KSB7CisgICAgICAgIFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHJlZnNCeVJvb3QtPmVuZCgpOworICAgICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBSZWZlcmVuY2VzU2V0KiBzZXQgPSBpdC0+c2Vjb25kOworCisgICAgICAg
ICAgICBpZiAoc2V0LT5jb250YWlucyhpbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBzZXQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gRklYTUU6ICBUaGlz
IGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxldHMu
ICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGltcCB0byByb290IGRpY3Rpb25hcnkuCitj
b25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nczo6cm9vdEZvckltcCAoT2Jq
ZWN0SW1wICppbXApCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdl
dFJlZmVyZW5jZXNCeVJvb3RNYXAgKCk7CisgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3RPYmplY3QgPSAwOworCisgICAgaWYgKHJlZnNCeVJvb3QpIHsKKyAgICAgICAgUmVmZXJl
bmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVmc0J5Um9vdC0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoUmVmZXJlbmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWZz
QnlSb290LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlZmVyZW5j
ZXNTZXQqIHNldCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBpZiAoc2V0LT5jb250YWlucyhp
bXApKSB7CisgICAgICAgICAgICAgICAgcm9vdE9iamVjdCA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiByb290T2JqZWN0OworfQorCitjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpC
aW5kaW5nczo6cm9vdEZvckludGVycHJldGVyIChLSlM6OkludGVycHJldGVyICppbnRlcnByZXRl
cikKK3sKKyAgICBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNl
c0J5Um9vdE1hcCAoKTsKKworICAgIGlmIChyZWZzQnlSb290KSB7CisgICAgICAgIFJlZmVyZW5j
ZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlZnNCeVJvb3QtPmVuZCgpOworICAg
ICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5
Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjb25zdCBCaW5k
aW5nczo6Um9vdE9iamVjdCogYVJvb3RPYmplY3QgPSBpdC0+Zmlyc3Q7CisKKyAgICAgICAgICAg
IGlmIChhUm9vdE9iamVjdC0+aW50ZXJwcmV0ZXIoKSA9PSBpbnRlcnByZXRlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYVJvb3RPYmplY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVuY2UgKGNvbnN0
IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCkKK3sKKyAgICBpZiAo
cm9vdCkgeworICAgICAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VNYXAgPSBnZXRSZWZlcmVu
Y2VzU2V0IChyb290KTsKKworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlTWFwLT5jb3VudChpbXApOworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7Cisv
LyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NQcm90ZWN0KGltcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVmZXJlbmNlTWFwLT5hZGQoaW1wKTsKKyAgICB9Cit9CisKK0VY
UE9SVF9DIHZvaWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJ
bXAgKmltcCkKK3sKKyAgICBpZiAoIWltcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmZXJl
bmNlc1NldCAqcmVmZXJlbmNlc1NldCA9IGZpbmRSZWZlcmVuY2VTZXQoaW1wKTsKKyAgICBpZiAo
cmVmZXJlbmNlc1NldCkgeworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlc1NldC0+Y291bnQoaW1wKTsKKworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAxKSB7
CisvLyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NVbnByb3RlY3QoaW1w
KTsKKyAgICAgICAgfQorICAgICAgICByZWZlcmVuY2VzU2V0LT5yZW1vdmUoaW1wKTsKKyAgICB9
Cit9CisKK0VYUE9SVF9DIHZvaWQgUm9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIgKEtKUzo6SW50
ZXJwcmV0ZXIgKmkpCit7CiAgICAgX2ludGVycHJldGVyID0gaTsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Nyw4ICsyNyw5IEBADQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9vYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9qbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL2puaV9qc29i
amVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDxI
YXNoQ291bnRlZFNldC5oPgogCiBuYW1lc3BhY2UgS0pTIHsKIApAQCAtMzYsOSArMzcsMTEgQEAN
CiAKIGNsYXNzIFJvb3RPYmplY3Q7CiAKK3R5cGVkZWYgSGFzaENvdW50ZWRTZXQ8T2JqZWN0SW1w
Kj4gUmVmZXJlbmNlc1NldDsKIHR5cGVkZWYgUm9vdE9iamVjdCAqKCpGaW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyKSh2b2lkICopOwogCi1leHRlcm4gQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJbXAgKmltcCk7CisvL2V4
dGVybiBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5KE9iamVj
dEltcCAqaW1wKTsKK2V4dGVybiBSZWZlcmVuY2VzU2V0KiBmaW5kUmVmZXJlbmNlU2V0KE9iamVj
dEltcCAqaW1wKTsKIGV4dGVybiBjb25zdCBSb290T2JqZWN0ICpyb290Rm9ySW1wIChPYmplY3RJ
bXAgKmltcCk7CiBleHRlcm4gY29uc3QgUm9vdE9iamVjdCAqcm9vdEZvckludGVycHJldGVyIChJ
bnRlcnByZXRlciAqaW50ZXJwcmV0ZXIpOwogZXh0ZXJuIHZvaWQgYWRkTmF0aXZlUmVmZXJlbmNl
IChjb25zdCBSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCk7CkBAIC03NCwxMCArNzcs
MTAgQEANCiAgICAgCiAgICAgT2JqZWN0SW1wICpyb290T2JqZWN0SW1wKCkgY29uc3QgeyByZXR1
cm4gX2ltcDsgfQogICAgIAotICAgIHZvaWQgc2V0SW50ZXJwcmV0ZXIgKEludGVycHJldGVyICpp
KTsKKyAgICBJTVBPUlRfQyB2b2lkIHNldEludGVycHJldGVyIChJbnRlcnByZXRlciAqaSk7CiAg
ICAgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyKCkgY29uc3QgeyByZXR1cm4gX2ludGVycHJldGVy
OyB9CiAKLSAgICB2b2lkIHJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CisgICAgSU1QT1JU
X0Mgdm9pZCByZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpOwogCiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSB0aHJlYWQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWNjZXNzIEphdmFT
Y3JpcHQuCkBAIC04NiwxMSArODksMTEgQEANCiAgICAgICAgIHJldHVybiBfZmluZFJvb3RPYmpl
Y3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0cjsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENG
UnVuTG9vcFJlZiBydW5Mb29wKCkgeyByZXR1cm4gX3J1bkxvb3A7IH0KLSAgICBzdGF0aWMgQ0ZS
dW5Mb29wU291cmNlUmVmIHBlcmZvcm1KYXZhU2NyaXB0U291cmNlKCkgeyByZXR1cm4gX3BlcmZv
cm1KYXZhU2NyaXB0U291cmNlOyB9CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3Ao
KSB7IHJldHVybiBfcnVuTG9vcDsgfQorICAgIC8vc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBw
ZXJmb3JtSmF2YVNjcmlwdFNvdXJjZSgpIHsgcmV0dXJuIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJj
ZTsgfQorCisgICAgLy9zdGF0aWMgdm9pZCBkaXNwYXRjaFRvSmF2YVNjcmlwdFRocmVhZChKU09i
amVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRj
aFRvSmF2YVNjcmlwdFRocmVhZChKU09iamVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKLSAgICAK
ICAgICBjb25zdCB2b2lkICpuYXRpdmVIYW5kbGUoKSBjb25zdCB7IHJldHVybiBfbmF0aXZlSGFu
ZGxlOyB9CiAKIHByaXZhdGU6CkBAIC05OSw4ICsxMDIsOCBAQA0KICAgICBJbnRlcnByZXRlciAq
X2ludGVycHJldGVyOwogCiAgICAgc3RhdGljIEZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxl
RnVuY3Rpb25QdHIgX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25QdHI7Ci0g
ICAgc3RhdGljIENGUnVuTG9vcFJlZiBfcnVuTG9vcDsKLSAgICBzdGF0aWMgQ0ZSdW5Mb29wU291
cmNlUmVmIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJjZTsKKyAgICAvL3N0YXRpYyBDRlJ1bkxvb3BS
ZWYgX3J1bkxvb3A7CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIF9wZXJmb3JtSmF2
YVNjcmlwdFNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy91dGlsaXR5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvdXRpbGl0eQkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy91dGlsaXR5CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1NDkgQEANCisvLyBDb3B5cmln
aHQgKEMpIDIwMDEsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisv
LyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGli
cmFyeSBpcyBmcmVlDQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkgaXQgdW5kZXIgdGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIg
dmVyc2lvbi4NCisNCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs
b25nDQorLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisv
LyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBv
ZiBhIGZyZWUgc29mdHdhcmUNCisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVj
aWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVz
ZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBp
bGUNCisvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNl
IGFuIGV4ZWN1dGFibGUsIHRoaXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0
aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisv
LyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1p
Z2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQor
DQorLyoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBD
b21wYW55DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0
LVBhY2thcmQgQ29tcGFueSBtYWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUg
c3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlz
IHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQor
ICoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NiwxOTk3DQorICogU2lsaWNvbiBHcmFwaGlj
cyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRz
IGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQg
ZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFy
IGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3Vt
ZW50YXRpb24uICBTaWxpY29uIEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25z
IGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJw
b3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3
YXJyYW50eS4NCisgKi8NCisNCisvLyBoYWNrZWQgdG9nZXRoZXIgZnJvbSB2YXJpb3VzIHN0bCBw
YXJ0IHRvIG1ha2UgSlNDLCBXQyBjb21waWxlDQorDQorI2lmbmRlZiBfVVRJTElUWV9IDQorI2Rl
ZmluZSBfVVRJTElUWV9IIDENCisNCisjaW5jbHVkZSA8aXRlcmF0b3I+DQorDQorI2RlZmluZSBf
X2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoYSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9mdW5jdGlv
bl9yZXF1aXJlcyhhKQ0KKyNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlkX3JhbmdlKGEs
YikNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKGEsYikNCisNCituYW1lc3BhY2Ug
c3RkDQorew0KKyAgLy8vIHBhaXIgaG9sZHMgdHdvIG9iamVjdHMgb2YgYXJiaXRyYXJ5IHR5cGUu
DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgc3RydWN0IHBhaXINCisg
ICAgew0KKyAgICAgIHR5cGVkZWYgX1QxIGZpcnN0X3R5cGU7ICAgIC8vLzwgIEBjIGZpcnN0X3R5
cGUgaXMgdGhlIGZpcnN0IGJvdW5kIHR5cGUNCisgICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlw
ZTsgICAvLy88ICBAYyBzZWNvbmRfdHlwZSBpcyB0aGUgc2Vjb25kIGJvdW5kIHR5cGUNCisNCisg
ICAgICBfVDEgZmlyc3Q7ICAgICAgICAgICAgICAgICAvLy88IEBjIGZpcnN0IGlzIGEgY29weSBv
ZiB0aGUgZmlyc3Qgb2JqZWN0DQorICAgICAgX1QyIHNlY29uZDsgICAgICAgICAgICAgICAgLy8v
PCBAYyBzZWNvbmQgaXMgYSBjb3B5IG9mIHRoZSBzZWNvbmQgb2JqZWN0DQorDQorICAgICAgLy8g
X0dMSUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUw0KKyAgICAgIC8vIDI2NS4gIHN0ZDo6cGFpcjo6
cGFpcigpIGVmZmVjdHMgb3Zlcmx5IHJlc3RyaWN0aXZlDQorICAgICAgLyoqIFRoZSBkZWZhdWx0
IGNvbnN0cnVjdG9yIGNyZWF0ZXMgQGMgZmlyc3QgYW5kIEBjIHNlY29uZCB1c2luZyB0aGVpcg0K
KyAgICAgICAqICByZXNwZWN0aXZlIGRlZmF1bHQgY29uc3RydWN0b3JzLiAgKi8NCisgICAgICBw
YWlyKCkNCisgICAgICA6IGZpcnN0KCksIHNlY29uZCgpIHsgfQ0KKw0KKyAgICAgIC8qKiBUd28g
b2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGEgQGMgcGFpciBjb25zdHJ1Y3RvciB0byBiZSBjb3Bp
ZWQuICAqLw0KKyAgICAgIHBhaXIoY29uc3QgX1QxJiBfX2EsIGNvbnN0IF9UMiYgX19iKQ0KKyAg
ICAgIDogZmlyc3QoX19hKSwgc2Vjb25kKF9fYikgeyB9DQorDQorICAgICAgLyoqIFRoZXJlIGlz
IGFsc28gYSB0ZW1wbGF0ZWQgY29weSBjdG9yIGZvciB0aGUgQGMgcGFpciBjbGFzcyBpdHNlbGYu
ICAqLw0KKyAgICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyPg0KKyAgICAgICAgcGFp
cihjb25zdCBwYWlyPF9VMSwgX1UyPiYgX19wKQ0KKwk6IGZpcnN0KF9fcC5maXJzdCksIHNlY29u
ZChfX3Auc2Vjb25kKSB7IH0NCisgICAgfTsNCisNCisgIC8vLyBUd28gcGFpcnMgb2YgdGhlIHNh
bWUgdHlwZSBhcmUgZXF1YWwgaWZmIHRoZWlyIG1lbWJlcnMgYXJlIGVxdWFsLg0KKyAgdGVtcGxh
dGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQorICAgIGlubGluZSBib29sDQorICAgIG9wZXJhdG9y
PT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkN
CisgICAgeyByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9f
eS5zZWNvbmQ7IH0NCisNCisgIC8vLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli
c3RkYysrLzIwX3V0aWwvaG93dG8uaHRtbCNwYWlybHQ+DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEs
IGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wNCisgICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
IF9feC5maXJzdCA8IF9feS5maXJzdA0KKwkgICAgIHx8ICghKF9feS5maXJzdCA8IF9feC5maXJz
dCkgJiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyB9DQorDQorICAvLy8gVXNlcyBAYyBvcGVy
YXRvcj09IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3Mg
X1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1QxLCBf
VDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194
ID09IF9feSk7IH0NCisNCisgIC8vLyBVc2VzIEBjIG9wZXJhdG9yPCB0byBmaW5kIHRoZSByZXN1
bHQuDQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wN
CisgICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1Qx
LCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuIF9feSA8IF9feDsgfQ0KKw0KKyAgLy8vIFVzZXMg
QGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvcjw9KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
ICEoX195IDwgX194KTsgfQ0KKw0KKyAgLy8vIFVzZXMgQGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhl
IHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUg
Ym9vbA0KKyAgICBvcGVyYXRvcj49KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBh
aXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQ0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIEEgY29udmVuaWVuY2Ugd3JhcHBlciBmb3IgY3JlYXRpbmcgYSBw
YWlyIGZyb20gdHdvIG9iamVjdHMuDQorICAgKiAgQHBhcmFtICB4ICBUaGUgZmlyc3Qgb2JqZWN0
Lg0KKyAgICogIEBwYXJhbSAgeSAgVGhlIHNlY29uZCBvYmplY3QuDQorICAgKiAgQHJldHVybiAg
IEEgbmV3bHktY29uc3RydWN0ZWQgcGFpcjw+IG9iamVjdCBvZiB0aGUgYXBwcm9wcmlhdGUgdHlw
ZS4NCisgICAqDQorICAgKiAgVGhlIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgdGhlIG9iamVjdHMg
YmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS10by1jb25zdCwNCisgICAqICBidXQgTFdHIGlzc3VlICMx
ODEgc2F5cyB0aGV5IHNob3VsZCBiZSBwYXNzZWQgYnkgY29uc3QgdmFsdWUuICBXZSBmb2xsb3cN
CisgICAqICB0aGUgTFdHIGJ5IGRlZmF1bHQuDQorICAgKi8NCisgIC8vIF9HTElCQ1hYX1JFU09M
VkVfTElCX0RFRkVDVFMNCisgIC8vIDE4MS4gIG1ha2VfcGFpcigpIHVuaW50ZW5kZWQgYmVoYXZp
b3INCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgcGFpcjxf
VDEsIF9UMj4NCisgICAgbWFrZV9wYWlyKF9UMSBfX3gsIF9UMiBfX3kpDQorICAgIHsgcmV0dXJu
IHBhaXI8X1QxLCBfVDI+KF9feCwgX195KTsgfQ0KKw0KKw0KKw0KKyAgLy8gaXNfaGVhcCwgYSBw
cmVkaWNhdGUgdGVzdGluZyB3aGV0aGVyIG9yIG5vdCBhIHJhbmdlIGlzDQorICAvLyBhIGhlYXAu
ICBUaGlzIGZ1bmN0aW9uIGlzIGFuIGV4dGVuc2lvbiwgbm90IHBhcnQgb2YgdGhlIEMrKw0KKyAg
Ly8gc3RhbmRhcmQuDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9EaXN0YW5jZT4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX24pDQorICAgIHsNCisgICAgICBfRGlz
dGFuY2UgX19wYXJlbnQgPSAwOw0KKyAgICAgIGZvciAoX0Rpc3RhbmNlIF9fY2hpbGQgPSAxOyBf
X2NoaWxkIDwgX19uOyArK19fY2hpbGQpDQorCXsNCisJICBpZiAoX19maXJzdFtfX3BhcmVudF0g
PCBfX2ZpcnN0W19fY2hpbGRdKQ0KKwkgICAgcmV0dXJuIGZhbHNlOw0KKwkgIGlmICgoX19jaGls
ZCAmIDEpID09IDApDQorCSAgICArK19fcGFyZW50Ow0KKwl9DQorICAgICAgcmV0dXJuIHRydWU7
DQorICAgIH0NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLA0KKyAgICAgICAgICAgdHlwZW5hbWUgX1N0cmljdFdlYWtPcmRl
cmluZz4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
Zmlyc3QsIF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wLA0KKwkgICAgICBfRGlzdGFuY2UgX19u
KQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsNCisgICAgICBmb3IgKF9E
aXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKQ0KKwl7DQorCSAg
aWYgKF9fY29tcChfX2ZpcnN0W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpDQorCSAgICBy
ZXR1cm4gZmFsc2U7DQorCSAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkNCisJICAgICsrX19wYXJl
bnQ7DQorCX0NCisgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKw0KKyAgLyp0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQorICAgIGJvb2wNCisgICAgX19pc19oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0KQ0KKyAgICB7IHJldHVybiBzdGQ6Ol9faXNfaGVhcChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCkpOyB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9TdHJpY3RXZWFrT3JkZXJpbmc+DQorICAgIGJvb2wNCisg
ICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0LA0KKwkgICAgX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApDQorICAg
IHsgcmV0dXJuIHN0ZDo6X19pc19oZWFwKF9fZmlyc3QsIF9fY29tcCwgc3RkOjpkaXN0YW5jZShf
X2ZpcnN0LCBfX2xhc3QpKTsgfSovDQorDQorICAvLyBIZWFwLW1hbmlwdWxhdGlvbiBmdW5jdGlv
bnM6IHB1c2hfaGVhcCwgcG9wX2hlYXAsIG1ha2VfaGVhcCwgc29ydF9oZWFwLg0KKw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2Us
IHR5cGVuYW1lIF9UcD4NCisgICAgdm9pZA0KKyAgICBfX3B1c2hfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwNCisJCV9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9f
dG9wSW5kZXgsIF9UcCBfX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50
ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9f
dG9wSW5kZXggJiYgKihfX2ZpcnN0ICsgX19wYXJlbnQpIDwgX192YWx1ZSkNCisJew0KKwkgICoo
X19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hv
bGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAy
Ow0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAg
fQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQdXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAu
DQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxh
c3QgICBFbmQgb2YgaGVhcCArIGVsZW1lbnQuDQorICAgKiAgQGluZ3JvdXAgaGVhcA0KKyAgICoN
CisgICAqICBUaGlzIG9wZXJhdGlvbiBwdXNoZXMgdGhlIGVsZW1lbnQgYXQgbGFzdC0xIG9udG8g
dGhlIHZhbGlkIGhlYXAgb3ZlciB0aGUNCisgICAqICByYW5nZSBbZmlyc3QsbGFzdC0xKS4gIEFm
dGVyIGNvbXBsZXRpb24sIFtmaXJzdCxsYXN0KSBpcyBhIHZhbGlkIGhlYXAuDQorICAqLw0KKyAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPg0KKyAgICBpbmxpbmUgdm9p
ZA0KKyAgICBwdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QpDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlDQorCSAgX1Zh
bHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VUeXBlOw0KKw0K
KyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9u
X3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVz
KF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4
eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIC8vICAgICAg
X19nbGliY3h4X3JlcXVpcmVzX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSk7DQorDQorICAgICAg
c3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0
KSAtIDEpLA0KKwkJICAgICAgIF9EaXN0YW5jZVR5cGUoMCksIF9WYWx1ZVR5cGUoKihfX2xhc3Qg
LSAxKSkpOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwLA0KKwkgICAgdHlwZW5hbWUg
X0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwNCisJCV9EaXN0YW5jZSBfX3RvcElu
ZGV4LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAgICAgX0Rpc3Rh
bmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hv
bGVJbmRleCA+IF9fdG9wSW5kZXgNCisJICAgICAmJiBfX2NvbXAoKihfX2ZpcnN0ICsgX19wYXJl
bnQpLCBfX3ZhbHVlKSkNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19m
aXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hvbGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFy
ZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19o
b2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQ
dXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAgdXNpbmcgY29tcGFyaXNvbiBmdW5jdG9yLg0KKyAg
ICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAg
RW5kIG9mIGhlYXAgKyBlbGVtZW50Lg0KKyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24g
ZnVuY3Rvci4NCisgICAqICBAaW5ncm91cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3BlcmF0
aW9uIHB1c2hlcyB0aGUgZWxlbWVudCBhdCBsYXN0LTEgb250byB0aGUgdmFsaWQgaGVhcCBvdmVy
IHRoZQ0KKyAgICogIHJhbmdlIFtmaXJzdCxsYXN0LTEpLiAgQWZ0ZXIgY29tcGxldGlvbiwgW2Zp
cnN0LGxhc3QpIGlzIGEgdmFsaWQgaGVhcC4NCisgICAqICBDb21wYXJlIG9wZXJhdGlvbnMgYXJl
IHBlcmZvcm1lZCB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGluZSB2b2lkDQor
ICAgIHB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQor
CSAgX0Rpc3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAg
ICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVy
YXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0IC0gMSwgX19jb21wKTsNCisN
CisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZVR5cGUoKF9fbGFzdCAt
IF9fZmlyc3QpIC0gMSksDQorCQkgICAgICAgX0Rpc3RhbmNlVHlwZSgwKSwgX1ZhbHVlVHlwZSgq
KF9fbGFzdCAtIDEpKSwgX19jb21wKTsNCisgICAgfQ0KKw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsIHR5cGVuYW1lIF9UcD4N
CisgICAgdm9pZA0KKyAgICBfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsDQorCQkgIF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9f
dmFsdWUpDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRleCA9IF9faG9s
ZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4
ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7DQorCSAgaWYg
KCooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQpIDwgKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQg
LSAxKSkpDQorCSAgICBfX3NlY29uZENoaWxkLS07DQorCSAgKihfX2ZpcnN0ICsgX19ob2xlSW5k
ZXgpID0gKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7DQorCSAgX19ob2xlSW5kZXggPSBfX3Nl
Y29uZENoaWxkOw0KKwkgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsN
CisJfQ0KKyAgICAgIGlmIChfX3NlY29uZENoaWxkID09IF9fbGVuKQ0KKwl7DQorCSAgKihfX2Zp
cnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSk7DQor
CSAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsNCisJfQ0KKyAgICAgIHN0ZDo6X19w
dXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUpOw0KKyAg
ICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVu
YW1lIF9UcD4NCisgICAgaW5saW5lIHZvaWQNCisgICAgX19wb3BfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdCwgX1RwIF9fdmFsdWUpDQorICAgIHsNCisg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2UoMCks
IF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSk7DQorICAgIH0NCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgUG9wIGFuIGVsZW1lbnQgb2ZmIGEgaGVhcC4NCisgICAq
ICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVu
ZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhpcyBvcGVy
YXRpb24gcG9wcyB0aGUgdG9wIG9mIHRoZSBoZWFwLiAgVGhlIGVsZW1lbnRzIGZpcnN0IGFuZCBs
YXN0LTENCisgICAqICBhcmUgc3dhcHBlZCBhbmQgW2ZpcnN0LGxhc3QtMSkgaXMgbWFkZSBpbnRv
IGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+DQorICAgIGlubGluZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
dmFsdWVfdHlwZQ0KKwlfVmFsdWVUeXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1l
bnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAg
ICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0
PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2Zp
cnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9f
bGFzdCk7DQorDQorICAgICAgc3RkOjpfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9f
bGFzdCAtIDEsDQorCQkgICAgICBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpKTsNCisgICAgfQ0K
Kw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
RGlzdGFuY2UsDQorCSAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZv
aWQNCisgICAgX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rp
c3RhbmNlIF9faG9sZUluZGV4LA0KKwkJICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlLCBf
Q29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRl
eCA9IF9faG9sZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9f
aG9sZUluZGV4ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7
DQorCSAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwNCisJCSAgICAgKihf
X2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQ0KKwkgICAgX19zZWNvbmRDaGlsZC0tOw0K
KwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQp
Ow0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsNCisJICBfX3NlY29uZENoaWxkID0g
MiAqIChfX3NlY29uZENoaWxkICsgMSk7DQorCX0NCisgICAgICBpZiAoX19zZWNvbmRDaGlsZCA9
PSBfX2xlbikNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCAr
IChfX3NlY29uZENoaWxkIC0gMSkpOw0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZCAt
IDE7DQorCX0NCisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBf
X3RvcEluZGV4LCBfX3ZhbHVlLCBfX2NvbXApOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBh
cmU+DQorICAgIGlubGluZSB2b2lkDQorICAgIF9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsDQorCSAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXAp
DQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpf
X3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBf
RGlzdGFuY2UoMCksIF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSwg
X19jb21wKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQb3AgYW4gZWxlbWVu
dCBvZmYgYSBoZWFwIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZp
cnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0K
KyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAg
QGluZ3JvdXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBwb3BzIHRoZSB0b3Ag
b2YgdGhlIGhlYXAuICBUaGUgZWxlbWVudHMgZmlyc3QgYW5kIGxhc3QtMQ0KKyAgICogIGFyZSBz
d2FwcGVkIGFuZCBbZmlyc3QsbGFzdC0xKSBpcyBtYWRlIGludG8gYSBoZWFwLiAgQ29tcGFyaXNv
bnMgYXJlDQorICAgKiAgbWFkZSB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGlu
ZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LA0KKwkg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkNCisgICAg
ew0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0
aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlk
X3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX2hlYXBf
cHJlZChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7DQorDQorICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQ0KKwlf
VmFsdWVUeXBlOw0KKyAgICAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBf
X2xhc3QgLSAxLA0KKwkJICAgICAgX1ZhbHVlVHlwZSgqKF9fbGFzdCAtIDEpKSwgX19jb21wKTsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBDb25zdHJ1Y3QgYSBoZWFwIG92ZXIg
YSByYW5nZS4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQor
ICAgKiAgVGhpcyBvcGVyYXRpb24gbWFrZXMgdGhlIGVsZW1lbnRzIGluIFtmaXJzdCxsYXN0KSBp
bnRvIGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+DQorICAgIHZvaWQNCisgICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFs
dWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQorCSAgX0Rp
c3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9f
Z2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNv
bmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDxfVmFsdWVUeXBlPikN
CisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsN
CisNCisgICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIpDQorCXJldHVybjsNCisNCisgICAg
ICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsNCisgICAgICBf
RGlzdGFuY2VUeXBlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikgLyAyOw0KKyAgICAgIHdoaWxlICh0
cnVlKQ0KKwl7DQorCSAgc3RkOjpfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xl
biwNCisJCQkgICAgIF9WYWx1ZVR5cGUoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7DQorCSAgaWYg
KF9fcGFyZW50ID09IDApDQorCSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAg
ICB9DQorDQorICAvKioNCisgICAqICBAYnJpZWYgIENvbnN0cnVjdCBhIGhlYXAgb3ZlciBhIHJh
bmdlIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFy
dCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAgQGluZ3JvdXAg
aGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBtYWtlcyB0aGUgZWxlbWVudHMgaW4g
W2ZpcnN0LGxhc3QpIGludG8gYSBoZWFwLg0KKyAgICogIENvbXBhcmlzb25zIGFyZSBtYWRlIHVz
aW5nIGNvbXAuDQorICAqLw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4NCisgICAgaW5saW5lIHZvaWQNCisgICAgbWFrZV9oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LA0KKwkgICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
DQorCSAgX1ZhbHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VU
eXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4
X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwN
CisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVz
X3ZhbGlkX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAgICAgaWYgKF9fbGFzdCAtIF9f
Zmlyc3QgPCAyKQ0KKwlyZXR1cm47DQorDQorICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xl
biA9IF9fbGFzdCAtIF9fZmlyc3Q7DQorICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChf
X2xlbiAtIDIpIC8gMjsNCisgICAgICB3aGlsZSAodHJ1ZSkNCisJew0KKwkgIHN0ZDo6X19hZGp1
c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sDQorCQkJICAgICBfVmFsdWVUeXBlKCoo
X19maXJzdCArIF9fcGFyZW50KSksIF9fY29tcCk7DQorCSAgaWYgKF9fcGFyZW50ID09IDApDQor
CSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAgICB9DQorDQorICAvKioNCisg
ICAqICBAYnJpZWYgIFNvcnQgYSBoZWFwLg0KKyAgICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9m
IGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAgRW5kIG9mIGhlYXAuDQorICAgKiAgQGluZ3Jv
dXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBzb3J0cyB0aGUgdmFsaWQgaGVh
cCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4NCisgICAgdm9pZA0KKyAgICBzb3J0X2hlYXAoX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpDQor
ICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQor
CSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9y
ZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDwNCisJICAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPikNCisgICAgICBf
X2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsNCisgICAgICAv
LyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAg
ICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQ0KKwlzdGQ6OnBvcF9oZWFwKF9fZmlyc3Qs
IF9fbGFzdC0tKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBTb3J0IGEgaGVh
cCB1c2luZyBjb21wYXJpc29uIGZ1bmN0b3IuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQg
b2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAcGFy
YW0gIGNvbXAgICBDb21wYXJpc29uIGZ1bmN0b3IgdG8gdXNlLg0KKyAgICogIEBpbmdyb3VwIGhl
YXANCisgICAqDQorICAgKiAgVGhpcyBvcGVyYXRpb24gc29ydHMgdGhlIHZhbGlkIGhlYXAgaW4g
dGhlIHJhbmdlIFtmaXJzdCxsYXN0KS4NCisgICAqICBDb21wYXJpc29ucyBhcmUgbWFkZSB1c2lu
ZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgc29ydF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LA0KKwkg
ICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVt
ZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21B
Y2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0LCBfX2NvbXAp
Ow0KKw0KKyAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkNCisJc3RkOjpwb3BfaGVh
cChfX2ZpcnN0LCBfX2xhc3QtLSwgX19jb21wKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNl
IHN0ZA0KKw0KKw0KKw0KKyNlbmRpZiANClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODkpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEwOSBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2
YWxsICA8c2V0IEVNQUlMX0FERFJFU1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzICh6YnVqdGFzQGdtYWlsLmNvbSkuCisgICAgICAgIERF
U0M6V2lkZ2V0IE9iamVjdCAmIFNjcmlwdGFibGUgcGx1Z2luIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDA3CisKKyAgICAg
ICAgKiBiaW5kaW5ncy9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChsaXN0RnJvbVZhcmlhbnRB
cmdzKToKKyAgICAgICAgKF9pc1NhZmVTY3JpcHQpOgorICAgICAgICAoX05QTl9DcmVhdGVTY3Jp
cHRPYmplY3QpOgorICAgICAgICAoTlBOX0ludm9rZURlZmF1bHQpOgorICAgICAgICAoTlBOX0lu
dm9rZSk6CisgICAgICAgIChOUE5fRXZhbHVhdGUpOgorICAgICAgICAoTlBOX0dldFByb3BlcnR5
KToKKyAgICAgICAgKE5QTl9TZXRQcm9wZXJ0eSk6CisgICAgICAgIChOUE5fUmVtb3ZlUHJvcGVy
dHkpOgorICAgICAgICAoTlBOX0hhc1Byb3BlcnR5KToKKyAgICAgICAgKE5QTl9IYXNNZXRob2Qp
OgorICAgICAgICAoTlBOX1NldEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvTlBfanNv
YmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoS0pT
OjpCaW5kaW5nczo6Q0NsYXNzOjpDQ2xhc3MpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0Ns
YXNzOjp+Q0NsYXNzKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6Y2xhc3NGb3JJ
c0EpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpuYW1lKToKKyAgICAgICAgKEtK
Uzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEtKUzo6QmluZGlu
Z3M6OkNDbGFzczo6ZmllbGROYW1lZCk6CisgICAgICAgICogYmluZGluZ3MvYy9jX2NsYXNzLmg6
CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6OmNvbnN0cnVjdG9yQXQpOgorICAgICAg
ICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpudW1Db25zdHJ1Y3RvcnMpOgorICAgICAgICAqIGJp
bmRpbmdzL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChDSW5zdGFuY2U6OkNJbnN0YW5jZSk6
CisgICAgICAgIChDSW5zdGFuY2U6On5DSW5zdGFuY2UpOgorICAgICAgICAoQ0luc3RhbmNlOjpv
cGVyYXRvcj0pOgorICAgICAgICAoQ0luc3RhbmNlOjpnZXRDbGFzcyk6CisgICAgICAgIChDSW5z
dGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgIChDSW5zdGFuY2U6Omludm9rZURlZmF1bHRN
ZXRob2QpOgorICAgICAgICAoQ0luc3RhbmNlOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoQ0lu
c3RhbmNlOjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChDSW5zdGFuY2U6OnZhbHVlT2YpOgorICAg
ICAgICAqIGJpbmRpbmdzL2MvY19ydW50aW1lLmg6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpD
RmllbGQ6Om5hbWUpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q01ldGhvZDo6bmFtZSk6Cisg
ICAgICAgICogYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoY29udmVydFVURjhU
b1VURjE2KToKKyAgICAgICAgKGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToKKyAgICAgICAgKGNv
bnZlcnROUFZhcmlhbnRUb1ZhbHVlKToKKyAgICAgICAgKGlkZW50aWZpZXJGcm9tTlBJZGVudGlm
aWVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfdXRpbGl0eS5oOgorICAgICAgICAqIGJpbmRp
bmdzL25wYXBpLmg6CisgICAgICAgIChfTlBQcmludDo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9u
cHJ1bnRpbWUuY3BwOgorICAgICAgICAoZ2V0U3RyaW5nSWRlbnRpZmllck1hcCk6CisgICAgICAg
IChnZXRJbnRJZGVudGlmaWVyTWFwKToKKyAgICAgICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVy
KToKKyAgICAgICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyk6CisgICAgICAgIChOUE5fR2V0
SW50SWRlbnRpZmllcik6CisgICAgICAgIChOUE5fSWRlbnRpZmllcklzU3RyaW5nKToKKyAgICAg
ICAgKE5QTl9VVEY4RnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoTlBOX0ludEZyb21JZGVudGlm
aWVyKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9Cb29sKToKKyAgICAgICAgKE5QTl9WYXJpYW50
VG9TdHJpbmcpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb0ludDMyKToKKyAgICAgICAgKE5QTl9W
YXJpYW50VG9Eb3VibGUpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb09iamVjdCk6CisgICAgICAg
IChOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoT2JqZWN0KToKKyAgICAgICAgKE5QTl9SZWxlYXNl
VmFyaWFudFZhbHVlKToKKyAgICAgICAgKE5QTl9DcmVhdGVPYmplY3QpOgorICAgICAgICAoTlBO
X1JldGFpbk9iamVjdCk6CisgICAgICAgIChOUE5fUmVsZWFzZU9iamVjdCk6CisgICAgICAgIChO
UE5fU2V0RXhjZXB0aW9uV2l0aFVURjgpOgorICAgICAgICAqIGJpbmRpbmdzL25wcnVudGltZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUuY3BwOgorICAgICAgICAoSW5zdGFuY2U6OmNy
ZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlKToKKyAgICAgICAgKEluc3RhbmNlOjpjcmVh
dGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChSdW50
aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJ
bXA6OmdldCk6CisgICAgICAgIChSdW50aW1lT2JqZWN0SW1wOjpwdXQpOgorICAgICAgICAoUnVu
dGltZU9iamVjdEltcDo6Y2FuUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVj
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgIChSb290
T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzKToKKyAgICAgICAgKGdldFJlZmVyZW5j
ZXNCeVJvb3RNYXApOgorICAgICAgICAoZ2V0UmVmZXJlbmNlc1NldCk6CisgICAgICAgIChLSlM6
OkJpbmRpbmdzOjpmaW5kUmVmZXJlbmNlU2V0KToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OnJv
b3RGb3JJbXApOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6cm9vdEZvckludGVycHJldGVyKToK
KyAgICAgICAgKEtKUzo6QmluZGluZ3M6OmFkZE5hdGl2ZVJlZmVyZW5jZSk6CisgICAgICAgIChL
SlM6OkJpbmRpbmdzOjpyZW1vdmVOYXRpdmVSZWZlcmVuY2UpOgorICAgICAgICAoUm9vdE9iamVj
dDo6c2V0SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5oOgor
ICAgICAgICAqIGdyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRjoKKyAgICAgICAgKiBn
cm91cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWY6CisgICAgICAgICogZ3JvdXAvSmF2YVNjcmlw
dENvcmUubW1wOgorICAgICAgICAqIGdyb3VwL2JsZC5pbmY6CisgICAgICAgICoga2pzL2ludGVy
cHJldGVyLmNwcDoKKyAgICAgICAgKEludGVycHJldGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChJ
bnRlcnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToKKyAgICAgICAgKFNh
dmVkQnVpbHRpbnM6OlNhdmVkQnVpbHRpbnMpOgorICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5o
OgorICAgICAgICAqIGtqcy9zdGRpbnQuaDoKKyAgICAgICAgKiBranMvdXN0cmluZy5oOgorICAg
ICAgICAoS0pTOjpVU3RyaW5nOjphcmVwKToKKwogMjAwNi0xMC0wNCAgc2FyZWVuICA8c2h5YW0u
c2FyZWVuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ncm91cC9ibGQuaW5mDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNj
cmlwdENvcmUvZ3JvdXAvYmxkLmluZgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENv
cmUvZ3JvdXAvYmxkLmluZgkod29ya2luZyBjb3B5KQ0KQEAgLTIxLDYgKzIxLDIxIEBADQogUFJK
X1BMQVRGT1JNUw0KIERFRkFVTFQNCiANCitQUkpfRVhQT1JUUw0KKy4uXGtqc1xpbnRlcm5hbC5o
ICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxpbnRlcm5hbC5oDQor
Li5ca2pzXGludGVycHJldGVyLmggICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRj
b3JlXGludGVycHJldGVyLmgNCisuLlxranNcb2JqZWN0LmggICAgICAgICAgIFxlcG9jMzJcaW5j
bHVkZVxvZW1camF2YXNjcmlwdGNvcmVcb2JqZWN0LmgNCisuLlxranNccHJvdGVjdC5oICAgICAg
ICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVccHJvdGVjdC5oDQorLi5ca2pz
XHN0ZGludC5oICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHN0
ZGludC5oDQorDQorLi5cYmluZGluZ3NcbnBydW50aW1lLmggICAgICAgICAgICBcZXBvYzMyXGlu
Y2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXG5wcnVudGltZS5oDQorLi5cYmluZGluZ3NcbnBydW50
aW1lX2ltcGwuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVc
bnBydW50aW1lX2ltcGwuaA0KKy4uXGJpbmRpbmdzXG5wcnVudGltZV9wcml2LmggICAgICAgICAg
ICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXG5wcnVudGltZV9wcml2LmgNCisu
LlxiaW5kaW5nc1xydW50aW1lLmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFz
Y3JpcHRjb3JlXHJ1bnRpbWUuaA0KKy4uXGJpbmRpbmdzXHJ1bnRpbWVfb2JqZWN0LmggICAgICAg
ICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHJ1bnRpbWVfb2JqZWN0LmgN
CisuLlxiaW5kaW5nc1xydW50aW1lX3Jvb3QuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxv
ZW1camF2YXNjcmlwdGNvcmVccnVudGltZV9yb290LmgNCisuLlxiaW5kaW5nc1xOUF9qc29iamVj
dC5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxOUF9qc29i
amVjdC5oDQorLi5cYmluZGluZ3NcY1xjX3V0aWxpdHkuaCAgICAgICAgICAgIFxlcG9jMzJcaW5j
bHVkZVxvZW1camF2YXNjcmlwdGNvcmVcY191dGlsaXR5LmgNCiBQUkpfTU1QRklMRVMNCiBwY3Jl
Lm1tcA0KIEphdmFTY3JpcHRDb3JlLm1tcA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3
aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L2dyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRgkocmV2aXNpb24gMTcwNjkpDQorKysg
SmF2YVNjcmlwdENvcmUvZ3JvdXAvQndpbnNjdy9KQVZBU0NSSVBUQ09SRVUuREVGCSh3b3JraW5n
IGNvcHkpDQpAQCAtMSwxMzkgKzEsMTY4IEBADQogRVhQT1JUUw0KLQk/PzBCb29sZWFuQEtKU0BA
UUFFQF9OQFogQCAxIE5PTkFNRSA7IEtKUzo6Qm9vbGVhbjo6Qm9vbGVhbihib29sKQ0KLQk/PzBJ
bnRlcnByZXRlckBLSlNAQFFBRUBBQlZPYmplY3RAMUBAWiBAIDIgTk9OQU1FIDsgS0pTOjpJbnRl
cnByZXRlcjo6SW50ZXJwcmV0ZXIoY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJikNCi0JPz8wTGlz
dEBLSlNAQFFBRUBYWiBAIDMgTk9OQU1FIDsgS0pTOjpMaXN0OjpMaXN0KHZvaWQpDQotCT8/ME51
bGxAS0pTQEBRQUVAWFogQCA0IE5PTkFNRSA7IEtKUzo6TnVsbDo6TnVsbCh2b2lkKQ0KLQk/PzBO
dW1iZXJAS0pTQEBRQUVASEBaIEAgNSBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGludCkN
Ci0JPz8wTnVtYmVyQEtKU0BAUUFFQElAWiBAIDYgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJl
cih1bnNpZ25lZCBpbnQpDQotCT8/ME51bWJlckBLSlNAQFFBRUBKQFogQCA3IE5PTkFNRSA7IEtK
Uzo6TnVtYmVyOjpOdW1iZXIobG9uZykNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQEtAWiBAIDggTk9O
QU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcih1bnNpZ25lZCBsb25nKQ0KLQk/PzBOdW1iZXJAS0pT
QEBRQUVATkBaIEAgOSBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGRvdWJsZSkNCi0JPz8w
T2JqZWN0SW1wQEtKU0BAUUFFQEFCVk9iamVjdEAxQEBaIEAgMTAgTk9OQU1FIDsgS0pTOjpPYmpl
Y3RJbXA6Ok9iamVjdEltcChjbGFzcyBLSlM6Ok9iamVjdCBjb25zdCAmKQ0KLQk/PzBPYmplY3RJ
bXBAS0pTQEBRQUVAWFogQCAxMSBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6T2JqZWN0SW1wKHZv
aWQpDQotCT8/MFN0cmluZ0BLSlNAQFFBRUBBQlZVU3RyaW5nQDFAQFogQCAxMiBOT05BTUUgOyBL
SlM6OlN0cmluZzo6U3RyaW5nKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KLQk/PzBVU3Ry
aW5nQEtKU0BAUUFFQEFCVjAxQDBAWiBAIDEzIE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmlu
ZyhjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYp
DQotCT8/MFVTdHJpbmdAS0pTQEBRQUVAREBaIEAgMTQgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpV
U3RyaW5nKGNoYXIpDQotCT8/MFVTdHJpbmdAS0pTQEBRQUVAUEFVVUNoYXJAMUBIX05AWiBAIDE1
IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQs
IGJvb2wpDQotCT8/MFVTdHJpbmdAS0pTQEBRQUVAUEJEQFogQCAxNiBOT05BTUUgOyBLSlM6OlVT
dHJpbmc6OlVTdHJpbmcoY2hhciBjb25zdCAqKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBCVVVD
aGFyQDFASEBaIEAgMTcgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKHN0cnVjdCBLSlM6
OlVDaGFyIGNvbnN0ICosIGludCkNCi0JPz8wVVN0cmluZ0BLSlNAQFFBRUBYWiBAIDE4IE5PTkFN
RSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyh2b2lkKQ0KLQk/PzBVbmRlZmluZWRAS0pTQEBRQUVA
WFogQCAxOSBOT05BTUUgOyBLSlM6OlVuZGVmaW5lZDo6VW5kZWZpbmVkKHZvaWQpDQotCT8/MFZh
bHVlQEtKU0BAUUFFQEFCVjAxQEBaIEAgMjAgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6VmFsdWUoY2xh
c3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/PzBWYWx1ZUBLSlNAQFFBRUBQQVZWYWx1ZUltcEAx
QEBaIEAgMjEgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6VmFsdWUoY2xhc3MgS0pTOjpWYWx1ZUltcCAq
KQ0KLQk/PzFJbnRlcnByZXRlckBLSlNAQFVBRUBYWiBAIDIyIE5PTkFNRSA7IEtKUzo6SW50ZXJw
cmV0ZXI6On5JbnRlcnByZXRlcih2b2lkKQ0KLQk/PzFPYmplY3RJbXBAS0pTQEBVQUVAWFogQCAy
MyBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6fk9iamVjdEltcCh2b2lkKQ0KLQk/PzFWYWx1ZUBL
SlNAQFFBRUBYWiBAIDI0IE5PTkFNRSA7IEtKUzo6VmFsdWU6On5WYWx1ZSh2b2lkKQ0KLQk/PzJW
YWx1ZUltcEBLSlNAQFNBUEFYSUBaIEAgMjUgTk9OQU1FIDsgdm9pZCAqIEtKUzo6VmFsdWVJbXA6
Om9wZXJhdG9yIG5ldyh1bnNpZ25lZCBpbnQpDQotCT8/M1ZhbHVlSW1wQEtKU0BAU0FYUEFYQFog
QCAyNiBOT05BTUUgOyB2b2lkIEtKUzo6VmFsdWVJbXA6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkICop
DQotCT8/NENTdHJpbmdAS0pTQEBRQUVBQVYwMUBQQkRAWiBAIDI3IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6Q1N0cmluZyAmIEtKUzo6Q1N0cmluZzo6b3BlcmF0b3I9KGNoYXIgY29uc3QgKikNCi0JPz80
TGlzdEBLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAgMjggTk9OQU1FIDsgY2xhc3MgS0pTOjpMaXN0
ICYgS0pTOjpMaXN0OjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT8/NFNj
b3BlQ2hhaW5AS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDI5IE5PTkFNRSA7IGNsYXNzIEtKUzo6
U2NvcGVDaGFpbiAmIEtKUzo6U2NvcGVDaGFpbjo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6U2NvcGVD
aGFpbiBjb25zdCAmKQ0KLQk/PzRVU3RyaW5nQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMCBO
T05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgJiBLSlM6OlVTdHJpbmc6Om9wZXJhdG9yPShjbGFz
cyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0JPz80VmFsdWVAS0pTQEBRQUVBQVYwMUBBQlYwMUBA
WiBAIDMxIE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgJiBLSlM6OlZhbHVlOjpvcGVyYXRvcj0o
Y2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/PzhLSlNAQFlBX05BQlZVU3RyaW5nQDBAUEJE
QFogQCAzMiBOT05BTUUgOyBib29sIEtKUzo6b3BlcmF0b3I9PShjbGFzcyBLSlM6OlVTdHJpbmcg
Y29uc3QgJiwgY2hhciBjb25zdCAqKQ0KLQk/YWRkQElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBV
U3RyaW5nQDJAUEFVMzQyQEBaIEAgMzMgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVw
ICogS0pTOjpJZGVudGlmaWVyOjphZGQoc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICopDQotCT9h
ZGRASWRlbnRpZmllckBLSlNAQENBUEFVUmVwQFVTdHJpbmdAMkBQQkRAWiBAIDM0IE5PTkFNRSA7
IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6SWRlbnRpZmllcjo6YWRkKGNoYXIgY29u
c3QgKikNCi0JP2FwcGVuZEBMaXN0QEtKU0BAUUFFWFBBVlZhbHVlSW1wQDJAQFogQCAzNSBOT05B
TUUgOyB2b2lkIEtKUzo6TGlzdDo6YXBwZW5kKGNsYXNzIEtKUzo6VmFsdWVJbXAgKikNCi0JP2Fw
cGVuZEBVU3RyaW5nQEtKU0BAUUFFQUFWMTJAQUJWMTJAQFogQCAzNiBOT05BTUUgOyBjbGFzcyBL
SlM6OlVTdHJpbmcgJiBLSlM6OlVTdHJpbmc6OmFwcGVuZChjbGFzcyBLSlM6OlVTdHJpbmcgY29u
c3QgJikNCi0JP2FwcGVuZEBVU3RyaW5nQEtKU0BAUUFFQUFWMTJAUEJEQFogQCAzNyBOT05BTUUg
OyBjbGFzcyBLSlM6OlVTdHJpbmcgJiBLSlM6OlVTdHJpbmc6OmFwcGVuZChjaGFyIGNvbnN0ICop
DQotCT9hc2NpaUBVU3RyaW5nQEtKU0BAUUJFUEFEWFogQCAzOCBOT05BTUUgOyBjaGFyICogS0pT
OjpVU3RyaW5nOjphc2NpaSh2b2lkKSBjb25zdA0KLQk/YXR0YWNoTnVsbEBVU3RyaW5nQEtKU0BA
QUFFWFhaIEAgMzkgTk9OQU1FIDsgdm9pZCBLSlM6OlVTdHJpbmc6OmF0dGFjaE51bGwodm9pZCkN
Ci0JP2J1aWx0aW5BcnJheUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDAg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbkFycmF5
KHZvaWQpIGNvbnN0DQotCT9idWlsdGluRnVuY3Rpb25ASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZP
YmplY3RAMkBYWiBAIDQxIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0
ZXI6OmJ1aWx0aW5GdW5jdGlvbih2b2lkKSBjb25zdA0KLQk/YnVpbHRpbk9iamVjdEBJbnRlcnBy
ZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmpl
Y3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbk9iamVjdCh2b2lkKSBjb25zdA0KLQk/YnVpbHRp
bk9iamVjdFByb3RvdHlwZUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDMg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbk9iamVj
dFByb3RvdHlwZSh2b2lkKSBjb25zdA0KLQk/Y2FsbEBPYmplY3RAS0pTQEBRQUU/QVZWYWx1ZUAy
QFBBVkV4ZWNTdGF0ZUAyQEFBVjEyQEFCVkxpc3RAMkBAWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6VmFsdWUgS0pTOjpPYmplY3Q6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3Mg
S0pTOjpPYmplY3QgJiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jYWxsQE9iamVjdElt
cEBLSlNAQFVBRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUFWT2JqZWN0QDJAQUJWTGlzdEAy
QEBaIEAgNDUgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Y2FsbChj
bGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Ok9iamVjdCAmLCBjbGFzcyBLSlM6Okxp
c3QgY29uc3QgJikNCi0JP2NhblB1dEBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAy
QEFCVklkZW50aWZpZXJAMkBAWiBAIDQ2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmNh
blB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3Qg
JikgY29uc3QNCi0JP2NsYXNzSW5mb0BPYmplY3RJbXBAS0pTQEBVQkVQQlVDbGFzc0luZm9AMkBY
WiBAIDQ3IE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0
SW1wOjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0JP2NsYXNzTmFtZUBPYmplY3RJbXBAS0pTQEBV
QkU/QVZVU3RyaW5nQDJAWFogQCA0OCBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpP
YmplY3RJbXA6OmNsYXNzTmFtZSh2b2lkKSBjb25zdA0KLQk/Y29sbGVjdEBDb2xsZWN0b3JAS0pT
QEBTQV9OWFogQCA0OSBOT05BTUUgOyBib29sIEtKUzo6Q29sbGVjdG9yOjpjb2xsZWN0KHZvaWQp
DQotCT9jb21wYXRNb2RlQEludGVycHJldGVyQEtKU0BAUUJFP0FXNENvbXBhdE1vZGVAMTJAWFog
QCA1MCBOT05BTUUgOyBlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1vZGUgS0pTOjpJbnRl
cnByZXRlcjo6Y29tcGF0TW9kZSh2b2lkKSBjb25zdA0KLQk/Y29uc3RydWN0QE9iamVjdEltcEBL
SlNAQFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxpc3RAMkBAWiBAIDUxIE5PTkFN
RSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjpjb25zdHJ1Y3QoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jb25zdHJ1Y3RAT2Jq
ZWN0SW1wQEtKU0BAVUFFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWTGlzdEAyQEFCVlVT
dHJpbmdAMkBIQFogQCA1MiBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdElt
cDo6Y29uc3RydWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25z
dCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgaW50KQ0KLQk/Y29weVRhaWxATGlzdEBL
SlNAQFFCRT9BVjEyQFhaIEAgNTMgTk9OQU1FIDsgY2xhc3MgS0pTOjpMaXN0IEtKUzo6TGlzdDo6
Y29weVRhaWwodm9pZCkgY29uc3QNCi0JP2NyZWF0ZUBFcnJvckBLSlNAQFNBP0FWT2JqZWN0QDJA
UEFWRXhlY1N0YXRlQDJAVzRFcnJvclR5cGVAMkBQQkRISFBCVlVTdHJpbmdAMkBAWiBAIDU0IE5P
TkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6RXJyb3I6OmNyZWF0ZShjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6RXJyb3JUeXBlLCBjaGFyIGNvbnN0ICosIGludCwgaW50LCBj
bGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgKikNCi0JP2NyZWF0ZUBSZXBAVVN0cmluZ0BLSlNAQFNB
UEFVMTIzQFBBVVVDaGFyQDNASEBaIEAgNTUgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6
UmVwICogS0pTOjpVU3RyaW5nOjpSZXA6OmNyZWF0ZShzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQp
DQotCT9jcmVhdGVDb3B5aW5nQFJlcEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BI
QFogQCA1NiBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6
OlJlcDo6Y3JlYXRlQ29weWluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQotCT9k
ZWZhdWx0VmFsdWVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBX
NFR5cGVAMkBAWiBAIDU3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6
OmRlZmF1bHRWYWx1ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkgY29u
c3QNCi0JP2RlbGV0ZUFsbFByb3BlcnRpZXNAT2JqZWN0SW1wQEtKU0BAUUFFWFBBVkV4ZWNTdGF0
ZUAyQEBaIEAgNTggTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlQWxsUHJvcGVy
dGllcyhjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKQ0KLQk/ZGVsZXRlUHJvcGVydHlAT2JqZWN0SW1w
QEtKU0BAVUFFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA1OSBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikNCi0JP2RlbGV0ZVByb3BlcnR5QE9i
amVjdEltcEBLSlNAQFVBRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgNjAgTk9OQU1FIDsgYm9vbCBL
SlM6Ok9iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5z
aWduZWQgaW50KQ0KLQk/ZGVyZWZWYWx1ZXNATGlzdEBLSlNAQEFBRVhYWiBAIDYxIE5PTkFNRSA7
IHZvaWQgS0pTOjpMaXN0OjpkZXJlZlZhbHVlcyh2b2lkKQ0KLQk/ZGVzdHJveUBSZXBAVVN0cmlu
Z0BLSlNAQFFBRVhYWiBAIDYyIE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjpSZXA6OmRlc3Ry
b3kodm9pZCkNCi0JP2Rpc3BhdGNoVG9PYmplY3RAVmFsdWVJbXBAS0pTQEBRQkU/QVZPYmplY3RA
MkBQQVZFeGVjU3RhdGVAMkBAWiBAIDYzIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6
VmFsdWVJbXA6OmRpc3BhdGNoVG9PYmplY3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QN
Ci0JP2R5bmFtaWNDYXN0QE9iamVjdEBLSlNAQFNBP0FWMTJAQUJWVmFsdWVAMkBAWiBAIDY0IE5P
TkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0OjpkeW5hbWljQ2FzdChjbGFzcyBL
SlM6OlZhbHVlIGNvbnN0ICYpDQotCT9lcXVhbEBJZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBV
U3RyaW5nQDJAUEJEQFogQCA2NSBOT05BTUUgOyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwo
c3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICosIGNoYXIgY29uc3QgKikNCi0JP2VxdWFsQElkZW50
aWZpZXJAS0pTQEBDQV9OUEFVUmVwQFVTdHJpbmdAMkBQQlVVQ2hhckAyQEhAWiBAIDY2IE5PTkFN
RSA7IGJvb2wgS0pTOjpJZGVudGlmaWVyOjplcXVhbChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAg
Kiwgc3RydWN0IEtKUzo6VUNoYXIgY29uc3QgKiwgaW50KQ0KLQk/ZXZhbHVhdGVASW50ZXJwcmV0
ZXJAS0pTQEBRQUU/QVZDb21wbGV0aW9uQDJAQUJWVVN0cmluZ0AyQEFCVlZhbHVlQDJAMEBaIEAg
NjcgTk9OQU1FIDsgY2xhc3MgS0pTOjpDb21wbGV0aW9uIEtKUzo6SW50ZXJwcmV0ZXI6OmV2YWx1
YXRlKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYs
IGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KLQk/ZXZhbHVhdGVASW50ZXJwcmV0ZXJAS0pT
QEBRQUU/QVZDb21wbGV0aW9uQDJAQUJWVVN0cmluZ0AyQEgwQUJWVmFsdWVAMkBAWiBAIDY4IE5P
TkFNRSA7IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6OkludGVycHJldGVyOjpldmFsdWF0ZShj
bGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgaW50LCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3Qg
JiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/ZmluZEVudHJ5QExvb2t1cEBLSlNAQFNB
UEJWSGFzaEVudHJ5QDJAUEJWSGFzaFRhYmxlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNjkgTk9O
QU1FIDsgY2xhc3MgS0pTOjpIYXNoRW50cnkgY29uc3QgKiBLSlM6Okxvb2t1cDo6ZmluZEVudHJ5
KGNsYXNzIEtKUzo6SGFzaFRhYmxlIGNvbnN0ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmKQ0KLQk/ZnJvbUBVU3RyaW5nQEtKU0BAU0E/QVYxMkBKQFogQCA3MCBOT05BTUUgOyBjbGFz
cyBLSlM6OlVTdHJpbmcgS0pTOjpVU3RyaW5nOjpmcm9tKGxvbmcpDQotCT9nZXRAT2JqZWN0SW1w
QEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3
MSBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9n
ZXRAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBJQFogQCA3MiBO
T05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KLQk/Z2V0QFByb3BlcnR5TWFwQEtKU0BA
UUJFUEFWVmFsdWVJbXBAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3MyBOT05BTUUgOyBjbGFzcyBL
SlM6OlZhbHVlSW1wICogS0pTOjpQcm9wZXJ0eU1hcDo6Z2V0KGNsYXNzIEtKUzo6SWRlbnRpZmll
ciBjb25zdCAmKSBjb25zdA0KLQk/Z2xvYmFsRXhlY0BJbnRlcnByZXRlckBLSlNAQFFBRVBBVkV4
ZWNTdGF0ZUAyQFhaIEAgNzQgTk9OQU1FIDsgY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiBLSlM6Oklu
dGVycHJldGVyOjpnbG9iYWxFeGVjKHZvaWQpDQotCT9nbG9iYWxPYmplY3RASW50ZXJwcmV0ZXJA
S0pTQEBRQkVBQVZPYmplY3RAMkBYWiBAIDc1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0ICYg
S0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFsT2JqZWN0KHZvaWQpIGNvbnN0DQotCT9oYXNJbnN0YW5j
ZUBPYmplY3RJbXBAS0pTQEBVQUU/QVZCb29sZWFuQDJAUEFWRXhlY1N0YXRlQDJAQUJWVmFsdWVA
MkBAWiBAIDc2IE5PTkFNRSA7IGNsYXNzIEtKUzo6Qm9vbGVhbiBLSlM6Ok9iamVjdEltcDo6aGFz
SW5zdGFuY2UoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAm
KQ0KLQk/aGFzT3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJ
ZGVudGlmaWVyQDJAQFogQCA3NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9w
ZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3Qg
JikgY29uc3QNCi0JP2hhc093blByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0
YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzggTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdElt
cDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVu
dGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBV
QkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDc5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6
Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29u
c3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRl
bnRpZmllckAyQEBaIEAgODAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHko
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNv
bnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBA
IDgxIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEltcEBL
SlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODIgTk9OQU1FIDsg
Ym9vbCBLSlM6Ok9iamVjdEltcDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
Y2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmpl
Y3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDgzIE5PTkFNRSA7IGJvb2wgS0pT
OjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVk
IGludCkgY29uc3QNCi0JP2ltcEF0QExpc3RAS0pTQEBRQkVQQVZWYWx1ZUltcEAyQEhAWiBAIDg0
IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWVJbXAgKiBLSlM6Okxpc3Q6OmltcEF0KGludCkgY29u
c3QNCi0JP2ltcGxlbWVudHNDYWxsQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA4NSBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0SW1wOjppbXBsZW1lbnRzQ2FsbCh2b2lkKSBjb25zdA0KLQk/aW1w
bGVtZW50c0NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgODYgTk9OQU1FIDsgYm9v
bCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0NvbnN0cnVjdCh2b2lkKSBjb25zdA0KLQk/aW1w
bGVtZW50c0hhc0luc3RhbmNlQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA4NyBOT05BTUUgOyBi
b29sIEtKUzo6T2JqZWN0SW1wOjppbXBsZW1lbnRzSGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCi0J
P2luY1N0YXRlbWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgODggTk9OQU1FIDsg
dm9pZCBLSlM6OkludGVycHJldGVyOjppbmNTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KLQk/aW5oZXJp
dHNAT2JqZWN0SW1wQEtKU0BAUUJFX05QQlVDbGFzc0luZm9AMkBAWiBAIDg5IE5PTkFNRSA7IGJv
b2wgS0pTOjpPYmplY3RJbXA6OmluaGVyaXRzKHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAq
KSBjb25zdA0KLQk/aW5pdEdsb2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDkw
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVjdCh2b2lkKQ0K
LQk/aXNOdWxsQFVTdHJpbmdAS0pTQEBRQkVfTlhaIEAgOTEgTk9OQU1FIDsgYm9vbCBLSlM6OlVT
dHJpbmc6OmlzTnVsbCh2b2lkKSBjb25zdA0KLQk/bGVuZ3RoUHJvcGVydHlAS0pTQEBZQUFCVklk
ZW50aWZpZXJAMUBYWiBAIDkyIE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAm
IEtKUzo6bGVuZ3RoUHJvcGVydHkodm9pZCkNCi0JP2xleGljYWxJbnRlcnByZXRlckBFeGVjU3Rh
dGVAS0pTQEBRQkVQQVZJbnRlcnByZXRlckAyQFhaIEAgOTMgTk9OQU1FIDsgY2xhc3MgS0pTOjpJ
bnRlcnByZXRlciAqIEtKUzo6RXhlY1N0YXRlOjpsZXhpY2FsSW50ZXJwcmV0ZXIodm9pZCkgY29u
c3QNCi0JP2xvY2tASW50ZXJwcmV0ZXJAS0pTQEBTQVhYWiBAIDk0IE5PTkFNRSA7IHZvaWQgS0pT
OjpJbnRlcnByZXRlcjo6bG9jayh2b2lkKQ0KLQk/bWFya0BPYmplY3RJbXBAS0pTQEBVQUVYWFog
QCA5NSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjptYXJrKHZvaWQpDQotCT9tYXJrZWRA
VmFsdWVJbXBAS0pTQEBRQkVfTlhaIEAgOTYgTk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjpt
YXJrZWQodm9pZCkgY29uc3QNCi0JP21lc3NhZ2VQcm9wZXJ0eUBLSlNAQFlBQUJWSWRlbnRpZmll
ckAxQFhaIEAgOTcgTk9OQU1FIDsgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjpt
ZXNzYWdlUHJvcGVydHkodm9pZCkNCi0JP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVy
ZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgOTggTk9OQU1FIDsgY2xhc3MgS0pTOjpS
ZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0Ojpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
LCBib29sKQ0KLQk/cHJvcExpc3RAT2JqZWN0SW1wQEtKU0BAVUFFP0FWUmVmZXJlbmNlTGlzdEAy
QFBBVkV4ZWNTdGF0ZUAyQF9OQFogQCA5OSBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5jZUxp
c3QgS0pTOjpPYmplY3RJbXA6OnByb3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wp
DQotCT9wcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUJFP0FWVmFsdWVAMkBYWiBAIDEwMCBOT05B
TUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpwcm90b3R5cGUodm9pZCkgY29u
c3QNCi0JP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhBQlYxMkBAWiBAIDEwMSBOT05BTUUgOyB2
b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikN
Ci0JP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhQQVZPYmplY3RJbXBAMkBAWiBAIDEwMiBOT05B
TUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6Ok9iamVjdEltcCAqKQ0K
LQk/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJA
QUJWVmFsdWVAMkBIQFogQCAxMDMgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFz
cyBLSlM6OlZhbHVlIGNvbnN0ICYsIGludCkNCi0JP3B1dEBPYmplY3RJbXBAS0pTQEBVQUVYUEFW
RXhlY1N0YXRlQDJASUFCVlZhbHVlQDJASEBaIEAgMTA0IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmpl
Y3RJbXA6OnB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQsIGNsYXNzIEtK
Uzo6VmFsdWUgY29uc3QgJiwgaW50KQ0KLQk/cHV0RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhB
QlZJZGVudGlmaWVyQDJASEhAWiBAIDEwNSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpw
dXREaXJlY3QoY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGludCwgaW50KQ0KLQk/cHV0
RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVyQDJAUEFWVmFsdWVJbXBAMkBI
QFogQCAxMDYgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtK
Uzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlSW1wICosIGludCkNCi0JP3Jl
ZlZhbHVlc0BMaXN0QEtKU0BAQUFFWFhaIEAgMTA3IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0Ojpy
ZWZWYWx1ZXModm9pZCkNCi0JP3JlbGVhc2VATGlzdEBLSlNAQEFBRVhYWiBAIDEwOCBOT05BTUUg
OyB2b2lkIEtKUzo6TGlzdDo6cmVsZWFzZSh2b2lkKQ0KLQk/cmVsZWFzZUBTY29wZUNoYWluQEtK
U0BAQUFFWFhaIEAgMTA5IE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpyZWxlYXNlKHZv
aWQpDQotCT9yZXNldFN0YXRlbWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgMTEw
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzZXRTdGF0ZW1lbnRDb3VudCh2b2lk
KQ0KLQk/cmVzdG9yZUBQcm9wZXJ0eU1hcEBLSlNAQFFBRVhBQlZTYXZlZFByb3BlcnRpZXNAMkBA
WiBAIDExMSBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnJlc3RvcmUoY2xhc3MgS0pT
OjpTYXZlZFByb3BlcnRpZXMgY29uc3QgJikNCi0JP3Jlc3RvcmVCdWlsdGluc0BJbnRlcnByZXRl
ckBLSlNAQFFBRVhBQlZTYXZlZEJ1aWx0aW5zQDJAQFogQCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6
OkludGVycHJldGVyOjpyZXN0b3JlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zIGNv
bnN0ICYpDQotCT9zYXZlQFByb3BlcnR5TWFwQEtKU0BAUUJFWEFBVlNhdmVkUHJvcGVydGllc0Ay
QEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgS0pTOjpQcm9wZXJ0eU1hcDo6c2F2ZShjbGFzcyBLSlM6
OlNhdmVkUHJvcGVydGllcyAmKSBjb25zdA0KLQk/c2F2ZUJ1aWx0aW5zQEludGVycHJldGVyQEtK
U0BAUUJFWEFBVlNhdmVkQnVpbHRpbnNAMkBAWiBAIDExNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50
ZXJwcmV0ZXI6OnNhdmVCdWlsdGlucyhjbGFzcyBLSlM6OlNhdmVkQnVpbHRpbnMgJikgY29uc3QN
Ci0JP3NldENvbXBhdE1vZGVASW50ZXJwcmV0ZXJAS0pTQEBRQUVYVzRDb21wYXRNb2RlQDEyQEBa
IEAgMTE1IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0Q29tcGF0TW9kZShlbnVt
IEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1vZGUpDQotCT9zZXRQcm90b3R5cGVAT2JqZWN0SW1w
QEtKU0BAUUFFWEFCVlZhbHVlQDJAQFogQCAxMTYgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdElt
cDo6c2V0UHJvdG90eXBlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JP3NldFNob3VsZFBy
aW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNBWF9OQFogQCAxMTcgTk9OQU1FIDsgdm9p
ZCBLSlM6OkludGVycHJldGVyOjpzZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCkNCi0JP3No
b3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNBX05YWiBAIDExOCBOT05BTUUg
OyBib29sIEtKUzo6SW50ZXJwcmV0ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucyh2b2lkKQ0KLQk/
dG9BcnJheUluZGV4QFVTdHJpbmdAS0pTQEBRQkVJUEFfTkBaIEAgMTE5IE5PTkFNRSA7IHVuc2ln
bmVkIGludCBLSlM6OlVTdHJpbmc6OnRvQXJyYXlJbmRleChib29sICopIGNvbnN0DQotCT90b0Jv
b2xlYW5AT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBAWiBAIDEyMCBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0SW1wOjp0b0Jvb2xlYW4oY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikg
Y29uc3QNCi0JP3RvSW50MzJAVmFsdWVJbXBAS0pTQEBRQkVKUEFWRXhlY1N0YXRlQDJAQFogQCAx
MjEgTk9OQU1FIDsgbG9uZyBLSlM6OlZhbHVlSW1wOjp0b0ludDMyKGNsYXNzIEtKUzo6RXhlY1N0
YXRlICopIGNvbnN0DQotCT90b0ludGVnZXJAVmFsdWVJbXBAS0pTQEBRQkVOUEFWRXhlY1N0YXRl
QDJAQFogQCAxMjIgTk9OQU1FIDsgZG91YmxlIEtKUzo6VmFsdWVJbXA6OnRvSW50ZWdlcihjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9OdW1iZXJAT2JqZWN0SW1wQEtKU0BAVUJF
TlBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTIzIE5PTkFNRSA7IGRvdWJsZSBLSlM6Ok9iamVjdEltcDo6
dG9OdW1iZXIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvT2JqZWN0QE9iamVj
dEltcEBLSlNAQFVCRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTI0IE5PTkFNRSA7
IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjp0b09iamVjdChjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9QcmltaXRpdmVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFs
dWVAMkBQQVZFeGVjU3RhdGVAMkBXNFR5cGVAMkBAWiBAIDEyNSBOT05BTUUgOyBjbGFzcyBLSlM6
OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjp0b1ByaW1pdGl2ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
LCBlbnVtIEtKUzo6VHlwZSkgY29uc3QNCi0JP3RvU3RyaW5nQE9iamVjdEltcEBLSlNAQFVCRT9B
VlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWiBAIDEyNiBOT05BTUUgOyBjbGFzcyBLSlM6OlVT
dHJpbmcgS0pTOjpPYmplY3RJbXA6OnRvU3RyaW5nKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNv
bnN0DQotCT90b1VJbnQxNkBWYWx1ZUltcEBLSlNAQFFCRUdQQVZFeGVjU3RhdGVAMkBAWiBAIDEy
NyBOT05BTUUgOyB1bnNpZ25lZCBzaG9ydCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQxNihjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9VSW50MzJAVmFsdWVJbXBAS0pTQEBFQkVfTkFB
SUBaIEAgMTI4IE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6dG9VSW50MzIodW5zaWduZWQg
aW50ICYpIGNvbnN0DQotCT90b1VJbnQzMkBWYWx1ZUltcEBLSlNAQFFCRUtQQVZFeGVjU3RhdGVA
MkBAWiBAIDEyOSBOT05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6VmFsdWVJbXA6OnRvVUludDMy
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b1VMb25nQFVTdHJpbmdAS0pTQEBR
QkVLUEFfTkBaIEAgMTMwIE5PTkFNRSA7IHVuc2lnbmVkIGxvbmcgS0pTOjpVU3RyaW5nOjp0b1VM
b25nKGJvb2wgKikgY29uc3QNCi0JP3R5cGVAT2JqZWN0SW1wQEtKU0BAVUJFP0FXNFR5cGVAMkBY
WiBAIDEzMSBOT05BTUUgOyBlbnVtIEtKUzo6VHlwZSBLSlM6Ok9iamVjdEltcDo6dHlwZSh2b2lk
KSBjb25zdA0KLQk/dW5sb2NrQEludGVycHJldGVyQEtKU0BAU0FYWFogQCAxMzIgTk9OQU1FIDsg
dm9pZCBLSlM6OkludGVycHJldGVyOjp1bmxvY2sodm9pZCkNCi0JP3ZhbHVlQFN0cmluZ0BLSlNA
QFFCRT9BVlVTdHJpbmdAMkBYWiBAIDEzMyBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pT
OjpTdHJpbmc6OnZhbHVlKHZvaWQpIGNvbnN0DQotCT92aXJ0dWFsX2hvb2tASW50ZXJwcmV0ZXJA
S0pTQEBNQUVYSFBBWEBaIEAgMTM0IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dmly
dHVhbF9ob29rKGludCwgdm9pZCAqKQ0KLQlranNfc3RydG9kIEAgMTM1IE5PTkFNRQ0KLQk/Y2xh
c3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgMTM2IE5PTkFNRSA7IHN0
cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkg
Y29uc3QNCi0JP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJA
SUBaIEAgMTM3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgPz8wQm9vbGVhbkBL
SlNAQFFBRUBfTkBaIEAgMSBOT05BTUUgOyBLSlM6OkJvb2xlYW46OkJvb2xlYW4oYm9vbCkNCisg
ICAgPz8wSW50ZXJwcmV0ZXJAS0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAyIE5PTkFNRSA7IEtK
Uzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYpDQor
ICAgID8/MExpc3RAS0pTQEBRQUVAWFogQCAzIE5PTkFNRSA7IEtKUzo6TGlzdDo6TGlzdCh2b2lk
KQ0KKyAgICA/PzBOdWxsQEtKU0BAUUFFQFhaIEAgNCBOT05BTUUgOyBLSlM6Ok51bGw6Ok51bGwo
dm9pZCkNCisgICAgPz8wTnVtYmVyQEtKU0BAUUFFQEhAWiBAIDUgTk9OQU1FIDsgS0pTOjpOdW1i
ZXI6Ok51bWJlcihpbnQpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBJQFogQCA2IE5PTkFNRSA7
IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgaW50KQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBR
QUVASkBaIEAgNyBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGxvbmcpDQorICAgID8/ME51
bWJlckBLSlNAQFFBRUBLQFogQCA4IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWdu
ZWQgbG9uZykNCisgICAgPz8wTnVtYmVyQEtKU0BAUUFFQE5AWiBAIDkgTk9OQU1FIDsgS0pTOjpO
dW1iZXI6Ok51bWJlcihkb3VibGUpDQorICAgID8/ME9iamVjdEltcEBLSlNAQFFBRUBBQlZPYmpl
Y3RAMUBAWiBAIDEwIE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjpPYmplY3RJbXAoY2xhc3MgS0pT
OjpPYmplY3QgY29uc3QgJikNCisgICAgPz8wT2JqZWN0SW1wQEtKU0BAUUFFQFhaIEAgMTEgTk9O
QU1FIDsgS0pTOjpPYmplY3RJbXA6Ok9iamVjdEltcCh2b2lkKQ0KKyAgICA/PzBSdW50aW1lT2Jq
ZWN0SW1wQEtKU0BAUUFFQFBBVkluc3RhbmNlQEJpbmRpbmdzQDFAX05AWiBAIDEyIE5PTkFNRSA7
IEtKUzo6UnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChjbGFzcyBLSlM6OkJpbmRp
bmdzOjpJbnN0YW5jZSAqLCBib29sKQ0KKyAgICA/PzBTdHJpbmdAS0pTQEBRQUVAQUJWVVN0cmlu
Z0AxQEBaIEAgMTMgTk9OQU1FIDsgS0pTOjpTdHJpbmc6OlN0cmluZyhjbGFzcyBLSlM6OlVTdHJp
bmcgY29uc3QgJikNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBBQlYwMUAwQFogQCAxNCBOT05B
TUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNs
YXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQERAWiBA
IDE1IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjaGFyKQ0KKyAgICA/PzBVU3RyaW5n
QEtKU0BAUUFFQFBBVVVDaGFyQDFASF9OQFogQCAxNiBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVT
dHJpbmcoc3RydWN0IEtKUzo6VUNoYXIgKiwgaW50LCBib29sKQ0KKyAgICA/PzBVU3RyaW5nQEtK
U0BAUUFFQFBCREBaIEAgMTcgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIgY29u
c3QgKikNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBQQlVVQ2hhckAxQEhAWiBAIDE4IE5PTkFN
RSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQp
DQorICAgID8/MFVTdHJpbmdAS0pTQEBRQUVAWFogQCAxOSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6
OlVTdHJpbmcodm9pZCkNCisgICAgPz8wVW5kZWZpbmVkQEtKU0BAUUFFQFhaIEAgMjAgTk9OQU1F
IDsgS0pTOjpVbmRlZmluZWQ6OlVuZGVmaW5lZCh2b2lkKQ0KKyAgICA/PzBWYWx1ZUBLSlNAQFFB
RUBBQlYwMUBAWiBAIDIxIE5PTkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFs
dWUgY29uc3QgJikNCisgICAgPz8wVmFsdWVAS0pTQEBRQUVAUEFWVmFsdWVJbXBAMUBAWiBAIDIy
IE5PTkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWVJbXAgKikNCisgICAg
Pz8xSW50ZXJwcmV0ZXJAS0pTQEBVQUVAWFogQCAyMyBOT05BTUUgOyBLSlM6OkludGVycHJldGVy
Ojp+SW50ZXJwcmV0ZXIodm9pZCkNCisgICAgPz8xT2JqZWN0SW1wQEtKU0BAVUFFQFhaIEAgMjQg
Tk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6On5PYmplY3RJbXAodm9pZCkNCisgICAgPz8xVmFsdWVA
S0pTQEBRQUVAWFogQCAyNSBOT05BTUUgOyBLSlM6OlZhbHVlOjp+VmFsdWUodm9pZCkNCisgICAg
Pz8yVmFsdWVJbXBAS0pTQEBTQVBBWElAWiBAIDI2IE5PTkFNRSA7IHZvaWQgKiBLSlM6OlZhbHVl
SW1wOjpvcGVyYXRvciBuZXcodW5zaWduZWQgaW50KQ0KKyAgICA/PzNWYWx1ZUltcEBLSlNAQFNB
WFBBWEBaIEAgMjcgTk9OQU1FIDsgdm9pZCBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBkZWxldGUo
dm9pZCAqKQ0KKyAgICA/PzRDU3RyaW5nQEtKU0BAUUFFQUFWMDFAUEJEQFogQCAyOCBOT05BTUUg
OyBjbGFzcyBLSlM6OkNTdHJpbmcgJiBLSlM6OkNTdHJpbmc6Om9wZXJhdG9yPShjaGFyIGNvbnN0
ICopDQorICAgID8/NExpc3RAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDI5IE5PTkFNRSA7IGNs
YXNzIEtKUzo6TGlzdCAmIEtKUzo6TGlzdDo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6TGlzdCBjb25z
dCAmKQ0KKyAgICA/PzRTY29wZUNoYWluQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMCBOT05B
TUUgOyBjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gJiBLSlM6OlNjb3BlQ2hhaW46Om9wZXJhdG9yPShj
bGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikNCisgICAgPz80VVN0cmluZ0BLSlNAQFFBRUFB
VjAxQEFCVjAxQEBaIEAgMzEgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3Ry
aW5nOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID8/NFZhbHVl
QEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlICYg
S0pTOjpWYWx1ZTo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgPz84
S0pTQEBZQV9OQUJWVVN0cmluZ0AwQFBCREBaIEAgMzMgTk9OQU1FIDsgYm9vbCBLSlM6Om9wZXJh
dG9yPT0oY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNoYXIgY29uc3QgKikNCisgICAgP05Q
Tl9TZXRFeGNlcHRpb25XaXRoVVRGOEBAWUFYUEFVTlBPYmplY3RAQFBCREhAWiBAIDM0IE5PTkFN
RSA7IHZvaWQgTlBOX1NldEV4Y2VwdGlvbldpdGhVVEY4KHN0cnVjdCBOUE9iamVjdCAqLCBjaGFy
IGNvbnN0ICosIGludCkNCisgICAgP2FkZEBJZGVudGlmaWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmlu
Z0AyQFBBVTM0MkBAWiBAIDM1IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtK
Uzo6SWRlbnRpZmllcjo6YWRkKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqKQ0KKyAgICA/YWRk
QElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJAUEJEQFogQCAzNiBOT05BTUUgOyBz
dHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OklkZW50aWZpZXI6OmFkZChjaGFyIGNvbnN0
ICopDQorICAgID9hcHBlbmRATGlzdEBLSlNAQFFBRVhQQVZWYWx1ZUltcEAyQEBaIEAgMzcgTk9O
QU1FIDsgdm9pZCBLSlM6Okxpc3Q6OmFwcGVuZChjbGFzcyBLSlM6OlZhbHVlSW1wICopDQorICAg
ID9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQEFCVjEyQEBaIEAgMzggTk9OQU1FIDsgY2xh
c3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2xhc3MgS0pTOjpVU3RyaW5n
IGNvbnN0ICYpDQorICAgID9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQFBCREBaIEAgMzkg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2hhciBj
b25zdCAqKQ0KKyAgICA/YXNjaWlAVVN0cmluZ0BLSlNAQFFCRVBBRFhaIEAgNDAgTk9OQU1FIDsg
Y2hhciAqIEtKUzo6VVN0cmluZzo6YXNjaWkodm9pZCkgY29uc3QNCisgICAgP2F0dGFjaE51bGxA
VVN0cmluZ0BLSlNAQEFBRVhYWiBAIDQxIE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjphdHRh
Y2hOdWxsKHZvaWQpDQorICAgID9idWlsdGluQXJyYXlASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZP
YmplY3RAMkBYWiBAIDQyIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0
ZXI6OmJ1aWx0aW5BcnJheSh2b2lkKSBjb25zdA0KKyAgICA/YnVpbHRpbkZ1bmN0aW9uQEludGVy
cHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9i
amVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGluRnVuY3Rpb24odm9pZCkgY29uc3QNCisgICAg
P2J1aWx0aW5PYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQ0IE5P
TkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3Qo
dm9pZCkgY29uc3QNCisgICAgP2J1aWx0aW5PYmplY3RQcm90b3R5cGVASW50ZXJwcmV0ZXJAS0pT
QEBRQkU/QVZPYmplY3RAMkBYWiBAIDQ1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6
SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3RQcm90b3R5cGUodm9pZCkgY29uc3QNCisgICAgP2Nh
bGxAT2JqZWN0QEtKU0BAUUFFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQVYxMkBBQlZMaXN0
QDJAQFogQCA0NiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0OjpjYWxsKGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlz
dCBjb25zdCAmKQ0KKyAgICA/Y2FsbEBPYmplY3RJbXBAS0pTQEBVQUU/QVZWYWx1ZUAyQFBBVkV4
ZWNTdGF0ZUAyQEFBVk9iamVjdEAyQEFCVkxpc3RAMkBAWiBAIDQ3IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xh
c3MgS0pTOjpPYmplY3QgJiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQorICAgID9jYW5QdXRA
T2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA0
OCBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpjYW5QdXQoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9jbGFzc0lu
Zm9AT2JqZWN0QEtKU0BAUUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA0OSBOT05BTUUgOyBzdHJ1Y3Qg
S0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0
DQorICAgID9jbGFzc0luZm9AT2JqZWN0SW1wQEtKU0BAVUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA1
MCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdEltcDo6
Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQorICAgID9jbGFzc05hbWVAT2JqZWN0SW1wQEtKU0BAVUJF
P0FWVVN0cmluZ0AyQFhaIEAgNTEgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6T2Jq
ZWN0SW1wOjpjbGFzc05hbWUodm9pZCkgY29uc3QNCisgICAgP2NvbGxlY3RAQ29sbGVjdG9yQEtK
U0BAU0FfTlhaIEAgNTIgTk9OQU1FIDsgYm9vbCBLSlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCh2b2lk
KQ0KKyAgICA/Y29tcGF0TW9kZUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVzRDb21wYXRNb2RlQDEy
QFhaIEAgNTMgTk9OQU1FIDsgZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2RlIEtKUzo6
SW50ZXJwcmV0ZXI6OmNvbXBhdE1vZGUodm9pZCkgY29uc3QNCisgICAgP2NvbnN0cnVjdEBPYmpl
Y3RJbXBAS0pTQEBVQUU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZMaXN0QDJAQFogQCA1
NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3RydWN0KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/Y29u
c3RydWN0QE9iamVjdEltcEBLSlNAQFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxp
c3RAMkBBQlZVU3RyaW5nQDJASEBaIEAgNTUgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pT
OjpPYmplY3RJbXA6OmNvbnN0cnVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6
Okxpc3QgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCkNCisgICAgP2Nv
cHlUYWlsQExpc3RAS0pTQEBRQkU/QVYxMkBYWiBAIDU2IE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlz
dCBLSlM6Okxpc3Q6OmNvcHlUYWlsKHZvaWQpIGNvbnN0DQorICAgID9jcmVhdGVARXJyb3JAS0pT
QEBTQT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQFc0RXJyb3JUeXBlQDJAUEJESEhQQlZVU3Ry
aW5nQDJAQFogQCA1NyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkVycm9yOjpjcmVh
dGUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OkVycm9yVHlwZSwgY2hhciBjb25z
dCAqLCBpbnQsIGludCwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICopDQorICAgID9jcmVhdGVA
UmVwQFVTdHJpbmdAS0pTQEBTQVBBVTEyM0BQQVVVQ2hhckAzQEhAWiBAIDU4IE5PTkFNRSA7IHN0
cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6VVN0cmluZzo6UmVwOjpjcmVhdGUoc3RydWN0
IEtKUzo6VUNoYXIgKiwgaW50KQ0KKyAgICA/Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFu
Y2VASW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQVBBVjEyM0BXNEJpbmRpbmdMYW5ndWFnZUAxMjNA
UEFYUEJWUm9vdE9iamVjdEAyM0BAWiBAIDU5IE5PTkFNRSA7IGNsYXNzIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlICogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5n
dWFnZUluc3RhbmNlKGVudW0gS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFn
ZSwgdm9pZCAqLCBjbGFzcyBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0IGNvbnN0ICopDQorICAg
ID9jcmVhdGVDb3B5aW5nQFJlcEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BIQFog
QCA2MCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJl
cDo6Y3JlYXRlQ29weWluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQorICAgID9j
cmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWVASW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQVBB
WFBBVkV4ZWNTdGF0ZUAzQFc0QmluZGluZ0xhbmd1YWdlQDEyM0BBQlZPYmplY3RAM0BQQlZSb290
T2JqZWN0QDIzQDNAWiBAIDYxIE5PTkFNRSA7IHZvaWQgKiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5j
ZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IGVudW0gS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSwgY2xhc3MgS0pT
OjpPYmplY3QgY29uc3QgJiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAq
LCBjbGFzcyBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0IGNvbnN0ICopDQorICAgID9jcmVhdGVM
YW5ndWFnZUluc3RhbmNlRm9yVmFsdWVASW50ZXJwcmV0ZXJAS0pTQEBVQUVQQVhQQVZFeGVjU3Rh
dGVAMkBXNEJpbmRpbmdMYW5ndWFnZUBJbnN0YW5jZUBCaW5kaW5nc0AyQEFCVk9iamVjdEAyQFBC
VlJvb3RPYmplY3RANjJAM0BaIEAgNjIgTk9OQU1FIDsgdm9pZCAqIEtKUzo6SW50ZXJwcmV0ZXI6
OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBl
bnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIGNsYXNzIEtKUzo6
T2JqZWN0IGNvbnN0ICYsIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKiwg
Y2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlUnVu
dGltZU9iamVjdEBJbnN0YW5jZUBCaW5kaW5nc0BLSlNAQFNBP0FWT2JqZWN0QDNAVzRCaW5kaW5n
TGFuZ3VhZ2VAMTIzQFBBWFBCVlJvb3RPYmplY3RAMjNAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBL
SlM6Ok9iamVjdCBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChl
bnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIHZvaWQgKiwgY2xh
c3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/ZGVmYXVsdFZhbHVl
QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFog
QCA2NCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpkZWZhdWx0VmFs
dWUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OlR5cGUpIGNvbnN0DQorICAgID9k
ZWxldGVBbGxQcm9wZXJ0aWVzQE9iamVjdEltcEBLSlNAQFFBRVhQQVZFeGVjU3RhdGVAMkBAWiBA
IDY1IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZUFsbFByb3BlcnRpZXMoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKikNCisgICAgP2RlbGV0ZVByb3BlcnR5QE9iamVjdEltcEBLSlNA
QFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNjYgTk9OQU1FIDsgYm9v
bCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
Y2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpDQorICAgID9kZWxldGVQcm9wZXJ0eUBPYmpl
Y3RJbXBAS0pTQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDY3IE5PTkFNRSA7IGJvb2wgS0pT
OjpPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2ln
bmVkIGludCkNCisgICAgP2RlcmVmVmFsdWVzQExpc3RAS0pTQEBBQUVYWFogQCA2OCBOT05BTUUg
OyB2b2lkIEtKUzo6TGlzdDo6ZGVyZWZWYWx1ZXModm9pZCkNCisgICAgP2Rlc3Ryb3lAUmVwQFVT
dHJpbmdAS0pTQEBRQUVYWFogQCA2OSBOT05BTUUgOyB2b2lkIEtKUzo6VVN0cmluZzo6UmVwOjpk
ZXN0cm95KHZvaWQpDQorICAgID9kaXNwYXRjaFRvT2JqZWN0QFZhbHVlSW1wQEtKU0BAUUJFP0FW
T2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFogQCA3MCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVj
dCBLSlM6OlZhbHVlSW1wOjpkaXNwYXRjaFRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICop
IGNvbnN0DQorICAgID9keW5hbWljQ2FzdEBPYmplY3RAS0pTQEBTQT9BVjEyQEFCVlZhbHVlQDJA
QFogQCA3MSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdDo6ZHluYW1pY0Nh
c3QoY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KKyAgICA/ZXF1YWxASWRlbnRpZmllckBLSlNA
QENBX05QQVVSZXBAVVN0cmluZ0AyQFBCREBaIEAgNzIgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50
aWZpZXI6OmVxdWFsKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqLCBjaGFyIGNvbnN0ICopDQor
ICAgID9lcXVhbEBJZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJVVUNoYXJA
MkBIQFogQCA3MyBOT05BTUUgOyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtK
Uzo6VVN0cmluZzo6UmVwICosIHN0cnVjdCBLSlM6OlVDaGFyIGNvbnN0ICosIGludCkNCisgICAg
P2V2YWx1YXRlQEludGVycHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdA
MkBBQlZWYWx1ZUAyQDBAWiBAIDc0IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6
OkludGVycHJldGVyOjpldmFsdWF0ZShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3Mg
S0pTOjpWYWx1ZSBjb25zdCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCisgICAgP2V2
YWx1YXRlQEludGVycHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBI
MEFCVlZhbHVlQDJAQFogQCA3NSBOT05BTUUgOyBjbGFzcyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJ
bnRlcnByZXRlcjo6ZXZhbHVhdGUoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCwgY2xh
c3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAg
P2ZpbmRFbnRyeUBMb29rdXBAS0pTQEBTQVBCVkhhc2hFbnRyeUAyQFBCVkhhc2hUYWJsZUAyQEFC
VklkZW50aWZpZXJAMkBAWiBAIDc2IE5PTkFNRSA7IGNsYXNzIEtKUzo6SGFzaEVudHJ5IGNvbnN0
ICogS0pTOjpMb29rdXA6OmZpbmRFbnRyeShjbGFzcyBLSlM6Okhhc2hUYWJsZSBjb25zdCAqLCBj
bGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikNCisgICAgP2Zyb21AVVN0cmluZ0BLSlNAQFNB
P0FWMTJASkBaIEAgNzcgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6VVN0cmluZzo6
ZnJvbShsb25nKQ0KKyAgICA/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhl
Y1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzggTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1
ZSBLSlM6Ok9iamVjdEltcDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6
SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9B
VlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJASUBaIEAgNzkgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1
ZSBLSlM6Ok9iamVjdEltcDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGlu
dCkgY29uc3QNCisgICAgP2dldEBQcm9wZXJ0eU1hcEBLSlNAQFFCRVBBVlZhbHVlSW1wQDJAQUJW
SWRlbnRpZmllckAyQEBaIEAgODAgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZUltcCAqIEtKUzo6
UHJvcGVydHlNYXA6OmdldChjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisg
ICAgP2dsb2JhbEV4ZWNASW50ZXJwcmV0ZXJAS0pTQEBRQUVQQVZFeGVjU3RhdGVAMkBYWiBAIDgx
IE5PTkFNRSA7IGNsYXNzIEtKUzo6RXhlY1N0YXRlICogS0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFs
RXhlYyh2b2lkKQ0KKyAgICA/Z2xvYmFsT2JqZWN0QEludGVycHJldGVyQEtKU0BAUUJFQUFWT2Jq
ZWN0QDJAWFogQCA4MiBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCAmIEtKUzo6SW50ZXJwcmV0
ZXI6Omdsb2JhbE9iamVjdCh2b2lkKSBjb25zdA0KKyAgICA/aGFzSW5zdGFuY2VAT2JqZWN0SW1w
QEtKU0BAVUFFP0FWQm9vbGVhbkAyQFBBVkV4ZWNTdGF0ZUAyQEFCVlZhbHVlQDJAQFogQCA4MyBO
T05BTUUgOyBjbGFzcyBLSlM6OkJvb2xlYW4gS0pTOjpPYmplY3RJbXA6Omhhc0luc3RhbmNlKGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2hh
c093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEBaIEAgODQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0
DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElA
WiBAIDg1IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5
QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
ODYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAg
ID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBA
IDg3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9i
amVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODggTk9O
QU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUg
KiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0
eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg5IE5PTkFNRSA7IGJvb2wg
S0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVk
IGludCkgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhl
Y1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgOTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVj
dEltcDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVu
dGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBV
QkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDkxIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6
Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QN
CisgICAgP2ltcEF0QExpc3RAS0pTQEBRQkVQQVZWYWx1ZUltcEAyQEhAWiBAIDkyIE5PTkFNRSA7
IGNsYXNzIEtKUzo6VmFsdWVJbXAgKiBLSlM6Okxpc3Q6OmltcEF0KGludCkgY29uc3QNCisgICAg
P2ltcGxlbWVudHNDYWxsQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA5MyBOT05BTUUgOyBib29s
IEtKUzo6T2JqZWN0SW1wOjppbXBsZW1lbnRzQ2FsbCh2b2lkKSBjb25zdA0KKyAgICA/aW1wbGVt
ZW50c0NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgOTQgTk9OQU1FIDsgYm9vbCBL
SlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0NvbnN0cnVjdCh2b2lkKSBjb25zdA0KKyAgICA/aW1w
bGVtZW50c0hhc0luc3RhbmNlQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA5NSBOT05BTUUgOyBi
b29sIEtKUzo6T2JqZWN0SW1wOjppbXBsZW1lbnRzSGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCisg
ICAgP2luY1N0YXRlbWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgOTYgTk9OQU1F
IDsgdm9pZCBLSlM6OkludGVycHJldGVyOjppbmNTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KKyAgICA/
aW5oZXJpdHNAT2JqZWN0SW1wQEtKU0BAUUJFX05QQlVDbGFzc0luZm9AMkBAWiBAIDk3IE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmluaGVyaXRzKHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBj
b25zdCAqKSBjb25zdA0KKyAgICA/aW5pdEdsb2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFB
RVhYWiBAIDk4IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVj
dCh2b2lkKQ0KKyAgICA/aXNOdWxsQFVTdHJpbmdAS0pTQEBRQkVfTlhaIEAgOTkgTk9OQU1FIDsg
Ym9vbCBLSlM6OlVTdHJpbmc6OmlzTnVsbCh2b2lkKSBjb25zdA0KKyAgICA/bGVuZ3RoUHJvcGVy
dHlAS0pTQEBZQUFCVklkZW50aWZpZXJAMUBYWiBAIDEwMCBOT05BTUUgOyBjbGFzcyBLSlM6Oklk
ZW50aWZpZXIgY29uc3QgJiBLSlM6Omxlbmd0aFByb3BlcnR5KHZvaWQpDQorICAgID9sZXhpY2Fs
SW50ZXJwcmV0ZXJARXhlY1N0YXRlQEtKU0BAUUJFUEFWSW50ZXJwcmV0ZXJAMkBYWiBAIDEwMSBO
T05BTUUgOyBjbGFzcyBLSlM6OkludGVycHJldGVyICogS0pTOjpFeGVjU3RhdGU6OmxleGljYWxJ
bnRlcnByZXRlcih2b2lkKSBjb25zdA0KKyAgICA/bG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFha
IEAgMTAyIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6bG9jayh2b2lkKQ0KKyAgICA/
bWFya0BPYmplY3RJbXBAS0pTQEBVQUVYWFogQCAxMDMgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVj
dEltcDo6bWFyayh2b2lkKQ0KKyAgICA/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDEw
NCBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lkKSBjb25zdA0KKyAgICA/
bWVzc2FnZVByb3BlcnR5QEtKU0BAWUFBQlZJZGVudGlmaWVyQDFAWFogQCAxMDUgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjptZXNzYWdlUHJvcGVydHkodm9pZCkN
CisgICAgP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVj
U3RhdGVAMkBfTkBaIEAgMTA2IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6
Ok9iamVjdDo6cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP3By
b3BMaXN0QE9iamVjdEltcEBLSlNAQFVBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVA
MkBfTkBaIEAgMTA3IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVj
dEltcDo6cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP3Byb3Rv
dHlwZUBPYmplY3RJbXBAS0pTQEBRQkU/QVZWYWx1ZUAyQFhaIEAgMTA4IE5PTkFNRSA7IGNsYXNz
IEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OnByb3RvdHlwZSh2b2lkKSBjb25zdA0KKyAgICA/
cHVzaEBTY29wZUNoYWluQEtKU0BAUUFFWEFCVjEyQEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQgS0pT
OjpTY29wZUNoYWluOjpwdXNoKGNsYXNzIEtKUzo6U2NvcGVDaGFpbiBjb25zdCAmKQ0KKyAgICA/
cHVzaEBTY29wZUNoYWluQEtKU0BAUUFFWFBBVk9iamVjdEltcEAyQEBaIEAgMTEwIE5PTkFNRSA7
IHZvaWQgS0pTOjpTY29wZUNoYWluOjpwdXNoKGNsYXNzIEtKUzo6T2JqZWN0SW1wICopDQorICAg
ID9wdXRAT2JqZWN0SW1wQEtKU0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBB
QlZWYWx1ZUAyQEhAWiBAIDExMSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXQoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGNsYXNz
IEtKUzo6VmFsdWUgY29uc3QgJiwgaW50KQ0KKyAgICA/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQ
QVZFeGVjU3RhdGVAMkBJQUJWVmFsdWVAMkBIQFogQCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6Ok9i
amVjdEltcDo6cHV0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCwgY2xhc3Mg
S0pTOjpWYWx1ZSBjb25zdCAmLCBpbnQpDQorICAgID9wdXREaXJlY3RAT2JqZWN0SW1wQEtKU0BA
UUFFWEFCVklkZW50aWZpZXJAMkBISEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJ
bXA6OnB1dERpcmVjdChjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiwgaW50LCBpbnQpDQor
ICAgID9wdXREaXJlY3RAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVklkZW50aWZpZXJAMkBQQVZWYWx1
ZUltcEAyQEhAWiBAIDExNCBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3Qo
Y2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWVJbXAgKiwgaW50
KQ0KKyAgICA/cmVmVmFsdWVzQExpc3RAS0pTQEBBQUVYWFogQCAxMTUgTk9OQU1FIDsgdm9pZCBL
SlM6Okxpc3Q6OnJlZlZhbHVlcyh2b2lkKQ0KKyAgICA/cmVsZWFzZUBMaXN0QEtKU0BAQUFFWFha
IEAgMTE2IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjpyZWxlYXNlKHZvaWQpDQorICAgID9yZWxl
YXNlQFNjb3BlQ2hhaW5AS0pTQEBBQUVYWFogQCAxMTcgTk9OQU1FIDsgdm9pZCBLSlM6OlNjb3Bl
Q2hhaW46OnJlbGVhc2Uodm9pZCkNCisgICAgP3JlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXNAUm9v
dE9iamVjdEBCaW5kaW5nc0BLSlNAQFFBRVhYWiBAIDExOCBOT05BTUUgOyB2b2lkIEtKUzo6Qmlu
ZGluZ3M6OlJvb3RPYmplY3Q6OnJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXModm9pZCkNCisgICAg
P3JlbW92ZU5hdGl2ZVJlZmVyZW5jZUBCaW5kaW5nc0BLSlNAQFlBWFBBVk9iamVjdEltcEAyQEBa
IEAgMTE5IE5PTkFNRSA7IHZvaWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNl
KGNsYXNzIEtKUzo6T2JqZWN0SW1wICopDQorICAgID9yZXNldFN0YXRlbWVudENvdW50QEludGVy
cHJldGVyQEtKU0BAUUFFWFhaIEAgMTIwIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6
cmVzZXRTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KKyAgICA/cmVzdG9yZUBQcm9wZXJ0eU1hcEBLSlNA
QFFBRVhBQlZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDEyMSBOT05BTUUgOyB2b2lkIEtKUzo6UHJv
cGVydHlNYXA6OnJlc3RvcmUoY2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMgY29uc3QgJikNCisg
ICAgP3Jlc3RvcmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFBRVhBQlZTYXZlZEJ1aWx0aW5z
QDJAQFogQCAxMjIgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpyZXN0b3JlQnVpbHRp
bnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zIGNvbnN0ICYpDQorICAgID9zYXZlQFByb3BlcnR5
TWFwQEtKU0BAUUJFWEFBVlNhdmVkUHJvcGVydGllc0AyQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQg
S0pTOjpQcm9wZXJ0eU1hcDo6c2F2ZShjbGFzcyBLSlM6OlNhdmVkUHJvcGVydGllcyAmKSBjb25z
dA0KKyAgICA/c2F2ZUJ1aWx0aW5zQEludGVycHJldGVyQEtKU0BAUUJFWEFBVlNhdmVkQnVpbHRp
bnNAMkBAWiBAIDEyNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNhdmVCdWlsdGlu
cyhjbGFzcyBLSlM6OlNhdmVkQnVpbHRpbnMgJikgY29uc3QNCisgICAgP3NldENvbXBhdE1vZGVA
SW50ZXJwcmV0ZXJAS0pTQEBRQUVYVzRDb21wYXRNb2RlQDEyQEBaIEAgMTI1IE5PTkFNRSA7IHZv
aWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0Q29tcGF0TW9kZShlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6
OkNvbXBhdE1vZGUpDQorICAgID9zZXRJbnRlcnByZXRlckBSb290T2JqZWN0QEJpbmRpbmdzQEtK
U0BAUUFFWFBBVkludGVycHJldGVyQDNAQFogQCAxMjYgTk9OQU1FIDsgdm9pZCBLSlM6OkJpbmRp
bmdzOjpSb290T2JqZWN0OjpzZXRJbnRlcnByZXRlcihjbGFzcyBLSlM6OkludGVycHJldGVyICop
DQorICAgID9zZXRQcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVlZhbHVlQDJAQFogQCAx
MjcgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6c2V0UHJvdG90eXBlKGNsYXNzIEtKUzo6
VmFsdWUgY29uc3QgJikNCisgICAgP3NldFNob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRl
ckBLSlNAQFNBWF9OQFogQCAxMjggTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpzZXRT
aG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCkNCisgICAgP3Nob3VsZFByaW50RXhjZXB0aW9uc0BJ
bnRlcnByZXRlckBLSlNAQFNBX05YWiBAIDEyOSBOT05BTUUgOyBib29sIEtKUzo6SW50ZXJwcmV0
ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucyh2b2lkKQ0KKyAgICA/dG9BcnJheUluZGV4QFVTdHJp
bmdAS0pTQEBRQkVJUEFfTkBaIEAgMTMwIE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlVTdHJp
bmc6OnRvQXJyYXlJbmRleChib29sICopIGNvbnN0DQorICAgID90b0Jvb2xlYW5AT2JqZWN0SW1w
QEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBAWiBAIDEzMSBOT05BTUUgOyBib29sIEtKUzo6T2Jq
ZWN0SW1wOjp0b0Jvb2xlYW4oY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3Rv
SW50MzJAVmFsdWVJbXBAS0pTQEBRQkVIUEFWRXhlY1N0YXRlQDJAQFogQCAxMzIgTk9OQU1FIDsg
aW50IEtKUzo6VmFsdWVJbXA6OnRvSW50MzIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QN
CisgICAgP3RvSW50ZWdlckBWYWx1ZUltcEBLSlNAQFFCRU5QQVZFeGVjU3RhdGVAMkBAWiBAIDEz
MyBOT05BTUUgOyBkb3VibGUgS0pTOjpWYWx1ZUltcDo6dG9JbnRlZ2VyKGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICopIGNvbnN0DQorICAgID90b051bWJlckBPYmplY3RJbXBAS0pTQEBVQkVOUEFWRXhl
Y1N0YXRlQDJAQFogQCAxMzQgTk9OQU1FIDsgZG91YmxlIEtKUzo6T2JqZWN0SW1wOjp0b051bWJl
cihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9PYmplY3RAT2JqZWN0SW1w
QEtKU0BAVUJFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFogQCAxMzUgTk9OQU1FIDsgY2xh
c3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJbXA6OnRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICopIGNvbnN0DQorICAgID90b1ByaW1pdGl2ZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1
ZUAyQFBBVkV4ZWNTdGF0ZUAyQFc0VHlwZUAyQEBaIEAgMTM2IE5PTkFNRSA7IGNsYXNzIEtKUzo6
VmFsdWUgS0pTOjpPYmplY3RJbXA6OnRvUHJpbWl0aXZlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IGVudW0gS0pTOjpUeXBlKSBjb25zdA0KKyAgICA/dG9TdHJpbmdAT2JqZWN0SW1wQEtKU0BAVUJF
P0FWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM3IE5PTkFNRSA7IGNsYXNzIEtKUzo6
VVN0cmluZyBLSlM6Ok9iamVjdEltcDo6dG9TdHJpbmcoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikg
Y29uc3QNCisgICAgP3RvVUludDE2QFZhbHVlSW1wQEtKU0BAUUJFR1BBVkV4ZWNTdGF0ZUAyQEBa
IEAgMTM4IE5PTkFNRSA7IHVuc2lnbmVkIHNob3J0IEtKUzo6VmFsdWVJbXA6OnRvVUludDE2KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b1VJbnQzMkBWYWx1ZUltcEBLSlNA
QEVCRV9OQUFJQFogQCAxMzkgTk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQzMih1
bnNpZ25lZCBpbnQgJikgY29uc3QNCisgICAgP3RvVUludDMyQFZhbHVlSW1wQEtKU0BAUUJFSVBB
VkV4ZWNTdGF0ZUAyQEBaIEAgMTQwIE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlZhbHVlSW1w
Ojp0b1VJbnQzMihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9VTG9uZ0BV
U3RyaW5nQEtKU0BAUUJFS1BBX05AWiBAIDE0MSBOT05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6
VVN0cmluZzo6dG9VTG9uZyhib29sICopIGNvbnN0DQorICAgID90eXBlQE9iamVjdEltcEBLSlNA
QFVCRT9BVzRUeXBlQDJAWFogQCAxNDIgTk9OQU1FIDsgZW51bSBLSlM6OlR5cGUgS0pTOjpPYmpl
Y3RJbXA6OnR5cGUodm9pZCkgY29uc3QNCisgICAgP3VubG9ja0BJbnRlcnByZXRlckBLSlNAQFNB
WFhaIEAgMTQzIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dW5sb2NrKHZvaWQpDQor
ICAgID92YWx1ZUBTdHJpbmdAS0pTQEBRQkU/QVZVU3RyaW5nQDJAWFogQCAxNDQgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6U3RyaW5nOjp2YWx1ZSh2b2lkKSBjb25zdA0KKyAgICA/
dmlydHVhbF9ob29rQEludGVycHJldGVyQEtKU0BATUFFWEhQQVhAWiBAIDE0NSBOT05BTUUgOyB2
b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnZpcnR1YWxfaG9vayhpbnQsIHZvaWQgKikNCisgICAgTlBO
X0NyZWF0ZU9iamVjdCBAIDE0NiBOT05BTUUNCisgICAgTlBOX0V2YWx1YXRlIEAgMTQ3IE5PTkFN
RQ0KKyAgICBOUE5fR2V0SW50SWRlbnRpZmllciBAIDE0OCBOT05BTUUNCisgICAgTlBOX0dldFBy
b3BlcnR5IEAgMTQ5IE5PTkFNRQ0KKyAgICBOUE5fR2V0U3RyaW5nSWRlbnRpZmllciBAIDE1MCBO
T05BTUUNCisgICAgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIEAgMTUxIE5PTkFNRQ0KKyAgICBO
UE5fSGFzTWV0aG9kIEAgMTUyIE5PTkFNRQ0KKyAgICBOUE5fSGFzUHJvcGVydHkgQCAxNTMgTk9O
QU1FDQorICAgIE5QTl9JZGVudGlmaWVySXNTdHJpbmcgQCAxNTQgTk9OQU1FDQorICAgIE5QTl9J
bnRGcm9tSWRlbnRpZmllciBAIDE1NSBOT05BTUUNCisgICAgTlBOX0ludm9rZSBAIDE1NiBOT05B
TUUNCisgICAgTlBOX0ludm9rZURlZmF1bHQgQCAxNTcgTk9OQU1FDQorICAgIE5QTl9SZWxlYXNl
T2JqZWN0IEAgMTU4IE5PTkFNRQ0KKyAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSBAIDE1OSBO
T05BTUUNCisgICAgTlBOX1JlbW92ZVByb3BlcnR5IEAgMTYwIE5PTkFNRQ0KKyAgICBOUE5fUmV0
YWluT2JqZWN0IEAgMTYxIE5PTkFNRQ0KKyAgICBOUE5fU2V0RXhjZXB0aW9uIEAgMTYyIE5PTkFN
RQ0KKyAgICBOUE5fU2V0UHJvcGVydHkgQCAxNjMgTk9OQU1FDQorICAgIE5QTl9VVEY4RnJvbUlk
ZW50aWZpZXIgQCAxNjQgTk9OQU1FDQorICAgIF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IEAgMTY1
IE5PTkFNRQ0KKyAgICBranNfc3RydG9kIEAgMTY2IE5PTkFNRQ0KIA0KSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2dyb3VwL0VBQkkvSmF2YXNjcmlwdENvcmVVLmRlZg0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2dyb3VwL0VBQkkvSmF2YXNjcmlwdENvcmVVLmRlZgkocmV2aXNpb24gMTcw
NjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAvRUFCSS9KYXZhc2NyaXB0Q29yZVUuZGVmCSh3
b3JraW5nIGNvcHkpDQpAQCAtMSwzOTAgKzEsNDM0IEBADQogRVhQT1JUUw0KLQlfWk4zS0pTMTBJ
ZGVudGlmaWVyM2FkZEVQS2MgQCAxIE5PTkFNRQ0KLQlfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQ
TlNfN1VTdHJpbmczUmVwRSBAIDIgTk9OQU1FDQotCV9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxF
UE5TXzdVU3RyaW5nM1JlcEVQS05TXzVVQ2hhckVpIEAgMyBOT05BTUUNCi0JX1pOM0tKUzEwSWRl
bnRpZmllcjVlcXVhbEVQTlNfN1VTdHJpbmczUmVwRVBLYyBAIDQgTk9OQU1FDQotCV9aTjNLSlMx
MFNjb3BlQ2hhaW40cHVzaEVQTlNfOU9iamVjdEltcEUgQCA1IE5PTkFNRQ0KLQlfWk4zS0pTMTBT
Y29wZUNoYWluN3JlbGVhc2VFdiBAIDYgTk9OQU1FDQotCV9aTjNLSlMxMFNjb3BlQ2hhaW5hU0VS
S1MwXyBAIDcgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTBnbG9iYWxFeGVjRXYgQCA4
IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjEydmlydHVhbF9ob29rRWlQdiBAIDkgTk9O
QU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTNzZXRDb21wYXRNb2RlRU5TMF8xMENvbXBhdE1v
ZGVFIEAgMTAgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTVyZXN0b3JlQnVpbHRpbnNF
UktOU18xM1NhdmVkQnVpbHRpbnNFIEAgMTEgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVy
MTZpbml0R2xvYmFsT2JqZWN0RXYgQCAxMiBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIx
N2luY1N0YXRlbWVudENvdW50RXYgQCAxMyBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIx
OXJlc2V0U3RhdGVtZW50Q291bnRFdiBAIDE0IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRl
cjIxc2hvdWxkUHJpbnRFeGNlcHRpb25zRXYgQCAxNSBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJw
cmV0ZXIyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0ViIEAgMTYgTk9OQU1FDQotCV9aTjNLSlMx
MUludGVycHJldGVyNGxvY2tFdiBAIDE3IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjZ1
bmxvY2tFdiBAIDE4IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05T
XzdVU3RyaW5nRVJLTlNfNVZhbHVlRVMzXyBAIDE5IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnBy
ZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRWlTM19SS05TXzVWYWx1ZUUgQCAyMCBOT05BTUUN
Ci0JX1pOM0tKUzExSW50ZXJwcmV0ZXJDMUVSS05TXzZPYmplY3RFIEAgMjEgTk9OQU1FDQotCV9a
TjNLSlMxMUludGVycHJldGVyQzJFUktOU182T2JqZWN0RSBAIDIyIE5PTkFNRQ0KLQlfWk4zS0pT
MTFJbnRlcnByZXRlckQwRXYgQCAyMyBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXJEMUV2
IEAgMjQgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyRDJFdiBAIDI1IE5PTkFNRQ0KLQlf
Wk4zS0pTMTFQcm9wZXJ0eU1hcDdyZXN0b3JlRVJLTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMjYg
Tk9OQU1FDQotCV9aTjNLSlMxNGxlbmd0aFByb3BlcnR5RXYgQCAyNyBOT05BTUUNCi0JX1pOM0tK
UzE1bWVzc2FnZVByb3BlcnR5RXYgQCAyOCBOT05BTUUNCi0JX1pOM0tKUzRMaXN0MTFkZXJlZlZh
bHVlc0V2IEAgMjkgTk9OQU1FDQotCV9aTjNLSlM0TGlzdDZhcHBlbmRFUE5TXzhWYWx1ZUltcEUg
QCAzMCBOT05BTUUNCi0JX1pOM0tKUzRMaXN0N3JlbGVhc2VFdiBAIDMxIE5PTkFNRQ0KLQlfWk4z
S0pTNExpc3Q5cmVmVmFsdWVzRXYgQCAzMiBOT05BTUUNCi0JX1pOM0tKUzRMaXN0QzFFdiBAIDMz
IE5PTkFNRQ0KLQlfWk4zS0pTNExpc3RDMkV2IEAgMzQgTk9OQU1FDQotCV9aTjNLSlM0TGlzdGFT
RVJLUzBfIEAgMzUgTk9OQU1FDQotCV9aTjNLSlM0TnVsbEMxRXYgQCAzNiBOT05BTUUNCi0JX1pO
M0tKUzROdWxsQzJFdiBAIDM3IE5PTkFNRQ0KLQlfWk4zS0pTNUVycm9yNmNyZWF0ZUVQTlNfOUV4
ZWNTdGF0ZUVOU185RXJyb3JUeXBlRVBLY2lpUEtOU183VVN0cmluZ0UgQCAzOCBOT05BTUUNCi0J
X1pOM0tKUzVWYWx1ZUMxRVBOU184VmFsdWVJbXBFIEAgMzkgTk9OQU1FDQotCV9aTjNLSlM1VmFs
dWVDMUVSS1MwXyBAIDQwIE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlQzJFUE5TXzhWYWx1ZUltcEUg
QCA0MSBOT05BTUUNCi0JX1pOM0tKUzVWYWx1ZUMyRVJLUzBfIEAgNDIgTk9OQU1FDQotCV9aTjNL
SlM1VmFsdWVEMUV2IEAgNDMgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVEMkV2IEAgNDQgTk9OQU1F
DQotCV9aTjNLSlM1VmFsdWVhU0VSS1MwXyBAIDQ1IE5PTkFNRQ0KLQlfWk4zS0pTNkxvb2t1cDlm
aW5kRW50cnlFUEtOU185SGFzaFRhYmxlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDQ2IE5PTkFNRQ0K
LQlfWk4zS0pTNk51bWJlckMxRWQgQCA0NyBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVpIEAg
NDggTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzFFaiBAIDQ5IE5PTkFNRQ0KLQlfWk4zS0pTNk51
bWJlckMxRWwgQCA1MCBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVtIEAgNTEgTk9OQU1FDQot
CV9aTjNLSlM2TnVtYmVyQzJFZCBAIDUyIE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRWkgQCA1
MyBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMkVqIEAgNTQgTk9OQU1FDQotCV9aTjNLSlM2TnVt
YmVyQzJFbCBAIDU1IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRW0gQCA1NiBOT05BTUUNCi0J
X1pOM0tKUzZPYmplY3QxMWR5bmFtaWNDYXN0RVJLTlNfNVZhbHVlRSBAIDU3IE5PTkFNRQ0KLQlf
Wk4zS0pTNk9iamVjdDRjYWxsRVBOU185RXhlY1N0YXRlRVJTMF9SS05TXzRMaXN0RSBAIDU4IE5P
TkFNRQ0KLQlfWk4zS0pTNlN0cmluZ0MxRVJLTlNfN1VTdHJpbmdFIEAgNTkgTk9OQU1FDQotCV9a
TjNLSlM2U3RyaW5nQzJFUktOU183VVN0cmluZ0UgQCA2MCBOT05BTUUNCi0JX1pOM0tKUzdCb29s
ZWFuQzFFYiBAIDYxIE5PTkFNRQ0KLQlfWk4zS0pTN0Jvb2xlYW5DMkViIEAgNjIgTk9OQU1FDQot
CV9aTjNLSlM3Q1N0cmluZ2FTRVBLYyBAIDYzIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmcxMGF0
dGFjaE51bGxFdiBAIDY0IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmczUmVwMTNjcmVhdGVDb3B5
aW5nRVBLTlNfNVVDaGFyRWkgQCA2NSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nM1JlcDZjcmVh
dGVFUE5TXzVVQ2hhckVpIEAgNjYgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzNSZXA3ZGVzdHJv
eUV2IEAgNjcgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzRmcm9tRWwgQCA2OCBOT05BTUUNCi0J
X1pOM0tKUzdVU3RyaW5nNmFwcGVuZEVQS2MgQCA2OSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5n
NmFwcGVuZEVSS1MwXyBAIDcwIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQS05TXzVVQ2hh
ckVpIEAgNzEgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRVBLYyBAIDcyIE5PTkFNRQ0KLQlf
Wk4zS0pTN1VTdHJpbmdDMUVQTlNfNVVDaGFyRWliIEAgNzMgTk9OQU1FDQotCV9aTjNLSlM3VVN0
cmluZ0MxRVJLUzBfUzJfIEAgNzQgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRWMgQCA3NSBO
T05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzFFdiBAIDc2IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJp
bmdDMkVQS05TXzVVQ2hhckVpIEAgNzcgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRVBLYyBA
IDc4IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVQTlNfNVVDaGFyRWliIEAgNzkgTk9OQU1F
DQotCV9aTjNLSlM3VVN0cmluZ0MyRVJLUzBfUzJfIEAgODAgTk9OQU1FDQotCV9aTjNLSlM3VVN0
cmluZ0MyRWMgQCA4MSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzJFdiBAIDgyIE5PTkFNRQ0K
LQlfWk4zS0pTN1VTdHJpbmdhU0VSS1MwXyBAIDgzIE5PTkFNRQ0KLQlfWk4zS0pTOFZhbHVlSW1w
ZGxFUHYgQCA4NCBOT05BTUUNCi0JX1pOM0tKUzhWYWx1ZUltcG53RWogQCA4NSBOT05BTUUNCi0J
X1pOM0tKUzlDb2xsZWN0b3I3Y29sbGVjdEV2IEAgODYgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0
SW1wMTFoYXNJbnN0YW5jZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzVWYWx1ZUUgQCA4NyBOT05BTUUN
Ci0JX1pOM0tKUzlPYmplY3RJbXAxMnNldFByb3RvdHlwZUVSS05TXzVWYWx1ZUUgQCA4OCBOT05B
TUUNCi0JX1pOM0tKUzlPYmplY3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRSBAIDg5IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRl
UHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDkwIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdElt
cDE5ZGVsZXRlQWxsUHJvcGVydGllc0VQTlNfOUV4ZWNTdGF0ZUUgQCA5MSBOT05BTUUNCi0JX1pO
M0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJLTlNf
NVZhbHVlRWkgQCA5MiBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0
YXRlRWpSS05TXzVWYWx1ZUVpIEAgOTMgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wNGNhbGxF
UE5TXzlFeGVjU3RhdGVFUk5TXzZPYmplY3RFUktOU180TGlzdEUgQCA5NCBOT05BTUUNCi0JX1pO
M0tKUzlPYmplY3RJbXA0bWFya0V2IEAgOTUgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOHBy
b3BMaXN0RVBOU185RXhlY1N0YXRlRWIgQCA5NiBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA5
Y29uc3RydWN0RVBOU185RXhlY1N0YXRlRVJLTlNfNExpc3RFIEAgOTcgTk9OQU1FDQotCV9aTjNL
SlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RVJLTlNfN1VT
dHJpbmdFaSBAIDk4IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18x
MElkZW50aWZpZXJFUE5TXzhWYWx1ZUltcEVpIEAgOTkgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0
SW1wOXB1dERpcmVjdEVSS05TXzEwSWRlbnRpZmllckVpaSBAIDEwMCBOT05BTUUNCi0JX1pOM0tK
UzlPYmplY3RJbXBDMUVSS05TXzZPYmplY3RFIEAgMTAxIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVj
dEltcEMxRXYgQCAxMDIgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wQzJFUktOU182T2JqZWN0
RSBAIDEwMyBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBDMkV2IEAgMTA0IE5PTkFNRQ0KLQlf
Wk4zS0pTOU9iamVjdEltcEQwRXYgQCAxMDUgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wRDFF
diBAIDEwNiBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBEMkV2IEAgMTA3IE5PTkFNRQ0KLQlf
Wk4zS0pTOVVuZGVmaW5lZEMxRXYgQCAxMDggTk9OQU1FDQotCV9aTjNLSlM5VW5kZWZpbmVkQzJF
diBAIDEwOSBOT05BTUUNCi0JX1pOM0tKU2VxRVJLTlNfN1VTdHJpbmdFUEtjIEAgMTEwIE5PTkFN
RQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMGNvbXBhdE1vZGVFdiBAIDExMSBOT05BTUUNCi0J
X1pOSzNLSlMxMUludGVycHJldGVyMTJidWlsdGluQXJyYXlFdiBAIDExMiBOT05BTUUNCi0JX1pO
SzNLSlMxMUludGVycHJldGVyMTJnbG9iYWxPYmplY3RFdiBAIDExMyBOT05BTUUNCi0JX1pOSzNL
SlMxMUludGVycHJldGVyMTJzYXZlQnVpbHRpbnNFUk5TXzEzU2F2ZWRCdWlsdGluc0UgQCAxMTQg
Tk9OQU1FDQotCV9aTkszS0pTMTFJbnRlcnByZXRlcjEzYnVpbHRpbk9iamVjdEV2IEAgMTE1IE5P
TkFNRQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIxNWJ1aWx0aW5GdW5jdGlvbkV2IEAgMTE2IE5P
TkFNRQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIyMmJ1aWx0aW5PYmplY3RQcm90b3R5cGVFdiBA
IDExNyBOT05BTUUNCi0JX1pOSzNLSlMxMVByb3BlcnR5TWFwM2dldEVSS05TXzEwSWRlbnRpZmll
ckUgQCAxMTggTk9OQU1FDQotCV9aTkszS0pTMTFQcm9wZXJ0eU1hcDRzYXZlRVJOU18xNVNhdmVk
UHJvcGVydGllc0UgQCAxMTkgTk9OQU1FDQotCV9aTkszS0pTNExpc3Q1aW1wQXRFaSBAIDEyMCBO
T05BTUUNCi0JX1pOSzNLSlM0TGlzdDhjb3B5VGFpbEV2IEAgMTIxIE5PTkFNRQ0KLQlfWk5LM0tK
UzZPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBA
IDEyMiBOT05BTUUNCi0JX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0
ZUVqIEAgMTIzIE5PTkFNRQ0KLQlfWk5LM0tKUzZPYmplY3QxNGhhc093blByb3BlcnR5RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDEyNCBOT05BTUUNCi0JX1pOSzNLSlM2U3Ry
aW5nNXZhbHVlRXYgQCAxMjUgTk9OQU1FDQotCV9aTkszS0pTN1VTdHJpbmcxMnRvQXJyYXlJbmRl
eEVQYiBAIDEyNiBOT05BTUUNCi0JX1pOSzNLSlM3VVN0cmluZzVhc2NpaUV2IEAgMTI3IE5PTkFN
RQ0KLQlfWk5LM0tKUzdVU3RyaW5nNmlzTnVsbEV2IEAgMTI4IE5PTkFNRQ0KLQlfWk5LM0tKUzdV
U3RyaW5nN3RvVUxvbmdFUGIgQCAxMjkgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wMTZkaXNw
YXRjaFRvT2JqZWN0RVBOU185RXhlY1N0YXRlRSBAIDEzMCBOT05BTUUNCi0JX1pOSzNLSlM4VmFs
dWVJbXA2bWFya2VkRXYgQCAxMzEgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wN3RvSW50MzJF
UE5TXzlFeGVjU3RhdGVFIEAgMTMyIE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQx
NkVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzMgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wOHRvVUlu
dDMyRVBOU185RXhlY1N0YXRlRSBAIDEzNCBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA4dG9V
SW50MzJFUmogQCAxMzUgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wOXRvSW50ZWdlckVQTlNf
OUV4ZWNTdGF0ZUUgQCAxMzYgTk9OQU1FDQotCV9aTkszS0pTOUV4ZWNTdGF0ZTE4bGV4aWNhbElu
dGVycHJldGVyRXYgQCAxMzcgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDExaGFzUHJvcGVy
dHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTM4IE5PTkFNRQ0KLQlfWk5L
M0tKUzlPYmplY3RJbXAxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxMzkgTk9OQU1F
DQotCV9aTkszS0pTOU9iamVjdEltcDExdG9QcmltaXRpdmVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5
cGVFIEAgMTQwIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxMmRlZmF1bHRWYWx1ZUVQTlNf
OUV4ZWNTdGF0ZUVOU180VHlwZUUgQCAxNDEgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE0
aGFzT3duUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTQyIE5P
TkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRl
RWogQCAxNDMgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE0aW1wbGVtZW50c0NhbGxFdiBA
IDE0NCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTlpbXBsZW1lbnRzQ29uc3RydWN0RXYg
QCAxNDUgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDIxaW1wbGVtZW50c0hhc0luc3RhbmNl
RXYgQCAxNDYgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDNnZXRFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFIEAgMTQ3IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAzZ2V0
RVBOU185RXhlY1N0YXRlRWogQCAxNDggTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDR0eXBl
RXYgQCAxNDkgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDZjYW5QdXRFUE5TXzlFeGVjU3Rh
dGVFUktOU18xMElkZW50aWZpZXJFIEAgMTUwIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA4
aW5oZXJpdHNFUEtOU185Q2xhc3NJbmZvRSBAIDE1MSBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0
SW1wOHRvTnVtYmVyRVBOU185RXhlY1N0YXRlRSBAIDE1MiBOT05BTUUNCi0JX1pOSzNLSlM5T2Jq
ZWN0SW1wOHRvT2JqZWN0RVBOU185RXhlY1N0YXRlRSBAIDE1MyBOT05BTUUNCi0JX1pOSzNLSlM5
T2JqZWN0SW1wOHRvU3RyaW5nRVBOU185RXhlY1N0YXRlRSBAIDE1NCBOT05BTUUNCi0JX1pOSzNL
SlM5T2JqZWN0SW1wOWNsYXNzSW5mb0V2IEAgMTU1IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJ
bXA5Y2xhc3NOYW1lRXYgQCAxNTYgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDlwcm90b3R5
cGVFdiBAIDE1NyBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOXRvQm9vbGVhbkVQTlNfOUV4
ZWNTdGF0ZUUgQCAxNTggTk9OQU1FDQotCV9aVElOM0tKUzEwQXNzaWduTm9kZUUgQCAxNTkgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBCb29sZWFuSW1wRSBAIDE2MCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMERlbGV0ZU5vZGVFIEAgMTYxIE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwTmVnYXRlTm9kZUUgQCAxNjIgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBOdW1iZXJOb2RlRSBAIDE2MyBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFByZWZpeE5vZGVFIEAgMTY0IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwUmVnRXhwTm9kZUUgQCAxNjUgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBSZXR1cm5Ob2RlRSBAIDE2NiBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFN0cmluZ05vZGVFIEAgMTY3IE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwU3dpdGNoTm9kZUUgQCAxNjggTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBUeXBlT2ZOb2RlRSBAIDE2OSBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUJpdE9wZXJOb2RlRSBAIDE3MCBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUJvb2xlYW5Ob2RlRSBAIDE3MSBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMURvV2hpbGVOb2RlRSBAIDE3MiBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUVsZW1lbnROb2RlRSBAIDE3MyBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUZpbmFsbHlOb2RlRSBAIDE3NCBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDE3NSBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUludGVycHJldGVyRSBAIDE3NiBOT05BTUUgREFUQSA4
IDsgIzxUST4jDQotCV9aVElOM0tKUzExTWF0aEZ1bmNJbXBFIEAgMTc3IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzExTmV3RXhwck5vZGVFIEAgMTc4IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzExUG9zdGZpeE5vZGVFIEAgMTc5IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMTgwIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzExVmFyRGVjbE5vZGVFIEAgMTgxIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzEyQ29udGludWVOb2RlRSBAIDE4MiBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAxODMgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJGdW5jRXhwck5vZGVFIEAgMTg0IE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEyUHJvcGVydHlOb2RlRSBAIDE4NSBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAxODYgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJVbmRlZmluZWRJbXBFIEAgMTg3IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzQWNjZXNzb3JOb2RlMUUgQCAxODggTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDE4OSBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMTkwIE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzQXJndW1lbnRzTm9kZUUgQCAxOTEg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNDYXNlQmxvY2tOb2RlRSBAIDE5
MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0RhdGVPYmplY3RJbXBFIEAg
MTkzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzR2xvYmFsRnVuY0ltcEUg
QCAxOTQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNNYXRoT2JqZWN0SW1w
RSBAIDE5NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM1BhcmFtZXRlck5v
ZGVFIEAgMTk2IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzU3RhdGVtZW50
Tm9kZUUgQCAxOTcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNVbmFyeVBs
dXNOb2RlRSBAIDE5OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFycmF5
T2JqZWN0SW1wRSBAIDE5OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFz
c2lnbkV4cHJOb2RlRSBAIDIwMCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
NEJpdHdpc2VOb3ROb2RlRSBAIDIwMSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxNENhc2VDbGF1c2VOb2RlRSBAIDIwMiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxNENsYXVzZUxpc3ROb2RlRSBAIDIwMyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDIwNCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxNExvZ2ljYWxOb3ROb2RlRSBAIDIwNSBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxNE5hdGl2ZUVycm9ySW1wRSBAIDIwNiBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxNFJlbGF0aW9uYWxOb2RlRSBAIDIwNyBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNUNvbmRpdGlvbmFsTm9kZUUgQCAyMDggTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVOdW1iZXJPYmplY3RJbXBFIEAgMjA5IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDIxMCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAyMTEg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAg
MjEyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1VmFyRGVjbExpc3ROb2Rl
RSBAIDIxMyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkFyZ3VtZW50TGlz
dE5vZGVFIEAgMjE0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2QXJyYXlJ
bnN0YW5jZUltcEUgQCAyMTUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZC
b29sZWFuT2JqZWN0SW1wRSBAIDIxNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxNkRhdGVQcm90b0Z1bmNJbXBFIEAgMjE3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAyMTggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTZGdW5jdGlvbkJvZHlOb2RlRSBAIDIxOSBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxNkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMjIwIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAyMjEgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAyMjIgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdBcnJheVByb3RvdHlwZUltcEUgQCAy
MjMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9k
ZUUgQCAyMjQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdEYXRlT2JqZWN0
RnVuY0ltcEUgQCAyMjUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdFcnJv
clByb3RvRnVuY0ltcEUgQCAyMjYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTdFeHByU3RhdGVtZW50Tm9kZUUgQCAyMjcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTdGdW5jdGlvbk9iamVjdEltcEUgQCAyMjggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAyMjkgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAyMzAgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdTdHJpbmdJbnN0YW5jZUltcEUgQCAyMzEgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMjMy
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1w
RSBAIDIzMyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOE9iamVjdFByb3Rv
RnVuY0ltcEUgQCAyMzQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThSZWdF
eHBQcm90b0Z1bmNJbXBFIEAgMjM1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzE4U291cmNlRWxlbWVudHNOb2RlRSBAIDIzNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxOFN0cmluZ1Byb3RvRnVuY0ltcEUgQCAyMzcgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAgMjM4IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzE5Qm9vbGVhblByb3RvRnVuY0ltcEUgQCAyMzkgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDI0
MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOUludGVybmFsRnVuY3Rpb25J
bXBFIEAgMjQxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE5U3RyaW5nT2Jq
ZWN0RnVuY0ltcEUgQCAyNDIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMjBG
dW5jdGlvblByb3RvRnVuY0ltcEUgQCAyNDMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMjBGdW5jdGlvblByb3RvdHlwZUltcEUgQCAyNDQgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTNE5vZGVFIEAgMjQ1IE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pU
SU4zS0pTNklmTm9kZUUgQCAyNDYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
N0FkZE5vZGVFIEAgMjQ3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzdGb3JO
b2RlRSBAIDI0OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM3TnVsbEltcEUg
QCAyNDkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTN1RyeU5vZGVFIEAgMjUw
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzhEZWJ1Z2dlckUgQCAyNTEgTk9O
QU1FIERBVEEgOCA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4TXVsdE5vZGVFIEAgMjUyIE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzhOdWxsTm9kZUUgQCAyNTMgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTOFRoaXNOb2RlRSBAIDI1NCBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlM4VmFsdWVJbXBFIEAgMjU1IE5PTkFNRSBEQVRBIDggOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTOFZvaWROb2RlRSBAIDI1NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlM4V2l0aE5vZGVFIEAgMjU3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzlBcnJheU5vZGVFIEAgMjU4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzlCbG9ja05vZGVFIEAgMjU5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzlCcmVha05vZGVFIEAgMjYwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlD
YXRjaE5vZGVFIEAgMjYxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlDb21t
YU5vZGVFIEAgMjYyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlFcXVhbE5v
ZGVFIEAgMjYzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlGb3JJbk5vZGVF
IEAgMjY0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlHcm91cE5vZGVFIEAg
MjY1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlMYWJlbE5vZGVFIEAgMjY2
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlOdW1iZXJJbXBFIEAgMjY3IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlPYmplY3RJbXBFIEAgMjY4IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlSZWdFeHBJbXBFIEAgMjY5IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlTaGlmdE5vZGVFIEAgMjcwIE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlTdHJpbmdJbXBFIEAgMjcxIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzlUaHJvd05vZGVFIEAgMjcyIE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzlXaGlsZU5vZGVFIEAgMjczIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVFZOM0tKUzEwQXNzaWduTm9kZUUgQCAyNzQgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTBCb29sZWFuSW1wRSBAIDI3NSBOT05BTUUgREFUQSA0OCA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlMxMERlbGV0ZU5vZGVFIEAgMjc2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzEwTmVnYXRlTm9kZUUgQCAyNzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTBOdW1iZXJOb2RlRSBAIDI3OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxMFByZWZpeE5vZGVFIEAgMjc5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzEwUmVnRXhwTm9kZUUgQCAyODAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTBSZXR1cm5Ob2RlRSBAIDI4MSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxMFN0cmluZ05vZGVFIEAgMjgyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzEwU3dpdGNoTm9kZUUgQCAyODMgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTBUeXBlT2ZOb2RlRSBAIDI4NCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxMUJpdE9wZXJOb2RlRSBAIDI4NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxMUJvb2xlYW5Ob2RlRSBAIDI4NiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxMURvV2hpbGVOb2RlRSBAIDI4NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxMUVsZW1lbnROb2RlRSBAIDI4OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxMUZpbmFsbHlOb2RlRSBAIDI4OSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDI5MCBOT05BTUUgREFUQSAxNDggOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTFJbnRlcnByZXRlckUgQCAyOTEgTk9OQU1FIERBVEEgNDAgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTFNYXRoRnVuY0ltcEUgQCAyOTIgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzExTmV3RXhwck5vZGVFIEAgMjkzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzExUG9zdGZpeE5vZGVFIEAgMjk0IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMjk1IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzExVmFyRGVjbE5vZGVFIEAgMjk2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzEyQ29udGludWVOb2RlRSBAIDI5NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAyOTggTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTJGdW5jRXhwck5vZGVFIEAgMjk5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzEyUHJvcGVydHlOb2RlRSBAIDMwMCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAzMDEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTJVbmRlZmluZWRJbXBFIEAgMzAyIE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMUUgQCAzMDMgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDMwNCBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMzA1IE5PTkFNRSBEQVRBIDEzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM0FyZ3VtZW50c05vZGVFIEAgMzA2IE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzQ2FzZUJsb2NrTm9kZUUgQCAzMDcgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDMwOCBOT05BTUUgREFU
QSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDMwOSBOT05BTUUg
REFUQSAxNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDMxMCBOT05B
TUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDMxMSBO
T05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMzEy
IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzVW5hcnlQbHVzTm9kZUUgQCAz
MTMgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTRBcnJheU9iamVjdEltcEUg
QCAzMTQgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0QXNzaWduRXhwck5v
ZGVFIEAgMzE1IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Qml0d2lzZU5v
dE5vZGVFIEAgMzE2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Q2FzZUNs
YXVzZU5vZGVFIEAgMzE3IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Q2xh
dXNlTGlzdE5vZGVFIEAgMzE4IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0
RXJyb3JPYmplY3RJbXBFIEAgMzE5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxNExvZ2ljYWxOb3ROb2RlRSBAIDMyMCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxNE5hdGl2ZUVycm9ySW1wRSBAIDMyMSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTRSZWxhdGlvbmFsTm9kZUUgQCAzMjIgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMzIzIE5PTkFNRSBEQVRBIDM2IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzE1TnVtYmVyT2JqZWN0SW1wRSBAIDMyNCBOT05BTUUgREFUQSAxMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVPYmplY3RPYmplY3RJbXBFIEAgMzI1IE5PTkFNRSBEQVRB
IDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAzMjYgTk9OQU1F
IERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1U3RyaW5nT2JqZWN0SW1wRSBAIDMyNyBO
T05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVWYXJEZWNsTGlzdE5vZGVFIEAg
MzI4IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2QXJndW1lbnRMaXN0Tm9k
ZUUgQCAzMjkgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZBcnJheUluc3Rh
bmNlSW1wRSBAIDMzMCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZCb29s
ZWFuT2JqZWN0SW1wRSBAIDMzMSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTZEYXRlUHJvdG9GdW5jSW1wRSBAIDMzMiBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTZEYXRlUHJvdG90eXBlSW1wRSBAIDMzMyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTZGdW5jdGlvbkJvZHlOb2RlRSBAIDMzNCBOT05BTUUgREFUQSA0NCA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxNkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMzM1IE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAzMzYgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAzMzcgTk9O
QU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3QXJyYXlQcm90b3R5cGVJbXBFIEAg
MzM4IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0JpbmFyeUxvZ2ljYWxO
b2RlRSBAIDMzOSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0RhdGVPYmpl
Y3RGdW5jSW1wRSBAIDM0MCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdF
cnJvclByb3RvRnVuY0ltcEUgQCAzNDEgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMzQyIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzE3RnVuY3Rpb25PYmplY3RJbXBFIEAgMzQzIE5PTkFNRSBEQVRBIDEzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxN09iamVjdExpdGVyYWxOb2RlRSBAIDM0NCBOT05BTUUgREFUQSAz
NiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN1Byb3BlcnR5VmFsdWVOb2RlRSBAIDM0NSBOT05BTUUg
REFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDM0NiBO
T05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVF
IEAgMzQ3IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4TnVtYmVyUHJvdG9G
dW5jSW1wRSBAIDM0OCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThPYmpl
Y3RQcm90b0Z1bmNJbXBFIEAgMzQ5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxOFJlZ0V4cFByb3RvRnVuY0ltcEUgQCAzNTAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzE4U291cmNlRWxlbWVudHNOb2RlRSBAIDM1MSBOT05BTUUgREFUQSA0NCA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxOFN0cmluZ1Byb3RvRnVuY0ltcEUgQCAzNTIgTk9OQU1FIERBVEEg
MTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4U3RyaW5nUHJvdG90eXBlSW1wRSBAIDM1MyBOT05B
TUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlCb29sZWFuUHJvdG9GdW5jSW1wRSBA
IDM1NCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlEZWNsYXJlZEZ1bmN0
aW9uSW1wRSBAIDM1NSBOT05BTUUgREFUQSAxNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlJbnRl
cm5hbEZ1bmN0aW9uSW1wRSBAIDM1NiBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTlTdHJpbmdPYmplY3RGdW5jSW1wRSBAIDM1NyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMjBGdW5jdGlvblByb3RvRnVuY0ltcEUgQCAzNTggTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzIwRnVuY3Rpb25Qcm90b3R5cGVJbXBFIEAgMzU5IE5PTkFN
RSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM0Tm9kZUUgQCAzNjAgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTNklmTm9kZUUgQCAzNjEgTk9OQU1FIERBVEEgNDQgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTN0FkZE5vZGVFIEAgMzYyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzdGb3JOb2RlRSBAIDM2MyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlM3TnVsbEltcEUgQCAzNjQgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4z
S0pTN1RyeU5vZGVFIEAgMzY1IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhE
ZWJ1Z2dlckUgQCAzNjYgTk9OQU1FIERBVEEgNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOE11bHRO
b2RlRSBAIDM2NyBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4TnVsbE5vZGVF
IEAgMzY4IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhUaGlzTm9kZUUgQCAz
NjkgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOFZhbHVlSW1wRSBAIDM3MCBO
T05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4Vm9pZE5vZGVFIEAgMzcxIE5PTkFN
RSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhXaXRoTm9kZUUgQCAzNzIgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUFycmF5Tm9kZUUgQCAzNzMgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUJsb2NrTm9kZUUgQCAzNzQgTk9OQU1FIERBVEEgNDQg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTOUJyZWFrTm9kZUUgQCAzNzUgTk9OQU1FIERBVEEgNDQgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTOUNhdGNoTm9kZUUgQCAzNzYgTk9OQU1FIERBVEEgNDQgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTOUNvbW1hTm9kZUUgQCAzNzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTOUVxdWFsTm9kZUUgQCAzNzggTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTOUZvckluTm9kZUUgQCAzNzkgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTOUdyb3VwTm9kZUUgQCAzODAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTOUxhYmVsTm9kZUUgQCAzODEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
OU51bWJlckltcEUgQCAzODIgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOU9i
amVjdEltcEUgQCAzODMgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlSZWdF
eHBJbXBFIEAgMzg0IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5U2hpZnRO
b2RlRSBAIDM4NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5U3RyaW5nSW1w
RSBAIDM4NiBOT05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5VGhyb3dOb2RlRSBA
IDM4NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5V2hpbGVOb2RlRSBAIDM4
OCBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KKyAgICBOUE5fQ3JlYXRlT2JqZWN0IEAgMSBOT05B
TUUNCisgICAgTlBOX0V2YWx1YXRlIEAgMiBOT05BTUUNCisgICAgTlBOX0dldEludElkZW50aWZp
ZXIgQCAzIE5PTkFNRQ0KKyAgICBOUE5fR2V0UHJvcGVydHkgQCA0IE5PTkFNRQ0KKyAgICBOUE5f
R2V0U3RyaW5nSWRlbnRpZmllciBAIDUgTk9OQU1FDQorICAgIE5QTl9HZXRTdHJpbmdJZGVudGlm
aWVycyBAIDYgTk9OQU1FDQorICAgIE5QTl9IYXNNZXRob2QgQCA3IE5PTkFNRQ0KKyAgICBOUE5f
SGFzUHJvcGVydHkgQCA4IE5PTkFNRQ0KKyAgICBOUE5fSWRlbnRpZmllcklzU3RyaW5nIEAgOSBO
T05BTUUNCisgICAgTlBOX0ludEZyb21JZGVudGlmaWVyIEAgMTAgTk9OQU1FDQorICAgIE5QTl9J
bnZva2UgQCAxMSBOT05BTUUNCisgICAgTlBOX0ludm9rZURlZmF1bHQgQCAxMiBOT05BTUUNCisg
ICAgTlBOX1JlbGVhc2VPYmplY3QgQCAxMyBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VWYXJpYW50
VmFsdWUgQCAxNCBOT05BTUUNCisgICAgTlBOX1JlbW92ZVByb3BlcnR5IEAgMTUgTk9OQU1FDQor
ICAgIE5QTl9SZXRhaW5PYmplY3QgQCAxNiBOT05BTUUNCisgICAgTlBOX1NldEV4Y2VwdGlvbiBA
IDE3IE5PTkFNRQ0KKyAgICBOUE5fU2V0UHJvcGVydHkgQCAxOCBOT05BTUUNCisgICAgTlBOX1VU
RjhGcm9tSWRlbnRpZmllciBAIDE5IE5PTkFNRQ0KKyAgICBfTlBOX0NyZWF0ZVNjcmlwdE9iamVj
dCBAIDIwIE5PTkFNRQ0KKyAgICBfWjI0TlBOX1NldEV4Y2VwdGlvbldpdGhVVEY4UDhOUE9iamVj
dFBLY2kgQCAyMSBOT05BTUUNCisgICAgX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEtjIEAgMjIg
Tk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZpZXIzYWRkRVBOU183VVN0cmluZzNSZXBFIEAg
MjMgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1Jl
cEVQS05TXzVVQ2hhckVpIEAgMjQgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZpZXI1ZXF1
YWxFUE5TXzdVU3RyaW5nM1JlcEVQS2MgQCAyNSBOT05BTUUNCisgICAgX1pOM0tKUzEwU2NvcGVD
aGFpbjRwdXNoRVBOU185T2JqZWN0SW1wRSBAIDI2IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBTY29w
ZUNoYWluN3JlbGVhc2VFdiBAIDI3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBTY29wZUNoYWluYVNF
UktTMF8gQCAyOCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxMGdsb2JhbEV4ZWNF
diBAIDI5IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjEydmlydHVhbF9ob29rRWlQ
diBAIDMwIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjEzc2V0Q29tcGF0TW9kZUVO
UzBfMTBDb21wYXRNb2RlRSBAIDMxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE1
cmVzdG9yZUJ1aWx0aW5zRVJLTlNfMTNTYXZlZEJ1aWx0aW5zRSBAIDMyIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTMTFJbnRlcnByZXRlcjE2aW5pdEdsb2JhbE9iamVjdEV2IEAgMzMgTk9OQU1FDQorICAg
IF9aTjNLSlMxMUludGVycHJldGVyMTdpbmNTdGF0ZW1lbnRDb3VudEV2IEAgMzQgTk9OQU1FDQor
ICAgIF9aTjNLSlMxMUludGVycHJldGVyMTlyZXNldFN0YXRlbWVudENvdW50RXYgQCAzNSBOT05B
TUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2IEAg
MzYgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2Vw
dGlvbnNFYiBAIDM3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjMwY3JlYXRlTGFu
Z3VhZ2VJbnN0YW5jZUZvclZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzhCaW5kaW5nczhJbnN0YW5j
ZTE1QmluZGluZ0xhbmd1YWdlRVJLTlNfNk9iamVjdEVQS05TM18xMFJvb3RPYmplY3RFU0JfIEAg
MzggTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyNGxvY2tFdiBAIDM5IE5PTkFNRQ0K
KyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjZ1bmxvY2tFdiBAIDQwIE5PTkFNRQ0KKyAgICBfWk4z
S0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRVJLTlNfNVZhbHVlRVMzXyBA
IDQxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3Ry
aW5nRWlTM19SS05TXzVWYWx1ZUUgQCA0MiBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0
ZXJDMUVSS05TXzZPYmplY3RFIEAgNDMgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVy
QzJFUktOU182T2JqZWN0RSBAIDQ0IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlckQw
RXYgQCA0NSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXJEMUV2IEAgNDYgTk9OQU1F
DQorICAgIF9aTjNLSlMxMUludGVycHJldGVyRDJFdiBAIDQ3IE5PTkFNRQ0KKyAgICBfWk4zS0pT
MTFQcm9wZXJ0eU1hcDdyZXN0b3JlRVJLTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgNDggTk9OQU1F
DQorICAgIF9aTjNLSlMxNGxlbmd0aFByb3BlcnR5RXYgQCA0OSBOT05BTUUNCisgICAgX1pOM0tK
UzE1bWVzc2FnZVByb3BlcnR5RXYgQCA1MCBOT05BTUUNCisgICAgX1pOM0tKUzE2UnVudGltZU9i
amVjdEltcEMxRVBOU184QmluZGluZ3M4SW5zdGFuY2VFYiBAIDUxIE5PTkFNRQ0KKyAgICBfWk4z
S0pTMTZSdW50aW1lT2JqZWN0SW1wQzJFUE5TXzhCaW5kaW5nczhJbnN0YW5jZUViIEAgNTIgTk9O
QU1FDQorICAgIF9aTjNLSlM0TGlzdDExZGVyZWZWYWx1ZXNFdiBAIDUzIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTNExpc3Q2YXBwZW5kRVBOU184VmFsdWVJbXBFIEAgNTQgTk9OQU1FDQorICAgIF9aTjNL
SlM0TGlzdDdyZWxlYXNlRXYgQCA1NSBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0OXJlZlZhbHVl
c0V2IEAgNTYgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdEMxRXYgQCA1NyBOT05BTUUNCisgICAg
X1pOM0tKUzRMaXN0QzJFdiBAIDU4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3RhU0VSS1MwXyBA
IDU5IE5PTkFNRQ0KKyAgICBfWk4zS0pTNE51bGxDMUV2IEAgNjAgTk9OQU1FDQorICAgIF9aTjNL
SlM0TnVsbEMyRXYgQCA2MSBOT05BTUUNCisgICAgX1pOM0tKUzVFcnJvcjZjcmVhdGVFUE5TXzlF
eGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2NpaVBLTlNfN1VTdHJpbmdFIEAgNjIgTk9OQU1FDQor
ICAgIF9aTjNLSlM1VmFsdWVDMUVQTlNfOFZhbHVlSW1wRSBAIDYzIE5PTkFNRQ0KKyAgICBfWk4z
S0pTNVZhbHVlQzFFUktTMF8gQCA2NCBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUMyRVBOU184
VmFsdWVJbXBFIEAgNjUgTk9OQU1FDQorICAgIF9aTjNLSlM1VmFsdWVDMkVSS1MwXyBAIDY2IE5P
TkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlRDFFdiBAIDY3IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZh
bHVlRDJFdiBAIDY4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlYVNFUktTMF8gQCA2OSBOT05B
TUUNCisgICAgX1pOM0tKUzZMb29rdXA5ZmluZEVudHJ5RVBLTlNfOUhhc2hUYWJsZUVSS05TXzEw
SWRlbnRpZmllckUgQCA3MCBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVkIEAgNzEgTk9O
QU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzFFaSBAIDcyIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51
bWJlckMxRWogQCA3MyBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVsIEAgNzQgTk9OQU1F
DQorICAgIF9aTjNLSlM2TnVtYmVyQzFFbSBAIDc1IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJl
ckMyRWQgQCA3NiBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMkVpIEAgNzcgTk9OQU1FDQor
ICAgIF9aTjNLSlM2TnVtYmVyQzJFaiBAIDc4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMy
RWwgQCA3OSBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMkVtIEAgODAgTk9OQU1FDQorICAg
IF9aTjNLSlM2T2JqZWN0MTFkeW5hbWljQ2FzdEVSS05TXzVWYWx1ZUUgQCA4MSBOT05BTUUNCisg
ICAgX1pOM0tKUzZPYmplY3Q0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSUzBfUktOU180TGlzdEUgQCA4
MiBOT05BTUUNCisgICAgX1pOM0tKUzZTdHJpbmdDMUVSS05TXzdVU3RyaW5nRSBAIDgzIE5PTkFN
RQ0KKyAgICBfWk4zS0pTNlN0cmluZ0MyRVJLTlNfN1VTdHJpbmdFIEAgODQgTk9OQU1FDQorICAg
IF9aTjNLSlM3Qm9vbGVhbkMxRWIgQCA4NSBOT05BTUUNCisgICAgX1pOM0tKUzdCb29sZWFuQzJF
YiBAIDg2IE5PTkFNRQ0KKyAgICBfWk4zS0pTN0NTdHJpbmdhU0VQS2MgQCA4NyBOT05BTUUNCisg
ICAgX1pOM0tKUzdVU3RyaW5nMTBhdHRhY2hOdWxsRXYgQCA4OCBOT05BTUUNCisgICAgX1pOM0tK
UzdVU3RyaW5nM1JlcDEzY3JlYXRlQ29weWluZ0VQS05TXzVVQ2hhckVpIEAgODkgTk9OQU1FDQor
ICAgIF9aTjNLSlM3VVN0cmluZzNSZXA2Y3JlYXRlRVBOU181VUNoYXJFaSBAIDkwIE5PTkFNRQ0K
KyAgICBfWk4zS0pTN1VTdHJpbmczUmVwN2Rlc3Ryb3lFdiBAIDkxIE5PTkFNRQ0KKyAgICBfWk4z
S0pTN1VTdHJpbmc0ZnJvbUVsIEAgOTIgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzZhcHBl
bmRFUEtjIEAgOTMgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUktTMF8gQCA5
NCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFFUEtOU181VUNoYXJFaSBAIDk1IE5PTkFN
RQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVQS2MgQCA5NiBOT05BTUUNCisgICAgX1pOM0tKUzdV
U3RyaW5nQzFFUE5TXzVVQ2hhckVpYiBAIDk3IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdD
MUVSS1MwX1MyXyBAIDk4IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVjIEAgOTkgTk9O
QU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MxRXYgQCAxMDAgTk9OQU1FDQorICAgIF9aTjNLSlM3
VVN0cmluZ0MyRVBLTlNfNVVDaGFyRWkgQCAxMDEgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmlu
Z0MyRVBLYyBAIDEwMiBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzJFUE5TXzVVQ2hhckVp
YiBAIDEwMyBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzJFUktTMF9TMl8gQCAxMDQgTk9O
QU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRWMgQCAxMDUgTk9OQU1FDQorICAgIF9aTjNLSlM3
VVN0cmluZ0MyRXYgQCAxMDYgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ2FTRVJLUzBfIEAg
MTA3IE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJpbmRpbmdzMTBSb290T2JqZWN0MTRzZXRJbnRlcnBy
ZXRlckVQTlNfMTFJbnRlcnByZXRlckUgQCAxMDggTk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGlu
Z3MxMFJvb3RPYmplY3QyNXJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXNFdiBAIDEwOSBOT05BTUUN
CisgICAgX1pOM0tKUzhCaW5kaW5nczIxcmVtb3ZlTmF0aXZlUmVmZXJlbmNlRVBOU185T2JqZWN0
SW1wRSBAIDExMCBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczhJbnN0YW5jZTE5Y3JlYXRl
UnVudGltZU9iamVjdEVOUzFfMTVCaW5kaW5nTGFuZ3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RF
IEAgMTExIE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJpbmRpbmdzOEluc3RhbmNlMzBjcmVhdGVMYW5n
dWFnZUluc3RhbmNlRm9yVmFsdWVFUE5TXzlFeGVjU3RhdGVFTlMxXzE1QmluZGluZ0xhbmd1YWdl
RVJLTlNfNk9iamVjdEVQS05TMF8xMFJvb3RPYmplY3RFU0FfIEAgMTEyIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTOEJpbmRpbmdzOEluc3RhbmNlMzJjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5j
ZUVOUzFfMTVCaW5kaW5nTGFuZ3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RFIEAgMTEzIE5PTkFN
RQ0KKyAgICBfWk4zS0pTOFZhbHVlSW1wZGxFUHYgQCAxMTQgTk9OQU1FDQorICAgIF9aTjNLSlM4
VmFsdWVJbXBud0VqIEAgMTE1IE5PTkFNRQ0KKyAgICBfWk4zS0pTOUNvbGxlY3Rvcjdjb2xsZWN0
RXYgQCAxMTYgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wMTFoYXNJbnN0YW5jZUVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzVWYWx1ZUUgQCAxMTcgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0
SW1wMTJzZXRQcm90b3R5cGVFUktOU181VmFsdWVFIEAgMTE4IE5PTkFNRQ0KKyAgICBfWk4zS0pT
OU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFIEAgMTE5IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlF
UE5TXzlFeGVjU3RhdGVFaiBAIDEyMCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAxOWRl
bGV0ZUFsbFByb3BlcnRpZXNFUE5TXzlFeGVjU3RhdGVFIEAgMTIxIE5PTkFNRQ0KKyAgICBfWk4z
S0pTOU9iamVjdEltcDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUktOU181
VmFsdWVFaSBAIDEyMiBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhl
Y1N0YXRlRWpSS05TXzVWYWx1ZUVpIEAgMTIzIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdElt
cDRjYWxsRVBOU185RXhlY1N0YXRlRVJOU182T2JqZWN0RVJLTlNfNExpc3RFIEAgMTI0IE5PTkFN
RQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDRtYXJrRXYgQCAxMjUgTk9OQU1FDQorICAgIF9aTjNL
SlM5T2JqZWN0SW1wOHByb3BMaXN0RVBOU185RXhlY1N0YXRlRWIgQCAxMjYgTk9OQU1FDQorICAg
IF9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RSBA
IDEyNyBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA5Y29uc3RydWN0RVBOU185RXhlY1N0
YXRlRVJLTlNfNExpc3RFUktOU183VVN0cmluZ0VpIEAgMTI4IE5PTkFNRQ0KKyAgICBfWk4zS0pT
OU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFUE5TXzhWYWx1ZUltcEVpIEAg
MTI5IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50
aWZpZXJFaWkgQCAxMzAgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wQzFFUktOU182T2Jq
ZWN0RSBAIDEzMSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBDMUV2IEAgMTMyIE5PTkFN
RQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEMyRVJLTlNfNk9iamVjdEUgQCAxMzMgTk9OQU1FDQor
ICAgIF9aTjNLSlM5T2JqZWN0SW1wQzJFdiBAIDEzNCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmpl
Y3RJbXBEMEV2IEAgMTM1IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEQxRXYgQCAxMzYg
Tk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wRDJFdiBAIDEzNyBOT05BTUUNCisgICAgX1pO
M0tKUzlVbmRlZmluZWRDMUV2IEAgMTM4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOVVuZGVmaW5lZEMy
RXYgQCAxMzkgTk9OQU1FDQorICAgIF9aTjNLSlNlcUVSS05TXzdVU3RyaW5nRVBLYyBAIDE0MCBO
T05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMTBjb21wYXRNb2RlRXYgQCAxNDEgTk9O
QU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRlcjEyYnVpbHRpbkFycmF5RXYgQCAxNDIgTk9O
QU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRlcjEyZ2xvYmFsT2JqZWN0RXYgQCAxNDMgTk9O
QU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRlcjEyc2F2ZUJ1aWx0aW5zRVJOU18xM1NhdmVk
QnVpbHRpbnNFIEAgMTQ0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxM2J1aWx0
aW5PYmplY3RFdiBAIDE0NSBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMTVidWls
dGluRnVuY3Rpb25FdiBAIDE0NiBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMjJi
dWlsdGluT2JqZWN0UHJvdG90eXBlRXYgQCAxNDcgTk9OQU1FDQorICAgIF9aTkszS0pTMTFQcm9w
ZXJ0eU1hcDNnZXRFUktOU18xMElkZW50aWZpZXJFIEAgMTQ4IE5PTkFNRQ0KKyAgICBfWk5LM0tK
UzExUHJvcGVydHlNYXA0c2F2ZUVSTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMTQ5IE5PTkFNRQ0K
KyAgICBfWk5LM0tKUzRMaXN0NWltcEF0RWkgQCAxNTAgTk9OQU1FDQorICAgIF9aTkszS0pTNExp
c3Q4Y29weVRhaWxFdiBAIDE1MSBOT05BTUUNCisgICAgX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9w
ZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNTIgTk9OQU1FDQorICAg
IF9aTkszS0pTNk9iamVjdDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDE1MyBOT05B
TUUNCisgICAgX1pOSzNLSlM2T2JqZWN0MTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckUgQCAxNTQgTk9OQU1FDQorICAgIF9aTkszS0pTNlN0cmluZzV2YWx1
ZUV2IEAgMTU1IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzdVU3RyaW5nMTJ0b0FycmF5SW5kZXhFUGIg
QCAxNTYgTk9OQU1FDQorICAgIF9aTkszS0pTN1VTdHJpbmc1YXNjaWlFdiBAIDE1NyBOT05BTUUN
CisgICAgX1pOSzNLSlM3VVN0cmluZzZpc051bGxFdiBAIDE1OCBOT05BTUUNCisgICAgX1pOSzNL
SlM3VVN0cmluZzd0b1VMb25nRVBiIEAgMTU5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUlt
cDE2ZGlzcGF0Y2hUb09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjAgTk9OQU1FDQorICAgIF9a
TkszS0pTOFZhbHVlSW1wNm1hcmtlZEV2IEAgMTYxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1
ZUltcDd0b0ludDMyRVBOU185RXhlY1N0YXRlRSBAIDE2MiBOT05BTUUNCisgICAgX1pOSzNLSlM4
VmFsdWVJbXA4dG9VSW50MTZFUE5TXzlFeGVjU3RhdGVFIEAgMTYzIE5PTkFNRQ0KKyAgICBfWk5L
M0tKUzhWYWx1ZUltcDh0b1VJbnQzMkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjQgTk9OQU1FDQorICAg
IF9aTkszS0pTOFZhbHVlSW1wOHRvVUludDMyRVJqIEAgMTY1IE5PTkFNRQ0KKyAgICBfWk5LM0tK
UzhWYWx1ZUltcDl0b0ludGVnZXJFUE5TXzlFeGVjU3RhdGVFIEAgMTY2IE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzlFeGVjU3RhdGUxOGxleGljYWxJbnRlcnByZXRlckV2IEAgMTY3IE5PTkFNRQ0KKyAg
ICBfWk5LM0tKUzlPYmplY3RJbXAxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRSBAIDE2OCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9w
ZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTY5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJ
bXAxMXRvUHJpbWl0aXZlRVBOU185RXhlY1N0YXRlRU5TXzRUeXBlRSBAIDE3MCBOT05BTUUNCisg
ICAgX1pOSzNLSlM5T2JqZWN0SW1wMTJkZWZhdWx0VmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5
cGVFIEAgMTcxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxNGhhc093blByb3BlcnR5
RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE3MiBOT05BTUUNCisgICAgX1pO
SzNLSlM5T2JqZWN0SW1wMTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTczIE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxNGltcGxlbWVudHNDYWxsRXYgQCAxNzQgTk9O
QU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDE5aW1wbGVtZW50c0NvbnN0cnVjdEV2IEAgMTc1
IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2
IEAgMTc2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRSBAIDE3NyBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1w
M2dldEVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTc4IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJ
bXA0dHlwZUV2IEAgMTc5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA2Y2FuUHV0RVBO
U185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE4MCBOT05BTUUNCisgICAgX1pOSzNL
SlM5T2JqZWN0SW1wOGluaGVyaXRzRVBLTlNfOUNsYXNzSW5mb0UgQCAxODEgTk9OQU1FDQorICAg
IF9aTkszS0pTOU9iamVjdEltcDh0b051bWJlckVQTlNfOUV4ZWNTdGF0ZUUgQCAxODIgTk9OQU1F
DQorICAgIF9aTkszS0pTOU9iamVjdEltcDh0b09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxODMg
Tk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDh0b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUg
QCAxODQgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDljbGFzc0luZm9FdiBAIDE4NSBO
T05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wOWNsYXNzTmFtZUV2IEAgMTg2IE5PTkFNRQ0K
KyAgICBfWk5LM0tKUzlPYmplY3RJbXA5cHJvdG90eXBlRXYgQCAxODcgTk9OQU1FDQorICAgIF9a
TkszS0pTOU9iamVjdEltcDl0b0Jvb2xlYW5FUE5TXzlFeGVjU3RhdGVFIEAgMTg4IE5PTkFNRQ0K
KyAgICBfWlRJTjNLSlMxMEFzc2lnbk5vZGVFIEAgMTg5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxMEJvb2xlYW5JbXBFIEAgMTkwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxMERlbGV0ZU5vZGVFIEAgMTkxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxME5l
Z2F0ZU5vZGVFIEAgMTkyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxME51bWJlck5v
ZGVFIEAgMTkzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFByZWZpeE5vZGVFIEAg
MTk0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFJlZ0V4cE5vZGVFIEAgMTk1IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFJldHVybk5vZGVFIEAgMTk2IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFN0cmluZ05vZGVFIEAgMTk3IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxMFN3aXRjaE5vZGVFIEAgMTk4IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxMFR5cGVPZk5vZGVFIEAgMTk5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxMUJpdE9wZXJOb2RlRSBAIDIwMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTFCb29sZWFuTm9kZUUgQCAyMDEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExRG9X
aGlsZU5vZGVFIEAgMjAyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUVsZW1lbnRO
b2RlRSBAIDIwMyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFGaW5hbGx5Tm9kZUUg
QCAyMDQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExRnVuY3Rpb25JbXBFIEAgMjA1
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUludGVycHJldGVyRSBAIDIwNiBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFNYXRoRnVuY0ltcEUgQCAyMDcgTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzExTmV3RXhwck5vZGVFIEAgMjA4IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxMVBvc3RmaXhOb2RlRSBAIDIwOSBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTFSZXNvbHZlTm9kZUUgQCAyMTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzExVmFyRGVjbE5vZGVFIEAgMjExIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxMkNvbnRpbnVlTm9kZUUgQCAyMTIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEy
RnVuY0RlY2xOb2RlRSBAIDIxMyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTJGdW5j
RXhwck5vZGVFIEAgMjE0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMlByb3BlcnR5
Tm9kZUUgQCAyMTUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyU3RhdExpc3ROb2Rl
RSBAIDIxNiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTJVbmRlZmluZWRJbXBFIEAg
MjE3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAgMjE4
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTJFIEAgMjE5IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMjIwIE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0FyZ3VtZW50c05vZGVFIEAgMjIxIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0Nhc2VCbG9ja05vZGVFIEAgMjIyIE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0RhdGVPYmplY3RJbXBFIEAgMjIzIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxM0dsb2JhbEZ1bmNJbXBFIEAgMjI0IE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxM01hdGhPYmplY3RJbXBFIEAgMjI1IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxM1BhcmFtZXRlck5vZGVFIEAgMjI2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMjI3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxM1VuYXJ5UGx1c05vZGVFIEAgMjI4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxNEFycmF5T2JqZWN0SW1wRSBAIDIyOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTRBc3NpZ25FeHByTm9kZUUgQCAyMzAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0
Qml0d2lzZU5vdE5vZGVFIEAgMjMxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNENh
c2VDbGF1c2VOb2RlRSBAIDIzMiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRDbGF1
c2VMaXN0Tm9kZUUgQCAyMzMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0RXJyb3JP
YmplY3RJbXBFIEAgMjM0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNExvZ2ljYWxO
b3ROb2RlRSBAIDIzNSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTROYXRpdmVFcnJv
ckltcEUgQCAyMzYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0UmVsYXRpb25hbE5v
ZGVFIEAgMjM3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNUNvbmRpdGlvbmFsTm9k
ZUUgQCAyMzggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1TnVtYmVyT2JqZWN0SW1w
RSBAIDIzOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVPYmplY3RPYmplY3RJbXBF
IEAgMjQwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUg
QCAyNDEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1UnVudGltZUFycmF5SW1wRSBA
IDI0MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAg
MjQzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNVZhckRlY2xMaXN0Tm9kZUUgQCAy
NDQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2QXJndW1lbnRMaXN0Tm9kZUUgQCAy
NDUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAy
NDYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAy
NDcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RGF0ZVByb3RvRnVuY0ltcEUgQCAy
NDggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAy
NDkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAy
NTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RnVuY3Rpb25DYWxsTm9kZUUgQCAy
NTEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2UnVudGltZU1ldGhvZEltcEUgQCAy
NTIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2UnVudGltZU9iamVjdEltcEUgQCAy
NTMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAy
NTQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBFIEAg
MjU1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0FycmF5UHJvdG90eXBlSW1wRSBA
IDI1NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUg
QCAyNTcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3RGF0ZU9iamVjdEZ1bmNJbXBF
IEAgMjU4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0Vycm9yUHJvdG9GdW5jSW1w
RSBAIDI1OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdFeHByU3RhdGVtZW50Tm9k
ZUUgQCAyNjAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3RnVuY3Rpb25PYmplY3RJ
bXBFIEAgMjYxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN09iamVjdExpdGVyYWxO
b2RlRSBAIDI2MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdQcm9wZXJ0eVZhbHVl
Tm9kZUUgQCAyNjMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3U3RyaW5nSW5zdGFu
Y2VJbXBFIEAgMjY0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOEVtcHR5U3RhdGVt
ZW50Tm9kZUUgQCAyNjUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4TnVtYmVyUHJv
dG9GdW5jSW1wRSBAIDI2NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThPYmplY3RQ
cm90b0Z1bmNJbXBFIEAgMjY3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFJlZ0V4
cFByb3RvRnVuY0ltcEUgQCAyNjggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4U291
cmNlRWxlbWVudHNOb2RlRSBAIDI2OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThT
dHJpbmdQcm90b0Z1bmNJbXBFIEAgMjcwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
OFN0cmluZ1Byb3RvdHlwZUltcEUgQCAyNzEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzE5Qm9vbGVhblByb3RvRnVuY0ltcEUgQCAyNzIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE5RGVjbGFyZWRGdW5jdGlvbkltcEUgQCAyNzMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzE5SW50ZXJuYWxGdW5jdGlvbkltcEUgQCAyNzQgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzE5U3RyaW5nT2JqZWN0RnVuY0ltcEUgQCAyNzUgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzIwRnVuY3Rpb25Qcm90b0Z1bmNJbXBFIEAgMjc2IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMyMEZ1bmN0aW9uUHJvdG90eXBlSW1wRSBAIDI3NyBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTNE5vZGVFIEAgMjc4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlM2SWZOb2RlRSBAIDI3OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN0Fk
ZE5vZGVFIEAgMjgwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM3Rm9yTm9kZUUgQCAy
ODEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzdOdWxsSW1wRSBAIDI4MiBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN1RyeU5vZGVFIEAgMjgzIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlM4QmluZGluZ3M2Q0NsYXNzRSBAIDI4NCBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTOEJpbmRpbmdzNkNGaWVsZEUgQCAyODUgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzhCaW5kaW5nczhJbnN0YW5jZUUgQCAyODYgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzhCaW5kaW5nczlDSW5zdGFuY2VFIEAgMjg3IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlM4RGVidWdnZXJFIEAgMjg4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlM4TXVsdE5vZGVFIEAgMjg5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4TnVsbE5v
ZGVFIEAgMjkwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4VGhpc05vZGVFIEAgMjkx
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4VmFsdWVJbXBFIEAgMjkyIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4Vm9pZE5vZGVFIEAgMjkzIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlM4V2l0aE5vZGVFIEAgMjk0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlM5QXJyYXlOb2RlRSBAIDI5NSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUJs
b2NrTm9kZUUgQCAyOTYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlCcmVha05vZGVF
IEAgMjk3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5Q2F0Y2hOb2RlRSBAIDI5OCBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUNvbW1hTm9kZUUgQCAyOTkgTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzlFcXVhbE5vZGVFIEAgMzAwIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlM5Rm9ySW5Ob2RlRSBAIDMwMSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTOUdyb3VwTm9kZUUgQCAzMDIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlM
YWJlbE5vZGVFIEAgMzAzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5TnVtYmVySW1w
RSBAIDMwNCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOU9iamVjdEltcEUgQCAzMDUg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlSZWdFeHBJbXBFIEAgMzA2IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5U2hpZnROb2RlRSBAIDMwNyBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTOVN0cmluZ0ltcEUgQCAzMDggTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzlUaHJvd05vZGVFIEAgMzA5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5
V2hpbGVOb2RlRSBAIDMxMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUVk4zS0pTMTBBc3NpZ25O
b2RlRSBAIDMxMSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBCb29sZWFuSW1wRSBA
IDMxMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBEZWxldGVOb2RlRSBAIDMxMyBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBOZWdhdGVOb2RlRSBAIDMxNCBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBOdW1iZXJOb2RlRSBAIDMxNSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTBQcmVmaXhOb2RlRSBAIDMxNiBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTBSZWdFeHBOb2RlRSBAIDMxNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTBSZXR1cm5Ob2RlRSBAIDMxOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTBTdHJpbmdOb2RlRSBAIDMxOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBTd2l0
Y2hOb2RlRSBAIDMyMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBUeXBlT2ZOb2Rl
RSBAIDMyMSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFCaXRPcGVyTm9kZUUgQCAz
MjIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExQm9vbGVhbk5vZGVFIEAgMzIzIE5P
TkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMURvV2hpbGVOb2RlRSBAIDMyNCBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFFbGVtZW50Tm9kZUUgQCAzMjUgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzExRmluYWxseU5vZGVFIEAgMzI2IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDMyNyBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTFJbnRlcnByZXRlckUgQCAzMjggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzExTWF0aEZ1bmNJbXBFIEAgMzI5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMx
MU5ld0V4cHJOb2RlRSBAIDMzMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFQb3N0
Zml4Tm9kZUUgQCAzMzEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExUmVzb2x2ZU5v
ZGVFIEAgMzMyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMVZhckRlY2xOb2RlRSBA
IDMzMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJDb250aW51ZU5vZGVFIEAgMzM0
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAzMzUgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDMzNiBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJQcm9wZXJ0eU5vZGVFIEAgMzM3IE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAzMzggTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzEyVW5kZWZpbmVkSW1wRSBAIDMzOSBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTNBY2Nlc3Nvck5vZGUxRSBAIDM0MCBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDM0MSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTNBY3RpdmF0aW9uSW1wRSBAIDM0MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTNBcmd1bWVudHNOb2RlRSBAIDM0MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTNDYXNlQmxvY2tOb2RlRSBAIDM0NCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNE
YXRlT2JqZWN0SW1wRSBAIDM0NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNHbG9i
YWxGdW5jSW1wRSBAIDM0NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNNYXRoT2Jq
ZWN0SW1wRSBAIDM0NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNQYXJhbWV0ZXJO
b2RlRSBAIDM0OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNTdGF0ZW1lbnROb2Rl
RSBAIDM0OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNVbmFyeVBsdXNOb2RlRSBA
IDM1MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAz
NTEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMzUy
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDM1MyBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRDYXNlQ2xhdXNlTm9kZUUgQCAzNTQgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0Q2xhdXNlTGlzdE5vZGVFIEAgMzU1IE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDM1NiBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAzNTcgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzE0TmF0aXZlRXJyb3JJbXBFIEAgMzU4IE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNFJlbGF0aW9uYWxOb2RlRSBAIDM1OSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMzYwIE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlMxNU51bWJlck9iamVjdEltcEUgQCAzNjEgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDM2MiBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTVSZWdFeHBPYmplY3RJbXBFIEAgMzYzIE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxNVJ1bnRpbWVBcnJheUltcEUgQCAzNjQgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzE1U3RyaW5nT2JqZWN0SW1wRSBAIDM2NSBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTVWYXJEZWNsTGlzdE5vZGVFIEAgMzY2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAgMzY3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNkFycmF5SW5zdGFuY2VJbXBFIEAgMzY4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNkJvb2xlYW5PYmplY3RJbXBFIEAgMzY5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNkRhdGVQcm90b0Z1bmNJbXBFIEAgMzcwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNkRhdGVQcm90b3R5cGVJbXBFIEAgMzcxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNkZ1bmN0aW9uQm9keU5vZGVFIEAgMzcyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMzczIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNlJ1bnRpbWVNZXRob2RJbXBFIEAgMzc0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNlJ1bnRpbWVPYmplY3RJbXBFIEAgMzc1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNlZhclN0YXRlbWVudE5vZGVFIEAgMzc2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxN0FycmF5UHJvdG9GdW5jSW1wRSBAIDM3NyBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTdBcnJheVByb3RvdHlwZUltcEUgQCAzNzggTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzE3QmluYXJ5TG9naWNhbE5vZGVFIEAgMzc5IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxN0RhdGVPYmplY3RGdW5jSW1wRSBAIDM4MCBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTdFcnJvclByb3RvRnVuY0ltcEUgQCAzODEgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMzgyIE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlMxN0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDM4MyBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAzODQgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzE3UHJvcGVydHlWYWx1ZU5vZGVFIEAgMzg1IE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDM4NiBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMzg3IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUgQCAzODggTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4T2JqZWN0UHJvdG9GdW5jSW1wRSBAIDM4OSBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMzkwIE5P
TkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAzOTEg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4U3RyaW5nUHJvdG9GdW5jSW1wRSBAIDM5
MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAg
MzkzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBF
IEAgMzk0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOURlY2xhcmVkRnVuY3Rpb25J
bXBFIEAgMzk1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOUludGVybmFsRnVuY3Rp
b25JbXBFIEAgMzk2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOVN0cmluZ09iamVj
dEZ1bmNJbXBFIEAgMzk3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMyMEZ1bmN0aW9u
UHJvdG9GdW5jSW1wRSBAIDM5OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMjBGdW5j
dGlvblByb3RvdHlwZUltcEUgQCAzOTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzRO
b2RlRSBAIDQwMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTNklmTm9kZUUgQCA0MDEg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzdBZGROb2RlRSBAIDQwMiBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTN0Zvck5vZGVFIEAgNDAzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlM3TnVsbEltcEUgQCA0MDQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzdUcnlOb2RlRSBAIDQwNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOEJpbmRpbmdz
NkNDbGFzc0UgQCA0MDYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhCaW5kaW5nczZD
RmllbGRFIEAgNDA3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4QmluZGluZ3M4SW5z
dGFuY2VFIEAgNDA4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4QmluZGluZ3M5Q0lu
c3RhbmNlRSBAIDQwOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOERlYnVnZ2VyRSBA
IDQxMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOE11bHROb2RlRSBAIDQxMSBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOE51bGxOb2RlRSBAIDQxMiBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOFRoaXNOb2RlRSBAIDQxMyBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTOFZhbHVlSW1wRSBAIDQxNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
OFZvaWROb2RlRSBAIDQxNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFdpdGhOb2Rl
RSBAIDQxNiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUFycmF5Tm9kZUUgQCA0MTcg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlCbG9ja05vZGVFIEAgNDE4IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5QnJlYWtOb2RlRSBAIDQxOSBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTOUNhdGNoTm9kZUUgQCA0MjAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzlDb21tYU5vZGVFIEAgNDIxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5
RXF1YWxOb2RlRSBAIDQyMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUZvckluTm9k
ZUUgQCA0MjMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlHcm91cE5vZGVFIEAgNDI0
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5TGFiZWxOb2RlRSBAIDQyNSBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOU51bWJlckltcEUgQCA0MjYgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzlPYmplY3RJbXBFIEAgNDI3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlM5UmVnRXhwSW1wRSBAIDQyOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
OVNoaWZ0Tm9kZUUgQCA0MjkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlTdHJpbmdJ
bXBFIEAgNDMwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5VGhyb3dOb2RlRSBAIDQz
MSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVdoaWxlTm9kZUUgQCA0MzIgTk9OQU1F
IDsgIzxWVD4jDQogDQpJbmRleDogSmF2YVNjcmlwdENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUu
bW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUu
bW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9ncm91cC9KYXZhU2NyaXB0
Q29yZS5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC00OCw2ICs0OCw5IEBADQogDQogDQogU1lTVEVN
SU5DTFVERSAuLlxranMNCitVU0VSSU5DTFVERSAuLlxiaW5kaW5ncw0KK1NZU1RFTUlOQ0xVREUg
Li5cYmluZGluZ3MNCitTWVNURU1JTkNMVURFIC4uXGJpbmRpbmdzXGMNCiBTWVNURU1JTkNMVURF
IC4uXHBjcmUNCiBTWVNURU1JTkNMVURFIC4uXC4uXE1lbW9yeU1hbmFnZXJcaW5jDQogI2lmbmRl
ZiBfX0JST1dTRVJfU0RLDQpAQCAtMTAyLDYgKzEwNSwyNCBAQA0KIFNPVVJDRSB2YWx1ZS5jcHAN
CiAvL1NPVVJDRSBXcnRTdGF0aWNzLmNwcA0KIA0KK1NPVVJDRVBBVEggIC4uXGJpbmRpbmdzDQor
DQorU09VUkNFIG5wcnVudGltZS5jcHANCitTT1VSQ0UgTlBfanNvYmplY3QuY3BwIA0KK1NPVVJD
RSBydW50aW1lLmNwcCANCitTT1VSQ0UgcnVudGltZV9hcnJheS5jcHAgDQorU09VUkNFIHJ1bnRp
bWVfbWV0aG9kLmNwcCANCitTT1VSQ0UgcnVudGltZV9vYmplY3QuY3BwIA0KK1NPVVJDRSBydW50
aW1lX3Jvb3QuY3BwIA0KKy8vU09VUkNFIHNvZnRsaW5raW5nLmMgDQorDQorU09VUkNFUEFUSCAg
Li5cYmluZGluZ3NcYw0KKw0KK1NPVVJDRSBjX2NsYXNzLmNwcA0KK1NPVVJDRSBjX2luc3RhbmNl
LmNwcA0KK1NPVVJDRSBjX3J1bnRpbWUuY3BwDQorU09VUkNFIGNfdXRpbGl0eS5jcHANCisNCiBM
SUJSQVJZICAgICAgICAgZXN0bGliLmxpYg0KIExJQlJBUlkgICAgICAgICBldXNlci5saWINCiAN
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTEzNSwxMiArMTM1LDEyIEBADQogICAgIEludGVycHJldGVyTG9jayBsb2NrOwogICAgIEV4ZWNT
dGF0ZSAqZXhlYyA9IHJlcC0+Z2xvYmFsRXhlYygpOwogI2lmbmRlZiBfX09PTV9fCi0JLy9GSVhN
RTogbWFrZSBhIG1lbW9yeW1hbmFnZXIgdmVyc2lvbiBmb3Igc3RyZHVwCisgICAgLy9GSVhNRTog
bWFrZSBhIG1lbW9yeW1hbmFnZXIgdmVyc2lvbiBmb3Igc3RyZHVwCiAgICAgY2hhciAqZiA9IHN0
cmR1cChzb3VyY2VVUkwuYXNjaWkoKSk7CiAjZWxzZQotCWNvbnN0IGNoYXIqIHNzID0gc291cmNl
VVJMLmFzY2lpKCk7CisgICAgY29uc3QgY2hhciogc3MgPSBzb3VyY2VVUkwuYXNjaWkoKTsKICAg
ICBjaGFyICpmID0gKGNoYXIqKU1lbW9yeU1hbmFnZXI6OkNhbGxvYyggc3RybGVuKHNzKSArIDEs
IHNpemVvZiggY2hhciApICk7Ci0JbWVtY3B5KCBmLCBzcywgc3RybGVuKCBzcyApICk7CisgICAg
bWVtY3B5KCBmLCBzcywgc3RybGVuKCBzcyApICk7CiAjZW5kaWYKICAgICBjb25zdCBjaGFyICpt
ZXNzYWdlID0gY29tcC52YWx1ZSgpLnRvT2JqZWN0KGV4ZWMpLnRvU3RyaW5nKGV4ZWMpLmFzY2lp
KCk7CiAjaWZuZGVmIE5PS0lBX0NIQU5HRVMKQEAgLTM2MiwxMiArMzYyLDExIEBADQogICBwcmlu
dEV4Y2VwdGlvbnMgPSBwcmludDsKIH0KIAotI2lmbmRlZiBOT0tJQV9DSEFOR0VTCitFWFBPUlRf
Qwogdm9pZCAqSW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoRXhl
Y1N0YXRlICpleGVjLCBCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSBsYW5ndWFn
ZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdp
biwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKmN1cnJlbnQpCiB7CiAgICAgcmV0dXJuIEJp
bmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBs
YW5ndWFnZSwgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7CiB9Ci0jZW5kaWYKIAogI2VuZGlmCiAK
QEAgLTM4MSw3ICszODAsNyBAQA0KICAgcmVwLT5yZXN0b3JlQnVpbHRpbnMoYnVpbHRpbnMpOwog
fQogCi1TYXZlZEJ1aWx0aW5zOjpTYXZlZEJ1aWx0aW5zKCkgOiAKK1NhdmVkQnVpbHRpbnM6OlNh
dmVkQnVpbHRpbnMoKSA6CiAgIF9pbnRlcm5hbCgwKQogewogfQpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL2ludGVycHJldGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
aW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUva2pzL2lu
dGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOCw3ICsyOCw3IEBADQogI2luY2x1ZGUg
Im9iamVjdC5oIgogI2luY2x1ZGUgInR5cGVzLmgiCiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFO
T0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogCiAjaW5jbHVkZSAicnVudGltZS5oIgog
CkBAIC0xMTQsNyArMTE0LDcgQEANCiAgIGNsYXNzIFNhdmVkQnVpbHRpbnNJbnRlcm5hbDsKIAog
ICBjbGFzcyBTYXZlZEJ1aWx0aW5zIHsKLQlPT01fTkVXX0RFTEVURQorICAgIE9PTV9ORVdfREVM
RVRFCiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJldGVySW1wOwogICBwdWJsaWM6CiAgICAgU2F2
ZWRCdWlsdGlucygpOwpAQCAtMjA1LDggKzIwNSw4IEBADQogICAgICAqLwogICAgIElNUE9SVF9D
IENvbXBsZXRpb24gZXZhbHVhdGUoY29uc3QgVVN0cmluZyAmc291cmNlVVJMLCBpbnQgc3RhcnRp
bmdMaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nICZjb2RlLCBjb25zdCBWYWx1ZSAmdGhpc1YgPSBW
YWx1ZSgpKTsKIAotCS8vIE92ZXJsb2FkIG9mIGV2YWx1YXRlIHRvIGtlZXAgSmF2YVNjcmlwdEds
dWUgYm90aCBzb3VyY2UgYW5kIGJpbmFyeSBjb21wYXRpYmxlLgotCUlNUE9SVF9DIENvbXBsZXRp
b24gZXZhbHVhdGUoY29uc3QgVVN0cmluZyAmY29kZSwgY29uc3QgVmFsdWUgJnRoaXNWID0gVmFs
dWUoKSwgY29uc3QgVVN0cmluZyAmc291cmNlRmlsZW5hbWUgPSBVU3RyaW5nKCkpOworICAgIC8v
IE92ZXJsb2FkIG9mIGV2YWx1YXRlIHRvIGtlZXAgSmF2YVNjcmlwdEdsdWUgYm90aCBzb3VyY2Ug
YW5kIGJpbmFyeSBjb21wYXRpYmxlLgorICAgIElNUE9SVF9DIENvbXBsZXRpb24gZXZhbHVhdGUo
Y29uc3QgVVN0cmluZyAmY29kZSwgY29uc3QgVmFsdWUgJnRoaXNWID0gVmFsdWUoKSwgY29uc3Qg
VVN0cmluZyAmc291cmNlRmlsZW5hbWUgPSBVU3RyaW5nKCkpOwogCiAgICAgLyoqCiAgICAgICog
QGludGVybmFsCkBAIC0zNDAsNyArMzQwLDcgQEANCiAKICNpZmRlZiBOT0tJQV9DSEFOR0VTCiAg
ICAgSU1QT1JUX0Mgdm9pZCBpbmNTdGF0ZW1lbnRDb3VudCgpOwotCUlNUE9SVF9DIHZvaWQgcmVz
ZXRTdGF0ZW1lbnRDb3VudCgpOworICAgIElNUE9SVF9DIHZvaWQgcmVzZXRTdGF0ZW1lbnRDb3Vu
dCgpOwogICAgIGludCBzdGF0ZW1lbnRDb3VudCgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTM4Myw4
ICszODMsOCBAQA0KICAgICAgKiBzZWN1cml0eSBjaGVja3MuCiAgICAgICovCiAgICAgdmlydHVh
bCBib29sIGlzR2xvYmFsT2JqZWN0KGNvbnN0IFZhbHVlICZ2KSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIAotICAgIC8qKiAKKworICAgIC8qKgogICAgICAqIEZpbmQgdGhlIGludGVycHJldGVyIGZv
ciBhIHBhcnRpY3VsYXIgZ2xvYmFsIG9iamVjdC4gIFRoaXMgc2hvdWxkIHJlYWxseQogICAgICAq
IGJlIGEgc3RhdGljIG1ldGhvZCwgYnV0IHdlIGNhbid0IGRvIHRoYXQgaXMgQysrLiAgQWdhaW4s
IGFzIHdpdGggaXNHbG9iYWxPYmplY3QoKQogICAgICAqIGltcGxlbWVudGF0aW9uIHJlYWxseSBu
ZWVkIHRvIGtub3cgYWJvdXQgYWxsIGluc3RhbmNlcyBvZiBJbnRlcnByZXRlcgpAQCAtMzkyLDcg
KzM5Miw3IEBADQogICAgICAqIG92ZXJyaWRlIG9mIHRoaXMgbWV0aG9kIGlzIGN1cnJlbnRseSBp
biBXZWJDb3JlLgogICAgICAqLwogICAgIHZpcnR1YWwgSW50ZXJwcmV0ZXIgKmludGVycHJldGVy
Rm9yR2xvYmFsT2JqZWN0IChjb25zdCBWYWx1ZUltcCAqaW1wKSB7IHJldHVybiAwOyB9Ci0gICAg
CisKICAgICAvKioKICAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIGl0IGlzICdzYWZlJyB0byBleGVj
dXRlIGNvZGUgaW4gdGhlIHRhcmdldCBpbnRlcnByZXRlciBmcm9tIGFuCiAgICAgICogb2JqZWN0
IHRoYXQgb3JpZ2luYXRlZCBpbiB0aGlzIGludGVycHJldGVyLiAgVGhpcyBjaGVjayBpcyB1c2Vk
IHRvIGVuZm9yY2UgV2ViQ29yZQpAQCAtNDAxLDExICs0MDEsMTAgQEANCiAgICAgICovCiAgICAg
dmlydHVhbCBib29sIGlzU2FmZVNjcmlwdCAoY29uc3QgSW50ZXJwcmV0ZXIgKnRhcmdldCkgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0jaWZuZGVmIE5PS0lBX0NIQU5HRVMgICAgCisgICAgSU1QT1JUX0MK
ICAgICB2aXJ0dWFsIHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoRXhlY1N0
YXRlICpleGVjLCBCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwg
Y29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdpbiwg
Y29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKmN1cnJlbnQpOwogI2VuZGlmCi0jZW5kaWYKLSAg
ICAKKwogICBwcml2YXRlOgogICAgIEludGVycHJldGVySW1wICpyZXA7CiAKQEAgLTQzMiw3ICs0
MzEsNyBAQA0KICAgICogYW5kIGFsc28gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlIGNvbnRl
eHQuCiAgICAqLwogICBjbGFzcyBFeGVjU3RhdGUgewotCU9PTV9ORVdfREVMRVRFCisgICAgT09N
X05FV19ERUxFVEUKICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXJJbXA7CiAgICAgZnJpZW5k
IGNsYXNzIEZ1bmN0aW9uSW1wOwogI2lmIEFQUExFX0NIQU5HRVMKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9zdGRpbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9zdGRp
bnQuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUva2pzL3N0ZGludC5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjUsMzYgKzI1LDMzIEBADQogDQogI2luY2x1ZGUgPGUzMmRlZi5o
Pg0KIA0KLSNpZm5kZWYgdWludDMyX3QNCi0jZGVmaW5lIHVpbnQzMl90IFRVaW50MzINCi0jZGVm
aW5lIGludDMyX3QJVEludDMyDQotI2VuZGlmDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4
X3Q7DQordHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCB1aW50MTZfdDsNCit0eXBlZGVmIHNob3J0IGludDE2X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBp
bnQgdWludDMyX3Q7DQordHlwZWRlZiBpbnQgaW50MzJfdDsNCit0eXBlZGVmIGxvbmcgbG9uZyBp
bnQ2NF90Ow0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NF90Ow0KIA0KLSNpZm5k
ZWYgdWludDE2X3QNCi0jZGVmaW5lIHVpbnQxNl90IFRVaW50MTYNCi0jZGVmaW5lIGludDE2X3QJ
VEludDE2DQotI2VuZGlmDQordHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnRwdHJfdDsNCit0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgaW50cHRyX3Q7DQogDQotI2lmbmRlZiB1aW50OF90DQotI2RlZmlu
ZSB1aW50OF90IFRVaW50OA0KLSNkZWZpbmUgaW50OF90CVRJbnQ4DQotI2VuZGlmDQotDQogI2Vs
c2UNCiANCiAjaWZuZGVmIHVpbnQzMl90DQogI2RlZmluZSB1aW50MzJfdCB1bnNpZ25lZCBpbnQN
Ci0jZGVmaW5lIGludDMyX3QJaW50DQorI2RlZmluZSBpbnQzMl90ICAgIGludA0KICNlbmRpZg0K
IA0KICNpZm5kZWYgdWludDE2X3QNCiAjZGVmaW5lIHVpbnQxNl90IHVuc2lnbmVkIHNob3J0IGlu
dA0KLSNkZWZpbmUgaW50MTZfdAkgc2hvcnQgaW50DQorI2RlZmluZSBpbnQxNl90ICAgICBzaG9y
dCBpbnQNCiAjZW5kaWYNCiANCiAjaWZuZGVmIHVpbnQ4X3QNCiAjZGVmaW5lIHVpbnQ4X3QgdW5z
aWduZWQgY2hhcg0KLSNkZWZpbmUgaW50OF90CWNoYXINCisjZGVmaW5lIGludDhfdCAgICBjaGFy
DQogI2VuZGlmDQogDQogDQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHJldmlzaW9uIDE3MDY5
KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC00
NzcsNiArNDc3LDcgQEANCiAgICAgICovCiAgICAgc3RhdGljIHZvaWQgZ2xvYmFsQ2xlYXIoKTsK
ICNlbmRpZgorICAgIFJlcCAqYXJlcCgpIGNvbnN0IHsgcmV0dXJuIHJlcDsgfQogICBwcml2YXRl
OgogICAgIFVTdHJpbmcoUmVwICpyKSB7IGF0dGFjaChyKTsgfQogICAgIHZvaWQgYXR0YWNoKFJl
cCAqcikgeyByZXAgPSByOyByLT5yZWYoKTsgfQpJbmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29y
ZUJyaWRnZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlQnJpZGdl
LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0xNjUsNyArMTY1LDcgQEANCiAgICAgfQ0KICAgICBpUGFy
dC0+c2V0QnJpZGdlKDApOw0KICAgICBpUGFydC0+ZGVyZWYoKTsNCi0gICAgDQorDQogICAgIGRl
bGV0ZSBpU21hcnRUZXh0QnVmZmVyOw0KICAgICB9DQogDQpAQCAtMjkxLDcgKzI5MSw3IEBADQog
RVhQT1JUX0MNCiB2b2lkIENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGlu
Zyhjb25zdCBURGVzQyYgYUVuY29kaW5nLCBUQm9vbCBhVXNlckNob3NlbikNCiB7DQotICAgIGlT
bWFydExpbmtOb2RlID0gTlVMTDsgICAgDQorICAgIGlTbWFydExpbmtOb2RlID0gTlVMTDsNCiAg
ICAgaVBhcnQtPnNldEVuY29kaW5nKFFTdHJpbmc6OkZyb21EZXMoYUVuY29kaW5nKSwgYVVzZXJD
aG9zZW4pOw0KICAgICBDbGllbnQoKS5Eb2N1bWVudFN0YXJ0ZWQoKTsNCiB9DQpAQCAtMTMyNiw2
ICsxMzI2LDEyIEBADQogDQogKi8NCiBFWFBPUlRfQw0KK05QT2JqZWN0KiBDV2ViQ29yZUJyaWRn
ZTo6V2luZG93U2NyaXB0TlBPYmplY3QoKQ0KK3sNCisgICAgcmV0dXJuIGlQYXJ0LT53aW5kb3dT
Y3JpcHROUE9iamVjdCgpOw0KK30NCisNCitFWFBPUlRfQw0KIHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlNldE5hbWUoY29uc3QgVERlc0MmIGFOYW1lKQ0KIHsNCiAgICAgaVBhcnQtPktIVE1MUGFydDo6
c2V0TmFtZShRU3RyaW5nOjpGcm9tRGVzKGFOYW1lKSk7DQpAQCAtMTQyNiwxMiArMTQzMiwxMiBA
QA0KIFRQdHJDIENXZWJDb3JlQnJpZGdlOjpHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NM
KFRCb29sJiBhQ29udGludWUpDQogew0KIA0KLSAgICBpZigoIWlQYXJ0KSB8fCAoIWlQYXJ0LT54
bWxEb2NJbXBsKCkpKSANCisgICAgaWYoKCFpUGFydCkgfHwgKCFpUGFydC0+eG1sRG9jSW1wbCgp
KSkNCiAgICAgICAgIHsNCiAgICAgICAgIGFDb250aW51ZSA9IEVGYWxzZTsNCiAgICAgICAgIHJl
dHVybiBUUHRyQygpOw0KICAgICAgICAgfQ0KLSAgDQorDQogICAgIGlmIChpU21hcnRMaW5rTm9k
ZSA9PSBOVUxMKQ0KICAgICAgICAgew0KICAgICAgICAgaVNtYXJ0TGlua05vZGUgPSBpUGFydC0+
eG1sRG9jSW1wbCgpOw0KQEAgLTE0NDEsMTAgKzE0NDcsMTAgQEANCiAgICAgICAgICAgICB9DQog
ICAgICAgICAvL2FkZCByZWYNCiAgICAgICAgIH0NCi0gICAgZWxzZSANCi0gICAgICAgIHsgICAN
CisgICAgZWxzZQ0KKyAgICAgICAgew0KICAgICAgICAgRE9NOjpOb2RlSW1wbCogbm9kZVRlbXAg
PSBpU21hcnRMaW5rTm9kZTsNCi0gICAgICAgIGlTbWFydExpbmtOb2RlID0gaVNtYXJ0TGlua05v
ZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsgIA0KKyAgICAgICAgaVNtYXJ0TGlua05vZGUgPSBpU21h
cnRMaW5rTm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOw0KICAgICAgICAgaWYoaVNtYXJ0TGlua05v
ZGUpDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGlTbWFydExpbmtOb2RlLT5yZWYoKTsN
CkBAIC0xNDYwLDE2ICsxNDY2LDE2IEBADQogICAgICAgICBpZihpU21hcnRMaW5rTm9kZS0+cmVu
ZGVyZXIoKS0+aXNUZXh0KCkpDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGFDb250aW51
ZSA9IEVUcnVlOw0KLSAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRp
Y19jYXN0PFJlbmRlclRleHQgKj4oaVNtYXJ0TGlua05vZGUtPnJlbmRlcmVyKCkpOyAgICAgICAg
ICAgDQorICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8
UmVuZGVyVGV4dCAqPihpU21hcnRMaW5rTm9kZS0+cmVuZGVyZXIoKSk7DQogICAgICAgICAgICAg
ZGVsZXRlIGlTbWFydFRleHRCdWZmZXI7DQogICAgICAgICAgICAgaVNtYXJ0VGV4dEJ1ZmZlciA9
IE5VTEw7DQotICAgICAgICAgICAgaVNtYXJ0VGV4dEJ1ZmZlciA9IHRleHRSZW5kZXJlci0+ZGF0
YSgpLnN0cmluZygpLkRlcygpLkFsbG9jTCgpOyAgICAgICAgICAgICAgICANCisgICAgICAgICAg
ICBpU21hcnRUZXh0QnVmZmVyID0gdGV4dFJlbmRlcmVyLT5kYXRhKCkuc3RyaW5nKCkuRGVzKCku
QWxsb2NMKCk7DQogICAgICAgICAgICAgcmV0dXJuIGlTbWFydFRleHRCdWZmZXItPlB0cigpOw0K
ICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiANCiAgICAgRE9NOjpOb2RlSW1wbCogbm9kZVRl
bXAgPSBpU21hcnRMaW5rTm9kZTsNCi0gICAgaVNtYXJ0TGlua05vZGUgPSBpU21hcnRMaW5rTm9k
ZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOyAgIA0KKyAgICBpU21hcnRMaW5rTm9kZSA9IGlTbWFydExp
bmtOb2RlLT50cmF2ZXJzZU5leHROb2RlKCk7DQogICAgIGlmKGlTbWFydExpbmtOb2RlKQ0KICAg
ICAgICAgew0KICAgICAgICAgaVNtYXJ0TGlua05vZGUtPnJlZigpOw0KQEAgLTE0NzksMTMgKzE0
ODUsMTMgQEANCiAgICAgfQ0KIA0KICAgICBhQ29udGludWUgPSBFRmFsc2U7DQotICAgIHJldHVy
biBUUHRyQygpOyAgICANCisgICAgcmV0dXJuIFRQdHJDKCk7DQogfQ0KIA0KIEVYUE9SVF9DDQog
dm9pZCBDV2ViQ29yZUJyaWRnZTo6R2V0UmVuZGVyVGV4dEFyZWEoY29uc3QgVERlc0MmIGFUZXh0
LCBSQXJyYXk8VFJlY3Q+JiBhUmVjdCkNCiB7DQotICBpUGFydC0+Z2V0UmVuZGVyVGV4dFJlY3RB
cnJheShhVGV4dCwgTm9kZShpU21hcnRMaW5rTm9kZSksIGFSZWN0KTsgICANCisgIGlQYXJ0LT5n
ZXRSZW5kZXJUZXh0UmVjdEFycmF5KGFUZXh0LCBOb2RlKGlTbWFydExpbmtOb2RlKSwgYVJlY3Qp
Ow0KIH0NCiANCiANCkBAIC0yMDkzLDcgKzIwOTksNyBAQA0KICAgICAgICAgbmV3KEVMZWF2ZSkg
Q0FycmF5UHRyRmxhdDxDV2ViQ29yZVBhZ2VEYXRhSXRlbT4oMTApOw0KICAgICBDbGVhbnVwU3Rh
Y2s6OlB1c2hMKCBpdGVtQXJyYXkgKTsNCiAgICAgQ1dlYkNvcmVQYWdlRGF0YUl0ZW0qIGRhdGFJ
dGVtID0gTlVMTDsNCi0gICAgDQorDQogICAgIC8vIGdldCBwYWdlIG1hcmt1cCBkb2N1bWVudCBp
ZiByZXF1ZXN0ZWQNCiAgICAgaWYoYVR5cGVNYXNrICYgQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OkVN
YXJrdXApDQogICAgICAgICB7DQpAQCAtMjEwMSw4ICsyMTA3LDggQEANCiAgICAgICAgIGRhdGFJ
dGVtID0gQ1dlYkNvcmVQYWdlRGF0YUl0ZW06Ok5ld0woQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OkVN
YXJrdXApOw0KICAgICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZGF0YUl0ZW0gKTsNCiAgICAg
ICAgIGRhdGFJdGVtLT5TZXRVcmxMKGlQYXJ0LT5yZXF1ZXN0ZWRVUkxTdHJpbmcoKS5EZXMoKSk7
DQotICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVudFR5cGVMKF9MKCJ0ZXh0L2h0bWwiKSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgDQotICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0wo
InVjcy0yIikpOyANCisgICAgICAgIGRhdGFJdGVtLT5TZXRDb250ZW50VHlwZUwoX0woInRleHQv
aHRtbCIpKTsNCisgICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0TChfTCgidWNzLTIiKSk7DQog
ICAgICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoIHBhZ2VNYXJrdXBRLkRlcygpICk7DQogICAgICAg
ICBpdGVtQXJyYXktPkFwcGVuZEwoZGF0YUl0ZW0pOw0KICAgICAgICAgQ2xlYW51cFN0YWNrOjpQ
b3AoIGRhdGFJdGVtICk7DQpAQCAtMjEyNCw5ICsyMTMwLDkgQEANCiAgICAgICAgICAgICAgICAg
Q2xlYW51cFN0YWNrOjpQdXNoTCggZGF0YUl0ZW0gKTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0
ZW0tPlNldFVybEwoc2hlZXRVcmwuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAgICAgICBk
YXRhSXRlbS0+U2V0Q29udGVudFR5cGVMKGRTdHlsZXNoZWV0LnR5cGUoKS5zdHJpbmcoKS5EZXMo
KSk7DQotICAgICAgICAgICAgICAgIC8vQ2hhcnNldCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQgcGFn
ZXMuICAgDQorICAgICAgICAgICAgICAgIC8vQ2hhcnNldCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQg
cGFnZXMuDQogICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0TChfTCgidWNzLTIi
KSk7DQotICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXREYXRhTChrU3R5bGVTaGVldC0+c2hl
ZXQoKS5zdHJpbmcoKS5EZXMoKSk7ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBk
YXRhSXRlbS0+U2V0RGF0YUwoa1N0eWxlU2hlZXQtPnNoZWV0KCkuc3RyaW5nKCkuRGVzKCkpOw0K
ICAgICAgICAgICAgICAgICBpdGVtQXJyYXktPkFwcGVuZEwoZGF0YUl0ZW0gKTsNCiAgICAgICAg
ICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoIGRhdGFJdGVtICk7DQogICAgICAgICAgICAgICAg
IH0NCkBAIC0yMTUzLDcgKzIxNTksNyBAQA0KICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6
OlB1c2hMKCBkYXRhSXRlbSApOw0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0VXJsTChz
Y3JpcHRVcmwuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0
Q29udGVudFR5cGVMKF9MKCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSk7DQotICAgICAgICAg
ICAgICAgIC8vIENoYXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLiANCisgICAgICAg
ICAgICAgICAgLy8gQ2hhcnNldCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQgcGFnZXMuDQogICAgICAg
ICAgICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0TChfTCgidWNzLTIiKSk7DQogICAgICAgICAg
ICAgICAgIGRhdGFJdGVtLT5TZXREYXRhTChrU2NyaXB0LT5zY3JpcHQoKS5zdHJpbmcoKS5EZXMo
KSk7DQogICAgICAgICAgICAgICAgIGl0ZW1BcnJheS0+QXBwZW5kTChkYXRhSXRlbSk7DQpAQCAt
Mjg1OSwxNCArMjg2NSwxNCBAQA0KIHsNCiAgICAgaWYoIWlQYXJ0IHx8ICFpUGFydC0+eG1sRG9j
SW1wbCgpKSByZXR1cm4gRUZhbHNlOw0KICAgICBpZihhSW5pdGlhbGl6ZSkgew0KLSAgICAgICAg
DQorDQogICAgICAgICBpZiAoaVBhcnQtPnhtbERvY0ltcGwoKSAmJiBpUGFydC0+eG1sRG9jSW1w
bCgpLT5mb2N1c05vZGUoKSl7DQogICAgICAgICAgICAgUVBvaW50IGNwKGlQYXJ0LT54bWxEb2NJ
bXBsKCktPmZvY3VzTm9kZSgpLT5nZXRSZWN0KCkuY2VudGVyKCkpOw0KICAgICAgICAgICAgIGlQ
YXJ0LT5zZXRDdXJzb3JQb3NpdGlvbihjcCk7DQogICAgICAgICAgICAgaVBhcnQtPnZpZXcoKS0+
R2V0RG9jdW1lbnRWaWV3KCkuU2V0Rm9jdXMoRVRydWUpOw0KICAgICAgICAgICAgIHJldHVybiBF
VHJ1ZTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgUVB0ckxpc3Q8S1BhcnRz
OjpSZWFkT25seVBhcnQ+IGNoaWxkUGFydExpc3QgPSBpUGFydC0+ZnJhbWVzKCk7DQogICAgICAg
ICBmb3IoS1BhcnRzOjpSZWFkT25seVBhcnQqIGNoaWxkUGFydCA9IGNoaWxkUGFydExpc3QuZmly
c3QoKTtjaGlsZFBhcnQ7Y2hpbGRQYXJ0ID0gY2hpbGRQYXJ0TGlzdC5uZXh0KCkpew0KICAgICAg
ICAgICAgIEtIVE1MUGFydCAqa2h0bWxfcGFydCA9IHN0YXRpY19jYXN0PEtIVE1MUGFydCAqPihj
aGlsZFBhcnQpOw0KQEAgLTI4ODQsNyArMjg5MCw3IEBADQogICAgICAgICBpUGFydC0+dGFiYmVk
TmF2aWdhdGlvbigwLDEsYUVsVHlwZSwgYUluaXRpYWxpemUpOw0KICAgICAgICAgcmV0dXJuIEVU
cnVlOw0KICAgICB9DQotICAgIA0KKw0KICAgICBpbnQgbHIgPSAoYURpcmVjdGlvbiA9PSBFV2Vi
TmF2TGVmdCkgPyAtMSA6IChhRGlyZWN0aW9uID09IEVXZWJOYXZSaWdodCkgPyAxIDogMCA7DQog
ICAgIGludCB0YiA9IChsciAhPSAwKSA/IDA6IChhRGlyZWN0aW9uID09IEVXZWJOYXZVcCkgPyAt
MSA6IDEgOw0KICAgICBib29sIGZvdW5kID0gaVBhcnQtPnRhYmJlZE5hdmlnYXRpb24obHIsdGIs
YUVsVHlwZSxhSW5pdGlhbGl6ZSk7DQpJbmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRn
ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlQnJpZGdlLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0xMzMsNiArMTMzLDEzIEBADQogY2xhc3MgS0hUTUxWaWV3Ow0KIGNsYXNzIFJl
bmRlckFyZW5hOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorbmFtZXNwYWNlIEtK
UyB7DQorICAgIGNsYXNzIEV4ZWNTdGF0ZTsNCisgICAgY2xhc3MgT2JqZWN0SW1wOw0KKyAgICBj
bGFzcyBQcm90ZWN0ZWRWYWx1ZTsNCit9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
bmFtZXNwYWNlIGtodG1sIHsNCiAgICAgY2xhc3MgUmVuZGVyUGFydDsNCiAgICAgY2xhc3MgUmVu
ZGVyT2JqZWN0Ow0KQEAgLTE1OSw2ICsxNjYsNyBAQA0KIA0KIGNsYXNzIENXZWJDb3JlR3JhcGhp
Y3NDb250ZXh0Ow0KIGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVtOw0KK2NsYXNzIE5QT2JqZWN0
Ow0KIA0KIHR5cGVkZWYga2h0bWw6OlJlbmRlclBhcnQgS0hUTUxSZW5kZXJQYXJ0Ow0KIA0KQEAg
LTI0NSw4ICsyNTMsOCBAQA0KICAgICAgICAgSU1QT1JUX0MgVFB0ckMgUmVmZXJyZXIoKSBjb25z
dDsNCiAgICAgICAgIElNUE9SVF9DIFRQdHJDIERvbWFpbigpIGNvbnN0Ow0KICAgICAgICAgSU1Q
T1JUX0MgSEJ1ZkMqIEdldFRleHRDb250ZW50TCgpOw0KLSAgICAgICAgICAgICAgICANCi0gICAg
ICAgIElNUE9SVF9DIFRQdHJDIEdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0woVEJvb2wm
IGFLZWVwR29pbmcpOyAgICANCisNCisgICAgICAgIElNUE9SVF9DIFRQdHJDIEdldE5leHRSZW5k
ZXJUZXh0Rm9yU21hcnRMaW5rc0woVEJvb2wmIGFLZWVwR29pbmcpOw0KICAgICAgICAgSU1QT1JU
X0Mgdm9pZCBHZXRSZW5kZXJUZXh0QXJlYShjb25zdCBURGVzQyYgYVRleHQsIFJBcnJheTxUUmVj
dD4mIGFSZWN0KTsNCiANCiAgICAgICAgIElNUE9SVF9DIHZvaWQgSW5zdGFsbEluRnJhbWUoTVdl
YkNvcmVTY3JvbGxWaWV3JiBhVmlldyk7DQpAQCAtNDQyLDYgKzQ1MCw3IEBADQogICAgICAgICAv
L3ZvaWQgZW5zdXJlQ2FyZXRWaXNpYmxlOw0KIA0KICAgICAgICAgLy8tIChXZWJTY3JpcHRPYmpl
Y3QgKil3aW5kb3dTY3JpcHRPYmplY3Q7DQorICAgICAgICBJTVBPUlRfQyBOUE9iamVjdCogV2lu
ZG93U2NyaXB0TlBPYmplY3QoKTsNCiANCiAgICAgICAgIC8vLSAoTlNEcmFnT3BlcmF0aW9uKWRy
YWdPcGVyYXRpb25Gb3JEcmFnZ2luZ0luZm8oaWQgPE5TRHJhZ2dpbmdJbmZvPilpbmZvOw0KICAg
ICAgICAgLy92b2lkIGRyYWdFeGl0ZWRXaXRoRHJhZ2dpbmdJbmZvKGlkIDxOU0RyYWdnaW5nSW5m
bz4paW5mbzsNCkBAIC01MTIsMTEgKzUyMSwxMSBAQA0KICAgICAgICAgVEJvb2wgaVNob3VsZENy
ZWF0ZVJlbmRlcmVyczsNCiAgICAgICAgIC8vIHBvaW50ZXIgdG8gdGhlIGNsaWVudCBzaWRlIGJy
aWRnZSBpbnRlcmZhY2UNCiAgICAgICAgIE1XZWJDbGllbnRCcmlkZ2UqIGlDbGllbnRCcmlkZ2U7
DQotICAgICAgICAvL3BvaW50ZXIgZm9yIHJlbmRlciB0ZXh0IG9iamVjdCBmb3Igc21hcnQgbGlu
ayBwYXJzaW5nIA0KKyAgICAgICAgLy9wb2ludGVyIGZvciByZW5kZXIgdGV4dCBvYmplY3QgZm9y
IHNtYXJ0IGxpbmsgcGFyc2luZw0KICAgICAgICAgRE9NOjpOb2RlSW1wbCogaVNtYXJ0TGlua05v
ZGU7DQogICAgICAgICAvL3BvaW50ZXIgZm9yIHNtYXJ0IHRleHQgYnVmZmVyDQogICAgICAgICBI
QnVmQyogaVNtYXJ0VGV4dEJ1ZmZlcjsNCi0gICAgICAgIA0KKw0KICAgICB9Ow0KIA0KIA0KQEAg
LTYxNCw3ICs2MjMsNyBAQA0KICAgICB2aXJ0dWFsIFRCb29sIERlZmVyc0xvYWRpbmcoKSA9IDA7
DQogICAgIHZpcnR1YWwgdm9pZCBTZXREZWZlcnNMb2FkaW5nKFRCb29sIGFMb2FkaW5nKSA9IDA7
DQogDQotICAgIHZpcnR1YWwgdm9pZCBTYXZlRm9ybURhdGEoY29uc3QgQ0FycmF5UHRyRmxhdDxD
V2ViQ29yZUZvcm1EYXRhRWxlbWVudD4mIGFGb3JtRGF0YSkgPSAwOyANCisgICAgdmlydHVhbCB2
b2lkIFNhdmVGb3JtRGF0YShjb25zdCBDQXJyYXlQdHJGbGF0PENXZWJDb3JlRm9ybURhdGFFbGVt
ZW50PiYgYUZvcm1EYXRhKSA9IDA7DQogDQogICAgIHZpcnR1YWwgdm9pZCBTYXZlRG9jdW1lbnRT
dGF0ZShjb25zdCBUQXJyYXk8VFB0ckM+JiBhRG9jdW1lbnRTdGF0ZSkgPSAwOw0KICAgICB2aXJ0
dWFsIFRBcnJheTxUUHRyQz4qIERvY3VtZW50U3RhdGUoKSBjb25zdCA9IDA7DQpAQCAtNzE3LDYg
KzcyNiwxMCBAQA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNv
bnN0IFREZXNDJiBhTmFtZSwgY29uc3QgVERlc0MmIGFWYWx1ZSkgPSAwOw0KIA0KICAgICB2aXJ0
dWFsIFRCb29sIENhbmNlbEluUHJvZ3Jlc3MoKSA9IDA7DQorDQorI2lmZGVmICBSRF9CUk9XU0VS
X1dJREdFVFMNCisgICAgdmlydHVhbCB2b2lkKiBjcmVhdGVXaWRnZXRPYmplY3Qodm9pZCogZXhl
YykgPSAwOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIH07DQogDQogI2VuZGlmICAg
ICAgLy8gV0VCQ09SRUJSSURHRV9IDQpJbmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29yZVdpZGdl
dC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2ViQ29yZVdpZGdldC5oCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlV2lkZ2V0LmgJKHdvcmtpbmcg
Y29weSkNCkBAIC01Niw3ICs1Niw3IEBADQogDQogDQogLyoqDQotKiAgaW50ZXJmYWNlLCB1c2Vk
IGJ5IHdpZGdldCBjbGFzc2VzIA0KKyogIGludGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3Nl
cw0KICogIEBsaWIgd2ViY29yZS5saWINCiAqICBAc2luY2UgMy4xDQogKi8NCkBAIC02NCw5ICs2
NCw5IEBADQogICB7DQogICBwdWJsaWM6DQogDQotICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJD
b3JlR3JhcGhpY3NDb250ZXh0JiAvKmFHYyovLCANCisgICAgdmlydHVhbCB2b2lkIERyYXcoQ1dl
YkNvcmVHcmFwaGljc0NvbnRleHQmIC8qYUdjKi8sDQogICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRSZWN0JiAvKmFSZWN0Ki8pID0gMDsNCi0gICAgDQorDQogICAgIHZpcnR1YWwgVEJvb2wg
SXNWaXNpYmxlKCkgY29uc3QgPSAwOw0KIA0KICAgICB2aXJ0dWFsIFRSZWN0IFJlY3QoKSBjb25z
dCA9IDA7DQpAQCAtODEsMTIgKzgxLDEyIEBADQogDQogICAgIHZpcnR1YWwgdm9pZCBTZXRSZWN0
KGNvbnN0IFRSZWN0JiBhUmVjdCkgPSAwOw0KIA0KLSAgICB2aXJ0dWFsIHZvaWQgQWN0aXZhdGUo
KSA9IDA7ICAgIA0KLSAgICANCisgICAgdmlydHVhbCB2b2lkIEFjdGl2YXRlKCkgPSAwOw0KKw0K
ICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFyZW50KCBNV2ViQ29yZVNjcm9sbFZpZXcqIGFQYXJlbnQg
KSA9ICAwOw0KIA0KICAgICB2aXJ0dWFsIHZvaWQgQ2xvc2UoKSA9IDA7DQotICAgIA0KKw0KICAg
ICB2aXJ0dWFsIFRCb29sIElzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIEVGYWxzZTsgfQ0K
IA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFsZXR0ZShUV2ViQ29yZVBhbGV0dGUpIHt9DQpAQCAt
OTQsMzIgKzk0LDM0IEBADQogICAgIHZpcnR1YWwgdm9pZCBTZXRPdXRsaW5lV2lkdGgoVFVpbnQ4
ICkge30NCiANCiAgICAgdmlydHVhbCB2b2lkIFNldFdyaXRpbmdEaXJlY3Rpb25SdGwoVEJvb2wp
IHt9DQorDQorICAgIHZpcnR1YWwgdm9pZCogUGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0
dXJuIDA7IH0NCiAgIH07DQogDQogDQogLyoqDQotKiAgaW50ZXJmYWNlLCB1c2VkIGJ5IHdpZGdl
dCBjbGFzc2VzIA0KKyogIGludGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3Nlcw0KICogIEBs
aWIgd2ViY29yZS5saWINCiAqICBAc2luY2UgMy4xDQogKi8NCiBjbGFzcyBNV2ViQ29yZVNjcm9s
bFZpZXc6IHB1YmxpYyBNV2ViQ29yZVdpZGdldA0KICAgew0KLSAgcHVibGljOiAgICAgIA0KLSAg
DQorICBwdWJsaWM6DQorDQogICAgIFRCb29sIElzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJu
IEVUcnVlOyB9DQotICAgIA0KLSAgICB2aXJ0dWFsIFRTaXplIFNpemVIaW50KCkgY29uc3QgeyBy
ZXR1cm4gVFNpemUoKTsgfSAgICANCi0gICAgDQotICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJD
b3JlR3JhcGhpY3NDb250ZXh0JiAvKmFHYyovLCANCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFJlY3QmIC8qYVJlY3QqLykgeyB9ICAgIA0KLSAgICANCi0gICAgdmlydHVhbCB2b2lkIElu
dmFsaWRhdGVSZWN0KGNvbnN0IFRSZWN0JiAvKmFSZWN0Ki8sIA0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEJvb2wgLyphRHJhd05vdyovKSA9IDA7ICANCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisg
ICAgdmlydHVhbCBUU2l6ZSBTaXplSGludCgpIGNvbnN0IHsgcmV0dXJuIFRTaXplKCk7IH0NCisN
CisgICAgdmlydHVhbCB2b2lkIERyYXcoQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQmIC8qYUdjKi8s
DQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRSZWN0JiAvKmFSZWN0Ki8pIHsgfQ0KKw0K
KyAgICB2aXJ0dWFsIHZvaWQgSW52YWxpZGF0ZVJlY3QoY29uc3QgVFJlY3QmIC8qYVJlY3QqLywN
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29sIC8qYURyYXdOb3cqLykgPSAw
Ow0KKw0KICAgICB2aXJ0dWFsIHZvaWQgU2Nyb2xsVG8oVFBvaW50IC8qYVBvaW50Ki8pID0gMDsN
Ci0gICAgDQorDQogICAgIHZpcnR1YWwgVFJlY3QgVmlzaWJsZVJlY3QoKSBjb25zdCA9IDA7DQot
ICAgIA0KKw0KICAgICB2aXJ0dWFsIFRTaXplIENvbnRlbnRTaXplKCkgY29uc3QgPSAwOw0KIA0K
ICAgICB2aXJ0dWFsIHZvaWQgUmVzaXplQ29udGVudChUU2l6ZSAvKmFTaXplKi8pID0gMDsNCkBA
IC0xNDcsNyArMTQ5LDcgQEANCiAgICAgdmlydHVhbCB2b2lkIFNldFNjcm9sbEJhcnNTdXBwcmVz
c2VkKFRCb29sIC8qYVN1cHByZXNzZWQqLywgVEJvb2wgLyphUmVwYWludE9uVW5zdXBwcmVzcyov
KSA9IDA7DQogDQogICAgIHZpcnR1YWwgdm9pZCBBZGRDaGlsZChNV2ViQ29yZVdpZGdldCogLyph
Q2hpbGQqLywgVEludCAvKmFYKi8gLCBUSW50IC8qYVkqLyApID0gMDsNCi0gICAgDQorDQogICAg
IHZpcnR1YWwgVEludCBTY2FsaW5nRmFjdG9yKCkgY29uc3QgPSAwOw0KIA0KICAgICBpbmxpbmUg
VFBvaW50IFRvRG9jQ29vcmRzKGNvbnN0IFRQb2ludCYgYUZyb20pIGNvbnN0DQpAQCAtMTU1LDEz
ICsxNTcsMTMgQEANCiAgICAgICAgIFRJbnQgeiA9IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAg
IHJldHVybiBUUG9pbnQoYUZyb20uaVgqMTAwL3osYUZyb20uaVkqMTAwL3opOw0KICAgICAgICAg
fQ0KLSAgICANCisNCiAgICAgaW5saW5lIFRTaXplIFRvRG9jQ29vcmRzKGNvbnN0IFRTaXplJiBh
RnJvbSkgY29uc3QNCiAgICAgICAgIHsNCiAgICAgICAgIFRJbnQgeiA9IFNjYWxpbmdGYWN0b3Io
KTsNCiAgICAgICAgIHJldHVybiBUU2l6ZShhRnJvbS5pV2lkdGgqMTAwL3osYUZyb20uaUhlaWdo
dCoxMDAveik7DQotICAgICAgICB9ICAgIA0KLSAgICAgICAgDQorICAgICAgICB9DQorDQogICAg
IGlubGluZSBUUmVjdCBUb0RvY0Nvb3Jkcyhjb25zdCBUUmVjdCYgYUZyb20pIGNvbnN0DQogICAg
ICAgICB7DQogICAgICAgICByZXR1cm4gVFJlY3QoVG9Eb2NDb29yZHMoYUZyb20uaVRsKSxUb0Rv
Y0Nvb3JkcyhhRnJvbS5pQnIpKTsNCkBAIC0xNzIsMTggKzE3NCwxOCBAQA0KICAgICAgICAgVElu
dCB6ID0gU2NhbGluZ0ZhY3RvcigpOw0KICAgICAgICAgcmV0dXJuIFRQb2ludChhRnJvbS5pWCp6
LzEwMCxhRnJvbS5pWSp6LzEwMCk7DQogICAgICAgICB9DQotICAgIA0KKw0KICAgICBpbmxpbmUg
VFNpemUgVG9WaWV3Q29vcmRzKGNvbnN0IFRTaXplJiBhRnJvbSkgY29uc3QNCiAgICAgICAgIHsN
CiAgICAgICAgIFRJbnQgeiA9IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAgIHJldHVybiBUU2l6
ZShhRnJvbS5pV2lkdGgqei8xMDAsYUZyb20uaUhlaWdodCp6LzEwMCk7DQotICAgICAgICB9ICAg
IA0KLSAgICAgICAgDQorICAgICAgICB9DQorDQogICAgIGlubGluZSBUUmVjdCBUb1ZpZXdDb29y
ZHMoY29uc3QgVFJlY3QmIGFGcm9tKSBjb25zdA0KICAgICAgICAgew0KICAgICAgICAgcmV0dXJu
IFRSZWN0KFRvVmlld0Nvb3JkcyhhRnJvbS5pVGwpLFRvVmlld0Nvb3JkcyhhRnJvbS5pQnIpKTsN
Ci0gICAgICAgIH0gICAgDQotICAgIA0KKyAgICAgICAgfQ0KKw0KICAgICBpbmxpbmUgVEJvb2wg
SXNTY2FsZWQoKSBjb25zdCB7IHJldHVybiBTY2FsaW5nRmFjdG9yKCkhPTEwMDsgfQ0KICAgfTsN
CiANCkBAIC0xOTgsMzIgKzIwMCwzMiBAQA0KIGNsYXNzIE1XZWJDb3JlT2JqZWN0V2lkZ2V0OiBw
dWJsaWMgTVdlYkNvcmVXaWRnZXQNCiAgICAgew0KICAgICBwdWJsaWM6IC8vIENvbnN0cnVjdG9y
IGFuZCBEZWNvbnN0cnV0b3INCi0gICAgDQorDQogICAgICAgICB2aXJ0dWFsIH5NV2ViQ29yZU9i
amVjdFdpZGdldCgpIHt9Ow0KLSAgICANCisNCiAgICAgcHVibGljOiAvLyBDbGFzcyBNZXRob2Rz
DQotICAgIA0KKw0KICAgICAgICAgLy8gT2JqZWN0L0VtYmVkIHJlbGF0ZWQgbWV0aG9kcw0KICAg
ICAvLyBSZXR1cm5zIEVUcnVlIGlmIHRoZSB3aWRnZXQgaXMgYWN0aXZlDQogICAgIHZpcnR1YWwg
VEJvb2wgSXNBY3RpdmUoKSBjb25zdCA9IDA7DQotICAgIA0KKw0KICAgICAvLyBEZWFjdGl2YXRl
cyB0aGUgcGx1Z2luDQogICAgIHZpcnR1YWwgdm9pZCBEZUFjdGl2YXRlKCkgPSAwOw0KLSAgICAN
CisNCiAgICAgLy8gU2V0cyB0aGUgZm9udA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0Rm9udChDRm9u
dCogYUZvbnQpID0gMDsNCi0gICAgDQorDQogICAgIC8vIFNvdW5kc3RhcnQgcmVsYXRlZCBtZXRo
b2RzDQogICAgIC8vIFBsYXlzIHRoZSBjb250ZW50DQogICAgIHZpcnR1YWwgdm9pZCBQbGF5UGx1
Z2luQ29udGVudChjb25zdCBURGVzQyYgYVJlcXVlc3RVcmwpID0gMDsNCi0gICAgDQotICAgIC8v
IFN0b3BzIHBsYXlpbmcgdGhlIGNvbnRlbnQgICAgICAgIA0KKw0KKyAgICAvLyBTdG9wcyBwbGF5
aW5nIHRoZSBjb250ZW50DQogICAgIHZpcnR1YWwgdm9pZCBTdG9wUGx1Z2luQ29udGVudChjb25z
dCBURGVzQyYgYVJlcXVlc3RVcmwpID0gMDsNCi0gICAgDQotICAgIA0KLSAgICAvLyByZXR1cm4g
RVRydWUgaWYgdGhlIHBsdWdpbiBoYXMgcmVzaXplZCANCisNCisNCisgICAgLy8gcmV0dXJuIEVU
cnVlIGlmIHRoZSBwbHVnaW4gaGFzIHJlc2l6ZWQNCiAgICAgdmlydHVhbCBUQm9vbCBIYXNSZXNp
emVkKCkgPSAwOw0KLSAgICANCisNCiAgICAgLy8gY2hlY2sgaWYgdGhlIHBsdWdpbiBpcyBhYmxl
IHRvIGFjY2VwdCBmb2N1cyBldmVudA0KICAgICB2aXJ0dWFsIFRCb29sIElzRm9jdXNhYmxlKCkg
Y29uc3QgPSAwOw0KIA0KSW5kZXg6IFdlYkNvcmUvQldJTlMvV0VCQ09SRVUuREVGDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9CV0lOUy9XRUJDT1JFVS5ERUYJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IFdlYkNvcmUvQldJTlMvV0VCQ09SRVUuREVGCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwxNTkgKzEs
MTYwIEBADQogRVhQT1JUUw0KLQk/PzFDV2ViQ29yZVNldHRpbmdzQEBVQUVAWFogQCAxIE5PTkFN
RSA7IENXZWJDb3JlU2V0dGluZ3M6On5DV2ViQ29yZVNldHRpbmdzKHZvaWQpDQotCT9BY3RpdmF0
ZUFjY2Vzc0tleXNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhVVEtleUV2ZW50QEBAWiBAIDIgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0aXZhdGVBY2Nlc3NLZXlzKHN0cnVjdCBUS2V5RXZl
bnQpDQotCT9BY3RpdmF0ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBA
IDMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0aXZhdGVFdmVudChjbGFzcyBUUG9p
bnQgJikNCi0JP0FkZERhdGFAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgNCBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpBZGREYXRhKGNsYXNzIFREZXNDOCBjb25zdCAm
KQ0KLQk/QWRkSXRlbVRvQ2FjaGVMQFRXZWJDb3JlQ2FjaGVAQFNBWEFBVk1XZWJDb3JlVXJsUmVz
cG9uc2VIZWFkZXJJbmZvQEBBQVZURGVzQzhAQEhAWiBAIDUgTk9OQU1FIDsgdm9pZCBUV2ViQ29y
ZUNhY2hlOjpBZGRJdGVtVG9DYWNoZUwoY2xhc3MgTVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlcklu
Zm8gJiwgY2xhc3MgVERlc0M4ICYsIGludCkNCi0JP0FkZFRvQ29udGFjdHNAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpB
ZGRUb0NvbnRhY3RzKGNsYXNzIFRQb2ludCAmKQ0KLQk/QWRqdXN0Vmlld1NpemVAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhYWiBAIDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRqdXN0Vmll
d1NpemUodm9pZCkNCi0JP0FsdFRleHRAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJD
MTZAQFhaIEAgOCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2ICYgVFdlYkNvcmVJbWFnZUNhcnJpZXI6
OkFsdFRleHQodm9pZCkNCi0JP0F1dG9SZWZyZXNoRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBR
QkVIWFogQCA5IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpBdXRvUmVmcmVzaEVuYWJs
ZWQodm9pZCkgY29uc3QNCi0JP0JvZHlCYWNrZ3JvdW5kQ29sb3JAQ1dlYkNvcmVCcmlkZ2VAQFFB
RT9BVlRSZ2JAQFhaIEAgMTAgTk9OQU1FIDsgY2xhc3MgVFJnYiBDV2ViQ29yZUJyaWRnZTo6Qm9k
eUJhY2tncm91bmRDb2xvcih2b2lkKQ0KLQk/Q2FuQ2FjaGVQYWdlQENXZWJDb3JlQnJpZGdlQEBR
QkVIWFogQCAxMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkNhbkNhY2hlUGFnZSh2b2lk
KSBjb25zdA0KLQk/Q2xlYXJGaW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxMiBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbGVhckZpbmQodm9pZCkNCi0JP0NsaWVudEBDV2ViQ29y
ZUJyaWRnZUBAUUFFQUFWTVdlYkNsaWVudEJyaWRnZUBAWFogQCAxMyBOT05BTUUgOyBjbGFzcyBN
V2ViQ2xpZW50QnJpZGdlICYgQ1dlYkNvcmVCcmlkZ2U6OkNsaWVudCh2b2lkKQ0KLQk/Q2xvc2VV
UkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDE0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkNsb3NlVVJMKHZvaWQpDQotCT9Db29raWVBZGFwdGVyQFRXZWJDb3JlQ29va2llRmFjdG9y
eUBAU0FQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQFhaIEAgMTUgTk9OQU1FIDsgY2xhc3MgTVdl
YkNvcmVDb29raWVBZGFwdGVyICogVFdlYkNvcmVDb29raWVGYWN0b3J5OjpDb29raWVBZGFwdGVy
KHZvaWQpDQotCT9DcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUFF
WEFCVlREZXNDMTZAQEhAWiBAIDE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0
ZURvY3VtZW50V2l0aEVuY29kaW5nKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50KQ0KLQk/Q3Jl
YXRlS0hUTUxWaWV3QENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBI
SEBaIEAgMTcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q3JlYXRlS0hUTUxWaWV3KGNs
YXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmLCBpbnQsIGludCkNCi0JP0N1cnNpdmVGb250RmFtaWx5
QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTggTk9OQU1FIDsgY2xhc3Mg
VFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpDdXJzaXZlRm9udEZhbWlseSh2b2lkKSBjb25zdA0K
LQk/RGVBY3RpdmF0ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTkgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6RGVBY3RpdmF0ZUV2ZW50KGludCkNCi0JP0RlZmF1bHRGaXhl
ZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDIwIE5PTkFNRSA7IGludCBDV2Vi
Q29yZVNldHRpbmdzOjpEZWZhdWx0Rml4ZWRGb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/RGVmYXVs
dEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDIxIE5PTkFNRSA7IGludCBDV2Vi
Q29yZVNldHRpbmdzOjpEZWZhdWx0Rm9udFNpemUodm9pZCkgY29uc3QNCi0JP0RlZmF1bHRUZXh0
RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAyMiBOT05BTUUg
OyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkRlZmF1bHRUZXh0RW5jb2Rpbmcodm9p
ZCkgY29uc3QNCi0JP0RlZmVyc1RpbWVyc0BDV2ViQ29yZUJyaWRnZUBAU0FIWFogQCAyMyBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkRlZmVyc1RpbWVycyh2b2lkKQ0KLQk/RGV0ZXJtaW5l
Q3Vyc29yUG9zaXRpb25AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQVc0VFdlYkNvcmVGb2N1c2VkRWxl
bWVudFR5cGVAQEFBVlRSZWN0QEAxQUFWVFBvaW50QEBIQFogQCAyNCBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVCcmlkZ2U6OkRldGVybWluZUN1cnNvclBvc2l0aW9uKGVudW0gVFdlYkNvcmVGb2N1c2Vk
RWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJiwgY2xhc3MgVFJlY3QgJiwgY2xhc3MgVFBvaW50
ICYsIGludCkNCi0JP0RpZE5vdE9wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2
QEBAWiBAIDI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRpZE5vdE9wZW5VUkwoY2xh
c3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/RG9tYWluQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRy
QzE2QEBYWiBAIDI2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkRvbWFp
bih2b2lkKSBjb25zdA0KLQk/RHJhd1JlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZUUmVjdEBA
QUFWQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQEBaIEAgMjcgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6RHJhd1JlY3QoY2xhc3MgVFJlY3QgY29uc3QgJiwgY2xhc3MgQ1dlYkNvcmVHcmFw
aGljc0NvbnRleHQgJikNCi0JP0R1bXBSZW5kZXJUcmVlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFog
QCAyOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEdW1wUmVuZGVyVHJlZSh2b2lkKQ0K
LQk/RW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAyOSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpFbmQodm9pZCkNCi0JP0V4ZWN1dGVTY3JpcHRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhB
QlZURGVzQzE2QEBAWiBAIDMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkV4ZWN1dGVT
Y3JpcHQoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/RmFjdG9yeUBUV2ViQ29yZUZvcm1Db250
cm9sRmFjdG9yeUBAU0FQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAWFogQCAzMSBOT05B
TUUgOyBjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqIFRXZWJDb3JlRm9ybUNvbnRy
b2xGYWN0b3J5OjpGYWN0b3J5KHZvaWQpDQotCT9GYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJl
ckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMiBOT05B
TUUgOyBjbGFzcyBNV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5ICogVFdlYkNvcmVJbWFnZVJl
bmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KLQk/RmFjdG9yeUBUV2ViQ29yZVRleHRSZW5k
ZXJlckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBYWiBAIDMzIE5P
TkFNRSA7IGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlVGV4dFJl
bmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KLQk/RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNv
cmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAzNCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2
IENXZWJDb3JlU2V0dGluZ3M6OkZhbnRhc3lGb250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9GYXN0
Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgMzUgTk9OQU1FIDsgaW50
IENXZWJDb3JlQnJpZGdlOjpGYXN0Rmlyc3REaXNwbGF5TW9kZSh2b2lkKSBjb25zdA0KLQk/Rmlu
ZExpbmtzT2ZUeXBlQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlA
VVRXZWJDb3JlTGlua0l0ZW1AQEBAQFogQCAzNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpGaW5kTGlua3NPZlR5cGUoY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBSQXJyYXk8c3Ry
dWN0IFRXZWJDb3JlTGlua0l0ZW0+ICYpDQotCT9GaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0
aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAzNyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJD
b3JlU2V0dGluZ3M6OkZpeGVkRm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/Rm9yY2VMYXlvdXRB
ZGp1c3RpbmdWaWV3U2l6ZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDM4IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OkZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemUoaW50KQ0KLQk/
R2V0UGFnZURhdGFMQENXZWJDb3JlQnJpZGdlQEBRQUVQQVY/JENBcnJheVB0ckBWQ1dlYkNvcmVQ
YWdlRGF0YUl0ZW1AQEBASEBaIEAgMzkgTk9OQU1FIDsgY2xhc3MgQ0FycmF5UHRyPGNsYXNzIENX
ZWJDb3JlUGFnZURhdGFJdGVtPiAqIENXZWJDb3JlQnJpZGdlOjpHZXRQYWdlRGF0YUwoaW50KQ0K
LQk/R2V0VGV4dENvbnRlbnRMQENXZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBYWiBAIDQw
IE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0VGV4dENvbnRlbnRM
KHZvaWQpDQotCT9HZXRVcmxPZk5vZGVJbkZvY3VzTEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWSEJ1
ZkMxNkBAQUFWVFBvaW50QEBAWiBAIDQxIE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29y
ZUJyaWRnZTo6R2V0VXJsT2ZOb2RlSW5Gb2N1c0woY2xhc3MgVFBvaW50ICYpIGNvbnN0DQotCT9I
YXNQZW5kaW5nTGF5b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA0MiBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVCcmlkZ2U6Okhhc1BlbmRpbmdMYXlvdXQodm9pZCkgY29uc3QNCi0JP0hpc3RvcnlQ
cm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQFha
IEAgNDMgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgKiBUV2ViQ29yZUhp
c3Rvcnk6Okhpc3RvcnlQcm92aWRlcih2b2lkKQ0KLQk/SW1hZ2VDb3VudEBDV2ViQ29yZUJyaWRn
ZUBAUUFFSEhAWiBAIDQ0IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VDb3VudChp
bnQpDQotCT9JbWFnZVR5cGVAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFha
IEAgNDUgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpJbWFn
ZVR5cGUodm9pZCkNCi0JP0ltYWdlc0luUmVjdEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJy
YXlGaXhGbGF0QFZUV2ViQ29yZUltYWdlQ2FycmllckBAQEBIQFogQCA0NiBOT05BTUUgOyBjbGFz
cyBDQXJyYXlGaXhGbGF0PGNsYXNzIFRXZWJDb3JlSW1hZ2VDYXJyaWVyPiAqIENXZWJDb3JlQnJp
ZGdlOjpJbWFnZXNJblJlY3QoaW50KQ0KLQk/SW5pdGlhbGl6ZVNldHRpbmdzQENXZWJDb3JlQnJp
ZGdlQEBRQUVYQUJWQ1dlYkNvcmVTZXR0aW5nc0BAQFogQCA0NyBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpJbml0aWFsaXplU2V0dGluZ3MoY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyBjb25z
dCAmKQ0KLQk/SW5zdGFsbEluRnJhbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZNV2ViQ29yZVNj
cm9sbFZpZXdAQEBaIEAgNDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5zdGFsbElu
RnJhbWUoY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3ICYpDQotCT9Jc0ZyYW1lU2V0QENXZWJDb3Jl
QnJpZGdlQEBRQkVIWFogQCA0OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OklzRnJhbWVT
ZXQodm9pZCkgY29uc3QNCi0JP0phdmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBA
IDUwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhRW5hYmxlZCh2b2lkKSBjb25z
dA0KLQk/SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRp
bmdzQEBRQkVIWFogQCA1MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSh2b2lkKSBjb25zdA0KLQk/SmF2YVNjcmlwdEVu
YWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTIgTk9OQU1FIDsgaW50IENXZWJDb3Jl
U2V0dGluZ3M6OkphdmFTY3JpcHRFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9KdW1wVG9TZWxlY3Rp
b25AQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDUzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6Okp1bXBUb1NlbGVjdGlvbih2b2lkKQ0KLQk/S2V5RXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFB
RUhVVEtleUV2ZW50QEBIQFogQCA1NCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OktleUV2
ZW50KHN0cnVjdCBUS2V5RXZlbnQsIGludCkNCi0JP0xvYWRJbWFnZXNAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhYWiBAIDU1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkxvYWRJbWFnZXModm9p
ZCkNCi0JP0xvYWRlckNvbnRhaW5lckBUV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FQQVZNV2Vi
Q29yZUxvYWRlckNvbnRhaW5lckBAWFogQCA1NiBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUxvYWRl
ckNvbnRhaW5lciAqIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpMb2FkZXJDb250YWluZXIodm9p
ZCkNCi0JP01pbmltdW1Gb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1NyBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6TWluaW11bUZvbnRTaXplKHZvaWQpIGNvbnN0DQot
CT9NaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDU4IE5P
TkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpNaW5pbXVtTG9naWNhbEZvbnRTaXplKHZvaWQp
IGNvbnN0DQotCT9OYW1lQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDU5IE5P
TkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6Ok5hbWUodm9pZCkgY29uc3QNCi0J
P05hdmlnYWJsZU5vZGVVbmRlckN1cnNvckBDV2ViQ29yZUJyaWRnZUBAUUJFSEFBVlRQb2ludEBA
QUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBAQFogQCA2MCBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5hdmlnYWJsZU5vZGVVbmRlckN1cnNvcihjbGFzcyBUUG9p
bnQgJiwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBjbGFzcyBUUmVjdCAmKSBj
b25zdA0KLQk/TmVlZHNMYXlvdXRAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDYxIE5PTkFNRSA7
IGludCBDV2ViQ29yZUJyaWRnZTo6TmVlZHNMYXlvdXQodm9pZCkgY29uc3QNCi0JP05ld0xAQ1dl
YkNvcmVCcmlkZ2VAQFNBUEFWMUBBQVZNV2ViQ2xpZW50QnJpZGdlQEBAWiBAIDYyIE5PTkFNRSA7
IGNsYXNzIENXZWJDb3JlQnJpZGdlICogQ1dlYkNvcmVCcmlkZ2U6Ok5ld0woY2xhc3MgTVdlYkNs
aWVudEJyaWRnZSAmKQ0KLQk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQEFB
VkNGYnNCaXRHY0BAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDYz
IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGlj
c0NvbnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdEdjICYsIGNsYXNzIENGYnNCaXRtYXAgKiwgY2xh
c3MgTVdlYkNvcmVTY3JvbGxWaWV3ICopDQotCT9OZXdMQENXZWJDb3JlR3JhcGhpY3NDb250ZXh0
QEBTQVBBVjFAUEFWQ0Zic0JpdG1hcERldmljZUBAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVT
Y3JvbGxWaWV3QEBAWiBAIDY0IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0
ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdG1hcERldmljZSAq
LCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAqKQ0KLQk/TmV3
TEBDV2ViQ29yZVNldHRpbmdzQEBTQVBBVjFAWFogQCA2NSBOT05BTUUgOyBjbGFzcyBDV2ViQ29y
ZVNldHRpbmdzICogQ1dlYkNvcmVTZXR0aW5nczo6TmV3TCh2b2lkKQ0KLQk/Tm90aWZ5RGVjb2Rp
bmdFcnJvckBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NiBOT05BTUUg
OyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeURlY29kaW5nRXJyb3Io
dm9pZCkNCi0JP05vdGlmeUZpbmlzaGVkQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFB
RVhYWiBAIDY3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6Tm90
aWZ5RmluaXNoZWQodm9pZCkNCi0JP05vdGlmeVVwZGF0ZUBDV2ViQ29yZUltYWdlQ2FsbGJhY2tX
cmFwcGVyQEBRQUVYWFogQCA2OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dy
YXBwZXI6Ok5vdGlmeVVwZGF0ZSh2b2lkKQ0KLQk/TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3Rz
QENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCA2OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6
Ok51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh2b2lkKQ0KLQk/T3BlblVSTEBDV2ViQ29yZUJy
aWRnZUBAUUFFWEFCVlREZXNDMTZAQEgwMEFCVlREYXRlVGltZUBAQFogQCA3MCBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBj
bGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERhdGVU
aW1lIGNvbnN0ICYpDQotCT9QbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FQ
QVZNV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFhaIEAgNzEgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVQ
bHVnaW5IYW5kbGVyICogVFdlYkNvcmVQbHVnaW5IYW5kbGVyOjpQbHVnaW5IYW5kbGVyKHZvaWQp
DQotCT9QbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA3MiBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQodm9pZCkgY29uc3QNCi0JP1Bv
aW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFVUUG9pbnRlckV2ZW50QEBAWiBAIDczIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVudChzdHJ1Y3QgVFBvaW50ZXJF
dmVudCkNCi0JP1BvaW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFc0VFR5cGVAVFBvaW50
ZXJFdmVudEBAQUJWVFBvaW50QEBAWiBAIDc0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlBvaW50ZXJFdmVudChlbnVtIFRQb2ludGVyRXZlbnQ6OlRUeXBlLCBjbGFzcyBUUG9pbnQgY29u
c3QgJikNCi0JP1ByZXBhcmVGb3JFeGl0QENXZWJDb3JlQnJpZGdlQEBTQVhYWiBAIDc1IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlByZXBhcmVGb3JFeGl0KHZvaWQpDQotCT9Qcm92aXNp
b25hbExvYWRTdGFydGVkQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA3NiBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpQcm92aXNpb25hbExvYWRTdGFydGVkKHZvaWQpDQotCT9SYXdEYXRh
QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzhAQFhaIEAgNzcgTk9OQU1FIDsgY2xh
c3MgVFB0ckM4ICYgVFdlYkNvcmVJbWFnZUNhcnJpZXI6OlJhd0RhdGEodm9pZCkNCi0JP1JlYXBw
bHlTdHlsZXNGb3JEZXZpY2VUeXBlQENXZWJDb3JlQnJpZGdlQEBRQUVYVzRUV2ViQ29yZURldmlj
ZVR5cGVAQEBaIEAgNzggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UmVhcHBseVN0eWxl
c0ZvckRldmljZVR5cGUoZW51bSBUV2ViQ29yZURldmljZVR5cGUpDQotCT9SZWZlcnJlckBDV2Vi
Q29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA3OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2
IENXZWJDb3JlQnJpZGdlOjpSZWZlcnJlcih2b2lkKSBjb25zdA0KLQk/UmVtb3ZlRmlsZU5hbWVA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgODAgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6UmVtb3ZlRmlsZU5hbWUoY2xhc3MgVFBvaW50ICYpDQotCT9SZW1vdmVGcm9t
RnJhbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDgxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OlJlbW92ZUZyb21GcmFtZSh2b2lkKQ0KLQk/UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRn
ZUBAUUJFUEFWMGtodG1sQEBYWiBAIDgyIE5PTkFNRSA7IGNsYXNzIGtodG1sOjpSZW5kZXJQYXJ0
ICogQ1dlYkNvcmVCcmlkZ2U6OlJlbmRlclBhcnQodm9pZCkgY29uc3QNCi0JP1JlbmRlcmVyQFRX
ZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVQQVZNV2ViQ29yZUltYWdlUmVuZGVyZXJAQFhaIEAgODMg
Tk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyICogVFdlYkNvcmVJbWFnZUNhcnJp
ZXI6OlJlbmRlcmVyKHZvaWQpDQotCT9SZXNvbHZlVXJsTEBDV2ViQ29yZUJyaWRnZUBAU0FQQVZI
QnVmQzE2QEBBQlZURGVzQzE2QEAwQFogQCA4NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dl
YkNvcmVCcmlkZ2U6OlJlc29sdmVVcmxMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERl
c0MxNiBjb25zdCAmKQ0KLQk/UmVzdG9yZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhYWiBAIDg1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlc3RvcmVEb2N1bWVudFN0
YXRlKHZvaWQpDQotCT9TYW5zU2VyaWZGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9B
VlRQdHJDMTZAQFhaIEAgODYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdz
OjpTYW5zU2VyaWZGb250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9TYXZlRG9jdW1lbnRTdGF0ZUBD
V2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgODcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
U2F2ZURvY3VtZW50U3RhdGUodm9pZCkNCi0JP1NhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNl
dHRpbmdzQEBRQkVIWFogQCA4OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2F2ZVJh
d0RhdGFFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9TY2FsaW5nRmFjdG9yQ2hhbmdlZEBDV2ViQ29y
ZUJyaWRnZUBAUUFFWEhAWiBAIDg5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNjYWxp
bmdGYWN0b3JDaGFuZ2VkKGludCkNCi0JP1Njcm9sbFRvQW5jaG9yQENXZWJDb3JlQnJpZGdlQEBR
QUVYQUJWVERlc0MxNkBAQFogQCA5MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3Jv
bGxUb0FuY2hvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TY3JvbGxUb0FuY2hvcldpdGhV
UkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDkxIE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OlNjcm9sbFRvQW5jaG9yV2l0aFVSTChjbGFzcyBURGVzQzE2IGNvbnN0
ICYpDQotCT9TZWFyY2hBZ2FpbkBDV2ViQ29yZUJyaWRnZUBAUUFFSEFCVlREZXNDMTZAQEhISEBa
IEAgOTIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTZWFyY2hBZ2FpbihjbGFzcyBURGVz
QzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQotCT9TZWFyY2hGb3JAQ1dlYkNvcmVCcmlkZ2VA
QFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkzIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6
U2VhcmNoRm9yKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBpbnQsIGludCkNCi0JP1NlbGVj
dGlvbkNvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdiQEBYWiBAIDk0IE5PTkFNRSA7IGNs
YXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OlNlbGVjdGlvbkNvbG9yKHZvaWQpDQotCT9TZW5kUmVz
aXplRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDk1IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OlNlbmRSZXNpemVFdmVudCh2b2lkKQ0KLQk/U2VuZFNjcm9sbEV2ZW50QENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCA5NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5k
U2Nyb2xsRXZlbnQodm9pZCkNCi0JP1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBR
QkU/QVZUUHRyQzE2QEBYWiBAIDk3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0
aW5nczo6U2VyaWZGb250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9TZXRBdXRvUmVmcmVzaEVuYWJs
ZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDk4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVT
ZXR0aW5nczo6U2V0QXV0b1JlZnJlc2hFbmFibGVkKGludCkNCi0JP1NldENhbGxiYWNrQENXZWJD
b3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFBRVhQQVZDYWNoZWRJbWFnZUNhbGxiYWNrQGtodG1s
QEBAWiBAIDk5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6U2V0
Q2FsbGJhY2soY2xhc3Mga2h0bWw6OkNhY2hlZEltYWdlQ2FsbGJhY2sgKikNCi0JP1NldENvb2tp
ZUFkYXB0ZXJAVFdlYkNvcmVDb29raWVGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUNvb2tpZUFkYXB0
ZXJAQEBaIEAgMTAwIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDb29raWVGYWN0b3J5OjpTZXRDb29r
aWVBZGFwdGVyKGNsYXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqKQ0KLQk/U2V0Q3Vyc2l2ZUZv
bnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTAxIE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY2xhc3MgVERl
c0MxNiBjb25zdCAmKQ0KLQk/U2V0RGVmYXVsdEZpeGVkRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEhAWiBAIDEwMiBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1
bHRGaXhlZEZvbnRTaXplKGludCkNCi0JP1NldERlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYSEBaIEAgMTAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVm
YXVsdEZvbnRTaXplKGludCkNCi0JP1NldERlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0
aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0
aW5nczo6U2V0RGVmYXVsdFRleHRFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9T
ZXREZWZlcnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VAQFNBWEhAWiBAIDEwNSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpTZXREZWZlcnNUaW1lcnMoaW50KQ0KLQk/U2V0RHJhd3NCYWNrZ3Jv
dW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTA2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OlNldERyYXdzQmFja2dyb3VuZChpbnQpDQotCT9TZXRGYW50YXN5Rm9udEZhbWlseUBD
V2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMDcgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZVNldHRpbmdzOjpTZXRGYW50YXN5Rm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0
ICYpDQotCT9TZXRGYXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBA
IDEwOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRGYXN0Rmlyc3REaXNwbGF5TW9k
ZShpbnQpDQotCT9TZXRGaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlRE
ZXNDMTZAQEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0Rml4ZWRG
b250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldEZvbnRTaXplTGV2ZWxAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
U2V0Rm9udFNpemVMZXZlbChpbnQpDQotCT9TZXRGb3JtQ29udHJvbFRleHRCeU5hbWVAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEAwQFogQCAxMTEgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJiwg
Y2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0SGlzdG9yeVByb3ZpZGVyQFRXZWJDb3JlSGlz
dG9yeUBAU0FYUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQEBaIEAgMTEyIE5PTkFNRSA7IHZv
aWQgVFdlYkNvcmVIaXN0b3J5OjpTZXRIaXN0b3J5UHJvdmlkZXIoY2xhc3MgTVdlYkNvcmVIaXN0
b3J5UHJvdmlkZXIgKikNCi0JP1NldEphdmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhI
QFogQCAxMTMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhRW5hYmxlZChp
bnQpDQotCT9TZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5QENXZWJDb3Jl
U2V0dGluZ3NAQFFBRVhIQFogQCAxMTQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpT
ZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGludCkNCi0JP1NldEphdmFT
Y3JpcHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTUgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2NyaXB0RW5hYmxlZChpbnQpDQotCT9TZXRNYXhC
aWRpV2lkdGhAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMTYgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6U2V0TWF4QmlkaVdpZHRoKGludCkNCi0JP1NldE1pbmltdW1Gb250U2l6ZUBD
V2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0
aW5nczo6U2V0TWluaW11bUZvbnRTaXplKGludCkNCi0JP1NldE1pbmltdW1Mb2dpY2FsRm9udFNp
emVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDExOCBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
U2V0dGluZ3M6OlNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoaW50KQ0KLQk/U2V0TmFtZUBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OlNldE5hbWUoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0TmVlZHNMYXlv
dXRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDEyMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpTZXROZWVkc0xheW91dCh2b2lkKQ0KLQk/U2V0UGFyZW50QENXZWJDb3JlQnJpZGdlQEBR
QUVYUEFWMUBAWiBAIDEyMSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRQYXJlbnQo
Y2xhc3MgQ1dlYkNvcmVCcmlkZ2UgKikNCi0JP1NldFBsdWdpbnNFbmFibGVkQENXZWJDb3JlU2V0
dGluZ3NAQFFBRVhIQFogQCAxMjIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRQ
bHVnaW5zRW5hYmxlZChpbnQpDQotCT9TZXRSZW5kZXJQYXJ0QENXZWJDb3JlQnJpZGdlQEBRQUVY
UEFWUmVuZGVyUGFydEBraHRtbEBAQFogQCAxMjMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6U2V0UmVuZGVyUGFydChjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqKQ0KLQk/U2V0U2Fuc1Nl
cmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjQg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTYW5zU2VyaWZGb250RmFtaWx5KGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFNhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNl
dHRpbmdzQEBRQUVYSEBaIEAgMTI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0
U2F2ZVJhd0RhdGFFbmFibGVkKGludCkNCi0JP1NldFNlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNl
dHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNl
dHRpbmdzOjpTZXRTZXJpZkZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0
U2hvdWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTI3IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhpbnQpDQot
CT9TZXRTaG91bGRQcmludEJhY2tncm91bmRzQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAx
MjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTaG91bGRQcmludEJhY2tncm91
bmRzKGludCkNCi0JP1NldFN0YW5kYXJkRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVY
QUJWVERlc0MxNkBAQFogQCAxMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRT
dGFuZGFyZEZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbkBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMzAg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlA
VFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0
b3J5QEBAWiBAIDEzMSBOT05BTUUgOyB2b2lkIFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpT
ZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5KGNsYXNzIE1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0
b3J5ICopDQotCT9TZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVJbWFnZVJl
bmRlcmVyRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAQFogQCAx
MzIgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3Jl
SW1hZ2VSZW5kZXJlckZhY3RvcnkoY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAq
KQ0KLQk/U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5lckBUV2ViQ29yZUxvYWRlckNvbnRhaW5lckBA
U0FYUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJAQEBaIEAgMTMzIE5PTkFNRSA7IHZvaWQgVFdl
YkNvcmVMb2FkZXJDb250YWluZXI6OlNldFdlYkNvcmVMb2FkZXJDb250YWluZXIoY2xhc3MgTVdl
YkNvcmVMb2FkZXJDb250YWluZXIgKikNCi0JP1NldFdlYkNvcmVQbHVnaW5IYW5kbGVyQFRXZWJD
b3JlUGx1Z2luSGFuZGxlckBAU0FYUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBAWiBAIDEzNCBO
T05BTUUgOyB2b2lkIFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6U2V0V2ViQ29yZVBsdWdpbkhhbmRs
ZXIoY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5kbGVyICopDQotCT9TZXRXZWJDb3JlVGV4dFJlbmRl
cmVyRmFjdG9yeUBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlVGV4
dFJlbmRlcmVyRmFjdG9yeUBAQFogQCAxMzUgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVRleHRSZW5k
ZXJlckZhY3Rvcnk6OlNldFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3Jl
VGV4dFJlbmRlcmVyRmFjdG9yeSAqKQ0KLQk/U2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5
QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNl
dHRpbmdzOjpTZXRXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkoaW50KQ0KLQk/U2hvdWxkQ3Jl
YXRlUmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCAxMzcgTk9OQU1FIDsgaW50IENX
ZWJDb3JlQnJpZGdlOjpTaG91bGRDcmVhdGVSZW5kZXJlcnModm9pZCkNCi0JP1Nob3VsZFByaW50
QmFja2dyb3VuZHNAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTM4IE5PTkFNRSA7IGludCBD
V2ViQ29yZVNldHRpbmdzOjpTaG91bGRQcmludEJhY2tncm91bmRzKHZvaWQpIGNvbnN0DQotCT9T
aG93aW5nRmFzdFByZXZpZXdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDEzOSBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVCcmlkZ2U6OlNob3dpbmdGYXN0UHJldmlldyh2b2lkKSBjb25zdA0KLQk/U3Rh
bmRhcmRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQw
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U3RhbmRhcmRGb250RmFt
aWx5KHZvaWQpIGNvbnN0DQotCT9UYWJiZWROYXZpZ2F0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVI
VzRUV2ViTmF2RGlyZWN0aW9uQEBBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEhAWiBA
IDE0MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlRhYmJlZE5hdmlnYXRpb24oZW51bSBU
V2ViTmF2RGlyZWN0aW9uLCBlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGludCkN
Ci0JP1RleHRFbmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUJFSVhaIEAgMTQyIE5PTkFNRSA7IHVu
c2lnbmVkIGludCBDV2ViQ29yZUJyaWRnZTo6VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQotCT9V
UkxAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQzIE5PTkFNRSA7IGNsYXNz
IFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OlVSTCh2b2lkKSBjb25zdA0KLQk/VVJMV2l0aFJlbGF0
aXZlU3RyaW5nQENXZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBBQlZURGVzQzE2QEBAWiBA
IDE0NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OlVSTFdpdGhSZWxh
dGl2ZVN0cmluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9VcGRhdGVBbGxWaWV3c0BDV2Vi
Q29yZUJyaWRnZUBAU0FYWFogQCAxNDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6VXBk
YXRlQWxsVmlld3Modm9pZCkNCi0JP1VybEBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFQUFWVFB0
ckMxNkBAWFogQCAxNDYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJy
aWVyOjpVcmwodm9pZCkNCi0JP1VzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5n
c0BAUUJFP0FWVFB0ckMxNkBAWFogQCAxNDcgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29y
ZVNldHRpbmdzOjpVc2VyU3R5bGVTaGVldExvY2F0aW9uKHZvaWQpIGNvbnN0DQotCT9XaWxsTG9h
ZEltYWdlc0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTQ4IE5PTkFN
RSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkodm9p
ZCkgY29uc3QNCi0JP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRl
QDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTQ5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhh
c093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmll
ciBjb25zdCAmKSBjb25zdA0KLQk/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCAxNTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVj
dDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYpIGNvbnN0DQotCT9tYXJrZWRAVmFsdWVJbXBAS0pTQEBRQkVfTlhaIEAgMTUx
IE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6bWFya2VkKHZvaWQpIGNvbnN0DQotCT9jbGFz
c0luZm9AT2JqZWN0QEtKU0BAUUJFUEJVQ2xhc3NJbmZvQDJAWFogQCAxNTIgTk9OQU1FIDsgc3Ry
dWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pTOjpPYmplY3Q6OmNsYXNzSW5mbyh2b2lkKSBj
b25zdA0KLQk/aGFzT3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJ
QFogQCAxNTMgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KLQk/aGFzUHJvcGVydHlAT2Jq
ZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCAxNTQgTk9OQU1FIDsgYm9vbCBLSlM6
Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50
KSBjb25zdA0KLQk/cHJvcExpc3RAT2JqZWN0QEtKU0BAUUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBB
VkV4ZWNTdGF0ZUAyQF9OQFogQCAxNTUgTk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0
IEtKUzo6T2JqZWN0Ojpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KLQk/
R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTEBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFB0
ckMxNkBAQUFIQFogQCAxNTYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6
R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTChpbnQgJikNCi0JP0dldFJlbmRlclRleHRB
cmVhQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlAVlRSZWN0QEBA
QEBaIEAgMTU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVh
KGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PGNsYXNzIFRSZWN0PiAmKQ0KKyAg
ICA/PzFDV2ViQ29yZVNldHRpbmdzQEBVQUVAWFogQCAxIE5PTkFNRSA7IENXZWJDb3JlU2V0dGlu
Z3M6On5DV2ViQ29yZVNldHRpbmdzKHZvaWQpDQorICAgID9BY3RpdmF0ZUFjY2Vzc0tleXNAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhVVEtleUV2ZW50QEBAWiBAIDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6QWN0aXZhdGVBY2Nlc3NLZXlzKHN0cnVjdCBUS2V5RXZlbnQpDQorICAgID9BY3Rp
dmF0ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDMgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0aXZhdGVFdmVudChjbGFzcyBUUG9pbnQgJikNCisgICAg
P0FkZERhdGFAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgNCBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpBZGREYXRhKGNsYXNzIFREZXNDOCBjb25zdCAmKQ0KKyAgICA/
QWRkSXRlbVRvQ2FjaGVMQFRXZWJDb3JlQ2FjaGVAQFNBWEFBVk1XZWJDb3JlVXJsUmVzcG9uc2VI
ZWFkZXJJbmZvQEBBQVZURGVzQzhAQEhAWiBAIDUgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUNhY2hl
OjpBZGRJdGVtVG9DYWNoZUwoY2xhc3MgTVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlckluZm8gJiwg
Y2xhc3MgVERlc0M4ICYsIGludCkNCisgICAgP0FkZFRvQ29udGFjdHNAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhBQVZUUG9pbnRAQEBaIEAgNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpBZGRU
b0NvbnRhY3RzKGNsYXNzIFRQb2ludCAmKQ0KKyAgICA/QWRqdXN0Vmlld1NpemVAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhYWiBAIDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRqdXN0Vmll
d1NpemUodm9pZCkNCisgICAgP0FsdFRleHRAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQ
dHJDMTZAQFhaIEAgOCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2ICYgVFdlYkNvcmVJbWFnZUNhcnJp
ZXI6OkFsdFRleHQodm9pZCkNCisgICAgP0F1dG9SZWZyZXNoRW5hYmxlZEBDV2ViQ29yZVNldHRp
bmdzQEBRQkVIWFogQCA5IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpBdXRvUmVmcmVz
aEVuYWJsZWQodm9pZCkgY29uc3QNCisgICAgP0JvZHlCYWNrZ3JvdW5kQ29sb3JAQ1dlYkNvcmVC
cmlkZ2VAQFFBRT9BVlRSZ2JAQFhaIEAgMTAgTk9OQU1FIDsgY2xhc3MgVFJnYiBDV2ViQ29yZUJy
aWRnZTo6Qm9keUJhY2tncm91bmRDb2xvcih2b2lkKQ0KKyAgICA/Q2FuQ2FjaGVQYWdlQENXZWJD
b3JlQnJpZGdlQEBRQkVIWFogQCAxMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkNhbkNh
Y2hlUGFnZSh2b2lkKSBjb25zdA0KKyAgICA/Q2xlYXJGaW5kQENXZWJDb3JlQnJpZGdlQEBRQUVY
WFogQCAxMiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbGVhckZpbmQodm9pZCkNCisg
ICAgP0NsaWVudEBDV2ViQ29yZUJyaWRnZUBAUUFFQUFWTVdlYkNsaWVudEJyaWRnZUBAWFogQCAx
MyBOT05BTUUgOyBjbGFzcyBNV2ViQ2xpZW50QnJpZGdlICYgQ1dlYkNvcmVCcmlkZ2U6OkNsaWVu
dCh2b2lkKQ0KKyAgICA/Q2xvc2VVUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDE0IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNsb3NlVVJMKHZvaWQpDQorICAgID9Db29raWVBZGFw
dGVyQFRXZWJDb3JlQ29va2llRmFjdG9yeUBAU0FQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQFha
IEAgMTUgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVDb29raWVBZGFwdGVyICogVFdlYkNvcmVDb29r
aWVGYWN0b3J5OjpDb29raWVBZGFwdGVyKHZvaWQpDQorICAgID9DcmVhdGVEb2N1bWVudFdpdGhF
bmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEhAWiBAIDE2IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nKGNsYXNzIFRE
ZXNDMTYgY29uc3QgJiwgaW50KQ0KKyAgICA/Q3JlYXRlS0hUTUxWaWV3QENXZWJDb3JlQnJpZGdl
QEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBISEBaIEAgMTcgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6Q3JlYXRlS0hUTUxWaWV3KGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmLCBp
bnQsIGludCkNCisgICAgP0N1cnNpdmVGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9B
VlRQdHJDMTZAQFhaIEAgMTggTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdz
OjpDdXJzaXZlRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/RGVBY3RpdmF0ZUV2ZW50QENX
ZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
RGVBY3RpdmF0ZUV2ZW50KGludCkNCisgICAgP0RlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3Jl
U2V0dGluZ3NAQFFCRUhYWiBAIDIwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpEZWZh
dWx0Rml4ZWRGb250U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/RGVmYXVsdEZvbnRTaXplQENXZWJD
b3JlU2V0dGluZ3NAQFFCRUhYWiBAIDIxIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpE
ZWZhdWx0Rm9udFNpemUodm9pZCkgY29uc3QNCisgICAgP0RlZmF1bHRUZXh0RW5jb2RpbmdAQ1dl
YkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAyMiBOT05BTUUgOyBjbGFzcyBUUHRy
QzE2IENXZWJDb3JlU2V0dGluZ3M6OkRlZmF1bHRUZXh0RW5jb2Rpbmcodm9pZCkgY29uc3QNCisg
ICAgP0RlZmVyc1RpbWVyc0BDV2ViQ29yZUJyaWRnZUBAU0FIWFogQCAyMyBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVCcmlkZ2U6OkRlZmVyc1RpbWVycyh2b2lkKQ0KKyAgICA/RGV0ZXJtaW5lQ3Vyc29y
UG9zaXRpb25AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5
cGVAQEFBVlRSZWN0QEAxQUFWVFBvaW50QEBIQFogQCAyNCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVC
cmlkZ2U6OkRldGVybWluZUN1cnNvclBvc2l0aW9uKGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVu
dFR5cGUgJiwgY2xhc3MgVFJlY3QgJiwgY2xhc3MgVFJlY3QgJiwgY2xhc3MgVFBvaW50ICYsIGlu
dCkNCisgICAgP0RpZE5vdE9wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBA
WiBAIDI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRpZE5vdE9wZW5VUkwoY2xhc3Mg
VERlc0MxNiBjb25zdCAmKQ0KKyAgICA/RG9tYWluQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRy
QzE2QEBYWiBAIDI2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkRvbWFp
bih2b2lkKSBjb25zdA0KKyAgICA/RHJhd1JlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZUUmVj
dEBAQUFWQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQEBaIEAgMjcgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6RHJhd1JlY3QoY2xhc3MgVFJlY3QgY29uc3QgJiwgY2xhc3MgQ1dlYkNvcmVH
cmFwaGljc0NvbnRleHQgJikNCisgICAgP0R1bXBSZW5kZXJUcmVlQENXZWJDb3JlQnJpZGdlQEBR
QUVYWFogQCAyOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEdW1wUmVuZGVyVHJlZSh2
b2lkKQ0KKyAgICA/RW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAyOSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpFbmQodm9pZCkNCisgICAgP0V4ZWN1dGVTY3JpcHRAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkV4ZWN1dGVTY3JpcHQoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/RmFjdG9yeUBU
V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAU0FQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9y
eUBAWFogQCAzMSBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqIFRX
ZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpGYWN0b3J5KHZvaWQpDQorICAgID9GYWN0b3J5QFRX
ZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFj
dG9yeUBAWFogQCAzMiBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5
ICogVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFj
dG9yeUBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVUZXh0UmVuZGVy
ZXJGYWN0b3J5QEBYWiBAIDMzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFj
dG9yeSAqIFRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/
RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAz
NCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkZhbnRhc3lGb250RmFt
aWx5KHZvaWQpIGNvbnN0DQorICAgID9GYXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRn
ZUBAUUJFSFhaIEAgMzUgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpGYXN0Rmlyc3REaXNw
bGF5TW9kZSh2b2lkKSBjb25zdA0KKyAgICA/RmluZExpbmtzT2ZUeXBlQENXZWJDb3JlQnJpZGdl
QEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlAVVRXZWJDb3JlTGlua0l0ZW1AQEBAQFogQCAz
NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGaW5kTGlua3NPZlR5cGUoY2xhc3MgVERl
c0MxNiBjb25zdCAmLCBjbGFzcyBSQXJyYXk8c3RydWN0IFRXZWJDb3JlTGlua0l0ZW0+ICYpDQor
ICAgID9GaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFog
QCAzNyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkZpeGVkRm9udEZh
bWlseSh2b2lkKSBjb25zdA0KKyAgICA/Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEhAWiBAIDM4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkZv
cmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemUoaW50KQ0KKyAgICA/R2V0UGFnZURhdGFMQENXZWJD
b3JlQnJpZGdlQEBRQUVQQVY/JENBcnJheVB0ckBWQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQEBASEBa
IEAgMzkgTk9OQU1FIDsgY2xhc3MgQ0FycmF5UHRyPGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVt
PiAqIENXZWJDb3JlQnJpZGdlOjpHZXRQYWdlRGF0YUwoaW50KQ0KKyAgICA/R2V0VGV4dENvbnRl
bnRMQENXZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBYWiBAIDQwIE5PTkFNRSA7IGNsYXNz
IEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0VGV4dENvbnRlbnRMKHZvaWQpDQorICAgID9H
ZXRVcmxPZk5vZGVJbkZvY3VzTEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWSEJ1ZkMxNkBAQUFWVFBv
aW50QEBAWiBAIDQxIE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0
VXJsT2ZOb2RlSW5Gb2N1c0woY2xhc3MgVFBvaW50ICYpIGNvbnN0DQorICAgID9IYXNQZW5kaW5n
TGF5b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA0MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVC
cmlkZ2U6Okhhc1BlbmRpbmdMYXlvdXQodm9pZCkgY29uc3QNCisgICAgP0hpc3RvcnlQcm92aWRl
ckBUV2ViQ29yZUhpc3RvcnlAQFNBUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQFhaIEAgNDMg
Tk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgKiBUV2ViQ29yZUhpc3Rvcnk6
Okhpc3RvcnlQcm92aWRlcih2b2lkKQ0KKyAgICA/SW1hZ2VDb3VudEBDV2ViQ29yZUJyaWRnZUBA
UUFFSEhAWiBAIDQ0IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VDb3VudChpbnQp
DQorICAgID9JbWFnZVR5cGVAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFha
IEAgNDUgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpJbWFn
ZVR5cGUodm9pZCkNCisgICAgP0ltYWdlc0luUmVjdEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRD
QXJyYXlGaXhGbGF0QFZUV2ViQ29yZUltYWdlQ2FycmllckBAQEBIQFogQCA0NiBOT05BTUUgOyBj
bGFzcyBDQXJyYXlGaXhGbGF0PGNsYXNzIFRXZWJDb3JlSW1hZ2VDYXJyaWVyPiAqIENXZWJDb3Jl
QnJpZGdlOjpJbWFnZXNJblJlY3QoaW50KQ0KKyAgICA/SW5pdGlhbGl6ZVNldHRpbmdzQENXZWJD
b3JlQnJpZGdlQEBRQUVYQUJWQ1dlYkNvcmVTZXR0aW5nc0BAQFogQCA0NyBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpJbml0aWFsaXplU2V0dGluZ3MoY2xhc3MgQ1dlYkNvcmVTZXR0aW5n
cyBjb25zdCAmKQ0KKyAgICA/SW5zdGFsbEluRnJhbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZN
V2ViQ29yZVNjcm9sbFZpZXdAQEBaIEAgNDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
SW5zdGFsbEluRnJhbWUoY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3ICYpDQorICAgID9Jc0ZyYW1l
U2V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA0OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6OklzRnJhbWVTZXQodm9pZCkgY29uc3QNCisgICAgP0phdmFFbmFibGVkQENXZWJDb3JlU2V0
dGluZ3NAQFFCRUhYWiBAIDUwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhRW5h
YmxlZCh2b2lkKSBjb25zdA0KKyAgICA/SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGlj
YWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVT
ZXR0aW5nczo6SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSh2b2lkKSBjb25z
dA0KKyAgICA/SmF2YVNjcmlwdEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTIg
Tk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRFbmFibGVkKHZvaWQpIGNv
bnN0DQorICAgID9KdW1wVG9TZWxlY3Rpb25AQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDUzIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okp1bXBUb1NlbGVjdGlvbih2b2lkKQ0KKyAgICA/
S2V5RXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhVVEtleUV2ZW50QEBIQFogQCA1NCBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OktleUV2ZW50KHN0cnVjdCBUS2V5RXZlbnQsIGludCkNCisg
ICAgP0xvYWRJbWFnZXNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDU1IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OkxvYWRJbWFnZXModm9pZCkNCisgICAgP0xvYWRlckNvbnRhaW5lckBU
V2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FQQVZNV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAWFog
QCA1NiBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUxvYWRlckNvbnRhaW5lciAqIFRXZWJDb3JlTG9h
ZGVyQ29udGFpbmVyOjpMb2FkZXJDb250YWluZXIodm9pZCkNCisgICAgP01pbmltdW1Gb250U2l6
ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1NyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0
aW5nczo6TWluaW11bUZvbnRTaXplKHZvaWQpIGNvbnN0DQorICAgID9NaW5pbXVtTG9naWNhbEZv
bnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDU4IE5PTkFNRSA7IGludCBDV2ViQ29y
ZVNldHRpbmdzOjpNaW5pbXVtTG9naWNhbEZvbnRTaXplKHZvaWQpIGNvbnN0DQorICAgID9OYW1l
QENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDU5IE5PTkFNRSA7IGNsYXNzIFRQ
dHJDMTYgQ1dlYkNvcmVCcmlkZ2U6Ok5hbWUodm9pZCkgY29uc3QNCisgICAgP05hdmlnYWJsZU5v
ZGVVbmRlckN1cnNvckBDV2ViQ29yZUJyaWRnZUBAUUJFSEFBVlRQb2ludEBAQUFXNFRXZWJDb3Jl
Rm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBAQFogQCA2MCBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVCcmlkZ2U6Ok5hdmlnYWJsZU5vZGVVbmRlckN1cnNvcihjbGFzcyBUUG9pbnQgJiwgZW51bSBU
V2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBjbGFzcyBUUmVjdCAmKSBjb25zdA0KKyAgICA/
TmVlZHNMYXlvdXRAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDYxIE5PTkFNRSA7IGludCBDV2Vi
Q29yZUJyaWRnZTo6TmVlZHNMYXlvdXQodm9pZCkgY29uc3QNCisgICAgP05ld0xAQ1dlYkNvcmVC
cmlkZ2VAQFNBUEFWMUBBQVZNV2ViQ2xpZW50QnJpZGdlQEBAWiBAIDYyIE5PTkFNRSA7IGNsYXNz
IENXZWJDb3JlQnJpZGdlICogQ1dlYkNvcmVCcmlkZ2U6Ok5ld0woY2xhc3MgTVdlYkNsaWVudEJy
aWRnZSAmKQ0KKyAgICA/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQEFBVkNG
YnNCaXRHY0BAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDYzIE5P
TkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0Nv
bnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdEdjICYsIGNsYXNzIENGYnNCaXRtYXAgKiwgY2xhc3Mg
TVdlYkNvcmVTY3JvbGxWaWV3ICopDQorICAgID9OZXdMQENXZWJDb3JlR3JhcGhpY3NDb250ZXh0
QEBTQVBBVjFAUEFWQ0Zic0JpdG1hcERldmljZUBAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVT
Y3JvbGxWaWV3QEBAWiBAIDY0IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0
ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdG1hcERldmljZSAq
LCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAqKQ0KKyAgICA/
TmV3TEBDV2ViQ29yZVNldHRpbmdzQEBTQVBBVjFAWFogQCA2NSBOT05BTUUgOyBjbGFzcyBDV2Vi
Q29yZVNldHRpbmdzICogQ1dlYkNvcmVTZXR0aW5nczo6TmV3TCh2b2lkKQ0KKyAgICA/Tm90aWZ5
RGVjb2RpbmdFcnJvckBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NiBO
T05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeURlY29kaW5n
RXJyb3Iodm9pZCkNCisgICAgP05vdGlmeUZpbmlzaGVkQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dy
YXBwZXJAQFFBRVhYWiBAIDY3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3Jh
cHBlcjo6Tm90aWZ5RmluaXNoZWQodm9pZCkNCisgICAgP05vdGlmeVVwZGF0ZUBDV2ViQ29yZUlt
YWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1h
Z2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeVVwZGF0ZSh2b2lkKQ0KKyAgICA/TnVtUGVuZGluZ09y
TG9hZGluZ1JlcXVlc3RzQENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCA2OSBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVCcmlkZ2U6Ok51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh2b2lkKQ0KKyAgICA/
T3BlblVSTEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEgwMEFCVlREYXRlVGltZUBA
QFogQCA3MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpPcGVuVVJMKGNsYXNzIFREZXND
MTYgY29uc3QgJiwgaW50LCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29u
c3QgJiwgY2xhc3MgVERhdGVUaW1lIGNvbnN0ICYpDQorICAgID9QbHVnaW5IYW5kbGVyQFRXZWJD
b3JlUGx1Z2luSGFuZGxlckBAU0FQQVZNV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFhaIEAgNzEgTk9O
QU1FIDsgY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5kbGVyICogVFdlYkNvcmVQbHVnaW5IYW5kbGVy
OjpQbHVnaW5IYW5kbGVyKHZvaWQpDQorICAgID9QbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRp
bmdzQEBRQkVIWFogQCA3MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6UGx1Z2luc0Vu
YWJsZWQodm9pZCkgY29uc3QNCisgICAgP1BvaW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFF
WFVUUG9pbnRlckV2ZW50QEBAWiBAIDczIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBv
aW50ZXJFdmVudChzdHJ1Y3QgVFBvaW50ZXJFdmVudCkNCisgICAgP1BvaW50ZXJFdmVudEBDV2Vi
Q29yZUJyaWRnZUBAUUFFWFc0VFR5cGVAVFBvaW50ZXJFdmVudEBAQUJWVFBvaW50QEBAWiBAIDc0
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVudChlbnVtIFRQb2ludGVy
RXZlbnQ6OlRUeXBlLCBjbGFzcyBUUG9pbnQgY29uc3QgJikNCisgICAgP1ByZXBhcmVGb3JFeGl0
QENXZWJDb3JlQnJpZGdlQEBTQVhYWiBAIDc1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlByZXBhcmVGb3JFeGl0KHZvaWQpDQorICAgID9Qcm92aXNpb25hbExvYWRTdGFydGVkQENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCA3NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcm92
aXNpb25hbExvYWRTdGFydGVkKHZvaWQpDQorICAgID9SYXdEYXRhQFRXZWJDb3JlSW1hZ2VDYXJy
aWVyQEBRQUVBQVZUUHRyQzhAQFhaIEAgNzcgTk9OQU1FIDsgY2xhc3MgVFB0ckM4ICYgVFdlYkNv
cmVJbWFnZUNhcnJpZXI6OlJhd0RhdGEodm9pZCkNCisgICAgP1JlYXBwbHlTdHlsZXNGb3JEZXZp
Y2VUeXBlQENXZWJDb3JlQnJpZGdlQEBRQUVYVzRUV2ViQ29yZURldmljZVR5cGVAQEBaIEAgNzgg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGUo
ZW51bSBUV2ViQ29yZURldmljZVR5cGUpDQorICAgID9SZWZlcnJlckBDV2ViQ29yZUJyaWRnZUBA
UUJFP0FWVFB0ckMxNkBAWFogQCA3OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJp
ZGdlOjpSZWZlcnJlcih2b2lkKSBjb25zdA0KKyAgICA/UmVtb3ZlRmlsZU5hbWVAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgODAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6UmVtb3ZlRmlsZU5hbWUoY2xhc3MgVFBvaW50ICYpDQorICAgID9SZW1vdmVGcm9tRnJhbWVA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDgxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlJlbW92ZUZyb21GcmFtZSh2b2lkKQ0KKyAgICA/UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBA
UUJFUEFWMGtodG1sQEBYWiBAIDgyIE5PTkFNRSA7IGNsYXNzIGtodG1sOjpSZW5kZXJQYXJ0ICog
Q1dlYkNvcmVCcmlkZ2U6OlJlbmRlclBhcnQodm9pZCkgY29uc3QNCisgICAgP1JlbmRlcmVyQFRX
ZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVQQVZNV2ViQ29yZUltYWdlUmVuZGVyZXJAQFhaIEAgODMg
Tk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyICogVFdlYkNvcmVJbWFnZUNhcnJp
ZXI6OlJlbmRlcmVyKHZvaWQpDQorICAgID9SZXNvbHZlVXJsTEBDV2ViQ29yZUJyaWRnZUBAU0FQ
QVZIQnVmQzE2QEBBQlZURGVzQzE2QEAwQFogQCA4NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICog
Q1dlYkNvcmVCcmlkZ2U6OlJlc29sdmVVcmxMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3Mg
VERlc0MxNiBjb25zdCAmKQ0KKyAgICA/UmVzdG9yZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhYWiBAIDg1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlc3RvcmVEb2N1
bWVudFN0YXRlKHZvaWQpDQorICAgID9TYW5zU2VyaWZGb250RmFtaWx5QENXZWJDb3JlU2V0dGlu
Z3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgODYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29y
ZVNldHRpbmdzOjpTYW5zU2VyaWZGb250RmFtaWx5KHZvaWQpIGNvbnN0DQorICAgID9TYXZlRG9j
dW1lbnRTdGF0ZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgODcgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6U2F2ZURvY3VtZW50U3RhdGUodm9pZCkNCisgICAgP1NhdmVSYXdEYXRhRW5h
YmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA4OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVT
ZXR0aW5nczo6U2F2ZVJhd0RhdGFFbmFibGVkKHZvaWQpIGNvbnN0DQorICAgID9TY2FsaW5nRmFj
dG9yQ2hhbmdlZEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDg5IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OlNjYWxpbmdGYWN0b3JDaGFuZ2VkKGludCkNCisgICAgP1Njcm9sbFRvQW5j
aG9yQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MCBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQor
ICAgID9TY3JvbGxUb0FuY2hvcldpdGhVUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2
QEBAWiBAIDkxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNjcm9sbFRvQW5jaG9yV2l0
aFVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZWFyY2hBZ2FpbkBDV2ViQ29yZUJy
aWRnZUBAUUFFSEFCVlREZXNDMTZAQEhISEBaIEAgOTIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpTZWFyY2hBZ2FpbihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQor
ICAgID9TZWFyY2hGb3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkz
IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoRm9yKGNsYXNzIFREZXNDMTYgY29u
c3QgJiwgaW50LCBpbnQsIGludCkNCisgICAgP1NlbGVjdGlvbkNvbG9yQENXZWJDb3JlQnJpZGdl
QEBRQUU/QVZUUmdiQEBYWiBAIDk0IE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6
OlNlbGVjdGlvbkNvbG9yKHZvaWQpDQorICAgID9TZW5kUmVzaXplRXZlbnRAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhYWiBAIDk1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNlbmRSZXNpemVF
dmVudCh2b2lkKQ0KKyAgICA/U2VuZFNjcm9sbEV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYWFog
QCA5NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kU2Nyb2xsRXZlbnQodm9pZCkN
CisgICAgP1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBY
WiBAIDk3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2VyaWZGb250
RmFtaWx5KHZvaWQpIGNvbnN0DQorICAgID9TZXRBdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUFFWEhAWiBAIDk4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0
QXV0b1JlZnJlc2hFbmFibGVkKGludCkNCisgICAgP1NldENhbGxiYWNrQENXZWJDb3JlSW1hZ2VD
YWxsYmFja1dyYXBwZXJAQFFBRVhQQVZDYWNoZWRJbWFnZUNhbGxiYWNrQGtodG1sQEBAWiBAIDk5
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6U2V0Q2FsbGJhY2so
Y2xhc3Mga2h0bWw6OkNhY2hlZEltYWdlQ2FsbGJhY2sgKikNCisgICAgP1NldENvb2tpZUFkYXB0
ZXJAVFdlYkNvcmVDb29raWVGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQEBa
IEAgMTAwIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDb29raWVGYWN0b3J5OjpTZXRDb29raWVBZGFw
dGVyKGNsYXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqKQ0KKyAgICA/U2V0Q3Vyc2l2ZUZvbnRG
YW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTAxIE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KKyAgICA/U2V0RGVmYXVsdEZpeGVkRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEhAWiBAIDEwMiBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1
bHRGaXhlZEZvbnRTaXplKGludCkNCisgICAgP1NldERlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNl
dHRpbmdzQEBRQUVYSEBaIEAgMTAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0
RGVmYXVsdEZvbnRTaXplKGludCkNCisgICAgP1NldERlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA0IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0RGVmYXVsdFRleHRFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYp
DQorICAgID9TZXREZWZlcnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VAQFNBWEhAWiBAIDEwNSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXREZWZlcnNUaW1lcnMoaW50KQ0KKyAgICA/U2V0
RHJhd3NCYWNrZ3JvdW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTA2IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OlNldERyYXdzQmFja2dyb3VuZChpbnQpDQorICAgID9TZXRGYW50
YXN5Rm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMDcg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRGYW50YXN5Rm9udEZhbWlseShjbGFz
cyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRGYXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29y
ZUJyaWRnZUBAUUFFWEhAWiBAIDEwOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRG
YXN0Rmlyc3REaXNwbGF5TW9kZShpbnQpDQorICAgID9TZXRGaXhlZEZvbnRGYW1pbHlAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0Rml4ZWRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisg
ICAgP1NldEZvbnRTaXplTGV2ZWxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMTAgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0Rm9udFNpemVMZXZlbChpbnQpDQorICAgID9TZXRG
b3JtQ29udHJvbFRleHRCeU5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEAwQFog
QCAxMTEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0Rm9ybUNvbnRyb2xUZXh0QnlO
YW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/
U2V0SGlzdG9yeVByb3ZpZGVyQFRXZWJDb3JlSGlzdG9yeUBAU0FYUEFWTVdlYkNvcmVIaXN0b3J5
UHJvdmlkZXJAQEBaIEAgMTEyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVIaXN0b3J5OjpTZXRIaXN0
b3J5UHJvdmlkZXIoY2xhc3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgKikNCisgICAgP1NldEph
dmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTMgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhRW5hYmxlZChpbnQpDQorICAgID9TZXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAx
MTQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5KGludCkNCisgICAgP1NldEphdmFTY3JpcHRFbmFibGVkQENXZWJD
b3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdz
OjpTZXRKYXZhU2NyaXB0RW5hYmxlZChpbnQpDQorICAgID9TZXRNYXhCaWRpV2lkdGhAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhIQFogQCAxMTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0
TWF4QmlkaVdpZHRoKGludCkNCisgICAgP1NldE1pbmltdW1Gb250U2l6ZUBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYSEBaIEAgMTE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0TWlu
aW11bUZvbnRTaXplKGludCkNCisgICAgP1NldE1pbmltdW1Mb2dpY2FsRm9udFNpemVAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEhAWiBAIDExOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6
OlNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoaW50KQ0KKyAgICA/U2V0TmFtZUBDV2ViQ29yZUJy
aWRnZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OlNldE5hbWUoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0TmVlZHNMYXlvdXRA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDEyMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpTZXROZWVkc0xheW91dCh2b2lkKQ0KKyAgICA/U2V0UGFyZW50QENXZWJDb3JlQnJpZGdlQEBR
QUVYUEFWMUBAWiBAIDEyMSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRQYXJlbnQo
Y2xhc3MgQ1dlYkNvcmVCcmlkZ2UgKikNCisgICAgP1NldFBsdWdpbnNFbmFibGVkQENXZWJDb3Jl
U2V0dGluZ3NAQFFBRVhIQFogQCAxMjIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpT
ZXRQbHVnaW5zRW5hYmxlZChpbnQpDQorICAgID9TZXRSZW5kZXJQYXJ0QENXZWJDb3JlQnJpZGdl
QEBRQUVYUEFWUmVuZGVyUGFydEBraHRtbEBAQFogQCAxMjMgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6U2V0UmVuZGVyUGFydChjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqKQ0KKyAgICA/
U2V0U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBA
QFogQCAxMjQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTYW5zU2VyaWZGb250
RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldFNhdmVSYXdEYXRhRW5hYmxl
ZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVT
ZXR0aW5nczo6U2V0U2F2ZVJhd0RhdGFFbmFibGVkKGludCkNCisgICAgP1NldFNlcmlmRm9udEZh
bWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjYgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTZXJpZkZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBj
b25zdCAmKQ0KKyAgICA/U2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBR
QUVYSEBaIEAgMTI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFNob3VsZENyZWF0
ZVJlbmRlcmVycyhpbnQpDQorICAgID9TZXRTaG91bGRQcmludEJhY2tncm91bmRzQENXZWJDb3Jl
U2V0dGluZ3NAQFFBRVhIQFogQCAxMjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpT
ZXRTaG91bGRQcmludEJhY2tncm91bmRzKGludCkNCisgICAgP1NldFN0YW5kYXJkRm9udEZhbWls
eUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjkgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTdGFuZGFyZEZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBj
b25zdCAmKQ0KKyAgICA/U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMzAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdz
OjpTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAg
P1NldFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlA
QFNBWFBBVk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBAWiBAIDEzMSBOT05BTUUgOyB2b2lk
IFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpTZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5
KGNsYXNzIE1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5ICopDQorICAgID9TZXRXZWJDb3JlSW1h
Z2VSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAU0FYUEFWTVdl
YkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAQFogQCAxMzIgTk9OQU1FIDsgdm9pZCBUV2ViQ29y
ZUltYWdlUmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkoY2xh
c3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqKQ0KKyAgICA/U2V0V2ViQ29yZUxvYWRl
ckNvbnRhaW5lckBUV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FYUEFWTVdlYkNvcmVMb2FkZXJD
b250YWluZXJAQEBaIEAgMTMzIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVMb2FkZXJDb250YWluZXI6
OlNldFdlYkNvcmVMb2FkZXJDb250YWluZXIoY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIg
KikNCisgICAgP1NldFdlYkNvcmVQbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFuZGxlckBA
U0FYUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBAWiBAIDEzNCBOT05BTUUgOyB2b2lkIFRXZWJD
b3JlUGx1Z2luSGFuZGxlcjo6U2V0V2ViQ29yZVBsdWdpbkhhbmRsZXIoY2xhc3MgTVdlYkNvcmVQ
bHVnaW5IYW5kbGVyICopDQorICAgID9TZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBUV2Vi
Q29yZVRleHRSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9y
eUBAQFogQCAxMzUgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6OlNl
dFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFj
dG9yeSAqKQ0KKyAgICA/U2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0
dGluZ3NAQFFBRVhIQFogQCAxMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRX
aWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkoaW50KQ0KKyAgICA/U2hvdWxkQ3JlYXRlUmVuZGVy
ZXJzQENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCAxMzcgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpTaG91bGRDcmVhdGVSZW5kZXJlcnModm9pZCkNCisgICAgP1Nob3VsZFByaW50QmFja2dy
b3VuZHNAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTM4IE5PTkFNRSA7IGludCBDV2ViQ29y
ZVNldHRpbmdzOjpTaG91bGRQcmludEJhY2tncm91bmRzKHZvaWQpIGNvbnN0DQorICAgID9TaG93
aW5nRmFzdFByZXZpZXdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDEzOSBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVCcmlkZ2U6OlNob3dpbmdGYXN0UHJldmlldyh2b2lkKSBjb25zdA0KKyAgICA/U3Rh
bmRhcmRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQw
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U3RhbmRhcmRGb250RmFt
aWx5KHZvaWQpIGNvbnN0DQorICAgID9UYWJiZWROYXZpZ2F0aW9uQENXZWJDb3JlQnJpZGdlQEBR
QUVIVzRUV2ViTmF2RGlyZWN0aW9uQEBBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEhA
WiBAIDE0MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlRhYmJlZE5hdmlnYXRpb24oZW51
bSBUV2ViTmF2RGlyZWN0aW9uLCBlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGlu
dCkNCisgICAgP1RleHRFbmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUJFSVhaIEAgMTQyIE5PTkFN
RSA7IHVuc2lnbmVkIGludCBDV2ViQ29yZUJyaWRnZTo6VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0
DQorICAgID9VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQzIE5PTkFN
RSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OlVSTCh2b2lkKSBjb25zdA0KKyAgICA/
VVJMV2l0aFJlbGF0aXZlU3RyaW5nQENXZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBBQlZU
RGVzQzE2QEBAWiBAIDE0NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6
OlVSTFdpdGhSZWxhdGl2ZVN0cmluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9VcGRh
dGVBbGxWaWV3c0BDV2ViQ29yZUJyaWRnZUBAU0FYWFogQCAxNDUgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6VXBkYXRlQWxsVmlld3Modm9pZCkNCisgICAgP1VybEBUV2ViQ29yZUltYWdl
Q2FycmllckBAUUFFQUFWVFB0ckMxNkBAWFogQCAxNDYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAm
IFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpVcmwodm9pZCkNCisgICAgP1VzZXJTdHlsZVNoZWV0TG9j
YXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAxNDcgTk9OQU1FIDsg
Y2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpVc2VyU3R5bGVTaGVldExvY2F0aW9uKHZv
aWQpIGNvbnN0DQorICAgID9XaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0
aW5nc0BAUUJFSFhaIEAgMTQ4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpXaWxsTG9h
ZEltYWdlc0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9i
amVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTQ5IE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFzUHJv
cGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFog
QCAxNTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9t
YXJrZWRAVmFsdWVJbXBAS0pTQEBRQkVfTlhaIEAgMTUxIE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1
ZUltcDo6bWFya2VkKHZvaWQpIGNvbnN0DQorICAgID9jbGFzc0luZm9AT2JqZWN0QEtKU0BAUUJF
UEJVQ2xhc3NJbmZvQDJAWFogQCAxNTIgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNv
bnN0ICogS0pTOjpPYmplY3Q6OmNsYXNzSW5mbyh2b2lkKSBjb25zdA0KKyAgICA/aGFzT3duUHJv
cGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCAxNTMgTk9OQU1FIDsg
Ym9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
dW5zaWduZWQgaW50KSBjb25zdA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05Q
QVZFeGVjU3RhdGVAMkBJQFogQCAxNTQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJv
cGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KKyAgICA/
cHJvcExpc3RAT2JqZWN0QEtKU0BAUUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBBVkV4ZWNTdGF0ZUAy
QF9OQFogQCAxNTUgTk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0
Ojpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KKyAgICA/R2V0TmV4dFJl
bmRlclRleHRGb3JTbWFydExpbmtzTEBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFB0ckMxNkBAQUFI
QFogQCAxNTYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJl
bmRlclRleHRGb3JTbWFydExpbmtzTChpbnQgJikNCisgICAgP0dldFJlbmRlclRleHRBcmVhQENX
ZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlAVlRSZWN0QEBAQEBaIEAg
MTU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKGNsYXNz
IFREZXNDMTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PGNsYXNzIFRSZWN0PiAmKQ0KKyAgICAgICAg
P1dpbmRvd1NjcmlwdE5QT2JqZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVQQVZOUE9iamVjdEBAWFog
QCAxNTggTk9OQU1FIDsgY2xhc3MgTlBPYmplY3QgKiBDV2ViQ29yZUJyaWRnZTo6V2luZG93U2Ny
aXB0TlBPYmplY3Qodm9pZCkNCiANCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI4OSkNCisrKyBXZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSw4MSBAQA0KKzIwMDYtMTAtMjUgIHlh
ZGF2YWxsICA8c2V0IEVNQUlMX0FERFJFU1MgZW52aXJvbm1lbnQgdmFyaWFibGU+DQorDQorICAg
ICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMgKHpidWp0YXNAZ21haWwuY29tKS4NCisgICAg
ICAgIERFU0M6V2lkZ2V0IE9iamVjdCAmIFNjcmlwdGFibGUgcGx1Z2luIGltcGxlbWVudGF0aW9u
DQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNw0K
Kw0KKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VEDQorDQor
ICAgICAgICAqIEJXSU5TL1dFQkNPUkVVLkRFRjoNCisgICAgICAgICogRUFCSS9XZWJDb3JlVS5E
RUY6DQorICAgICAgICAqIGJyaWRnZS9XZWJDb3JlQnJpZGdlLmNwcDoNCisgICAgICAgIChDV2Vi
Q29yZUJyaWRnZTo6fkNXZWJDb3JlQnJpZGdlKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6
Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmcpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpX
aW5kb3dTY3JpcHROUE9iamVjdCk6DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRS
ZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0wpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpHZXRS
ZW5kZXJUZXh0QXJlYSk6DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OkdldFBhZ2VEYXRhTCk6
DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OlRhYmJlZE5hdmlnYXRpb24pOg0KKyAgICAgICAg
KiBicmlkZ2UvV2ViQ29yZUJyaWRnZS5oOg0KKyAgICAgICAgKiBicmlkZ2UvV2ViQ29yZVdpZGdl
dC5oOg0KKyAgICAgICAgKE1XZWJDb3JlV2lkZ2V0OjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KToN
CisgICAgICAgICogZ3JvdXAvS0hUTUwubW1wOg0KKyAgICAgICAgKiBncm91cC9LV1EubW1wOg0K
KyAgICAgICAgKiBncm91cC9XZWJDb3JlLm1tcDoNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNf
YmluZGluZy5jcHA6DQorICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6aXNHbG9iYWxP
YmplY3QpOg0KKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdl
SW5zdGFuY2VGb3JWYWx1ZSk6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2JpbmRpbmcuaDoN
CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfZG9tLmNwcDoNCisgICAgICAgIChET01Ob2RlOjpt
YXJrKToNCisgICAgICAgIChET01Ob2RlOjpnZXRWYWx1ZVByb3BlcnR5KToNCisgICAgICAgIChE
T01Ob2RlOjpnZXRMaXN0ZW5lcik6DQorICAgICAgICAoRE9NTm9kZVByb3RvRnVuYzo6dHJ5Q2Fs
bCk6DQorICAgICAgICAoRE9NTm9kZUxpc3Q6OmNhbGwpOg0KKyAgICAgICAgKERPTURvY3VtZW50
OjpET01Eb2N1bWVudCk6DQorICAgICAgICAoRE9NRG9jdW1lbnRQcm90b0Z1bmM6OnRyeUNhbGwp
Og0KKyAgICAgICAgKERPTUVsZW1lbnQ6OkRPTUVsZW1lbnQpOg0KKyAgICAgICAgKERPTUVsZW1l
bnRQcm90b0Z1bmM6OnRyeUNhbGwpOg0KKyAgICAgICAgKERPTURPTUltcGxlbWVudGF0aW9uOjpE
T01ET01JbXBsZW1lbnRhdGlvbik6DQorICAgICAgICAoRE9NTmFtZWROb2RlTWFwOjpET01OYW1l
ZE5vZGVNYXApOg0KKyAgICAgICAgKEtKUzo6Z2V0RE9NRG9jdW1lbnROb2RlKToNCisgICAgICAg
IChLSlM6OmNoZWNrTm9kZVNlY3VyaXR5KToNCisgICAgICAgIChLSlM6OmdldFJ1bnRpbWVPYmpl
Y3QpOg0KKyAgICAgICAgKERPTU5hbWVkTm9kZXNDb2xsZWN0aW9uOjp0cnlHZXQpOg0KKyAgICAg
ICAgKERPTUNoYXJhY3RlckRhdGE6OkRPTUNoYXJhY3RlckRhdGEpOg0KKyAgICAgICAgKERPTUNo
YXJhY3RlckRhdGFQcm90b0Z1bmM6OnRyeUNhbGwpOg0KKyAgICAgICAgKERPTVRleHQ6OkRPTVRl
eHQpOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193aW5kb3cuY3BwOg0KKyAgICAgICAgKFdp
bmRvdzo6V2luZG93KToNCisgICAgICAgIChXaW5kb3c6Om1hcmspOg0KKyAgICAgICAgKFdpbmRv
dzo6Z2V0KToNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93Lmg6DQorICAgICAgICAo
S0pTOjpXaW5kb3c6Oik6DQorICAgICAgICAoS0pTOjpTZWxlY3Rpb246Oik6DQorICAgICAgICAq
IGtodG1sL2VjbWEva2pzX3dpbmRvdy5sdXQuaDoNCisgICAgICAgIChLSlM6Oik6DQorICAgICAg
ICAqIGtodG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmNwcDoNCisgICAgICAgIChIVE1MQXBwbGV0
RWxlbWVudEltcGw6OmdldEFwcGxldEluc3RhbmNlKToNCisgICAgICAgIChIVE1MRW1iZWRFbGVt
ZW50SW1wbDo6SFRNTEVtYmVkRWxlbWVudEltcGwpOg0KKyAgICAgICAgKEhUTUxFbWJlZEVsZW1l
bnRJbXBsOjpnZXRFbWJlZEluc3RhbmNlKToNCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX29i
amVjdGltcGwuaDoNCisgICAgICAgICoga3dxL0tXUUtIVE1MUGFydC5jcHA6DQorICAgICAgICAo
S1dRS0hUTUxQYXJ0OjpLV1FLSFRNTFBhcnQpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6c3Vi
bWl0Rm9ybSk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpiaW5kaW5nUm9vdE9iamVjdCk6DQor
ICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRSZW5kZXJUZXh0UmVjdEFycmF5KToNCisgICAgICAg
IChLV1FLSFRNTFBhcnQ6OmFkZFBsdWdpblJvb3RPYmplY3QpOg0KKyAgICAgICAgKEtXUUtIVE1M
UGFydDo6Y2xlYW51cFBsdWdpblJvb3RPYmplY3RzKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6
OmdldE5ld1RhYmJlZEN1cnNvclBvc2l0aW9uKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OnRh
YmJlZE5hdmlnYXRpb24pOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6cHJlcGFyZUZvclVzZXJB
Y3Rpb24pOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Y3JlYXRlV2lkZ2V0T2JqZWN0KToNCisg
ICAgICAgIChLV1FLSFRNTFBhcnQ6OmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3KToNCisgICAgICAg
IChLV1FLSFRNTFBhcnQ6OmdldE9iamVjdEluc3RhbmNlRm9yVmlldyk6DQorICAgICAgICAoS1dR
S0hUTUxQYXJ0Ojp3aW5kb3dTY3JpcHROUE9iamVjdCk6DQorICAgICAgICAqIGt3cS9LV1FLSFRN
TFBhcnQuaDoNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OmdldEFwcGxldEluc3RhbmNlRm9yVmll
dyk6DQorDQogMjAwNi0xMC0yMyAgbmFndW8gIDxnZW9yZ2UuZ3VvQG5va2lhLmNvbT4NCiANCiAg
ICAgICAgIFJldmlld2VkIGJ5IFphbGFuLg0KSW5kZXg6IFdlYkNvcmUvRUFCSS9XZWJDb3JlVS5E
RUYNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL0VBQkkvV2ViQ29yZVUuREVGCShyZXZpc2lvbiAx
NzA2OSkNCisrKyBXZWJDb3JlL0VBQkkvV2ViQ29yZVUuREVGCSh3b3JraW5nIGNvcHkpDQpAQCAt
MSwxNjIgKzEsMTYzIEBADQogRVhQT1JUUw0KLQlfWk4xM1RXZWJDb3JlQ2FjaGUxNUFkZEl0ZW1U
b0NhY2hlTEVSMjlNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5mb1I2VERlc0M4aSBAIDEgTk9O
QU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMEltYWdlQ291bnRFaSBAIDIgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2UxMExvYWRJbWFnZXNFdiBAIDMgTk9OQU1FDQotCV9aTjE0Q1dlYkNv
cmVCcmlkZ2UxMVJlc29sdmVVcmxMRVJLN1REZXNDMTZTMl8gQCA0IE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlMTFTZWFyY2hBZ2FpbkVSSzdURGVzQzE2aWlpIEAgNSBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTEyRGVmZXJzVGltZXJzRXYgQCA2IE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlMTJHZXRQYWdlRGF0YUxFaSBAIDcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UxMkltYWdlc0luUmVjdEVpIEAgOCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEyUG9p
bnRlckV2ZW50RTEzVFBvaW50ZXJFdmVudCBAIDkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UxMlBvaW50ZXJFdmVudEVOMTNUUG9pbnRlckV2ZW50NVRUeXBlRVJLNlRQb2ludCBAIDEwIE5P
TkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNBY3RpdmF0ZUV2ZW50RVI2VFBvaW50IEAgMTEg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0FkZFRvQ29udGFjdHNFUjZUUG9pbnQgQCAx
MiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEzRGlkTm90T3BlblVSTEVSSzdURGVzQzE2
IEAgMTMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0V4ZWN1dGVTY3JpcHRFUks3VERl
c0MxNiBAIDE0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNTZXRSZW5kZXJQYXJ0RVBO
NWtodG1sMTBSZW5kZXJQYXJ0RSBAIDE1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRB
ZGp1c3RWaWV3U2l6ZUV2IEAgMTYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNER1bXBS
ZW5kZXJUcmVlRXYgQCAxNyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0SW5zdGFsbElu
RnJhbWVFUjE4TVdlYkNvcmVTY3JvbGxWaWV3IEAgMTggTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UxNFByZXBhcmVGb3JFeGl0RXYgQCAxOSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTE0UmVtb3ZlRmlsZU5hbWVFUjZUUG9pbnQgQCAyMCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJy
aWRnZTE0U2Nyb2xsVG9BbmNob3JFUks3VERlc0MxNiBAIDIxIE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlMTRTZWxlY3Rpb25Db2xvckV2IEAgMjIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UxNFNldE5lZWRzTGF5b3V0RXYgQCAyMyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTE0VXBkYXRlQWxsVmlld3NFdiBAIDI0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVD
cmVhdGVLSFRNTFZpZXdFUjE4TVdlYkNvcmVTY3JvbGxWaWV3aWkgQCAyNSBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTE1RGVBY3RpdmF0ZUV2ZW50RWkgQCAyNiBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTE1RmluZExpbmtzT2ZUeXBlRVJLN1REZXNDMTZSNlJBcnJheUkxNlRXZWJD
b3JlTGlua0l0ZW1FIEAgMjcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUdldFRleHRD
b250ZW50TEV2IEAgMjggTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUp1bXBUb1NlbGVj
dGlvbkV2IEAgMjkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVJlbW92ZUZyb21GcmFt
ZUV2IEAgMzAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNlbmRSZXNpemVFdmVudEV2
IEAgMzEgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNlbmRTY3JvbGxFdmVudEV2IEAg
MzIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNldERlZmVyc1RpbWVyc0VpIEAgMzMg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNldE1heEJpZGlXaWR0aEVpIEAgMzQgTk9O
QU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNlNldEZvbnRTaXplTGV2ZWxFaSBAIDM1IE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTZUYWJiZWROYXZpZ2F0aW9uRTE2VFdlYk5hdkRpcmVj
dGlvblIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlaSBAIDM2IE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlMTdTYXZlRG9jdW1lbnRTdGF0ZUV2IEAgMzcgTk9OQU1FDQotCV9aTjE0Q1dl
YkNvcmVCcmlkZ2UxOEFjdGl2YXRlQWNjZXNzS2V5c0U5VEtleUV2ZW50IEAgMzggTk9OQU1FDQot
CV9aTjE0Q1dlYkNvcmVCcmlkZ2UxOEluaXRpYWxpemVTZXR0aW5nc0VSSzE2Q1dlYkNvcmVTZXR0
aW5ncyBAIDM5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMThTZXREcmF3c0JhY2tncm91
bmRFaSBAIDQwIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTlCb2R5QmFja2dyb3VuZENv
bG9yRXYgQCA0MSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIwUmVzdG9yZURvY3VtZW50
U3RhdGVFdiBAIDQyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjBTY2FsaW5nRmFjdG9y
Q2hhbmdlZEVpIEAgNDMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyMVNjcm9sbFRvQW5j
aG9yV2l0aFVSTEVSSzdURGVzQzE2IEAgNDQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Uy
MVNob3VsZENyZWF0ZVJlbmRlcmVyc0V2IEAgNDUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UyMVVSTFdpdGhSZWxhdGl2ZVN0cmluZ0VSSzdURGVzQzE2IEAgNDYgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UyMlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWRFdiBAIDQ3IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMjNEZXRlcm1pbmVDdXJzb3JQb3NpdGlvbkVSMjZUV2ViQ29yZUZv
Y3VzZWRFbGVtZW50VHlwZVI1VFJlY3RTM19SNlRQb2ludGkgQCA0OCBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTIzU2V0RmFzdEZpcnN0RGlzcGxheU1vZGVFaSBAIDQ5IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMjRTZXRGb3JtQ29udHJvbFRleHRCeU5hbWVFUks3VERlc0MxNlMy
XyBAIDUwIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjRTZXRTaG91bGRDcmVhdGVSZW5k
ZXJlcnNFaSBAIDUxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjZDcmVhdGVEb2N1bWVu
dFdpdGhFbmNvZGluZ0VSSzdURGVzQzE2aSBAIDUyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlMjZSZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUUxOFRXZWJDb3JlRGV2aWNlVHlwZSBAIDUz
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjdOdW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVz
dHNFdiBAIDU0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjhGb3JjZUxheW91dEFkanVz
dGluZ1ZpZXdTaXplRWkgQCA1NSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTNFbmRFdiBA
IDU2IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlNE5ld0xFUjE2TVdlYkNsaWVudEJyaWRn
ZSBAIDU3IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlNkNsaWVudEV2IEAgNTggTk9OQU1F
DQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U3QWRkRGF0YUVSSzZURGVzQzggQCA1OSBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTdPcGVuVVJMRVJLN1REZXNDMTZpUzJfUzJfUks5VERhdGVUaW1l
IEAgNjAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U3U2V0TmFtZUVSSzdURGVzQzE2IEAg
NjEgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U4Q2xvc2VVUkxFdiBAIDYyIE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlOERyYXdSZWN0RVJLNVRSZWN0UjIzQ1dlYkNvcmVHcmFwaGlj
c0NvbnRleHQgQCA2MyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZThLZXlFdmVudEU5VEtl
eUV2ZW50aSBAIDY0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlOUNsZWFyRmluZEV2IEAg
NjUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U5U2VhcmNoRm9yRVJLN1REZXNDMTZpaWkg
QCA2NiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTlTZXRQYXJlbnRFUFNfIEAgNjcgTk9O
QU1FDQotCV9aTjE1VFdlYkNvcmVIaXN0b3J5MTVIaXN0b3J5UHJvdmlkZXJFdiBAIDY4IE5PTkFN
RQ0KLQlfWk4xNVRXZWJDb3JlSGlzdG9yeTE4U2V0SGlzdG9yeVByb3ZpZGVyRVAyM01XZWJDb3Jl
SGlzdG9yeVByb3ZpZGVyIEAgNjkgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczE0U2V0
SmF2YUVuYWJsZWRFaSBAIDcwIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxN1NldFBs
dWdpbnNFbmFibGVkRWkgQCA3MSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRE
ZWZhdWx0Rm9udFNpemVFaSBAIDcyIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNl
dEZpeGVkRm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzMgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVT
ZXR0aW5nczE4U2V0TWluaW11bUZvbnRTaXplRWkgQCA3NCBOT05BTUUNCi0JX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMThTZXRTZXJpZkZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc1IE5PTkFNRQ0KLQlf
Wk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNldEN1cnNpdmVGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3
NiBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRGYW50YXN5Rm9udEZhbWlseUVS
SzdURGVzQzE2IEAgNzcgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0SmF2YVNj
cmlwdEVuYWJsZWRFaSBAIDc4IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldEF1
dG9SZWZyZXNoRW5hYmxlZEVpIEAgNzkgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIx
U2V0U2F2ZVJhd0RhdGFFbmFibGVkRWkgQCA4MCBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRp
bmdzMjFTZXRTdGFuZGFyZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDgxIE5PTkFNRQ0KLQlfWk4x
NkNXZWJDb3JlU2V0dGluZ3MyMlNldERlZmF1bHRUZXh0RW5jb2RpbmdFUks3VERlc0MxNiBAIDgy
IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMlNldFNhbnNTZXJpZkZvbnRGYW1pbHlF
Uks3VERlc0MxNiBAIDgzIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyM1NldERlZmF1
bHRGaXhlZEZvbnRTaXplRWkgQCA4NCBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjVT
ZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkgQCA4NSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNl
dHRpbmdzMjVTZXRTaG91bGRQcmludEJhY2tncm91bmRzRWkgQCA4NiBOT05BTUUNCi0JX1pOMTZD
V2ViQ29yZVNldHRpbmdzMjVTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRVJLN1REZXNDMTYgQCA4
NyBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMzBTZXRXaWxsTG9hZEltYWdlc0F1dG9t
YXRpY2FsbHlFaSBAIDg4IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3M0MFNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlFaSBAIDg5IE5PTkFNRQ0KLQlfWk4xNkNX
ZWJDb3JlU2V0dGluZ3M0TmV3TEV2IEAgOTAgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5n
c0QwRXYgQCA5MSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzRDFFdiBAIDkyIE5PTkFN
RQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3NEMkV2IEAgOTMgTk9OQU1FDQotCV9aTjIwVFdlYkNv
cmVJbWFnZUNhcnJpZXIzVXJsRXYgQCA5NCBOT05BTUUNCi0JX1pOMjBUV2ViQ29yZUltYWdlQ2Fy
cmllcjdBbHRUZXh0RXYgQCA5NSBOT05BTUUNCi0JX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjdS
YXdEYXRhRXYgQCA5NiBOT05BTUUNCi0JX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjhSZW5kZXJl
ckV2IEAgOTcgTk9OQU1FDQotCV9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI5SW1hZ2VUeXBlRXYg
QCA5OCBOT05BTUUNCi0JX1pOMjFUV2ViQ29yZUNvb2tpZUZhY3RvcnkxM0Nvb2tpZUFkYXB0ZXJF
diBAIDk5IE5PTkFNRQ0KLQlfWk4yMVRXZWJDb3JlQ29va2llRmFjdG9yeTE2U2V0Q29va2llQWRh
cHRlckVQMjFNV2ViQ29yZUNvb2tpZUFkYXB0ZXIgQCAxMDAgTk9OQU1FDQotCV9aTjIxVFdlYkNv
cmVQbHVnaW5IYW5kbGVyMTNQbHVnaW5IYW5kbGVyRXYgQCAxMDEgTk9OQU1FDQotCV9aTjIxVFdl
YkNvcmVQbHVnaW5IYW5kbGVyMjNTZXRXZWJDb3JlUGx1Z2luSGFuZGxlckVQMjFNV2ViQ29yZVBs
dWdpbkhhbmRsZXIgQCAxMDIgTk9OQU1FDQotCV9aTjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0
TmV3TEVQMTZDRmJzQml0bWFwRGV2aWNlUDEwQ0Zic0JpdG1hcFAxOE1XZWJDb3JlU2Nyb2xsVmll
dyBAIDEwMyBOT05BTUUNCi0JX1pOMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dDROZXdMRVI5Q0Zi
c0JpdEdjUDEwQ0Zic0JpdG1hcFAxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDEwNCBOT05BTUUNCi0J
X1pOMjNUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjE1TG9hZGVyQ29udGFpbmVyRXYgQCAxMDUgTk9O
QU1FDQotCV9aTjIzVFdlYkNvcmVMb2FkZXJDb250YWluZXIyNVNldFdlYkNvcmVMb2FkZXJDb250
YWluZXJFUDIzTVdlYkNvcmVMb2FkZXJDb250YWluZXIgQCAxMDYgTk9OQU1FDQotCV9aTjI2VFdl
YkNvcmVGb3JtQ29udHJvbEZhY3RvcnkyOFNldFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlFUDI2
TVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgQCAxMDcgTk9OQU1FDQotCV9aTjI2VFdlYkNvcmVG
b3JtQ29udHJvbEZhY3Rvcnk3RmFjdG9yeUV2IEAgMTA4IE5PTkFNRQ0KLQlfWk4yN1RXZWJDb3Jl
VGV4dFJlbmRlcmVyRmFjdG9yeTI5U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlFUDI3TVdl
YkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5IEAgMTA5IE5PTkFNRQ0KLQlfWk4yN1RXZWJDb3JlVGV4
dFJlbmRlcmVyRmFjdG9yeTdGYWN0b3J5RXYgQCAxMTAgTk9OQU1FDQotCV9aTjI4Q1dlYkNvcmVJ
bWFnZUNhbGxiYWNrV3JhcHBlcjExU2V0Q2FsbGJhY2tFUE41a2h0bWwxOUNhY2hlZEltYWdlQ2Fs
bGJhY2tFIEAgMTExIE5PTkFNRQ0KLQlfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIx
Mk5vdGlmeVVwZGF0ZUV2IEAgMTEyIE5PTkFNRQ0KLQlfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFj
a1dyYXBwZXIxNE5vdGlmeUZpbmlzaGVkRXYgQCAxMTMgTk9OQU1FDQotCV9aTjI4Q1dlYkNvcmVJ
bWFnZUNhbGxiYWNrV3JhcHBlcjE5Tm90aWZ5RGVjb2RpbmdFcnJvckV2IEAgMTE0IE5PTkFNRQ0K
LQlfWk4yOFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkzMFNldFdlYkNvcmVJbWFnZVJlbmRl
cmVyRmFjdG9yeUVQMjhNV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5IEAgMTE1IE5PTkFNRQ0K
LQlfWk4yOFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTE2IE5PTkFN
RQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTEwSXNGcmFtZVNldEV2IEAgMTE3IE5PTkFNRQ0KLQlf
Wk5LMTRDV2ViQ29yZUJyaWRnZTEwUmVuZGVyUGFydEV2IEAgMTE4IE5PTkFNRQ0KLQlfWk5LMTRD
V2ViQ29yZUJyaWRnZTExTmVlZHNMYXlvdXRFdiBAIDExOSBOT05BTUUNCi0JX1pOSzE0Q1dlYkNv
cmVCcmlkZ2UxMkNhbkNhY2hlUGFnZUV2IEAgMTIwIE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJy
aWRnZTEyVGV4dEVuY29kaW5nRXYgQCAxMjEgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdl
MTZIYXNQZW5kaW5nTGF5b3V0RXYgQCAxMjIgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdl
MThTaG93aW5nRmFzdFByZXZpZXdFdiBAIDEyMyBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlk
Z2UyMEZhc3RGaXJzdERpc3BsYXlNb2RlRXYgQCAxMjQgTk9OQU1FDQotCV9aTksxNENXZWJDb3Jl
QnJpZGdlMjBHZXRVcmxPZk5vZGVJbkZvY3VzTEVSNlRQb2ludCBAIDEyNSBOT05BTUUNCi0JX1pO
SzE0Q1dlYkNvcmVCcmlkZ2UyNE5hdmlnYWJsZU5vZGVVbmRlckN1cnNvckVSNlRQb2ludFIyNlRX
ZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlUjVUUmVjdCBAIDEyNiBOT05BTUUNCi0JX1pOSzE0Q1dl
YkNvcmVCcmlkZ2UzVVJMRXYgQCAxMjcgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlNE5h
bWVFdiBAIDEyOCBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2U2RG9tYWluRXYgQCAxMjkg
Tk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlOFJlZmVycmVyRXYgQCAxMzAgTk9OQU1FDQot
CV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxMUphdmFFbmFibGVkRXYgQCAxMzEgTk9OQU1FDQotCV9a
TksxNkNXZWJDb3JlU2V0dGluZ3MxNFBsdWdpbnNFbmFibGVkRXYgQCAxMzIgTk9OQU1FDQotCV9a
TksxNkNXZWJDb3JlU2V0dGluZ3MxNURlZmF1bHRGb250U2l6ZUV2IEAgMTMzIE5PTkFNRQ0KLQlf
Wk5LMTZDV2ViQ29yZVNldHRpbmdzMTVGaXhlZEZvbnRGYW1pbHlFdiBAIDEzNCBOT05BTUUNCi0J
X1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1TWluaW11bUZvbnRTaXplRXYgQCAxMzUgTk9OQU1FDQot
CV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNVNlcmlmRm9udEZhbWlseUV2IEAgMTM2IE5PTkFNRQ0K
LQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdDdXJzaXZlRm9udEZhbWlseUV2IEAgMTM3IE5PTkFN
RQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdGYW50YXN5Rm9udEZhbWlseUV2IEAgMTM4IE5P
TkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdKYXZhU2NyaXB0RW5hYmxlZEV2IEAgMTM5
IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThBdXRvUmVmcmVzaEVuYWJsZWRFdiBA
IDE0MCBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE4U2F2ZVJhd0RhdGFFbmFibGVk
RXYgQCAxNDEgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOFN0YW5kYXJkRm9udEZh
bWlseUV2IEAgMTQyIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTlEZWZhdWx0VGV4
dEVuY29kaW5nRXYgQCAxNDMgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOVNhbnNT
ZXJpZkZvbnRGYW1pbHlFdiBAIDE0NCBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIw
RGVmYXVsdEZpeGVkRm9udFNpemVFdiBAIDE0NSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0
aW5nczIyTWluaW11bUxvZ2ljYWxGb250U2l6ZUV2IEAgMTQ2IE5PTkFNRQ0KLQlfWk5LMTZDV2Vi
Q29yZVNldHRpbmdzMjJTaG91bGRQcmludEJhY2tncm91bmRzRXYgQCAxNDcgTk9OQU1FDQotCV9a
TksxNkNXZWJDb3JlU2V0dGluZ3MyMlVzZXJTdHlsZVNoZWV0TG9jYXRpb25FdiBAIDE0OCBOT05B
TUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczI3V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5
RXYgQCAxNDkgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MzN0phdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHlFdiBAIDE1MCBOT05BTUUNCi0JX1pUSTE0Q1dlYkNvcmVC
cmlkZ2UgQCAxNTEgTk9OQU1FIDsgIzxUST4jDQotCV9aVEkxNkNXZWJDb3JlU2V0dGluZ3MgQCAx
NTIgTk9OQU1FIDsgIzxUST4jDQotCV9aVEkyMENXZWJDb3JlUGFnZURhdGFJdGVtIEAgMTUzIE5P
TkFNRSA7ICM8VEk+Iw0KLQlfWlRJMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDE1NCBOT05B
TUUgOyAjPFRJPiMNCi0JX1pUVjE0Q1dlYkNvcmVCcmlkZ2UgQCAxNTUgTk9OQU1FIDsgIzxWVD4j
DQotCV9aVFYxNkNXZWJDb3JlU2V0dGluZ3MgQCAxNTYgTk9OQU1FIDsgIzxWVD4jDQotCV9aVFYy
MENXZWJDb3JlUGFnZURhdGFJdGVtIEAgMTU3IE5PTkFNRSA7ICM8VlQ+Iw0KLQlfWlRWMjNDV2Vi
Q29yZUdyYXBoaWNzQ29udGV4dCBAIDE1OCBOT05BTUUgOyAjPFZUPiMNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTE3R2V0UmVuZGVyVGV4dEFyZWFFUks3VERlc0MxNlI2UkFycmF5STVUUmVjdEUgQCAx
NTkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UzMUdldE5leHRSZW5kZXJUZXh0Rm9yU21h
cnRMaW5rc0xFUmkgQCAxNjAgTk9OQU1FDQorICAgIF9aTjEzVFdlYkNvcmVDYWNoZTE1QWRkSXRl
bVRvQ2FjaGVMRVIyOU1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvUjZURGVzQzhpIEAgMSBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEwSW1hZ2VDb3VudEVpIEAgMiBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEwTG9hZEltYWdlc0V2IEAgMyBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTExUmVzb2x2ZVVybExFUks3VERlc0MxNlMyXyBAIDQgTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMVNlYXJjaEFnYWluRVJLN1REZXNDMTZpaWkgQCA1
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTJEZWZlcnNUaW1lcnNFdiBAIDYgTk9O
QU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkdldFBhZ2VEYXRhTEVpIEAgNyBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEySW1hZ2VzSW5SZWN0RWkgQCA4IE5PTkFNRQ0KKyAg
ICBfWk4xNENXZWJDb3JlQnJpZGdlMTJQb2ludGVyRXZlbnRFMTNUUG9pbnRlckV2ZW50IEAgOSBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEyUG9pbnRlckV2ZW50RU4xM1RQb2ludGVy
RXZlbnQ1VFR5cGVFUks2VFBvaW50IEAgMTAgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxM0FjdGl2YXRlRXZlbnRFUjZUUG9pbnQgQCAxMSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTEzQWRkVG9Db250YWN0c0VSNlRQb2ludCBAIDEyIE5PTkFNRQ0KKyAgICBfWk4xNENX
ZWJDb3JlQnJpZGdlMTNEaWROb3RPcGVuVVJMRVJLN1REZXNDMTYgQCAxMyBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTEzRXhlY3V0ZVNjcmlwdEVSSzdURGVzQzE2IEAgMTQgTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM1NldFJlbmRlclBhcnRFUE41a2h0bWwxMFJlbmRl
clBhcnRFIEAgMTUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNEFkanVzdFZpZXdT
aXplRXYgQCAxNiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0RHVtcFJlbmRlclRy
ZWVFdiBAIDE3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRJbnN0YWxsSW5GcmFt
ZUVSMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxOCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTE0UHJlcGFyZUZvckV4aXRFdiBAIDE5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlMTRSZW1vdmVGaWxlTmFtZUVSNlRQb2ludCBAIDIwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJD
b3JlQnJpZGdlMTRTY3JvbGxUb0FuY2hvckVSSzdURGVzQzE2IEAgMjEgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UxNFNlbGVjdGlvbkNvbG9yRXYgQCAyMiBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE0U2V0TmVlZHNMYXlvdXRFdiBAIDIzIE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlMTRVcGRhdGVBbGxWaWV3c0V2IEAgMjQgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNUNyZWF0ZUtIVE1MVmlld0VSMThNV2ViQ29yZVNjcm9sbFZpZXdpaSBA
IDI1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVEZUFjdGl2YXRlRXZlbnRFaSBA
IDI2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVGaW5kTGlua3NPZlR5cGVFUks3
VERlc0MxNlI2UkFycmF5STE2VFdlYkNvcmVMaW5rSXRlbUUgQCAyNyBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE1R2V0VGV4dENvbnRlbnRMRXYgQCAyOCBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE1SnVtcFRvU2VsZWN0aW9uRXYgQCAyOSBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE1UmVtb3ZlRnJvbUZyYW1lRXYgQCAzMCBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE1U2VuZFJlc2l6ZUV2ZW50RXYgQCAzMSBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE1U2VuZFNjcm9sbEV2ZW50RXYgQCAzMiBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE1U2V0RGVmZXJzVGltZXJzRWkgQCAzMyBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE1U2V0TWF4QmlkaVdpZHRoRWkgQCAzNCBOT05BTUUNCisgICAgX1pO
MTRDV2ViQ29yZUJyaWRnZTE2U2V0Rm9udFNpemVMZXZlbEVpIEAgMzUgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UxNlRhYmJlZE5hdmlnYXRpb25FMTZUV2ViTmF2RGlyZWN0aW9uUjI2
VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVpIEAgMzYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2UxN1NhdmVEb2N1bWVudFN0YXRlRXYgQCAzNyBOT05BTUUNCisgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTE4QWN0aXZhdGVBY2Nlc3NLZXlzRTlUS2V5RXZlbnQgQCAzOCBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE4SW5pdGlhbGl6ZVNldHRpbmdzRVJLMTZDV2ViQ29yZVNl
dHRpbmdzIEAgMzkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxOFNldERyYXdzQmFj
a2dyb3VuZEVpIEAgNDAgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxOUJvZHlCYWNr
Z3JvdW5kQ29sb3JFdiBAIDQxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjBSZXN0
b3JlRG9jdW1lbnRTdGF0ZUV2IEAgNDIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2Uy
MFNjYWxpbmdGYWN0b3JDaGFuZ2VkRWkgQCA0MyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTIxU2Nyb2xsVG9BbmNob3JXaXRoVVJMRVJLN1REZXNDMTYgQCA0NCBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTIxU2hvdWxkQ3JlYXRlUmVuZGVyZXJzRXYgQCA0NSBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIxVVJMV2l0aFJlbGF0aXZlU3RyaW5nRVJLN1REZXND
MTYgQCA0NiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIyUHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZEV2IEAgNDcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyM0RldGVybWlu
ZUN1cnNvclBvc2l0aW9uRVIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlUjVUUmVjdFMzX1I2
VFBvaW50aSBAIDQ4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjNTZXRGYXN0Rmly
c3REaXNwbGF5TW9kZUVpIEAgNDkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyNFNl
dEZvcm1Db250cm9sVGV4dEJ5TmFtZUVSSzdURGVzQzE2UzJfIEAgNTAgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UyNFNldFNob3VsZENyZWF0ZVJlbmRlcmVyc0VpIEAgNTEgTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyNkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nRVJL
N1REZXNDMTZpIEAgNTIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyNlJlYXBwbHlT
dHlsZXNGb3JEZXZpY2VUeXBlRTE4VFdlYkNvcmVEZXZpY2VUeXBlIEAgNTMgTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UyN051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0V2IEAgNTQg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyOEZvcmNlTGF5b3V0QWRqdXN0aW5nVmll
d1NpemVFaSBAIDU1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlM0VuZEV2IEAgNTYg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U0TmV3TEVSMTZNV2ViQ2xpZW50QnJpZGdl
IEAgNTcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U2Q2xpZW50RXYgQCA1OCBOT05B
TUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTdBZGREYXRhRVJLNlREZXNDOCBAIDU5IE5PTkFN
RQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlN09wZW5VUkxFUks3VERlc0MxNmlTMl9TMl9SSzlU
RGF0ZVRpbWUgQCA2MCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTdTZXROYW1lRVJL
N1REZXNDMTYgQCA2MSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZThDbG9zZVVSTEV2
IEAgNjIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U4RHJhd1JlY3RFUks1VFJlY3RS
MjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDYzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlOEtleUV2ZW50RTlUS2V5RXZlbnRpIEAgNjQgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2U5Q2xlYXJGaW5kRXYgQCA2NSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRn
ZTlTZWFyY2hGb3JFUks3VERlc0MxNmlpaSBAIDY2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlOVNldFBhcmVudEVQU18gQCA2NyBOT05BTUUNCisgICAgX1pOMTVUV2ViQ29yZUhpc3Rv
cnkxNUhpc3RvcnlQcm92aWRlckV2IEAgNjggTk9OQU1FDQorICAgIF9aTjE1VFdlYkNvcmVIaXN0
b3J5MThTZXRIaXN0b3J5UHJvdmlkZXJFUDIzTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgQCA2OSBO
T05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMTRTZXRKYXZhRW5hYmxlZEVpIEAgNzAg
Tk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE3U2V0UGx1Z2luc0VuYWJsZWRFaSBA
IDcxIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldERlZmF1bHRGb250U2l6
ZUVpIEAgNzIgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0Rml4ZWRGb250
RmFtaWx5RVJLN1REZXNDMTYgQCA3MyBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdz
MThTZXRNaW5pbXVtRm9udFNpemVFaSBAIDc0IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0
dGluZ3MxOFNldFNlcmlmRm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzUgTk9OQU1FDQorICAgIF9a
TjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc2
IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNldEZhbnRhc3lGb250RmFtaWx5
RVJLN1REZXNDMTYgQCA3NyBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRK
YXZhU2NyaXB0RW5hYmxlZEVpIEAgNzggTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5n
czIxU2V0QXV0b1JlZnJlc2hFbmFibGVkRWkgQCA3OSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMjFTZXRTYXZlUmF3RGF0YUVuYWJsZWRFaSBAIDgwIE5PTkFNRQ0KKyAgICBfWk4x
NkNXZWJDb3JlU2V0dGluZ3MyMVNldFN0YW5kYXJkRm9udEZhbWlseUVSSzdURGVzQzE2IEAgODEg
Tk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIyU2V0RGVmYXVsdFRleHRFbmNvZGlu
Z0VSSzdURGVzQzE2IEAgODIgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIyU2V0
U2Fuc1NlcmlmRm9udEZhbWlseUVSSzdURGVzQzE2IEAgODMgTk9OQU1FDQorICAgIF9aTjE2Q1dl
YkNvcmVTZXR0aW5nczIzU2V0RGVmYXVsdEZpeGVkRm9udFNpemVFaSBAIDg0IE5PTkFNRQ0KKyAg
ICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldE1pbmltdW1Mb2dpY2FsRm9udFNpemVFaSBAIDg1
IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFNob3VsZFByaW50QmFja2dy
b3VuZHNFaSBAIDg2IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb25FUks3VERlc0MxNiBAIDg3IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJD
b3JlU2V0dGluZ3MzMFNldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUVpIEAgODggTk9OQU1F
DQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczQwU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseUVpIEAgODkgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczRO
ZXdMRXYgQCA5MCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzRDBFdiBAIDkxIE5P
TkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3NEMUV2IEAgOTIgTk9OQU1FDQorICAgIF9a
TjE2Q1dlYkNvcmVTZXR0aW5nc0QyRXYgQCA5MyBOT05BTUUNCisgICAgX1pOMjBUV2ViQ29yZUlt
YWdlQ2FycmllcjNVcmxFdiBAIDk0IE5PTkFNRQ0KKyAgICBfWk4yMFRXZWJDb3JlSW1hZ2VDYXJy
aWVyN0FsdFRleHRFdiBAIDk1IE5PTkFNRQ0KKyAgICBfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVy
N1Jhd0RhdGFFdiBAIDk2IE5PTkFNRQ0KKyAgICBfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyOFJl
bmRlcmVyRXYgQCA5NyBOT05BTUUNCisgICAgX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjlJbWFn
ZVR5cGVFdiBAIDk4IE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3JlQ29va2llRmFjdG9yeTEzQ29v
a2llQWRhcHRlckV2IEAgOTkgTk9OQU1FDQorICAgIF9aTjIxVFdlYkNvcmVDb29raWVGYWN0b3J5
MTZTZXRDb29raWVBZGFwdGVyRVAyMU1XZWJDb3JlQ29va2llQWRhcHRlciBAIDEwMCBOT05BTUUN
CisgICAgX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIxM1BsdWdpbkhhbmRsZXJFdiBAIDEwMSBO
T05BTUUNCisgICAgX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIyM1NldFdlYkNvcmVQbHVnaW5I
YW5kbGVyRVAyMU1XZWJDb3JlUGx1Z2luSGFuZGxlciBAIDEwMiBOT05BTUUNCisgICAgX1pOMjND
V2ViQ29yZUdyYXBoaWNzQ29udGV4dDROZXdMRVAxNkNGYnNCaXRtYXBEZXZpY2VQMTBDRmJzQml0
bWFwUDE4TVdlYkNvcmVTY3JvbGxWaWV3IEAgMTAzIE5PTkFNRQ0KKyAgICBfWk4yM0NXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0NE5ld0xFUjlDRmJzQml0R2NQMTBDRmJzQml0bWFwUDE4TVdlYkNvcmVT
Y3JvbGxWaWV3IEAgMTA0IE5PTkFNRQ0KKyAgICBfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVy
MTVMb2FkZXJDb250YWluZXJFdiBAIDEwNSBOT05BTUUNCisgICAgX1pOMjNUV2ViQ29yZUxvYWRl
ckNvbnRhaW5lcjI1U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5lckVQMjNNV2ViQ29yZUxvYWRlckNv
bnRhaW5lciBAIDEwNiBOT05BTUUNCisgICAgX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9y
eTI4U2V0V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUVQMjZNV2ViQ29yZUZvcm1Db250cm9sRmFj
dG9yeSBAIDEwNyBOT05BTUUNCisgICAgX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTdG
YWN0b3J5RXYgQCAxMDggTk9OQU1FDQorICAgIF9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0
b3J5MjlTZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUVQMjdNV2ViQ29yZVRleHRSZW5kZXJl
ckZhY3RvcnkgQCAxMDkgTk9OQU1FDQorICAgIF9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0
b3J5N0ZhY3RvcnlFdiBAIDExMCBOT05BTUUNCisgICAgX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJh
Y2tXcmFwcGVyMTFTZXRDYWxsYmFja0VQTjVraHRtbDE5Q2FjaGVkSW1hZ2VDYWxsYmFja0UgQCAx
MTEgTk9OQU1FDQorICAgIF9aTjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjEyTm90aWZ5
VXBkYXRlRXYgQCAxMTIgTk9OQU1FDQorICAgIF9aTjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3Jh
cHBlcjE0Tm90aWZ5RmluaXNoZWRFdiBAIDExMyBOT05BTUUNCisgICAgX1pOMjhDV2ViQ29yZUlt
YWdlQ2FsbGJhY2tXcmFwcGVyMTlOb3RpZnlEZWNvZGluZ0Vycm9yRXYgQCAxMTQgTk9OQU1FDQor
ICAgIF9aTjI4VFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTMwU2V0V2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5RVAyOE1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgQCAxMTUgTk9OQU1F
DQorICAgIF9aTjI4VFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTdGYWN0b3J5RXYgQCAxMTYg
Tk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMTBJc0ZyYW1lU2V0RXYgQCAxMTcgTk9O
QU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMTBSZW5kZXJQYXJ0RXYgQCAxMTggTk9OQU1F
DQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMTFOZWVkc0xheW91dEV2IEAgMTE5IE5PTkFNRQ0K
KyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTEyQ2FuQ2FjaGVQYWdlRXYgQCAxMjAgTk9OQU1FDQor
ICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMTJUZXh0RW5jb2RpbmdFdiBAIDEyMSBOT05BTUUNCisg
ICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxNkhhc1BlbmRpbmdMYXlvdXRFdiBAIDEyMiBOT05BTUUN
CisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxOFNob3dpbmdGYXN0UHJldmlld0V2IEAgMTIzIE5P
TkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTIwRmFzdEZpcnN0RGlzcGxheU1vZGVFdiBA
IDEyNCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyMEdldFVybE9mTm9kZUluRm9j
dXNMRVI2VFBvaW50IEAgMTI1IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTI0TmF2
aWdhYmxlTm9kZVVuZGVyQ3Vyc29yRVI2VFBvaW50UjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5
cGVSNVRSZWN0IEAgMTI2IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTNVUkxFdiBA
IDEyNyBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2U0TmFtZUV2IEAgMTI4IE5PTkFN
RQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTZEb21haW5FdiBAIDEyOSBOT05BTUUNCisgICAg
X1pOSzE0Q1dlYkNvcmVCcmlkZ2U4UmVmZXJyZXJFdiBAIDEzMCBOT05BTUUNCisgICAgX1pOSzE2
Q1dlYkNvcmVTZXR0aW5nczExSmF2YUVuYWJsZWRFdiBAIDEzMSBOT05BTUUNCisgICAgX1pOSzE2
Q1dlYkNvcmVTZXR0aW5nczE0UGx1Z2luc0VuYWJsZWRFdiBAIDEzMiBOT05BTUUNCisgICAgX1pO
SzE2Q1dlYkNvcmVTZXR0aW5nczE1RGVmYXVsdEZvbnRTaXplRXYgQCAxMzMgTk9OQU1FDQorICAg
IF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNUZpeGVkRm9udEZhbWlseUV2IEAgMTM0IE5PTkFNRQ0K
KyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVNaW5pbXVtRm9udFNpemVFdiBAIDEzNSBOT05B
TUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1U2VyaWZGb250RmFtaWx5RXYgQCAxMzYg
Tk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0N1cnNpdmVGb250RmFtaWx5RXYg
QCAxMzcgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0ZhbnRhc3lGb250RmFt
aWx5RXYgQCAxMzggTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0phdmFTY3Jp
cHRFbmFibGVkRXYgQCAxMzkgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOEF1
dG9SZWZyZXNoRW5hYmxlZEV2IEAgMTQwIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRp
bmdzMThTYXZlUmF3RGF0YUVuYWJsZWRFdiBAIDE0MSBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNv
cmVTZXR0aW5nczE4U3RhbmRhcmRGb250RmFtaWx5RXYgQCAxNDIgTk9OQU1FDQorICAgIF9aTksx
NkNXZWJDb3JlU2V0dGluZ3MxOURlZmF1bHRUZXh0RW5jb2RpbmdFdiBAIDE0MyBOT05BTUUNCisg
ICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE5U2Fuc1NlcmlmRm9udEZhbWlseUV2IEAgMTQ0IE5P
TkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjBEZWZhdWx0Rml4ZWRGb250U2l6ZUV2
IEAgMTQ1IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJNaW5pbXVtTG9naWNh
bEZvbnRTaXplRXYgQCAxNDYgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMlNo
b3VsZFByaW50QmFja2dyb3VuZHNFdiBAIDE0NyBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVT
ZXR0aW5nczIyVXNlclN0eWxlU2hlZXRMb2NhdGlvbkV2IEAgMTQ4IE5PTkFNRQ0KKyAgICBfWk5L
MTZDV2ViQ29yZVNldHRpbmdzMjdXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHlFdiBAIDE0OSBO
T05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczM3SmF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseUV2IEAgMTUwIE5PTkFNRQ0KKyAgICBfWlRJMTRDV2ViQ29yZUJyaWRn
ZSBAIDE1MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSTE2Q1dlYkNvcmVTZXR0aW5ncyBAIDE1
MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSTIwQ1dlYkNvcmVQYWdlRGF0YUl0ZW0gQCAxNTMg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVEkyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgMTU0
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRWMTRDV2ViQ29yZUJyaWRnZSBAIDE1NSBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVjE2Q1dlYkNvcmVTZXR0aW5ncyBAIDE1NiBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVjIwQ1dlYkNvcmVQYWdlRGF0YUl0ZW0gQCAxNTcgTk9OQU1FIDsgIzxWVD4j
DQorICAgICAgICBfWlRWMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDE1OCBOT05BTUUgOyAj
PFZUPiMNCisgICAgICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxN0dldFJlbmRlclRleHRBcmVhRVJL
N1REZXNDMTZSNlJBcnJheUk1VFJlY3RFIEAgMTU5IE5PTkFNRQ0KKyAgICAgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTMxR2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTEVSaSBAIDE2MCBOT05B
TUUNCisgICAgICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMFdpbmRvd1NjcmlwdE5QT2JqZWN0RXYg
QCAxNjEgTk9OQU1FDQogDQpJbmRleDogV2ViQ29yZS9ncm91cC9LSFRNTC5tbXANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2dyb3VwL0tIVE1MLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2Vi
Q29yZS9ncm91cC9LSFRNTC5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC01OSw2ICs1OSw3IEBADQog
U1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlwuDQogU1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlxK
YXZhU2NyaXB0Q29yZVxranMNCiBTWVNURU1JTkNMVURFICAgICAgIC4uXC4uXEphdmFTY3JpcHRD
b3JlXHBjcmUNCitTWVNURU1JTkNMVURFICAgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGJpbmRp
bmdzDQogU1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlxNZW1vcnlNYW5hZ2VyXEluYw0KICNpZm5k
ZWYgX19CUk9XU0VSX1NESw0KIFNZU1RFTUlOQ0xVREUgICAgICAgXFM2MFxsaWJ4bWwycGFyc2Vy
XHhtbGVuZ2luZVxpbmNcbGlieG1sDQpJbmRleDogV2ViQ29yZS9ncm91cC9LV1EubW1wDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9ncm91cC9LV1EubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBX
ZWJDb3JlL2dyb3VwL0tXUS5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC02Miw2ICs2Miw3IEBADQog
U1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmUNCiBTWVNURU1JTkNMVURFICAg
ICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxranMNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZh
U2NyaXB0Q29yZVxwY3JlDQorU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVc
YmluZGluZ3MNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxNZW1vcnlNYW5hZ2VyXEluYw0KIA0K
IE9QVElPTiBDVyAtcHJlZml4IHByYWdtYXMucHJlZg0KSW5kZXg6IFdlYkNvcmUvZ3JvdXAvV2Vi
Q29yZS5tbXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2dyb3VwL1dlYkNvcmUubW1wCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2dyb3VwL1dlYkNvcmUubW1wCSh3b3JraW5nIGNvcHkp
DQpAQCAtNjMsNiArNjMsNyBAQA0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5ca2h0bWxcZWRpdGlu
Zw0KIFNZU1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGtqcw0KIFNZU1RFTUlO
Q0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXHBjcmUNCitTWVNURU1JTkNMVURFICAgICAu
LlwuLlxKYXZhU2NyaXB0Q29yZVxiaW5kaW5ncw0KIFNZU1RFTUlOQ0xVREUgICAgIC4uXC4uXE1l
bW9yeU1hbmFnZXJcSW5jDQogDQogDQpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5k
aW5nLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5j
cHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0zNjEsMTMgKzM2MSwxMyBAQA0KICAgcmV0dXJuIGZhbHNl
OwogfQogCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NI
QU5HRVMKIGJvb2wgU2NyaXB0SW50ZXJwcmV0ZXI6OmlzR2xvYmFsT2JqZWN0KGNvbnN0IFZhbHVl
ICZ2KQogewogICAgIGlmICh2LnR5cGUoKSA9PSBPYmplY3RUeXBlKSB7Ci0JT2JqZWN0IG8gPSB2
LnRvT2JqZWN0IChnbG9iYWxFeGVjKCkpOwotCWlmIChvLmNsYXNzSW5mbygpID09ICZXaW5kb3c6
OmluZm8pCi0JICAgIHJldHVybiB0cnVlOworICAgIE9iamVjdCBvID0gdi50b09iamVjdCAoZ2xv
YmFsRXhlYygpKTsKKyAgICBpZiAoby5jbGFzc0luZm8oKSA9PSAmV2luZG93OjppbmZvKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMzg5LDEx
ICszODksMTIgQEANCiB7CiAgICAgdm9pZCAqcmVzdWx0ID0gMDsKIAorI2lmICFOT0tJQV9DSEFO
R0VTCiAgICAgaWYgKGxhbmd1YWdlID09IEJpbmRpbmdzOjpJbnN0YW5jZTo6T2JqZWN0aXZlQ0xh
bmd1YWdlKQotCXJlc3VsdCA9IGNyZWF0ZU9iamNJbnN0YW5jZUZvclZhbHVlIChleGVjLCB2YWx1
ZSwgb3JpZ2luLCBjdXJyZW50KTsKLQorICAgIHJlc3VsdCA9IGNyZWF0ZU9iamNJbnN0YW5jZUZv
clZhbHVlIChleGVjLCB2YWx1ZSwgb3JpZ2luLCBjdXJyZW50KTsKKyNlbmRpZgogICAgIGlmICgh
cmVzdWx0KQotCXJlc3VsdCA9IEludGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9y
VmFsdWUgKGV4ZWMsIGxhbmd1YWdlLCB2YWx1ZSwgb3JpZ2luLCBjdXJyZW50KTsKKyAgICByZXN1
bHQgPSBJbnRlcnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBs
YW5ndWFnZSwgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuaAkocmV2aXNpb24gMTcwNjkpDQorKysg
V2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw3
ICszMSw3IEBADQogI2luY2x1ZGUgPGtqcy9sb29rdXAuaD4KICNpbmNsdWRlIDxranMvcHJvdGVj
dC5oPgogCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NI
QU5HRVMKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+CiAjZW5kaWYKIApAQCAt
MTQwLDcgKzE0MCw3IEBADQogCiAgICAgRE9NOjpFdmVudCAqZ2V0Q3VycmVudEV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9ldnQ7IH0KIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5H
RVMKKyNpZiBBUFBMRV9DSEFOR0VTCiAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2JqZWN0KGNv
bnN0IFZhbHVlICZ2KTsKICAgICB2aXJ0dWFsIEludGVycHJldGVyICppbnRlcnByZXRlckZvckds
b2JhbE9iamVjdCAoY29uc3QgVmFsdWVJbXAgKmltcCk7CiAgICAgdmlydHVhbCBib29sIGlzU2Fm
ZVNjcmlwdCAoY29uc3QgSW50ZXJwcmV0ZXIgKnRhcmdldCk7CkluZGV4OiBXZWJDb3JlL2todG1s
L2VjbWEva2pzX2RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pz
X2RvbS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9t
LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQzLDcgKzQzLDcgQEANCiAKICNpbmNsdWRlICJtaXNj
L2h0bWx0YWdzLmgiCiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYg
QVBQTEVfQ0hBTkdFUwogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWVfb2JqZWN0Lmg+
CiAjZW5kaWYKIApAQCAtNTgsMjEgKzU4LDIxIEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLyog
U291cmNlIGZvciBET01Ob2RlUHJvdG9UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJl
Z2VuZXJhdGUuCiBAYmVnaW4gRE9NTm9kZVByb3RvVGFibGUgMTMKLSAgaW5zZXJ0QmVmb3JlCURP
TU5vZGU6Okluc2VydEJlZm9yZQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcmVwbGFjZUNoaWxk
CURPTU5vZGU6OlJlcGxhY2VDaGlsZAlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcmVtb3ZlQ2hp
bGQJRE9NTm9kZTo6UmVtb3ZlQ2hpbGQJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGFwcGVuZENo
aWxkCURPTU5vZGU6OkFwcGVuZENoaWxkCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBoYXNBdHRy
aWJ1dGVzCURPTU5vZGU6Okhhc0F0dHJpYnV0ZXMJRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIGhh
c0NoaWxkTm9kZXMJRE9NTm9kZTo6SGFzQ2hpbGROb2RlcwlEb250RGVsZXRlfEZ1bmN0aW9uIDAK
LSAgY2xvbmVOb2RlCURPTU5vZGU6OkNsb25lTm9kZQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAg
aW5zZXJ0QmVmb3JlICBET01Ob2RlOjpJbnNlcnRCZWZvcmUgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDIKKyAgcmVwbGFjZUNoaWxkICBET01Ob2RlOjpSZXBsYWNlQ2hpbGQgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDIKKyAgcmVtb3ZlQ2hpbGQgICBET01Ob2RlOjpSZW1vdmVDaGlsZCAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKKyAgYXBwZW5kQ2hpbGQgICBET01Ob2RlOjpBcHBlbmRDaGlsZCAgICBE
b250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgaGFzQXR0cmlidXRlcyBET01Ob2RlOjpIYXNBdHRyaWJ1
dGVzICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKKyAgaGFzQ2hpbGROb2RlcyBET01Ob2RlOjpIYXND
aGlsZE5vZGVzICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKKyAgY2xvbmVOb2RlIERPTU5vZGU6OkNs
b25lTm9kZSAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiAjIERPTTIKLSAgbm9ybWFsaXplCURPTU5v
ZGU6Ok5vcm1hbGl6ZQlEb250RGVsZXRlfEZ1bmN0aW9uIDAKLSAgaXNTdXBwb3J0ZWQgICBET01O
b2RlOjpJc1N1cHBvcnRlZAlEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgbm9ybWFsaXplIERPTU5v
ZGU6Ok5vcm1hbGl6ZSAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCisgIGlzU3VwcG9ydGVkICAgRE9N
Tm9kZTo6SXNTdXBwb3J0ZWQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiAjIGZyb20gdGhlIEV2
ZW50VGFyZ2V0IGludGVyZmFjZQotICBhZGRFdmVudExpc3RlbmVyCURPTU5vZGU6OkFkZEV2ZW50
TGlzdGVuZXIJRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIHJlbW92ZUV2ZW50TGlzdGVuZXIJRE9N
Tm9kZTo6UmVtb3ZlRXZlbnRMaXN0ZW5lcglEb250RGVsZXRlfEZ1bmN0aW9uIDMKLSAgZGlzcGF0
Y2hFdmVudAkJRE9NTm9kZTo6RGlzcGF0Y2hFdmVudAlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAg
Y29udGFpbnMJRE9NTm9kZTo6Q29udGFpbnMJCURvbnREZWxldGV8RnVuY3Rpb24gMQorICBhZGRF
dmVudExpc3RlbmVyICBET01Ob2RlOjpBZGRFdmVudExpc3RlbmVyICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAzCisgIHJlbW92ZUV2ZW50TGlzdGVuZXIgICBET01Ob2RlOjpSZW1vdmVFdmVudExpc3Rl
bmVyICAgIERvbnREZWxldGV8RnVuY3Rpb24gMworICBkaXNwYXRjaEV2ZW50ICAgICBET01Ob2Rl
OjpEaXNwYXRjaEV2ZW50ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgY29udGFpbnMgIERPTU5v
ZGU6OkNvbnRhaW5zICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogIyAiRE9NIGxldmVsIDAi
IChmcm9tIEdlY2tvIERPTSByZWZlcmVuY2U7IGFsc28gaW4gV2luSUUpCiAgIGl0ZW0gICAgICAg
ICAgRE9NTm9kZTo6SXRlbSAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiBAZW5kCkBA
IC0xMTMsNyArMTEzLDcgQEANCiAgICAgRE9NT2JqZWN0OjptYXJrKCk7CiAgICAgcmV0dXJuOwog
ICB9Ci0gIAorCiAgIC8vIFRoaXMgaXMgYSBub2RlIG91dHNpZGUgdGhlIGRvY3VtZW50LCBzbyBm
aW5kIHRoZSByb290IG9mIHRoZSB0cmVlIGl0IGlzIGluLAogICAvLyBhbmQgc3RhcnQgbWFya2lu
ZyBmcm9tIHRoZXJlLgogICBOb2RlSW1wbCAqcm9vdCA9IG5vZGUuaGFuZGxlKCk7CkBAIC0xNjMs
NzUgKzE2Myw3NSBAQA0KIAogLyogU291cmNlIGZvciBET01Ob2RlVGFibGUuIFVzZSAibWFrZSBo
YXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTU5vZGVUYWJsZSA2NwotICBub2Rl
TmFtZQlET01Ob2RlOjpOb2RlTmFtZQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5vZGVWYWx1ZQlE
T01Ob2RlOjpOb2RlVmFsdWUJRG9udERlbGV0ZQotICBub2RlVHlwZQlET01Ob2RlOjpOb2RlVHlw
ZQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHBhcmVudE5vZGUJRE9NTm9kZTo6UGFyZW50Tm9kZQlE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIHBhcmVudEVsZW1lbnQJRE9NTm9kZTo6UGFyZW50RWxlbWVu
dAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGNoaWxkTm9kZXMJRE9NTm9kZTo6Q2hpbGROb2RlcwlE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIGZpcnN0Q2hpbGQJRE9NTm9kZTo6Rmlyc3RDaGlsZAlEb250
RGVsZXRlfFJlYWRPbmx5Ci0gIGxhc3RDaGlsZAlET01Ob2RlOjpMYXN0Q2hpbGQJRG9udERlbGV0
ZXxSZWFkT25seQorICBub2RlTmFtZSAgRE9NTm9kZTo6Tm9kZU5hbWUgICBEb250RGVsZXRlfFJl
YWRPbmx5CisgIG5vZGVWYWx1ZSBET01Ob2RlOjpOb2RlVmFsdWUgIERvbnREZWxldGUKKyAgbm9k
ZVR5cGUgIERPTU5vZGU6Ok5vZGVUeXBlICAgRG9udERlbGV0ZXxSZWFkT25seQorICBwYXJlbnRO
b2RlICAgIERPTU5vZGU6OlBhcmVudE5vZGUgRG9udERlbGV0ZXxSZWFkT25seQorICBwYXJlbnRF
bGVtZW50IERPTU5vZGU6OlBhcmVudEVsZW1lbnQgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgY2hp
bGROb2RlcyAgICBET01Ob2RlOjpDaGlsZE5vZGVzIERvbnREZWxldGV8UmVhZE9ubHkKKyAgZmly
c3RDaGlsZCAgICBET01Ob2RlOjpGaXJzdENoaWxkIERvbnREZWxldGV8UmVhZE9ubHkKKyAgbGFz
dENoaWxkIERPTU5vZGU6Okxhc3RDaGlsZCAgRG9udERlbGV0ZXxSZWFkT25seQogICBwcmV2aW91
c1NpYmxpbmcgIERPTU5vZGU6OlByZXZpb3VzU2libGluZyBEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IG5leHRTaWJsaW5nCURPTU5vZGU6Ok5leHRTaWJsaW5nCURvbnREZWxldGV8UmVhZE9ubHkKLSAg
YXR0cmlidXRlcwlET01Ob2RlOjpBdHRyaWJ1dGVzCURvbnREZWxldGV8UmVhZE9ubHkKLSAgbmFt
ZXNwYWNlVVJJCURPTU5vZGU6Ok5hbWVzcGFjZVVSSQlEb250RGVsZXRlfFJlYWRPbmx5CisgIG5l
eHRTaWJsaW5nICAgRE9NTm9kZTo6TmV4dFNpYmxpbmcgICAgRG9udERlbGV0ZXxSZWFkT25seQor
ICBhdHRyaWJ1dGVzICAgIERPTU5vZGU6OkF0dHJpYnV0ZXMgRG9udERlbGV0ZXxSZWFkT25seQor
ICBuYW1lc3BhY2VVUkkgIERPTU5vZGU6Ok5hbWVzcGFjZVVSSSAgIERvbnREZWxldGV8UmVhZE9u
bHkKICMgRE9NMgotICBwcmVmaXgJRE9NTm9kZTo6UHJlZml4CQlEb250RGVsZXRlCi0gIGxvY2Fs
TmFtZQlET01Ob2RlOjpMb2NhbE5hbWUJRG9udERlbGV0ZXxSZWFkT25seQotICBvd25lckRvY3Vt
ZW50CURPTU5vZGU6Ok93bmVyRG9jdW1lbnQJRG9udERlbGV0ZXxSZWFkT25seQorICBwcmVmaXgg
ICAgRE9NTm9kZTo6UHJlZml4ICAgICBEb250RGVsZXRlCisgIGxvY2FsTmFtZSBET01Ob2RlOjpM
b2NhbE5hbWUgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb3duZXJEb2N1bWVudCBET01Ob2RlOjpP
d25lckRvY3VtZW50ICBEb250RGVsZXRlfFJlYWRPbmx5CiAjCi0gIG9uYWJvcnQJRE9NTm9kZTo6
T25BYm9ydAkJRG9udERlbGV0ZQotICBvbmJsdXIJRE9NTm9kZTo6T25CbHVyCQkJRG9udERlbGV0
ZQotICBvbmNoYW5nZQlET01Ob2RlOjpPbkNoYW5nZQkJRG9udERlbGV0ZQotICBvbmNsaWNrCURP
TU5vZGU6Ok9uQ2xpY2sJCURvbnREZWxldGUKLSAgb25jb250ZXh0bWVudQlET01Ob2RlOjpPbkNv
bnRleHRNZW51CQlEb250RGVsZXRlCi0gIG9uZGJsY2xpY2sJRE9NTm9kZTo6T25EYmxDbGljawkJ
RG9udERlbGV0ZQotICBvbmJlZm9yZWN1dAlET01Ob2RlOjpPbkJlZm9yZUN1dAkJRG9udERlbGV0
ZQorICBvbmFib3J0ICAgRE9NTm9kZTo6T25BYm9ydCAgICAgICAgRG9udERlbGV0ZQorICBvbmJs
dXIgICAgRE9NTm9kZTo6T25CbHVyICAgICAgICAgRG9udERlbGV0ZQorICBvbmNoYW5nZSAgRE9N
Tm9kZTo6T25DaGFuZ2UgICAgICAgRG9udERlbGV0ZQorICBvbmNsaWNrICAgRE9NTm9kZTo6T25D
bGljayAgICAgICAgRG9udERlbGV0ZQorICBvbmNvbnRleHRtZW51IERPTU5vZGU6Ok9uQ29udGV4
dE1lbnUgICAgICBEb250RGVsZXRlCisgIG9uZGJsY2xpY2sgICAgRE9NTm9kZTo6T25EYmxDbGlj
ayAgICAgRG9udERlbGV0ZQorICBvbmJlZm9yZWN1dCAgIERPTU5vZGU6Ok9uQmVmb3JlQ3V0ICAg
ICAgICBEb250RGVsZXRlCiAgIG9uY3V0ICAgICAgICAgRE9NTm9kZTo6T25DdXQgICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlCi0gIG9uYmVmb3JlY29weQlET01Ob2RlOjpPbkJlZm9yZUNvcHkJ
CURvbnREZWxldGUKLSAgb25jb3B5CURPTU5vZGU6Ok9uQ29weSAgICAgICAgICAgICAgICAgRG9u
dERlbGV0ZQotICBvbmJlZm9yZXBhc3RlCURPTU5vZGU6Ok9uQmVmb3JlUGFzdGUJCURvbnREZWxl
dGUKLSAgb25wYXN0ZQlET01Ob2RlOjpPblBhc3RlCQlEb250RGVsZXRlCi0gIG9uZHJhZwlET01O
b2RlOjpPbkRyYWcJCQlEb250RGVsZXRlCi0gIG9uZHJhZ2Ryb3AJRE9NTm9kZTo6T25EcmFnRHJv
cAkJRG9udERlbGV0ZQotICBvbmRyYWdlbmQJRE9NTm9kZTo6T25EcmFnRW5kCQlEb250RGVsZXRl
Ci0gIG9uZHJhZ2VudGVyCURPTU5vZGU6Ok9uRHJhZ0VudGVyCQlEb250RGVsZXRlCi0gIG9uZHJh
Z2xlYXZlCURPTU5vZGU6Ok9uRHJhZ0xlYXZlCQlEb250RGVsZXRlCi0gIG9uZHJhZ292ZXIJRE9N
Tm9kZTo6T25EcmFnT3ZlcgkJRG9udERlbGV0ZQotICBvbmRyYWdzdGFydAlET01Ob2RlOjpPbkRy
YWdTdGFydAkJRG9udERlbGV0ZQotICBvbmRyb3AJRE9NTm9kZTo6T25Ecm9wICAgICAgICAgICAg
ICAgICBEb250RGVsZXRlCi0gIG9uZXJyb3IJRE9NTm9kZTo6T25FcnJvcgkJRG9udERlbGV0ZQot
ICBvbmZvY3VzCURPTU5vZGU6Ok9uRm9jdXMgICAgICAgCQlEb250RGVsZXRlCisgIG9uYmVmb3Jl
Y29weSAgRE9NTm9kZTo6T25CZWZvcmVDb3B5ICAgICAgIERvbnREZWxldGUKKyAgb25jb3B5ICAg
IERPTU5vZGU6Ok9uQ29weSAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQorICBvbmJlZm9yZXBh
c3RlIERPTU5vZGU6Ok9uQmVmb3JlUGFzdGUgICAgICBEb250RGVsZXRlCisgIG9ucGFzdGUgICBE
T01Ob2RlOjpPblBhc3RlICAgICAgICBEb250RGVsZXRlCisgIG9uZHJhZyAgICBET01Ob2RlOjpP
bkRyYWcgICAgICAgICBEb250RGVsZXRlCisgIG9uZHJhZ2Ryb3AgICAgRE9NTm9kZTo6T25EcmFn
RHJvcCAgICAgRG9udERlbGV0ZQorICBvbmRyYWdlbmQgRE9NTm9kZTo6T25EcmFnRW5kICAgICAg
RG9udERlbGV0ZQorICBvbmRyYWdlbnRlciAgIERPTU5vZGU6Ok9uRHJhZ0VudGVyICAgICAgICBE
b250RGVsZXRlCisgIG9uZHJhZ2xlYXZlICAgRE9NTm9kZTo6T25EcmFnTGVhdmUgICAgICAgIERv
bnREZWxldGUKKyAgb25kcmFnb3ZlciAgICBET01Ob2RlOjpPbkRyYWdPdmVyICAgICBEb250RGVs
ZXRlCisgIG9uZHJhZ3N0YXJ0ICAgRE9NTm9kZTo6T25EcmFnU3RhcnQgICAgICAgIERvbnREZWxl
dGUKKyAgb25kcm9wICAgIERPTU5vZGU6Ok9uRHJvcCAgICAgICAgICAgICAgICAgRG9udERlbGV0
ZQorICBvbmVycm9yICAgRE9NTm9kZTo6T25FcnJvciAgICAgICAgRG9udERlbGV0ZQorICBvbmZv
Y3VzICAgRE9NTm9kZTo6T25Gb2N1cyAgICAgICAgICAgIERvbnREZWxldGUKICAgb25pbnB1dCAg
ICAgICBET01Ob2RlOjpPbklucHV0ICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25rZXlk
b3duCURPTU5vZGU6Ok9uS2V5RG93bgkJRG9udERlbGV0ZQotICBvbmtleXByZXNzCURPTU5vZGU6
Ok9uS2V5UHJlc3MJCURvbnREZWxldGUKLSAgb25rZXl1cAlET01Ob2RlOjpPbktleVVwCQlEb250
RGVsZXRlCi0gIG9ubG9hZAlET01Ob2RlOjpPbkxvYWQJCQlEb250RGVsZXRlCi0gIG9ubW91c2Vk
b3duCURPTU5vZGU6Ok9uTW91c2VEb3duCQlEb250RGVsZXRlCi0gIG9ubW91c2Vtb3ZlCURPTU5v
ZGU6Ok9uTW91c2VNb3ZlCQlEb250RGVsZXRlCi0gIG9ubW91c2VvdXQJRE9NTm9kZTo6T25Nb3Vz
ZU91dAkJRG9udERlbGV0ZQotICBvbm1vdXNlb3ZlcglET01Ob2RlOjpPbk1vdXNlT3ZlcgkJRG9u
dERlbGV0ZQotICBvbm1vdXNldXAJRE9NTm9kZTo6T25Nb3VzZVVwCQlEb250RGVsZXRlCi0gIG9u
bW91c2V3aGVlbAlET01Ob2RlOjpPbk1vdXNlV2hlZWwJCURvbnREZWxldGUKLSAgb25tb3ZlCURP
TU5vZGU6Ok9uTW92ZQkJCURvbnREZWxldGUKLSAgb25yZXNldAlET01Ob2RlOjpPblJlc2V0CQlE
b250RGVsZXRlCi0gIG9ucmVzaXplCURPTU5vZGU6Ok9uUmVzaXplCQlEb250RGVsZXRlCisgIG9u
a2V5ZG93biBET01Ob2RlOjpPbktleURvd24gICAgICBEb250RGVsZXRlCisgIG9ua2V5cHJlc3Mg
ICAgRE9NTm9kZTo6T25LZXlQcmVzcyAgICAgRG9udERlbGV0ZQorICBvbmtleXVwICAgRE9NTm9k
ZTo6T25LZXlVcCAgICAgICAgRG9udERlbGV0ZQorICBvbmxvYWQgICAgRE9NTm9kZTo6T25Mb2Fk
ICAgICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNlZG93biAgIERPTU5vZGU6Ok9uTW91c2VEb3du
ICAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2Vtb3ZlICAgRE9NTm9kZTo6T25Nb3VzZU1vdmUg
ICAgICAgIERvbnREZWxldGUKKyAgb25tb3VzZW91dCAgICBET01Ob2RlOjpPbk1vdXNlT3V0ICAg
ICBEb250RGVsZXRlCisgIG9ubW91c2VvdmVyICAgRE9NTm9kZTo6T25Nb3VzZU92ZXIgICAgICAg
IERvbnREZWxldGUKKyAgb25tb3VzZXVwIERPTU5vZGU6Ok9uTW91c2VVcCAgICAgIERvbnREZWxl
dGUKKyAgb25tb3VzZXdoZWVsICBET01Ob2RlOjpPbk1vdXNlV2hlZWwgICAgICAgRG9udERlbGV0
ZQorICBvbm1vdmUgICAgRE9NTm9kZTo6T25Nb3ZlICAgICAgICAgRG9udERlbGV0ZQorICBvbnJl
c2V0ICAgRE9NTm9kZTo6T25SZXNldCAgICAgICAgRG9udERlbGV0ZQorICBvbnJlc2l6ZSAgRE9N
Tm9kZTo6T25SZXNpemUgICAgICAgRG9udERlbGV0ZQogICBvbnNjcm9sbCAgICAgIERPTU5vZGU6
Ok9uU2Nyb2xsICAgICAgICAgICAgICAgRG9udERlbGV0ZQogICBvbnNlYXJjaCAgICAgIERPTU5v
ZGU6Ok9uU2VhcmNoICAgICAgICAgICAgICAgRG9udERlbGV0ZQotICBvbnNlbGVjdAlET01Ob2Rl
OjpPblNlbGVjdAkJRG9udERlbGV0ZQotICBvbnNlbGVjdHN0YXJ0CURPTU5vZGU6Ok9uU2VsZWN0
U3RhcnQJCURvbnREZWxldGUKLSAgb25zdWJtaXQJRE9NTm9kZTo6T25TdWJtaXQJCURvbnREZWxl
dGUKLSAgb251bmxvYWQJRE9NTm9kZTo6T25VbmxvYWQJCURvbnREZWxldGUKKyAgb25zZWxlY3Qg
IERPTU5vZGU6Ok9uU2VsZWN0ICAgICAgIERvbnREZWxldGUKKyAgb25zZWxlY3RzdGFydCBET01O
b2RlOjpPblNlbGVjdFN0YXJ0ICAgICAgRG9udERlbGV0ZQorICBvbnN1Ym1pdCAgRE9NTm9kZTo6
T25TdWJtaXQgICAgICAgRG9udERlbGV0ZQorICBvbnVubG9hZCAgRE9NTm9kZTo6T25VbmxvYWQg
ICAgICAgRG9udERlbGV0ZQogIyBJRSBleHRlbnNpb25zCi0gIG9mZnNldExlZnQJRE9NTm9kZTo6
T2Zmc2V0TGVmdAkJRG9udERlbGV0ZXxSZWFkT25seQotICBvZmZzZXRUb3AJRE9NTm9kZTo6T2Zm
c2V0VG9wCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG9mZnNldFdpZHRoCURPTU5vZGU6Ok9mZnNl
dFdpZHRoCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG9mZnNldEhlaWdodAlET01Ob2RlOjpPZmZz
ZXRIZWlnaHQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgb2Zmc2V0UGFyZW50CURPTU5vZGU6Ok9m
ZnNldFBhcmVudAkJRG9udERlbGV0ZXxSZWFkT25seQotICBjbGllbnRXaWR0aAlET01Ob2RlOjpD
bGllbnRXaWR0aAkJRG9udERlbGV0ZXxSZWFkT25seQotICBjbGllbnRIZWlnaHQJRE9NTm9kZTo6
Q2xpZW50SGVpZ2h0CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHNjcm9sbExlZnQJRE9NTm9kZTo6
U2Nyb2xsTGVmdAkJRG9udERlbGV0ZQotICBzY3JvbGxUb3AJRE9NTm9kZTo6U2Nyb2xsVG9wCQlE
b250RGVsZXRlCisgIG9mZnNldExlZnQgICAgRE9NTm9kZTo6T2Zmc2V0TGVmdCAgICAgRG9udERl
bGV0ZXxSZWFkT25seQorICBvZmZzZXRUb3AgRE9NTm9kZTo6T2Zmc2V0VG9wICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQorICBvZmZzZXRXaWR0aCAgIERPTU5vZGU6Ok9mZnNldFdpZHRoICAgICAg
ICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9mZnNldEhlaWdodCAgRE9NTm9kZTo6T2Zmc2V0SGVp
Z2h0ICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb2Zmc2V0UGFyZW50ICBET01Ob2RlOjpP
ZmZzZXRQYXJlbnQgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBjbGllbnRXaWR0aCAgIERP
TU5vZGU6OkNsaWVudFdpZHRoICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGNsaWVudEhl
aWdodCAgRE9NTm9kZTo6Q2xpZW50SGVpZ2h0ICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAg
c2Nyb2xsTGVmdCAgICBET01Ob2RlOjpTY3JvbGxMZWZ0ICAgICBEb250RGVsZXRlCisgIHNjcm9s
bFRvcCBET01Ob2RlOjpTY3JvbGxUb3AgICAgICBEb250RGVsZXRlCiAgIHNjcm9sbFdpZHRoICAg
RE9NTm9kZTo6U2Nyb2xsV2lkdGggICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CiAgIHNj
cm9sbEhlaWdodCAgRE9NTm9kZTo6U2Nyb2xsSGVpZ2h0ICAgICAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5CiBAZW5kCkBAIC0zMTQsOSArMzE0LDkgQEANCiAgIGNhc2UgT25Nb3VzZU92ZXI6CiAg
ICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpNT1VTRU9WRVJfRVZFTlQpOwog
ICBjYXNlIE9uTW91c2VVcDoKLSAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudEltcGw6
Ok1PVVNFVVBfRVZFTlQpOyAgICAgIAorICAgIHJldHVybiBnZXRMaXN0ZW5lcihET006OkV2ZW50
SW1wbDo6TU9VU0VVUF9FVkVOVCk7CiAgIGNhc2UgT25Nb3VzZVdoZWVsOgotICAgIHJldHVybiBn
ZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6TU9VU0VXSEVFTF9FVkVOVCk7ICAgICAgCisgICAg
cmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpNT1VTRVdIRUVMX0VWRU5UKTsKICAg
Y2FzZSBPbkJlZm9yZUN1dDoKICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudEltcGw6
OkJFRk9SRUNVVF9FVkVOVCk7CiAgIGNhc2UgT25DdXQ6CkBAIC02MDMsOSArNjAzLDkgQEANCiAg
ICAgRE9NOjpFdmVudExpc3RlbmVyICpsaXN0ZW5lciA9IG5vZGUuaGFuZGxlKCktPmdldEhUTUxF
dmVudExpc3RlbmVyKGV2ZW50SWQpOwogICAgIEpTRXZlbnRMaXN0ZW5lciAqanNMaXN0ZW5lciA9
IHN0YXRpY19jYXN0PEpTRXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKTsKICAgICBpZiAoIGpzTGlz
dGVuZXIgJiYganNMaXN0ZW5lci0+bGlzdGVuZXJPYmpJbXAoKSApCi0JcmV0dXJuIGpzTGlzdGVu
ZXItPmxpc3RlbmVyT2JqKCk7CisgICAgcmV0dXJuIGpzTGlzdGVuZXItPmxpc3RlbmVyT2JqKCk7
CiAgICAgZWxzZQotCXJldHVybiBOdWxsKCk7CisgICAgcmV0dXJuIE51bGwoKTsKIH0KIAogdm9p
ZCBET01Ob2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlICosIFNjb3BlQ2hhaW4g
JikgY29uc3QKQEAgLTY1OCwxMyArNjU4LDEzIEBADQogICAgIGNhc2UgRE9NTm9kZTo6Q29udGFp
bnM6CiAgICAgewogICAgICAgICBpbnQgZXhjZXB0aW9uY29kZT0wOwotCURPTTo6Tm9kZSBvdGhl
ciA9IHRvTm9kZShhcmdzWzBdKTsKLQlpZiAoIW90aGVyLmlzTnVsbCgpICYmIG5vZGUubm9kZVR5
cGUoKT09RE9NOjpOb2RlOjpFTEVNRU5UX05PREUpCi0JewotCSAgICBET006Ok5vZGVCYXNlSW1w
bCAqaW1wbCA9IHN0YXRpY19jYXN0PERPTTo6Tm9kZUJhc2VJbXBsICo+KG5vZGUuaGFuZGxlKCkp
OwotCSAgICBib29sIHJldHZhbCA9ICFpbXBsLT5jaGVja05vT3duZXIob3RoZXIuaGFuZGxlKCks
ZXhjZXB0aW9uY29kZSk7Ci0JICAgIHJldHVybiBCb29sZWFuKHJldHZhbCAmJiBleGNlcHRpb25j
b2RlID09IDApOwotCX0KKyAgICBET006Ok5vZGUgb3RoZXIgPSB0b05vZGUoYXJnc1swXSk7Cisg
ICAgaWYgKCFvdGhlci5pc051bGwoKSAmJiBub2RlLm5vZGVUeXBlKCk9PURPTTo6Tm9kZTo6RUxF
TUVOVF9OT0RFKQorICAgIHsKKyAgICAgICAgRE9NOjpOb2RlQmFzZUltcGwgKmltcGwgPSBzdGF0
aWNfY2FzdDxET006Ok5vZGVCYXNlSW1wbCAqPihub2RlLmhhbmRsZSgpKTsKKyAgICAgICAgYm9v
bCByZXR2YWwgPSAhaW1wbC0+Y2hlY2tOb093bmVyKG90aGVyLmhhbmRsZSgpLGV4Y2VwdGlvbmNv
ZGUpOworICAgICAgICByZXR1cm4gQm9vbGVhbihyZXR2YWwgJiYgZXhjZXB0aW9uY29kZSA9PSAw
KTsKKyAgICB9CiAgICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAgICB9CiAgICAgY2FzZSBE
T01Ob2RlOjpJdGVtOgpAQCAtNzQ5LDggKzc0OSw4IEBADQogICAgIE9iamVjdCBlcnIgPSBFcnJv
cjo6Y3JlYXRlKGV4ZWMsIEdlbmVyYWxFcnJvciwgIkV4Y2VwdGlvbiBmcm9tIERPTU5vZGVMaXN0
Iik7CiAgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGVycik7CiAgICAgRE9NOjpfZXhjZXB0aW9uY29k
ZSA9IDA7Ci0gIH0gIAotI2Vsc2UgICAgIAorICB9CisjZWxzZQogICB0cnkgewogICAgIHZhbCA9
IHRyeUNhbGwoZXhlYywgdGhpc09iaiwgYXJncyk7CiAgIH0KQEAgLTc1OSw3ICs3NTksNyBAQA0K
ICAgICBPYmplY3QgZXJyID0gRXJyb3I6OmNyZWF0ZShleGVjLCBHZW5lcmFsRXJyb3IsICJFeGNl
cHRpb24gZnJvbSBET01Ob2RlTGlzdCIpOwogICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihlcnIpOwog
ICB9Ci0jZW5kaWYgIAorI2VuZGlmCiAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTgwNSwxMCArODA1
LDEwIEBADQogCiAvKiBTb3VyY2UgZm9yIERPTUF0dHJUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJs
ZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NQXR0clRhYmxlIDUKLSAgbmFtZQkJRE9NQXR0
cjo6TmFtZQkJRG9udERlbGV0ZXxSZWFkT25seQotICBzcGVjaWZpZWQJRE9NQXR0cjo6U3BlY2lm
aWVkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgdmFsdWUJCURPTUF0dHI6OlZhbHVlUHJvcGVydHkJ
RG9udERlbGV0ZXxSZWFkT25seQotICBvd25lckVsZW1lbnQJRE9NQXR0cjo6T3duZXJFbGVtZW50
CURvbnREZWxldGV8UmVhZE9ubHkKKyAgbmFtZSAgICAgIERPTUF0dHI6Ok5hbWUgICAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQorICBzcGVjaWZpZWQgRE9NQXR0cjo6U3BlY2lmaWVkICBEb250RGVs
ZXRlfFJlYWRPbmx5CisgIHZhbHVlICAgICBET01BdHRyOjpWYWx1ZVByb3BlcnR5ICBEb250RGVs
ZXRlfFJlYWRPbmx5CisgIG93bmVyRWxlbWVudCAgRE9NQXR0cjo6T3duZXJFbGVtZW50ICAgRG9u
dERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIFZhbHVlIERPTUF0dHI6OnRyeUdldChFeGVjU3Rh
dGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTkwNywx
NCArOTA3LDE0IEBADQogKi8KIAogRE9NRG9jdW1lbnQ6OkRPTURvY3VtZW50KEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgRE9NOjpEb2N1bWVudCAmZCkKLSAgOiBET01Ob2RlKGQpIAoteyAKKyAgOiBE
T01Ob2RlKGQpCit7CiAgIHNldFByb3RvdHlwZShET01Eb2N1bWVudFByb3RvOjpzZWxmKGV4ZWMp
KTsKIH0KIAogRE9NRG9jdW1lbnQ6OkRPTURvY3VtZW50KGNvbnN0IERPTTo6RG9jdW1lbnQgJmQp
Ci0gIDogRE9NTm9kZShkKSAKLXsgCisgIDogRE9NTm9kZShkKQorewogfQogCiBET01Eb2N1bWVu
dDo6fkRPTURvY3VtZW50KCkKQEAgLTEwODgsNyArMTA4OCw3IEBADQogICAgIC8vICJJZiBub3Qg
c3VwcG9ydGVkIFtmb3IgYSBjb21tYW5kIGlkZW50aWZpZXJdLCB0aGlzIG1ldGhvZCByZXR1cm5z
IGEgQm9vbGVhbiBzZXQgdG8gZmFsc2UuIgogICAgIGlmIChjb21tYW5kVmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBCb29sZWFuKGZhbHNlKTsKLSAgICBlbHNlIAorICAgIGVsc2UKICAg
ICAgICAgcmV0dXJuIFN0cmluZyhjb21tYW5kVmFsdWUpOwogICB9CiAgIGRlZmF1bHQ6CkBAIC0x
MTAyLDIxICsxMTAyLDIxIEBADQogCiAvKiBTb3VyY2UgZm9yIERPTUVsZW1lbnRQcm90b1RhYmxl
LiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01FbGVtZW50
UHJvdG9UYWJsZSAxNwotICBnZXRBdHRyaWJ1dGUJCURPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZQlE
b250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgc2V0QXR0cmlidXRlCQlET01FbGVtZW50OjpTZXRBdHRy
aWJ1dGUJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlbW92ZUF0dHJpYnV0ZQlET01FbGVtZW50
OjpSZW1vdmVBdHRyaWJ1dGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGdldEF0dHJpYnV0ZU5v
ZGUJRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTm9kZQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAg
c2V0QXR0cmlidXRlTm9kZQlET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOb2RlCURvbnREZWxldGV8
RnVuY3Rpb24gMgotICByZW1vdmVBdHRyaWJ1dGVOb2RlCURPTUVsZW1lbnQ6OlJlbW92ZUF0dHJp
YnV0ZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGdldEVsZW1lbnRzQnlUYWdOYW1lCURP
TUVsZW1lbnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1lCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBo
YXNBdHRyaWJ1dGUJCURPTUVsZW1lbnQ6Okhhc0F0dHJpYnV0ZQlEb250RGVsZXRlfEZ1bmN0aW9u
IDEKLSAgZ2V0QXR0cmlidXRlTlMJRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTlMJRG9udERlbGV0
ZXxGdW5jdGlvbiAyCi0gIHNldEF0dHJpYnV0ZU5TCURPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZU5T
CURvbnREZWxldGV8RnVuY3Rpb24gMwotICByZW1vdmVBdHRyaWJ1dGVOUwlET01FbGVtZW50OjpS
ZW1vdmVBdHRyaWJ1dGVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgZ2V0QXR0cmlidXRlTm9k
ZU5TCURPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIK
LSAgc2V0QXR0cmlidXRlTm9kZU5TCURPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZU5vZGVOUwlEb250
RGVsZXRlfEZ1bmN0aW9uIDEKLSAgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyBET01FbGVtZW50OjpH
ZXRFbGVtZW50c0J5VGFnTmFtZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBoYXNBdHRyaWJ1
dGVOUwlET01FbGVtZW50OjpIYXNBdHRyaWJ1dGVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAg
Z2V0QXR0cmlidXRlICAgICAgRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlICAgIERvbnREZWxldGV8
RnVuY3Rpb24gMQorICBzZXRBdHRyaWJ1dGUgICAgICBET01FbGVtZW50OjpTZXRBdHRyaWJ1dGUg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHJlbW92ZUF0dHJpYnV0ZSAgIERPTUVsZW1lbnQ6
OlJlbW92ZUF0dHJpYnV0ZSBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0QXR0cmlidXRlTm9k
ZSAgRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTm9kZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEK
KyAgc2V0QXR0cmlidXRlTm9kZSAgRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlTm9kZSAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDIKKyAgcmVtb3ZlQXR0cmlidXRlTm9kZSAgIERPTUVsZW1lbnQ6OlJl
bW92ZUF0dHJpYnV0ZU5vZGUgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGdldEVsZW1lbnRzQnlU
YWdOYW1lICBET01FbGVtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZSAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDEKKyAgaGFzQXR0cmlidXRlICAgICAgRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMQorICBnZXRBdHRyaWJ1dGVOUyAgICBET01FbGVtZW50OjpH
ZXRBdHRyaWJ1dGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHNldEF0dHJpYnV0ZU5TICAg
IERPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgcmVt
b3ZlQXR0cmlidXRlTlMgRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlTlMgICBEb250RGVsZXRl
fEZ1bmN0aW9uIDIKKyAgZ2V0QXR0cmlidXRlTm9kZU5TICAgIERPTUVsZW1lbnQ6OkdldEF0dHJp
YnV0ZU5vZGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHNldEF0dHJpYnV0ZU5vZGVOUyAg
ICBET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOb2RlTlMgIERvbnREZWxldGV8RnVuY3Rpb24gMQor
ICBnZXRFbGVtZW50c0J5VGFnTmFtZU5TIERPTUVsZW1lbnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1l
TlMgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGhhc0F0dHJpYnV0ZU5TICAgIERPTUVsZW1lbnQ6
Okhhc0F0dHJpYnV0ZU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKICAgc2Nyb2xsSW50b1ZpZXcg
ICAgICAgIERPTUVsZW1lbnQ6OlNjcm9sbEludG9WaWV3ICAgICAgRG9udERlbGV0ZXxGdW5jdGlv
biAxCiAgIGZvY3VzICAgICAgICAgICAgICAgICBET01FbGVtZW50OjpFbGVtZW50Rm9jdXMgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMAogICBibHVyICAgICAgICAgICAgICAgICAgRE9NRWxl
bWVudDo6RWxlbWVudEJsdXIgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKQEAgLTExMzQs
MTkgKzExMzQsMTkgQEANCiBjb25zdCBDbGFzc0luZm8gRE9NRWxlbWVudDo6aW5mbyA9IHsgIkVs
ZW1lbnQiLCAmRE9NTm9kZTo6aW5mbywgJkRPTUVsZW1lbnRUYWJsZSwgMCB9OwogLyogU291cmNl
IGZvciBET01FbGVtZW50VGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRl
LgogQGJlZ2luIERPTUVsZW1lbnRUYWJsZSAzCi0gIHRhZ05hbWUJRE9NRWxlbWVudDo6VGFnTmFt
ZSAgICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHN0eWxlCQlE
T01FbGVtZW50OjpTdHlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkKKyAgdGFnTmFtZSAgIERPTUVsZW1lbnQ6OlRhZ05hbWUgICAgICAgICAgICAgICAgICAg
ICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBzdHlsZSAgICAgRE9NRWxlbWVudDo6U3R5bGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwog
RE9NRWxlbWVudDo6RE9NRWxlbWVudChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6RWxlbWVu
dCAmZSkKLSAgOiBET01Ob2RlKGUpIAorICA6IERPTU5vZGUoZSkKIHsKICAgc2V0UHJvdG90eXBl
KERPTUVsZW1lbnRQcm90bzo6c2VsZihleGVjKSk7CiB9CiAKIERPTUVsZW1lbnQ6OkRPTUVsZW1l
bnQoY29uc3QgRE9NOjpFbGVtZW50ICZlKQotICA6IERPTU5vZGUoZSkgCi17IAorICA6IERPTU5v
ZGUoZSkKK3sKIH0KIAogVmFsdWUgRE9NRWxlbWVudDo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMTIzMSw3ICsxMjMxLDcg
QEANCiAgICAgICByZXR1cm4gZ2V0RE9NTm9kZUxpc3QoZXhlYyxlbGVtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lTlMoYXJnc1swXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSxhcmdzWzFdLnRvU3Ry
aW5nKGV4ZWMpLnN0cmluZygpKSk7CiAgICAgY2FzZSBET01FbGVtZW50OjpIYXNBdHRyaWJ1dGVO
UzogLy8gRE9NMgogICAgICAgcmV0dXJuIEJvb2xlYW4oZWxlbWVudC5oYXNBdHRyaWJ1dGVOUyhh
cmdzWzBdLnRvU3RyaW5nKGV4ZWMpLnN0cmluZygpLGFyZ3NbMV0udG9TdHJpbmcoZXhlYykuc3Ry
aW5nKCkpKTsKLSAgICBjYXNlIERPTUVsZW1lbnQ6OlNjcm9sbEludG9WaWV3OiAKKyAgICBjYXNl
IERPTUVsZW1lbnQ6OlNjcm9sbEludG9WaWV3OgogICAgICAgKGFyZ3NbMF0udHlwZSgpICE9IFVu
ZGVmaW5lZFR5cGUgJiYgYXJnc1swXS50eXBlKCkgIT0gTnVsbFR5cGUpID8gZWxlbWVudC5zY3Jv
bGxJbnRvVmlldyhhcmdzWzBdLnRvQm9vbGVhbihleGVjKSkgOiBlbGVtZW50LnNjcm9sbEludG9W
aWV3KHRydWUpOwogICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwogICAgIGNhc2UgRE9NRWxlbWVu
dDo6U2Nyb2xsQnlMaW5lczoKQEAgLTEyNDAsNyArMTI0MCw3IEBADQogICAgICAgICBET006OkRv
Y3VtZW50SW1wbCogZG9jaW1wbCA9IG5vZGUuaGFuZGxlKCktPmdldERvY3VtZW50KCk7CiAgICAg
ICAgIGlmIChkb2NpbXBsKSB7CiAgICAgICAgICAgICBkb2NpbXBsLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICAgICAgfSAgICAgICAgICAgIAorICAgICAgICB9
CiAgICAgICAgIGtodG1sOjpSZW5kZXJPYmplY3QgKnJlbmQgPSBub2RlLmhhbmRsZSgpID8gbm9k
ZS5oYW5kbGUoKS0+cmVuZGVyZXIoKSA6IDBMOwogICAgICAgICBpZiAocmVuZCAmJiByZW5kLT5o
YXNPdmVyZmxvd0NsaXAoKSkgewogICAgICAgICAgICAgS1dRU2Nyb2xsRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEtXUVNjcm9sbERvd247CkBAIC0xMjUzLDcgKzEyNTMsNyBAQA0KICAgICAgICAgICAg
IHJlbmQtPmxheWVyKCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVy
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7Ci0gICAgICAgIAorCiAg
ICAgfQogICAgIGNhc2UgRE9NRWxlbWVudDo6RWxlbWVudEZvY3VzOgogICAgICAgICBlbGVtZW50
LmZvY3VzKCk7CkBAIC0xMjcwLDExICsxMjcwLDExIEBADQogCiAvKiBTb3VyY2UgZm9yIERPTURP
TUltcGxlbWVudGF0aW9uUHJvdG9UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2Vu
ZXJhdGUuCiBAYmVnaW4gRE9NRE9NSW1wbGVtZW50YXRpb25Qcm90b1RhYmxlIDUKLSAgaGFzRmVh
dHVyZQkJRE9NRE9NSW1wbGVtZW50YXRpb246Okhhc0ZlYXR1cmUJCURvbnREZWxldGV8RnVuY3Rp
b24gMgorICBoYXNGZWF0dXJlICAgICAgICBET01ET01JbXBsZW1lbnRhdGlvbjo6SGFzRmVhdHVy
ZSAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiAjIERPTTIKLSAgY3JlYXRlQ1NTU3R5bGVT
aGVldAlET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlQ1NTU3R5bGVTaGVldAlEb250RGVsZXRl
fEZ1bmN0aW9uIDIKLSAgY3JlYXRlRG9jdW1lbnRUeXBlCURPTURPTUltcGxlbWVudGF0aW9uOjpD
cmVhdGVEb2N1bWVudFR5cGUJRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIGNyZWF0ZURvY3VtZW50
CURPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVEb2N1bWVudAkJRG9udERlbGV0ZXxGdW5jdGlv
biAzCisgIGNyZWF0ZUNTU1N0eWxlU2hlZXQgICBET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRl
Q1NTU3R5bGVTaGVldCAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBjcmVhdGVEb2N1bWVudFR5
cGUgICAgRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZURvY3VtZW50VHlwZSAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDMKKyAgY3JlYXRlRG9jdW1lbnQgICAgRE9NRE9NSW1wbGVtZW50YXRpb246
OkNyZWF0ZURvY3VtZW50ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKICAgY3JlYXRlSFRN
TERvY3VtZW50ICAgIERPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVIVE1MRG9jdW1lbnQgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogQGVuZAogKi8KQEAgLTEyODUsOCArMTI4NSw4IEBA
DQogY29uc3QgQ2xhc3NJbmZvIERPTURPTUltcGxlbWVudGF0aW9uOjppbmZvID0geyAiRE9NSW1w
bGVtZW50YXRpb24iLCAwLCAwLCAwIH07CiAKIERPTURPTUltcGxlbWVudGF0aW9uOjpET01ET01J
bXBsZW1lbnRhdGlvbihFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6RE9NSW1wbGVtZW50YXRp
b24gJmkpCi0gIDogaW1wbGVtZW50YXRpb24oaSkgCi17IAorICA6IGltcGxlbWVudGF0aW9uKGkp
Cit7CiAgIHNldFByb3RvdHlwZShET01ET01JbXBsZW1lbnRhdGlvblByb3RvOjpzZWxmKGV4ZWMp
KTsKIH0KIApAQCAtMTMyOCwxMyArMTMyOCwxMyBAQA0KIAogLyogU291cmNlIGZvciBET01Eb2N1
bWVudFR5cGVUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVn
aW4gRE9NRG9jdW1lbnRUeXBlVGFibGUgNgotICBuYW1lCQkJRE9NRG9jdW1lbnRUeXBlOjpOYW1l
CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGVudGl0aWVzCQlET01Eb2N1bWVudFR5cGU6OkVudGl0
aWVzCURvbnREZWxldGV8UmVhZE9ubHkKLSAgbm90YXRpb25zCQlET01Eb2N1bWVudFR5cGU6Ok5v
dGF0aW9ucwlEb250RGVsZXRlfFJlYWRPbmx5CisgIG5hbWUgICAgICAgICAgRE9NRG9jdW1lbnRU
eXBlOjpOYW1lICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgZW50aXRpZXMgICAgICBET01E
b2N1bWVudFR5cGU6OkVudGl0aWVzICAgRG9udERlbGV0ZXxSZWFkT25seQorICBub3RhdGlvbnMg
ICAgIERPTURvY3VtZW50VHlwZTo6Tm90YXRpb25zICBEb250RGVsZXRlfFJlYWRPbmx5CiAjIERP
TTIKLSAgcHVibGljSWQJCURPTURvY3VtZW50VHlwZTo6UHVibGljSWQJRG9udERlbGV0ZXxSZWFk
T25seQotICBzeXN0ZW1JZAkJRE9NRG9jdW1lbnRUeXBlOjpTeXN0ZW1JZAlEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIGludGVybmFsU3Vic2V0CURPTURvY3VtZW50VHlwZTo6SW50ZXJuYWxTdWJzZXQJ
RG9udERlbGV0ZXxSZWFkT25seQorICBwdWJsaWNJZCAgICAgIERPTURvY3VtZW50VHlwZTo6UHVi
bGljSWQgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHN5c3RlbUlkICAgICAgRE9NRG9jdW1lbnRU
eXBlOjpTeXN0ZW1JZCAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgaW50ZXJuYWxTdWJzZXQgICAg
RE9NRG9jdW1lbnRUeXBlOjpJbnRlcm5hbFN1YnNldCBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5k
CiAqLwogRE9NRG9jdW1lbnRUeXBlOjpET01Eb2N1bWVudFR5cGUoRXhlY1N0YXRlICpleGVjLCBj
b25zdCBET006OkRvY3VtZW50VHlwZSAmZHQpCkBAIC0xMzcxLDE0ICsxMzcxLDE0IEBADQogCiAv
KiBTb3VyY2UgZm9yIERPTU5hbWVkTm9kZU1hcFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFi
bGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTU5hbWVkTm9kZU1hcFByb3RvVGFibGUgNwot
ICBnZXROYW1lZEl0ZW0JCURPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJdGVtCQlEb250RGVsZXRl
fEZ1bmN0aW9uIDEKLSAgc2V0TmFtZWRJdGVtCQlET01OYW1lZE5vZGVNYXA6OlNldE5hbWVkSXRl
bQkJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHJlbW92ZU5hbWVkSXRlbQlET01OYW1lZE5vZGVN
YXA6OlJlbW92ZU5hbWVkSXRlbQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgaXRlbQkJCURPTU5h
bWVkTm9kZU1hcDo6SXRlbQkJCURvbnREZWxldGV8RnVuY3Rpb24gMQorICBnZXROYW1lZEl0ZW0g
ICAgICBET01OYW1lZE5vZGVNYXA6OkdldE5hbWVkSXRlbSAgICAgICBEb250RGVsZXRlfEZ1bmN0
aW9uIDEKKyAgc2V0TmFtZWRJdGVtICAgICAgRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW0g
ICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHJlbW92ZU5hbWVkSXRlbSAgIERPTU5hbWVk
Tm9kZU1hcDo6UmVtb3ZlTmFtZWRJdGVtICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBpdGVt
ICAgICAgICAgIERPTU5hbWVkTm9kZU1hcDo6SXRlbSAgICAgICAgICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAxCiAjIERPTTIKLSAgZ2V0TmFtZWRJdGVtTlMJRE9NTmFtZWROb2RlTWFwOjpHZXROYW1l
ZEl0ZW1OUwkJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHNldE5hbWVkSXRlbU5TCURPTU5hbWVk
Tm9kZU1hcDo6U2V0TmFtZWRJdGVtTlMJCURvbnREZWxldGV8RnVuY3Rpb24gMQotICByZW1vdmVO
YW1lZEl0ZW1OUwlET01OYW1lZE5vZGVNYXA6OlJlbW92ZU5hbWVkSXRlbU5TCURvbnREZWxldGV8
RnVuY3Rpb24gMgorICBnZXROYW1lZEl0ZW1OUyAgICBET01OYW1lZE5vZGVNYXA6OkdldE5hbWVk
SXRlbU5TICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgc2V0TmFtZWRJdGVtTlMgICAgRE9N
TmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW1OUyAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisg
IHJlbW92ZU5hbWVkSXRlbU5TIERPTU5hbWVkTm9kZU1hcDo6UmVtb3ZlTmFtZWRJdGVtTlMgIERv
bnREZWxldGV8RnVuY3Rpb24gMgogQGVuZAogKi8KIERFRklORV9QUk9UT1RZUEUoIk5hbWVkTm9k
ZU1hcCIsIERPTU5hbWVkTm9kZU1hcFByb3RvKQpAQCAtMTM4OCw4ICsxMzg4LDggQEANCiBjb25z
dCBDbGFzc0luZm8gRE9NTmFtZWROb2RlTWFwOjppbmZvID0geyAiTmFtZWROb2RlTWFwIiwgMCwg
MCwgMCB9OwogCiBET01OYW1lZE5vZGVNYXA6OkRPTU5hbWVkTm9kZU1hcChFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IERPTTo6TmFtZWROb2RlTWFwICZtKQotICA6IG1hcChtKSAKLXsgCisgIDogbWFw
KG0pCit7CiAgIHNldFByb3RvdHlwZShET01OYW1lZE5vZGVNYXBQcm90bzo6c2VsZihleGVjKSk7
CiB9CiAKQEAgLTE0NTksOSArMTQ1OSw5IEBADQogCiAvKiBTb3VyY2UgZm9yIERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvblRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4K
IEBiZWdpbiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYWJsZSAzCi0gIHRhcmdldAlET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OlRhcmdldAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGRhdGEJCURP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6RGF0YQkJRG9udERlbGV0ZQotICBzaGVldAkJRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjpTaGVldAkJRG9udERlbGV0ZXxSZWFkT25seQorICB0YXJnZXQg
ICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpUYXJnZXQgICAgRG9udERlbGV0ZXxSZWFkT25s
eQorICBkYXRhICAgICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpEYXRhICAgICAgRG9udERl
bGV0ZQorICBzaGVldCAgICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpTaGVldCAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIFZhbHVlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1l
KSBjb25zdApAQCAtMTQ5OSw4ICsxNDk5LDggQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NTm90YXRp
b25UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9N
Tm90YXRpb25UYWJsZSAyCi0gIHB1YmxpY0lkCQlET01Ob3RhdGlvbjo6UHVibGljSWQJRG9udERl
bGV0ZXxSZWFkT25seQotICBzeXN0ZW1JZAkJRE9NTm90YXRpb246OlN5c3RlbUlkCURvbnREZWxl
dGV8UmVhZE9ubHkKKyAgcHVibGljSWQgICAgICBET01Ob3RhdGlvbjo6UHVibGljSWQgICBEb250
RGVsZXRlfFJlYWRPbmx5CisgIHN5c3RlbUlkICAgICAgRE9NTm90YXRpb246OlN5c3RlbUlkICAg
RG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIFZhbHVlIERPTU5vdGF0aW9uOjp0cnlHZXQo
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBA
IC0xNTI3LDkgKzE1MjcsOSBAQA0KIAogLyogU291cmNlIGZvciBET01FbnRpdHlUYWJsZS4gVXNl
ICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRW50aXR5VGFibGUg
MgotICBwdWJsaWNJZAkJRE9NRW50aXR5OjpQdWJsaWNJZAkJRG9udERlbGV0ZXxSZWFkT25seQot
ICBzeXN0ZW1JZAkJRE9NRW50aXR5OjpTeXN0ZW1JZAkJRG9udERlbGV0ZXxSZWFkT25seQotICBu
b3RhdGlvbk5hbWUJCURPTUVudGl0eTo6Tm90YXRpb25OYW1lCURvbnREZWxldGV8UmVhZE9ubHkK
KyAgcHVibGljSWQgICAgICBET01FbnRpdHk6OlB1YmxpY0lkICAgICBEb250RGVsZXRlfFJlYWRP
bmx5CisgIHN5c3RlbUlkICAgICAgRE9NRW50aXR5OjpTeXN0ZW1JZCAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQorICBub3RhdGlvbk5hbWUgICAgICBET01FbnRpdHk6Ok5vdGF0aW9uTmFtZSBEb250
RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwogVmFsdWUgRE9NRW50aXR5Ojp0cnlHZXQoRXhlY1N0
YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0xNTY4
LDcgKzE1NjgsNyBAQA0KICAgICByZXQgPSBuZXcgRE9NRG9jdW1lbnQoZXhlYywgbik7CiAKICAg
VmFsdWUgdmFsKHJldCk7Ci0gIAorCiAgIC8vIE1ha2Ugc3VyZSB0aGUgZG9jdW1lbnQgaXMga2Vw
dCBhcm91bmQgYnkgdGhlIHdpbmRvdyBvYmplY3QsIGFuZCB3b3JrcyByaWdodCB3aXRoIHRoZQog
ICAvLyBiYWNrL2ZvcndhcmQgY2FjaGUuCiAgIGlmIChuLnZpZXcoKSkgewpAQCAtMTU4Myw3ICsx
NTgzLDcgQEANCiAKIGJvb2wgS0pTOjpjaGVja05vZGVTZWN1cml0eShFeGVjU3RhdGUgKmV4ZWMs
IGNvbnN0IERPTTo6Tm9kZSYgbikKIHsKLSAgaWYgKCFuLmhhbmRsZSgpKSAKKyAgaWYgKCFuLmhh
bmRsZSgpKQogICAgIHJldHVybiBmYWxzZTsKIAogICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGN1
cnJlbnRseSBleGVjdXRpbmcgaW50ZXJwcmV0ZXIgaXMgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHNw
ZWNpZmllZCBub2RlCkBAIC0xNjYwLDEzICsxNjYwLDEyIEBADQogCiBWYWx1ZSBLSlM6OmdldFJ1
bnRpbWVPYmplY3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006Ok5vZGUgJm5vZGUpCiB7Ci0j
aWYgIU5PS0lBX0NIQU5HRVMgIAogICAgIERPTTo6SFRNTEVsZW1lbnQgZWxlbWVudCA9IHN0YXRp
Y19jYXN0PERPTTo6SFRNTEVsZW1lbnQ+KG5vZGUpOwogCiAgICAgaWYgKCFub2RlLmlzTnVsbCgp
KSB7CiAgICAgICAgIGlmIChub2RlLmhhbmRsZSgpLT5pZCgpID09IElEX0FQUExFVCkgewogICAg
ICAgICAgICAgRE9NOjpIVE1MQXBwbGV0RWxlbWVudEltcGwgKmFwcGxldEVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxET006OkhUTUxBcHBsZXRFbGVtZW50SW1wbCAqPihlbGVtZW50LmhhbmRsZSgpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXBwbGV0RWxlbWVudC0+Z2V0QXBwbGV0
SW5zdGFuY2UoKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBpbnN0YW5jZSBpcyBvd25lZCBi
eSB0aGUgYXBwbGV0IGVsZW1lbnQuCiAgICAgICAgICAgICAgICAgUnVudGltZU9iamVjdEltcCAq
YXBwbGV0SW1wID0gbmV3IFJ1bnRpbWVPYmplY3RJbXAoYXBwbGV0RWxlbWVudC0+Z2V0QXBwbGV0
SW5zdGFuY2UoKSwgZmFsc2UpOwpAQCAtMTY3NSw3ICsxNjc0LDcgQEANCiAgICAgICAgIH0KICAg
ICAgICAgZWxzZSBpZiAobm9kZS5oYW5kbGUoKS0+aWQoKSA9PSBJRF9FTUJFRCkgewogICAgICAg
ICAgICAgRE9NOjpIVE1MRW1iZWRFbGVtZW50SW1wbCAqZW1iZWRFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RE9NOjpIVE1MRW1iZWRFbGVtZW50SW1wbCAqPihlbGVtZW50LmhhbmRsZSgpKTsKLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICBpZiAoZW1iZWRFbGVtZW50LT5nZXRFbWJlZEluc3RhbmNl
KCkpIHsKICAgICAgICAgICAgICAgICBSdW50aW1lT2JqZWN0SW1wICpydW50aW1lSW1wID0gbmV3
IFJ1bnRpbWVPYmplY3RJbXAoZW1iZWRFbGVtZW50LT5nZXRFbWJlZEluc3RhbmNlKCksIGZhbHNl
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gVmFsdWUocnVudGltZUltcCk7CkBAIC0xNjgzLDE0
ICsxNjgyLDEzIEBADQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFuZGxlKCkt
PmlkKCkgPT0gSURfT0JKRUNUKSB7CiAgICAgICAgICAgICBET006OkhUTUxPYmplY3RFbGVtZW50
SW1wbCAqb2JqZWN0RWxlbWVudCA9IHN0YXRpY19jYXN0PERPTTo6SFRNTE9iamVjdEVsZW1lbnRJ
bXBsICo+KGVsZW1lbnQuaGFuZGxlKCkpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlm
IChvYmplY3RFbGVtZW50LT5nZXRPYmplY3RJbnN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAg
UnVudGltZU9iamVjdEltcCAqcnVudGltZUltcCA9IG5ldyBSdW50aW1lT2JqZWN0SW1wKG9iamVj
dEVsZW1lbnQtPmdldE9iamVjdEluc3RhbmNlKCksIGZhbHNlKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gVmFsdWUocnVudGltZUltcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
Ci0jZW5kaWYgICAgCiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHJ1bnRpbWUgb2JqZWN0IHJl
dHVybiB0aGUgYSBWYWx1ZSB0aGF0IHJlcG9ydHMgaXNOdWxsKCkgPT0gdHJ1ZS4KICAgICByZXR1
cm4gVmFsdWUoKTsKIH0KQEAgLTE3MTAsMTggKzE3MDgsMTggQEANCiBjb25zdCBDbGFzc0luZm8g
Tm9kZUNvbnN0cnVjdG9yOjppbmZvID0geyAiTm9kZUNvbnN0cnVjdG9yIiwgMCwgJk5vZGVDb25z
dHJ1Y3RvclRhYmxlLCAwIH07CiAvKiBTb3VyY2UgZm9yIE5vZGVDb25zdHJ1Y3RvclRhYmxlLiBV
c2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBOb2RlQ29uc3RydWN0
b3JUYWJsZSAxMQotICBFTEVNRU5UX05PREUJCURPTTo6Tm9kZTo6RUxFTUVOVF9OT0RFCQlEb250
RGVsZXRlfFJlYWRPbmx5Ci0gIEFUVFJJQlVURV9OT0RFCURPTTo6Tm9kZTo6QVRUUklCVVRFX05P
REUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgVEVYVF9OT0RFCQlET006Ok5vZGU6OlRFWFRfTk9E
RQkJRG9udERlbGV0ZXxSZWFkT25seQotICBDREFUQV9TRUNUSU9OX05PREUJRE9NOjpOb2RlOjpD
REFUQV9TRUNUSU9OX05PREUJRG9udERlbGV0ZXxSZWFkT25seQotICBFTlRJVFlfUkVGRVJFTkNF
X05PREUJRE9NOjpOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREUJRG9udERlbGV0ZXxSZWFkT25s
eQotICBFTlRJVFlfTk9ERQkJRE9NOjpOb2RlOjpFTlRJVFlfTk9ERQkJRG9udERlbGV0ZXxSZWFk
T25seQorICBFTEVNRU5UX05PREUgICAgICBET006Ok5vZGU6OkVMRU1FTlRfTk9ERSAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQorICBBVFRSSUJVVEVfTk9ERSAgICBET006Ok5vZGU6OkFUVFJJQlVU
RV9OT0RFICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgVEVYVF9OT0RFICAgICBET006Ok5v
ZGU6OlRFWFRfTk9ERSAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBDREFUQV9TRUNUSU9O
X05PREUgICAgRE9NOjpOb2RlOjpDREFUQV9TRUNUSU9OX05PREUgICBEb250RGVsZXRlfFJlYWRP
bmx5CisgIEVOVElUWV9SRUZFUkVOQ0VfTk9ERSBET006Ok5vZGU6OkVOVElUWV9SRUZFUkVOQ0Vf
Tk9ERSAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIEVOVElUWV9OT0RFICAgICAgIERPTTo6Tm9k
ZTo6RU5USVRZX05PREUgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CiAgIFBST0NFU1NJTkdfSU5T
VFJVQ1RJT05fTk9ERSBET006Ok5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSBEb250
RGVsZXRlfFJlYWRPbmx5Ci0gIENPTU1FTlRfTk9ERQkJRE9NOjpOb2RlOjpDT01NRU5UX05PREUJ
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgRE9DVU1FTlRfTk9ERQkJRE9NOjpOb2RlOjpET0NVTUVO
VF9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIERPQ1VNRU5UX1RZUEVfTk9ERQlET006Ok5v
ZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIERPQ1VNRU5UX0ZS
QUdNRU5UX05PREUgRE9NOjpOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFCURvbnREZWxldGV8
UmVhZE9ubHkKLSAgTk9UQVRJT05fTk9ERQkJRE9NOjpOb2RlOjpOT1RBVElPTl9OT0RFCQlEb250
RGVsZXRlfFJlYWRPbmx5CisgIENPTU1FTlRfTk9ERSAgICAgIERPTTo6Tm9kZTo6Q09NTUVOVF9O
T0RFICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIERPQ1VNRU5UX05PREUgICAgIERPTTo6Tm9k
ZTo6RE9DVU1FTlRfTk9ERSAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBET0NVTUVOVF9U
WVBFX05PREUgICAgRE9NOjpOb2RlOjpET0NVTUVOVF9UWVBFX05PREUgICBEb250RGVsZXRlfFJl
YWRPbmx5CisgIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgRE9NOjpOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFICBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5PVEFUSU9OX05PREUgICAgIERPTTo6
Tm9kZTo6Tk9UQVRJT05fTk9ERSAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8K
IFZhbHVlIE5vZGVDb25zdHJ1Y3Rvcjo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRl
bnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMTc3NywyMSArMTc3NSwyMSBAQA0KIAog
LyogU291cmNlIGZvciBET01FeGNlcHRpb25Db25zdHJ1Y3RvclRhYmxlLiBVc2UgIm1ha2UgaGFz
aHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01FeGNlcHRpb25Db25zdHJ1Y3RvclRh
YmxlIDE1Ci0gIElOREVYX1NJWkVfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9F
UlIJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgRE9NU1RSSU5HX1NJWkVfRVJSCQlET006OkRPTUV4
Y2VwdGlvbjo6RE9NU1RSSU5HX1NJWkVfRVJSCURvbnREZWxldGV8UmVhZE9ubHkKLSAgSElFUkFS
Q0hZX1JFUVVFU1RfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6SElFUkFSQ0hZX1JFUVVFU1RfRVJS
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgV1JPTkdfRE9DVU1FTlRfRVJSCQlET006OkRPTUV4Y2Vw
dGlvbjo6V1JPTkdfRE9DVU1FTlRfRVJSCURvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9D
SEFSQUNURVJfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9DSEFSQUNURVJfRVJSCURv
bnREZWxldGV8UmVhZE9ubHkKLSAgTk9fREFUQV9BTExPV0VEX0VSUgkJRE9NOjpET01FeGNlcHRp
b246Ok5PX0RBVEFfQUxMT1dFRF9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBOT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlIJRE9NOjpET01FeGNlcHRpb246Ok5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIE5PVF9GT1VORF9FUlIJCQlET006OkRPTUV4
Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQotICBOT1RfU1VQUE9S
VEVEX0VSUgkJRE9NOjpET01FeGNlcHRpb246Ok5PVF9TVVBQT1JURURfRVJSCURvbnREZWxldGV8
UmVhZE9ubHkKLSAgSU5VU0VfQVRUUklCVVRFX0VSUgkJRE9NOjpET01FeGNlcHRpb246OklOVVNF
X0FUVFJJQlVURV9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBJTlZBTElEX1NUQVRFX0VSUgkJ
RE9NOjpET01FeGNlcHRpb246OklOVkFMSURfU1RBVEVfRVJSCURvbnREZWxldGV8UmVhZE9ubHkK
LSAgU1lOVEFYX0VSUgkJCURPTTo6RE9NRXhjZXB0aW9uOjpTWU5UQVhfRVJSCQlEb250RGVsZXRl
fFJlYWRPbmx5Ci0gIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUglET006OkRPTUV4Y2VwdGlvbjo6
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSCURvbnREZWxldGV8UmVhZE9ubHkKLSAgTkFNRVNQQUNF
X0VSUgkJCURPTTo6RE9NRXhjZXB0aW9uOjpOQU1FU1BBQ0VfRVJSCQlEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIElOVkFMSURfQUNDRVNTX0VSUgkJRE9NOjpET01FeGNlcHRpb246OklOVkFMSURfQUND
RVNTX0VSUglEb250RGVsZXRlfFJlYWRPbmx5CisgIElOREVYX1NJWkVfRVJSICAgICAgICBET006
OkRPTUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlIgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQor
ICBET01TVFJJTkdfU0laRV9FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpET01TVFJJTkdf
U0laRV9FUlIgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiAg
ICAgRE9NOjpET01FeGNlcHRpb246OkhJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICBEb250RGVsZXRl
fFJlYWRPbmx5CisgIFdST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgRE9NOjpET01FeGNlcHRpb246
OldST05HX0RPQ1VNRU5UX0VSUiAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgSU5WQUxJRF9DSEFS
QUNURVJfRVJSICAgICBET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9DSEFSQUNURVJfRVJSICAg
IERvbnREZWxldGV8UmVhZE9ubHkKKyAgTk9fREFUQV9BTExPV0VEX0VSUiAgICAgICBET006OkRP
TUV4Y2VwdGlvbjo6Tk9fREFUQV9BTExPV0VEX0VSUiAgRG9udERlbGV0ZXxSZWFkT25seQorICBO
T19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgICBET006OkRPTUV4Y2VwdGlvbjo6Tk9fTU9ESUZJ
Q0FUSU9OX0FMTE9XRURfRVJSICBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5PVF9GT1VORF9FUlIg
ICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiAgICAgICAgRG9udERlbGV0
ZXxSZWFkT25seQorICBOT1RfU1VQUE9SVEVEX0VSUiAgICAgRE9NOjpET01FeGNlcHRpb246Ok5P
VF9TVVBQT1JURURfRVJSICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgSU5VU0VfQVRUUklCVVRF
X0VSUiAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6SU5VU0VfQVRUUklCVVRFX0VSUiAgRG9udERl
bGV0ZXxSZWFkT25seQorICBJTlZBTElEX1NUQVRFX0VSUiAgICAgRE9NOjpET01FeGNlcHRpb246
OklOVkFMSURfU1RBVEVfRVJSICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgU1lOVEFYX0VSUiAg
ICAgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpTWU5UQVhfRVJSICAgICAgIERvbnREZWxldGV8
UmVhZE9ubHkKKyAgSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICBET006OkRPTUV4Y2VwdGlvbjo6
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIERvbnREZWxldGV8UmVhZE9ubHkKKyAgTkFNRVNQQUNF
X0VSUiAgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOQU1FU1BBQ0VfRVJSICAgICAgICBEb250
RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgRE9NOjpET01FeGNl
cHRpb246OklOVkFMSURfQUNDRVNTX0VSUiAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICov
CiAKQEAgLTE4NzgsMTYgKzE4NzYsMTYgQEANCiAgICAgICBET006Ok5vZGUgbm9kZSA9ICppdDsK
ICAgICAgIERPTTo6TmFtZWROb2RlTWFwIGF0dHJpYnV0ZXMgPSBub2RlLmF0dHJpYnV0ZXMoKTsK
ICAgICAgIGlmIChhdHRyaWJ1dGVzLmlzTnVsbCgpKSB7Ci0JY29udGludWU7CisgICAgY29udGlu
dWU7CiAgICAgICB9CiAKICAgICAgIERPTTo6Tm9kZSBpZEF0dHIgPSBhdHRyaWJ1dGVzLmdldE5h
bWVkSXRlbSgiaWQiKTsKICAgICAgIGlmIChpZEF0dHIuaXNOdWxsKCkpIHsKLQljb250aW51ZTsK
KyAgICBjb250aW51ZTsKICAgICAgIH0KIAogICAgICAgaWYgKGlkQXR0ci5ub2RlVmFsdWUoKSA9
PSBwcm9wZXJ0eU5hbWUuc3RyaW5nKCkpIHsKLQlyZXR1cm4gZ2V0RE9NTm9kZShleGVjLG5vZGUp
OworICAgIHJldHVybiBnZXRET01Ob2RlKGV4ZWMsbm9kZSk7CiAgICAgICB9CiAgICAgfQogICB9
CkBAIC0xODk4LDE4ICsxODk2LDE4IEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjb25zdCBD
bGFzc0luZm8gRE9NQ2hhcmFjdGVyRGF0YTo6aW5mbyA9IHsgIkNoYXJhY3RlckltcCIsCi0JCQkJ
CSAgJkRPTU5vZGU6OmluZm8sICZET01DaGFyYWN0ZXJEYXRhVGFibGUsIDAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgICAmRE9NTm9kZTo6aW5mbywgJkRPTUNoYXJhY3RlckRhdGFUYWJsZSwgMCB9
OwogLyoKIEBiZWdpbiBET01DaGFyYWN0ZXJEYXRhVGFibGUgMgotICBkYXRhCQlET01DaGFyYWN0
ZXJEYXRhOjpEYXRhCQlEb250RGVsZXRlCi0gIGxlbmd0aAlET01DaGFyYWN0ZXJEYXRhOjpMZW5n
dGgJRG9udERlbGV0ZXxSZWFkT25seQorICBkYXRhICAgICAgRE9NQ2hhcmFjdGVyRGF0YTo6RGF0
YSAgICAgIERvbnREZWxldGUKKyAgbGVuZ3RoICAgIERPTUNoYXJhY3RlckRhdGE6Okxlbmd0aCAg
ICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiBAYmVnaW4gRE9NQ2hhcmFjdGVyRGF0YVByb3Rv
VGFibGUgNwotICBzdWJzdHJpbmdEYXRhCURPTUNoYXJhY3RlckRhdGE6OlN1YnN0cmluZ0RhdGEJ
RG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGFwcGVuZERhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6QXBw
ZW5kRGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgaW5zZXJ0RGF0YQlET01DaGFyYWN0ZXJE
YXRhOjpJbnNlcnREYXRhCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBkZWxldGVEYXRhCURPTUNo
YXJhY3RlckRhdGE6OkRlbGV0ZURhdGEJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlcGxhY2VE
YXRhCURPTUNoYXJhY3RlckRhdGE6OlJlcGxhY2VEYXRhCURvbnREZWxldGV8RnVuY3Rpb24gMgor
ICBzdWJzdHJpbmdEYXRhIERPTUNoYXJhY3RlckRhdGE6OlN1YnN0cmluZ0RhdGEgRG9udERlbGV0
ZXxGdW5jdGlvbiAyCisgIGFwcGVuZERhdGEgICAgRE9NQ2hhcmFjdGVyRGF0YTo6QXBwZW5kRGF0
YSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgaW5zZXJ0RGF0YSAgICBET01DaGFyYWN0ZXJE
YXRhOjpJbnNlcnREYXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBkZWxldGVEYXRhICAg
IERPTUNoYXJhY3RlckRhdGE6OkRlbGV0ZURhdGEgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisg
IHJlcGxhY2VEYXRhICAgRE9NQ2hhcmFjdGVyRGF0YTo6UmVwbGFjZURhdGEgICBEb250RGVsZXRl
fEZ1bmN0aW9uIDIKIEBlbmQKICovCiBERUZJTkVfUFJPVE9UWVBFKCJET01DaGFyYWN0ZXJEYXRh
IixET01DaGFyYWN0ZXJEYXRhUHJvdG8pCkBAIC0xOTE3LDEzICsxOTE1LDEzIEBADQogSU1QTEVN
RU5UX1BST1RPVFlQRV9XSVRIX1BBUkVOVChET01DaGFyYWN0ZXJEYXRhUHJvdG8sRE9NQ2hhcmFj
dGVyRGF0YVByb3RvRnVuYywgRE9NTm9kZVByb3RvKQogCiBET01DaGFyYWN0ZXJEYXRhOjpET01D
aGFyYWN0ZXJEYXRhKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpDaGFyYWN0ZXJEYXRhICZk
KQotIDogRE9NTm9kZShkKSAKKyA6IERPTU5vZGUoZCkKIHsKICAgc2V0UHJvdG90eXBlKERPTUNo
YXJhY3RlckRhdGFQcm90bzo6c2VsZihleGVjKSk7CiB9CiAKIERPTUNoYXJhY3RlckRhdGE6OkRP
TUNoYXJhY3RlckRhdGEoY29uc3QgRE9NOjpDaGFyYWN0ZXJEYXRhICZkKQotIDogRE9NTm9kZShk
KSAKKyA6IERPTU5vZGUoZCkKIHsKIH0KIApAQCAtMTk3NCw5ICsxOTcyLDkgQEANCiAgICAgICAg
IERPTTo6X2V4Y2VwdGlvbmNvZGUgPSBET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSOwogICAg
ICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgICB9Ci0jZWxzZSAgICAgIAorI2Vsc2UKICAg
ICAgICAgdGhyb3cgRE9NRXhjZXB0aW9uKERPTUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlIpOwot
I2VuZGlmICAgICAgICAKKyNlbmRpZgogICAgICAgcmV0dXJuIGdldFN0cmluZ09yTnVsbChkYXRh
LnN1YnN0cmluZ0RhdGEoYXJnc1swXS50b0ludDMyKGV4ZWMpLCBjb3VudCkpOwogICAgIH0KICAg
ICBjYXNlIERPTUNoYXJhY3RlckRhdGE6OkFwcGVuZERhdGE6CkBAIC0xOTkzLDkgKzE5OTEsOSBA
QA0KICAgICAgICAgRE9NOjpfZXhjZXB0aW9uY29kZSA9IERPTUV4Y2VwdGlvbjo6SU5ERVhfU0la
RV9FUlI7CiAgICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAgICAgIH0KLSNlbHNlICAgICAK
KyNlbHNlCiAgICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246OklOREVYX1NJ
WkVfRVJSKTsKLSNlbmRpZiAgCisjZW5kaWYKICAgICAgIGRhdGEuZGVsZXRlRGF0YShhcmdzWzBd
LnRvSW50MzIoZXhlYyksIGNvdW50KTsKICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAgICB9
CkBAIC0yMDA3LDkgKzIwMDUsOSBAQA0KICAgICAgICAgRE9NOjpfZXhjZXB0aW9uY29kZSA9IERP
TUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsK
ICAgICAgIH0KLSNlbHNlICAgICAgCisjZWxzZQogICAgICAgICB0aHJvdyBET01FeGNlcHRpb24o
RE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUik7Ci0jZW5kaWYgIAorI2VuZGlmCiAgICAgICBk
YXRhLnJlcGxhY2VEYXRhKGFyZ3NbMF0udG9JbnQzMihleGVjKSwgY291bnQsIGFyZ3NbMl0udG9T
dHJpbmcoZXhlYykuc3RyaW5nKCkpOwogICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwogICAgIH0K
QEAgLTIwMjEsMTAgKzIwMTksMTAgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNvbnN0IENs
YXNzSW5mbyBET01UZXh0OjppbmZvID0geyAiVGV4dCIsCi0JCQkJICZET01DaGFyYWN0ZXJEYXRh
OjppbmZvLCAwLCAwIH07CisgICAgICAgICAgICAgICAgICZET01DaGFyYWN0ZXJEYXRhOjppbmZv
LCAwLCAwIH07CiAvKgogQGJlZ2luIERPTVRleHRQcm90b1RhYmxlIDEKLSAgc3BsaXRUZXh0CURP
TVRleHQ6OlNwbGl0VGV4dAlEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgc3BsaXRUZXh0IERPTVRl
eHQ6OlNwbGl0VGV4dCAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiBAZW5kCiAqLwogREVGSU5FX1BS
T1RPVFlQRSgiRE9NVGV4dCIsRE9NVGV4dFByb3RvKQpAQCAtMjAzMiw4ICsyMDMwLDggQEANCiBJ
TVBMRU1FTlRfUFJPVE9UWVBFX1dJVEhfUEFSRU5UKERPTVRleHRQcm90byxET01UZXh0UHJvdG9G
dW5jLERPTUNoYXJhY3RlckRhdGFQcm90bykKIAogRE9NVGV4dDo6RE9NVGV4dChFeGVjU3RhdGUg
KmV4ZWMsIGNvbnN0IERPTTo6VGV4dCAmdCkKLSAgOiBET01DaGFyYWN0ZXJEYXRhKHQpIAoteyAK
KyAgOiBET01DaGFyYWN0ZXJEYXRhKHQpCit7CiAgIHNldFByb3RvdHlwZShET01UZXh0UHJvdG86
OnNlbGYoZXhlYykpOwogfQogCkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5j
cHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAkod29y
a2luZyBjb3B5KQ0KQEAgLTMyMiw2ICszMjIsOSBAQA0KICAgLCBoaXN0b3J5KDApCiAgICwgZnJh
bWVzKDApCiAgICwgbG9jKDApCisjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRTCisgICwgbV93aWRn
ZXQoMCkKKyNlbmRpZgogICAsIG1fc2VsZWN0aW9uKDApCiAgICwgbV9sb2NhdGlvbmJhcigwKQog
ICAsIG1fbWVudWJhcigwKQpAQCAtNDgzLDYgKzQ4NiwxMCBAQA0KICAgICBtX3N0YXR1c2Jhci0+
bWFyaygpOwogICBpZiAobV90b29sYmFyICYmICFtX3Rvb2xiYXItPm1hcmtlZCgpKQogICAgIG1f
dG9vbGJhci0+bWFyaygpOworI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUworICBpZiAobV93aWRn
ZXQgJiYgIW1fd2lkZ2V0LT5tYXJrZWQoKSkKKyAgICBtX3dpZGdldC0+bWFyaygpOworI2VuZGlm
CiB9CiAKIFVTdHJpbmcgV2luZG93Ojp0b1N0cmluZyhFeGVjU3RhdGUgKikgY29uc3QKQEAgLTgw
Nyw2ICs4MTQsMTIgQEANCiAjZW5kaWYKICAgICBjYXNlIExvY2F0aW9uYmFyOgogICAgICAgcmV0
dXJuIFZhbHVlKGxvY2F0aW9uYmFyKGV4ZWMpKTsKKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMK
KyAgICBjYXNlIF9XaWRnZXQ6CisgICAgICAgIHJldHVybiBWYWx1ZShtX3dpZGdldCA/IG1fd2lk
Z2V0IDoKKyAgICAgICAgICAgICAgICAgICAoY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93
aWRnZXQgPSBLV1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4ZWMpKSk7CisKKyNlbmRp
ZgogICAgIGNhc2UgTWVudWJhcjoKICAgICAgIHJldHVybiBWYWx1ZShtZW51YmFyKGV4ZWMpKTsK
ICAgICBjYXNlIE9mZnNjcmVlbkJ1ZmZlcmluZzoKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9r
anNfd2luZG93LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRv
dy5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMTAxLDEzICsxMDEsMTMgQEANCiAgICAgYm9vbCBoYXNUaW1l
b3V0cygpOwogICAgIFFNYXA8aW50LCBTY2hlZHVsZWRBY3Rpb24qPiAqcGF1c2VUaW1lb3V0cyhj
b25zdCB2b2lkICprZXkpOwogICAgIHZvaWQgcmVzdW1lVGltZW91dHMoUU1hcDxpbnQsIFNjaGVk
dWxlZEFjdGlvbio+KnNhLCBjb25zdCB2b2lkICprZXkpOwotICAgIAorCiAgICAgS0pTOjpJbnRl
cnByZXRlciAqaW50ZXJwcmV0ZXIoKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIGlzU2FmZVNj
cmlwdCAoY29uc3QgS0pTOjpTY3JpcHRJbnRlcnByZXRlciAqb3JpZ2luLCBjb25zdCBLSlM6OlNj
cmlwdEludGVycHJldGVyICp0YXJnZXQpOwogI2VuZGlmCiAgICAgdm9pZCBzY2hlZHVsZUNsb3Nl
KCk7Ci0gICAgICAgIAorCiAgICAgYm9vbCBpc1NhZmVTY3JpcHQoRXhlY1N0YXRlICpleGVjKSBj
b25zdDsKICAgICBMb2NhdGlvbiAqbG9jYXRpb24oKSBjb25zdDsKICAgICBTZWxlY3Rpb24gKnNl
bGVjdGlvbigpIGNvbnN0OwpAQCAtMTQxLDEzICsxNDEsMTcgQEANCiAgICAgICAgICAgIFNjcmVl
blRvcCwgU2NyZWVuTGVmdCwKICAgICAgICAgICAgU2Nyb2xsVG8sIFNjcm9sbFgsIFNjcm9sbFks
IE1vdmVCeSwgTW92ZVRvLCBSZXNpemVCeSwgUmVzaXplVG8sIFNlbGYsIF9XaW5kb3csIFRvcCwg
X1NjcmVlbiwKICAgICAgICAgICAgSW1hZ2UsIE9wdGlvbiwgQWxlcnQsIENvbmZpcm0sIFByb21w
dCwgT3BlbiwgUHJpbnQsIFNldFRpbWVvdXQsIENsZWFyVGltZW91dCwKLSAgICAgICAgICAgRm9j
dXMsIEdldFNlbGVjdGlvbiwgQmx1ciwgQ2xvc2UsIFNldEludGVydmFsLCBDbGVhckludGVydmFs
LCBDYXB0dXJlRXZlbnRzLCAKKyAgICAgICAgICAgRm9jdXMsIEdldFNlbGVjdGlvbiwgQmx1ciwg
Q2xvc2UsIFNldEludGVydmFsLCBDbGVhckludGVydmFsLCBDYXB0dXJlRXZlbnRzLAogICAgICAg
ICAgICBSZWxlYXNlRXZlbnRzLCBBZGRFdmVudExpc3RlbmVyLCBSZW1vdmVFdmVudExpc3RlbmVy
LCBYTUxIdHRwUmVxdWVzdCwgWE1MU2VyaWFsaXplciwgRE9NUGFyc2VyLAotICAgICBPbmFib3J0
LCBPbmJsdXIsIE9uY2hhbmdlLCBPbmNsaWNrLCBPbmRibGNsaWNrLCBPbmRyYWdkcm9wLCBPbmVy
cm9yLCAKKyAgICAgT25hYm9ydCwgT25ibHVyLCBPbmNoYW5nZSwgT25jbGljaywgT25kYmxjbGlj
aywgT25kcmFnZHJvcCwgT25lcnJvciwKICAgICAgT25mb2N1cywgT25rZXlkb3duLCBPbmtleXBy
ZXNzLCBPbmtleXVwLCBPbmxvYWQsIE9ubW91c2Vkb3duLCBPbm1vdXNlbW92ZSwKICAgICAgICAg
ICAgT25tb3VzZW91dCwgT25tb3VzZW92ZXIsIE9ubW91c2V1cCwgT25XaW5kb3dNb3VzZVdoZWVs
LCBPbm1vdmUsIE9ucmVzZXQsIE9ucmVzaXplLCBPbnNjcm9sbCwgT25zZWFyY2gsCiAgICAgICAg
ICAgIE9uc2VsZWN0LCBPbnN1Ym1pdCwgT251bmxvYWQsIE9uYmVmb3JldW5sb2FkLAotICAgICAg
ICAgICBTdGF0dXNiYXIsIFRvb2xiYXIsIEZyYW1lRWxlbWVudCwgU2hvd01vZGFsRGlhbG9nIH07
CisgICAgICAgICAgIFN0YXR1c2JhciwgVG9vbGJhciwgRnJhbWVFbGVtZW50LCBTaG93TW9kYWxE
aWFsb2cKKyNpZmRlZiBOT0tJQV9DSEFOR0VTCisgICAgICAgICAgICxfV2lkZ2V0CisjZW5kaWYK
KyAgICAgICAgICAgfTsKICAgcHJvdGVjdGVkOgogICAgIFZhbHVlIGdldExpc3RlbmVyKEV4ZWNT
dGF0ZSAqZXhlYywgaW50IGV2ZW50SWQpIGNvbnN0OwogICAgIHZvaWQgc2V0TGlzdGVuZXIoRXhl
Y1N0YXRlICpleGVjLCBpbnQgZXZlbnRJZCwgVmFsdWUgZnVuYyk7CkBAIC0xNTUsNiArMTU5LDkg
QEANCiAgICAgdm9pZCB1cGRhdGVMYXlvdXQoYm9vbCBpZ25vcmVTdHlsZXNoZWV0cyA9IHRydWUp
IGNvbnN0OwogCiAgICAgUUd1YXJkZWRQdHI8S0hUTUxQYXJ0PiBtX3BhcnQ7CisjaWZkZWYgUkRf
QlJPV1NFUl9XSURHRVRTCisgICAgT2JqZWN0SW1wICptX3dpZGdldDsKKyNlbmRpZgogICAgIFNj
cmVlbiAqc2NyZWVuOwogICAgIEhpc3RvcnkgKmhpc3Rvcnk7CiAgICAgRnJhbWVBcnJheSAqZnJh
bWVzOwpAQCAtMjQxLDggKzI0OCw4IEBADQogICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
ICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUsIGNvbnN0IFZhbHVlICZ2YWx1
ZSwgaW50IGF0dHIgPSBOb25lKTsKICAgICB2aXJ0dWFsIFZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSAqZXhlYywgVHlwZSBwcmVmZXJyZWQpIGNvbnN0OwogICAgIHZpcnR1YWwgVVN0cmluZyB0
b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwotICAgIGVudW0geyBBbmNob3JOb2RlLCBB
bmNob3JPZmZzZXQsIEZvY3VzTm9kZSwgRm9jdXNPZmZzZXQsIEJhc2VOb2RlLCBCYXNlT2Zmc2V0
LCBFeHRlbnROb2RlLCBFeHRlbnRPZmZzZXQsIAotICAgICAgICAgICBJc0NvbGxhcHNlZCwgX1R5
cGUsIEVxdWFsRXF1YWwsIENvbGxhcHNlLCBDb2xsYXBzZVRvRW5kLCBDb2xsYXBzZVRvU3RhcnQs
IEVtcHR5LCBUb1N0cmluZywgCisgICAgZW51bSB7IEFuY2hvck5vZGUsIEFuY2hvck9mZnNldCwg
Rm9jdXNOb2RlLCBGb2N1c09mZnNldCwgQmFzZU5vZGUsIEJhc2VPZmZzZXQsIEV4dGVudE5vZGUs
IEV4dGVudE9mZnNldCwKKyAgICAgICAgICAgSXNDb2xsYXBzZWQsIF9UeXBlLCBFcXVhbEVxdWFs
LCBDb2xsYXBzZSwgQ29sbGFwc2VUb0VuZCwgQ29sbGFwc2VUb1N0YXJ0LCBFbXB0eSwgVG9TdHJp
bmcsCiAgICAgICAgICAgIFNldEJhc2VBbmRFeHRlbnQsIFNldFBvc2l0aW9uLCBNb2RpZnkgfTsK
ICAgICBLSFRNTFBhcnQgKnBhcnQoKSBjb25zdCB7IHJldHVybiBtX3BhcnQ7IH0KICAgICB2aXJ0
dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0K
SW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cubHV0LmgJKHJldmlzaW9uIDE3MDY5KQ0K
KysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjksMTAgKzI5LDEwIEBADQogICAgeyAiQ1NTUnVsZSIsIFdpbmRvdzo6Q1NTUnVsZSwgRG9u
dERlbGV0ZSwgMCwgJldpbmRvd1RhYmxlRW50cmllc1sxMTJdIH0sCiAgICB7ICJsZW5ndGgiLCBX
aW5kb3c6Okxlbmd0aCwgRG9udERlbGV0ZXxSZWFkT25seSwgMCwgMCB9LAogICAgeyAwLCAwLCAw
LCAwLCAwIH0sCisgICB7ICJ3aWRnZXQiLCBXaW5kb3c6Ol9XaWRnZXQsIERvbnREZWxldGV8RnVu
Y3Rpb24sIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9LAogICAgeyAwLCAwLCAwLCAwLCAw
IH0sCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwKLSAgIHsgMCwgMCwgMCwgMCwgMCB9LAogICAgeyAi
cHJpbnQiLCBXaW5kb3c6OlByaW50LCBEb250RGVsZXRlfEZ1bmN0aW9uLCAyLCAmV2luZG93VGFi
bGVFbnRyaWVzWzExMV0gfSwKICAgIHsgIm9wZW5lciIsIFdpbmRvdzo6T3BlbmVyLCBEb250RGVs
ZXRlfFJlYWRPbmx5LCAwLCAwIH0sCiAgICB7ICJwYXJlbnQiLCBXaW5kb3c6OlBhcmVudCwgRG9u
dERlbGV0ZXxSZWFkT25seSwgMCwgMCB9LApJbmRleDogV2ViQ29yZS9raHRtbC9odG1sL2h0bWxf
b2JqZWN0aW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9v
YmplY3RpbXBsLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9raHRtbC9odG1sL2h0
bWxfb2JqZWN0aW1wbC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xOTksNyArMTk5LDYgQEANCiB9
CiAKICNpZiBBUFBMRV9DSEFOR0VTCi0jaWYgIU5PS0lBX0NIQU5HRVMKIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlICpIVE1MQXBwbGV0RWxlbWVudEltcGw6OmdldEFwcGxldEluc3RhbmNlKCkgY29u
c3QKIHsKICAgICBLSFRNTFBhcnQqIHBhcnQgPSBnZXREb2N1bWVudCgpLT5wYXJ0KCk7CkBAIC0y
MDgsNyArMjA3LDcgQEANCiAKICAgICBpZiAoYXBwbGV0SW5zdGFuY2UpCiAgICAgICAgIHJldHVy
biBhcHBsZXRJbnN0YW5jZTsKLQorI2lmICFOT0tJQV9DSEFOR0VTCiAgICAgUmVuZGVyQXBwbGV0
ICpyID0gc3RhdGljX2Nhc3Q8UmVuZGVyQXBwbGV0Kj4obV9yZW5kZXIpOwogICAgIGlmIChyKSB7
CiAgICAgICAgIHItPmNyZWF0ZVdpZGdldElmTmVjZXNzYXJ5KCk7CkBAIC0yMTksOSArMjE4LDkg
QEANCiAgICAgICAgICAgICBhcHBsZXRJbnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0QXBwbGV0SW5z
dGFuY2VGb3JWaWV3KChOU1ZpZXcgKilfdmlldyk7CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYK
ICAgICByZXR1cm4gYXBwbGV0SW5zdGFuY2U7CiB9Ci0jZW5kaWYKIAogdm9pZCBIVE1MQXBwbGV0
RWxlbWVudEltcGw6OmNsb3NlUmVuZGVyZXIoKQogewpAQCAtMjQzLDkgKzI0Miw3IEBADQogCiBI
VE1MRW1iZWRFbGVtZW50SW1wbDo6SFRNTEVtYmVkRWxlbWVudEltcGwoRG9jdW1lbnRQdHIgKmRv
YykKICAgICA6IEhUTUxFbGVtZW50SW1wbChkb2MpCi0jaWYgIU5PS0lBX0NIQU5HRVMKICAgICAs
IGVtYmVkSW5zdGFuY2UoMCkKLSNlbmRpZgogewogI2lmIE5PS0lBX0NIQU5HRVMKICAgbmVlZFdp
ZGdldFVwZGF0ZSA9IGZhbHNlOwpAQCAtMjYxLDcgKzI1OCw3IEBADQogICAgIHJldHVybiBJRF9F
TUJFRDsKIH0KIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBM
RV9DSEFOR0VTCiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqSFRNTEVtYmVkRWxlbWVudEltcGw6
OmdldEVtYmVkSW5zdGFuY2UoKSBjb25zdAogewogICAgIEtIVE1MUGFydCogcGFydCA9IGdldERv
Y3VtZW50KCktPnBhcnQoKTsKQEAgLTI3NywxMCArMjc0LDE3IEBADQogICAgICAgICAgICAgLy8g
Q2FsbCBpbnRvIHRoZSBwYXJ0IChhbmQgb3ZlciB0aGUgYnJpZGdlKSB0byBwdWxsIHRoZSBCaW5k
aW5nczo6SW5zdGFuY2UKICAgICAgICAgICAgIC8vIGZyb20gdGhlIGd1dHMgb2YgdGhlIEphdmEg
Vk0uCiAgICAgICAgICAgICB2b2lkICpfdmlldyA9IHItPndpZGdldCgpLT5nZXRWaWV3KCk7Cisj
aWYgTk9LSUFfQ0hBTkdFUworICAgICAgICAgICAgZW1iZWRJbnN0YW5jZSA9IEtXUShwYXJ0KS0+
Z2V0RW1iZWRJbnN0YW5jZUZvclZpZXcoKE1XZWJDb3JlV2lkZ2V0ICopX3ZpZXcpOworICAgICAg
ICAgICAgLy8gQXBwbGV0IG1heSBzcGVjaWZpZWQgd2l0aCA8ZW1iZWQ+IHRhZy4KKyAgICAgICAg
ICAgIGlmICghZW1iZWRJbnN0YW5jZSkKKyAgICAgICAgICAgICAgICBlbWJlZEluc3RhbmNlID0g
S1dRKHBhcnQpLT5nZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcoKE1XZWJDb3JlV2lkZ2V0ICopX3Zp
ZXcpOworI2Vsc2UKICAgICAgICAgICAgIGVtYmVkSW5zdGFuY2UgPSBLV1EocGFydCktPmdldEVt
YmVkSW5zdGFuY2VGb3JWaWV3KChOU1ZpZXcgKilfdmlldyk7CiAgICAgICAgICAgICAvLyBBcHBs
ZXQgbWF5IHNwZWNpZmllZCB3aXRoIDxlbWJlZD4gdGFnLgogICAgICAgICAgICAgaWYgKCFlbWJl
ZEluc3RhbmNlKQogICAgICAgICAgICAgICAgIGVtYmVkSW5zdGFuY2UgPSBLV1EocGFydCktPmdl
dEFwcGxldEluc3RhbmNlRm9yVmlldygoTlNWaWV3ICopX3ZpZXcpOworI2VuZGlmCiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIGVtYmVkSW5zdGFuY2U7CkBAIC01NjgsNyArNTcyLDcgQEAN
CiAgICAgcmV0dXJuIElEX09CSkVDVDsKIH0KIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lB
X0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqSFRN
TE9iamVjdEVsZW1lbnRJbXBsOjpnZXRPYmplY3RJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgS0hU
TUxQYXJ0KiBwYXJ0ID0gZ2V0RG9jdW1lbnQoKS0+cGFydCgpOwpAQCAtNTgxLDcgKzU4NSwxMSBA
QA0KICAgICBpZiAoUmVuZGVyT2JqZWN0ICpyID0gbV9yZW5kZXIpIHsKICAgICAgICAgaWYgKHIt
PmlzV2lkZ2V0KCkpIHsKICAgICAgICAgICAgIGlmIChRV2lkZ2V0ICp3aWRnZXQgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJXaWRnZXQgKj4ociktPndpZGdldCgpKSB7CisjaWYgTk9LSUFfQ0hBTkdFUyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoTVdlYkNvcmVXaWRnZXQgKnZpZXcg
PSB3aWRnZXQtPmdldFZpZXcoKSkgIHsKKyNlbHNlCiAgICAgICAgICAgICAgICAgaWYgKE5TVmll
dyAqdmlldyA9IHdpZGdldC0+Z2V0VmlldygpKSAgeworI2VuZGlmCiAgICAgICAgICAgICAgICAg
ICAgIC8vIENhbGwgaW50byB0aGUgcGFydCAoYW5kIG92ZXIgdGhlIGJyaWRnZSkgdG8gcHVsbCB0
aGUgQmluZGluZ3M6Okluc3RhbmNlCiAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlIGd1
dHMgb2YgdGhlIHBsdWdpbi4KICAgICAgICAgICAgICAgICAgICAgb2JqZWN0SW5zdGFuY2UgPSBL
V1EocGFydCktPmdldE9iamVjdEluc3RhbmNlRm9yVmlldyh2aWV3KTsKSW5kZXg6IFdlYkNvcmUv
a2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0
bWwvaHRtbC9odG1sX29iamVjdGltcGwuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9r
aHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNjQsMTkgKzY0
LDE2IEBADQogI2lmIEFQUExFX0NIQU5HRVMKICAgICB2aXJ0dWFsIGJvb2wgYWxsUGFyYW1zQXZh
aWxhYmxlKCk7CiAgICAgdm9pZCBzZXR1cEFwcGxldCgpIGNvbnN0OwotI2lmICFOT0tJQV9DSEFO
R0VTCisKICAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0QXBwbGV0SW5zdGFuY2UoKSBj
b25zdDsKICNlbmRpZgotI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBraHRtbDo6VkFsaWduIHZh
bGlnbjsKIAogcHJpdmF0ZToKICNpZiBBUFBMRV9DSEFOR0VTCi0jaWYgIU5PS0lBX0NIQU5HRVMK
ICAgICBtdXRhYmxlIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICphcHBsZXRJbnN0YW5jZTsKLSNl
bmRpZgogICAgIGJvb2wgbV9hbGxQYXJhbXNBdmFpbGFibGU7CiAjZW5kaWYKIH07CkBAIC0xMTMs
NyArMTEwLDcgQEANCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnRJ
bXBsICpldnQpOwogI2VuZGlmCiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VT
CisjaWYgQVBQTEVfQ0hBTkdFUwogICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRFbWJl
ZEluc3RhbmNlKCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTI0LDcgKzEyMSw3IEBADQogICBib29s
IG5lZWRXaWRnZXRVcGRhdGU7CiAgICAgSFRNTEltYWdlTG9hZGVyKiBtX2ltYWdlTG9hZGVyOwog
I2VuZGlmCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NI
QU5HRVMKIHByaXZhdGU6CiAgICAgbXV0YWJsZSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZW1i
ZWRJbnN0YW5jZTsKICNlbmRpZgpAQCAtMTg2LDcgKzE4Myw3IEBADQogCiAgICAgdm9pZCByZW5k
ZXJGYWxsYmFja0NvbnRlbnQoKTsKIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5H
RVMKKyNpZiBBUFBMRV9DSEFOR0VTCiAgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldE9i
amVjdEluc3RhbmNlKCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTk3LDcgKzE5NCw3IEBADQogICAg
IGJvb2wgbV91c2VGYWxsYmFja0NvbnRlbnQgOiAxOwogICAgIEhUTUxJbWFnZUxvYWRlciogbV9p
bWFnZUxvYWRlcjsKIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBB
UFBMRV9DSEFOR0VTCiBwcml2YXRlOgogICAgIG11dGFibGUgS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2UgKm9iamVjdEluc3RhbmNlOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FLSFRNTFBh
cnQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmNwcAkocmV2
aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmNwcAkod29ya2luZyBj
b3B5KQ0KQEAgLTYyLDYgKzYyLDggQEANCiAjaW5jbHVkZSAia2pzX3dpbmRvdy5oIgogI2VuZGlm
CiAKKyNpbmNsdWRlICJwcm90ZWN0LmgiCisjaW5jbHVkZSAia2pzX3dpbmRvdy5oIgogI2luY2x1
ZGUgInJlbmRlcl9jYW52YXMuaCIKICNpbmNsdWRlICJyZW5kZXJfZnJhbWVzLmgiCiAjaW5jbHVk
ZSAicmVuZGVyX2ltYWdlLmgiCkBAIC0yMTksMTAgKzIyMSw5IEBADQogICAgICwgX3VzZXNJbmFj
dGl2ZVRleHRCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCiAgICAgLCBfc2hvd3NGaXJzdFJlc3BvbmRl
cih0cnVlKQogICAgICwgX2RyYXdTZWxlY3Rpb25Pbmx5KGZhbHNlKQotI2lmICFLSFRNTF9OT19T
Q1JJUFRJTkcKLS8vICAgICwgX2JpbmRpbmdSb290KDApCisgICAgLCBfd2luZG93U2NyaXB0TlBP
YmplY3QoMCkKKyAgICAsIF9iaW5kaW5nUm9vdCgwKQogICAgICwgX3dpbmRvd1NjcmlwdE9iamVj
dCgwKQotI2VuZGlmCiAvLyAgICAsIF9kcmFnU3JjKDApCiAvLyAgICAsIF9kcmFnQ2xpcGJvYXJk
KDApCiAgICAgLCBfZWxlbWVudFRvRHJhdygwKQpAQCAtNzQ5LDcgKzc1MCw3IEBADQogICAgIC8v
IEZJWE1FOiBGcmFtZSB0YXJnZXRpbmcgaXMgb25seSBvbmUgb2YgdGhlIHdheXMgdGhlIHN1Ym1p
c3Npb24gY291bGQgZW5kIHVwIGRvaW5nIHNvbWV0aGluZyBvdGhlcgogICAgIC8vIHRoYW4gcmVw
bGFjaW5nIHRoaXMgZnJhbWUncyBjb250ZW50LCBzbyB0aGlzIGNoZWNrIGlzIGZsYXdlZC4gT24g
dGhlIG90aGVyIGhhbmQsIHRoZSBjaGVjayBpcyBoYXJkbHkKICAgICAvLyBuZWVkZWQgYW55IG1v
cmUgbm93IHRoYXQgd2UgcmVzZXQgX3N1Ym1pdHRlZEZvcm1VUkwgb24gZWFjaCBtb3VzZSBvciBr
ZXkgZG93biBldmVudC4KLSAgICAKKwogICAgIENXZWJDb3JlQnJpZGdlICp0YXJnZXQgPSBhcmdz
LmZyYW1lTmFtZS5pc0VtcHR5KCkgPyBfYnJpZGdlIDogX2JyaWRnZS0+Q2xpZW50KCkuRmluZEZy
YW1lTmFtZWQoYXJncy5mcmFtZU5hbWUuRGVzKCkpOwogICAgIEtIVE1MUGFydCAqdGFyZ2V0UGFy
dCA9IHRhcmdldC0+UGFydCgpOwogICAgIGJvb2wgd2lsbFJlcGxhY2VUaGlzRnJhbWUgPSBmYWxz
ZTsKQEAgLTc1OSw3ICs3NjAsNyBAQA0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQotICAgIAorCiAgICAgaWYgKHdpbGxSZXBsYWNlVGhpc0ZyYW1lKSB7CiAgICAgICAgIGlm
IChfc3VibWl0dGVkRm9ybVVSTCA9PSB1cmwpIHsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEy
NjAsOCArMTI2MSw3IEBADQogICB9CiB9CiAKLSNpZiAhS0hUTUxfTk9fU0NSSVBUSU5HCi0vKktK
Uzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKktXUUtIVE1MUGFydDo6YmluZGluZ1Jvb3RPYmplY3Qo
KQorS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqS1dRS0hUTUxQYXJ0OjpiaW5kaW5nUm9vdE9i
amVjdCgpCiB7CiAgICAgaWYgKCFfYmluZGluZ1Jvb3QpIHsKICAgICAgICAgX2JpbmRpbmdSb290
ID0gbmV3IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QoMCk7ICAgIC8vIFRoZSByb290IGdldHMg
ZGVsZXRlZCBieSBKYXZhU2NyaXB0Q29yZS4KQEAgLTEyNzMsNyArMTI3Myw4IEBADQogICAgIHJl
dHVybiBfYmluZGluZ1Jvb3Q7CiB9CiAKLVdlYlNjcmlwdE9iamVjdCAqS1dRS0hUTUxQYXJ0Ojp3
aW5kb3dTY3JpcHRPYmplY3QoKQorCisvKldlYlNjcmlwdE9iamVjdCAqS1dRS0hUTUxQYXJ0Ojp3
aW5kb3dTY3JpcHRPYmplY3QoKQogewogICAgIGlmICghX3dpbmRvd1NjcmlwdE9iamVjdCkgewog
ICAgICAgICBLSlM6Ok9iamVjdEltcCAqd2luID0gc3RhdGljX2Nhc3Q8S0pTOjpPYmplY3RJbXAg
Kj4oS0pTOjpXaW5kb3c6OnJldHJpZXZlV2luZG93KHRoaXMpKTsKQEAgLTEyODIsNyArMTI4Myw2
IEBADQogCiAgICAgcmV0dXJuIF93aW5kb3dTY3JpcHRPYmplY3Q7CiB9Ki8KLSNlbmRpZgogCiB2
b2lkIEtXUUtIVE1MUGFydDo6cGFydENsZWFyZWRJbkJlZ2luKCkKIHsKQEAgLTI5NTksNDYgKzI5
NTksNDYgQEANCiAKIHZvaWQgS1dRS0hUTUxQYXJ0OjpnZXRSZW5kZXJUZXh0UmVjdEFycmF5KGNv
bnN0IFREZXNDJiBhVGV4dEVudHJ5LCBjb25zdCBET006Ok5vZGUmIGFOb2RlLCBSQXJyYXk8VFJl
Y3Q+JiBhRW50cnlSZWN0TGlzdCkKIHsKLSAgCi0gICAgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5n
OjpGcm9tRGVzKGFUZXh0RW50cnkpOyAgICAKLSAgICAKKworICAgIFFTdHJpbmcgdGFyZ2V0ID0g
UVN0cmluZzo6RnJvbURlcyhhVGV4dEVudHJ5KTsKKwogICAgIGNvbnN0IGxvbmcgc3RhcnQgPSAw
OwotICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+
KGFOb2RlLmhhbmRsZSgpLT5yZW5kZXJlcigpKTsgICAgICAgICAgIAorICBSZW5kZXJUZXh0KiB0
ZXh0UmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGFOb2RlLmhhbmRsZSgpLT5y
ZW5kZXJlcigpKTsKICAgY29uc3QgbG9uZyBvZmZzZXQgPSB0ZXh0UmVuZGVyZXItPmxlbmd0aCgp
OwotICAgIFJhbmdlIHNlYXJjaFJhbmdlKGFOb2RlLCBzdGFydCwgYU5vZGUsIG9mZnNldCk7ICAg
ICAKLSAgICAgICAgCisgICAgUmFuZ2Ugc2VhcmNoUmFuZ2UoYU5vZGUsIHN0YXJ0LCBhTm9kZSwg
b2Zmc2V0KTsKKwogICAgIFJhbmdlIHJlc3VsdFJhbmdlID0ga2h0bWw6OmZpbmRQbGFpblRleHQo
c2VhcmNoUmFuZ2UsIHRhcmdldCwgdHJ1ZSwgdHJ1ZSk7CiAKICAgd2hpbGUgKCFyZXN1bHRSYW5n
ZS5jb2xsYXBzZWQoKSkKICAgICB7Ci0gICAgICAgIAorCiAgICAgc2V0U2VsZWN0aW9uKGtodG1s
OjpTZWxlY3Rpb24ocmVzdWx0UmFuZ2UsIGtodG1sOjpET1dOU1RSRUFNLCBraHRtbDo6U0VMX1BS
RUZFUl9VUFNUUkVBTV9BRkZJTklUWSksIGZhbHNlKTsKLSAgICAKLSAgICAKLSAgICBpZiAoZC0+
bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkgCisKKworICAgIGlmIChkLT5tX3NlbGVj
dGlvbi5zdGFydCgpLmlzTm90TnVsbCgpKQogICAgICAgewotICAgICAgaWYgKGQtPm1fc2VsZWN0
aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCku
bm9kZSgpLT5yZW5kZXJlcigpLT5pc1RleHQoKSkgICAgICAgICAgICAgCisgICAgICBpZiAoZC0+
bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZC0+bV9zZWxlY3Rpb24u
c3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGV4dCgpKQogICAgICAgICB7Ci0gICAgICAg
IC8vZ2V0IHRoZSBzZWxlY3Rpb24gcmVjdCAgICAKLSAgICAgICAgUmVuZGVyVGV4dCAqcnQgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5y
ZW5kZXJlcigpKTsgICAgICAKLSAgICAgICAgICAgICAgaWYgKHJ0KSAKKyAgICAgICAgLy9nZXQg
dGhlIHNlbGVjdGlvbiByZWN0CisgICAgICAgIFJlbmRlclRleHQgKnJ0ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyVGV4dCAqPihkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSk7
CisgICAgICAgICAgICAgIGlmIChydCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICBRUmVjdCByU2VsZWN0aW9uID0gcnQtPnNlbGVjdGlvblJlY3QoKTsKLSAgICAgICAgICAg
ICAgICBfZm9jdXNhYmxlTm9kZUxpc3QtPmFwcGVuZChyU2VsZWN0aW9uKTsgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBfZm9jdXNhYmxlTm9kZUxpc3QtPmFwcGVuZChyU2VsZWN0
aW9uKTsKICAgICAgICAgICAgICAgICAgIGFFbnRyeVJlY3RMaXN0LkFwcGVuZChUUmVjdChyU2Vs
ZWN0aW9uLmxlZnQoKSwgclNlbGVjdGlvbi50b3AoKSwgclNlbGVjdGlvbi5yaWdodCgpLCByU2Vs
ZWN0aW9uLmJvdHRvbSgpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICB9
ICAgICAKLSAgICAgIAotICAgIAotICAgICAgICBzZWFyY2hSYW5nZS5zZXRTdGFydChhTm9kZSwg
cmVzdWx0UmFuZ2UuZW5kT2Zmc2V0KCkpOyAgICAgICAgICAgICAKKyAgICAgIH0KKworCisgICAg
ICAgIHNlYXJjaFJhbmdlLnNldFN0YXJ0KGFOb2RlLCByZXN1bHRSYW5nZS5lbmRPZmZzZXQoKSk7
CiAgICAgICAgIHNlYXJjaFJhbmdlLnNldEVuZChhTm9kZSwgb2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgIHJlc3VsdFJhbmdlID0ga2h0bWw6OmZpbmRQbGFpblRleHQoc2Vh
cmNoUmFuZ2UsIHRhcmdldCwgdHJ1ZSwgdHJ1ZSk7ICAgIAotICAgIH0gICAKIAorICAgICAgcmVz
dWx0UmFuZ2UgPSBraHRtbDo6ZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZSwgdGFyZ2V0LCB0cnVl
LCB0cnVlKTsKKyAgICB9CisKICAgICBjbGVhclNlbGVjdGlvbigpOwotICAgICAgCisKIH0KIAog
LyoKQEAgLTMwMDksNTIgKzMwMDksNTIgQEANCiAgICAgICB7CiAgICAgICAgIGQtPm1fZmlyc3RG
b3VuZCA9IGQtPm1fc2VsZWN0aW9uOwogICAgICAgfQotICAgIGVsc2UgCi0gICAgICB7ICAgICAg
ICAKKyAgICBlbHNlCisgICAgICB7CiAgICAgICAgIGQtPm1fZmlyc3RGb3VuZCA9IGtodG1sOjpT
ZWxlY3Rpb24oKTsKICAgICAgIH0KLSAgICAKKwogICBraHRtbDo6U2VsZWN0aW9uIGZpcnN0Rm91
bmQoZC0+bV9maXJzdEZvdW5kKTsKICAga2h0bWw6OlNlbGVjdGlvbiBsYXN0Rm91bmQoZC0+bV9s
YXN0Rm91bmQpOwogICBraHRtbDo6U2VsZWN0aW9uIGN1cnNlbGVjdGlvbihkLT5tX3NlbGVjdGlv
bik7CiAKIAogICAgIFRJbnQgcmVzdWx0ID0gRmluZFN0cmluZyhhVGV4dEVudHJ5LCB0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlKTsKLSAgCisKICAgd2hpbGUgKHJlc3VsdCA9PSBUQnJDdGxEZWZzOjpF
RmluZE1hdGNoKQogICAgIHsKIAotICAgIGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLmlzTm90
TnVsbCgpKSAKKyAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkKICAg
ICAgIHsKLSAgICAgIGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIo
KSAmJiBkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkp
ICAgICAgICAgICAgIAorICAgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5y
ZW5kZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5p
c1RleHQoKSkKICAgICAgICAgewotICAgICAgICAvL2dldCB0aGUgc2VsZWN0aW9uIHJlY3QgICAg
Ci0gICAgICAgIFJlbmRlclRleHQgKnJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihkLT5t
X3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgCi0gICAgICAgICAg
ICAgIGlmIChydCkgCisgICAgICAgIC8vZ2V0IHRoZSBzZWxlY3Rpb24gcmVjdAorICAgICAgICBS
ZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24u
c3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgICBpZiAocnQpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgUVJlY3QgclNlbGVjdGlvbiA9IHJ0LT5z
ZWxlY3Rpb25SZWN0KCk7CiAKICAgICAgICAgICBib29sIGJFeGlzdHMgPSBFRmFsc2U7Ci0gICAg
ICAgICAgICBmb3IoaW50IGkgPSAwO2kgPCBfZm9jdXNhYmxlTm9kZUxpc3QtPmNvdW50KCk7aSsr
KSAKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7aSA8IF9mb2N1c2FibGVOb2RlTGlzdC0+Y291
bnQoKTtpKyspCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBRUmVjdCBuciA9IF9m
b2N1c2FibGVOb2RlTGlzdC0+b3BlcmF0b3JbXShpKTsKICAgICAgICAgICAgICAgICBpZighbnIu
aW50ZXJzZWN0cyhyU2VsZWN0aW9uKSkKLSAgICAgICAgICAgICAgICAgIHsgICAgIAorICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgYkV4aXN0cyA9IEVUcnVlOwotICAgICAg
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQotICAgICAgICAgIAorCiAgICAg
ICAgICAgaWYgKCFiRXhpc3RzKQotICAgICAgICAgICAgeyAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICBfZm9jdXNhYmxlTm9kZUxpc3QtPmFwcGVuZChyU2VsZWN0aW9uKTsgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIF9mb2N1c2FibGVOb2Rl
TGlzdC0+YXBwZW5kKHJTZWxlY3Rpb24pOwogICAgICAgICAgICAgfQotICAgICAgCisKICAgICAg
ICAgICAgICAgICAgIGFFbnRyeVJlY3RMaXN0LkFwcGVuZChUUmVjdChyU2VsZWN0aW9uLmxlZnQo
KSwgclNlbGVjdGlvbi50b3AoKSwgclNlbGVjdGlvbi5yaWdodCgpLCByU2VsZWN0aW9uLmJvdHRv
bSgpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9Ci0gICAgICAKKwog
ICAgIHJlc3VsdCA9IEZpbmRTdHJpbmcoYVRleHRFbnRyeSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSk7CiAgICAgfQogCkBAIC0zMDYyLDcgKzMwNjIsNyBAQA0KICAgZC0+bV9maXJzdEZvdW5kID0g
Zmlyc3RGb3VuZDsKICAgZC0+bV9sYXN0Rm91bmQgPSBsYXN0Rm91bmQ7CiAgIGQtPm1fc2VsZWN0
aW9uID0gY3Vyc2VsZWN0aW9uOwotICAgICAgICAKKwogfQogKi8KIC8vIHJldHVybnMgTlNSZWN0
IGJlY2F1c2UgZ29pbmcgdGhyb3VnaCBRUmVjdCB3b3VsZCB0cnVuY2F0ZSBhbnkgZmxvYXRzCkBA
IC0zMzU2LDIzICszMzU2LDIxIEBADQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZgog
CiB2b2lkIEtXUUtIVE1MUGFydDo6YWRkUGx1Z2luUm9vdE9iamVjdChjb25zdCBLSlM6OkJpbmRp
bmdzOjpSb290T2JqZWN0ICpyb290KQogewogICAgIHJvb3RPYmplY3RzLmFwcGVuZCAocm9vdCk7
CiB9Ci0jZW5kaWYKIAogdm9pZCBLV1FLSFRNTFBhcnQ6OmNsZWFudXBQbHVnaW5Sb290T2JqZWN0
cygpCiB7CiAvLyAjIyMgTk9UIElNUExFTUVOVEVEIHNjcmlwdGluZywgcGx1Z2lucwotLyoKICAg
ICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290OwogICAgIHdoaWxlICgocm9vdCA9IHJv
b3RPYmplY3RzLmdldExhc3QoKSkpIHsKICAgICAgICAgcm9vdC0+cmVtb3ZlQWxsTmF0aXZlUmVm
ZXJlbmNlcyAoKTsKICAgICAgICAgcm9vdE9iamVjdHMucmVtb3ZlTGFzdCgpOwogICAgIH0KLSov
CiB9CiAKIApAQCAtMzc5Myw3ICszNzkxLDcgQEANCiAgICAgICAgICAgUVBvaW50IG5wID0gbmVh
cmVzdFBvaW50SW5SZWN0KF9jdXJzb3JQb3NpdGlvbixpbnRlcnNlY3RSZWN0KTsKICAgICAgICAg
ICBpbnQgeCA9IChucC54KCkgLSBfY3Vyc29yUG9zaXRpb24ueCgpKTsKICAgICAgICAgICBpbnQg
eSA9IChucC55KCkgLSBfY3Vyc29yUG9zaXRpb24ueSgpKTsKLSAgICAgICAgICAKKwogICAgICAg
ICAgIGlmKGxyICE9IDAgJiYgQWJzKHkpID4gdmlldygpLT52aXNpYmxlSGVpZ2h0KCkvNCkgY29u
dGludWU7CiAKICAgICAgICAgICBpZighZm9jdXNSYW5nZS5pc0VtcHR5KCkgJiYgIWZvY3VzUmVj
dC5pc0VtcHR5KCkpIHsKQEAgLTM5ODIsNyArMzk4MCw3IEBADQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIGlmKGZvY3VzUmVjdC5pc0VtcHR5KCkpIHJldHVybiBmYWxzZTsKLSAgICAg
ICAKKwogICAgICAgIGZvY3VzZWRGcmFtZVBhcnQtPmJyaWRnZSgpLT5Qb2ludGVyRXZlbnQoVFBv
aW50ZXJFdmVudDo6RU1vdmUsZm9jdXNSZWN0LmNlbnRlcigpLlBvaW50KCkpOwogCiAgICAgICAg
UVJlY3Qgdmlld1JlY3QoZm9jdXNlZEZyYW1lUGFydC0+dmlldygpLT5jb250ZW50c1goKSxmb2N1
c2VkRnJhbWVQYXJ0LT52aWV3KCktPmNvbnRlbnRzWSgpLApAQCAtNDA2NCw0ICs0MDYyLDM4IEBA
DQogICAgIC8vIFJlc2V0IHRoZSBtdWx0aXBsZSBmb3JtIHN1Ym1pc3Npb24gcHJvdGVjdGlvbiBj
b2RlLgogICAgIC8vIFdlJ2xsIGxldCB5b3Ugc3VibWl0IHRoZSBzYW1lIGZvcm0gdHdpY2UgaWYg
eW91IGRvIHR3byBzZXBhcmF0ZSB1c2VyIGFjdGlvbnMuCiAgICAgX3N1Ym1pdHRlZEZvcm1VUkwg
PSBLVVJMKCk7Ci19DQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCit9CisKKyNpZmRlZiAg
UkRfQlJPV1NFUl9XSURHRVRTCitLSlM6Ok9iamVjdEltcCogS1dRS0hUTUxQYXJ0OjpjcmVhdGVX
aWRnZXRPYmplY3QoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgS0pTOjpPYmplY3RJbXAq
IG9iakltcGwgPSBzdGF0aWNfY2FzdDxLSlM6Ok9iamVjdEltcCAqPihfYnJpZGdlLT5DbGllbnQo
KS5jcmVhdGVXaWRnZXRPYmplY3QoKHZvaWQqIClleGVjKSk7CisgICAgcmV0dXJuIG9iakltcGw7
Cit9CisjZW5kaWYKKworS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKktXUUtIVE1MUGFydDo6Z2V0
RW1iZWRJbnN0YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICphVmlldykKK3sKKyAgICByZXR1
cm4gZ2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3KGFWaWV3KTsKK30KKworS0pTOjpCaW5kaW5nczo6
SW5zdGFuY2UgKktXUUtIVE1MUGFydDo6Z2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3IChNV2ViQ29y
ZVdpZGdldCAqYVZpZXcpCit7CisgICAgdm9pZCogb2JqZWN0ID0gYVZpZXctPlBsdWdpblNjcmlw
dGFibGVPYmplY3QoKTsKKyAgICBpZiAob2JqZWN0KSB7CisgICAgICAgIC8vS0pTOjpCaW5kaW5n
czo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCA9IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3Q6OmZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb24gKCkoYVZpZXcpOworICAg
ICAgICAvL3JldHVybiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlQmluZGluZ0Zvckxh
bmd1YWdlSW5zdGFuY2UgKEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpDTGFuZ3VhZ2UsIG9iamVj
dCwgZXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIHJldHVybiBLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZTo6Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UgKEtKUzo6QmluZGluZ3M6Oklu
c3RhbmNlOjpDTGFuZ3VhZ2UsIG9iamVjdCk7CisgICAgfQorfQorCitOUE9iamVjdCAqS1dRS0hU
TUxQYXJ0Ojp3aW5kb3dTY3JpcHROUE9iamVjdCgpCit7CisgICAgaWYgKCFfd2luZG93U2NyaXB0
TlBPYmplY3QpIHsKKyAgICAgICAgS0pTOjpPYmplY3RJbXAgKndpbiA9IHN0YXRpY19jYXN0PEtK
Uzo6T2JqZWN0SW1wICo+KEtKUzo6V2luZG93OjpyZXRyaWV2ZVdpbmRvdyh0aGlzKSk7CisgICAg
ICAgIF93aW5kb3dTY3JpcHROUE9iamVjdCA9IF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0ICgwLCB3
aW4sIGJpbmRpbmdSb290T2JqZWN0KCksIGJpbmRpbmdSb290T2JqZWN0KCkpOworICAgIH0KKwor
ICAgIHJldHVybiBfd2luZG93U2NyaXB0TlBPYmplY3Q7Cit9CisKSW5kZXg6IFdlYkNvcmUva3dx
L0tXUUtIVE1MUGFydC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0
LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMzQsNiArMzQsNyBAQA0KICNpbmNsdWRlICJkb21fbm9kZWltcGwuaCIK
ICNpbmNsdWRlICJodG1sX2Zvcm1pbXBsLmgiCiAjaW5jbHVkZSAiaHRtbF90YWJsZWltcGwuaCIK
KyNpbmNsdWRlICJvYmplY3QuaCIKIAogI2luY2x1ZGUgIldlYkNvcmVLZXlib2FyZEFjY2Vzcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVLZXlWYWx1ZVBhaXIuaCIKQEAgLTQxLDYgKzQyLDkgQEANCiAK
ICNpbmNsdWRlIDxlMzJiYXNlLmg+CiAjaW5jbHVkZSA8dzMyc3RkLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvbnBydW50aW1lLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTlBfanNv
YmplY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+CiAKICNpbmNsdWRl
ICJLV1FEaWN0LmgiCiAjaW5jbHVkZSAiS1dRQ2xpcGJvYXJkLmgiCkBAIC01OCw2ICs2Miw3IEBA
DQogICAgIGNsYXNzIFNhdmVkUHJvcGVydGllczsKICAgICBjbGFzcyBTYXZlZEJ1aWx0aW5zOwog
ICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKKyAgICBjbGFzcyBQcm90ZWN0ZWRWYWx1ZTsKIH0K
IAogY2xhc3MgQ1dlYkNvcmVCcmlkZ2U7CkBAIC0yMDMsNyArMjA4LDcgQEANCiAKICAgICBRUmVj
dCBzZWxlY3Rpb25SZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBnZXRSZW5kZXJUZXh0UmVjdEFycmF5
KGNvbnN0IFREZXNDJiBhVGV4dEVudHJ5LCBjb25zdCBET006Ok5vZGUmIGFOb2RlLCBSQXJyYXk8
VFJlY3Q+JiBhRW50cnlSZWN0TGlzdCk7Ci0gICAgCisKIC8vICAgIE5TUmVjdCB2aXNpYmxlU2Vs
ZWN0aW9uUmVjdCgpIGNvbnN0OwogLy8gICAgTlNJbWFnZSAqc2VsZWN0aW9uSW1hZ2UoKSBjb25z
dDsKIC8vICAgIE5TSW1hZ2UgKnNuYXBzaG90RHJhZ0ltYWdlKERPTTo6Tm9kZSBub2RlLCBOU1Jl
Y3QgKmltYWdlUmVjdCwgTlNSZWN0ICplbGVtZW50UmVjdCkgY29uc3Q7CkBAIC0yMjIsNiArMjI3
LDkgQEANCiAgICAgYm9vbCBLZXlFdmVudChjb25zdCBUS2V5RXZlbnQmIGV2ZW50LCBib29sIHVw
KTsKICAgICAvL2Jvb2wgTGFzdEV2ZW50SXNNb3VzZVVwKCk7CiAKKyNpZmRlZiAgUkRfQlJPV1NF
Ul9XSURHRVRTCisgICAgS0pTOjpPYmplY3RJbXAqIGNyZWF0ZVdpZGdldE9iamVjdChLSlM6OkV4
ZWNTdGF0ZSogZXhlYykgOworI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTCiAKICAgICAvL01l
dGhvZHMgdG8gdXBkYXRlIGZvY3VzYWJsZSBub2RlIGxpc3QKICAgICB2b2lkIHVwZGF0ZUZvY3Vz
YWJsZVJlY3RMaXN0KCk7CkBAIC0yODksOSArMjk3LDEzIEBADQogICAgIHZvaWQgZGlkVGVsbEJy
aWRnZUFib3V0TG9hZChjb25zdCBRU3RyaW5nICZ1cmxTdHJpbmcpOwogICAgIGJvb2wgaGF2ZVRv
bGRCcmlkZ2VBYm91dExvYWQoY29uc3QgUVN0cmluZyAmdXJsU3RyaW5nKTsKIAotLy8gICAgS0pT
OjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3IChOU1ZpZXcgKmFW
aWV3KTsKLS8vICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRBcHBsZXRJbnN0YW5jZUZv
clZpZXcgKE5TVmlldyAqYVZpZXcpOwotLy8gICAgdm9pZCBhZGRQbHVnaW5Sb290T2JqZWN0KGNv
bnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKnJvb3QpOworICAgIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlICpnZXRFbWJlZEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVXaWRnZXQgKmFWaWV3
KTsKKyAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3
KE1XZWJDb3JlV2lkZ2V0ICphVmlldyk7CisgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdl
dEFwcGxldEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVXaWRnZXQgKikgeyByZXR1cm4gMDsgfQor
ICAgIHZvaWQgYWRkUGx1Z2luUm9vdE9iamVjdChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0ICpyb290KTsKKyAgICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpiaW5kaW5nUm9vdE9i
amVjdCgpOworICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKmV4ZWN1dGlvbkNvbnRleHRG
b3JET00oKTsKKyAgICBOUE9iamVjdCAqd2luZG93U2NyaXB0TlBPYmplY3QoKTsKICAgICB2b2lk
IGNsZWFudXBQbHVnaW5Sb290T2JqZWN0cygpOwogCiAgICAgdm9pZCByZWdpc3RlckNvbW1hbmRG
b3JVbmRvKGNvbnN0IGtodG1sOjpFZGl0Q29tbWFuZFB0ciAmKTsKQEAgLTQyNyw5ICs0MzksMTAg
QEANCiAKICAgICBmcmllbmQgY2xhc3MgS0hUTUxQYXJ0OwogCi0vLyAgICBLSlM6OkJpbmRpbmdz
OjpSb290T2JqZWN0ICpfYmluZGluZ1Jvb3Q7ICAvLyBUaGUgcm9vdCBvYmplY3QgdXNlZCBmb3Ig
b2JqZWN0cworICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKl9iaW5kaW5nUm9vdDsgIC8v
IFRoZSByb290IG9iamVjdCB1c2VkIGZvciBvYmplY3RzCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdW5kIG91dHNpZGUgdGhlIGNvbnRleHQgb2YgYSBw
bHVnaW4uCi0vLyAgICBRUHRyTGlzdDxLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2Jq
ZWN0czsKKyAgICBOUE9iamVjdCAqX3dpbmRvd1NjcmlwdE5QT2JqZWN0OworICAgIFFQdHJMaXN0
PEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3RPYmplY3RzOwogICAgIENXZWJTY3JpcHRP
YmplY3QgKl93aW5kb3dTY3JpcHRPYmplY3Q7CiAKICAgICBET006Ok5vZGUgX2RyYWdTcmM7ICAg
ICAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBt
b3VzZSBnZXN0dXJlCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGwuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTY0OSw2ICs2NDksMTUgQEANCiAgICAgICAgICovDQogICAgICAgICBJTVBPUlRf
QyBUQnJDdGxEZWZzOjpUQnJDdGxGaW5kUmVzcG9uc2UgRmluZEtleXdvcmRBZ2FpbiggVEJvb2wg
YUZvd2FyZERpcmVjdGlvbiApOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAg
ICAgICAvKioNCisgICAgICAgICogQ3JlYXRlcyB0aGUgd2lkZ2V0IGV4dGVuc2lvbiBvYmplY3QN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIE1XaWRnZXRFeHRlbnNp
b24NCisgICAgICAgICovDQorICAgICAgICBNV2lkZ2V0RXh0ZW5zaW9uKiBDcmVhdGVXaWRnZXRF
eHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKSA7DQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQorDQogICAgIHB1YmxpYzogLy8gZnJvbSBNQnJDdGxMb2FkRXZl
bnRPYnNlcnZlcg0KIA0KICAgICAgICAgdm9pZCBIYW5kbGVCcm93c2VyTG9hZEV2ZW50TCggVEJy
Q3RsRGVmczo6VEJyQ3RsTG9hZEV2ZW50IGFCckN0bExvYWRFdmVudCwNCkBAIC03MjMsNiArNzMy
LDcgQEANCiAgICAgICAgICovDQogICAgICAgICBUQm9vbCBTZW5kQ29tbWFuZHNUb0NsaWVudChU
QnJDdGxEZWZzOjpUQnJDdGxDbGllbnRDb21tYW5kcyBhQ29tbWFuZCwgY29uc3QgQ0FycmF5Rml4
PFRQdHJDPiYgYUF0dHJpYnV0ZXNOYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZVZhbHVlcyk7DQorDQog
ICAgIHByb3RlY3RlZDogIC8vIEZ1bmN0aW9ucyBmcm9tIENDb2VDb250cm9sDQogDQogICAgICAg
ICAvKioNCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bERlZnMuaAkocmV2aXNp
b24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bERlZnMuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTYwMyw3ICs2MDMsNyBAQA0KIA0KICAgICAgICAgICAgIEVFbGVtZW50
TW91c2VCdXR0b25MaXN0ZW5lciwgLy8vPCBBIE1vdXNlIGJ1dHRvbiBsaXN0ZW5lcg0KICAgICAg
ICAgICAgIEVFbGVtZW50U2Nyb2xsQmFyLCAgICAvLy88IEEgc2Nyb2xsIGJhcg0KLSAgICAgICAg
ICAgIA0KKw0KICAgICAgICAgICAgIEVFbGVtZW50U21hcnRMaW5rVGVsLCAvLy88IEEgdGVsZXBo
b25lIG51bWJlciBpbiB0aGUgcGFnZS4NCiAgICAgICAgICAgICBFRWxlbWVudFNtYXJ0TGlua0Vt
YWlsIC8vLzwgYW4gZW1haWwgYWRkcmVzcyBpbiB0aGUgcGFnZS4NCiAgICAgICAgIH07DQpAQCAt
NzE2LDYgKzcxNiwxNyBAQA0KICAgICAgICAgRUNsaWVudENvbW1hbmRMYXVuY2hGaW5kS2V5d29y
ZCA9IDAsDQogICAgICAgICBFQ2xpZW50Q29tbWFuZFN1YnNjcmliZVRvRmVlZHMNCiAgICAgICAg
IH07DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgLyoqDQorICAgICogVGhlIHdp
ZGdldCBwYXJhbXMuDQorICAgICovDQorICAgIGVudW0gVEJyQ3RsV2lkZ2V0UGFyYW1zDQorICAg
ICAgICB7DQorICAgICAgICBFV2lkZ2V0SWRlbnRpZmllciA9IDAsDQorICAgICAgICBFV2lkZ2V0
QnVuZGxlSWQsDQorICAgICAgICBFV2lkZ2V0QmFzZVBhdGgNCisgICAgICAgIH07DQorI2VuZGlm
IC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgIH07DQogDQogI2VuZGlmICAgICAgLy8gQlJDVExE
RUZTX0gNCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsSW50ZXJmYWNlLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsSW50ZXJmYWNl
LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxJ
bnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTcxLDcgKzcxLDEwIEBADQogY2xhc3MgVEJy
Q3RsU3Vic2NyaWJlVG87DQogY2xhc3MgTUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlcjsNCiBjbGFz
cyBNQnJDdGxDb21tYW5kT2JzZXJ2ZXI7DQotDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMN
CitjbGFzcyBNV2lkZ2V0Q2FsbGJhY2s7DQorY2xhc3MgTVdpZGdldEV4dGVuc2lvbjsNCisjZW5k
aWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiBjbGFzcyBDQnJDdGxJbnRlcmZhY2U7DQogY2xhc3Mg
Q1BsdWdpbkluZm87DQogDQpAQCAtNTk2LDYgKzU5OSwxNSBAQA0KICAgICAgICAgKi8NCiAgICAg
ICAgIElNUE9SVF9DIHZpcnR1YWwgdm9pZCBSZW1vdmVDb21tYW5kT2JzZXJ2ZXIoTUJyQ3RsQ29t
bWFuZE9ic2VydmVyKiBhQnJDdGxDb21tYW5kT2JzZXJ2ZXIpID0gMDsNCiANCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIFVucmVnaXN0ZXIgYSBj
bGllbnQgY29tbWFuZCBpbnRlcmZhY2UgZm9yIHRoZSBicm93c2VyIGVuZ2luZQ0KKyAgICAgICAg
KiBAc2luY2UgMy4xDQorICAgICAgICAqIEBwYXJhbSBUaGUgb2JzZXJ2ZXIgdG8gdW5yZWdpc3Rl
cg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICBJTVBPUlRf
QyB2aXJ0dWFsIE1XaWRnZXRFeHRlbnNpb24qIENyZWF0ZVdpZGdldEV4dGVuc2lvbkwoTVdpZGdl
dENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spID0gMDsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJ
REdFVFMNCiAgICAgfTsNCiANCiANCkBAIC04NjgsNiArODgwLDQ5IEBADQogICAgICAgICB2aXJ0
dWFsIHZvaWQgSGFuZGxlQ29tbWFuZEwoVEJyQ3RsRGVmczo6VEJyQ3RsQ2xpZW50Q29tbWFuZHMg
YUNvbW1hbmQsIGNvbnN0IENBcnJheUZpeDxUUHRyQz4mIGFBdHRyaWJ1dGVzTmFtZXMsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENBcnJheUZpeDxUUHRyQz4m
IGFBdHRyaWJ1dGVWYWx1ZXMpID0gMDsNCiAgICAgfTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KKy8vIENMQVNTIERFQ0xBUkFUSU9ODQorLyoqDQorKiAgVGhpcyBjbGFzcyBwcm92aWRl
cyBhIG1lY2hhbmlzbSBmb3IgdGhlIGJyb3dzZXIgZW5naW5lIHRvIGludGVyYWN0IHdpdGggdGhl
IHdpZGdldCBob3N0IGFwcGxpY2F0aW9uDQorKg0KKyogIEBsaWIgQnJvd3NlckVuZ2luZS5saWIN
CisqICBAc2luY2UgMy4yDQorKi8NCitjbGFzcyBNV2lkZ2V0Q2FsbGJhY2sNCisgICAgew0KKyAg
ICBwdWJsaWM6IC8vIE5ldyBmdW5jdGlvbnMNCisNCisgICAgICAgIC8vVE8gQkUgSU1QTEVNRU5U
RUQNCisgICAgfTsNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKy8qKg0KKyogIFRoaXMgY2xhc3Mg
cHJvdmlkZXMgYW4gZXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3IgdGhlIHdpZGdldCBob3N0IGFwcCB0
byBpbnRlcmFjdCB3aXRoIHRoZSBicm93c2VyIGVuZ2luZQ0KKyogIFRoaXMgY2xhc3MgaW5jbHVk
ZXMgdGhlIFdpZGdldCBzcGVjaWZpYyBleHRlbnNpb24gbmVlZGVkIGluIHRoZSBicm93c2VyIGVu
Z2luZQ0KKyogIEBsaWIgQnJvd3NlckVuZ2luZS5saWINCisqICBAc2luY2UgMy4yDQorKi8NCitj
bGFzcyBNV2lkZ2V0RXh0ZW5zaW9uDQorICAgIHsNCisgICAgcHVibGljOiAvLyBOZXcgZnVuY3Rp
b25zDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIHRvIHNldCBwYXJhbWV0ZXJzIGlu
IHRoZSBicm93c2VyIGVuZ2luZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBw
YXJhbSBUaGUgd2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBm
b3IgdGhlIHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBh
cmFtcyBhUGFyYW0sIGNvbnN0IFREZXNDJiBhVmFsdWUpID0gMDsNCisNCisgICAgICAgIC8qKg0K
KyAgICAgICAgKiBNZXRob2QgdG8gc2V0IHBhcmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5naW5l
DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSB3aWRnZXQgcGFy
YW1ldGVyIGFQYXJhbQ0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW1h
dGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZpcnR1
YWwgdm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwg
VFVpbnQgYVZhbHVlKSA9IDA7DQorICAgIH07DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRT
DQogI2VuZGlmICAgICAgLy8gQlJDVExJTlRFUkZBQ0VfSA0KIA0KIC8vIEVuZCBvZiBGaWxlDQpJ
bmRleDogV2ViS2l0L0Jyb3dzZXJDb250cm9sL3NyYy9CckN0bC5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgV2ViS2l0L0Jyb3dzZXJDb250cm9sL3NyYy9CckN0bC5jcHAJKHdvcmtpbmcgY29weSkNCkBA
IC03Nyw2ICs3Nyw5IEBADQogI2luY2x1ZGUgIkZhdmljb24uaCINCiAjaW5jbHVkZSAiVXJsUmVx
dWVzdEluZm8uaCINCiAjaW5jbHVkZSAiVG9vbEJhci5oIg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9X
SURHRVRTDQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KIA0KICNpZmRlZiBSRF8zMl9CUk9XU0VSDQogI2luY2x1ZGUgIlNtYXJ0TGlu
a0hhbmRsZXIuaCINCkBAIC00MzUsMTQgKzQzOCwxNCBAQA0KICAgICAgICAgZGVsZXRlIChDQnJD
dGxTY3JvbGxpbmdQcm92aWRlciopaUJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI7DQogICAgICAgICB9
DQogDQotICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXIgPSBOVUxMOyAgICANCisgICAgaUJyQ3Rs
U29mdGtleXNPYnNlcnZlciA9IE5VTEw7DQogICAgIGlCckN0bFNwZWNpYWxMb2FkT2JzZXJ2ZXIg
PSBOVUxMOw0KLSAgICBpQnJDdGxMYXlvdXRPYnNlcnZlciA9IE5VTEw7ICAgICAgICANCisgICAg
aUJyQ3RsTGF5b3V0T2JzZXJ2ZXIgPSBOVUxMOw0KICAgICBpQnJDdGxEaWFsb2dzUHJvdmlkZXIg
PSBOVUxMOw0KICAgICBpQnJDdGxXaW5kb3dPYnNlcnZlciA9IE5VTEw7DQogICAgIGlCckN0bERv
d25sb2FkT2JzZXJ2ZXIgPSBOVUxMOw0KLSAgICBpQnJDdGxTY3JvbGxpbmdQcm92aWRlciA9IE5V
TEw7ICAgIA0KLSAgICANCisgICAgaUJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIgPSBOVUxMOw0KKw0K
ICAgICAvLw0KICAgICBkZWxldGUgaUh0dHBMb2FkZXJFdmVudFRvVWlMaXN0ZW5lcjsNCiANCkBA
IC00NjMsNyArNDY2LDcgQEANCiANCiAgICAgLy9EZWxldGUgdGhlIFdlYmtpdENvbnRyb2wNCiAg
ICAgZGVsZXRlIGlXZWJLaXRDb250cm9sOw0KLSAgICANCisNCiAgICAgLy8gY2xvc2UgdGhlIGFy
cmF5cywgYXZvaWQgbWVtb3J5IGxlYWtzDQogICAgIGlMb2FkRXZlbnRPYnNlcnZlcnNBcnJheS5D
bG9zZSgpOw0KICAgICBpU3RhdGVDaGFuZ2VPYnNlcnZlckFycmF5LkNsb3NlKCk7DQpAQCAtNDcy
LDcgKzQ3NSw3IEBADQogICAgIGlTdWJzY3JpYmVUb0l0ZW1zLkNsb3NlKCk7DQogICAgIGlXbWxT
ZXJ2aWNlT3B0aW9uLkNsb3NlKCk7DQogDQotICAgIA0KKw0KICAgICB9DQogDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCkBAIC03MzMsNyArNzM2LDcgQEANCiAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5TZXRTbWFy
dExpbmtNb2RlKEVTbWFydExpbmtQaG9uZSk7DQogICAgICAgICAgICAgICAgIGlXZWJLaXRDb250
cm9sLT5XZWJLaXRWaWV3KCkuRmluZE5leHRTbWFydExpbmsoRVRydWUpOw0KLSAgICAgICAgICAg
ICAgICB9ICAgIA0KKyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgYnJlYWs7DQogICAg
ICAgICAgICAgfQ0KICAgICAgICAgY2FzZSBUQnJDdGxEZWZzOjpFQ29tbWFuZEZpbmRJdGVtRU1h
aWw6DQpAQCAtNzQzLDkgKzc0Niw5IEBADQogICAgICAgICAgICAgICAgIGZvciAoIFRJbnQgaT0w
OyBpPGlTdGF0ZUNoYW5nZU9ic2VydmVyQXJyYXkuQ291bnQoKTsgaSsrICkNCiAgICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgIGlTdGF0ZUNoYW5nZU9ic2VydmVyQXJy
YXlbaV0tPlN0YXRlQ2hhbmdlZCggVEJyQ3RsRGVmczo6RVN0YXRlU21hcnRUZXh0VmlldywgRVRy
dWUpOw0KLSAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICBpV2ViS2l0Q29udHJvbC0+V2ViS2l0VmlldygpLlNl
dFNtYXJ0TGlua01vZGUoIEVTbWFydExpbmtFbWFpbCApOw0KLSAgICAgICAgICAgICAgICBpV2Vi
S2l0Q29udHJvbC0+V2ViS2l0VmlldygpLkZpbmROZXh0U21hcnRMaW5rKCBFVHJ1ZSApOyAgICAN
CisgICAgICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5GaW5kTmV4dFNt
YXJ0TGluayggRVRydWUgKTsNCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgICAgICB9DQpAQCAtODc2LDYgKzg3OSwxNyBAQA0KICAgICAgICAgICAgICAgICBU
UGx1Z2luQ29udHJvbCBwbHVnaW5Db250cm9sKCppV2ViS2l0Q29udHJvbCk7DQogICAgICAgICAg
ICAgICAgIHBsdWdpbkNvbnRyb2wuSGFuZGxlUGx1Z2luQ29tbWFuZEwoYUNvbW1hbmQpOw0KICAg
ICAgICAgICAgICAgICB9DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgICAg
ICBlbHNlDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgQ1dpZGdldEV4dGVu
c2lvbiogd2RndEV4dCA9IGlXZWJLaXRDb250cm9sLT5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAg
ICAgICAgICAgICAgaWYgKHdkZ3RFeHQpDQorICAgICAgICAgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgICAgICAgICB3ZGd0RXh0LT5PcHRpb25zTWVudUl0ZW1TZWxlY3RlZChhQ29tbWFuZCk7
DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAg
ICAgICAgICAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfSAgIC8vIGVuZCBvZiBzd2l0Y2gNCkBA
IC0xMTA2LDYgKzExMjAsMTMgQEANCiAgICAgLy8gQmFzZSB3ZSdyZSB1c2luZyBmb3IgdGhlIHBs
dWctaW5zDQogICAgIFRQbHVnaW5Db250cm9sIHBsdWdpbkNvbnRyb2woKmlXZWJLaXRDb250cm9s
KTsNCiAgICAgcGx1Z2luQ29udHJvbC5BZGRQbHVnaW5PcHRpb25NZW51SXRlbXNMKGFNZW51UGFu
ZSwgVEJyQ3RsRGVmczo6RUNvbW1hbmRJZFBsdWdpbkJhc2UsIGFBZnRlcik7DQorI2lmZGVmICBS
RF9CUk9XU0VSX1dJREdFVFMNCisgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IGlXZWJL
aXRDb250cm9sLT5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgaWYgKHdkZ3RFeHQpDQorICAgICAg
ICB7DQorICAgICAgICB3ZGd0RXh0LT5BZGRPcHRpb25NZW51SXRlbXNMKGFNZW51UGFuZSk7DQor
ICAgICAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgIH0NCiANCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTE4OTMsNyArMTkxNCw3IEBADQogICAgIGlmIChpQnJD
dGxTb2Z0a2V5c09ic2VydmVyKQ0KICAgICAgICAgew0KICAgICAgICAgaUJyQ3RsU29mdGtleXNP
YnNlcnZlci0+VXBkYXRlU29mdGtleUwoRUtleUxlZnQsIEtOdWxsRGVzQywgMCwgRUNoYW5nZVJl
YXNvbklkbGUpOw0KLSAgICAgICAgaUJyQ3RsU29mdGtleXNPYnNlcnZlci0+VXBkYXRlU29mdGtl
eUwoRUtleVJpZ2h0LCBLTnVsbERlc0MsIDAsIEVDaGFuZ2VSZWFzb25JZGxlKTsgICAgICAgIA0K
KyAgICAgICAgaUJyQ3RsU29mdGtleXNPYnNlcnZlci0+VXBkYXRlU29mdGtleUwoRUtleVJpZ2h0
LCBLTnVsbERlc0MsIDAsIEVDaGFuZ2VSZWFzb25JZGxlKTsNCiAgICAgICAgIH0NCiAgICAgfQ0K
IA0KQEAgLTIzNjMsNCArMjM4NCwxNiBAQA0KICAgICByZXR1cm4gRVRydWU7DQogICAgIH0NCiAN
CisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
Ly8gQ0JyQ3RsOjpDcmVhdGVXaWRnZXRFeHRlbnNpb24NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8NCitFWFBPUlRfQyBNV2lkZ2V0RXh0ZW5zaW9uKiBDQnJDdGw6OkNyZWF0ZVdp
ZGdldEV4dGVuc2lvbkwoTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spDQorICAgIHsN
CisgICAgcmV0dXJuIGlXZWJLaXRDb250cm9sLT5DcmVhdGVXaWRnZXRFeHRlbnNpb25MKGFXaWRn
ZXRDYWxsYmFjayk7DQorICAgIH0NCisNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAv
LyAgRW5kIG9mIEZpbGUNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL3dlYmtpdGJyaWRn
ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2Uu
aAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy93ZWJraXRicmlk
Z2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIsMTMgKzIsMTMgQEANCiAqID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KICogIE5hbWUgICAgICAgIDogd2Via2l0YnJpZGdlLmgNCiAqICBQYXJ0IG9mICAg
ICA6IFdlYmtpdCAvIEJyb3dzZXJWaWV3DQotKiAgSW50ZXJmYWNlICAgOiANCisqICBJbnRlcmZh
Y2UgICA6DQogKiAgRGVzY3JpcHRpb24gOg0KICogIFZlcnNpb24gICAgIDogMy4xDQogKg0KICog
ICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbg0KICogICAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCi0qICANCisqDQogKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogICBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAq
ICAgYXJlIG1ldDoNCkBAIC0yMiw3ICsyMiw3IEBADQogKiAgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCiAqICAgICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQNCiAqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQotKiAgDQorKg0KICogICBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQogKiAg
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UDQogKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KQEAgLTkxLDYgKzkxLDEwIEBADQogDQogICAg
IHB1YmxpYzogLy8gTWV0aG9kcyBGcm9tIE1XZWJDbGllbnRCcmlkZ2UNCiANCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgdm9pZCogY3JlYXRlV2lkZ2V0T2JqZWN0KHZvaWQq
IGV4ZWMpOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KKw0KICAgICAgICAgLyoqDQog
ICAgICAgICAqIENoaWxkRnJhbWVzDQogICAgICAgICAqIEZyb20gTVdlYkNsaWVudEJyaWRnZQ0K
QEAgLTEwMjYsNyArMTAzMCw3IEBADQogICAgICAgICBDV2ViS2l0TG9hZGVyKiAgICAgICAgICBp
TG9hZGVyOyAgICAgICAgICAgICAgLy8gb3duZWQNCiAgICAgLy8NCiAgICAgQ0lkbGUqICAgICAg
ICAgIGlDbG9zZVdpbmRvd0NhbGxiYWNrOyAvL293ZWQNCi0gICAgDQorDQogICAgICAgICAvLyBW
YXJpYWJsZXMgdG8gc3RvcmUgdGhlIHN0YXRlDQogICAgICAgICBIQnVmQyogaVBhZ2VUaXRsZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG93bmVkDQogICAgICAgICBIQnVmQyogaVN0YXR1
c1RleHQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB3bmVkDQpJbmRleDogV2ViS2l0L0Jy
b3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJv
d3NlclZpZXcvaW5jL1dlYktpdENvbnRyb2wuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0
L0Jyb3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmgJKHdvcmtpbmcgY29weSkNCkBAIC05MCw2
ICs5MCw5IEBADQogY2xhc3MgQ0h0dHBDYWNoZU1hbmFnZXI7DQogY2xhc3MgQ1N0YXRpY0ltYWdl
RGVjb2RlcjsNCiBjbGFzcyBDUGx1Z2luQ29udGVudFBsYXllcjsNCisjaWZkZWYgIFJEX0JST1dT
RVJfV0lER0VUUw0KK2NsYXNzIENXaWRnZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRfQlJPV1NF
Ul9XSURHRVRTDQogDQogLy8gQ0xBU1MgREVDTEFSQVRJT04NCiAvKioNCkBAIC0zMTEsNiArMzE0
LDE2IEBADQogICAgICAgICAqLw0KICAgICAgICAgQ1dlYktpdFZpZXcqIENyZWF0ZVdpbmRvdyhj
b25zdCBURGVzQyYgYUZyYW1lTmFtZSxUQm9vbCBhVXNlckluaXRpYXRlZCk7DQogDQorI2lmZGVm
ICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBDcmVhdGVXaWRn
ZXRFeHRlbnNpb24NCisgICAgICAgICogUHVycG9zZTogQ3JlYXRlcyB0aGUgd2lkZ2V0IGV4dGVu
c2lvbiBvYmplY3QNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gTVdp
ZGdldENhbGxiYWNrKiBhV2lkZ2V0Q2FsbGJhY2sNCisgICAgICAgICogQHJldHVybiBNV2lkZ2V0
RXh0ZW5zaW9uKg0KKyAgICAgICAgKi8NCisgICAgICAgIE1XaWRnZXRFeHRlbnNpb24qIENyZWF0
ZVdpZGdldEV4dGVuc2lvbkwoTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spIDsNCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBG
aW5kV2luZG93TmFtZWQNCkBAIC00OTMsNyArNTA2LDE2IEBADQogICAgICAgICAqLw0KICAgICAg
ICAgQ0JyQ3RsJiBCckN0bCgpIGNvbnN0IHsgcmV0dXJuICppQnJDdGw7IH0NCiANCisjaWZkZWYg
IFJEX0JST1dTRVJfV0lER0VUUw0KICAgICAgICAgLyoqDQorICAgICAgICAqIEFzc29jaWF0ZWQg
YnJvd3NlciBjb250cm9sDQorICAgICAgICAqIEBzaW5jZSAzLjANCisgICAgICAgICogQHJldHVy
biBBIHJlZmVyZW5jZSB0byBCckN0bA0KKyAgICAgICAgKi8NCisgICAgICAgIENXaWRnZXRFeHRl
bnNpb24qIFdpZGdldEV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlXaWRnZXRFeHRlbnNpb247
IH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCisgICAgICAgIC8qKg0KICAgICAg
ICAgKiBSZXNvdXJjZSBsb2FkZXIgc2V0dGluZ3MgY29udHJvbGxlcg0KICAgICAgICAgKiBAc2lu
Y2UgMy4wDQogICAgICAgICAqIEByZXR1cm4gQSByZWZlcmVuY2UNCkBAIC04OTMsNiArOTE1LDkg
QEANCiAgICAgICAgIC8vIHBsdWdpbiBwbGF5ZXINCiAgICAgICAgIENQbHVnaW5Db250ZW50UGxh
eWVyKiAgICAgICBpUGx1Z2luUGxheWVyOw0KICNlbmRpZg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9X
SURHRVRTDQorICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiBpV2lkZ2V0RXh0ZW5zaW9uOw0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9Ow0KIA0KICNlbmRpZiAgICAgIC8vIFdF
QktJVENPTlRST0xfSA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0RXh0ZW5z
aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldEV4dGVu
c2lvbi5oCShyZXZpc2lvbiAwKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0RXh0
ZW5zaW9uLmgJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDM1NSBAQA0KKy8qDQorKiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktpdFdpZGdldEludGVyZmFjZS5o
DQorKiAgUGFydCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAg
RGVzY3JpcHRpb24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0
IChjKSAyMDA0IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGlu
ZyBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBp
cyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJl
cHJvZHVjaW5nLCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3Ig
YWxsIG9mIHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBv
Zg0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29u
ZmlkZW50aWFsDQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8g
b3RoZXJzIHdpdGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENv
cnBvcmF0aW9uLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisjaWZuZGVmIF9f
V0lER0VURU5HSU5FQ0FMTEJBQ0sNCisjZGVmaW5lIF9fV0lER0VURU5HSU5FQ0FMTEJBQ0sNCisN
CisvLyAgSU5DTFVERVMNCisjaW5jbHVkZSA8ZTMyYmFzZS5oPg0KKyNpbmNsdWRlIDxlMzJoYXNo
dGFiLmg+DQorI2luY2x1ZGUgPEJyQ3RsSW50ZXJmYWNlLmg+DQorI2luY2x1ZGUgIldpZGdldEVu
Z2luZUJyaWRnZS5oIg0KKw0KKy8vIENPTlNUQU5UUw0KKw0KKy8vIE1BQ1JPUw0KKw0KKy8vIERB
VEEgVFlQRVMNCisNCisvLyBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gRk9SV0FSRCBERUNM
QVJBVElPTg0KK2NsYXNzIENXZWJLaXRWaWV3Ow0KK2NsYXNzIENXaWRnZXRQcmVmZXJlbmNlczsN
CitjbGFzcyBUV2lkZ2V0UmVuZGVyZXI7DQorY2xhc3MgQ0Vpa01lbnVQYW5lOw0KKw0KKy8vIENM
QVNTIERFQ0xBUkFUSU9ODQorLyoqDQorKiAgQ1dpZGdldEV4dGVuc2lvbg0KKyoNCisqICBAbGli
IGJyb3dzZXJlbmdpbmUuZGxsDQorKiAgQHNpbmNlIDMuMg0KKyovDQorY2xhc3MgQ1dpZGdldEV4
dGVuc2lvbjogcHVibGljIENCYXNlLCBwdWJsaWMgTVdpZGdldEVuZ2luZUNhbGxCYWNrLCBwdWJs
aWMgTVdpZGdldEV4dGVuc2lvbg0KKyAgICB7DQorICAgIHB1YmxpYzoNCisgICAgICAgIC8qKg0K
KyAgICAgICAgKiBDb25zdHJ1Y3Rvcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAq
IEBwYXJhbSBXZWJraXRWaWV3DQorICAgICAgICAqIEBwYXJhbSBXaWRnZXRDYWxsYmFjayBpbnRl
cmZhY2UNCisgICAgICAgICogQHJldHVybiBDV2lkZ2V0RXh0ZW5zaW9uIG9iamVjdC4NCisgICAg
ICAgICovDQorICAgICAgICBzdGF0aWMgQ1dpZGdldEV4dGVuc2lvbiogTmV3TChDV2ViS2l0Vmll
dyYgYVdlYktpdFZpZXcsTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spOw0KKw0KKyAg
ICAgICAgLyoqDQorICAgICAgICAqIERlc3RydWN0b3IuDQorICAgICAgICAqLw0KKyAgICAgICAg
dmlydHVhbCB+Q1dpZGdldEV4dGVuc2lvbigpOw0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICAv
KioNCisgICAgICAgICogTWV0aG9kIEFkZE9wdGlvbk1lbnVJdGVtc0wNCisgICAgICAgICogQHNp
bmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIG9wdGlvbnMgbWVudQ0KKyAgICAgICAgKiBA
cmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIEFkZE9wdGlvbk1lbnVJdGVt
c0woIENFaWtNZW51UGFuZSYgYU1lbnVQYW5lICk7DQorDQorICAgICAgICAvKioNCisgICAgICAg
ICogTWV0aG9kIE9wdGlvbnNNZW51SXRlbVNlbGVjdGVkDQorICAgICAgICAqIEBzaW5jZSAzLjIN
CisgICAgICAgICogQHBhcmFtIFRoZSBvcHRpb25zIG1lbnUgY29tbWFuZA0KKyAgICAgICAgKiBA
cmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIE9wdGlvbnNNZW51SXRlbVNl
bGVjdGVkKCBUSW50IGFDb21tYW5kICk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIE9uSGlkZVNlbGVjdGVkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJl
dHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBPbkhpZGVTZWxlY3RlZCgpOw0K
Kw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBPblJlbW92ZVNlbGVjdGVkDQorICAg
ICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0K
KyAgICAgICAgdm9pZCBPblJlbW92ZVNlbGVjdGVkKCk7DQorDQorICAgICAgICAvKioNCisgICAg
ICAgICogTWV0aG9kIE9uU2hvd1NlbGVjdGVkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAg
ICAgICogQHBhcmFtIFRoZSB3aWRnZXQgaWRlbnRpZmllcg0KKyAgICAgICAgKiBAcGFyYW0gVGhl
IHZhbHVlIGZvciB0aGUgcGFyYW1hdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAg
ICAgKi8NCisgICAgICAgIHZvaWQgT25TaG93U2VsZWN0ZWQoKTsNCisNCisgICAgcHVibGljOiAv
LyBGcm9tIE1XaWRnZXRFbmdpbmVDYWxsQmFjaw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IE1ldGhvZCBPcGVuQXBwbGljYXRpb24NCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAg
KiBAcGFyYW0gVGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIG9wZW4NCisgICAgICAgICog
QHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBPcGVuQXBwbGljYXRpb24o
Y29uc3QgVERlc0MmIGFBcHBOYW1lLCBjb25zdCBURGVzQyYgYVBhcmFtKTsNCisNCisgICAgICAg
IC8qKg0KKyAgICAgICAgKiBNZXRob2QgT3BlblVybA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEBwYXJhbSBUaGUgdXJsIHRvIG9wZW4NCisgICAgICAgICogQHJldHVybiB2b2lk
DQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBPcGVuVXJsKGNvbnN0IFREZXNDJiBhVXJsKTsN
CisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgUHJlZmVyZW5jZUZvcktleQ0KKyAg
ICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgcHJlZmVyZW5jZSBrZXkN
CisgICAgICAgICogQHBhcmFtIFRoZSBwcmVmZXJlbmNlIHZhbHVlDQorICAgICAgICAqIEByZXR1
cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIFRJbnQgUHJlZmVyZW5jZUZvcktleShjb25z
dCBURGVzQyYgYUtleSwgVFB0ckMmIGFWYWx1ZSk7DQorDQorICAgICAgICAvKioNCisgICAgICAg
ICogTWV0aG9kIFByZXBhcmVGb3JUcmFuc2l0aW9uDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHBhcmFtIFRoZSB0cmFuc2l0aW9uIHR5cGUNCisgICAgICAgICogQHJldHVybiB2
b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBQcmVwYXJlRm9yVHJhbnNpdGlvbihjb25z
dCBURGVzQyYgYVRyYW5zaXRpb24pOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhv
ZCBQZXJmb3JtVHJhbnNpdGlvbg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgUGVyZm9ybVRyYW5zaXRpb24o
KTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgU2V0UHJlZmVyZW5jZUZvcktl
eQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgcHJlZmVyZW5j
ZSBrZXkNCisgICAgICAgICogQHBhcmFtIFRoZSBwcmVmZXJlbmNlIHZhbHVlDQorICAgICAgICAq
IEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0UHJlZmVyZW5jZUZv
cktleShjb25zdCBURGVzQyYgYUtleSwgY29uc3QgVERlc0MmIGFWYWx1ZSk7DQorDQorICAgICAg
ICAvKioNCisgICAgICAgICogTWV0aG9kIEFkZE9wdGlvbnNNZW51SXRlbQ0KKyAgICAgICAgKiBA
c2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBOYW1lIG9mIG9wdGlvbnMgbWVudSBpdGVtDQor
ICAgICAgICAqIEByZXR1cm4gY29tbWFuZCBpZA0KKyAgICAgICAgKi8NCisgICAgICAgIFRJbnQg
QWRkT3B0aW9uc01lbnVJdGVtKGNvbnN0IFREZXNDJiBhTmFtZSk7DQorDQorICAgICAgICAvKioN
CisgICAgICAgICogTWV0aG9kIENsZWFyT3B0aW9uc01lbnUNCisgICAgICAgICogQHNpbmNlIDMu
Mg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIENs
ZWFyT3B0aW9uc01lbnUoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgR2V0
V2lkZ2V0SWQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIFRoZSB3
aWRnZXQgaWRlbnRpZmllcg0KKyAgICAgICAgKi8NCisgICAgICAgIFREZXNDJiBHZXRXaWRnZXRC
dW5kbGVJZCgpIHsgcmV0dXJuICppV2lkZ2V0QnVuZGxlSWQ7IH0NCisNCisgICAgICAgIC8qKg0K
KyAgICAgICAgKiBNZXRob2QgU2V0U2Nyb2xsQmFyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHBhcmFtIFRCb29sIHZpc2libGUNCisgICAgICAgICogQHJldHVybiB2b2lkDQor
ICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRTY3JvbGxCYXIoVEJvb2wgYVZpc2libGUpOw0K
Kw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBTZXROYXZpZ2F0aW9uRW5hYmxlZA0K
KyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUQm9vbCBlbmFibGVkDQor
ICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0TmF2
aWdhdGlvbkVuYWJsZWQoVEJvb2wgYUVuYWJsZSk7DQorDQorICAgICAgICAvKioNCisgICAgICAg
ICogTWV0aG9kIFNldE9wdGlvbnNNZW51TGlzdGVuZXINCisgICAgICAgICogQHNpbmNlIDMuMg0K
KyAgICAgICAgKiBAcGFyYW0gQ1dpZGdldEV2ZW50SGFuZGxlcg0KKyAgICAgICAgKiBAcmV0dXJu
IHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldE9wdGlvbnNNZW51TGlzdGVuZXIo
Q1dpZGdldEV2ZW50SGFuZGxlciogYUNhbGxiYWNrKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAg
ICAgKiBNZXRob2QgU2V0T25IaWRlTGlzdGVuZXINCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAg
ICAgICAgKiBAcGFyYW0gQ1dpZGdldEV2ZW50SGFuZGxlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZv
aWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldE9uSGlkZUxpc3RlbmVyKENXaWRnZXRF
dmVudEhhbmRsZXIqIGFDYWxsYmFjayk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIFNldE9uUmVtb3ZlTGlzdGVuZXINCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAg
KiBAcGFyYW0gQ1dpZGdldEV2ZW50SGFuZGxlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisg
ICAgICAgICovDQorICAgICAgICB2b2lkIFNldE9uUmVtb3ZlTGlzdGVuZXIoQ1dpZGdldEV2ZW50
SGFuZGxlciogYUNhbGxiYWNrKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2Qg
U2V0T25TaG93TGlzdGVuZXINCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFy
YW0gQ1dpZGdldEV2ZW50SGFuZGxlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAg
ICovDQorICAgICAgICB2b2lkIFNldE9uU2hvd0xpc3RlbmVyKENXaWRnZXRFdmVudEhhbmRsZXIq
IGFDYWxsYmFjayk7DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBN
ZXRob2QgV2lkZ2V0UmVuZGVyZXINCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBA
cmV0dXJuIHdpZGdldCByZW5kZXJlcg0KKyAgICAgICAgKi8NCisgICAgICAgIFRXaWRnZXRSZW5k
ZXJlciogV2lkZ2V0UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBpV2lkZ2V0UmVuZGVyZXI7IH0N
CisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgV2lkZ2V0RW5naW5lQnJpZGdldA0K
KyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gd2lkZ2V0IGVuZ2luZSBi
cmlkZ2UNCisgICAgICAgICovDQorICAgICAgICBNV2lkZ2V0RW5naW5lQnJpZGdlJiBXaWRnZXRF
bmdpbmVCcmlkZ2UoKSBjb25zdCB7IHJldHVybiAqaVdpZGdldEVuZ2luZUJyaWRnZTsgfQ0KKw0K
KyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBOYXZpZ2F0aW9uRW5hYmxlZA0KKyAgICAg
ICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gYm9vbA0KKyAgICAgICAgKi8NCisg
ICAgICAgIFRCb29sIE5hdmlnYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaU5hdmlnYXRp
b25FbmFibGVkOyB9DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFdpZGdldEJh
c2VQYXRoDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiBURGVzQyB3
aWRnZXQgYmFzZSBwYXRoDQorICAgICAgICAqLw0KKyAgICAgICAgVERlc0MmIFdpZGdldEJhc2VQ
YXRoKCkgY29uc3QgeyByZXR1cm4gKmlXaWRnZXRCYXNlUGF0aDsgfQ0KKw0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCBHZXRXaWRnZXRJZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEByZXR1cm4gVGhlIHdpZGdldCB1aWQNCisgICAgICAgICovDQorICAgICAgICBU
SW50IEdldFdpZGdldElkKCkgeyByZXR1cm4gaVdpZGdldElkOyB9DQorDQorICAgIHB1YmxpYzog
Ly8gTmV3IGZ1bmN0aW9ucw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCB0byBz
ZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJvd3NlciBlbmdpbmUNCisgICAgICAgICogQHNpbmNlIDMu
Mg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHdpZGdldCBpZGVudGlmaWVyDQorICAgICAgICAqIEBw
YXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBwYXJhbWF0ZXINCisgICAgICAgICogQHJldHVybiB2b2lk
DQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3Rs
V2lkZ2V0UGFyYW1zIGFQYXJhbSwgY29uc3QgVERlc0MmIGFWYWx1ZSk7DQorDQorICAgICAgICAv
KioNCisgICAgICAgICogTWV0aG9kIHRvIHNldCBwYXJhbWV0ZXJzIGluIHRoZSBicm93c2VyIGVu
Z2luZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgd2lkZ2V0
IHBhcmFtZXRlciBhUGFyYW0NCisgICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBmb3IgdGhlIHBh
cmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2
b2lkIFNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBhcmFtLCBUVWlu
dCBhVmFsdWUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBjcmVhdGVXaWRn
ZXRPYmplY3QNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0NCisgICAg
ICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCogY3JlYXRlV2lk
Z2V0T2JqZWN0KHZvaWQqIGV4ZWMpOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgIC8qKg0K
KyAgICAgICAgKiBNZXRob2QgTG9hZFdpZGdldEVuZ2luZURsbEwNCisgICAgICAgICogQHNpbmNl
IDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lk
IExvYWRXaWRnZXRFbmdpbmVEbGxMKCk7DQorDQorICAgICAgICAgLyoqDQorICAgICAgICAqIE1l
dGhvZCBDcmVhdGVBcHBIYXNoVGFibGVMDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBDcmVhdGVBcHBIYXNo
VGFibGVMKCk7DQorDQorICAgICAgICAvKg0KKyAgICAgICAgKiBNZXRob2QgTGF1bmNoQXBwbGlj
YXRpb25MDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSBuYW1l
IG9mIHRoZSBhcHBsaWNhdGlvbiB0byBvcGVuDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAg
ICAgICAgKi8NCisgICAgICAgIHZvaWQgTGF1bmNoQXBwbGljYXRpb25MKGNvbnN0IFRVaWQmIGFV
aWQsIGNvbnN0IFREZXNDJiBhUGFyYW0pOw0KKw0KKyAgICBwcm90ZWN0ZWQ6DQorICAgICAgICAv
KioNCisgICAgICAgICogMm5kIHBoYXNlIGNvbnN0cnVjdG9yLg0KKyAgICAgICAgKi8NCisgICAg
ICAgIHZvaWQgQ29uc3RydWN0TCgpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEMrKyBj
b25zdHJ1Y3Rvci4NCisgICAgICAgICovDQorICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKCBDV2Vi
S2l0VmlldyYgYVdlYktpdFZpZXcsTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2sgKTsN
CisNCisNCisgICAgcHJpdmF0ZToNCisgICAgICAgIENXZWJLaXRWaWV3KiBpV2ViS2l0Vmlldzsg
ICAgICAgICAgICAgICAgICAgIC8vbm90IG93bmVkDQorDQorICAgICAgICBDV2lkZ2V0UHJlZmVy
ZW5jZXMqIGlQcmVmZXJlbmNlczsNCisgICAgICAgIFRXaWRnZXRSZW5kZXJlciogaVdpZGdldFJl
bmRlcmVyOw0KKw0KKyAgICAgICAgc3RydWN0IFRNZW51SXRlbQ0KKyAgICAgICAgICAgIHsNCisg
ICAgICAgICAgICBIQnVmQyogaVRleHQ7DQorICAgICAgICAgICAgVEludCBpQ21kSWQ7DQorICAg
ICAgICAgICAgfTsNCisNCisgICAgICAgIFJBcnJheTxUTWVudUl0ZW0+IGlNZW51SXRlbXM7DQor
DQorICAgICAgICBUSW50ICAgIGlXaWRnZXRJZDsNCisgICAgICAgIFRCb29sICAgaU5hdmlnYXRp
b25FbmFibGVkOw0KKyAgICAgICAgVEJvb2wgICBpUGFnZVNjYWxlcldhc0VuYWJsZWQ7DQorICAg
ICAgICBIQnVmQyogIGlXaWRnZXRCYXNlUGF0aDsNCisgICAgICAgIEhCdWZDKiAgaVdpZGdldEJ1
bmRsZUlkOw0KKw0KKyAgICAgICAgTVdpZGdldEVuZ2luZUJyaWRnZSogaVdpZGdldEVuZ2luZUJy
aWRnZTsNCisgICAgICAgIE1XaWRnZXRDYWxsYmFjayogaVdpZGdldENhbGxiYWNrOw0KKw0KKyAg
ICAgICAgUlB0ckhhc2hNYXA8VERlc0MsVEludD4gaUFwcFVpZE1hcDsNCisgICAgICAgIFJMaWJy
YXJ5IGlMaWJyYXJ5Ow0KKw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KSW5kZXg6IFdlYktpdC9Ccm93
c2VyVmlldy9pbmMvV2lkZ2V0UHJlZmVyZW5jZXMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9C
cm93c2VyVmlldy9pbmMvV2lkZ2V0UHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMCkNCisrKyBXZWJL
aXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDc0IEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5hbWUgICAg
ICAgIDogV2ViS2l0V2lkZ2V0SW50ZXJmYWNlLmgNCisqICBQYXJ0IG9mICAgICA6IFdlYkVuZ2lu
ZS9XZWJLaXRXaWRnZXRJbnRlcmZhY2UNCisqICBEZXNjcmlwdGlvbiA6DQorKiAgVmVyc2lvbiAg
ICAgOiAyLjEuMQ0KKyoNCisqICBDb3B5cmlnaHQgKGMpIDIwMDQgTm9raWEgQ29ycG9yYXRpb24u
DQorKiAgVGhpcyBtYXRlcmlhbCwgaW5jbHVkaW5nIGRvY3VtZW50YXRpb24gYW5kIGFueSByZWxh
dGVkDQorKiAgY29tcHV0ZXIgcHJvZ3JhbXMsIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgY29u
dHJvbGxlZCBieQ0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIGFyZSByZXNlcnZl
ZC4gQ29weWluZywNCisqICBpbmNsdWRpbmcgcmVwcm9kdWNpbmcsIHN0b3JpbmcsIGFkYXB0aW5n
IG9yIHRyYW5zbGF0aW5nLCBhbnkNCisqICBvciBhbGwgb2YgdGhpcyBtYXRlcmlhbCByZXF1aXJl
cyB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mDQorKiAgTm9raWEgQ29ycG9yYXRpb24uIFRo
aXMgbWF0ZXJpYWwgYWxzbyBjb250YWlucyBjb25maWRlbnRpYWwNCisqICBpbmZvcm1hdGlvbiB3
aGljaCBtYXkgbm90IGJlIGRpc2Nsb3NlZCB0byBvdGhlcnMgd2l0aG91dCB0aGUNCisqICBwcmlv
ciB3cml0dGVuIGNvbnNlbnQgb2YgTm9raWEgQ29ycG9yYXRpb24uDQorKiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCisqLw0KKw0KKyNpZm5kZWYgX19XSURHRVRFTkdJTkVQUkVGRVJFTkNFUw0KKyNk
ZWZpbmUgX19XSURHRVRFTkdJTkVQUkVGRVJFTkNFUw0KKw0KKy8vICBJTkNMVURFUw0KKyNpbmNs
dWRlIDxlMzJiYXNlLmg+DQorI2luY2x1ZGUgPGUzMmhhc2h0YWIuaD4NCisvLyBDT05TVEFOVFMN
CisNCisvLyBNQUNST1MNCisNCisvLyBEQVRBIFRZUEVTDQorDQorLy8gRlVOQ1RJT04gUFJPVE9U
WVBFUw0KKw0KKy8vIEZPUldBUkQgREVDTEFSQVRJT04NCitjbGFzcyBDV2lkZ2V0RXh0ZW5zaW9u
Ow0KKw0KKy8vIENMQVNTIERFQ0xBUkFUSU9ODQorLyoqDQorKiAgQ1dpZGdldFByZWZlcmVuY2Vz
DQorKg0KKyogIEBsaWIgd2lkZ2V0ZW5naW5lLmRsbA0KKyogIEBzaW5jZSAzLjENCisqLw0KK2Ns
YXNzIENXaWRnZXRQcmVmZXJlbmNlcyA6IHB1YmxpYyBDQmFzZQ0KKyAgICB7DQorDQorICAgIHB1
YmxpYzoNCisgICAgICAgIHN0YXRpYyBDV2lkZ2V0UHJlZmVyZW5jZXMqIE5ld0woQ1dpZGdldEV4
dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbik7DQorICAgICAgICBzdGF0aWMgQ1dpZGdldFByZWZl
cmVuY2VzKiBOZXdMQyhDV2lkZ2V0RXh0ZW5zaW9uJiBhV2lkZ2V0RXh0ZW5zaW9uKTsNCisgICAg
ICAgIH5DV2lkZ2V0UHJlZmVyZW5jZXMoKTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgdm9p
ZCBMb2FkTCgpOw0KKyAgICAgICAgdm9pZCBTYXZlTCgpOw0KKyAgICAgICAgVEludCBQcmVmZXJl
bmNlTChjb25zdCBURGVzQyYgYU5hbWUsIFRQdHJDJiBhVmFsdWUpOw0KKyAgICAgICAgdm9pZCBT
ZXRQcmVmZXJlbmNlTChjb25zdCBURGVzQyYgYU5hbWUsIGNvbnN0IFREZXNDJiBhVmFsdWUpOw0K
Kw0KKyAgICBwcm90ZWN0ZWQ6DQorICAgICAgICB2b2lkIEVtcHR5KCk7DQorICAgICAgICB2b2lk
IENyZWF0ZUZpbGVQYXRoTCgpOw0KKyAgICAgICAgSEJ1ZkMqIE1ha2VLZXlMQyhjb25zdCBURGVz
QyYgYU5hbWUpOw0KKw0KKyAgICBwcm90ZWN0ZWQ6DQorICAgICAgICBDV2lkZ2V0UHJlZmVyZW5j
ZXMoQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbik7DQorICAgICAgICB2b2lkIENv
bnN0cnVjdEwoKTsNCisNCisgICAgcHJpdmF0ZToNCisgICAgICAgIFJQdHJIYXNoTWFwPFREZXND
LFREZXNDPiBpTWFwOw0KKyAgICAgICAgSEJ1ZkMqIGlGaWxlUGF0aDsNCisgICAgICAgIENXaWRn
ZXRFeHRlbnNpb24qIGlXaWRnZXRFeHRlbnNpb247IC8vbm90IG93bmVkDQorDQorICAgIH07DQor
DQorI2VuZGlmDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRSZW5kZXJlci5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRSZW5kZXJlci5o
CShyZXZpc2lvbiAwKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0UmVuZGVyZXIu
aAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsNzggQEANCisvKg0KKyogPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXaWRnZXRFbmdpbmVSZW5kZXJlci5oDQorKiAgUGFy
dCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVzY3JpcHRp
b24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChjKSAyMDA0
IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBkb2N1bWVu
dGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBwcm90ZWN0
ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJvZHVjaW5n
LCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxsIG9mIHRo
aXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0KKyogIE5v
a2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlkZW50aWFs
DQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3RoZXJzIHdp
dGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBvcmF0aW9u
Lg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisjaWZuZGVmIF9fV0lER0VURU5H
SU5FUkVOREVSRVINCisjZGVmaW5lIF9fV0lER0VURU5HSU5FUkVOREVSRVINCisNCisvLyAgSU5D
TFVERVMNCisjaW5jbHVkZSA8ZTMyYmFzZS5oPg0KKy8vIENPTlNUQU5UUw0KKw0KKy8vIE1BQ1JP
Uw0KKw0KKy8vIERBVEEgVFlQRVMNCisNCisvLyBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8g
Rk9SV0FSRCBERUNMQVJBVElPTg0KK2NsYXNzIENXZWJLaXRWaWV3Ow0KK2NsYXNzIENXaW5kb3dH
YzsNCitjbGFzcyBDRmJzQml0bWFwOw0KKw0KKy8vIENMQVNTIERFQ0xBUkFUSU9ODQorDQorLyoq
DQorKiAgVFdpZGdldFJlbmRlcmVyDQorKg0KKyogIEBsaWIgd2lkZ2V0ZW5naW5lLmRsbA0KKyog
IEBzaW5jZSAzLjENCisqLyAgICANCitjbGFzcyBUV2lkZ2V0UmVuZGVyZXINCisgICAgew0KKw0K
KyAgICBwdWJsaWM6DQorICAgICAgICBUV2lkZ2V0UmVuZGVyZXIoQ1dlYktpdFZpZXcmIGFXZWJL
aXRWaWV3KTsNCisgICAgICAgIH5UV2lkZ2V0UmVuZGVyZXIoKTsNCisNCisgICAgcHVibGljOiAg
ICANCisgICAgICAgIHZvaWQgUHJlcGFyZUZvclRyYW5zaXRpb25MKGNvbnN0IFREZXNDJiBhVHJh
bnNpdGlvbik7DQorICAgICAgICB2b2lkIFBlcmZvcm1UcmFuc2l0aW9uTCgpOw0KKyAgICAgICAg
DQorICAgIHB1YmxpYzoNCisgICAgICAgIHZvaWQgVHJhbnNpdGlvbkNiKCk7DQorICAgICAgICBU
Qm9vbCBUcmFuc2l0aW9uSW5Qcm9ncmVzcygpIHsgcmV0dXJuIGlUcmFuc2l0aW9uQml0bWFwIT0w
OyB9DQorICAgICAgICB2b2lkIERyYXdUcmFuc2l0aW9uKENXaW5kb3dHYyYgZ2MsIENGYnNCaXRt
YXAqIGFDdXJyZW50Qml0bWFwKTsNCisNCisgICAgcHJvdGVjdGVkOg0KKyAgICAgICAgdm9pZCBD
cmVhdGVUcmFuc2l0aW9uQml0bWFwTCgpOw0KKyAgICAgICAgdm9pZCBEZXN0cm95VHJhbnNpdGlv
bkJpdG1hcCgpOw0KKyAgICAgICAgdm9pZCBDcmVhdGVGYWRlTWFza0woKTsNCisgICAgICAgIHZv
aWQgRGVzdHJveUZhZGVNYXNrKCk7DQorICAgICAgICB2b2lkIERyYXdGYWRlTWFza0woKTsNCisN
CisgICAgcHJpdmF0ZToNCisgICAgICAgIENXZWJLaXRWaWV3KiBpV2ViS2l0VmlldzsNCisgICAg
ICAgIENGYnNCaXRtYXAqIGlUcmFuc2l0aW9uQml0bWFwOw0KKyAgICAgICAgQ0Zic0JpdG1hcCog
aUZhZGVNYXNrOw0KKyAgICAgICAgQ1BlcmlvZGljKiBpVHJhbnNpdGlvblRpbWVyOw0KKyAgICAg
ICAgVEludCBpVHJhbnNpdGlvbkNvdW50OyAgICAgICAgDQorICAgICAgICAgICAgICAgIA0KKyAg
ICB9Ow0KKyAgICAgICAgDQorI2VuZGlmDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy93
ZWJraXRicmlkZ2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy93
ZWJraXRicmlkZ2UuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcv
c3JjL3dlYmtpdGJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC01MSw2ICs1MSw5IEBADQog
I2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiDQogI2luY2x1ZGUgIkxvYWRlclV0aWxzLmgi
DQogI2luY2x1ZGUgIldlYktpdExvZ2dlci5oIg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRT
DQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lE
R0VUUw0KIA0KIC8vQ09OU1RBTlRTDQogX0xJVChLRGF0ZVN0cmluZywgIiUtQiU6MCVKJToxJVQl
OjIlUyUuJSpDNCU6MyUrQiIpOw0KQEAgLTkxOCw3ICs5MjEsNyBAQA0KIA0KICAgaWYoaUZyYW1l
LT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpLkJyQ3RsKCkuQ2FwYWJpbGl0aWVzKCkgJiBU
QnJDdGxEZWZzOjpFQ2FwYWJpbGl0eUdyYXBoaWNhbFBhZ2UpDQogICAgIHsNCi0gICAgVFJBUF9J
R05PUkUoaWYoIGlGcmFtZS0+V2ViS2l0VmlldygpLlBhZ2VTY2FsZXIoKSApIA0KKyAgICBUUkFQ
X0lHTk9SRShpZiggaUZyYW1lLT5XZWJLaXRWaWV3KCkuUGFnZVNjYWxlcigpICkNCiAgICAgICAg
ICAgICAgICAgICAgIGlGcmFtZS0+V2ViS2l0VmlldygpLlBhZ2VTY2FsZXIoKS0+RG9jdW1lbnRD
aGFuZ2VkTCgpKTsNCiAgICAgfQ0KICAgICAvLyBkb2N1bWVudCBpcyBwYXJzZWQgYW5kIG5vIHBl
bmRpbmcgdHJhbnNhY3Rpb24gbWVhbiB0aGF0DQpAQCAtMTM1MCw0ICsxMzUzLDE1IEBADQogICAg
IH0NCiAgIH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK3ZvaWQqIENXZWJLaXRC
cmlkZ2U6OmNyZWF0ZVdpZGdldE9iamVjdCh2b2lkKiBleGVjKQ0KKyAgICB7DQorICAgIENXaWRn
ZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpRnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRDb250cm9s
KCkuV2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmKHdkZ3RFeHQpDQorICAgICAgIHsNCisgICAg
ICAgcmV0dXJuIHdkZ3RFeHQtPmNyZWF0ZVdpZGdldE9iamVjdChleGVjKTsNCisgICAgICAgfQ0K
KyAgICByZXR1cm4gMDsNCisgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIC8v
IGVuZCBvZiBmaWxlDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9s
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Q29udHJv
bC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0
Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC04MSw2ICs4MSw5IEBADQogI2luY2x1ZGUg
IldlYkNvcmVIaXN0b3J5LmgiDQogI2luY2x1ZGUgIkh0dHBDYWNoZU1hbmFnZXIuaCINCiAjaW5j
bHVkZSAiU3RhdGljSW1hZ2VEZWNvZGVyLmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMN
CisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURH
RVRTDQogDQogI2lmZGVmIFJEXzMyX0JST1dTRVINCiAjaW5jbHVkZSAiUGx1Z2luQ29udGVudFBs
YXllci5oIg0KQEAgLTYyNyw2ICs2MzAsOSBAQA0KIA0KICAgICAvLyBjbGVhdXAgdGhlIHN0YXRp
YyBvYmplY3QNCiAgICAgQ1N0YXRpY09iamVjdENvbnRhaW5lcjo6SW5zdGFuY2UoKS5EZXJlZigp
Ow0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIGRlbGV0ZSBpV2lkZ2V0RXh0ZW5z
aW9uOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9DQogDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCkBAIC0yMDkwLDYgKzIwOTYsMjIgQEANCiAgICAgICAgIENXZWJDb3Jl
QnJpZGdlOjpTZXREZWZlcnNUaW1lcnMoIEVGYWxzZSApOw0KICAgICAgICAgfQ0KICAgICB9DQor
I2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IENXZWJLaXRDb250cm9sOjpDcmVhdGVXaWRnZXRFeHRlbnNpb24NCisvLw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorLy8NCitNV2lkZ2V0RXh0ZW5zaW9uKiBDV2ViS2l0Q29udHJvbDo6Q3Jl
YXRlV2lkZ2V0RXh0ZW5zaW9uTChNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykNCisg
ICAgew0KKyAgICBpZiggIWlXaWRnZXRFeHRlbnNpb24gKQ0KKyAgICAgICAgew0KKyAgICAgICAg
aVdpZGdldEV4dGVuc2lvbiA9IENXaWRnZXRFeHRlbnNpb246Ok5ld0woKmlXZWJLaXRWaWV3LGFX
aWRnZXRDYWxsYmFjayk7DQorICAgICAgICB9DQorICAgIFBsdWdpbkhhbmRsZXIoKS5Mb2FkUGx1
Z2luc1N5bmNMKCk7DQorICAgIHJldHVybiBpV2lkZ2V0RXh0ZW5zaW9uOw0KKyAgICB9DQorI2Vu
ZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogI2lmZGVmIFJEXzMyX0JST1dTRVINCiAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBhIHBsdWdpbiB3
aGljaCBpcyBhYmxlIHRvIGFjY2VwdCB1c2VyIGlucHV0LA0KSW5kZXg6IFdlYktpdC9Ccm93c2Vy
Vmlldy9zcmMvV2ViS2l0Vmlldy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZp
ZXcvc3JjL1dlYktpdFZpZXcuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3Nl
clZpZXcvc3JjL1dlYktpdFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNjAsNiArNjAsMTEg
QEANCiAjaW5jbHVkZSAiV2ViS2l0U3VyZmFjZS5oIg0KICNpbmNsdWRlICJXZWJLaXRUb29sQmFy
SW50ZXJmYWNlLmgiDQogI2luY2x1ZGUgIlRvb2xCYXIuaCINCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisjaW5jbHVkZSAiV2lkZ2V0
RW5naW5lQnJpZGdlLmgiDQorI2luY2x1ZGUgIldpZGdldFJlbmRlcmVyLmgiDQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQogI2luY2x1ZGUgIkZlYXRNZ3IuaCINCiANCiANCkBAIC02MTMs
NiArNjE4LDE3IEBADQogICAgICAgICByZXR1cm47DQogICAgICAgICB9DQogICAgIFNldFZpZXdW
aXNpYmxlKGFWaXNpYmxlKTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICBDV2lk
Z2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0gaVdlYktpdENvbnRyb2wtPldpZGdldEV4dGVuc2lvbigp
Ow0KKyAgICBpZiggd2RndEV4dCApDQorICAgICAgICB7DQorICAgICAgICBNV2lkZ2V0RW5naW5l
QnJpZGdlKiB3ZGd0QnJpZGdlID0gJndkZ3RFeHQtPldpZGdldEVuZ2luZUJyaWRnZSgpOw0KKyAg
ICAgICAgaWYoIHdkZ3RCcmlkZ2UgKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICB3ZGd0
QnJpZGdlLT5TZXRXaWRnZXRWaXNpYmlsaXR5KGFWaXNpYmxlKTsNCisgICAgICAgICAgICB9DQor
ICAgICAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgIH0NCiANCiAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC04NzQsNiArODkwLDE3IEBADQogICAgIC8vIHB1dCBv
ZmZzY3JlZW4gYml0bWFwIG9udG8gdGhlIHNjcmVlbg0KICAgaVJlbmRlclRhcmdldC0+RmxpcCgg
UmVjdCgpLmlUbCwgZ2MgKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICBD
V2lkZ2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0gaVdlYktpdENvbnRyb2wtPldpZGdldEV4dGVuc2lv
bigpOw0KKyAgICBpZiAod2RndEV4dCkNCisgICAgICAgIHsNCisgICAgICAgIFRXaWRnZXRSZW5k
ZXJlciogd2lkZ2V0UmVuZGVyZXIgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCkt
PldpZGdldFJlbmRlcmVyKCk7DQorICAgICAgICBpZiAod2lkZ2V0UmVuZGVyZXIgJiYgd2lkZ2V0
UmVuZGVyZXItPlRyYW5zaXRpb25JblByb2dyZXNzKCkpDQorICAgICAgICAgICAgew0KKyAgICAg
ICAgICAgIHdpZGdldFJlbmRlcmVyLT5EcmF3VHJhbnNpdGlvbihnYywgT2Zmc2NyZWVuQml0bWFw
KCkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJ
REdFVFMNCiAgICAgaWYgKGlJc1BhZ2VTY2FsZXJFbmFibGVkKQ0KICAgICAgICAgew0KICAgICAg
ICAgaVBhZ2VTY2FsZXItPkRyYXcoIGdjLGFSZWN0ICk7DQpJbmRleDogV2ViS2l0L0Jyb3dzZXJW
aWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dz
ZXJWaWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAwKQ0KKysrIFdlYktpdC9C
cm93c2VyVmlldy9zcmMvV2lkZ2V0RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMCkNCkBAIC0wLDAg
KzEsNTEwIEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5hbWUgICAgICAg
IDogV2ViS2l0V2lkZ2V0SW50ZXJmYWNlLmNwcA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5l
L1dlYktpdFdpZGdldEludGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAg
ICA6IDIuMS4xDQorKg0KKyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4N
CisqICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0
ZWQNCisqICBjb21wdXRlciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250
cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVk
LiBDb3B5aW5nLA0KKyogIGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcg
b3IgdHJhbnNsYXRpbmcsIGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVz
IHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhp
cyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdo
aWNoIG1heSBub3QgYmUgZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9y
IHdyaXR0ZW4gY29uc2VudCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KKyovDQorDQorLy8gSU5DTFVERSBGSUxFUw0KKyNpbmNsdWRlIDxlMzJzdGQuaD4N
CisjaW5jbHVkZSA8ZWlrZW52Lmg+DQorI2luY2x1ZGUgPGFwZ2NsaS5oPg0KKyNpbmNsdWRlIDxh
cGd0YXNrLmg+DQorI2luY2x1ZGUgPGJyb3dzZXJsYXVuY2hlci5oPg0KKw0KKyNpbmNsdWRlICJX
aWRnZXRFeHRlbnNpb24uaCINCisjaW5jbHVkZSAiV2lkZ2V0UHJlZmVyZW5jZXMuaCINCisjaW5j
bHVkZSAiV2lkZ2V0UmVuZGVyZXIuaCINCisjaW5jbHVkZSAiV2lkZ2V0RXZlbnRIYW5kbGVyLmgi
DQorI2luY2x1ZGUgIldlYkNvcmVXaWRnZXQuaCINCisjaW5jbHVkZSAiV2ViS2l0Q29udHJvbC5o
Ig0KKyNpbmNsdWRlICJXZWJLaXRDdXJzb3IuaCINCisjaW5jbHVkZSAiV2ViS2l0RnJhbWUuaCIN
CisjaW5jbHVkZSAiV2ViS2l0Vmlldy5oIg0KKyNpbmNsdWRlICJCckN0bC5oIg0KKyNpbmNsdWRl
ICJCckN0bFNjcm9sbGluZ1Byb3ZpZGVyLmgiDQorLy8jaW5jbHVkZSAiU2Nyb2xsYmFyLmgiDQor
DQorLy8gRVhURVJOQUwgREFUQSBTVFJVQ1RVUkVTDQorDQorLy8gRVhURVJOQUwgRlVOQ1RJT04g
UFJPVE9UWVBFUw0KKw0KKy8vIENPTlNUQU5UUw0KKw0KKy8vIE1BQ1JPUw0KKw0KKy8vIExPQ0FM
IENPTlNUQU5UUyBBTkQgTUFDUk9TDQorY29uc3QgVEludCBLT3B0aW9uc0NtZElkID0gNjAwMDsN
Citjb25zdCBUSW50IEtNYXhPcHRpb25zTWVudSA9IDI1Ow0KK2NvbnN0IFRJbnQgS01heE9wdGlv
bnNNZW51SXRlbVNpemUgPSAyNTY7IC8vYnl0ZXMNCisNCisNCisvLy8NCitjb25zdCBUSW50IEtN
ZWRpYUdhbGxlcnlVaWQgPSAweDEwMUY4NTk5Ow0KK19MSVQoS01lZGlhR2FsbGVyeSwibWVkaWFn
YWxsZXJ5Iik7DQorY29uc3QgVEludCBLV2ViQnJvd3NlclVpZCA9IDB4MTAwMDhEMzk7DQorX0xJ
VChLV2ViQnJvd3Nlciwid2ViYnJvd3NlciIpOw0KK2NvbnN0IFRJbnQgS0NhbUFwcEVuZ2luZVVp
ZCA9IDB4MTAxRjg1N0E7DQorX0xJVChLQ2FtQXBwRW5naW5lLCJjYW1lcmEiKTsNCisNCisvLyBN
T0RVTEUgREFUQSBTVFJVQ1RVUkVTDQordXNpbmcgbmFtZXNwYWNlIEtKUzsNCisNCisvLyBMT0NB
TCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENX
aWRnZXRFbmdpbmVDYWxsQmFjazo6TmV3TA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCitDV2lkZ2V0RXh0ZW5zaW9uKiBDV2lkZ2V0RXh0ZW5zaW9uOjpOZXdMKA0KKyAg
ICBDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsDQorICAgIE1XaWRnZXRDYWxsYmFjayYgYVdpZGdl
dENhbGxiYWNrICkNCisgICAgew0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uKiBzZWxmID0gbmV3IChF
TGVhdmUpIENXaWRnZXRFeHRlbnNpb24oYVdlYktpdFZpZXcsYVdpZGdldENhbGxiYWNrKTsNCisg
ICAgQ2xlYW51cFN0YWNrOjpQdXNoTChzZWxmKTsNCisgICAgc2VsZi0+Q29uc3RydWN0TCgpOw0K
KyAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOw0KKyAgICByZXR1cm4gc2VsZjsNCisgICAgfQ0KKw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpDV2lkZ2V0RXh0
ZW5zaW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRF
eHRlbnNpb246OkNXaWRnZXRFeHRlbnNpb24oDQorICAgIENXZWJLaXRWaWV3JiBhV2ViS2l0Vmll
dywNCisgICAgTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2sgKQ0KKyAgICA6aVdlYktp
dFZpZXcoJmFXZWJLaXRWaWV3KSwNCisgICAgaVdpZGdldENhbGxiYWNrKCZhV2lkZ2V0Q2FsbGJh
Y2spDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lk
Z2V0RXh0ZW5zaW9uOjp+Q1dpZGdldEV4dGVuc2lvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0RXh0ZW5zaW9uOjp+Q1dpZGdldEV4dGVuc2lvbigpDQor
ICAgIHsNCisgICAgaWYgKGlQcmVmZXJlbmNlcykNCisgICAgICAgIHsNCisgICAgICAgIFRSQVBf
SUdOT1JFKGlQcmVmZXJlbmNlcy0+U2F2ZUwoKSk7DQorICAgICAgICB9DQorICAgIGRlbGV0ZSBp
UHJlZmVyZW5jZXM7DQorICAgIGRlbGV0ZSBpV2lkZ2V0UmVuZGVyZXI7DQorICAgIGRlbGV0ZSBp
V2lkZ2V0RW5naW5lQnJpZGdlOw0KKyAgICBkZWxldGUgaVdpZGdldEJhc2VQYXRoOw0KKyAgICBk
ZWxldGUgaVdpZGdldEJ1bmRsZUlkOw0KKyAgICBpQXBwVWlkTWFwLlJlc2V0QW5kRGVzdHJveSgp
Ow0KKyAgICBpTGlicmFyeS5DbG9zZSgpOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkNvbnN0cnVjdEwNCisvLw0KKy8vDQorLy8NCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpDb25zdHJ1Y3RM
KCkNCisgICAgew0KKw0KKyAgICBpUHJlZmVyZW5jZXMgPSBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5l
d0woKnRoaXMpOw0KKyAgICBpV2lkZ2V0UmVuZGVyZXIgPSBuZXcgKEVMZWF2ZSkgVFdpZGdldFJl
bmRlcmVyKCppV2ViS2l0Vmlldyk7DQorICAgIExvYWRXaWRnZXRFbmdpbmVEbGxMKCk7DQorICAg
IGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlNldE9ic2VydmVyKCp0aGlzKTsNCisgICAgQ3JlYXRlQXBw
SGFzaFRhYmxlTCgpOw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IENXaWRnZXRFeHRlbnNpb246OkNyZWF0ZUFwcEhhc2hUYWJsZUwNCisvLw0KKy8vDQorLy8NCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpDcmVhdGVBcHBI
YXNoVGFibGVMKCkNCisgICAgew0KKyAgICBUSW50KiB1aWRtZyA9IG5ldyBUSW50KEtNZWRpYUdh
bGxlcnlVaWQpOw0KKyAgICBIQnVmQyogYnVmbWVkaWEgPSBIQnVmQzo6TmV3TChUUHRyQyhLTWVk
aWFHYWxsZXJ5KS5MZW5ndGgoKSk7DQorICAgICpidWZtZWRpYSA9IEtNZWRpYUdhbGxlcnk7DQor
DQorICAgIFRJbnQqIHVpZHdlYiA9IG5ldyBUSW50KEtXZWJCcm93c2VyVWlkKTsNCisgICAgSEJ1
ZkMqIGJ1ZndlYiA9IEhCdWZDOjpOZXdMKFRQdHJDKEtXZWJCcm93c2VyKS5MZW5ndGgoKSk7DQor
ICAgICpidWZ3ZWIgPSBLV2ViQnJvd3NlcjsNCisNCisgICAgVEludCogdWlkY2FtID0gbmV3IFRJ
bnQoS0NhbUFwcEVuZ2luZVVpZCk7DQorICAgIEhCdWZDKiBidWZjYW0gPSBIQnVmQzo6TmV3TChU
UHRyQyhLQ2FtQXBwRW5naW5lKS5MZW5ndGgoKSk7DQorICAgICpidWZjYW0gPSBLQ2FtQXBwRW5n
aW5lOw0KKw0KKyAgICBpQXBwVWlkTWFwLkluc2VydEwoYnVmbWVkaWEsdWlkbWcpOw0KKyAgICBp
QXBwVWlkTWFwLkluc2VydEwoYnVmd2ViLHVpZHdlYik7DQorICAgIGlBcHBVaWRNYXAuSW5zZXJ0
TChidWZjYW0sdWlkY2FtKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDV2lkZ2V0RXh0ZW5zaW9uOjpMYXVuY2hBcHBsaWNhdGlvbkwNCisvLw0KKy8vDQorLy8NCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpMYXVuY2hBcHBs
aWNhdGlvbkwoY29uc3QgVFVpZCYgYVVpZCwgY29uc3QgVERlc0MmIGFQYXJhbSkNCisgICAgew0K
Kw0KKyAgICBSQXBhTHNTZXNzaW9uIGFwYUxzU2Vzc2lvbjsNCisgICAgVEFwYVRhc2tMaXN0IHRh
c2tMaXN0KENFaWtvbkVudjo6U3RhdGljKCktPldzU2Vzc2lvbigpKTsNCisgICAgVEFwYVRhc2sg
dGFzayA9IHRhc2tMaXN0LkZpbmRBcHAoYVVpZCk7DQorICAgIGlmICh0YXNrLkV4aXN0cygpKQ0K
KyAgICAgICAgew0KKyAgICAgICAgdGFzay5CcmluZ1RvRm9yZWdyb3VuZCgpOw0KKyAgICAgICAg
aWYgKGFQYXJhbS5MZW5ndGgoKSA+IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIEhC
dWZDOCogcGFyYW04ID0gSEJ1ZkM4OjpOZXdMQyhhUGFyYW0uTGVuZ3RoKCkpOw0KKyAgICAgICAg
ICAgIHBhcmFtOC0+RGVzKCkuQXBwZW5kKGFQYXJhbSk7DQorICAgICAgICAgICAgdGFzay5TZW5k
TWVzc2FnZShUVWlkOjpVaWQoMCksKnBhcmFtOCk7DQorICAgICAgICAgICAgQ2xlYW51cFN0YWNr
OjpQb3BBbmREZXN0cm95KHBhcmFtOCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAg
ICBlbHNlDQorICAgICAgICB7DQorICAgICAgICBUSW50IGVDb25uZWN0ID0gS0Vyck5vbmU7DQor
ICAgICAgICBpZiAoIWFwYUxzU2Vzc2lvbi5IYW5kbGUoKSkNCisgICAgICAgICAgICB7DQorICAg
ICAgICAgICAgZUNvbm5lY3QgPSBhcGFMc1Nlc3Npb24uQ29ubmVjdCgpOw0KKyAgICAgICAgICAg
IH0NCisNCisgICAgICAgIGlmIChlQ29ubmVjdCA9PSBLRXJyTm9uZSkNCisgICAgICAgICAgICB7
DQorICAgICAgICAgICAgVFRocmVhZElkIHRocmVhZElkOw0KKyAgICAgICAgICAgIGFwYUxzU2Vz
c2lvbi5TdGFydERvY3VtZW50KGFQYXJhbSwgYVVpZCwgdGhyZWFkSWQpOw0KKyAgICAgICAgICAg
IGFwYUxzU2Vzc2lvbi5DbG9zZSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisg
ICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9u
OjpPcGVuQXBwbGljYXRpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuQXBwbGljYXRpb24oY29uc3QgVERlc0MmIGFB
cHBOYW1lLCBjb25zdCBURGVzQyYgYVBhcmFtKQ0KKyAgICB7DQorDQorICAgIFRJbnQqIHVpZCA9
IGlBcHBVaWRNYXAuRmluZChhQXBwTmFtZSk7DQorICAgIGlmICh1aWQpDQorICAgICAgICB7DQor
ICAgICAgICBUVWlkIHVpZEFwcCA9IFRVaWQ6OlVpZCgqdWlkKTsNCisgICAgICAgIExhdW5jaEFw
cGxpY2F0aW9uTCh1aWRBcHAsYVBhcmFtKTsNCisgICAgICAgIH0NCisNCisgICAgfQ0KKw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuVXJsDQorLy8N
CisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lv
bjo6T3BlblVybChjb25zdCBURGVzQyYgYVVybCkNCisgICAgew0KKyAgICBIQnVmQyogcGFyYW0g
PSBIQnVmQzo6TmV3TEMoYVVybC5MZW5ndGgoKSsyKTsNCisgICAgcGFyYW0tPkRlcygpLkFwcGVu
ZChfTCgiNCAiKSk7DQorICAgIHBhcmFtLT5EZXMoKS5BcHBlbmQoYVVybCk7DQorICAgIFRSQVBf
SUdOT1JFKExhdW5jaEFwcGxpY2F0aW9uTChUVWlkOjpVaWQoS1dlYkJyb3dzZXJVaWQpLCAqcGFy
YW0pKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KHBhcmFtKTsNCisgICAgfQ0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpQcmVmZXJl
bmNlRm9yS2V5DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RJbnQg
Q1dpZGdldEV4dGVuc2lvbjo6UHJlZmVyZW5jZUZvcktleShjb25zdCBURGVzQyYgYUtleSwgVFB0
ckMmIGFWYWx1ZSkNCisgICAgew0KKyAgICByZXR1cm4gaVByZWZlcmVuY2VzLT5QcmVmZXJlbmNl
TChhS2V5LCBhVmFsdWUpOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IENXaWRnZXRFeHRlbnNpb246OlByZXBhcmVGb3JUcmFuc2l0aW9uDQorLy8NCisvLw0KKy8vDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6UHJlcGFyZUZv
clRyYW5zaXRpb24oY29uc3QgVERlc0MmIGFUcmFuc2l0aW9uKQ0KKyAgICB7DQorICAgIGlXaWRn
ZXRSZW5kZXJlci0+UHJlcGFyZUZvclRyYW5zaXRpb25MKGFUcmFuc2l0aW9uKTsNCisgICAgfQ0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpQZXJmb3Jt
VHJhbnNpdGlvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lk
IENXaWRnZXRFeHRlbnNpb246OlBlcmZvcm1UcmFuc2l0aW9uKCkNCisgICAgew0KKyAgICBpV2lk
Z2V0UmVuZGVyZXItPlBlcmZvcm1UcmFuc2l0aW9uTCgpOw0KKyAgICB9DQorDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlNldFByZWZlcmVuY2VGb3JLZXkN
CisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0
ZW5zaW9uOjpTZXRQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXNDJiBhS2V5LCBjb25zdCBURGVz
QyYgYVZhbHVlKQ0KKyAgICB7DQorICAgIGlQcmVmZXJlbmNlcy0+U2V0UHJlZmVyZW5jZUwoYUtl
eSwgYVZhbHVlKTsNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBD
V2lkZ2V0RXh0ZW5zaW9uOjpTZXRTY3JvbGxCYXINCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRTY3JvbGxCYXIoVEJvb2wg
LyphVmlzaWJsZSovKQ0KKyAgICB7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0TmF2aWdhdGlvbkVuYWJsZWQNCisvLw0KKy8vDQor
Ly8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRO
YXZpZ2F0aW9uRW5hYmxlZChUQm9vbCBhRW5hYmxlKQ0KKyAgICB7DQorICAgIGlOYXZpZ2F0aW9u
RW5hYmxlZCA9IGFFbmFibGU7DQorICAgIGlXZWJLaXRWaWV3LT5TZXRUYWJiZWROYXZpZ2F0aW9u
KCAhYUVuYWJsZSApOw0KKyAgICBpZiAoIGlXZWJLaXRWaWV3LT5DdXJzb3IoKSApDQorICAgICAg
ICB7DQorICAgICAgICBpV2ViS2l0Vmlldy0+Q3Vyc29yKCktPkN1cnNvclVwZGF0ZSggYUVuYWJs
ZSApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbnNNZW51SXRlbQ0KKy8vDQorLy8NCisvLw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCitUSW50IENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbnNN
ZW51SXRlbShjb25zdCBURGVzQyYgYVRleHQpDQorICAgIHsNCisgICAgVEludCBjbWRJZCA9IChU
QnJDdGxEZWZzOjpFQ29tbWFuZElkQmFzZSArIFRCckN0bERlZnM6OkVDb21tYW5kSWRTdWJzY3Jp
YmVUb0Jhc2UgKyBLT3B0aW9uc0NtZElkKSArIGlNZW51SXRlbXMuQ291bnQoKTsNCisNCisgICAg
aWYgKGlNZW51SXRlbXMuQ291bnQoKSA8PSBLTWF4T3B0aW9uc01lbnUgJiYNCisgICAgICAgIGFU
ZXh0Lkxlbmd0aCgpID4gMCAmJiBhVGV4dC5MZW5ndGgoKSA8PSBLTWF4T3B0aW9uc01lbnVJdGVt
U2l6ZSApDQorICAgICAgICB7DQorICAgICAgICBUTWVudUl0ZW0gaXRlbTsNCisgICAgICAgIGl0
ZW0uaVRleHQgPSBhVGV4dC5BbGxvYygpOw0KKyAgICAgICAgaXRlbS5pQ21kSWQgPSBjbWRJZDsN
CisgICAgICAgIGlNZW51SXRlbXMuQXBwZW5kKGl0ZW0pOw0KKyAgICAgICAgfQ0KKw0KKyAgICBy
ZXR1cm4gY21kSWQ7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dp
ZGdldEV4dGVuc2lvbjo6Q2xlYXJPcHRpb25zTWVudQ0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkNsZWFyT3B0aW9uc01lbnUo
KQ0KKyAgICB7DQorDQorICAgIGZvciAoVEludCBuPTA7IG48aU1lbnVJdGVtcy5Db3VudCgpOyBu
KyspDQorICAgICAgICB7DQorICAgICAgICBkZWxldGUgaU1lbnVJdGVtc1tuXS5pVGV4dDsNCisg
ICAgICAgIH0NCisNCisgICAgaU1lbnVJdGVtcy5SZXNldCgpOw0KKyAgICB9DQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbk1lbnVJdGVt
c0wNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0
RXh0ZW5zaW9uOjpBZGRPcHRpb25NZW51SXRlbXNMKENFaWtNZW51UGFuZSYgYU1lbnVQYW5lKQ0K
KyAgICB7DQorDQorICAgIGlmICggYU1lbnVQYW5lLk51bWJlck9mSXRlbXNJblBhbmUoKSA+IDEp
DQorICAgICAgICB7DQorICAgICAgICBhTWVudVBhbmUuRGVsZXRlQmV0d2Vlbk1lbnVJdGVtcygg
MCwgYU1lbnVQYW5lLk51bWJlck9mSXRlbXNJblBhbmUoKS0yICk7DQorICAgICAgICB9DQorDQor
DQorICAgIGZvciAoVEludCBuPWlNZW51SXRlbXMuQ291bnQoKS0xOyBuPj0wOyBuLS0pDQorICAg
ICAgICB7DQorICAgICAgICBDRWlrTWVudVBhbmVJdGVtOjpTRGF0YSBtZW51RGF0YTsNCisgICAg
ICAgIG1lbnVEYXRhLmlDb21tYW5kSWQgPSBpTWVudUl0ZW1zW25dLmlDbWRJZDsNCisgICAgICAg
IG1lbnVEYXRhLmlDYXNjYWRlSWQgPSAwOw0KKyAgICAgICAgbWVudURhdGEuaUZsYWdzID0gMDsN
CisgICAgICAgIG1lbnVEYXRhLmlUZXh0ID0gKmlNZW51SXRlbXNbbl0uaVRleHQ7DQorICAgICAg
ICBhTWVudVBhbmUuSW5zZXJ0TWVudUl0ZW1MKG1lbnVEYXRhLDApOw0KKyAgICAgICAgfQ0KKw0K
KyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNp
b246Ok9wdGlvbnNNZW51SXRlbVNlbGVjdGVkDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6T3B0aW9uc01lbnVJdGVtU2VsZWN0
ZWQoVEludCBhQ29tbWFuZCkNCisgICAgew0KKyAgICBpZiAoaVdpZGdldEVuZ2luZUJyaWRnZSkN
CisgICAgICAgIHsNCisgICAgICAgIFRJbnQgbiA9IGFDb21tYW5kLShUQnJDdGxEZWZzOjpFQ29t
bWFuZElkQmFzZSArIFRCckN0bERlZnM6OkVDb21tYW5kSWRTdWJzY3JpYmVUb0Jhc2UgKyBLT3B0
aW9uc0NtZElkKTsNCisgICAgICAgIGlmIChuPj0wICYmIG48aU1lbnVJdGVtcy5Db3VudCgpKQ0K
KyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBIQnVmQyogaXRlbVRleHQgPSBpTWVudUl0ZW1z
W25dLmlUZXh0Ow0KKyAgICAgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPk9wdGlvbnNNZW51
SXRlbVNlbGVjdGVkKCppdGVtVGV4dCk7DQorICAgICAgICAgICAgT25TaG93U2VsZWN0ZWQoKTsN
CisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T25IaWRlU2VsZWN0ZWQNCisvLw0KKy8vDQor
Ly8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPbkhp
ZGVTZWxlY3RlZCgpDQorICAgIHsNCisgICAgaWYgKGlXaWRnZXRFbmdpbmVCcmlkZ2UpDQorICAg
ICAgICB7DQorICAgICAgICBpV2lkZ2V0RW5naW5lQnJpZGdlLT5TZXRXaWRnZXRWaXNpYmlsaXR5
KEVGYWxzZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T25TaG93U2VsZWN0ZWQNCisvLw0KKy8vDQorLy8NCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPblNob3dTZWxl
Y3RlZCgpDQorICAgIHsNCisgICAgaWYoaVdpZGdldEVuZ2luZUJyaWRnZSkNCisgICAgICAgIHsN
CisgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlNldFdpZGdldFZpc2liaWxpdHkoRVRydWUp
Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IENXaWRnZXRFeHRlbnNpb246OmNyZWF0ZVdpZGdldE9iamVjdA0KKy8vDQorLy8NCisvLw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkKiBDV2lkZ2V0RXh0ZW5zaW9uOjpjcmVhdGVXaWRn
ZXRPYmplY3Qodm9pZCogZXhlYykNCisgICAgew0KKyAgICBpZiggaVdpZGdldEVuZ2luZUJyaWRn
ZSApDQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gaVdpZGdldEVuZ2luZUJyaWRnZS0+V2lk
Z2V0KGV4ZWMpOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6TG9hZFdpZGdldEVu
Z2luZURsbEwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCit2b2lkIENXaWRn
ZXRFeHRlbnNpb246OkxvYWRXaWRnZXRFbmdpbmVEbGxMKCkNCisgICAgew0KKw0KKyAgICBpZigh
aVdpZGdldEVuZ2luZUJyaWRnZSkNCisgICAgICAgIHsNCisNCisgICAgICAgIF9MSVQoIEtCcm93
c2VyV2lkZ2V0RW5naW5lTmFtZSwgIndpZGdldGVuZ2luZS5kbGwiICk7DQorICAgICAgICBVc2Vy
OjpMZWF2ZUlmRXJyb3IoIGlMaWJyYXJ5LkxvYWQoIEtCcm93c2VyV2lkZ2V0RW5naW5lTmFtZSAp
ICk7DQorDQorICAgICAgICBUTGlicmFyeUZ1bmN0aW9uIGVudHJ5ID0gaUxpYnJhcnkuTG9va3Vw
KDEpOw0KKw0KKyAgICAgICAgaWYgKCFlbnRyeSkNCisgICAgICAgICAgICBVc2VyOjpMZWF2ZShL
RXJyTm90Rm91bmQpOw0KKw0KKyAgICAgICAgLy9DYWxsIHRoZSBmdW5jdGlvbiB0byBjcmVhdGUg
YSBpbnN0YW5jZSBvZiBjbGFzcw0KKyAgICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZSA9IChNV2lk
Z2V0RW5naW5lQnJpZGdlKikgZW50cnkoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0UGFyYW1MDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpT
ZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgY29uc3QgVERl
c0MmIGFWYWx1ZSkNCisgICAgew0KKyAgICBzd2l0Y2goYVBhcmFtKQ0KKyAgICAgICAgew0KKyAg
ICAgICAgY2FzZSBUQnJDdGxEZWZzOjpFV2lkZ2V0QmFzZVBhdGg6DQorICAgICAgICAgICAgew0K
KyAgICAgICAgICAgIGlXaWRnZXRCYXNlUGF0aCA9IGFWYWx1ZS5BbGxvY0woKTsNCisgICAgICAg
ICAgICBpUHJlZmVyZW5jZXMtPkxvYWRMKCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAg
ICAgICAgfQ0KKyAgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RVdpZGdldEJ1bmRsZUlkOg0KKyAg
ICAgICAgICAgIHsNCisgICAgICAgICAgICBpV2lkZ2V0QnVuZGxlSWQgPSBhVmFsdWUuQWxsb2NM
KCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgZGVmYXVs
dDoNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0UGFyYW1MDQorLy8NCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQ
YXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgVFVpbnQgYVZhbHVl
KQ0KKyAgICB7DQorICAgIHN3aXRjaChhUGFyYW0pDQorICAgICAgICB7DQorICAgICAgICBjYXNl
IFRCckN0bERlZnM6OkVXaWRnZXRJZGVudGlmaWVyOg0KKyAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICBpV2lkZ2V0SWQgPSBhVmFsdWU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAg
ICAgfQ0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0N
CisgICAgfQ0KKw0KKy8vRU5EIE9GIEZJTEUNCisNCisNCisNCisNCkluZGV4OiBXZWJLaXQvQnJv
d3NlclZpZXcvc3JjL1dpZGdldFByZWZlcmVuY2VzLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAwKQ0KKysr
IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSwyOTEgQEANCisvKg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKiAg
TmFtZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRlcmZhY2UuY3BwDQorKiAgUGFydCBvZiAgICAg
OiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVzY3JpcHRpb24gOg0KKyog
IFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChjKSAyMDA0IE5va2lhIENv
cnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGFu
ZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkgY29w
eXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBh
cmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9yaW5n
LCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0ZXJp
YWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0KKyogIE5va2lhIENvcnBv
cmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlkZW50aWFsDQorKiAgaW5m
b3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQgdGhl
DQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBvcmF0aW9uLg0KKyogPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisvLyBJTkNMVURFIEZJTEVTDQorI2luY2x1ZGUg
PGUzMnN0ZC5oPg0KKyNpbmNsdWRlIDxTMzJGSUxFLkg+DQorI2luY2x1ZGUgPGYzMmZpbGUuaD4N
CisjaW5jbHVkZSA8dXJpMTYuaD4NCisjaW5jbHVkZSAiV2lkZ2V0UHJlZmVyZW5jZXMuaCINCisj
aW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorDQorLy8gRVhURVJOQUwgREFUQSBTVFJVQ1RV
UkVTDQorDQorLy8gRVhURVJOQUwgRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIENPTlNUQU5U
Uw0KK2NvbnN0IFRJbnQgS01heEludExlbmd0aCA9IDEwOw0KK2NvbnN0IFRJbnQgS01heEtleVZh
bHVlU2l6ZSA9IDQwOTY7IC8vNCBrDQorDQorX0xJVCggS0tleUZvcm1hdCwgIiVkLiVTIiApOw0K
K19MSVQoIEtQcmVmc0ZpbGUsInByZWZzLmRhdCIgKTsNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2VzOjpOZXdMDQorLy8NCisvLw0KKy8vDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRQcmVmZXJlbmNlcyogQ1dpZGdldFByZWZlcmVuY2Vz
OjpOZXdMKENXaWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24pDQorICAgIHsNCisgICAg
Q1dpZGdldFByZWZlcmVuY2VzKiBzZWxmID0gTmV3TEMoYVdpZGdldEV4dGVuc2lvbik7DQorICAg
IENsZWFudXBTdGFjazo6UG9wKCBzZWxmICk7DQorICAgIHJldHVybiBzZWxmOw0KKyAgICB9DQor
DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6TmV3
TEMNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldFByZWZl
cmVuY2VzKiBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0xDKENXaWRnZXRFeHRlbnNpb24mIGFXaWRn
ZXRFeHRlbnNpb24pDQorICAgIHsNCisgICAgQ1dpZGdldFByZWZlcmVuY2VzKiBzZWxmID0gbmV3
ICggRUxlYXZlICkgQ1dpZGdldFByZWZlcmVuY2VzKGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICBD
bGVhbnVwU3RhY2s6OlB1c2hMKCBzZWxmICk7DQorICAgIHNlbGYtPkNvbnN0cnVjdEwoKTsNCisg
ICAgcmV0dXJuIHNlbGY7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
Q1dpZGdldFByZWZlcmVuY2VzOjpDV2lkZ2V0UHJlZmVyZW5jZXMNCisvLw0KKy8vDQorLy8NCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldFByZWZlcmVuY2VzOjpDV2lkZ2V0UHJlZmVy
ZW5jZXMoQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbikNCisgICAgOiBpV2lkZ2V0
RXh0ZW5zaW9uKCZhV2lkZ2V0RXh0ZW5zaW9uKQ0KKyAgICB7DQorICAgIH0NCisNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2VzOjp+Q1dpZGdldFByZWZlcmVu
Y2VzDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRQcmVm
ZXJlbmNlczo6fkNXaWRnZXRQcmVmZXJlbmNlcygpDQorICAgIHsNCisgICAgaU1hcC5SZXNldEFu
ZERlc3Ryb3koKTsNCisgICAgaU1hcC5DbG9zZSgpOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6Q29uc3RydWN0TA0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRQcmVmZXJlbmNlczo6
Q29uc3RydWN0TCgpDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlByZWZlcmVuY2VMDQorLy8NCisvLw0KKy8vDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RJbnQgQ1dpZGdldFByZWZlcmVuY2VzOjpQcmVmZXJlbmNl
TChjb25zdCBURGVzQyYgYUtleSwgVFB0ckMmIGFWYWx1ZSkNCisgICAgew0KKw0KKyAgICBUSW50
IHJTdWNjZXNzID0gS0Vyck5vdEZvdW5kOw0KKw0KKyAgICBpZiAoYUtleS5MZW5ndGgoKSA8PSBL
TWF4S2V5VmFsdWVTaXplKQ0KKyAgICAgICAgew0KKyAgICAgICAgSEJ1ZkMqIGtleSA9IEhCdWZD
OjpOZXdMQyhhS2V5Lkxlbmd0aCgpK0tNYXhJbnRMZW5ndGgrMSk7DQorICAgICAgICBrZXktPkRl
cygpLkZvcm1hdCggS0tleUZvcm1hdCwgaVdpZGdldEV4dGVuc2lvbi0+R2V0V2lkZ2V0SWQoKSwg
JmFLZXkgKTsNCisNCisgICAgICAgIFREZXNDKiByZXMgPSBpTWFwLkZpbmQoKmtleSk7DQorICAg
ICAgICBpZiAocmVzKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBhVmFsdWUuU2V0KCpy
ZXMpOw0KKyAgICAgICAgICAgIHJTdWNjZXNzID0gS0Vyck5vbmU7DQorICAgICAgICAgICAgfQ0K
Kw0KKw0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3Aoa2V5KTsNCisNCisgICAgICAgIH0NCisN
CisgICAgIHJldHVybiByU3VjY2VzczsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMDQorLy8NCisvLw0KKy8v
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBD
V2lkZ2V0UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMDQorLy8NCisvLw0KKy8vDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldFByZWZlcmVuY2VzOjpTZXRQcmVmZXJlbmNl
TChjb25zdCBURGVzQyYgYUtleSwgY29uc3QgVERlc0MmIGFWYWx1ZSkNCisgICAgew0KKw0KKyAg
ICBpZiAoYUtleS5MZW5ndGgoKSA8PSBLTWF4S2V5VmFsdWVTaXplKQ0KKyAgICAgICAgew0KKw0K
KyAgICAgICAgSEJ1ZkMqIGtleSA9IEhCdWZDOjpOZXdMQyhhS2V5Lkxlbmd0aCgpK0tNYXhJbnRM
ZW5ndGgrMSk7DQorICAgICAgICBrZXktPkRlcygpLkZvcm1hdCggS0tleUZvcm1hdCwgaVdpZGdl
dEV4dGVuc2lvbi0+R2V0V2lkZ2V0SWQoKSwgJmFLZXkgKTsNCisNCisgICAgICAgIGlmIChhVmFs
dWUuTGVuZ3RoKCkgPD0gS01heEtleVZhbHVlU2l6ZSkNCisgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgSEJ1ZkMqIHZhbHVlID0gYVZhbHVlLkFsbG9jTEMoKTsNCisgICAgICAgICAgICBpTWFw
Lkluc2VydEwoa2V5LHZhbHVlKTsNCisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcCh2YWx1
ZSk7DQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3Aoa2V5KTsNCisgICAgICAgICAgICB9
DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlNYXAuUmVtb3Zl
KGtleSk7DQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KGtleSk7DQor
ICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6U2F2ZQ0KKy8vDQorLy8NCisvLw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRQcmVmZXJlbmNlczo6U2F2ZUwo
KQ0KKyAgICB7DQorICAgIFJGcyBmczsNCisgICAgaWYgKCBmcy5Db25uZWN0KCkgPT0gS0Vyck5v
bmUgKQ0KKyAgICAgICAgew0KKw0KKyAgICAgICAgQ2xlYW51cENsb3NlUHVzaEwoIGZzICk7DQor
DQorICAgICAgICBIQnVmQyogZmlsZVBhdGggPSBmaWxlUGF0aCA9IEhCdWZDOjpOZXdMQyhpV2lk
Z2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNlUGF0aCgpLkxlbmd0aCgpICArIEtQcmVmc0ZpbGUoKS5M
ZW5ndGgoKSk7DQorDQorICAgICAgICBUUHRyIGZOYW1lKGZpbGVQYXRoLT5EZXMoKSk7DQorICAg
ICAgICBmTmFtZS5BcHBlbmQoaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKSk7DQor
ICAgICAgICBmTmFtZS5BcHBlbmQoS1ByZWZzRmlsZSk7DQorDQorICAgICAgICBSRmlsZVdyaXRl
U3RyZWFtIHdyaXRlU3RyZWFtOw0KKyAgICAgICAgVEludCBmaWxlZXJyb3IgPSB3cml0ZVN0cmVh
bS5SZXBsYWNlKCBmcywgKmZpbGVQYXRoLCBFRmlsZVdyaXRlICk7DQorDQorICAgICAgICBpZiAo
ZmlsZWVycm9yICE9IEtFcnJOb25lKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBmcy5D
cmVhdGVQcml2YXRlUGF0aChFRHJpdmVDKTsNCisgICAgICAgICAgICBmaWxlZXJyb3IgPSB3cml0
ZVN0cmVhbS5DcmVhdGUoIGZzLCAqZmlsZVBhdGgsIEVGaWxlV3JpdGUgfCBFRmlsZVNoYXJlRXhj
bHVzaXZlICk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGZpbGVlcnJvciA9PSBL
RXJyTm9uZSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgQ2xlYW51cENsb3NlUHVzaEwo
d3JpdGVTdHJlYW0pOw0KKw0KKyAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlSW50MzJMKGlN
YXAuQ291bnQoKSk7DQorICAgICAgICAgICAgVFB0ckhhc2hNYXBJdGVyPFREZXNDLFREZXNDPiBp
dChpTWFwKTsNCisgICAgICAgICAgICBjb25zdCBURGVzQyoga2V5Ow0KKyAgICAgICAgICAgIGNv
bnN0IFREZXNDKiB2YWx1ZTsNCisgICAgICAgICAgICB3aGlsZSAoKGtleSA9IGl0Lk5leHRLZXko
KSkgIT0gMCkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGl0
LkN1cnJlbnRWYWx1ZSgpOw0KKyAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUludDMy
TChrZXktPkxlbmd0aCgpKTsNCisgICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVMKCpr
ZXkpOw0KKyAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUludDMyTCh2YWx1ZS0+TGVu
Z3RoKCkpOw0KKyAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUwoKnZhbHVlKTsNCisg
ICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIHdyaXRlU3RyZWFtLkNvbW1pdEwoKTsN
CisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgLy93cml0ZVN0cmVh
bQ0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJv
eSgpOyAvL2ZpbGVQYXRoDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsg
Ly9mcw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IENXaWRnZXRQcmVmZXJlbmNlczo6TG9hZEwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0UHJlZmVyZW5jZXM6OkxvYWRMKCkNCisgICAgew0KKw0K
KyAgICBSRnMgZnM7DQorICAgIGlmIChmcy5Db25uZWN0KCkgPT0gS0Vyck5vbmUpDQorICAgICAg
ICB7DQorICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTCggZnMgKTsNCisNCisgICAgICAgIEhCdWZD
KiBmaWxlUGF0aCA9IEhCdWZDOjpOZXdMQyhpV2lkZ2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNlUGF0
aCgpLkxlbmd0aCgpICArIEtQcmVmc0ZpbGUoKS5MZW5ndGgoKSk7DQorDQorICAgICAgICBUUHRy
IGZOYW1lKGZpbGVQYXRoLT5EZXMoKSk7DQorICAgICAgICBmTmFtZS5BcHBlbmQoaVdpZGdldEV4
dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKSk7DQorICAgICAgICBmTmFtZS5BcHBlbmQoS1ByZWZz
RmlsZSk7DQorDQorICAgICAgICBSRmlsZVJlYWRTdHJlYW0gcmVhZFN0cmVhbTsNCisgICAgICAg
IGlmIChyZWFkU3RyZWFtLk9wZW4oIGZzLCAqZmlsZVBhdGgsIEVGaWxlUmVhZCApID09IEtFcnJO
b25lKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTChyZWFk
U3RyZWFtKTsNCisNCisgICAgICAgICAgICBUSW50IGNvdW50KCByZWFkU3RyZWFtLlJlYWRJbnQz
MkwoKSApOw0KKyAgICAgICAgICAgIGZvciggVEludCBpID0gMDsgaSA8IGNvdW50OyBpKysgKQ0K
KyAgICAgICAgICAgICAgICB7DQorDQorICAgICAgICAgICAgICAgIFRJbnQgbGVuID0gcmVhZFN0
cmVhbS5SZWFkSW50MzJMKCk7DQorICAgICAgICAgICAgICAgIGlmIChsZW4+MCkNCisgICAgICAg
ICAgICAgICAgICAgIHsNCisNCisgICAgICAgICAgICAgICAgICAgIEhCdWZDKiBrZXkgPSBIQnVm
Qzo6TmV3TEMobGVuKTsNCisgICAgICAgICAgICAgICAgICAgIFRQdHIgcHRya2V5ID0ga2V5LT5E
ZXMoKTsNCisgICAgICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0uUmVhZEwocHRya2V5LGxlbik7
DQorICAgICAgICAgICAgICAgICAgICBsZW4gPSByZWFkU3RyZWFtLlJlYWRJbnQzMkwoKTsNCisN
CisgICAgICAgICAgICAgICAgICAgIGlmIChsZW48PUtNYXhLZXlWYWx1ZVNpemUpDQorICAgICAg
ICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEhCdWZDKiB2YWx1
ZSA9IEhCdWZDOjpOZXdMQyhsZW4pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRQdHIgcHRy
dmFsdWUgPSB2YWx1ZS0+RGVzKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFN0cmVh
bS5SZWFkTChwdHJ2YWx1ZSxsZW4pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlNYXAuSW5z
ZXJ0TChrZXksdmFsdWUpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFj
azo6UG9wKHZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cChrZXkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAg
IGVsc2UNCisgICAgICAgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICAg
ICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KGtleSk7DQorICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBlbHNlDQor
ICAgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAg
ICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIENs
ZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL3JlYWRTdHJlYW0NCisgICAgICAgICAgICB9
DQorDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgLy9maWxlUGF0aA0K
KyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZnMNCisgICAgICAgIH0N
CisNCisgICAgfQ0KKw0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UmVuZGVy
ZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRSZW5k
ZXJlci5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRS
ZW5kZXJlci5jcHAJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDIyOCBAQA0KKy8qDQorKiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdpZGdldEVuZ2luZVJlbmRlcmVy
LmNwcA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldEludGVyZmFjZQ0K
KyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0KKyogIENvcHly
aWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVyaWFsLCBpbmNs
dWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRlciBwcm9ncmFt
cywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyogIGluY2x1ZGlu
ZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0KKyog
IG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0dGVuIGNvbnNl
bnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5z
IGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUgZGlzY2xvc2Vk
IHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBOb2tp
YSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQorDQorLy8gSU5D
TFVERSBGSUxFUw0KKyNpbmNsdWRlIDxlaWttZW51Yi5oPg0KKyNpbmNsdWRlIDxnZGkuaD4NCisj
aW5jbHVkZSA8Yml0ZGV2Lmg+DQorDQorI2luY2x1ZGUgIldpZGdldFJlbmRlcmVyLmgiDQorI2lu
Y2x1ZGUgIldlYktpdFZpZXcuaCINCisNCisvLyBFWFRFUk5BTCBEQVRBIFNUUlVDVFVSRVMNCisN
CisvLyBFWFRFUk5BTCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gQ09OU1RBTlRTDQorY29u
c3QgVEludCBNYXhUcmFuc2l0aW9uQ291bnQgPSAzMDsNCisNCisvLyBMT0NBTCBGVU5DVElPTiBQ
Uk9UT1RZUEVTDQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRyYW5zaXRpb25D
Yg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitUSW50IFRyYW5zaXRp
b25DYiggVEFueSogYVB0ciApDQorICAgIHsNCisgICAgc3RhdGljX2Nhc3Q8VFdpZGdldFJlbmRl
cmVyKj4oYVB0ciktPlRyYW5zaXRpb25DYigpOw0KKyAgICByZXR1cm4gRVRydWU7DQorICAgIH0N
CisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpUV2lk
Z2V0UmVuZGVyZXINCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVFdp
ZGdldFJlbmRlcmVyOjpUV2lkZ2V0UmVuZGVyZXIoQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3KSA6
IGlXZWJLaXRWaWV3KCZhV2ViS2l0VmlldyksIGlUcmFuc2l0aW9uQml0bWFwKDApLCBpRmFkZU1h
c2soMCksIGlUcmFuc2l0aW9uVGltZXIoMCksIGlUcmFuc2l0aW9uQ291bnQoMCkgICANCisgICAg
ew0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJl
cjo6flRXaWRnZXRSZW5kZXJlcg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCitUV2lkZ2V0UmVuZGVyZXI6On5UV2lkZ2V0UmVuZGVyZXIoKQ0KKyAgICB7DQorICAgIH0N
CisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpQcmVwYXJl
Rm9yVHJhbnNpdGlvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2
b2lkIFRXaWRnZXRSZW5kZXJlcjo6UHJlcGFyZUZvclRyYW5zaXRpb25MKGNvbnN0IFREZXNDJiAv
KmFUcmFuc2l0aW9uKi8pDQorICAgIHsgICANCisgICAgaVRyYW5zaXRpb25Db3VudCA9IDA7ICAg
ICAgICANCisgICAgRGVzdHJveVRyYW5zaXRpb25CaXRtYXAoKTsNCisgICAgQ3JlYXRlVHJhbnNp
dGlvbkJpdG1hcEwoKTsgICAgICAgICAgICAgICAgICAgIA0KKyAgICBEZXN0cm95RmFkZU1hc2so
KTsNCisgICAgQ3JlYXRlRmFkZU1hc2tMKCk7DQorICAgIERyYXdGYWRlTWFza0woKTsgICAgICAg
IA0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJl
cjo6UGVyZm9ybVRyYW5zaXRpb25MDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpQZXJmb3JtVHJhbnNpdGlvbkwoKQ0KKyAgICB7
DQorICAgIA0KKyAgICBkZWxldGUgaVRyYW5zaXRpb25UaW1lcjsNCisgICAgaVRyYW5zaXRpb25U
aW1lciA9IDA7DQorICAgIFRSQVBfSUdOT1JFKGlUcmFuc2l0aW9uVGltZXIgPSBDUGVyaW9kaWM6
Ok5ld0woIENBY3RpdmU6OkVQcmlvcml0eUxvdyApKTsNCisgICAgaVRyYW5zaXRpb25Db3VudCA9
IDA7DQorICAgIGlUcmFuc2l0aW9uVGltZXItPlN0YXJ0KCAyMCwgMjAsIFRDYWxsQmFjayggJjo6
VHJhbnNpdGlvbkNiLCB0aGlzICkgKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OlRyYW5zaXRpb25DYg0KKy8vDQorLy8NCisvLw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6VHJhbnNpdGlvbkNi
KCkNCisgICAgew0KKyAgICANCisgICAgaVRyYW5zaXRpb25Db3VudCsrOw0KKyAgICANCisgICAg
aWYgKGlUcmFuc2l0aW9uQ291bnQ9PU1heFRyYW5zaXRpb25Db3VudCkNCisgICAgICAgIHsNCisg
ICAgICAgIERlc3Ryb3lUcmFuc2l0aW9uQml0bWFwKCk7DQorICAgICAgICBpVHJhbnNpdGlvblRp
bWVyLT5DYW5jZWwoKTsNCisgICAgICAgIERlc3Ryb3lGYWRlTWFzaygpOw0KKyAgICAgICAgfQ0K
Kw0KKyAgICBUUkFQX0lHTk9SRShEcmF3RmFkZU1hc2tMKCkpOw0KKyAgICBpV2ViS2l0Vmlldy0+
RHJhd0RlZmVycmVkKCk7DQorICAgIA0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6Q3JlYXRlVHJhbnNpdGlvbkJpdG1hcEwNCisvLw0KKy8v
DQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OkNy
ZWF0ZVRyYW5zaXRpb25CaXRtYXBMKCkNCisgICAgew0KKyAgICBpVHJhbnNpdGlvbkJpdG1hcCA9
IG5ldyAoRUxlYXZlKSBDRmJzQml0bWFwKCk7DQorICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpVHJh
bnNpdGlvbkJpdG1hcC0+Q3JlYXRlKCBpV2ViS2l0Vmlldy0+T2Zmc2NyZWVuQml0bWFwKCktPlNp
emVJblBpeGVscygpLCAgaVdlYktpdFZpZXctPkRpc3BsYXlNb2RlKCkpKTsNCisgICAgQ0Zic0Jp
dG1hcERldmljZSogZGV2ID0gQ0Zic0JpdG1hcERldmljZTo6TmV3TChpVHJhbnNpdGlvbkJpdG1h
cCk7DQorICAgIENsZWFudXBTdGFjazo6UHVzaEwoZGV2KTsNCisgICAgQ0Zic0JpdEdjKiBnYzsN
CisgICAgVXNlcjo6TGVhdmVJZkVycm9yKGRldi0+Q3JlYXRlQ29udGV4dChnYykpOw0KKyAgICBn
Yy0+Qml0Qmx0KFRQb2ludCgwLDApLGlXZWJLaXRWaWV3LT5PZmZzY3JlZW5CaXRtYXAoKSk7DQor
ICAgIGRlbGV0ZSBnYzsNCisgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7DQorICAg
IH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpEZXN0
cm95VHJhbnNpdGlvbkJpdG1hcA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6RGVzdHJveVRyYW5zaXRpb25CaXRtYXAoKQ0KKyAg
ICB7DQorICAgIGRlbGV0ZSBpVHJhbnNpdGlvbkJpdG1hcDsNCisgICAgaVRyYW5zaXRpb25CaXRt
YXAgPSAwOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRS
ZW5kZXJlcjo6Q3JlYXRlRmFkZU1hc2tMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpDcmVhdGVGYWRlTWFza0woKQ0KKyAgICB7
DQorICAgIGlGYWRlTWFzayA9IG5ldyAoRUxlYXZlKSBDRmJzQml0bWFwKCk7DQorICAgIGlGYWRl
TWFzay0+Q3JlYXRlKGlUcmFuc2l0aW9uQml0bWFwLT5TaXplSW5QaXhlbHMoKSxFR3JheTI1Nik7
DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVy
OjpEZXN0cm95RmFkZU1hc2sNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OkRlc3Ryb3lGYWRlTWFzaygpDQorICAgIHsNCisgICAg
ZGVsZXRlIGlGYWRlTWFzazsNCisgICAgaUZhZGVNYXNrID0gMDsNCisgICAgfQ0KKw0KKw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkRyYXdGYWRlTWFza0wN
CisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVu
ZGVyZXI6OkRyYXdGYWRlTWFza0woKQ0KKyAgICB7DQorICAgIGlmIChpRmFkZU1hc2spDQorICAg
ICAgICB7ICAgICAgICANCisgICAgICAgIENGYnNCaXRtYXBEZXZpY2UqIGRldiA9IENGYnNCaXRt
YXBEZXZpY2U6Ok5ld0woaUZhZGVNYXNrKTsNCisgICAgICAgIENsZWFudXBTdGFjazo6UHVzaEwo
ZGV2KTsNCisgICAgICAgIENGYnNCaXRHYyogZ2M7DQorICAgICAgICBVc2VyOjpMZWF2ZUlmRXJy
b3IoZGV2LT5DcmVhdGVDb250ZXh0KGdjKSk7DQorICAgICAgICBpRmFkZU1hc2stPkxvY2tIZWFw
KCk7DQorICAgICAgICBUU2l6ZSBzID0gaUZhZGVNYXNrLT5TaXplSW5QaXhlbHMoKTsNCisgICAg
ICAgIFRVaW50OCogZGF0YSA9IChUVWludDgqKWlGYWRlTWFzay0+RGF0YUFkZHJlc3MoKTsNCisg
ICAgICAgIFRVaW50OCogZW5kID0gZGF0YSArIHMuaVdpZHRoKnMuaUhlaWdodDsNCisgICAgICAg
IHdoaWxlICggZGF0YTxlbmQgKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAqKGRhdGEr
KykgPSAoMjU1KmlUcmFuc2l0aW9uQ291bnQvTWF4VHJhbnNpdGlvbkNvdW50KTsNCisgICAgICAg
ICAgICB9DQorICAgICAgICBpRmFkZU1hc2stPlVubG9ja0hlYXAoKTsNCisgICAgICAgIGRlbGV0
ZSBnYzsNCisgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOw0KKyAgICAgICAg
fQ0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5k
ZXJlcjo6RHJhd1RyYW5zaXRpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OkRyYXdUcmFuc2l0aW9uKENXaW5kb3dHYyYgZ2Ms
IENGYnNCaXRtYXAqIGFDdXJyZW50Qml0bWFwKQ0KKyAgICB7DQorDQorICAgIGlmICghaVRyYW5z
aXRpb25CaXRtYXAgfHwgIWFDdXJyZW50Qml0bWFwIHx8ICFpRmFkZU1hc2spDQorICAgICAgICBy
ZXR1cm47DQorICAgIA0KKyAgICBUU2l6ZSBzID0gaVRyYW5zaXRpb25CaXRtYXAtPlNpemVJblBp
eGVscygpOw0KKyAgICBnYy5CaXRCbHQoVFBvaW50KDAsMCksaVRyYW5zaXRpb25CaXRtYXApOw0K
KyAgICBnYy5CaXRCbHRNYXNrZWQoVFBvaW50KDAsMCksYUN1cnJlbnRCaXRtYXAsIFRSZWN0KHMp
LCBpRmFkZU1hc2ssIEVGYWxzZSk7DQorDQorICAgIH0NCisNCkluZGV4OiBXZWJLaXQvQ2hhbmdl
TG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTcyODkpDQor
KysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSw2NCBAQA0KKzIw
MDYtMTAtMjUgIHlhZGF2YWxsICA8c2V0IEVNQUlMX0FERFJFU1MgZW52aXJvbm1lbnQgdmFyaWFi
bGU+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMgKHpidWp0YXNAZ21haWwu
Y29tKS4NCisgICAgICAgIERFU0M6V2lkZ2V0IE9iamVjdCAmIFNjcmlwdGFibGUgcGx1Z2luIGlt
cGxlbWVudGF0aW9uDQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTQwNw0KKw0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9pbmMvQnJDdGwuaDoNCisg
ICAgICAgICogQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oOg0KKyAgICAgICAgKFRCckN0
bERlZnM6Oik6DQorICAgICAgICAqIEJyb3dzZXJDb250cm9sL2luYy9CckN0bEludGVyZmFjZS5o
Og0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwOg0KKyAgICAgICAgKENC
ckN0bDo6fkNCckN0bCk6DQorICAgICAgICAoQ0JyQ3RsOjpIYW5kbGVDb21tYW5kTCk6DQorICAg
ICAgICAoQ0JyQ3RsOjpBZGRPcHRpb25NZW51SXRlbXNMKToNCisgICAgICAgIChDQnJDdGw6OlVw
ZGF0ZURlZmF1bHRTb2Z0a2V5c0wpOg0KKyAgICAgICAgKENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0
ZW5zaW9uTCk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmg6DQor
ICAgICAgICAoQ1dlYktpdENvbnRyb2w6OldpZGdldEV4dGVuc2lvbik6DQorICAgICAgICAqIEJy
b3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2UuaDoNCisgICAgICAgICogQnJvd3NlclZpZXcvc3Jj
L0tleUV2ZW50SGFuZGxlci5jcHA6DQorICAgICAgICAoQ0tleUV2ZW50SGFuZGxlcjo6SGFuZGxl
QWN0aXZhdGVLZXlzTCk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9s
LmNwcDoNCisgICAgICAgIChDV2ViS2l0Q29udHJvbDo6fkNXZWJLaXRDb250cm9sKToNCisgICAg
ICAgIChDV2ViS2l0Q29udHJvbDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTCk6DQorICAgICAgICAq
IEJyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNwcDoNCisgICAgICAgIChDV2ViS2l0Vmlldzo6
TWFrZVZpc2libGUpOg0KKyAgICAgICAgKENXZWJLaXRWaWV3OjpEcmF3KToNCisgICAgICAgICog
QnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHA6DQorICAgICAgICAoQ1dlYktpdEJyaWRn
ZTo6TGF5b3V0Q2hhbmdlZCk6DQorICAgICAgICAoQ1dlYktpdEJyaWRnZTo6Y3JlYXRlV2lkZ2V0
T2JqZWN0KToNCisgICAgICAgICogUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmg6DQorICAgICAg
ICAqIFBsdWdpbi9pbmMvUGx1Z2luU2tpbi5oOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpXZWJL
aXRDb250cm9sKToNCisgICAgICAgIChDUGx1Z2luU2tpbjo6RnJhbWUpOg0KKyAgICAgICAgKiBQ
bHVnaW4vaW5jL1BsdWdpbldpbi5oOg0KKyAgICAgICAgKiBQbHVnaW4vaW5jL25wYXBpLmg6DQor
ICAgICAgICAqIFBsdWdpbi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwOg0KKyAgICAgICAgKE5w
bkdldFZhbHVlKToNCisgICAgICAgICogUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcDoNCisg
ICAgICAgIChDUGx1Z2luSW5mbzo6UGFyc2VEZWZhdWx0RGF0YUwpOg0KKyAgICAgICAgKENQbHVn
aW5IYW5kbGVyOjpMb2FkUGx1Z2luc1N5bmNMKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6
TG9hZFBsdWdpbnNMKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6UmVsb2FkUGx1Z2lucyk6
DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbk5hbWUpOg0KKyAgICAgICAgKENQ
bHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5GaWxlTmFtZSk6DQorICAgICAgICAoQ1BsdWdpbkhhbmRs
ZXI6OkdldFBsdWdpbkRlc2NyaXB0aW9uKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6R2V0
UGx1Z2luQ291bnQpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpSZWxvYWRQbHVnaW5zTCk6
DQorICAgICAgICAqIFBsdWdpbi9zcmMvUGx1Z2luU2tpbi5jcHA6DQorICAgICAgICAoQ1BsdWdp
blNraW46OkNvbnN0cnVjdEwpOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpDcmVhdGVQbHVnaW5X
aW5MKToNCisgICAgICAgIChDUGx1Z2luU2tpbjo6U2VsZWN0Vmlld2VyQW5kRG93bmxvYWRMKToN
CisgICAgICAgIChDUGx1Z2luU2tpbjo6UGx1Z2luU2NyaXB0YWJsZU9iamVjdCk6DQorICAgICAg
ICAqIFBsdWdpbi9zcmMvUGx1Z2luV2luLmNwcDoNCisgICAgICAgIChDUGx1Z2luV2luOjpXaW5k
b3dTY3JpcHROUE9iamVjdCk6DQorICAgICAgICAoQ1BsdWdpbldpbjo6UGx1Z2luU2NyaXB0YWJs
ZU9iamVjdCk6DQorICAgICAgICAqIGdyb3VwL0Jyb3dzZXJWaWV3Lm1tcDoNCisgICAgICAgICog
Z3JvdXAvUGx1Z2luLm1tcDoNCisgICAgICAgICogZ3JvdXAvd2Via2l0Lm1tcDoNCisgICAgICAg
ICogcm9tL3dlYmtpdC5pYnk6DQorDQogMjAwNi0xMC0yMyAgbmFndW8gIDxnZW9yZ2UuZ3VvQG5v
a2lhLmNvbT4NCiANCiAgICAgICAgIFJldmlld2VkIGJ5IFNhY2hpbi4NCkluZGV4OiBXZWJLaXQv
Z3JvdXAvQnJvd3NlclZpZXcubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2dyb3VwL0Jyb3dz
ZXJWaWV3Lm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L2dyb3VwL0Jyb3dzZXJWaWV3
Lm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTc3LDYgKzc3LDEyIEBADQogU09VUkNFICAgICAgICAg
IFNtYXJ0TGlua0hhbmRsZXIuY3BwDQogU09VUkNFICAgICAgICAgIFNtYXJ0TGlua01hcC5jcHAN
CiAjZW5kaWYNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK1NPVVJDRSAgICAgICAgICBX
aWRnZXRFeHRlbnNpb24uY3BwDQorU09VUkNFICAgICAgICAgIFdpZGdldFByZWZlcmVuY2VzLmNw
cA0KK1NPVVJDRSAgICAgICAgICBXaWRnZXRSZW5kZXJlci5jcHANCitTWVNURU1JTkNMVURFICAg
ICAgICAuLlwuLlwuLlxXaWRnZXRFbmdpbmVcaW5jDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURH
RVRTDQogVVNFUklOQ0xVREUgICAgIC4uXFJlc291cmNlTG9hZGVyXEluYw0KIFVTRVJJTkNMVURF
ICAgICAuLlxSZXNvdXJjZUxvYWRlclxjYWNoZUluYw0KIFVTRVJJTkNMVURFICAgICAuLlxCcm93
c2VyVmlld1xJbmMNCkluZGV4OiBXZWJLaXQvZ3JvdXAvUGx1Z2luLm1tcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9ncm91cC9QbHVnaW4ubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQv
Z3JvdXAvUGx1Z2luLm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDYgKzYwLDkgQEANCiBVU0VS
SU5DTFVERSAgICAgLi5cUmVzb3VyY2VMb2FkZXJcSW5jDQogI2lmbmRlZiBfX0JST1dTRVJfU0RL
DQogVVNFUklOQ0xVREUgICAgIC4uXC4uXC4uXFBhZ2VTY2FsZXJcSW5jDQorI2lmZGVmICBSRF9C
Uk9XU0VSX1dJREdFVFMNCitVU0VSSU5DTFVERSAgICAgXFM2MFxtd1x3ZWJcV2ViRW5naW5lXFdp
ZGdldEVuZ2luZVxJbmMNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAjZW5kaWYNCiBV
U0VSSU5DTFVERSAgICAgLi5cLi5cV0VCQ09SRVxicmlkZ2UNCiANCkluZGV4OiBXZWJLaXQvZ3Jv
dXAvd2Via2l0Lm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC93ZWJraXQubW1wCShy
ZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvZ3JvdXAvd2Via2l0Lm1tcAkod29ya2luZyBjb3B5
KQ0KQEAgLTExNSw2ICsxMTUsOSBAQA0KIFNZU1RFTUlOQ0xVREUgXEVwb2MzMlxpbmNsdWRlIFxF
cG9jMzJcaW5jbHVkZVxvZW0NCiAjZW5kaWYNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VU
Uw0KK1VTRVJJTkNMVURFICAgLi5cLi5cLi5cV2lkZ2V0RW5naW5lXGluYw0KKyNlbmRpZiAvL1JE
X0JST1dTRVJfV0lER0VUUw0KIC8vLS0NCiANCiBTWVNURU1JTkNMVURFIFxFcG9jMzJcaW5jbHVk
ZVxodHRwDQpJbmRleDogV2ViS2l0L1BsdWdpbi9pbmMvbnBhcGkuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Q
bHVnaW4vaW5jL25wYXBpLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xNCw3ICsxNCw3IEBADQogICoN
CiAgKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBtb3ppbGxhLm9yZyBjb2RlLg0KICAqDQotICogVGhl
IEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzIA0KKyAqIFRoZSBJbml0
aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcw0KICAqIE5ldHNjYXBlIENvbW11
bmljYXRpb25zIENvcnBvcmF0aW9uLg0KICAqIFBvcnRpb25zIGNyZWF0ZWQgYnkgdGhlIEluaXRp
YWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgNCiAgKiB0aGUgSW5pdGlhbCBEZXZl
bG9wZXIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQpAQCAtNzMsMTIgKzczLDEyIEBADQogI2VuZGlm
DQogI2VuZGlmDQogDQotLyogDQotICogTk9fTlNQUl8xMF9TVVBQT1JUIGRpc2FibGVzIHRoZSBp
bmNsdXNpb24gDQotICogb2Ygb2Jzb2xldGUvcHJvdHlwZXMuaCwgd2hvc2UgaW50MTYsIHVpbnQx
NiwgDQotICogaW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0aCB0aG9zZSAN
Ci0gKiBpbiB0aGlzIGZpbGUuIA0KLSAqLyANCisvKg0KKyAqIE5PX05TUFJfMTBfU1VQUE9SVCBk
aXNhYmxlcyB0aGUgaW5jbHVzaW9uDQorICogb2Ygb2Jzb2xldGUvcHJvdHlwZXMuaCwgd2hvc2Ug
aW50MTYsIHVpbnQxNiwNCisgKiBpbnQzMiwgYW5kIHVpbnQzMiB0eXBlZGVmcyBjb25mbGljdCB3
aXRoIHRob3NlDQorICogaW4gdGhpcyBmaWxlLg0KKyAqLw0KICNpZm5kZWYgTk9fTlNQUl8xMF9T
VVBQT1JUDQogI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQNCiAjZW5kaWYNCkBAIC0xMjAsNyAr
MTIwLDcgQEANCiAgICNpbmNsdWRlIDxFdmVudHMuaD4NCiAjZW5kaWYNCiANCi0jaWYgZGVmaW5l
ZChYUF9VTklYKSANCisjaWYgZGVmaW5lZChYUF9VTklYKQ0KICMgaW5jbHVkZSA8c3RkaW8uaD4N
CiAjIGlmIGRlZmluZWQoTU9aX1gxMSkNCiAjICAgaW5jbHVkZSA8WDExL1hsaWIuaD4NCkBAIC0y
OTgsMTEgKzI5OCwxMSBAQA0KICAgdWludDE2IHJpZ2h0Ow0KIH0gTlBSZWN0Ow0KIA0KLXR5cGVk
ZWYgc3RydWN0IF9OUFNpemUgDQoteyANCi0gIGludDMyIHdpZHRoOyANCi0gIGludDMyIGhlaWdo
dDsgDQotfSBOUFNpemU7IA0KK3R5cGVkZWYgc3RydWN0IF9OUFNpemUNCit7DQorICBpbnQzMiB3
aWR0aDsNCisgIGludDMyIGhlaWdodDsNCit9IE5QU2l6ZTsNCiANCiAjaWZkZWYgWFBfVU5JWA0K
IC8qDQpAQCAtMzQ1LDIxICszNDUsMjEgQEANCiANCiANCiAvKg0KLSAqICAgVGhlIGZvbGxvd2lu
ZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0byBOUE5WIGFuZCANCi0g
KiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVy
ZmFjZXMuIE5ld2VyIA0KLSAqICAgY29tcGlsZXJzIG9uIHNvbWUgcGxhdGZvcm1zIG1heSBnZW5l
cmF0ZSB2dGFibGVzIHRoYXQgYXJlIG5vdCANCi0gKiAgIGNvbXBhdGlibGUgd2l0aCBvbGRlciBj
b21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBmcm9tIA0KLSAqICAgbm90IHVuZGVy
c3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZSANCisg
KiAgIFRoZSBmb2xsb3dpbmcgbWFza3MgYXJlIGFwcGxpZWQgb24gY2VydGFpbiBwbGF0Zm9ybXMg
dG8gTlBOViBhbmQNCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91bmQgcG9pbnRl
cnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyDQorICogICBjb21waWxlcnMgb24gc29tZSBwbGF0
Zm9ybXMgbWF5IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90DQorICogICBjb21wYXRpYmxl
IHdpdGggb2xkZXIgY29tcGlsZXJzLiBUbyBwcmV2ZW50IG9sZGVyIHBsdWdpbnMgZnJvbQ0KKyAq
ICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2UgbWFza3MgY2hh
bmdlIHRoZQ0KICAqICAgdmFsdWVzIG9mIHRob3NlIHNlbGVjdG9ycyBvbiB0aG9zZSBwbGF0Zm9y
bXMuIFRvIHJlbWFpbiBiYWNrd2FyZHMNCi0gKiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0
IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNhbiANCisgKiAgIGNvbXBhdGlibGUg
d2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNhbg0KICAq
ICAgdXNlIHRoZXNlIG1hc2tzIHRvIGR5bmFtaWNhbGx5IGRldGVybWluZSBhbmQgdXNlIHRoZSBj
b3JyZWN0IEMrKw0KLSAqICAgQUJJIHRoYXQgdGhlIGJyb3dzZXIgaXMgZXhwZWN0aW5nLiBUaGlz
IGRvZXMgbm90IGFwcGx5IHRvIFdpbmRvd3MgDQorICogICBBQkkgdGhhdCB0aGUgYnJvd3NlciBp
cyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cw0KICAqICAgYXMgTWlj
cm9zb2Z0J3MgQ09NIEFCSSB3aWxsIGxpa2VseSBub3QgY2hhbmdlLg0KICAqLw0KIA0KICNkZWZp
bmUgTlBfQUJJX0dDQzNfTUFTSyAgMHgxMDAwMDAwMA0KIC8qDQotICogICBnY2MgMy54IGdlbmVy
YXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGggDQorICog
ICBnY2MgMy54IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRp
YmxlIHdpdGgNCiAgKiAgIHByZXZpb3VzIGNvbXBpbGVycy4NCiAgKi8NCiAjaWYgKGRlZmluZWQg
KFhQX1VOSVgpICYmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSAzKSkNCkBAIC0z
NzUsNyArMzc1LDcgQEANCiAgKiAgIGRpZmZlcmVudCB0aGFuIENGTS4gSW4gYWRkaXRpb24gdG8g
aGF2aW5nIGEgZGlmZmVyZW50DQogICogICBDKysgQUJJLCBpdCBhbHNvIGhhcyBoYXMgZGlmZmVy
ZW50IEMgY2FsbGluZyBjb252ZW50aW9uLg0KICAqICAgWW91IG11c3QgdXNlIGdsdWUgY29kZSB3
aGVuIGNhbGxpbmcgYmV0d2VlbiBDRk0gYW5kDQotICogICBNYWNoLU8gQyBmdW5jdGlvbnMuIA0K
KyAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLg0KICAqLw0KICNpZiAoZGVmaW5lZChUQVJHRVRfUlRf
TUFDX01BQ0hPKSkNCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNI
T19NQVNLDQpAQCAtNDA0LDExICs0MDQsMTQgQEANCiAgIC8qIDEyIGFuZCBvdmVyIGFyZSBhdmFp
bGFibGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuOSAqLw0KICAgTlBQVmph
dmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLA0KICAgTlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5N
ZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUgaW4gTW96aWxsYSAxLjAgKi8NCi0gIC8qIFRoZSBm
b2xsb3dpbmcgaXMgc3BlY2lmaWMgdG8gTm9raWEsIHNvIHZhbHVlIGlzIA0KLSAgICogc3RhcnRl
ZCBmcm9tIDEwMC4gVGhlIG51bWJlcnMgMTMgdG8gMTAwMCBhcmUgbGVmdA0KKyNpZmRlZiBSRF9C
Uk9XU0VSX1dJREdFVFMNCisgIE5QUFZwbHVnaW5OZWVkc1hFbWJlZCAgICAgICAgID0gMTQsIC8q
IE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisgICAvKiBzdGFydGVkIGZyb20gMTAwLiBU
aGUgbnVtYmVycyAxMyB0byAxMDAwIGFyZSBsZWZ0DQogICAgKiBmb3Igc3RhbmRhcml6YXRpb24g
YW5kIG90aGVyIGZ1dHVyZSB1c2UuIFZhbHVlIHJldHVybiBpcyB6ZXJvIGZvcg0KICAgICogaW5l
dGVyYWN0aXZlIGFuZCAnb25lJyBmb3Igbm9uLWludGVyYWN0aXZlLg0KICAgICovDQorICBOUFBW
cGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0ICA9IDE1LA0KKyNlbmRpZg0KICAgTlBQVnBsdWdpbklu
dGVyYWN0aXZlQm9vbCA9IDEwMDANCiB9IE5QUFZhcmlhYmxlOw0KIA0KQEAgLTQyNyw2ICs0MzAs
MTYgQEANCiAgIE5QTlZzZXJ2aWNlTWFuYWdlciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwNCiAgIE5Q
TlZET01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgICAvKiBhdmFpbGFibGUgaW4g
TW96aWxsYSAxLjIgKi8NCiAgIE5QTlZET01XaW5kb3cgICAgICA9ICgxMiB8IE5QX0FCSV9NQVNL
KQ0KKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMNCisgICxOUE5WVG9vbGtpdCAgICAgICAgPSAo
MTMgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQorICBO
UE5WU3VwcG9ydHNYRW1iZWRCb29sID0gMTQsICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50
ZWQgaW4gV2ViS2l0ICovDQorDQorICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRo
ZSBicm93c2VyIHdpbmRvdy4gKi8NCisgIE5QTlZXaW5kb3dOUE9iamVjdCA9IDE1LA0KKw0KKyAg
ICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50
LiAqLw0KKyAgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdCAgICAgICAgICAgICAgICAgLyogTm90
IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0KKyNlbmRpZg0KIH0gTlBOVmFyaWFibGU7DQogDQog
LyoNCkluZGV4OiBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmgJKHJldmlzaW9uIDE3MDY5KQ0K
KysrIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbkhhbmRsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTEzNyw2ICsxMzcsMTYgQEANCiAgICAgICAgICovDQogICAgICAgICBUVWludCBHZXRJbmRleEZy
b21IYW5kbGUoVEludCBhSGFuZGxlKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0K
KyAgICAgICAgLyoqDQorICAgICAgICAqIEdldCB0aGUgaW5kZXggb2YgcGx1Z2luIGluZm8gZnJv
bSBpdHMgaGFuZGxlLg0KKyAgICAgICAgKg0KKyAgICAgICAgKiBAc2luY2UgMy4xDQorICAgICAg
ICAqIEBwYXJhbSBhSGFuZGxlIFRoZSBoYW5kbGUgb2YgdGhlIHBsdWdpbiwgcmV0dXJuZWQgZnJv
bSBGaW5kUGx1Z2luLg0KKyAgICAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgcGx1Z2lu
IGluZm8uDQorICAgICAgICAqLw0KKyAgICAgICAgVEJvb2wgTG9hZFBsdWdpbnNTeW5jTCgpOw0K
KyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICBwdWJsaWM6IC8vRnJvbSBNV2ViQ29y
ZVBsdWdpbkhhbmRsZXINCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBTY2FucyBmb3IgbmV3IHBs
dWdpbnMuDQpJbmRleDogV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luU2tpbi5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luU2tpbi5oCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5Ta2luLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xNjgs
NyArMTY4LDE0IEBADQogICAgICAgICAqIEBzaW5jZSAzLjENCiAgICAgICAgICogQHJldHVybiBU
aGUgV2ViS2l0Q29udHJvbCBvYmplY3QNCiAgICAgICAgICovDQotICAgICAgICBDV2ViS2l0Q29u
dHJvbCogV2ViS2l0Q29udHJvbCgpIHsgcmV0dXJuICZpV2ViS2l0RnJhbWUtPldlYktpdFZpZXco
KS5XZWJLaXRDb250cm9sKCk7IH0NCisgICAgICAgIENXZWJLaXRDb250cm9sKiBXZWJLaXRDb250
cm9sKCkgY29uc3QgeyByZXR1cm4gJmlXZWJLaXRGcmFtZS0+V2ViS2l0VmlldygpLldlYktpdENv
bnRyb2woKTsgfQ0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEZyYW1lDQorICAgICAgICAqIFJl
dHVybnMgYSBwb2ludGVyIHRvIFdlYktpdEZyYW1lIG9iamVjdC4NCisgICAgICAgICogQHNpbmNl
IDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuIFRoZSBXZWJLaXRDb250cm9sIG9iamVjdA0KKyAgICAg
ICAgKi8NCisgICAgICAgIENXZWJLaXRGcmFtZSogRnJhbWUoKSBjb25zdCB7IHJldHVybiBpV2Vi
S2l0RnJhbWU7IH0gDQogDQogICAgICAgICAvKioNCiAgICAgICAgICogSGFzUmVzaXplZA0KQEAg
LTM2Miw2ICszNjksMTUgQEANCiAgICAgICAgIFRCb29sIENhbkludGVyYWN0KCkgY29uc3QgICAg
ICAgICAgIHsgcmV0dXJuIGlDYW5QbHVnaW5JbnRlcmFjdDsgfQ0KICNlbmRpZg0KIA0KKyNpZmRl
ZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogR2V0IHRoZSBz
Y3JpcHRpbmcgb2JqZWN0IGZyb20gcGx1Z2luDQorICAgICAgICAqIFNldHMgdGhlIGZvbnQNCisg
ICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAgICAqLw0KKyAg
ICAgICAgdm9pZCAqUGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpOyANCisjZW5kaWYNCiAgIHB1Ymxp
YzogLy8gRnVuY3Rpb25zIGZyb20gTVZpZXdGb2N1c09ic2VydmVyDQogDQogICAgICAgICAvKioN
CkluZGV4OiBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5XaW4uaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC9QbHVnaW4vaW5jL1BsdWdpbldpbi5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQv
UGx1Z2luL2luYy9QbHVnaW5XaW4uaAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDkgQEAN
CiBjbGFzcyBDV2ViS2l0Q29udHJvbDsNCiBjbGFzcyBDUGx1Z2luU2tpbjsNCiBjbGFzcyBDUGx1
Z2luSGFuZGxlcjsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK2NsYXNzIE5QT2JqZWN0
Ow0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0KIC8vIExPQ0FMIENPTlNUQU5UUyBB
TkQgTUFDUk9TDQogLy8gVGhlc2UgYXJlIHVzZWQgdG8gZGVzaWduYXRlIHRoZSBoYW5kbGluZyBv
ZiBpbmNvbWluZyBjb250ZW50IGFuZCBsb2FkaW5nIFBsdWdpbnMNCkBAIC00NjYsNiArNDY5LDIx
IEBADQogICAgICAgICAqLw0KICAgICB2b2lkIEhhbmRsZUxvc2luZ0ZvcmVncm91bmQoKTsNCiAN
CisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIFJl
dHVybiB3aW5kb3cgb2JqZWN0IHVzYWJsZSBmcm9tIHNjcmlwdGFibGUgcGx1Z2lucyANCisgICAg
ICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAgICAgICovICAg
ICAgICANCisgICAgICAgIE5QT2JqZWN0KiBXaW5kb3dTY3JpcHROUE9iamVjdCgpOyANCisgICAg
ICAgIC8qKg0KKyAgICAgICAgKiBHZXQgdGhlIHNjcmlwdGluZyBvYmplY3QgZnJvbSBwbHVnaW4N
CisgICAgICAgICogU2V0cyB0aGUgZm9udA0KKyAgICAgICAgKiBAc2luY2UgMy4xDQorICAgICAg
ICAqIEByZXR1cm4NCisgICAgICAgICovDQorICAgICAgICB2b2lkICpQbHVnaW5TY3JpcHRhYmxl
T2JqZWN0KCk7ICAgICAgICAgDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogICAg
IHByb3RlY3RlZDogLy8gTmV3IGZ1bmN0aW9ucw0KIA0KSW5kZXg6IFdlYktpdC9QbHVnaW4vc3Jj
L05wbkltcGxlbWVudGF0aW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vc3Jj
L05wbkltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdp
bi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDI1LDcgKzQy
NSwyMCBAQA0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgIH0NCiAgICAgICAgICAgICBi
cmVhazsNCi0gICAgICAgICAgICANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAg
ICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6DQorICAgICAgICAgICAgew0KKyAgICAgICAgICAg
IENQbHVnaW5XaW4qIHBsdWdpbldpbiA9IChDUGx1Z2luV2luKilhSW5zdGFuY2UtPm5kYXRhOw0K
KyAgICAgICAgICAgIE5QT2JqZWN0KiB3aW5kb3dPYmplY3QgPSBwbHVnaW5XaW4tPldpbmRvd1Nj
cmlwdE5QT2JqZWN0KCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvd09iamVjdCkNCisgICAgICAg
ICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2b2lkICoqdiA9ICh2b2lkICoqKWFSZXRWYWx1
ZTsNCisgICAgICAgICAgICAgICAgKnYgPSB3aW5kb3dPYmplY3Q7DQorICAgICAgICAgICAgICAg
IHJldHVybiBOUEVSUl9OT19FUlJPUjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOw0KKyAgICAgICAgICAgIH0NCisjZW5kaWYgLy9S
RF9CUk9XU0VSX1dJREdFVFMNCiAgICAgICAgIGNhc2UgTlBOVkRPTVdpbmRvdzoNCiAgICAgICAg
IGNhc2UgTlBOVnhEaXNwbGF5OiAgICAgICAgICAvLyBVbml4IG9ubHk6IFJldHVybnMgdGhlIGN1
cnJlbnQgRGlzcGxheQ0KICAgICAgICAgY2FzZSBOUE5WeHRBcHBDb250ZXh0OiAgICAgIC8vIFVu
aXggb25seTogUmV0dXJucyB0aGUgYXBwbGljYXRpb24ncyBYdEFwcENvbnRleHQNCkluZGV4OiBX
ZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9QbHVnaW4vc3JjL1BsdWdpbkhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJL
aXQvUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTEwLDkg
KzEwLDkgQEANCiAqICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24NCiAq
ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKiAgDQotKiAgCVJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KLSogIAltb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMNCi0qICAJYXJlIG1ldDoNCisqICAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorKiAgICAgIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cw0KKyogICAgICBhcmUgbWV0Og0KICogIA0KICogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lg0KQEAgLTI0LDE4ICsyNCwxOCBAQA0KICogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KICogICAgICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4N
CiAqICANCi0qICAJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUw0KLSogIAkiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KLSogIAlMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IN
Ci0qICAJQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQNCi0qICAJT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQotKiAgCVNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCi0qICAJ
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsDQotKiAgCURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KLSogIAlUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotKiAgCShJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFDQotKiAgCVVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0gNCi0qICAJREFNQUdFLg0KKyogICAgICBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQor
KiAgICAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UDQorKiAgICAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyogICAgICBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VA0KKyogICAgICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisqICAgICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyogICAgICBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwNCisqICAgICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorKiAgICAgIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisqICAgICAg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUNCisqICAgICAgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KKyogICAgICBEQU1BR0UuDQogKiAgDQogKiAgICBQ
bGVhc2Ugc2VlIGZpbGUgcGF0ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLg0KICog
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzI1LDggKzMyNSw4IEBADQogICAgICAgICAgICAg
aWYgKGkgPiBtYXJrZXIpDQogICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgVFB0
ckM4IG1pbWVGaWxlRXh0OChhTUlNRURlc2NyaXB0aW9uLk1pZChtYXJrZXIsaS1tYXJrZXIpKTsN
Ci0JICAgICAgICAgICAgbmV3TWltZUZpbGVFeHRFbnRyeSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtl
cik7DQotCSAgICAgICAgICAgIG5ld01pbWVGaWxlRXh0RW50cnktPkRlcygpLkNvcHkobWltZUZp
bGVFeHQ4KTsNCisgICAgICAgICAgICAgICAgbmV3TWltZUZpbGVFeHRFbnRyeSA9IEhCdWZDOjpO
ZXdMQyhpLW1hcmtlcik7DQorICAgICAgICAgICAgICAgIG5ld01pbWVGaWxlRXh0RW50cnktPkRl
cygpLkNvcHkobWltZUZpbGVFeHQ4KTsNCiAgICAgICAgICAgICAgICAgVXNlcjo6TGVhdmVJZkVy
cm9yKGlNaW1lRmlsZUV4dGVuc2lvbnMuQXBwZW5kKG5ld01pbWVGaWxlRXh0RW50cnkpKTsNCiAg
ICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsgLy9wb3AgbmV3TWltZUZpbGVFeHRF
bnRyeQ0KIA0KQEAgLTM2Niw4ICszNjYsOCBAQA0KICAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBtaW1lRGVzY3JpcHRpb24gZW50cnkNCiAg
ICAgICAgICAgICAgICAgICAgIFRQdHJDOCBtaW1lRGVzYzgoYU1JTUVEZXNjcmlwdGlvbi5NaWQo
bWFya2VyLGktbWFya2VyKSk7DQotCQkgICAgICAgICAgICBuZXdNaW1lRGVzY3JpcHRpb25FbnRy
eSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQotCQkgICAgICAgICAgICBuZXdNaW1lRGVzY3Jp
cHRpb25FbnRyeS0+RGVzKCkuQ29weShtaW1lRGVzYzgpOw0KKyAgICAgICAgICAgICAgICAgICAg
bmV3TWltZURlc2NyaXB0aW9uRW50cnkgPSBIQnVmQzo6TmV3TEMoaS1tYXJrZXIpOw0KKyAgICAg
ICAgICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnktPkRlcygpLkNvcHkobWltZURl
c2M4KTsNCiANCiAgICAgICAgICAgICAgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpTWltZURl
c2NyaXB0aW9ucy5BcHBlbmQobmV3TWltZURlc2NyaXB0aW9uRW50cnkpKTsNCiAgICAgICAgICAg
ICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCk7ICAvL3BvcCBuZXdNaW1lRGVzY3JpcHRpb25F
bnRyeQ0KQEAgLTUyMSw3ICs1MjEsMjggQEANCiAgICAgcmV0dXJuIGRvbmVJbml0Ow0KICAgICB9
DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIENQbHVnaW5IYW5kbGVyOjpJbml0aWFsaXplDQorLy8NCisvLyBJbml0aWFsaXplcyB0
aGUgUGx1Z2luSGFuZGxlciwgcG9zc2libHkgYXN5bmNocm9ub3VzbHkNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vDQorVEJvb2wgQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zU3luY0wo
KQ0KKyAgICB7DQorICAgIGlmKCBpUGx1Z2luSW5mb0FycmF5LkNvdW50KCkgIT0gMCApDQorICAg
ICAgICB7DQorICAgICAgICByZXR1cm4gRVRydWU7DQorICAgICAgICB9DQorDQorICAgIC8vQ2Fu
Y2VsIHRoZSBlYXJsaWVyIHJlcXVlc3QgYW5kIGxvYWQgcGx1Z2lucyBub3cNCisgICAgaWYoIGlJ
ZGxlICkNCisgICAgICAgIHsNCisgICAgICAgIGlJZGxlLT5DYW5jZWwoKTsNCisgICAgICAgIH0N
CisgICAgcmV0dXJuIExvYWRQbHVnaW5zTCgpOw0KKyAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NF
Ul9XSURHRVRTDQogLy8gQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zTA0KIC8vDQogLy8gTG9h
ZHMgYWxsIHRoZSBwbHVnaW5zIGFuZCBxdWVyeSB0aGVtIGZvciBkZXRhaWxzLg0KQEAgLTUzNSwz
MiArNTU2LDMyIEBADQogICAgIC8vIENyZWF0ZSB0aGUgRUNvbSBpbmZvIGFycmF5LCBjb250YWlu
cyB0aGUgcGx1Z2luIGluZm9ybWF0aW9uDQogICAgIFJJbXBsSW5mb1B0ckFycmF5IGVjb21QbHVn
aW5JbmZvQXJyYXk7DQogDQotCS8vIEdldCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0aGF0IG1hdGNo
IHRoZSBLTkJyb3dzZXJQbHVnaW5JbnRlcmZhY2VVaWQNCi0JUkVDb21TZXNzaW9uOjpMaXN0SW1w
bGVtZW50YXRpb25zTChLQnJvd3NlclBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBsdWdpbkluZm9B
cnJheSk7DQorICAgIC8vIEdldCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0aGF0IG1hdGNoIHRoZSBL
TkJyb3dzZXJQbHVnaW5JbnRlcmZhY2VVaWQNCisgICAgUkVDb21TZXNzaW9uOjpMaXN0SW1wbGVt
ZW50YXRpb25zTChLQnJvd3NlclBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBsdWdpbkluZm9BcnJh
eSk7DQogDQotCS8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIE5ldHNjYXBlIHBsdWdpbnMgZm91bmQg
YnkgRUNvbSBhbmQgcG9wdWxhdGUgdGhlDQotCS8vIGlQbHVnaW5JbmZvQXJyYXkNCi0JY29uc3Qg
VEludCBwbHVnaW5Db3VudCA9IGVjb21QbHVnaW5JbmZvQXJyYXkuQ291bnQoKTsNCi0JZm9yIChU
SW50IGluZGV4PTA7IGluZGV4PHBsdWdpbkNvdW50OyArK2luZGV4KQ0KKyAgICAvLyBMb29wIHRo
cm91Z2ggYWxsIHRoZSBOZXRzY2FwZSBwbHVnaW5zIGZvdW5kIGJ5IEVDb20gYW5kIHBvcHVsYXRl
IHRoZQ0KKyAgICAvLyBpUGx1Z2luSW5mb0FycmF5DQorICAgIGNvbnN0IFRJbnQgcGx1Z2luQ291
bnQgPSBlY29tUGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQorICAgIGZvciAoVEludCBpbmRleD0w
OyBpbmRleDxwbHVnaW5Db3VudDsgKytpbmRleCkNCiAgICAgICAgIHsNCi0JCUNQbHVnaW5JbmZv
KiBwbHVnaW5JbmZvID0gbmV3KEVMZWF2ZSkgQ1BsdWdpbkluZm87DQotCSAgICBwbHVnaW5JbmZv
LT5pSGFuZGxlID0gaU5leHRIYW5kbGUrKzsNCi0JICAgIENsZWFudXBTdGFjazo6UHVzaEwocGx1
Z2luSW5mbyk7DQorICAgICAgICBDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IG5ldyhFTGVhdmUp
IENQbHVnaW5JbmZvOw0KKyAgICAgICAgcGx1Z2luSW5mby0+aUhhbmRsZSA9IGlOZXh0SGFuZGxl
Kys7DQorICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHBsdWdpbkluZm8pOw0KIA0KLQkgICAg
Ly8gU2V0IHRoZSBwbHVnaW4gcHJvcGVydGllcw0KLQkgICAgcGx1Z2luSW5mby0+aVBsdWdpbklu
Zm8gPSBlY29tUGx1Z2luSW5mb0FycmF5W2luZGV4XTsNCi0JICAgIC8vIFJlYWQgdGhlIHBsdWdp
bidzIG5hbWUgYW5kIHBsdWdpbiBGaWxlTmFtZSAoZGlzcGxheV9uYW1lKSBmcm9tIHRoZSBJTVBM
RU1FTlRBVElPTl9JTkZPDQotCSAgICBwbHVnaW5JbmZvLT5QYXJzZURpc3BsYXlOYW1lTChwbHVn
aW5JbmZvLT5pUGx1Z2luSW5mby0+RGlzcGxheU5hbWUoKSk7DQotCSAgICBwbHVnaW5JbmZvLT5p
RGVzY3JpcHRpb24gPSBIQnVmQzo6TmV3TChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+T3BhcXVl
RGF0YSgpLkxlbmd0aCgpKTsNCi0JICAgIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbi0+RGVzKCku
Q29weShwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+T3BhcXVlRGF0YSgpKTsNCi0JICAgIHBsdWdp
bkluZm8tPmlVaWQgPSBwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+SW1wbGVtZW50YXRpb25VaWQo
KTsNCi0JICAgIC8vIFBhcnNlcyB0aGUgYU1JTUVEZXNjcmlwdGlvbiBzdHJpbmcgdG8gcG9wdWxh
dGUgdGhlIG1pbWVUeXBlcywgbWltZUV4dGVuc2lvbnMsDQotCSAgICAvLyBhbmQgbWltZURlc2Ny
aXB0aW9ucyBhcnJheXMuDQotCSAgICBwbHVnaW5JbmZvLT5QYXJzZURlZmF1bHREYXRhTChwbHVn
aW5JbmZvLT5pUGx1Z2luSW5mby0+RGF0YVR5cGUoKSk7DQorICAgICAgICAvLyBTZXQgdGhlIHBs
dWdpbiBwcm9wZXJ0aWVzDQorICAgICAgICBwbHVnaW5JbmZvLT5pUGx1Z2luSW5mbyA9IGVjb21Q
bHVnaW5JbmZvQXJyYXlbaW5kZXhdOw0KKyAgICAgICAgLy8gUmVhZCB0aGUgcGx1Z2luJ3MgbmFt
ZSBhbmQgcGx1Z2luIEZpbGVOYW1lIChkaXNwbGF5X25hbWUpIGZyb20gdGhlIElNUExFTUVOVEFU
SU9OX0lORk8NCisgICAgICAgIHBsdWdpbkluZm8tPlBhcnNlRGlzcGxheU5hbWVMKHBsdWdpbklu
Zm8tPmlQbHVnaW5JbmZvLT5EaXNwbGF5TmFtZSgpKTsNCisgICAgICAgIHBsdWdpbkluZm8tPmlE
ZXNjcmlwdGlvbiA9IEhCdWZDOjpOZXdMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5PcGFxdWVE
YXRhKCkuTGVuZ3RoKCkpOw0KKyAgICAgICAgcGx1Z2luSW5mby0+aURlc2NyaXB0aW9uLT5EZXMo
KS5Db3B5KHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5PcGFxdWVEYXRhKCkpOw0KKyAgICAgICAg
cGx1Z2luSW5mby0+aVVpZCA9IHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5JbXBsZW1lbnRhdGlv
blVpZCgpOw0KKyAgICAgICAgLy8gUGFyc2VzIHRoZSBhTUlNRURlc2NyaXB0aW9uIHN0cmluZyB0
byBwb3B1bGF0ZSB0aGUgbWltZVR5cGVzLCBtaW1lRXh0ZW5zaW9ucywNCisgICAgICAgIC8vIGFu
ZCBtaW1lRGVzY3JpcHRpb25zIGFycmF5cy4NCisgICAgICAgIHBsdWdpbkluZm8tPlBhcnNlRGVm
YXVsdERhdGFMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5EYXRhVHlwZSgpKTsNCiANCi0JICAg
IC8vIEFkZCB0aGUgZmlsdGVyIGluZm9ybWF0aW9uIHRvIHRoZSBsaXN0DQotCSAgICBVc2VyOjpM
ZWF2ZUlmRXJyb3IoaVBsdWdpbkluZm9BcnJheS5BcHBlbmQocGx1Z2luSW5mbykpOw0KLQkgICAg
Q2xlYW51cFN0YWNrOjpQb3AoKTsgICAgLy8gcGx1Z2luSW5mbw0KKyAgICAgICAgLy8gQWRkIHRo
ZSBmaWx0ZXIgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QNCisgICAgICAgIFVzZXI6OkxlYXZlSWZF
cnJvcihpUGx1Z2luSW5mb0FycmF5LkFwcGVuZChwbHVnaW5JbmZvKSk7DQorICAgICAgICBDbGVh
bnVwU3RhY2s6OlBvcCgpOyAgICAvLyBwbHVnaW5JbmZvDQogICAgICAgICB9DQogDQogICAgIC8v
IENsZWFuIHVwIHRoZSBFQ29tIGluZm8gYXJyYXkNCkBAIC03MTksNyArNzQwLDcgQEANCiAvLw0K
IHZvaWQgQ1BsdWdpbkhhbmRsZXI6OlJlbG9hZFBsdWdpbnMoVEJvb2wgYVJlbG9hZFBhZ2VzLCAg
TVdlYkNsaWVudEJyaWRnZSYgYVdlYkNsaWVudEJyaWRnZSkNCiAgICB7DQotCVRSQVBfSUdOT1JF
KCBSZWxvYWRQbHVnaW5zTChhUmVsb2FkUGFnZXMsIGFXZWJDbGllbnRCcmlkZ2UpKTsNCisgICAg
VFJBUF9JR05PUkUoIFJlbG9hZFBsdWdpbnNMKGFSZWxvYWRQYWdlcywgYVdlYkNsaWVudEJyaWRn
ZSkpOw0KICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTcyOSwxMiArNzUw
LDEyIEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBUUHRyQyBDUGx1Z2luSGFuZGxlcjo6
R2V0UGx1Z2luTmFtZShUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1BsdWdpbkluZm8qIHBsdWdp
bkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAocGx1Z2luSW5mbyAmJiBw
bHVnaW5JbmZvLT5pTmFtZSkNCi0gCSAgIHsNCi0gCSAgIHJldHVybiBwbHVnaW5JbmZvLT5OYW1l
KCktPkRlcygpOw0KLSAJICAgfQ0KLSAJcmV0dXJuIFRQdHJDKCk7DQorICAgICBDUGx1Z2luSW5m
byogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCisgICAgIGlmIChwbHVn
aW5JbmZvICYmIHBsdWdpbkluZm8tPmlOYW1lKQ0KKyAgICAgICAgew0KKyAgICAgICAgcmV0dXJu
IHBsdWdpbkluZm8tPk5hbWUoKS0+RGVzKCk7DQorICAgICAgICB9DQorICAgICByZXR1cm4gVFB0
ckMoKTsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtNzQ0LDEyICs3
NjUsMTIgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIFRQdHJDIENQbHVnaW5IYW5kbGVy
OjpHZXRQbHVnaW5GaWxlTmFtZShUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1BsdWdpbkluZm8q
IHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAocGx1Z2luSW5m
byAmJiBwbHVnaW5JbmZvLT5pRmlsZU5hbWUpDQotIAkgICB7DQotIAkgICByZXR1cm4gcGx1Z2lu
SW5mby0+RmlsZU5hbWUoKS0+RGVzKCk7DQotIAkgICB9DQotIAlyZXR1cm4gVFB0ckMoKTsNCisg
ICAgIENQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJheVthSW5kZXhdOw0K
KyAgICAgaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aUZpbGVOYW1lKQ0KKyAgICAgICAg
ew0KKyAgICAgICAgcmV0dXJuIHBsdWdpbkluZm8tPkZpbGVOYW1lKCktPkRlcygpOw0KKyAgICAg
ICAgfQ0KKyAgICAgcmV0dXJuIFRQdHJDKCk7DQogICAgIH0NCiANCiANCkBAIC03NjAsMTIgKzc4
MSwxMiBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogVFB0ckMgQ1BsdWdpbkhhbmRsZXI6
OkdldFBsdWdpbkRlc2NyaXB0aW9uKFRJbnQgYUluZGV4KQ0KICAgICB7DQotIAlDUGx1Z2luSW5m
byogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCi0gCWlmIChwbHVnaW5J
bmZvICYmIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbikNCi0gCSAgIHsNCi0gCSAgIHJldHVybiBw
bHVnaW5JbmZvLT5EZXNjcmlwdGlvbigpLT5EZXMoKTsNCi0gCSAgIH0NCi0gCXJldHVybiBUUHRy
QygpOw0KKyAgICAgQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJ
bmRleF07DQorICAgICBpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pRGVzY3JpcHRpb24p
DQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gcGx1Z2luSW5mby0+RGVzY3JpcHRpb24oKS0+
RGVzKCk7DQorICAgICAgICB9DQorICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAgfQ0KIA0KIA0K
QEAgLTc3Nyw4ICs3OTgsOCBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogVEludCBDUGx1
Z2luSGFuZGxlcjo6R2V0UGx1Z2luQ291bnQoKQ0KICAgICB7DQotCXJldHVybiBpUGx1Z2luSW5m
b0FycmF5LkNvdW50KCk7DQotCX0NCisgICAgcmV0dXJuIGlQbHVnaW5JbmZvQXJyYXkuQ291bnQo
KTsNCisgICAgfQ0KIA0KIA0KIA0KQEAgLTkwNiw3ICs5MjcsNyBAQA0KICAgICB0bXBQbHVnaW5J
bmZvQXJyYXkuQ2xvc2UoKTsNCiAgICAgaWYgKGFSZWxvYWRQYWdlcykNCiAgICAgICAgIHsNCi0J
CWFXZWJDbGllbnRCcmlkZ2UuUmVsb2FkKCk7DQorICAgICAgICBhV2ViQ2xpZW50QnJpZGdlLlJl
bG9hZCgpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpJbmRleDogV2ViS2l0L1BsdWdpbi9zcmMv
UGx1Z2luU2tpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5T
a2luLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luU2tp
bi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02OSw2ICs2OSw5IEBADQogI2luY2x1ZGUgIldlYktp
dFZpZXcuaCINCiAjaW5jbHVkZSAiV2ViS2l0Q29udHJvbC5oIg0KICNpbmNsdWRlICJXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0LmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisjaW5jbHVk
ZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQog
Ly8gQ09OU1RBTlRTDQogLy8gc2NoZW1lIGZvciBSVFNQIHVybA0KQEAgLTE1NSw3ICsxNTgsNyBA
QA0KICNlbmRpZg0KICAgICByZXAtPkdldCggS0Jyb3dzZXJVc0J1aWxkLCB2YWx1ZSApOw0KICAg
ICBkZWxldGUgcmVwOw0KLSAgICANCisNCiAgICAgaWYgKCAhdmFsdWUgfHwgYUNhblBsdWdpbklu
dGVyYWN0ICkNCiAgICAgICAgIHsNCiAgICAgICAgIGlDYW5QbHVnaW5JbnRlcmFjdCA9IEVUcnVl
Ow0KQEAgLTIwNCw3ICsyMDcsMTIgQEANCiAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFu
ZERlc3Ryb3koKTsgIC8vIHVybFNjaGVtZQ0KICAgICAgICAgICAgIH0NCiANCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IGlX
ZWJLaXRGcmFtZS0+V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKS5XaWRnZXRFeHRlbnNpb24o
KTsNCisgICAgICAgIGlmICggYlJ0c3BGb3VuZCB8fCAod2RndEV4dCAmJiBhVXJsLkxlbmd0aCgp
ID09IDApKQ0KKyNlbHNlDQogICAgICAgICBpZiAoIGJSdHNwRm91bmQgKQ0KKyNlbmRpZiAvL1JE
X0JST1dTRVJfV0lER0VUUw0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAvLyBJZiBydHNw
IHNjaGVtZSBpbiB1cmwsIHBhc3MgdG8gcGx1Z2luIGRpcmVjdGx5LA0KICAgICAgICAgICAgIC8v
IGFmdGVyIHRoZSBhdHRyaWJ1dGUgYXJyYXlzIGluaXRpYWxpemVkDQpAQCAtNTU1LDcgKzU2Myw3
IEBADQogICAgIHsNCiAgICAgLy8gVGhlIGFMb2FkTW9kZSBpcyBub3QgY3VycmVudGx5IHVzZWQu
ICBJdCB3b3VsZCBiZSB1c2VkIGZvciBjaGVja2luZyB0aGUNCiAgICAgLy8gbG9hZCBtb2RlIGFu
ZCBkZXRlcm1pbmluZyBpZiB0aGUgcGx1Z2luIHNob3VsZCBiZSBkZWxldGVkIGFuZCByZWNyZWF0
ZWQuDQotICAgIA0KKw0KICAgICAvLyBDcmVhdGUgdGhlIFBsdWdpbldpbiwgaWYgaXQgZG9lc24n
dCBleGlzdCwNCiAgICAgaWYgKCAhaVBsdWdpbldpbiApDQogICAgICAgICB7DQpAQCAtNTYzLDcg
KzU3MSw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlBdHRyaWJ1
dGVOYW1lcywgKmlBdHRyaWJ1dGVWYWx1ZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnRoaXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVdl
YktpdEZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpKSApOw0KLSAgICAgICAgDQor
DQogICAgICAgICBpZiAoIGVyciAhPSBLRXJyTm9uZSApDQogICAgICAgICAgICAgew0KICAgICAg
ICAgICAgIGlmICggZXJyID09IEtFcnJOb3RTdXBwb3J0ZWQgKQ0KQEAgLTU3NSw3ICs1ODMsNyBA
QA0KICAgICAgICAgICAgICAgICBVc2VyOjpMZWF2ZSggZXJyICk7DQogICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICB9DQotICAgICAgICAgICAgDQorDQogICAgICAgICBpZiAoICFpSXNT
b3VuZHN0YXJ0ICkNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgLy8gUmVmcmVzaA0KQEAg
LTYxOCw3ICs2MjYsNyBAQA0KICAgICBDQXJyYXlGaXhGbGF0PFRCckN0bFNlbGVjdE9wdGlvbkRh
dGE+KiBvYmpMaXN0ID0gbmV3IChFTGVhdmUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQXJyYXlGaXhGbGF0PFRCckN0bFNlbGVjdE9wdGlvbkRhdGE+
KDIpOw0KICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKG9iakxpc3QpOw0KLSAgICANCisNCiAgICAg
Ly8gQWRkIG9iamVjdCBsaXN0IGVudHJ5DQogICAgIGZvciAoaW50IGk9MDsgaTwyOyBpKyspDQog
ICAgICAgICB7DQpAQCAtNjUwLDEwICs2NTgsMTAgQEANCiAgICAgb2JqTGlzdC0+UmVzZXQoKTsN
CiAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCA0ICk7Ly8gb2JqTGlzdCwgdGV4dCwg
dGV4dCwgdGl0bGUNCiAgICAgfQ0KLSAgICANCisNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vIENQbHVnaW5Ta2luOjpJc0ZvY3VzYWJsZQ0KLS8vIA0KKy8vDQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLw0KIFRCb29sIENQbHVnaW5Ta2luOjpJc0ZvY3VzYWJsZSgpIGNvbnN0DQpA
QCAtNjY0LDMgKzY3MiwxMCBAQA0KICAgICAgICAgcmV0dXJuIEVGYWxzZTsNCiAgICAgfQ0KIA0K
KyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQordm9pZCogQ1BsdWdpblNraW46OlBsdWdpblNj
cmlwdGFibGVPYmplY3QoKQ0KKyAgICB7DQorICAgIHJldHVybiBpUGx1Z2luV2luP2lQbHVnaW5X
aW4tPlBsdWdpblNjcmlwdGFibGVPYmplY3QoKTowOw0KKyAgICB9DQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQorDQpJbmRleDogV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luV2luLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbldpbi5jcHAJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbldpbi5jcHAJKHdvcmtpbmcgY29w
eSkNCkBAIC01Myw2ICs1Myw3IEBADQogI2luY2x1ZGUgIlBsdWdpblNraW4uaCINCiAjaW5jbHVk
ZSAiUGx1Z2luSGFuZGxlci5oIg0KICNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgiDQorI2luY2x1
ZGUgIldlYktpdEJyaWRnZS5oIg0KIA0KIC8vIENPTlNUQU5UUw0KIGNvbnN0IFRJbnQgS1BsdWdp
bkdyYW51bGFyaXR5ID0gMzsNCkBAIC0xMTk5LDggKzEyMDAsMzMgQEANCiAgICAgICAgIH0gICAg
ICAgICAgICAgICAgIA0KICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgDQorTlBPYmplY3QqIENQbHVnaW5XaW46OldpbmRv
d1NjcmlwdE5QT2JqZWN0KCkNCisgICAgew0KKyAgICByZXR1cm4gaVBsdWdpblNraW4tPkZyYW1l
KCktPldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5XaW5kb3dTY3JpcHROUE9iamVjdCgp
Ow0KKyAgICB9DQogDQorDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDUGx1Z2luV2lu
OjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0IA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
IA0KK3ZvaWQqIENQbHVnaW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QoKQ0KKyAgICB7DQor
ICAgIGlmIChpUGx1Z2luRnVuY3MtPmdldHZhbHVlKSB7DQorICAgICAgICB2b2lkICp2YWx1ZSA9
IDA7DQorICAgICAgICBOUEVycm9yIG5wRXJyID0gaVBsdWdpbkZ1bmNzLT5nZXR2YWx1ZSggaUlu
c3RhbmNlLCBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAodm9pZCAqKSZ2YWx1ZSk7DQor
ICAgICAgICBpZiAobnBFcnIgPT0gTlBFUlJfTk9fRVJST1IpIHsNCisgICAgICAgICAgICByZXR1
cm4gdmFsdWU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuICh2b2lkICopMDsgICAg
DQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIC8vIENQbHVnaW5XaW46OklzQ29udGVudEludGVyYWN0aXZlKCkNCiAvLyBU
ZWxscyAgdGhhdCBwbHVnaW4gY29udGVudCBjYW4gYWNjZXB0IHVzZXIgaW50ZXJhY3Rpb24uIA0K
IC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgaVBsdWdpbkZ1bmNzLT5nZXR2YWx1ZSAiMCIgb3IgZmFs
c2UgbWVhbnMgIHBsdWdpbiBpcyBpbnRlcmFjdGl2ZS4gDQpJbmRleDogV2ViS2l0L3JvbS93ZWJr
aXQuaWJ5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3JvbS93ZWJraXQuaWJ5CShyZXZpc2lvbiAx
NzA2OSkNCisrKyBXZWJLaXQvcm9tL3dlYmtpdC5pYnkJKHdvcmtpbmcgY29weSkNCkBAIC01OCw2
ICs1OCw5IEBADQogZmlsZT1BQklfRElSXEJVSUxEX0RJUlxCcm93c2VyQ2FjaGUuZGxsICAgICAg
ICAgICAgICAgICBTSEFSRURfTElCX0RJUlxCcm93c2VyQ2FjaGUuZGxsDQogZmlsZT1BQklfRElS
XEJVSUxEX0RJUlxIaXN0b3J5UHJvdmlkZXIuZGxsICAgICAgICAgICAgICBTSEFSRURfTElCX0RJ
UlxIaXN0b3J5UHJvdmlkZXIuZGxsDQogZmlsZT1BQklfRElSXEJVSUxEX0RJUlxUb29sQmFyLmRs
bCAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfTElCX0RJUlxUb29sQmFyLmRsbA0KKyNpZmRl
ZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorZmlsZT1BQklfRElSXEJVSUxEX0RJUlxXaWRnZXRFbmdp
bmUuZGxsICAgICAgICAgICAgICAgICAgICAgIFNIQVJFRF9MSUJfRElSXFdpZGdldEVuZ2luZS5k
bGwNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiBFQ09NX1BMVUdJTihCcm93c2Vy
UmVjLmRsbCwgMDEwMDVBMDIucnNjKQ0KIEVDT01fUExVR0lOKE1lbW9yeVBsdWdpbi5kbGwsIG1l
bW9yeXBsdWdpbi5SU0MpDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11212</attachid>
            <date>2006-10-25 14:18:54 -0700</date>
            <delta_ts>2006-10-25 14:55:45 -0700</delta_ts>
            <desc>Remove File Transaction and use void* for passing js objects</desc>
            <filename>WidgetImpl.patch</filename>
            <type>text/plain</type>
            <size>555451</size>
            <attacher name="Sriram">sriram.yadavalli</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQ0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQkocmV2aXNpb24gMCkNCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9hbGdvcml0aG0JKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDE4
MCBAQA0KKy8vIEJpdHMgYW5kIHBpZWNlcyB1c2VkIGluIGFsZ29yaXRobXMgLSotIEMrKyAtKi0N
CisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8gc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlDQor
Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8v
IFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUNCisvLyBs
aWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVz
IGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0
aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUgYW5kIGxp
bmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMNCisv
LyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUg
dG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRo
aXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBvdGhlciBy
ZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENvcHlyaWdo
dCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQZXJtaXNz
aW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdh
cmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBn
cmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBz
dXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBtYWtlcyBu
bw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0
d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91
dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHlyaWdodCAo
YykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMu
DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFu
ZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBw
dXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQg
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICog
dGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBo
aWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBv
ZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFz
IGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisNCisjaWZu
ZGVmIF9fQUxHT1JJVEhNDQorI2RlZmluZSBfX0FMR09SSVRITQ0KKw0KKyNkZWZpbmUgX19nbGli
Y3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9fQSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc192
YWxpZF9yYW5nZShfX0EsIF9fQikNCisNCituYW1lc3BhY2Ugc3RkDQorew0KKw0KKyAgdHlwZWRl
ZiBpbnQgcHRyZGlmZl90Ow0KKw0KKyAgI3VuZGVmIG1pbg0KKyAgI3VuZGVmIG1heA0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAg
ICogIEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0g
IGIgIEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRo
ZSBsZXNzZXIgb2YgdGhlIHBhcmFtZXRlcnMuDQorICAgKg0KKyAgICogIFRoaXMgaXMgdGhlIHNp
bXBsZSBjbGFzc2ljIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICBJdCB3aWxsIHdvcmsgb24NCisg
ICAqICB0ZW1wb3JhcnkgZXhwcmVzc2lvbnMsIHNpbmNlIHRoZXkgYXJlIG9ubHkgZXZhbHVhdGVk
IG9uY2UsIHVubGlrZSBhDQorICAgKiAgcHJlcHJvY2Vzc29yIG1hY3JvLg0KKyAgKi8NCisgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgaW5saW5lIGNvbnN0IF9UcCYNCisgICAgbWluKGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikNCisgICAgew0KKyAgICAgIGlmIChfX2IgPCBf
X2EpDQorCXJldHVybiBfX2I7DQorICAgICAgcmV0dXJuIF9fYTsNCisgICAgfQ0KKw0KKyAgLyoq
DQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAgICog
IEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0gIGIg
IEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRoZSBn
cmVhdGVyIG9mIHRoZSBwYXJhbWV0ZXJzLg0KKyAgICoNCisgICAqICBUaGlzIGlzIHRoZSBzaW1w
bGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAgSXQgd2lsbCB3b3JrIG9uDQorICAg
KiAgdGVtcG9yYXJ5IGV4cHJlc3Npb25zLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGV2YWx1YXRlZCBv
bmNlLCB1bmxpa2UgYQ0KKyAgICogIHByZXByb2Nlc3NvciBtYWNyby4NCisgICovDQorICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+DQorICAgIGlubGluZSBjb25zdCBfVHAmDQorICAgIG1heChjb25z
dCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpDQorICAgIHsNCisgICAgICBpZiAoX19hIDwgX19i
KQ0KKwlyZXR1cm4gX19iOw0KKyAgICAgIHJldHVybiBfX2E7DQorICAgIH0NCisgICAgDQorICAv
KioNCisgICAqICBAYnJpZWYgU3dhcHMgdHdvIHZhbHVlcy4NCisgICAqICBAcGFyYW0gIGEgIEEg
dGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHBhcmFtICBiICBBbm90aGVyIHRoaW5n
IG9mIGFyYml0cmFyeSB0eXBlLg0KKyAgICogIEByZXR1cm4gICBOb3RoaW5nLg0KKyAgICoNCisg
ICAqICBUaGlzIGlzIHRoZSBzaW1wbGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAg
SXQgd2lsbCB3b3JrIG9uDQorICAgKiAgYW55IHR5cGUgd2hpY2ggaGFzIGEgY29weSBjb25zdHJ1
Y3RvciBhbmQgYW4gYXNzaWdubWVudCBvcGVyYXRvci4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+DQorICAgIGlubGluZSB2b2lkDQorICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19i
KQ0KKyAgICB7DQorICAgICAgY29uc3QgX1RwIF9fdG1wID0gX19hOw0KKyAgICAgIF9fYSA9IF9f
YjsNCisgICAgICBfX2IgPSBfX3RtcDsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBs
aWVkIHZlcnNpb24gb2YgbGlic3RkYysrICogc3RkOjpjb3B5LA0KKyAgICogc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIG91ciBwdXJwb3NlLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+DQorICAgIGlubGluZSBfT3V0
cHV0SXRlcmF0b3INCisgICAgY29weSggX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQgKQ0KKyAgICB7DQorICAgICAg
ICBmb3IoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0ICkNCisgICAg
ICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAgICAgIHJldHVybiBfX3Jlc3VsdDsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBsaWVkIHZlcnNpb24gb2YgbGlic3RkYysr
ICogc3RkOjpmaWxsLA0KKyAgICogc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nl
Lg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVl
Pg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBmaWxsKCBfSXRlcmF0b3IgX19zdGFydCwgX0l0ZXJh
dG9yIF9fZW5kLCBfVmFsdWUgX192YWwgKQ0KKyAgICB7DQorICAgICAgICBmb3IoOyBfX3N0YXJ0
ICE9IF9fZW5kOyArK19fc3RhcnQgKQ0KKyAgICAgICAgICAgICpfX3N0YXJ0ID0gX192YWw7DQor
ICAgIH0NCisgICAgDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCB0eXBlbmFtZSBDb21wYXJl
Pg0KKyAgICAgIGlubGluZSB2b2lkIHNvcnQoVHlwZSogYmVnaW4sIFR5cGUqIGVuZCwgQ29tcGFy
ZSBjb21wYXJlKQ0KKyAgICB7DQorICAgIHN0YWJsZV9zb3J0KGJlZ2luLGVuZCxjb21wYXJlKTsN
CisgICAgfQ0KKyAgICANCisgIC8vIEZJWE1FIGJ1YmJsZXNvcnQNCisgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGUsIHR5cGVuYW1lIENvbXBhcmU+DQorICAgIGlubGluZSB2b2lkIHN0YWJsZV9zb3J0
KFR5cGUqIGJlZ2luLCBUeXBlKiBlbmQsIENvbXBhcmUgY29tcGFyZSkNCisgICAgew0KKyAgICAg
ICAgVHlwZSogZSA9IGVuZDsNCisgICAgICAgIHdoaWxlIChlIT1iZWdpbikgew0KKyAgICAgICAg
ICAgIGJvb2wgc29ydGVkID0gdHJ1ZTsNCisgICAgICAgICAgICBmb3IgKFR5cGUqIGkgPSBiZWdp
bjsgaSE9ZTsgaSsrKSB7DQorICAgICAgICAgICAgICAgIGlmICghY29tcGFyZSgqaSwqKGkrMSkp
KSB7DQorICAgICAgICAgICAgICAgICAgICBUeXBlIHRlbXAgPSAqaTsNCisgICAgICAgICAgICAg
ICAgICAgICppID0gKihpKzEpOw0KKyAgICAgICAgICAgICAgICAgICAgKihpKzEpPXRlbXA7DQor
ICAgICAgICAgICAgICAgICAgICBzb3J0ZWQgPSBmYWxzZTsNCisgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoc29ydGVkKQ0K
KyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBlLS07DQorICAgICAgICB9DQor
ICAgIH0NCit9DQorDQorI2VuZGlmDQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTEsNSArMSw1IEBADQogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMTE0ICsyMCw5NSBAQA0KICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KLSNpbmNsdWRlIDxjX2NsYXNzLmg+Ci0jaW5jbHVkZSA8Y19pbnN0YW5jZS5oPgotI2lu
Y2x1ZGUgPGNfcnVudGltZS5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJjX2NsYXNzLmgiCiAKLWJvb2wgTlBOX0lzVmFs
aWRJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5hbWUpOworI2luY2x1ZGUgImNfaW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJjX3J1bnRpbWUuaCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgor
I2luY2x1ZGUgImlkZW50aWZpZXIuaCIKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25EZWxldGUoKSB7
Ci0gICAgQ0ZSZWxlYXNlIChfZmllbGRzKTsKLSAgICBDRlJlbGVhc2UgKF9tZXRob2RzKTsKLX0K
LSAgICAKKy8vIEZJWE1FOiBTaG91bGQgdXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBDRkRpY3Rpb25h
cnkgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgZm9yIHBvcnRhYmlsaXR5LgogCi12b2lkIEND
bGFzczo6X2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZvdGhlcikgewotICAgIF9pc2EgPSBvdGhl
ci5faXNhOwotICAgIF9tZXRob2RzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weSAoTlVMTCwgb3Ro
ZXIuX21ldGhvZHMpOwotICAgIF9maWVsZHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVDb3B5IChOVUxM
LCBvdGhlci5fZmllbGRzKTsKLX0KLSAgICAKK25hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25Jbml0IChOUENsYXNzICphQ2xhc3MpCitD
Q2xhc3M6OkNDbGFzcyhOUENsYXNzKiBhQ2xhc3MpCiB7CiAgICAgX2lzYSA9IGFDbGFzczsKLSAg
ICBfbWV0aG9kcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKLSAgICBfZmllbGRzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsIE5V
TEwpOwogfQogCi0KLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9
IDA7Ci0KLXN0YXRpYyB2b2lkIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCitDQ2xh
c3M6On5DQ2xhc3MoKQogewotICAgIGlmIChjbGFzc2VzQnlJc0EgPT0gMCkKLSAgICAgICAgY2xh
c3Nlc0J5SXNBID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgTlVMTCwgTlVM
TCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKF9tZXRob2RzKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMo
X2ZpZWxkcyk7CiB9CiAKLUNDbGFzcyAqQ0NsYXNzOjpjbGFzc0ZvcklzQSAoTlBDbGFzcyAqaXNh
KQordHlwZWRlZiBIYXNoTWFwPE5QQ2xhc3MqLCBDQ2xhc3MqPiBDbGFzc2VzQnlJc0FNYXA7Citz
dGF0aWMgQ2xhc3Nlc0J5SXNBTWFwKiBjbGFzc2VzQnlJc0EgPSAwOworCitDQ2xhc3MqIENDbGFz
czo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQogewotICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJ
Zk5lY2Vzc2FyeSgpOwotICAgIAotICAgIENDbGFzcyAqYUNsYXNzID0gKENDbGFzcyAqKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgaXNhKTsKLSAgICBpZiAoYUNsYXNzID09IE5V
TEwpIHsKLSAgICAgICAgYUNsYXNzID0gbmV3IENDbGFzcyAoaXNhKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUgKGNsYXNzZXNCeUlzQSwgaXNhLCBhQ2xhc3MpOworICAgIGlmICghY2xh
c3Nlc0J5SXNBKQorICAgICAgICBjbGFzc2VzQnlJc0EgPSBuZXcgQ2xhc3Nlc0J5SXNBTWFwOwor
CisgICAgQ0NsYXNzKiBhQ2xhc3MgPSBjbGFzc2VzQnlJc0EtPmdldChpc2EpOworICAgIGlmICgh
YUNsYXNzKSB7CisgICAgICAgIGFDbGFzcyA9IG5ldyBDQ2xhc3MoaXNhKTsKKyAgICAgICAgY2xh
c3Nlc0J5SXNBLT5zZXQoaXNhLCBhQ2xhc3MpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBh
Q2xhc3M7CiB9CiAKLQotQ0NsYXNzOjpDQ2xhc3MgKE5QQ2xhc3MgKmlzYSkKK2NvbnN0IGNoYXIq
IENDbGFzczo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgX2NvbW1vbkluaXQgKGlzYSk7Ci19Ci0KLWNv
bnN0IGNoYXIgKkNDbGFzczo6bmFtZSgpIGNvbnN0Ci17CiAgICAgcmV0dXJuICIiOwogfQogCi1N
ZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKl9uYW1lLCBJbnN0YW5j
ZSAqaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0
IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7CiAKLSAgICBD
RlN0cmluZ1JlZiBtZXRob2ROYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBf
bmFtZSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSk7Ci0gICAgTWV0aG9kICptZXRob2QgPSAoTWV0
aG9kICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKF9tZXRob2RzLCBtZXRob2ROYW1lKTsKKyAgICBN
ZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChhLmFyZXAoKSk7CiAgICAgaWYgKG1ldGhvZCkg
ewotICAgICAgICBDRlJlbGVhc2UgKG1ldGhvZE5hbWUpOwogICAgICAgICBtZXRob2RMaXN0LmFk
ZE1ldGhvZChtZXRob2QpOwogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9Ci0gICAg
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChfbmFt
ZSk7Ci0gICAgY29uc3QgQ0luc3RhbmNlICppbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3Rh
bmNlKj4oaW5zdGFuY2UpOwotICAgIE5QT2JqZWN0ICpvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsK
LSAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2EtPmhhc01ldGhvZCAob2JqLCBpZGVudCkp
ewotICAgICAgICBNZXRob2QgKmFNZXRob2QgPSBuZXcgQ01ldGhvZCAoaWRlbnQpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpX21ldGhvZHMs
IG1ldGhvZE5hbWUsIGFNZXRob2QpOwotICAgICAgICBtZXRob2RMaXN0LmFkZE1ldGhvZCAoYU1l
dGhvZCk7CisKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cihhLmFzY2lpKCkpOworICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNv
bnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKKyAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0
T2JqZWN0KCk7CisgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2Jq
LCBpZGVudCkpeworICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7
IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIF9tZXRob2RzLnNl
dChhLmFyZXAoKSwgYU1ldGhvZCk7CisgICAgICAgIG1ldGhvZExpc3QuYWRkTWV0aG9kKGFNZXRo
b2QpOwogICAgIH0KIAotICAgIENGUmVsZWFzZSAobWV0aG9kTmFtZSk7Ci0gICAgCiAgICAgcmV0
dXJuIG1ldGhvZExpc3Q7CiB9CiAKIAotRmllbGQgKkNDbGFzczo6ZmllbGROYW1lZChjb25zdCBj
aGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogQ0NsYXNzOjpmaWVs
ZE5hbWVkKGNvbnN0IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QK
IHsKLSAgICBDRlN0cmluZ1JlZiBmaWVsZE5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KE5VTEwsIG5hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwotICAgIEZpZWxkICphRmllbGQg
PSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoX2ZpZWxkcywgZmllbGROYW1lKTsKLSAg
ICBpZiAoYUZpZWxkKSB7Ci0gICAgICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKKyAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQoYS5h
cmVwKCkpOworICAgIGlmIChhRmllbGQpCiAgICAgICAgIHJldHVybiBhRmllbGQ7Ci0gICAgfQog
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1l
KTsKLSAgICBjb25zdCBDSW5zdGFuY2UgKmluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFu
Y2UqPihpbnN0YW5jZSk7Ci0gICAgTlBPYmplY3QgKm9iaiA9IGluc3QtPmdldE9iamVjdCgpOwot
ICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9wZXJ0eSAob2JqLCBpZGVu
dCkpewotICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkIChpZGVudCk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlICgoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilfZmllbGRzLCBmaWVsZE5h
bWUsIGFGaWVsZCk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIoYS5hc2NpaSgpKTsKKyAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CisgICAgTlBPYmplY3QqIG9iaiA9IGluc3Qt
PmdldE9iamVjdCgpOworICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9w
ZXJ0eShvYmosIGlkZW50KSl7CisgICAgICAgIGFGaWVsZCA9IG5ldyBDRmllbGQoaWRlbnQpOyAv
LyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBfZmllbGRzLnNldChh
LmFyZXAoKSwgYUZpZWxkKTsKICAgICB9Ci0gICAgCi0gICAgQ0ZSZWxlYXNlIChmaWVsZE5hbWUp
OwotCiAgICAgcmV0dXJuIGFGaWVsZDsKLX07Cit9CisKK30KK30KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvYy9jX2NsYXNzLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL2MvY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsMTIgKzIwLDEzIEBA
DQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogI2lmbmRlZiBfQklORElOR1NfT0JKQ19DTEFTU19IXwog
I2RlZmluZSBfQklORElOR1NfT0JKQ19DTEFTU19IXwogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlICJmYXN0X21hbGxvYy5oIgorI2luY2x1ZGUg
PEhhc2hNYXAuaD4KIAogCiAjaW5jbHVkZSA8cnVudGltZS5oPgpAQCAtMzksNTQgKzQwLDI4IEBA
DQogY2xhc3MgQ0NsYXNzIDogcHVibGljIEtKUzo6QmluZGluZ3M6OkNsYXNzCiB7CiAgICAgLy8g
VXNlIHRoZSBwdWJsaWMgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyB0byBnZXQgaW5zdGFuY2VzIG9m
IEphdmFDbGFzcy4KLSAgICAKKwogcHJvdGVjdGVkOgotICAgIHZvaWQgX2NvbW1vbkluaXQgKE5Q
Q2xhc3MgKmFDbGFzcyk7Ci0gICAgdm9pZCBfY29tbW9uQ29weShjb25zdCBDQ2xhc3MgJm90aGVy
KTsKLSAgICB2b2lkIF9jb21tb25EZWxldGUoKTsKLSAgICAgICAgCisgICAgQ0NsYXNzKE5QQ2xh
c3MqKTsgLy8gVXNlIGNsYXNzRm9ySXNBIHRvIGNyZWF0ZSBhIENDbGFzcy4KKwogcHVibGljOgot
ICAgIENDbGFzcyAoTlBDbGFzcyAqYUNsYXNzKTsKKyAgICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0Zv
cklzQShOUENsYXNzKik7CisgICAgdmlydHVhbCB+Q0NsYXNzKCk7CiAKLSAgICAvLyBSZXR1cm4g
dGhlIGNhY2hlZCBPYmpDIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAvL3N0YXRpYyBDQ2xh
c3MgKmNsYXNzRm9yTmFtZSAoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgc3RhdGljIENDbGFzcyAq
Y2xhc3NGb3JJc0EgKE5QQ2xhc3MgKmFDbGFzcyk7Ci0gICAgICAgICAgICAKLSAgICB+Q0NsYXNz
ICgpIHsKLSAgICAgICAgX2NvbW1vbkRlbGV0ZSgpOwotICAgIH0KLSAgICAKLSAgICBDQ2xhc3Mg
KGNvbnN0IENDbGFzcyAmb3RoZXIpIDogQ2xhc3MoKSB7Ci0gICAgICAgIF9jb21tb25Db3B5IChv
dGhlcik7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqLCBJbnN0YW5jZSop
IGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgY2hhciAqLCBJbnN0
YW5jZSopIGNvbnN0OwogCi0gICAgQ0NsYXNzICZvcGVyYXRvcj0oY29uc3QgQ0NsYXNzICZvdGhl
cikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgICAgIAotICAgICAgICBfY29tbW9uRGVsZXRlKCk7Ci0gICAgICAg
IF9jb21tb25Db3B5IChvdGhlcik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQorICAgIHZpcnR1YWwgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yQXQobG9uZykgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgbG9uZyBudW1Db25zdHJ1Y3RvcnMoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKLSAg
ICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKm5hbWUs
IEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBGaWVsZCAqZmll
bGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwotICAg
IAotICAgIHZpcnR1YWwgQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yQXQobG9uZyBpKSBjb25zdCB7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH07Ci0gICAgCi0gICAgdmlydHVhbCBsb25nIG51bUNv
bnN0cnVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07Ci0gICAgICAgIAogcHJpdmF0ZToKLSAg
ICBOUENsYXNzICpfaXNhOwotICAgIENGRGljdGlvbmFyeVJlZiBfbWV0aG9kczsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgX2ZpZWxkczsKKyAgICBDQ2xhc3MoY29uc3QgQ0NsYXNzJik7IC8vIHByb2hp
Yml0IGNvcHlpbmcKKyAgICBDQ2xhc3MmIG9wZXJhdG9yPShjb25zdCBDQ2xhc3MmKTsgLy8gcHJv
aGliaXQgYXNzaWdubWVudAorCisgICAgTlBDbGFzcyogX2lzYTsKKyAgICBtdXRhYmxlIE1ldGhv
ZE1hcCBfbWV0aG9kczsKKyAgICBtdXRhYmxlIEZpZWxkTWFwIF9maWVsZHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2lu
c3RhbmNlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19p
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMCw3ICsyMCw3IEBADQogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogI2luY2x1ZGUgPGNfY2xhc3MuaD4KICNpbmNsdWRlIDxjX2luc3Rh
bmNlLmg+CkBAIC0zMywzMiArMzMsMjkgQEANCiAjaWZkZWYgTkRFQlVHCiAjZGVmaW5lIENfTE9H
KGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQogI2Vsc2UKLSNkZWZpbmUgQ19MT0coZm9ybWF0
QW5kQXJncy4uLikgeyBcCi0gICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQgLS0gJXM6ICAiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IFwKLSAgICBmcHJpbnRmKHN0ZGVyciwg
Zm9ybWF0QW5kQXJncyk7IFwKLX0KKyNkZWZpbmUgQ19MT0coZm9ybWF0QW5kQXJncy4uLikgKCh2
b2lkKTApCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7CiB1c2luZyBu
YW1lc3BhY2UgS0pTOwogCi1DSW5zdGFuY2U6OkNJbnN0YW5jZSAoTlBPYmplY3QgKm8pIAorQ0lu
c3RhbmNlOjpDSW5zdGFuY2UgKE5QT2JqZWN0ICpvKQogewotICAgIF9vYmplY3QgPSBfTlBOX1Jl
dGFpbk9iamVjdCAobyk7CisgICAgX29iamVjdCA9IE5QTl9SZXRhaW5PYmplY3QgKG8pOwogICAg
IF9jbGFzcyA9IDA7CiAgICAgc2V0RXhlY3V0aW9uQ29udGV4dCAoMCk7CiB9OwogCi1DSW5zdGFu
Y2U6On5DSW5zdGFuY2UgKCkgCitDSW5zdGFuY2U6On5DSW5zdGFuY2UgKCkKIHsKLSAgICBfTlBO
X1JlbGVhc2VPYmplY3QgKF9vYmplY3QpOworICAgIE5QTl9SZWxlYXNlT2JqZWN0IChfb2JqZWN0
KTsKICAgICBkZWxldGUgX2NsYXNzOwogfQogCiAKLUNJbnN0YW5jZTo6Q0luc3RhbmNlIChjb25z
dCBDSW5zdGFuY2UgJm90aGVyKSA6IEluc3RhbmNlKCkgCitDSW5zdGFuY2U6OkNJbnN0YW5jZSAo
Y29uc3QgQ0luc3RhbmNlICZvdGhlcikgOiBJbnN0YW5jZSgpCiB7Ci0gICAgX29iamVjdCA9IF9O
UE5fUmV0YWluT2JqZWN0IChvdGhlci5fb2JqZWN0KTsKKyAgICBfb2JqZWN0ID0gTlBOX1JldGFp
bk9iamVjdCAob3RoZXIuX29iamVjdCk7CiAgICAgX2NsYXNzID0gMDsKICAgICBzZXRFeGVjdXRp
b25Db250ZXh0IChvdGhlci5leGVjdXRpb25Db250ZXh0KCkpOwogfTsKQEAgLTY2LDE5ICs2Mywx
OSBAQA0KIENJbnN0YW5jZSAmQ0luc3RhbmNlOjpvcGVyYXRvcj0oY29uc3QgQ0luc3RhbmNlICZv
dGhlcil7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgCisKICAgICBOUE9iamVjdCAqX29sZE9iamVjdCA9IF9vYmplY3Q7Ci0gICAgX29iamVjdD0g
X05QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3QpOwotICAgIF9OUE5fUmVsZWFzZU9iamVj
dCAoX29sZE9iamVjdCk7CisgICAgX29iamVjdD0gTlBOX1JldGFpbk9iamVjdCAob3RoZXIuX29i
amVjdCk7CisgICAgTlBOX1JlbGVhc2VPYmplY3QgKF9vbGRPYmplY3QpOwogICAgIF9jbGFzcyA9
IDA7Ci0gICAgCisKICAgICByZXR1cm4gKnRoaXM7CiB9OwogCiBDbGFzcyAqQ0luc3RhbmNlOjpn
ZXRDbGFzcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFfY2xhc3MpIHsKLSAgICAgICAgX2NsYXNzID0g
bmV3IENDbGFzcyAoX29iamVjdC0+X2NsYXNzKTsKKyAgICBpZiAoIV9jbGFzcyl7CisgICAgICAg
IF9jbGFzcyA9IENDbGFzczo6Y2xhc3NGb3JJc0EoX29iamVjdC0+X2NsYXNzKTsKICAgICB9CiAg
ICAgcmV0dXJuIF9jbGFzczsKIH0KQEAgLTEwNSw3ICsxMDIsNyBAQA0KICAgICBDTWV0aG9kICpt
ZXRob2QgPSAwOwogICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihtZXRob2RMaXN0
Lm1ldGhvZEF0KDApKTsKIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5n
SWRlbnRpZmllciAobWV0aG9kLT5uYW1lKCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IE5Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyIChtZXRob2QtPm5hbWUoKSk7CiAgICAgaWYgKCFfb2JqZWN0
LT5fY2xhc3MtPmhhc01ldGhvZCAoX29iamVjdCwgaWRlbnQpKSB7CiAgICAgICAgIHJldHVybiBV
bmRlZmluZWQoKTsKICAgICB9CkBAIC0xMTcsNyArMTE0LDcgQEANCiAgICAgICAgIGNBcmdzID0g
KE5QVmFyaWFudCAqKW1hbGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgIGVsc2UK
ICAgICAgICAgY0FyZ3MgPSBsb2NhbEJ1ZmZlcjsKLSAgICAKKwogICAgIGZvciAoaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChleGVjLCBh
cmdzLmF0KGkpLCAmY0FyZ3NbaV0pOwogICAgIH0KQEAgLTEyOCwyMCArMTI1LDIwIEBADQogICAg
IF9vYmplY3QtPl9jbGFzcy0+aW52b2tlIChfb2JqZWN0LCBpZGVudCwgY0FyZ3MsIGNvdW50LCAm
cmVzdWx0VmFyaWFudCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAg
ICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJnc1tpXSk7CisgICAgICAgIE5QTl9S
ZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOwogICAgIH0KIAogICAgIGlmIChjQXJncyAh
PSBsb2NhbEJ1ZmZlcikKICAgICAgICAgZnJlZSAoKHZvaWQgKiljQXJncyk7Ci0gICAgICAgICAg
ICAKKwogICAgIGlmICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAg
ICAgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoZXhlYywgJnJlc3VsdFZh
cmlhbnQpOwotICAgICAgICAKLSAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgIAorCisgICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVl
ICgmcmVzdWx0VmFyaWFudCk7CisKICAgICAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0KIApAQCAtMTUwLDcgKzE0Nyw3IEBA
DQogewogICAgIFZhbHVlIHJlc3VsdFZhbHVlOwogCi0gICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+
aW52b2tlRGVmYXVsdCkgeyAgICAgCisgICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+aW52b2tlRGVm
YXVsdCkgewogICAgICAgICB1bnNpZ25lZCBpLCBjb3VudCA9IGFyZ3Muc2l6ZSgpOwogICAgICAg
ICBOUFZhcmlhbnQgKmNBcmdzOwogICAgICAgICBOUFZhcmlhbnQgbG9jYWxCdWZmZXJbMTI4XTsK
QEAgLTE1OCw3ICsxNTUsNyBAQA0KICAgICAgICAgICAgIGNBcmdzID0gKE5QVmFyaWFudCAqKW1h
bGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjQXJncyA9IGxvY2FsQnVmZmVyOwotICAgICAgICAKKwogICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQgKGV4
ZWMsIGFyZ3MuYXQoaSksICZjQXJnc1tpXSk7CiAgICAgICAgIH0KQEAgLTE2OSwyMSArMTY2LDIx
IEBADQogICAgICAgICBfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQgKF9vYmplY3QsIGNB
cmdzLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJn
c1tpXSk7CisgICAgICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJmNBcmdzW2ldKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChjQXJncyAhPSBsb2NhbEJ1ZmZlcikKICAgICAgICAg
ICAgIGZyZWUgKCh2b2lkICopY0FyZ3MpOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgIGlm
ICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAgICAgICAgIHJlc3Vs
dFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUgKGV4ZWMsICZyZXN1bHRWYXJpYW50KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUgKCZyZXN1bHRWYXJpYW50KTsKKwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFZh
bHVlOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwog
fQogCkBAIC0xOTksMTQgKzE5NiwxNCBAQA0KICAgICBlbHNlIGlmIChoaW50ID09IEtKUzo6Qm9v
bGVhblR5cGUpIHsKICAgICAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZSgpOwogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB2YWx1ZU9mKCk7CiB9CiAKIEtKUzo6VmFsdWUgQ0luc3RhbmNlOjpzdHJp
bmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgY2hhciBidWZbMTAyNF07Ci0gICAgc25wcmludGYgKGJ1
ZiwgMTAyNCwgIk5QT2JqZWN0ICVwLCBOUENsYXNzICVwIiwgX29iamVjdCwgX29iamVjdC0+X2Ns
YXNzKTsKKyAgICAvL3NucHJpbnRmIChidWYsIDEwMjQsICJOUE9iamVjdCAlcCwgTlBDbGFzcyAl
cCIsIF9vYmplY3QsIF9vYmplY3QtPl9jbGFzcyk7CiAgICAgS0pTOjpTdHJpbmcgdihidWYpOwog
ICAgIHJldHVybiB2OwogfQpAQCAtMjI1LDcgKzIyMiw3IEBADQogICAgIHJldHVybiB2OwogfQog
Ci1LSlM6OlZhbHVlIENJbnN0YW5jZTo6dmFsdWVPZigpIGNvbnN0IAorS0pTOjpWYWx1ZSBDSW5z
dGFuY2U6OnZhbHVlT2YoKSBjb25zdAogewogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwogfTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19ydW50aW1lLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjUsNyArMjUsNyBAQA0KICNpZm5kZWYgX0JJTkRJTkdTX09CSkNfUlVOVElNRV9I
XwogI2RlZmluZSBfQklORElOR1NfT0JKQ19SVU5USU1FX0hfCiAKLSNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorLy8jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KIAogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1ZGUgPG5wcnVu
dGltZV9pbXBsLmg+CkBAIC01Miw3ICs1Miw3IEBADQogICAgIHZpcnR1YWwgS0pTOjpWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmlu
c3RhbmNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEtKUzo6
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEtKUzo6VmFs
dWUgJmFWYWx1ZSkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkg
Y29uc3QgeyByZXR1cm4gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIoX2ZpZWxkSWRlbnRpZmllcik7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBOUE5fVVRG
OEZyb21JZGVudGlmaWVyKF9maWVsZElkZW50aWZpZXIpOyB9CiAgICAgdmlydHVhbCBSdW50aW1l
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KICAgICAKIHByaXZhdGU6CkBAIC02Nyw3
ICs2Nyw3IEBADQogCiAgICAgQ01ldGhvZChOUElkZW50aWZpZXIgaWRlbnQpIDogTWV0aG9kKCks
IF9tZXRob2RJZGVudGlmaWVyKGlkZW50KSB7fTsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBfTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9k
SWRlbnRpZmllcik7IH07CisgICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9kSWRlbnRpZmllcik7IH07CiAKICAg
ICB2aXJ0dWFsIGxvbmcgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07CiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjAsMTAgKzIwLDEwIEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1
ZGUgPGNfaW5zdGFuY2UuaD4gCi0jaW5jbHVkZSA8Y191dGlsaXR5Lmg+IAorI2luY2x1ZGUgPGNf
aW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxjX3V0aWxpdHkuaD4KICNpbmNsdWRlIDxpbnRlcm5hbC5o
PgogI2luY2x1ZGUgPG5wcnVudGltZV9pbXBsLmg+CiAjaW5jbHVkZSA8bnBydW50aW1lX3ByaXYu
aD4KQEAgLTQ1LDIwICs0NSw1MCBAQA0KIC8vIFJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBV
VEYxNkNoYXJzLgogdm9pZCBjb252ZXJ0VVRGOFRvVVRGMTYgKGNvbnN0IE5QVVRGOCAqVVRGOENo
YXJzLCBpbnQgVVRGOExlbmd0aCwgTlBVVEYxNiAqKlVURjE2Q2hhcnMsIHVuc2lnbmVkIGludCAq
VVRGMTZMZW5ndGgpCiB7Ci0gICAgYXNzZXJ0IChVVEY4Q2hhcnMpOwotICAgIAogICAgIGlmIChV
VEY4TGVuZ3RoID09IC0xKQogICAgICAgICBVVEY4TGVuZ3RoID0gc3RybGVuKFVURjhDaGFycyk7
Ci0gICAgICAgIAotICAgIENGU3RyaW5nUmVmIHN0cmluZ1JlZiA9IENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzIChOVUxMLCAoY29uc3QgVUludDgqKVVURjhDaGFycywgKENGSW5kZXgpVVRGOExlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSk7CiAKLSAgICAqVVRGMTZMZW5ndGggPSAo
dW5zaWduZWQgaW50KUNGU3RyaW5nR2V0TGVuZ3RoIChzdHJpbmdSZWYpOwotICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2MgKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgp
KTsKKyAgICAqVVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoOwogCi0gICAgLy8gQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURjE2LgotICAgIENGUmFuZ2UgcmFuZ2UgPSB7IDAsICpVVEYxNkxlbmd0aCB9
OwotICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyAoc3RyaW5nUmVmLCByYW5nZSwgKFVuaUNoYXIg
KikqVVRGMTZDaGFycyk7Ci0gICAgQ0ZSZWxlYXNlIChzdHJpbmdSZWYpOworICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRGMTYpICogKCpVVEYxNkxlbmd0aCkp
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8ICpVVEYxNkxlbmd0aDsgaSsrKQorICAg
ICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKworICAgLyogYXNz
ZXJ0KFVURjhDaGFycyB8fCBVVEY4TGVuZ3RoID09IDApOworICAgIGFzc2VydChVVEYxNkNoYXJz
KTsKKworICAgIGlmIChVVEY4TGVuZ3RoID09IC0xKQorICAgICAgICBVVEY4TGVuZ3RoID0gc3Ry
bGVuKFVURjhDaGFycyk7CisKKyAgICAvLyBVVEYxNkxlbmd0aCBtYXhpbXVtIGxlbmd0aCBpcyB0
aGUgbGVuZ3RoIG9mIHRoZSBVVEY4IHN0cmluZywgcGx1cyBvbmUgdG8gaW5jbHVkZSB0ZXJtaW5h
dG9yCisgICAgLy8gV2l0aG91dCB0aGUgcGx1cyBvbmUsIGl0IHdpbGwgY29udmVydCBvaywgYnV0
IGEgd2FybmluZyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY29udmVydGVyIGFzCisgICAgLy8gdGhl
cmUgaXMgbm90IGVub3VnaCByb29tIGZvciBhIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICAq
VVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoICsgMTsKKworICAgICpVVEYxNkNoYXJzID0gMDsKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBVQ29udmVydGVyKiBjb252
ID0gdWNudl9vcGVuKCJ1dGY4IiwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMp
KSB7CisgICAgICAgICpVVEYxNkNoYXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRG
MTYpICogKCpVVEYxNkxlbmd0aCkpOworICAgICAgICB1Y252X3NldFRvVUNhbGxCYWNrKGNvbnYs
IFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QLCAwLCAwLCAwLCAmc3RhdHVzKTsKKyAgICAgICAgKlVU
RjE2TGVuZ3RoID0gdWNudl90b1VDaGFycyhjb252LCAoOjpVQ2hhciopKlVURjE2Q2hhcnMsICpV
VEYxNkxlbmd0aCwgVVRGOENoYXJzLCBVVEY4TGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgdWNu
dl9jbG9zZShjb252KTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGNvbnZl
cnNpb24gd2FzIHN1Y2Nlc3NmdWwKKyAgICAvLyBTb21lIHBsdWdpbnMgcmV0dXJuIGludmFsaWQg
VVRGLTggaW4gTlBWYXJpYW50VHlwZV9TdHJpbmcsIHNlZSA8aHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYzPgorICAgIC8vIFRoZXJlIGlzIG5vICJiYWQg
ZGF0YSIgZm9yIGxhdGluMS4gSXQgaXMgdW5saWtlbHkgdGhhdCB0aGUgcGx1Z2luIHdhcyByZWFs
bHkgc2VuZGluZyB0ZXh0IGluIHRoaXMgZW5jb2RpbmcsCisgICAgLy8gYnV0IGl0IHNob3VsZCBo
YXZlIHVzZWQgVVRGLTgsIGFuZCBub3cgd2UgYXJlIHNpbXBseSBhdm9pZGluZyBhIGNyYXNoLgor
ICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgKlVURjE2TGVuZ3RoID0gVVRG
OExlbmd0aDsKKworICAgICAgICBpZiAoISpVVEYxNkNoYXJzKSAgIC8vIElmIHRoZSBtZW1vcnkg
d2Fzbid0IGFsbG9jYXRlZCwgYWxsb2NhdGUgaXQuCisgICAgICAgICAgICAqVVRGMTZDaGFycyA9
IChOUFVURjE2ICopbWFsbG9jKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgpKTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKlVURjE2TGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKyAgICB9Ki8K
IH0KIAogLy8gVmFyaWFudCB2YWx1ZSBtdXN0IGJlIHJlbGVhc2VkIHdpdGggTlBSZWxlYXNlVmFy
aWFudFZhbHVlKCkKQEAgLTc0LDcgKzEwNCw3IEBADQogdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZh
cmlhbnQgKnJlc3VsdCkKIHsKICAgICBUeXBlIHR5cGUgPSB2YWx1ZS50eXBlKCk7Ci0gICAgCisK
ICAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlKSB7CiAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5n
LlVURjhTdHJpbmcoKTsKQEAgLTEwMCwzMSArMTMwLDMxIEBADQogICAgICAgICAgICAgQ0luc3Rh
bmNlICppbnN0YW5jZSA9IHN0YXRpY19jYXN0PENJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKICAgICAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3Qg
KHJlc3VsdCwgaW5zdGFuY2UtPmdldE9iamVjdCgpKTsKICAgICAgICAgfQotCWVsc2UgeworICAg
IGVsc2UgewogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gZXhl
Yy0+aW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgS0pTOjpJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJw
cmV0ZXIgPSBleGVjLT5pbnRlcnByZXRlcigpOwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6
OlJvb3RPYmplY3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIo
b3JpZ2luSW50ZXJwcmV0ZXIpOwogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKmludGVycHJldGVy
ID0gMDsKLQkgICAgaWYgKG9yaWdpbkludGVycHJldGVyLT5pc0dsb2JhbE9iamVjdCh2YWx1ZSkp
IHsKLQkJaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRlci0+aW50ZXJwcmV0ZXJGb3JHbG9i
YWxPYmplY3QgKHZhbHVlLmltcCgpKTsKLQkgICAgfQorICAgICAgICBLSlM6OkludGVycHJldGVy
ICppbnRlcnByZXRlciA9IDA7CisgICAgICAgIGlmIChvcmlnaW5JbnRlcnByZXRlci0+aXNHbG9i
YWxPYmplY3QodmFsdWUpKSB7CisgICAgICAgIGludGVycHJldGVyID0gb3JpZ2luSW50ZXJwcmV0
ZXItPmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0ICh2YWx1ZS5pbXAoKSk7CisgICAgICAgIH0K
IAotCSAgICBpZiAoIWludGVycHJldGVyKQotCQlpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJl
dGVyOwotCQkKKyAgICAgICAgaWYgKCFpbnRlcnByZXRlcikKKyAgICAgICAgaW50ZXJwcmV0ZXIg
PSBvcmlnaW5JbnRlcnByZXRlcjsKKwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RP
YmplY3QgKmV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIp
OwogICAgICAgICAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KSB7CiAgICAgICAgICAgICAgICAg
QmluZGluZ3M6OlJvb3RPYmplY3QgKm5ld0V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgS0pTOjpCaW5k
aW5nczo6Um9vdE9iamVjdCgwKTsKICAgICAgICAgICAgICAgICBuZXdFeGVjdXRpb25Db250ZXh0
LT5zZXRJbnRlcnByZXRlciAoaW50ZXJwcmV0ZXIpOwogICAgICAgICAgICAgICAgIGV4ZWN1dGlv
bkNvbnRleHQgPSBuZXdFeGVjdXRpb25Db250ZXh0OwogICAgICAgICAgICAgfQotICAgIAotCSAg
ICBOUE9iamVjdCAqb2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRl
TGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1
ZS50b09iamVjdChleGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4
dCk7Ci0JICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsK
LQkgICAgX05QTl9SZWxlYXNlT2JqZWN0IChvYmopOwotCX0KKworICAgICAgICBOUE9iamVjdCAq
b2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1ZS50b09iamVjdChl
eGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsKKyAgICAgICAg
TlBOX1JlbGVhc2VPYmplY3QgKG9iaik7CiAgICAgfQorICAgIH0KICAgICBlbHNlCiAgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudEFzVW5kZWZpbmVkKHJlc3VsdCk7CiB9CkBAIC0xNjcsNyAr
MTk3LDcgQEANCiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmpl
Y3QpIHsKICAgICAgICAgTlBPYmplY3QgKm9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
OwotICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RD
bGFzcykgewogICAgICAgICAgICAgLy8gR2V0IE9iamVjdEltcCBmcm9tIE5QX0phdmFTY3JpcHRP
YmplY3QuCiAgICAgICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvID0gKEphdmFTY3JpcHRPYmpl
Y3QgKilvYmo7CkBAIC0xNzgsNyArMjA4LDE2IEBADQogICAgICAgICAgICAgcmV0dXJuIEluc3Rh
bmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopb2Jq
KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0K
IAorSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5h
bWUpCit7CisgICAgTlBVVEYxNiAqbWV0aG9kTmFtZTsKKyAgICB1bnNpZ25lZCBVVEYxNkxlbmd0
aDsKKyAgICBjb252ZXJ0VVRGOFRvVVRGMTYobmFtZSwgLTEsICZtZXRob2ROYW1lLCAmVVRGMTZM
ZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgorICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5n
dGgpOworICAgIGZyZWUobWV0aG9kTmFtZSk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkocmV2aXNpb24gMTcwNjkp
DQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSA8cnVudGltZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWVfb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZV9yb290Lmg+CisjaW5jbHVkZSA8aWRl
bnRpZmllci5oPgogCiB0eXBlZGVmIHVpbnQxNl90IE5QVVRGMTY7CiBOUFVURjE2ICpOUE5fVVRG
MTZGcm9tU3RyaW5nIChOUFN0cmluZyAqb2JqKTsKQEAgLTUxLDYgKzUyLDcgQEANCiBleHRlcm4g
dm9pZCBjb2VyY2VWYWx1ZVRvTlBWYXJpYW50U3RyaW5nVHlwZSAoS0pTOjpFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4g
dm9pZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0
IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4gS0pTOjpWYWx1
ZSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5Q
VmFyaWFudCAqdmFyaWFudCk7CitLSlM6OklkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50
aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKTsKIAogdHlwZWRlZiBzdHJ1Y3QgCiB7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaENvdW50ZWRTZXQuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oCShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSwxNzggQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAt
Ki0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
Q29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICov
DQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX0NPVU5URURfU0VUX0gNCisjZGVmaW5lIEtYTUxD
T1JFX0hBU0hfQ09VTlRFRF9TRVRfSA0KKw0KKy8vI2luY2x1ZGUgIkFzc2VydGlvbnMuaCINCisj
aW5jbHVkZSAiSGFzaE1hcC5oIg0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucyA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPFZhbHVlPjo6SGFzaCwNCisgICAgICAgIHR5cGVuYW1lIFRyYWl0cyA9IEhhc2hUcmFp
dHM8VmFsdWU+ID4gY2xhc3MgSGFzaENvdW50ZWRTZXQgew0KKyAgICBwcml2YXRlOg0KKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFZhbHVlLCB1bnNpZ25lZCwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
PiBJbXBsVHlwZTsNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5
cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciBpdGVyYXRv
cjsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNv
bnN0X2l0ZXJhdG9yOw0KKw0KKyAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQ0KKw0KKyAgICAg
ICAgaW50IHNpemUoKSBjb25zdDsNCisgICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0Ow0KKyAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7DQorDQorICAgICAgICAvLyBpdGVyYXRvcnMgaXRl
cmF0ZSBvdmVyIHBhaXJzIG9mIHZhbHVlcyBhbmQgY291bnRzDQorICAgICAgICBpdGVyYXRvciBi
ZWdpbigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQor
DQorICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpOw0KKyAgICAg
ICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisg
ICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3Q7DQorICAg
ICAgICB1bnNpZ25lZCBjb3VudChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisNCisg
ICAgICAgIC8vIGluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFk
eSBwcmVzZW50DQorICAgICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBp
bnRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLA0KKyAgICAgICAgLy8gYW5kIGEg
Ym9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZA0KKyAgICAgICAgc3Rk
OjpwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSk7DQorDQor
ICAgICAgICAvLyByZWR1Y2VzIHRoZSBjb3VudCBvZiB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIGl0
IGlmIGNvdW50DQorICAgICAgICAvLyBnb2VzIGRvd24gdG8gemVybw0KKyAgICAgICAgdm9pZCBy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSk7DQorICAgICAgICB2b2lkIHJlbW92ZShpdGVy
YXRvciBpdCk7DQorDQorICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIEltcGxUeXBlIG1faW1wbDsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAg
aW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
c2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOw0KKyAg
ICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBpbnQgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNhcGFjaXR5KCkgY29uc3QNCisgICAgew0KKyAg
ICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHNpemUoKSA9
PSAwOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNo
Q291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmJlZ2luKCkNCisgICAgew0K
KyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdpbigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmVuZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7DQor
ICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSBjb25zdA0KKyAg
ICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZW5kKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdHlw
ZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJh
dG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNv
bnN0IFZhbHVlVHlwZSYgdmFsdWUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmlu
ZCh2YWx1ZSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVy
YXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9p
bXBsLmZpbmQodmFsdWUpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBi
b29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250YWlu
cyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
bV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBp
bmxpbmUgdW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OmNvdW50KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZ2V0KHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAg
ICBpbmxpbmUgc3RkOjpwYWlyPHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQ0KKyAgICB7
DQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVl
LCAwKTsNCisgICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNvbmQ7DQorICAgICAgICByZXR1cm4g
cmVzdWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkNCisgICAgew0KKyAgICAgICAgcmVtb3ZlKGZpbmQodmFsdWUpKTsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAgICB7
DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAg
ICAgICAgdW5zaWduZWQgb2xkVmFsID0gaXQtPnNlY29uZDsNCisgICAgICAgIC8vQVNTRVJUKG9s
ZFZhbCAhPSAwKTsNCisgICAgICAgIHVuc2lnbmVkIG5ld1ZhbCA9IG9sZFZhbCAtIDE7DQorICAg
ICAgICBpZiAobmV3VmFsID09IDApDQorICAgICAgICAgICAgbV9pbXBsLnJlbW92ZShpdCk7DQor
ICAgICAgICBlbHNlDQorICAgICAgICAgICAgaXQtPnNlY29uZCA9IG5ld1ZhbDsNCisgICAgfQ0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBtX2ltcGwu
Y2xlYXIoKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNlIGtodG1sDQorDQordXNpbmcgV1RG
OjpIYXNoQ291bnRlZFNldDsNCisNCisjZW5kaWYgLyogS1hNTENPUkVfSEFTSF9DT1VOVEVEX1NF
VF9IICovDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oCShy
ZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hGdW5jdGlvbnMuaAko
cmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTA1IEBADQorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxp
YnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
Lg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0K
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwNCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNf
SA0KKyNkZWZpbmUgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNfSA0KKw0KKyNpbmNsdWRlICJSZWZQ
dHIuaCINCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAg
IHRlbXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgSW50VHlwZXM7DQorICAgIHRlbXBsYXRlPD4g
c3RydWN0IEludFR5cGVzPDE+IHsgdHlwZWRlZiBpbnQ4X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1
aW50OF90IFVuc2lnbmVkVHlwZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50VHlwZXM8
Mj4geyB0eXBlZGVmIGludDE2X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50MTZfdCBVbnNpZ25l
ZFR5cGU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDQ+IHsgdHlwZWRlZiBp
bnQzMl90IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDMyX3QgVW5zaWduZWRUeXBlOyB9Ow0KKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw4PiB7IHR5cGVkZWYgaW50NjRfdCBTaWduZWRU
eXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2lnbmVkVHlwZTsgfTsNCisNCisgICAgLy8gaW50ZWdl
ciBoYXNoIGZ1bmN0aW9uDQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgMzIgQml0IE1peCBGdW5j
dGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFzaC5odG0NCisgICAg
aW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDMyX3Qga2V5KQ0KKyAgICB7DQorICAgICAgICBr
ZXkgKz0gfihrZXkgPDwgMTUpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4gMTApOw0KKyAgICAg
ICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiA2KTsNCisgICAg
ICAgIGtleSArPSB+KGtleSA8PCAxMSk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7DQor
ICAgICAgICByZXR1cm4ga2V5Ow0KKyAgICB9DQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgNjQg
Yml0IE1peCBGdW5jdGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFz
aC5odG0NCisgICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQ0KKyAgICB7
DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMzIpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4g
MjIpOw0KKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsNCisgICAgICAgIGtleSBePSAoa2V5
ID4+IDgpOw0KKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtl
eSA+PiAxNSk7DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMjcpOw0KKyAgICAgICAga2V5IF49
IChrZXkgPj4gMzEpOw0KKyAgICAgICAgcmV0dXJuIGtleTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSW50SGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChUIGtleSkgeyByZXR1cm4gaW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRU
eXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGU+KGtleSkpOyB9DQorICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChUIGEsIFQgYikgeyByZXR1cm4gYSA9PSBiOyB9DQorICAgIH07DQorDQorICAg
IC8vIHBvaW50ZXIgaWRlbnRpdHkgaGFzaCBmdW5jdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUHRySGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChU
IGtleSkgeyByZXR1cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihrZXkpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgUHRySGFzaDxSZWZQdHI8UD4gPiB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBSZWZQdHI8UD4mIGtleSkgeyByZXR1cm4gUHRySGFzaDxQKj46Omhhc2goa2V5Lmdl
dCgpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFA+JiBhLCBj
b25zdCBSZWZQdHI8UD4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKw0KKyAgICAv
LyBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIGVhY2ggdHlwZQ0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQorDQorICAgIC8vIG1ha2UgSW50SGFzaCB0
aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBtYW55IGludGVnZXIgdHlwZXMNCisNCisgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNp
Z25lZD4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
PiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBs
b25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNoOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nIGxvbmc+IHsgdHlwZWRlZiBJbnRIYXNoPHVu
c2lnbmVkIGxvbmcgbG9uZz4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
IGxvbmc+IEhhc2g7IH07DQorDQorICAgIC8vIG1ha2UgUHRySGFzaCB0aGUgZGVmYXVsdCBoYXNo
IGZ1bmN0aW9uIGZvciBwb2ludGVyIHR5cGVzIHRoYXQgZG9uJ3Qgc3BlY2lhbGl6ZQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UCo+IHsgdHlwZWRlZiBQ
dHJIYXNoPFAqPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8UmVmUHRyPFA+ID4geyB0eXBlZGVmIFB0ckhhc2g8UmVmUHRyPFA+ID4gSGFzaDsg
fTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6OkRlZmF1bHRIYXNoOw0K
K3VzaW5nIFdURjo6SW50SGFzaDsNCit1c2luZyBXVEY6OlB0ckhhc2g7DQorDQorI2VuZGlmIC8v
IEtYTE1DT1JFX0hBU0hfRlVOQ1RJT05TX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9IYXNoTWFwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNo
TWFwLmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaE1hcC5o
CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzMzIgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
bGlicmFyaWVzDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4NCisgKg0KKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisg
Kg0KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bw0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsDQorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisjaWZuZGVmIEtYTUxDT1JFX0hBU0hfTUFQ
X0gNCisjZGVmaW5lIEtYTUxDT1JFX0hBU0hfTUFQX0gNCisNCisjaW5jbHVkZSAiSGFzaFRhYmxl
LmgiDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJU
eXBlPiBzdHJ1Y3QgUGFpckZpcnN0RXh0cmFjdG9yOw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1l
IERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsDQorICAgICAgICB0eXBlbmFtZSBLZXlUcmFpdHNB
cmcgPSBIYXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hU
cmFpdHM8TWFwcGVkQXJnPiA+DQorICAgIGNsYXNzIEhhc2hNYXAgew0KKyAgICBwcml2YXRlOg0K
KyAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOw0KKyAgICAgICAgdHlwZWRl
ZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiBQYWlyQmFz
ZUhhc2hUcmFpdHM8S2V5VHJhaXRzLCBNYXBwZWRUcmFpdHM+IFZhbHVlVHJhaXRzOw0KKw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVRyYWl0czo6VHJhaXRUeXBl
IEtleVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6VHJhaXRU
eXBlIE1hcHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpU
cmFpdFR5cGUgVmFsdWVUeXBlOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgdHlwZWRlZiBI
YXNoQXJnIEhhc2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hL
ZXlTdG9yYWdlVHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46Okhhc2ggU3RvcmFnZUhh
c2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hLZXlTdG9yYWdl
VHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46OlRyYWl0cyBLZXlTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6OlN0b3JhZ2VUcmFpdHMg
TWFwcGVkU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8S2V5
U3RvcmFnZVRyYWl0cywgTWFwcGVkU3RvcmFnZVRyYWl0cz4gVmFsdWVTdG9yYWdlVHJhaXRzOw0K
Kw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBLZXlTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUg
S2V5U3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFN0b3JhZ2VU
cmFpdHM6OlRyYWl0VHlwZSBNYXBwZWRTdG9yYWdlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleVN0b3JhZ2VUeXBlLCBWYWx1ZVN0b3JhZ2VU
eXBlLCBQYWlyRmlyc3RFeHRyYWN0b3I8VmFsdWVTdG9yYWdlVHlwZT4sDQorICAgICAgICAgICAg
U3RvcmFnZUhhc2hGdW5jdGlvbnMsIFZhbHVlU3RvcmFnZVRyYWl0cywgS2V5U3RvcmFnZVRyYWl0
cz4gSGFzaFRhYmxlVHlwZTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxl
VHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsNCisNCisgICAgICAgIEhhc2hNYXAoKTsN
CisgICAgICAgIEhhc2hNYXAoY29uc3QgSGFzaE1hcCYpOw0KKyAgICAgICAgSGFzaE1hcCYgb3Bl
cmF0b3I9KGNvbnN0IEhhc2hNYXAmKTsNCisgICAgICAgIH5IYXNoTWFwKCk7DQorDQorICAgICAg
ICBpbnQgc2l6ZSgpIGNvbnN0Ow0KKyAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7DQorICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsNCisNCisgICAgICAgIC8vIGl0ZXJhdG9ycyBpdGVy
YXRlIG92ZXIgcGFpcnMgb2Yga2V5cyBhbmQgdmFsdWVzDQorICAgICAgICBpdGVyYXRvciBiZWdp
bigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQorDQor
ICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KKyAgICAgICAgYm9vbCBjb250YWlu
cyhjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAgICAgICBNYXBwZWRUeXBlIGdldChjb25zdCBL
ZXlUeXBlJikgY29uc3Q7DQorDQorICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtl
eSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50DQorICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMg
YSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCANCisgICAgICAgIC8v
IGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFk
ZGVkDQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIGNv
bnN0IE1hcHBlZFR5cGUmKTsgDQorDQorICAgICAgICAvLyBkb2VzIG5vdGhpbmcgaWYga2V5IGlz
IGFscmVhZHkgcHJlc2VudA0KKyAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0
aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgDQorICAgICAgICAvLyBhbmQgYSBib29s
ZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZA0KKyAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRU
eXBlJik7IA0KKw0KKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOw0KKyAgICAg
ICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpOw0KKyAgICAgICAgdm9pZCBjbGVhcigpOw0KKw0K
KyAgICBwcml2YXRlOg0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNv
bnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7DQorICAgICAgICB2b2lkIHJlZkFsbCgp
Ow0KKyAgICAgICAgdm9pZCBkZXJlZkFsbCgpOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlVHlwZSBt
X2ltcGw7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJUeXBlPiBzdHJ1
Y3QgUGFpckZpcnN0RXh0cmFjdG9yIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSBQ
YWlyVHlwZTo6Zmlyc3RfdHlwZSYgZXh0cmFjdChjb25zdCBQYWlyVHlwZSYgcCkgeyByZXR1cm4g
cC5maXJzdDsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTxib29sIGNhblJlcGxhY2VEZWxl
dGVkS2V5LCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0cywg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yOw0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFu
c2xhdG9yPHRydWUsIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHlwZTo6Zmlyc3RfdHlwZSBLZXlU
eXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1h
cHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6
VHJhaXRUeXBlIFZhbHVlU3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZh
bHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgS2V5U3RvcmFnZVRyYWl0czsNCisgICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgS2V5U3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIEtleVN0b3JhZ2VU
eXBlOw0KKw0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5VHlwZSYga2V5
KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0NCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IEtleVN0b3JhZ2VUeXBlJiBhLCBjb25zdCBLZXlUeXBlJiBiKSB7IHJl
dHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbCgqKEtleVR5cGUqKSZhLCBiKTsgfQ0KKyAgICAgICAg
c3RhdGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlU3RvcmFnZVR5cGUmIGxvY2F0aW9uLCBjb25zdCBL
ZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCwgdW5zaWduZWQpDQorICAgICAg
ICB7DQorICAgICAgICAgICAgKihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAg
ICAgICAgICAgKihNYXBwZWRUeXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAg
ICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIFZhbHVlU3RvcmFnZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3Ry
dWN0IEhhc2hNYXBUcmFuc2xhdG9yPGZhbHNlLCBWYWx1ZVR5cGUsIFZhbHVlU3RvcmFnZVRyYWl0
cywgSGFzaEZ1bmN0aW9ucz4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6
OmZpcnN0X3R5cGUgS2V5VHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUeXBl
OjpzZWNvbmRfdHlwZSBNYXBwZWRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1
ZVN0b3JhZ2VUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVN0b3JhZ2VUeXBlOw0KKyAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEtleVN0b3JhZ2VU
cmFpdHM7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVN0b3JhZ2VUcmFpdHM6OlRyYWl0
VHlwZSBLZXlTdG9yYWdlVHlwZTsNCisNCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9DQor
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXlTdG9yYWdlVHlwZSYgYSwgY29uc3Qg
S2V5VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoKihLZXlUeXBlKikmYSwg
Yik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZVN0b3JhZ2VUeXBlJiBs
b2NhdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiBtYXBwZWQsIHVu
c2lnbmVkKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChsb2NhdGlvbi5maXJzdCA9PSBL
ZXlTdG9yYWdlVHJhaXRzOjpkZWxldGVkVmFsdWUoKSkNCisgICAgICAgICAgICAgICAgbG9jYXRp
b24uZmlyc3QgPSBLZXlTdG9yYWdlVHJhaXRzOjplbXB0eVZhbHVlKCk7DQorICAgICAgICAgICAg
KihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAgICAgICAgICAgKihNYXBwZWRU
eXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZWZBbGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJs
ZVR5cGUsIFZhbHVlVHJhaXRzPjo6cmVmQWxsKG1faW1wbCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZGVyZWZB
bGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJsZVR5cGUs
IFZhbHVlVHJhaXRzPjo6ZGVyZWZBbGwobV9pbXBsKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6SGFzaE1hcCgpDQorICAg
IHsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6SGFzaE1hcChjb25zdCBIYXNoTWFwJiBvdGhlcikNCisgICAgICAgIDogbV9p
bXBsKG90aGVyLm1faW1wbCkNCisgICAgew0KKyAgICAgICAgcmVmQWxsKCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46Om9wZXJhdG9yPShjb25zdCBIYXNoTWFwJiBvdGhlcikNCisg
ICAgew0KKyAgICAgICAgSGFzaE1hcCB0bXAob3RoZXIpOw0KKyAgICAgICAgbV9pbXBsLnN3YXAo
dG1wLm1faW1wbCk7IA0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+DQorICAgIGlubGluZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp+SGFzaE1hcCgp
DQorICAgIHsNCisgICAgICAgIGRlcmVmQWxsKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4NCisgICAgaW5saW5lIGludCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QN
CisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+DQorICAgIGlubGluZSBpbnQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2Fw
YWNpdHkoKSBjb25zdA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgp
OyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5pc0VtcHR5KCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmJlZ2luKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdp
bigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpl
bmQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+Ojpjb25zdF9pdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0
DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsNCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkgY29uc3QNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBl
Kikma2V5KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBlKikma2V5KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIHJldHVybiBtX2ltcGwuY29udGFpbnMoKihjb25zdCBLZXlTdG9yYWdlVHlwZSopJmtleSk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHBhaXI8dHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+DQorICAgIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5
cGUmIG1hcHBlZCkgDQorICAgIHsgDQorI2lmbmRlZiBfX0FSTUNDX18NCisgICAgICAgIGNvbnN0
IGJvb2wgY2FuUmVwbGFjZURlbGV0ZWRLZXkgPSAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9u
IHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb247DQorICAgICAgICB0eXBlZGVm
IEhhc2hNYXBUcmFuc2xhdG9yPGNhblJlcGxhY2VEZWxldGVkS2V5LCBWYWx1ZVR5cGUsIFZhbHVl
U3RvcmFnZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7DQorI2Vsc2UNCisg
ICAgICAgIC8vIGdldCBhcm91bmQgDQorICAgICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xhdG9y
PCAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uIHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRz
RGVzdHJ1Y3Rpb24sIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiBUcmFuc2xhdG9yVHlwZTsNCisjZW5kaWYNCisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgYWRkPEtleVR5cGUsIE1hcHBlZFR5cGUsIFRyYW5zbGF0b3JUeXBlPihrZXksIG1hcHBlZCk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4NCisgICAgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKSAN
CisgICAgew0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsNCisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAg
ICAvLyBhZGQgY2FsbCBhYm92ZSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLCBzbyBzZXQgdGhlIG1h
cHBlZCB2YWx1ZQ0KKyAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbWFwcGVkOw0K
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAg
ICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPg0K
KyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBjb25z
dCBNYXBwZWRUeXBlJiBtYXBwZWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBtYXBwZWQpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4NCisg
ICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFw
cGVkVHlwZQ0KKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0
ID0gZmluZChrZXkpOw0KKyAgICAgICAgaWYgKGl0ID09IGVuZCgpKQ0KKyAgICAgICAgICAgIHJl
dHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKTsNCisgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkNCisgICAgew0KKyAgICAgICAg
aWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKyAg
ICAgICAgUmVmQ291bnRlcjxWYWx1ZVRyYWl0cywgVmFsdWVTdG9yYWdlVHJhaXRzPjo6ZGVyZWYo
Kml0Lm1faW1wbCk7DQorICAgICAgICBtX2ltcGwucmVtb3ZlKGl0Lm1faW1wbCk7DQorICAgIH0N
CisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkNCisgICAgew0KKyAgICAgICAgcmVtb3Zl
KGZpbmQoa2V5KSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZv
aWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBkZXJl
ZkFsbCgpOw0KKyAgICAgICAgbV9pbXBsLmNsZWFyKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWFwcGVkVHlwZSwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZT4NCisgICAgdm9p
ZCBkZWxldGVBbGxQYWlyU2Vjb25kcyhIYXNoVGFibGVUeXBlJiBjb2xsZWN0aW9uKQ0KKyAgICB7
DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXJhdG9yOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsNCisg
ICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkNCisgICAgICAgICAgICBkZWxldGUgKihNYXBwZWRUeXBlKikmaXQtPnNlY29uZDsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBkZWxldGVBbGxWYWx1
ZXMoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbikNCisgICAgew0KKyAg
ICAgICAgZGVsZXRlQWxsUGFpclNlY29uZHM8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6TWFwcGVkVHlwZT4oY29sbGVjdGlvbik7DQorICAgIH0NCisNCit9IC8vIG5hbWVzcGFjZSBX
VEYNCisNCit1c2luZyBXVEY6Okhhc2hNYXA7DQorDQorI2VuZGlmIC8qIEtYTUxDT1JFX0hBU0hf
TUFQX0ggKi8NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVGFibGUuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lv
biAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw5MzUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0K
KyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RBQkxFX0gNCisjZGVmaW5lIEtY
TUxDT1JFX0hBU0hfVEFCTEVfSA0KKw0KKyNpbmNsdWRlICJGYXN0X01hbGxvYy5oIg0KKyNpbmNs
dWRlICJIYXNoVHJhaXRzLmgiDQorI2luY2x1ZGUgPGFzc2VydC5oPg0KKw0KK25hbWVzcGFjZSBX
VEYgew0KKw0KKyNkZWZpbmUgRFVNUF9IQVNIVEFCTEVfU1RBVFMgMA0KKyNkZWZpbmUgQ0hFQ0tf
SEFTSFRBQkxFX0NPTlNJU1RFTkNZIDANCisNCisjaWZkZWYgTkRFQlVHDQorI2RlZmluZSBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTIDANCisjZWxzZQ0KKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUyAxDQorI2VuZGlmDQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorDQor
ICAgIHN0cnVjdCBIYXNoVGFibGVTdGF0cyB7DQorICAgICAgICB+SGFzaFRhYmxlU3RhdHMoKTsN
CisgICAgICAgIHN0YXRpYyBpbnQgbnVtQWNjZXNzZXM7DQorICAgICAgICBzdGF0aWMgaW50IG51
bUNvbGxpc2lvbnM7DQorICAgICAgICBzdGF0aWMgaW50IGNvbGxpc2lvbkdyYXBoWzQwOTZdOw0K
KyAgICAgICAgc3RhdGljIGludCBtYXhDb2xsaXNpb25zOw0KKyAgICAgICAgc3RhdGljIGludCBu
dW1SZWhhc2hlczsNCisgICAgICAgIHN0YXRpYyBpbnQgbnVtUmVtb3ZlczsNCisgICAgICAgIHN0
YXRpYyBpbnQgbnVtUmVpbnNlcnRzOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVjb3JkQ29sbGlz
aW9uQXRDb3VudChpbnQgY291bnQpOw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGU7DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJs
ZUl0ZXJhdG9yOw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNo
VGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+Kik7DQorI2Vsc2UNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKSB7IH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRl
cmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopIHsgfQ0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yIHsNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAgICB0eXBlZGVm
IEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1
ZVR5cGU7DQorICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlwZTsN
CisgICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsNCisNCisgICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47DQorICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz47DQorDQorICAgICAgICB2b2lkIHNraXBFbXB0eUJ1Y2tldHMoKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgICAgIHdoaWxlIChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24gJiYg
SGFzaFRhYmxlVHlwZTo6aXNFbXB0eU9yRGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlvbikpDQorICAg
ICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgICAgIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBl
IHBvc2l0aW9uLCBQb2ludGVyVHlwZSBlbmRQb3NpdGlvbikNCisgICAgICAgICAgICA6IG1fcG9z
aXRpb24ocG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKQ0KKyAgICAgICAgew0K
KyAgICAgICAgICAgIGFkZEl0ZXJhdG9yKHRhYmxlLCB0aGlzKTsNCisgICAgICAgICAgICBza2lw
RW1wdHlCdWNrZXRzKCk7DQorICAgICAgICB9DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGFkZEl0ZXJh
dG9yKDAsIHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gZGVmYXVsdCBjb3B5LCBh
c3NpZ25tZW50IGFuZCBkZXN0cnVjdG9yIGFyZSBPSyBpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTIGlzIDANCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAgICAgICAgfkhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJlbW92ZUl0
ZXJhdG9yKHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvcihjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpDQorICAgICAgICAgICAgOiBtX3Bvc2l0
aW9uKG90aGVyLm1fcG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKG90aGVyLm1fZW5kUG9zaXRpb24p
DQorICAgICAgICB7DQorICAgICAgICAgICAgYWRkSXRlcmF0b3Iob3RoZXIubV90YWJsZSwgdGhp
cyk7DQorICAgICAgICB9DQorDQorICAgICAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3I9KGNv
bnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikNCisgICAgICAgIHsNCisgICAgICAgICAgICBtX3Bv
c2l0aW9uID0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgICAgICBtX2VuZFBvc2l0aW9uID0g
b3RoZXIubV9lbmRQb3NpdGlvbjsNCisNCisgICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0aGlz
KTsNCisgICAgICAgICAgICBhZGRJdGVyYXRvcihvdGhlci5tX3RhYmxlLCB0aGlzKTsNCisNCisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgICAgICB9DQorI2VuZGlmDQorDQorICAgICAg
ICBQb2ludGVyVHlwZSBnZXQoKSBjb25zdA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNoZWNr
VmFsaWRpdHkoKTsNCisgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbjsNCisgICAgICAgIH0N
CisgICAgICAgIFJlZmVyZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9DQorICAgICAgICBQb2ludGVyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0NCisNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkNCisgICAgICAg
IHsNCisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7DQorICAgICAgICAgICAgYXNzZXJ0KG1f
cG9zaXRpb24gIT0gbV9lbmRQb3NpdGlvbik7DQorICAgICAgICAgICAgKyttX3Bvc2l0aW9uOw0K
KyAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsNCisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkg
b21pdHRlZA0KKw0KKyAgICAgICAgLy8gQ29tcGFyaXNvbi4NCisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQorICAg
ICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1fcG9z
aXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisgICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQor
ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1f
cG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgcHJpdmF0
ZToNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0DQorICAgICAgICB7DQorI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAgICAgICBhc3NlcnQobV90YWJsZSk7
DQorI2VuZGlmDQorICAgICAgICB9DQorDQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRP
UlMNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25zdF9pdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0DQorICAgICAgICB7DQorICAgICAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAg
ICAgICAgICAgIGFzc2VydChvdGhlci5tX3RhYmxlKTsNCisgICAgICAgICAgICBhc3NlcnQobV90
YWJsZSA9PSBvdGhlci5tX3RhYmxlKTsNCisgICAgICAgIH0NCisjZWxzZQ0KKyAgICAgICAgdm9p
ZCBjaGVja1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJikgY29uc3QgeyB9DQorI2VuZGlm
DQorDQorICAgICAgICBQb2ludGVyVHlwZSBtX3Bvc2l0aW9uOw0KKyAgICAgICAgUG9pbnRlclR5
cGUgbV9lbmRQb3NpdGlvbjsNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7
DQorICAgICAgICBtdXRhYmxlIGNvbnN0X2l0ZXJhdG9yKiBtX25leHQ7DQorICAgICAgICBtdXRh
YmxlIGNvbnN0X2l0ZXJhdG9yKiBtX3ByZXZpb3VzOw0KKyNlbmRpZg0KKyAgICB9Ow0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciB7DQorICAgIHByaXZhdGU6DQor
ICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOw0KKyAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFs
dWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7DQorICAg
ICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7DQorDQorICAgICAgICBmcmllbmQg
Y2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+Ow0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoSGFzaFRhYmxl
VHlwZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvcywgUG9pbnRlclR5cGUgZW5kKSA6IG1faXRlcmF0
b3IodGFibGUsIHBvcywgZW5kKSB7IH0NCisNCisgICAgcHVibGljOg0KKyAgICAgICAgSGFzaFRh
YmxlSXRlcmF0b3IoKSB7IH0NCisNCisgICAgICAgIC8vIGRlZmF1bHQgY29weSwgYXNzaWdubWVu
dCBhbmQgZGVzdHJ1Y3RvciBhcmUgT0sNCisNCisgICAgICAgIFBvaW50ZXJUeXBlIGdldCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KG1faXRlcmF0b3IuZ2V0KCkpOyB9
DQorICAgICAgICBSZWZlcmVuY2VUeXBlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQo
KTsgfQ0KKyAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9DQorDQorICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2l0ZXJhdG9y
OyByZXR1cm4gKnRoaXM7IH0NCisNCisgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxs
eSBvbWl0dGVkDQorDQorICAgICAgICAvLyBDb21wYXJpc29uLg0KKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9
PSBvdGhlci5tX2l0ZXJhdG9yOyB9DQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0
b3I7IH0NCisNCisgICAgICAgIG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvcjsgfQ0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgY29uc3RfaXRlcmF0
b3IgbV9pdGVyYXRvcjsNCisgICAgfTsNCisNCisgICAgdXNpbmcgc3RkOjpzd2FwOw0KKw0KKy8v
I2lmICFDT01QSUxFUihNU1ZDKQ0KKyAgICAvLyBWaXN1YWwgQysrIGhhcyBhIHN3YXAgZm9yIHBh
aXJzIGRlZmluZWQuDQorDQorICAgIC8vIHN3YXAgcGFpcnMgYnkgY29tcG9uZW50LCBpbiBjYXNl
IG9mIHBhaXIgbWVtYmVycyB0aGF0IHNwZWNpYWxpemUgc3dhcA0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBzd2FwKHBhaXI8VCwgVT4mIGEsIHBhaXI8
VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAgIHN3YXAoYS5maXJzdCwgYi5maXJzdCk7DQorICAg
ICAgICBzd2FwKGEuc2Vjb25kLCBiLnNlY29uZCk7DQorICAgIH0NCisvLyNlbmRpZg0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIHVzZVN3YXA+IHN0cnVjdCBNb3ZlcjsNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1vdmVyPFQsIHRydWU+IHsgc3RhdGljIHZvaWQg
bW92ZShUJiBmcm9tLCBUJiB0bykgeyBzd2FwKGZyb20sIHRvKTsgfSB9Ow0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTW92ZXI8VCwgZmFsc2U+IHsgc3RhdGljIHZvaWQgbW92ZShU
JiBmcm9tLCBUJiB0bykgeyB0byA9IGZyb207IH0gfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgSWRl
bnRpdHlIYXNoVHJhbnNsYXRvciB7DQorICAgIHB1YmxpYzoNCisgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtl
eSk7IH0NCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5
JiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQ0KKyAgICAgICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlJiBsb2NhdGlvbiwgY29uc3QgS2V5JiwgY29uc3QgVmFs
dWUmIHZhbHVlLCB1bnNpZ25lZCkgeyBsb2NhdGlvbiA9IHZhbHVlOyB9DQorICAgIH07DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJsZSB7DQorICAgIHB1YmxpYzoNCisgICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFRy
YWl0cyBWYWx1ZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNo
VHJhbnNsYXRvcjxLZXksIFZhbHVlLCBIYXNoRnVuY3Rpb25zPiBJZGVudGl0eVRyYW5zbGF0b3JU
eXBlOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlKCk7DQorICAgICAgICB+SGFzaFRhYmxlKCkgeyBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6
ZSk7IH0NCisNCisgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsNCisgICAgICAg
IHZvaWQgc3dhcChIYXNoVGFibGUmKTsNCisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNv
bnN0IEhhc2hUYWJsZSYpOw0KKw0KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBt
YWtlSXRlcmF0b3IobV90YWJsZSk7IH0NCisgICAgICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJu
IG1ha2VJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorICAgICAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKG1fdGFibGUp
OyB9DQorICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlQ29u
c3RJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorDQorICAgICAgICBpbnQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0NCisgICAgICAgIGludCBjYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9DQorICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9rZXlDb3VudDsgfQ0KKw0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxLZXlUeXBlLCBW
YWx1ZVR5cGUsIElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1
ZSksIHZhbHVlKTsgfQ0KKw0KKyAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRkKCkg
dGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZw0KKyAgICAgICAg
Ly8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVy
c2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkNCisgICAgICAgIC8vIGluIHRoZSB0YWJsZS4N
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29u
c3QgRXh0cmEmKTsNCisNCisgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOw0K
KyAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAg
ICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmKSBjb25zdDsNCisNCisgICAgICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9y
KTsNCisgICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1w
dHlCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRXh0cmFjdG9yOjpleHRy
YWN0KHZhbHVlKSA9PSBLZXlUcmFpdHM6OmVtcHR5VmFsdWUoKTsgfQ0KKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEV4
dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkgPT0gS2V5VHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0K
KyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5QnVja2V0KHZhbHVlKSB8fCBpc0RlbGV0ZWRCdWNr
ZXQodmFsdWUpOyB9DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBzdGF0aWMgVmFsdWVUeXBl
KiBhbGxvY2F0ZVRhYmxlKGludCBzaXplKTsNCisgICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2Nh
dGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCBpbnQgc2l6ZSk7DQorDQorICAgICAgICB0eXBlZGVm
IHBhaXI8VmFsdWVUeXBlKiwgYm9vbD4gTG9va3VwVHlwZTsNCisgICAgICAgIHR5cGVkZWYgcGFp
cjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7DQorDQorICAgICAgICBMb29r
dXBUeXBlIGxvb2t1cChjb25zdCBLZXkmIGtleSkgeyByZXR1cm4gbG9va3VwPEtleSwgSWRlbnRp
dHlUcmFuc2xhdG9yVHlwZT4oa2V5KS5maXJzdDsgfQ0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEZ1bGxMb29rdXBUeXBlIGxvb2t1cChjb25z
dCBUJik7DQorDQorICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsNCisNCisgICAgICAg
IGJvb2wgc2hvdWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0
ZWRDb3VudCkgKiBtX21heExvYWQgPj0gbV90YWJsZVNpemU7IH0NCisgICAgICAgIGJvb2wgbXVz
dFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwg
bV90YWJsZVNpemUgKiAyOyB9DQorICAgICAgICBib29sIHNob3VsZFNocmluaygpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3RhYmxlU2l6ZSAmJiBtX3RhYmxlU2l6
ZSA+IG1fbWluVGFibGVTaXplOyB9DQorICAgICAgICB2b2lkIGV4cGFuZCgpOw0KKyAgICAgICAg
dm9pZCBzaHJpbmsoKSB7IHJlaGFzaChtX3RhYmxlU2l6ZSAvIDIpOyB9DQorDQorICAgICAgICB2
b2lkIHJlaGFzaChpbnQgbmV3VGFibGVTaXplKTsNCisgICAgICAgIHZvaWQgcmVpbnNlcnQoVmFs
dWVUeXBlJik7DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQnVja2V0KFZhbHVl
VHlwZSYgYnVja2V0KSB7IC8qbmV3ICgmYnVja2V0KSBWYWx1ZVR5cGUoVHJhaXRzOjplbXB0eVZh
bHVlKCkpOyovIH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUJ1Y2tldChWYWx1ZVR5cGUm
IGJ1Y2tldCkgeyBhc3NpZ25EZWxldGVkPFZhbHVlVHlwZSwgVHJhaXRzPihidWNrZXQpOyB9DQor
DQorICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZhbHVlVHlwZSogcG9z
aXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpDQorICAgICAgICAgICAgeyByZXR1cm4g
RnVsbExvb2t1cFR5cGUoTG9va3VwVHlwZShwb3NpdGlvbiwgZm91bmQpLCBoYXNoKTsgfQ0KKw0K
KyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBp
dGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0NCisgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7IHJl
dHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0N
CisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZDQorICAgICAgICB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0Ow0KKyAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lz
dGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7DQorI2Vsc2UNCisgICAgICAgIHN0YXRpYyB2b2lkIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJs
ZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQ0KKyNlbmRpZg0KKw0KKyNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTDQorICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisj
ZWxzZQ0KKyAgICAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUl0ZXJhdG9ycygpIHsgfQ0KKyNl
bmRpZg0KKw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21pblRhYmxlU2l6ZSA9IDY0Ow0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heExvYWQgPSAyOw0KKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBtX21pbkxvYWQgPSA2Ow0KKw0KKyAgICAgICAgVmFsdWVUeXBlKiBtX3RhYmxl
Ow0KKyAgICAgICAgaW50IG1fdGFibGVTaXplOw0KKyAgICAgICAgaW50IG1fdGFibGVTaXplTWFz
azsNCisgICAgICAgIGludCBtX2tleUNvdW50Ow0KKyAgICAgICAgaW50IG1fZGVsZXRlZENvdW50
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHB1YmxpYzoNCisgICAg
ICAgIG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1faXRlcmF0b3JzOw0KKyNlbmRpZg0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQ0KKyAg
ICAgICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAs
IG1fdGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAs
IG1fZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAg
ICAgICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPg0K
KyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpGdWxsTG9va3VwVHlwZSBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Omxvb2t1cChjb25zdCBUJiBrZXkpDQorICAgIHsNCisgICAgICAgIGFzc2VydChtX3RhYmxlKTsN
CisNCisgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOw0KKyAg
ICAgICAgaW50IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOw0KKyAgICAgICAgaW50IGkgPSBo
ICYgc2l6ZU1hc2s7DQorICAgICAgICBpbnQgayA9IDA7DQorDQorI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTDQorICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsNCisgICAgICAg
IGludCBwcm9iZUNvdW50ID0gMDsNCisjZW5kaWYNCisNCisgICAgICAgIFZhbHVlVHlwZSAqdGFi
bGUgPSBtX3RhYmxlOw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeTsNCisgICAgICAgIFZhbHVl
VHlwZSAqZGVsZXRlZEVudHJ5ID0gMDsNCisgICAgICAgIHdoaWxlICghaXNFbXB0eUJ1Y2tldCgq
KGVudHJ5ID0gdGFibGUgKyBpKSkpIHsNCisgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0
KCplbnRyeSkpDQorICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Ow0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3Qo
KmVudHJ5KSwga2V5KSkNCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQo
ZW50cnksIHRydWUsIGgpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgICAg
ICsrcHJvYmVDb3VudDsNCisgICAgICAgICAgICBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlz
aW9uQXRDb3VudChwcm9iZUNvdW50KTsNCisjZW5kaWYNCisgICAgICAgICAgICBpZiAoayA9PSAw
KQ0KKyAgICAgICAgICAgICAgICBrID0gMSB8IChoICUgc2l6ZU1hc2spOw0KKyAgICAgICAgICAg
IGkgPSAoaSArIGspICYgc2l6ZU1hc2s7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4g
bWFrZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFs
c2UsIGgpOw0KKyAgICB9DQorDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4NCisgICAgaW5saW5l
IHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQo
Y29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSAmZXh0cmEpDQorICAgIHsNCisgICAgICAgIGludmFs
aWRhdGVJdGVyYXRvcnMoKTsNCisNCisgICAgICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAg
ICBleHBhbmQoKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAg
ICAgICAgRnVsbExvb2t1cFR5cGUgbG9va3VwUmVzdWx0ID0gbG9va3VwPFQsIEhhc2hUcmFuc2xh
dG9yPihrZXkpOw0KKw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeSA9IGxvb2t1cFJlc3VsdC5m
aXJzdC5maXJzdDsNCisgICAgICAgIGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vj
b25kOw0KKyAgICAgICAgdW5zaWduZWQgaCA9IGxvb2t1cFJlc3VsdC5zZWNvbmQ7DQorDQorICAg
ICAgICBpZiAoZm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJ
dGVyYXRvcihlbnRyeSksIGZhbHNlKTsNCisNCisgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50Ow0KKw0KKyAgICAgICAgSGFz
aFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIGtleSwgZXh0cmEsIGgpOw0KKyAgICAgICAg
KyttX2tleUNvdW50Ow0KKw0KKyAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKSB7DQorICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgbWFrZXMgYW4gZXh0cmEgY29weSBvbiBleHBhbmQuIFByb2Jh
Ymx5IG5vdCB0aGF0IGJhZCBzaW5jZQ0KKyAgICAgICAgICAgIC8vIGV4cGFuZCBpcyByYXJlLCBi
dXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYSB2ZXJzaW9uIG9mIGV4cGFuZCB0aGF0IGNhbg0K
KyAgICAgICAgICAgIC8vIGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBw
b3NpdGlvbg0KKyAgICAgICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0
cmFjdCgqZW50cnkpOw0KKyAgICAgICAgICAgIGV4cGFuZCgpOw0KKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsNCisgICAgICAgIH0NCisN
CisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcihlbnRyeSksIHRydWUpOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiBl
bnRyeSkNCisgICAgew0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAgICAgICAgYXNzZXJ0
KCFsb29rdXAoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuc2Vjb25kKTsNCisgICAgICAgIGFz
c2VydCghaXNEZWxldGVkQnVja2V0KCoobG9va3VwKEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkp
LmZpcnN0KSkpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgKytIYXNoVGFi
bGVTdGF0czo6bnVtUmVpbnNlcnRzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgTW92ZXI8VmFsdWVU
eXBlLCBUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24+Ojptb3ZlKGVudHJ5LCAqKGxvb2t1cChFeHRy
YWN0b3I6OmV4dHJhY3QoZW50cnkpKS5maXJzdCkpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQor
ICAgIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IEtl
eSYga2V5KQ0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAgICAgICAgcmV0
dXJuIGVuZCgpOw0KKw0KKyAgICAgICAgTG9va3VwVHlwZSByZXN1bHQgPSBsb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKHJlc3VsdC5maXJzdCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4NCisgICAgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OmZpbmQoY29uc3QgS2V5JiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICgh
bV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7DQorDQorICAgICAgICBMb29rdXBU
eXBlIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IocmVzdWx0LmZpcnN0KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KKw0KKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SGFzaFRh
YmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KS5zZWNvbmQ7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4N
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykNCisgICAgew0KKyAg
ICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3Rl
bmN5KCk7DQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorICAgICAgICArK0hhc2hUYWJs
ZVN0YXRzOjpudW1SZW1vdmVzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgZGVsZXRlQnVja2V0KCpw
b3MpOw0KKyAgICAgICAgKyttX2RlbGV0ZWRDb3VudDsNCisgICAgICAgIC0tbV9rZXlDb3VudDsN
CisNCisgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkNCisgICAgICAgICAgICBzaHJpbmsoKTsN
CisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAg
ICB7DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0K
KyAgICAgICAgcmVtb3ZlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bv
c2l0aW9uKSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQ0KKyAgICB7DQorICAgICAgICByZW1vdmUo
ZmluZChrZXkpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBWYWx1ZSAqSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjphbGxvY2F0ZVRhYmxlKGludCBzaXplKQ0KKyAgICB7DQorICAgICAgICAvLyB3b3VsZCB1c2Ug
YSB0ZW1wbGF0ZSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMg
aGVyZSwgYnV0DQorICAgICAgICAvLyBnY2MgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCB0aGF0
DQorICAgICAgICBpZiAoVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvKQ0KKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUgKj4oS0pTOjpranNfZmFzdF9jYWxsb2Moc2l6ZSwg
c2l6ZW9mKFZhbHVlVHlwZSkpKTsNCisgICAgICAgIFZhbHVlVHlwZSogcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VmFsdWVUeXBlKj4oS0pTOjpranNfZmFzdF9tYWxsb2Moc2l6ZSAqIHNpemVvZihWYWx1
ZVR5cGUpKSk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykNCisgICAg
ICAgICAgICBpbml0aWFsaXplQnVja2V0KHJlc3VsdFtpXSk7DQorICAgICAgICByZXR1cm4gcmVz
dWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9j
YXRlVGFibGUoVmFsdWVUeXBlICp0YWJsZSwgaW50IHNpemUpDQorICAgIHsNCisgICAgICAgIGlm
IChUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24pDQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyArK2kpDQorICAgICAgICAgICAgICAgIHRhYmxlW2ldLn5WYWx1ZVR5cGUoKTsN
CisgICAgICAgIEtKUzo6a2pzX2Zhc3RfZnJlZSh0YWJsZSk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZCgpDQorICAgIHsNCisgICAgICAgIGludCBu
ZXdTaXplOw0KKyAgICAgICAgaWYgKG1fdGFibGVTaXplID09IDApDQorICAgICAgICAgICAgbmV3
U2l6ZSA9IG1fbWluVGFibGVTaXplOw0KKyAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxh
Y2UoKSkNCisgICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemU7DQorICAgICAgICBlbHNl
DQorICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVTaXplICogMjsNCisNCisgICAgICAgIHJl
aGFzaChuZXdTaXplKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6cmVoYXNoKGludCBuZXdUYWJsZVNpemUpDQorICAgIHsNCisgICAgICAgIGNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsNCisNCisgICAgICAgIGludCBvbGRUYWJsZVNpemUgPSBt
X3RhYmxlU2l6ZTsNCisgICAgICAgIFZhbHVlVHlwZSAqb2xkVGFibGUgPSBtX3RhYmxlOw0KKw0K
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgaWYgKG9sZFRhYmxlU2l6ZSAhPSAw
KQ0KKyAgICAgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaGFzaGVzOw0KKyNlbmRpZg0K
Kw0KKyAgICAgICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7DQorICAgICAgICBtX3RhYmxl
U2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAxOw0KKyAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRl
VGFibGUobmV3VGFibGVTaXplKTsNCisNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICE9IG9s
ZFRhYmxlU2l6ZTsgKytpKQ0KKyAgICAgICAgICAgIGlmICghaXNFbXB0eU9yRGVsZXRlZEJ1Y2tl
dChvbGRUYWJsZVtpXSkpDQorICAgICAgICAgICAgICAgIHJlaW5zZXJ0KG9sZFRhYmxlW2ldKTsN
CisNCisgICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsNCisNCisgICAgICAgIGRlYWxsb2NhdGVU
YWJsZShvbGRUYWJsZSwgb2xkVGFibGVTaXplKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpj
bGVhcigpDQorICAgIHsNCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisgICAgICAg
IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7DQorICAgICAgICBtX3RhYmxl
ID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplTWFz
ayA9IDA7DQorICAgICAgICBtX2tleUNvdW50ID0gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0K
KyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQ0KKyAgICAg
ICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAsIG1f
dGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAg
ICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICAgICAgLy8gQ29weSB0aGUg
aGFzaCB0YWJsZSB0aGUgZHVtYiB3YXksIGJ5IGFkZGluZyBlYWNoIGVsZW1lbnQgdG8gdGhlIG5l
dyB0YWJsZS4NCisgICAgICAgIC8vIEl0IG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IHRvIGNvcHkg
dGhlIHRhYmxlIHNsb3RzLCBidXQgaXQncyBub3QgY2xlYXIgdGhhdCBlZmZpY2llbmN5IGlzIG5l
ZWRlZC4NCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCA9IG90aGVyLmVuZCgpOw0KKyAgICAg
ICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkNCisgICAgICAgICAgICBhZGQoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQ0KKyAgICB7DQorICAgICAgICBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3Jz
KCk7DQorDQorICAgICAgICBWYWx1ZVR5cGUgKnRtcF90YWJsZSA9IG1fdGFibGU7DQorICAgICAg
ICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsNCisgICAgICAgIG90aGVyLm1fdGFibGUgPSB0bXBf
dGFibGU7DQorDQorICAgICAgICBpbnQgdG1wX3RhYmxlU2l6ZSA9IG1fdGFibGVTaXplOw0KKyAg
ICAgICAgbV90YWJsZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsNCisgICAgICAgIG90aGVyLm1f
dGFibGVTaXplID0gdG1wX3RhYmxlU2l6ZTsNCisNCisgICAgICAgIGludCB0bXBfdGFibGVTaXpl
TWFzayA9IG1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG1fdGFibGVTaXplTWFzayA9IG90aGVy
Lm1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IHRtcF90
YWJsZVNpemVNYXNrOw0KKw0KKyAgICAgICAgaW50IHRtcF9rZXlDb3VudCA9IG1fa2V5Q291bnQ7
DQorICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsNCisgICAgICAgIG90aGVy
Lm1fa2V5Q291bnQgPSB0bXBfa2V5Q291bnQ7DQorDQorICAgICAgICBpbnQgdG1wX2RlbGV0ZWRD
b3VudCA9IG1fZGVsZXRlZENvdW50Ow0KKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5t
X2RlbGV0ZWRDb3VudDsNCisgICAgICAgIG90aGVyLm1fZGVsZXRlZENvdW50ID0gdG1wX2RlbGV0
ZWRDb3VudDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4mIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpDQorICAgIHsNCisgICAgICAgIEhh
c2hUYWJsZSB0bXAob3RoZXIpOw0KKyAgICAgICAgc3dhcCh0bXApOw0KKyAgICAgICAgcmV0dXJu
ICp0aGlzOw0KKyAgICB9DQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkg
Y29uc3QNCisgICAgew0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgp
Ow0KKyAgICAgICAgYXNzZXJ0KCFzaG91bGRFeHBhbmQoKSk7DQorICAgICAgICBhc3NlcnQoIXNo
b3VsZFNocmluaygpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm47DQorDQorICAgICAgICBpbnQg
Y291bnQgPSAwOw0KKyAgICAgICAgaW50IGRlbGV0ZWRDb3VudCA9IDA7DQorICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG1fdGFibGVTaXplOyArK2opIHsNCisgICAgICAgICAgICBWYWx1ZVR5
cGUgKmVudHJ5ID0gbV90YWJsZSArIGo7DQorICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAgICAgICAgaWYg
KGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7DQorICAgICAgICAgICAgICAgICsrZGVsZXRlZENv
dW50Ow0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorDQorICAg
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50
cnkpKTsNCisgICAgICAgICAgICBhc3NlcnQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7DQorICAg
ICAgICAgICAgKytjb3VudDsNCisgICAgICAgIH0NCisNCisgICAgICAgIGFzc2VydChjb3VudCA9
PSBtX2tleUNvdW50KTsNCisgICAgICAgIGFzc2VydChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVk
Q291bnQpOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGVTaXplID49IG1fbWluVGFibGVTaXplKTsN
CisgICAgICAgIGFzc2VydChtX3RhYmxlU2l6ZU1hc2spOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFi
bGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOw0KKyAgICB9DQorDQorI2VuZGlmIC8vIENI
RUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0
b3JzKCkNCisgICAgew0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5leHQ7DQorICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7DQorICAg
ICAgICAgICAgbmV4dCA9IHAtPm1fbmV4dDsNCisgICAgICAgICAgICBwLT5tX3RhYmxlID0gMDsN
CisgICAgICAgICAgICBwLT5tX25leHQgPSAwOw0KKyAgICAgICAgICAgIHAtPm1fcHJldmlvdXMg
PSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pdGVyYXRvcnMgPSAwOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiB0YWJsZSwN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQ0KKyAgICB7DQorICAgICAgICBp
dC0+bV90YWJsZSA9IHRhYmxlOw0KKyAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOw0KKw0KKyAg
ICAgICAgLy8gSW5zZXJ0IGl0ZXJhdG9yIGF0IGhlYWQgb2YgZG91Ymx5LWxpbmtlZCBsaXN0IG9m
IGl0ZXJhdG9ycy4NCisgICAgICAgIGlmICghdGFibGUpIHsNCisgICAgICAgICAgICBpdC0+bV9u
ZXh0ID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYXNzZXJ0KHRhYmxlLT5t
X2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAgaXQtPm1fbmV4dCA9IHRhYmxlLT5tX2l0
ZXJhdG9yczsNCisgICAgICAgICAgICB0YWJsZS0+bV9pdGVyYXRvcnMgPSBpdDsNCisgICAgICAg
ICAgICBpZiAoaXQtPm1fbmV4dCkgew0KKyAgICAgICAgICAgICAgICBhc3NlcnQoIWl0LT5tX25l
eHQtPm1fcHJldmlvdXMpOw0KKyAgICAgICAgICAgICAgICBpdC0+bV9uZXh0LT5tX3ByZXZpb3Vz
ID0gaXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
DQorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpDQor
ICAgIHsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorDQorICAg
ICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJvbSBkb3VibHktbGlua2VkIGxpc3Qgb2YgaXRlcmF0
b3JzLg0KKyAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgew0KKyAgICAgICAgICAgIGFzc2VydCgh
aXQtPm1fbmV4dCk7DQorICAgICAgICAgICAgYXNzZXJ0KCFpdC0+bV9wcmV2aW91cyk7DQorICAg
ICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7DQorICAgICAgICAg
ICAgICAgIGFzc2VydChpdC0+bV9uZXh0LT5tX3ByZXZpb3VzID09IGl0KTsNCisgICAgICAgICAg
ICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9IGl0LT5tX3ByZXZpb3VzOw0KKyAgICAgICAg
ICAgIH0NCisgICAgICAgICAgICBpZiAoaXQtPm1fcHJldmlvdXMpIHsNCisgICAgICAgICAgICAg
ICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAg
ICAgIGFzc2VydChpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0KTsNCisgICAgICAgICAgICAg
ICAgaXQtPm1fcHJldmlvdXMtPm1fbmV4dCA9IGl0LT5tX25leHQ7DQorICAgICAgICAgICAgfSBl
bHNlIHsNCisgICAgICAgICAgICAgICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9
PSBpdCk7DQorICAgICAgICAgICAgICAgIGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9IGl0LT5t
X25leHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaXQtPm1fdGFi
bGUgPSAwOw0KKyAgICAgICAgaXQtPm1fbmV4dCA9IDA7DQorICAgICAgICBpdC0+bV9wcmV2aW91
cyA9IDA7DQorICAgIH0NCisNCisjZW5kaWYgLy8gQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0K
Kw0KKyAgICAvLyBpdGVyYXRvciBhZGFwdGVycw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlciB7DQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcihj
b25zdCB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciYgaW1wbCkgOiBtX2lt
cGwoaW1wbCkge30NCisNCisgICAgICAgIGNvbnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gKGNvbnN0IFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9DQorICAgICAgICBjb25zdCBW
YWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KKyAgICAgICAg
Y29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0NCisN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyAr
K21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlv
bmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFk
YXB0ZXIgew0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1l
IEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KKw0KKyAg
ICAgICAgVmFsdWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2ltcGwu
Z2V0KCk7IH0NCisgICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KmdldCgpOyB9DQorICAgICAgICBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVy
biBnZXQoKTsgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRv
cisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsr
IGludGVudGlvbmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIHsNCisgICAgICAg
ICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOw0K
KyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdHlwZW5hbWUg
SGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5tX2ltcGwg
IT0gYi5tX2ltcGw7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4NCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYg
YikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9
DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBj
b25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAg
IHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsNCisgICAgfQ0KKw0KKyAgICAvLyByZWZlcmVu
Y2UgY291bnQgbWFuYWdlcg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzPiBzdHJ1Y3QgTmVlZHNSZWYgew0KKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBWYWx1ZVRyYWl0czo6bmVlZHNSZWYgJiYgIVZhbHVl
U3RvcmFnZVRyYWl0czo6bmVlZHNSZWY7DQorICAgIH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZpcnN0VHJhaXRzLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHMsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cz4NCisgICAgc3RydWN0IE5lZWRzUmVmPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRy
YWl0cywgU2Vjb25kVHJhaXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgRmlyc3RTdG9yYWdl
VHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OlNl
Y29uZFRyYWl0cyBTZWNvbmRTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgZmlyc3ROZWVkc1JlZiA9IE5lZWRzUmVmPEZpcnN0VHJhaXRzLCBGaXJzdFN0b3JhZ2VUcmFp
dHM+Ojp2YWx1ZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNlY29uZE5lZWRzUmVmID0g
TmVlZHNSZWY8U2Vjb25kVHJhaXRzLCBTZWNvbmRTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZpcnN0TmVlZHNSZWYgfHwgc2Vjb25kTmVl
ZHNSZWY7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPGJvb2wgbmVlZHNSZWYsIHR5cGVuYW1l
IFZhbHVlVHJhaXRzPiBzdHJ1Y3QgUmVmQ291bnRlckJhc2U7DQorDQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUmVmQ291bnRlckJhc2U8ZmFsc2UsIFZh
bHVlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFp
dFR5cGUgVmFsdWVUeXBlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlVHlw
ZSYpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3QgVmFsdWVUeXBlJikgeyB9
DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBz
dHJ1Y3QgUmVmQ291bnRlckJhc2U8dHJ1ZSwgVmFsdWVUcmFpdHM+IHsNCisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAgICBz
dGF0aWMgdm9pZCByZWYoY29uc3QgVmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpyZWYoKihj
b25zdCBWYWx1ZVR5cGUqKSZ2KTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3Qg
VmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpkZXJlZigqKGNvbnN0IFZhbHVlVHlwZSopJnYp
OyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBl
bmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+IHN0cnVjdCBSZWZDb3VudGVyIHsNCisgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlU3Rv
cmFnZVR5cGU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc1JlZiA9IE5lZWRzUmVm
PFZhbHVlVHJhaXRzLCBWYWx1ZVN0b3JhZ2VUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5cGVk
ZWYgUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIFZhbHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAg
c3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6cmVmKCoo
Y29uc3QgVmFsdWVUeXBlKikmdik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmKGNvbnN0
IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6ZGVyZWYoKihjb25zdCBWYWx1ZVR5cGUqKSZ2
KTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlw
ZW5hbWUgU2Vjb25kVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+DQorICAgIHN0
cnVjdCBSZWZDb3VudGVyPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRyYWl0cywgU2Vjb25kVHJh
aXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEZp
cnN0VHJhaXRzOjpUcmFpdFR5cGUgRmlyc3RUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZSBTZWNvbmRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEZpcnN0U3RvcmFnZVRyYWl0
czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpTZWNvbmRU
cmFpdHMgU2Vjb25kU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFs
dWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGZpcnN0TmVlZHNSZWYgPSBOZWVkc1JlZjxGaXJzdFRyYWl0cywgRmly
c3RTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzZWNv
bmROZWVkc1JlZiA9IE5lZWRzUmVmPFNlY29uZFRyYWl0cywgU2Vjb25kU3RvcmFnZVRyYWl0cz46
OnZhbHVlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxmaXJzdE5lZWRzUmVmLCBG
aXJzdFRyYWl0cz4gRmlyc3RCYXNlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxz
ZWNvbmROZWVkc1JlZiwgU2Vjb25kVHJhaXRzPiBTZWNvbmRCYXNlOw0KKyAgICAgICAgc3RhdGlj
IHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsNCisgICAgICAgICAgICBGaXJz
dEJhc2U6OnJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmlyc3QpOw0KKyAgICAgICAgICAgIFNl
Y29uZEJhc2U6OnJlZigqKGNvbnN0IFNlY29uZFR5cGUqKSZ2LnNlY29uZCk7DQorICAgICAgICB9
DQorICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZihjb25zdCBWYWx1ZVN0b3JhZ2VUeXBlJiB2KSB7
DQorICAgICAgICAgICAgRmlyc3RCYXNlOjpkZXJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmly
c3QpOw0KKyAgICAgICAgICAgIFNlY29uZEJhc2U6OmRlcmVmKCooY29uc3QgU2Vjb25kVHlwZSop
JnYuc2Vjb25kKTsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBu
ZWVkc1JlZiwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+IHN0
cnVjdCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHN0cnVjdCBIYXNoVGFi
bGVSZWZDb3VudGVyQmFzZTxmYWxzZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+DQorICAg
IHsNCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAg
ICAgICBzdGF0aWMgdm9pZCBkZXJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAgIH07DQor
DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJh
aXRzPg0KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxl
VHlwZSwgVmFsdWVUcmFpdHM+DQorICAgIHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aFRhYmxlVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFJlZkNvdW50
ZXI8VmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHJhaXRzPiBWYWx1
ZVJlZkNvdW50ZXI7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWZBbGwoSGFzaFRhYmxlVHlwZSYp
Ow0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZBbGwoSGFzaFRhYmxlVHlwZSYpOw0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1
ZVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTx0cnVlLCBIYXNoVGFi
bGVUeXBlLCBWYWx1ZVRyYWl0cz46OnJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAg
ew0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAg
IFZhbHVlUmVmQ291bnRlcjo6cmVmKCppdCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHZvaWQgSGFz
aFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+Ojpk
ZXJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAgew0KKyAgICAgICAgaXRlcmF0b3Ig
ZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gdGFibGUuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAgIFZhbHVlUmVmQ291bnRlcjo6ZGVy
ZWYoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
LCB0eXBlbmFtZSBWYWx1ZVRyYWl0cz4gc3RydWN0IEhhc2hUYWJsZVJlZkNvdW50ZXIgew0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYgPSBOZWVkc1JlZjxWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmQWxsKEhhc2hUYWJsZVR5
cGUmIHRhYmxlKSB7IEJhc2U6OnJlZkFsbCh0YWJsZSk7IH0NCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlcmVmQWxsKEhhc2hUYWJsZVR5cGUmIHRhYmxlKSB7IEJhc2U6OmRlcmVmQWxsKHRhYmxlKTsg
fQ0KKyAgICB9Ow0KKw0KK30gLy8gbmFtZXNwYWNlIFdURg0KKw0KKyNlbmRpZiAvLyBLWE1MQ09S
RV9IQVNIX1RBQkxFX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRz
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRzLmgJ
KHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaFRyYWl0cy5oCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxOTUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2lj
LW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGli
cmFyaWVzDQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
DQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLg0KKyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQor
I2RlZmluZSBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQorDQorI2luY2x1ZGUgIkhhc2hGdW5jdGlv
bnMuaCINCisjaW5jbHVkZSA8dXRpbGl0eT4NCisNCituYW1lc3BhY2UgV1RGIHsNCisNCisgICAg
dXNpbmcgc3RkOjpwYWlyOw0KKyAgICB1c2luZyBzdGQ6Om1ha2VfcGFpcjsNCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElzSW50ZWdlciAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVn
ZXI8Ym9vbD4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGNoYXI+ICAgICAgICAgICAgICAg
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IElzSW50ZWdlcjxzaWduZWQgY2hhcj4gICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQg
Y2hhcj4gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNob3J0PiAgICAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdl
cjx1bnNpZ25lZCBzaG9ydD4gICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8aW50PiAgICAgICAgICAgICAgICB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGludD4gICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxsb25nPiAgICAg
ICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgbG9uZz4gICAgICB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2Vy
PGxvbmcgbG9uZz4gICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+IHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVn
ZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U7DQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8dHJ1ZSwgVD4gew0K
KyAgICAgICAgdHlwZWRlZiBUIFRyYWl0VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRyYWl0
czx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQor
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7DQorICAg
IH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8ZmFsc2UsIFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUcmFpdFR5cGU7DQorICAgICAgICB0
eXBlZGVmIEhhc2hUcmFpdHM8VD4gU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4gew0KKyAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIFQoKTsgfQ0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYg
PSBmYWxzZTsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhh
c2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7IH07DQorDQorICAgIC8vIHNpZ25lZCBp
bnRlZ2VyIHRyYWl0cyBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBhbGwgdXNlcyBzaW5jZSB0
aGV5IGRpc2FsbG93IDAgYW5kIC0xIGFzIGtleXMNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxzaWduZWQgY2hhcj4gOiBHZW5lcmljSGFzaFRyYWl0czxpbnQ+IHsNCisgICAgICAg
IHN0YXRpYyBzaWduZWQgY2hhciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPHNob3J0PiA6IEdlbmVyaWNIYXNo
VHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIHNob3J0IGRlbGV0ZWRWYWx1ZSgpIHsgcmV0
dXJuIC0xOyB9DQorICAgIH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8aW50
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIGludCBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8bG9uZz4gew0KKyAgICAgICAgc3Rh
dGljIGxvbmcgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisgICAgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxsb25nIGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8
bG9uZyBsb25nPiB7DQorICAgICAgICBzdGF0aWMgbG9uZyBkZWxldGVkVmFsdWUoKSB7IHJldHVy
biAtMTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxQKj4gOiBHZW5lcmljSGFzaFRyYWl0czxQKj4gew0KKyAgICAgICAgdHlwZWRlZiBI
YXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9y
YWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7DQorICAgICAgICBzdGF0aWMgUCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxQKj4oLTEpOyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBIYXNoVHJhaXRzPFJlZlB0cjxQPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8UmVmUHRy
PFA+ID4gew0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNp
emVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc1JlZiA9IHRydWU7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWYoY29uc3QgUmVm
UHRyPFA+JiBwKSB7IGlmIChwKSBwLT5yZWYoKTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVy
ZWYoY29uc3QgUmVmUHRyPFA+JiBwKSB7IGlmIChwKSBwLT5kZXJlZigpOyB9DQorICAgIH07DQor
DQorICAgIC8vIHRlbXBsYXRlIHRvIHNldCBkZWxldGVkIHZhbHVlcw0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBEZWxldGVkVmFsdWVBc3NpZ25lciB7DQorICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUodHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5
cGUmIGxvY2F0aW9uKSB7IGxvY2F0aW9uID0gVHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0KKyAg
ICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGlubGlu
ZSB2b2lkIGFzc2lnbkRlbGV0ZWQoVCYgbG9jYXRpb24pDQorICAgIHsNCisgICAgICAgIERlbGV0
ZWRWYWx1ZUFzc2lnbmVyPFRyYWl0cz46OmFzc2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQor
ICAgIH0NCisNCisgICAgLy8gc3BlY2lhbCB0cmFpdHMgZm9yIHBhaXJzLCBoZWxwZnVsIGZvciB0
aGVpciB1c2UgaW4gSGFzaE1hcCBpbXBsZW1lbnRhdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGaXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPiBzdHJ1Y3QgUGFpckhhc2hU
cmFpdHM7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnLCB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHNBcmc+DQorICAgIHN0cnVjdCBQYWlyQmFzZUhhc2hUcmFpdHMgOiBHZW5l
cmljSGFzaFRyYWl0czxwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5
cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPiA+IHsNCisgICAgICAgIHR5cGVkZWYg
Rmlyc3RUcmFpdHNBcmcgRmlyc3RUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIFNlY29uZFRyYWl0
c0FyZyBTZWNvbmRUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIHBhaXI8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlRyYWl0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+IFRyYWl0
VHlwZTsNCisNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlN0b3JhZ2VUcmFpdHMsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6U3RvcmFnZVRyYWl0
cz4gU3RvcmFnZVRyYWl0czsNCisNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6
OmVtcHR5VmFsdWVJc1plcm87DQorDQorICAgICAgICBzdGF0aWMgVHJhaXRUeXBlIGVtcHR5VmFs
dWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoRmlyc3RUcmFp
dHM6OmVtcHR5VmFsdWUoKSwgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlKCkpOw0KKyAgICAgICAg
fQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlwZW5h
bWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUGFpckhhc2hUcmFpdHMgOiBQYWlyQmFzZUhh
c2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gew0KKyAgICAgICAgdHlwZWRlZiBw
YWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0
czo6VHJhaXRUeXBlPiBUcmFpdFR5cGU7DQorDQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gRmlyc3RUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgU2Vjb25k
VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uOw0KKw0KKyAgICAgICAgc3RhdGljIFRyYWl0VHlwZSBk
ZWxldGVkVmFsdWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBUcmFpdFR5cGUo
Rmlyc3RUcmFpdHM6OmRlbGV0ZWRWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7
DQorICAgICAgICB9DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUo
VHJhaXRUeXBlJiBsb2NhdGlvbikNCisgICAgICAgIHsNCisgICAgICAgICAgICBhc3NpZ25EZWxl
dGVkPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIEZpcnN0VHJhaXRzPihsb2NhdGlv
bi5maXJzdCk7DQorICAgICAgICAgICAgbG9jYXRpb24uc2Vjb25kID0gU2Vjb25kVHJhaXRzOjpl
bXB0eVZhbHVlKCk7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZpcnN0LCB0eXBlbmFtZSBTZWNvbmQ+DQorICAgIHN0cnVjdCBIYXNoVHJhaXRzPHBhaXI8
Rmlyc3QsIFNlY29uZD4gPiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEZpcnN0
PiwgSGFzaFRyYWl0czxTZWNvbmQ+ID4geyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
aXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZh
bHVlQXNzaWduZXI8UGFpckhhc2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gPg0K
KyAgICB7DQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjx0eXBl
bmFtZSBGaXJzdFRyYWl0czo6VHJhaXRUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OlRyYWl0
VHlwZT4mIGxvY2F0aW9uKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIFBhaXJIYXNoVHJhaXRz
PEZpcnN0VHJhaXRzLCBTZWNvbmRUcmFpdHM+Ojphc3NpZ25EZWxldGVkVmFsdWUobG9jYXRpb24p
Ow0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwg
dHlwZW5hbWUgU2Vjb25kPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZhbHVlQXNzaWduZXI8SGFzaFRy
YWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID4gPg0KKyAgICB7DQorICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjxGaXJzdCwgU2Vjb25kPiYgbG9jYXRpb24pDQorICAg
ICAgICB7DQorICAgICAgICAgICAgSGFzaFRyYWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID46OmFz
c2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAg
IC8vIGhhc3NoIGZ1bmN0aW9ucyBhbmQgdHJhaXRzIHRoYXQgYXJlIGVxdWl2YWxlbnQgKGZvciBj
b2RlIHNoYXJpbmcpDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IFRyYWl0c0FyZz4gc3RydWN0IEhhc2hLZXlTdG9yYWdlVHJhaXRzIHsNCisgICAgICAgIHR5cGVk
ZWYgSGFzaEFyZyBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBUcmFpdHNBcmcgVHJhaXRzOw0KKyAg
ICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFp
dHM8UHRySGFzaDxQKj4sIEhhc2hUcmFpdHM8UCo+ID4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBJbnRUeXBlczxzaXplb2YoUCopPjo6U2lnbmVkVHlwZSBJbnRUeXBlOw0KKyAgICAgICAg
dHlwZWRlZiBJbnRIYXNoPEludFR5cGU+IEhhc2g7DQorICAgICAgICB0eXBlZGVmIEhhc2hUcmFp
dHM8SW50VHlwZT4gVHJhaXRzOw0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFpdHM8UHRySGFzaDxSZWZQdHI8UD4gPiwgSGFzaFRyYWl0
czxSZWZQdHI8UD4gPiA+IHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW50VHlwZXM8c2l6
ZW9mKFAqKT46OlNpZ25lZFR5cGUgSW50VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSW50SGFzaDxJ
bnRUeXBlPiBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPEludFR5cGU+IFRyYWl0
czsNCisgICAgfTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6Okhhc2hU
cmFpdHM7DQordXNpbmcgV1RGOjpQYWlySGFzaFRyYWl0czsNCisNCisjZW5kaWYgLy8gS1hNTENP
UkVfSEFTSF9UUkFJVFNfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2l0ZXJhdG9y
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlz
aW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlzaW9uIDAp
DQpAQCAtMCwwICsxLDE3MCBAQA0KKy8vIFR5cGVzIHVzZWQgaW4gaXRlcmF0b3IgaW1wbGVtZW50
YXRpb24gLSotIEMrKyAtKi0NCisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8g
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg
dGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u
IDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhj
ZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUN
CisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVy
IGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5l
IGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUg
YW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRo
aXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1
dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBv
dGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkN
CisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENv
cHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQ
ZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMg
c29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhl
cmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRo
YXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisg
KiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBt
YWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhp
cyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIg
d2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHly
aWdodCAoYykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1z
LCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29u
IEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJp
bGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlk
ZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisN
CisvKiogQGZpbGUgc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaA0KKyAqICBUaGlzIGlzIGFuIGlu
dGVybmFsIGhlYWRlciBmaWxlLCBpbmNsdWRlZCBieSBvdGhlciBsaWJyYXJ5IGhlYWRlcnMuDQor
ICogIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gdXNlIGl0IGRpcmVjdGx5Lg0KKyAqDQorICog
IFRoaXMgZmlsZSBjb250YWlucyBhbGwgb2YgdGhlIGdlbmVyYWwgaXRlcmF0b3ItcmVsYXRlZCB1
dGlsaXR5IHR5cGVzLA0KKyAqICBzdWNoIGFzIGl0ZXJhdG9yX3RyYWl0cyBhbmQgc3RydWN0IGl0
ZXJhdG9yLg0KKyAqLw0KKw0KKyNpZm5kZWYgX0lURVJBVE9SX0JBU0VfVFlQRVNfSA0KKyNkZWZp
bmUgX0lURVJBVE9SX0JBU0VfVFlQRVNfSCAxDQorDQorLy8jcHJhZ21hIEdDQyBzeXN0ZW1faGVh
ZGVyDQorDQorbmFtZXNwYWNlIHN0ZA0KK3sNCisgIC8vQHsNCisgIC8qKg0KKyAgICogIEBkZWZn
cm91cCBpdGVyYXRvcl90YWdzIEl0ZXJhdG9yIFRhZ3MNCisgICAqICBUaGVzZSBhcmUgZW1wdHkg
dHlwZXMsIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGl0ZXJhdG9ycy4gIFRoZQ0KKyAg
ICogIGRpc3RpbmN0aW9uIGlzIG5vdCBtYWRlIGJ5IHdoYXQgdGhleSBjb250YWluLCBidXQgc2lt
cGx5IGJ5IHdoYXQgdGhleQ0KKyAgICogIGFyZS4gIERpZmZlcmVudCB1bmRlcmx5aW5nIGFsZ29y
aXRobXMgY2FuIHRoZW4gYmUgdXNlZCBiYXNlZCBvbiB0aGUNCisgICAqICBkaWZmZXJlbnQgb3Bl
cmF0aW9ucyBzdXBwb3JldGQgYnkgZGlmZmVyZW50IGl0ZXJhdG9yIHR5cGVzLg0KKyAgKi8NCisg
IC8vLyAgTWFya2luZyBpbnB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9Ow0KKyAgLy8vICBNYXJraW5nIG91dHB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3Qgb3V0
cHV0X2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vLyBGb3J3YXJkIGl0ZXJhdG9ycyBzdXBwb3J0IGEg
c3VwZXJzZXQgb2YgaW5wdXQgaXRlcmF0b3Igb3BlcmF0aW9ucy4NCisgIHN0cnVjdCBmb3J3YXJk
X2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcge307DQorICAvLy8gQmlk
aXJlY3Rpb25hbCBpdGVyYXRvcnMgc3VwcG9ydCBhIHN1cGVyc2V0IG9mIGZvcndhcmQgaXRlcmF0
b3INCisgIC8vLyBvcGVyYXRpb25zLg0KKyAgc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9Ow0KKyAgLy8vIFJhbmRvbS1hY2Nl
c3MgaXRlcmF0b3JzIHN1cHBvcnQgYSBzdXBlcnNldCBvZiBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9y
DQorICAvLy8gb3BlcmF0aW9ucy4NCisgIHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vQH0NCisNCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgQ29tbW9uICVpdGVyYXRvciBjbGFzcy4NCisgICAqDQor
ICAgKiAgVGhpcyBjbGFzcyBkb2VzIG5vdGhpbmcgYnV0IGRlZmluZSBuZXN0ZWQgdHlwZWRlZnMu
ICAlSXRlcmF0b3IgY2xhc3Nlcw0KKyAgICogIGNhbiBpbmhlcml0IGZyb20gdGhpcyBjbGFzcyB0
byBzYXZlIHNvbWUgd29yay4gIFRoZSB0eXBlZGVmcyBhcmUgdGhlbg0KKyAgICogIHVzZWQgaW4g
c3BlY2lhbGl6YXRpb25zIGFuZCBvdmVybG9hZGluZy4NCisgICAqDQorICAgKiAgSW4gcGFydGlj
dWxhciwgdGhlcmUgYXJlIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHJlcXVpcmVtZW50
cw0KKyAgICogIHN1Y2ggYXMgQGMgb3BlcmF0b3IrKyBhbmQgdGhlIGxpa2UuICAoSG93IGNvdWxk
IHRoZXJlIGJlPykNCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2F0ZWdvcnksIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0gcHRyZGlmZl90LA0KKyAgICAgICAgICAgdHlw
ZW5hbWUgX1BvaW50ZXIgPSBfVHAqLCB0eXBlbmFtZSBfUmVmZXJlbmNlID0gX1RwJj4NCisgICAg
c3RydWN0IGl0ZXJhdG9yDQorICAgIHsNCisgICAgICAvLy8gT25lIG9mIHRoZSBAbGluayBpdGVy
YXRvcl90YWdzIHRhZyB0eXBlc0BlbmRsaW5rLg0KKyAgICAgIHR5cGVkZWYgX0NhdGVnb3J5ICBp
dGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICAvLy8gVGhlIHR5cGUgInBvaW50ZWQgdG8iIGJ5IHRo
ZSBpdGVyYXRvci4NCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlwZTsNCisgICAg
ICAvLy8gRGlzdGFuY2UgYmV0d2VlbiBpdGVyYXRvcnMgaXMgcmVwcmVzZW50ZWQgYXMgdGhpcyB0
eXBlLg0KKyAgICAgIHR5cGVkZWYgX0Rpc3RhbmNlICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAg
Ly8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgcG9pbnRlci10by12YWx1ZV90eXBlLg0KKyAgICAg
IHR5cGVkZWYgX1BvaW50ZXIgICBwb2ludGVyOw0KKyAgICAgIC8vLyBUaGlzIHR5cGUgcmVwcmVz
ZW50cyBhIHJlZmVyZW5jZS10by12YWx1ZV90eXBlLg0KKyAgICAgIHR5cGVkZWYgX1JlZmVyZW5j
ZSByZWZlcmVuY2U7DQorICAgIH07DQorDQorICAvKioNCisgICAqICBUaGlzIGNsYXNzIGRvZXMg
bm90aGluZyBidXQgZGVmaW5lIG5lc3RlZCB0eXBlZGVmcy4gIFRoZSBnZW5lcmFsDQorICAgKiAg
dmVyc2lvbiBzaW1wbHkgImZvcndhcmRzIiB0aGUgbmVzdGVkIHR5cGVkZWZzIGZyb20gdGhlIEl0
ZXJhdG9yDQorICAgKiAgYXJndW1lbnQuICBTcGVjaWFsaXplZCB2ZXJzaW9ucyBmb3IgcG9pbnRl
cnMgYW5kIHBvaW50ZXJzLXRvLWNvbnN0DQorICAgKiAgcHJvdmlkZSB0aWdodGVyLCBtb3JlIGNv
cnJlY3Qgc2VtYW50aWNzLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4N
CisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0cw0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5Ow0KKyAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUg
ICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBv
aW50ZXIgICAgICAgICAgIHBvaW50ZXI7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0
b3I6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPg0KKyAgICB7
DQorICAgICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsNCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsNCisgICAgICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyOw0KKyAgICAgIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxjb25zdCBfVHAqPg0KKyAgICB7DQorICAgICAgdHlwZWRlZiByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICB0eXBlZGVmIF9U
cCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRy
ZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsNCisgICAgICB0eXBlZGVm
IGNvbnN0IF9UcCogICAgICAgICAgICAgICAgICBwb2ludGVyOw0KKyAgICAgIHR5cGVkZWYgY29u
c3QgX1RwJiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIC8qKg0K
KyAgICogIEBpZiBtYWludA0KKyAgICogIFRoaXMgZnVuY3Rpb24gaXMgbm90IGEgcGFydCBvZiB0
aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyBzeW50YWN0aWMNCisgICAqICBzdWdhciBmb3IgaW50ZXJu
YWwgbGlicmFyeSB1c2Ugb25seS4NCisgICAqICBAZW5kaWYNCisgICovDQorICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcj4NCisgICAgaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRl
cj46Oml0ZXJhdG9yX2NhdGVnb3J5DQorICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0
ZXImKQ0KKyAgICB7IHJldHVybiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVy
YXRvcl9jYXRlZ29yeSgpOyB9DQorDQorfSAvLyBuYW1lc3BhY2Ugc3RkDQorDQorI2VuZGlmIC8q
IF9JVEVSQVRPUl9CQVNFX1RZUEVTX0ggKi8NCisNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9uZXcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9uZXcJKHJl
dmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbmV3CShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSBAQA0KKyNpbmNsdWRlIDxlMzJjbW4uaD4NClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNvYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsNyArMjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KICNpbmNsdWRlIDxOUF9qc29iamVjdC5oPgogCkBAIC0zNSwxNSArMzUsMTUgQEANCiAKIHN0
YXRpYyBLSlM6Okxpc3QgbGlzdEZyb21WYXJpYW50QXJncyhLSlM6OkV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgTlBWYXJpYW50ICphcmdzLCB1bnNpZ25lZCBhcmdDb3VudCkKIHsKLSAgICBLSlM6Okxp
c3QgYUxpc3Q7IAorICAgIEtKUzo6TGlzdCBhTGlzdDsKICAgICB1bnNpZ25lZCBpOwogICAgIGNv
bnN0IE5QVmFyaWFudCAqdiA9IGFyZ3M7Ci0gICAgCisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJn
Q291bnQ7IGkrKykgewogICAgICAgICBhTGlzdC5hcHBlbmQgKGNvbnZlcnROUFZhcmlhbnRUb1Zh
bHVlIChleGVjLCB2KSk7CiAgICAgICAgIHYrKzsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
YUxpc3Q7CiB9CiAKQEAgLTU3LDEwICs1NywxMCBAQA0KICAgICBmcmVlIChvYmopOwogfQogCi1z
dGF0aWMgTlBDbGFzcyBfamF2YXNjcmlwdENsYXNzID0geyAKK3N0YXRpYyBOUENsYXNzIF9qYXZh
c2NyaXB0Q2xhc3MgPSB7CiAgICAgMSwKLSAgICBqc0FsbG9jYXRlLCAKLSAgICAoTlBEZWFsbG9j
YXRlRnVuY3Rpb25QdHIpanNEZWFsbG9jYXRlLCAKKyAgICBqc0FsbG9jYXRlLAorICAgIChOUERl
YWxsb2NhdGVGdW5jdGlvblB0cilqc0RlYWxsb2NhdGUsCiAgICAgMCwKICAgICAwLAogICAgIDAs
CkBAIC03MywxMjcgKzczLDEzMCBAQA0KIAogTlBDbGFzcyAqTlBTY3JpcHRPYmplY3RDbGFzcyA9
ICZfamF2YXNjcmlwdENsYXNzOwogCi1zdGF0aWMgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5Q
SWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpCi17Ci0gICAgTlBVVEYxNiAqbWV0aG9kTmFt
ZTsKLSAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7Ci0gICAgCi0gICAgY29udmVydFVURjhU
b1VURjE2IChuYW1lLCAtMSwgJm1ldGhvZE5hbWUsICZVVEYxNkxlbmd0aCk7IC8vIHJlcXVpcmVz
IGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCi0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyICgo
Y29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOwotICAgIGZyZWUgKCh2
b2lkICopbWV0aG9kTmFtZSk7Ci0gICAgCi0gICAgcmV0dXJuIGlkZW50aWZpZXI7Ci19CiAKIHN0
YXRpYyBib29sIF9pc1NhZmVTY3JpcHQoSmF2YVNjcmlwdE9iamVjdCAqb2JqKQogewogICAgIGlm
IChvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQpIHsKLQlJbnRlcnByZXRlciAqb3JpZ2luSW50
ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCk7Ci0J
aWYgKG9yaWdpbkludGVycHJldGVyKSB7Ci0JICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+
aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwotCX0K
KyAgICBJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCk7CisgICAgaWYgKG9yaWdpbkludGVycHJldGVyKSB7Cisg
ICAgICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwogICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK0VYUE9SVF9DCiBOUE9iamVjdCAqX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKE5Q
UCBucHAsIEtKUzo6T2JqZWN0SW1wICppbXAsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKmV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEph
dmFTY3JpcHRPYmplY3QgKilfTlBOX0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xh
c3MpOworICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopTlBO
X0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xhc3MpOwogCiAgICAgb2JqLT5pbXAg
PSBpbXA7Ci0gICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsgICAgCi0gICAgb2JqLT5leGVjdXRpb25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4
dDsgICAgCisgICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsKKyAgICBvYmotPmV4ZWN1dGlvbkNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0Owog
CiAgICAgYWRkTmF0aXZlUmVmZXJlbmNlIChleGVjdXRpb25Db250ZXh0LCBpbXApOwotICAgIAor
CiAgICAgcmV0dXJuIChOUE9iamVjdCAqKW9iajsKIH0KIAotYm9vbCBfTlBOX0ludm9rZURlZmF1
bHQgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90
IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKK0VYUE9SVF9DCitib29sIE5QTl9JbnZva2VE
ZWZhdWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50
MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9
PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAgIC8vIE5vIG5vdGlvbiBvZiBhIGRlZmF1
bHQgZnVuY3Rpb24gb24gSlMgb2JqZWN0cy4gIEp1c3QgcmV0dXJuIGZhbHNlLCBjYW4ndCBoYW5k
bGUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2Jq
ID0gKEphdmFTY3JpcHRPYmplY3QgKilvOworICAgICAgICBPYmplY3RJbXAgKmZ1bmNJbXAgPSBv
YmotPmltcDsKKyAgICAgICAgaWYgKCFmdW5jSW1wLT5pbXBsZW1lbnRzQ2FsbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgT2JqZWN0
IHRoaXNPYmogPSBPYmplY3QoY29uc3RfY2FzdDxPYmplY3RJbXAqPihvYmotPmltcCkpOworICAg
ICAgICBMaXN0IGFyZ0xpc3QgPSBsaXN0RnJvbVZhcmlhbnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0Nv
dW50KTsKKyAgICAgICAgVmFsdWUgcmVzdWx0ViA9IE9iamVjdChmdW5jSW1wKS5jYWxsIChleGVj
LCB0aGlzT2JqLCBhcmdMaXN0KTsKKworICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhl
IHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgY29udmVydFZhbHVlVG9OUFZh
cmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGVsc2UgewogICAgICAgICBpZiAoby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KSB7CiAg
ICAgICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0IChvLCBhcmdzLCBhcmdD
b3VudCwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIF9OUE5fSW52b2tlIChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQs
IE5QVmFyaWFudCAqcmVzdWx0KQorRVhQT1JUX0MKK2Jvb2wgTlBOX0ludm9rZSAoTlBQIG5wcCwg
TlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFy
Z3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKIHsKICAgICBpZiAoby0+
X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVj
dCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAgCi0JaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKLQkgICAgCisgICAgICAgIEphdmFTY3Jp
cHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKKworICAgIGlmICghX2lzU2Fm
ZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgUHJpdmF0ZUlk
ZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKiltZXRob2ROYW1lOwogICAgICAgICBp
ZiAoIWktPmlzU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Ci0JLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgotCWlmIChtZXRob2ROYW1lID09
IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcigiZXZhbCIpKSB7Ci0JICAgIGlmIChhcmdDb3VudCAh
PSAxKQotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIGlmIChhcmdzWzBdLnR5cGUgIT0gTlBWYXJpYW50
VHlwZV9TdHJpbmcpCi0JCXJldHVybiBmYWxzZTsKLQkgICAgCi0JICAgIHJldHVybiBfTlBOX0V2
YWx1YXRlIChucHAsIG8sIChOUFN0cmluZyAqKSZhcmdzWzBdLnZhbHVlLnN0cmluZ1ZhbHVlLCBy
ZXN1bHQpOwotCX0KLQllbHNlIHsKLQkgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBvYmplY3Qu
Ci0JICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0
ZXIoKS0+Z2xvYmFsRXhlYygpOwotCSAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKLQkgICAgVmFs
dWUgZnVuYyA9IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZykpOwogCi0JICAgIGlmIChmdW5jLmlzTnVsbCgpKSB7Ci0JCU5QTl9J
bml0aWFsaXplVmFyaWFudEFzTnVsbChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0g
ZWxzZSBpZiAoZnVuYy50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkgewotCQlOUE5fSW5pdGlhbGl6
ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0gZWxz
ZSB7Ci0JCS8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KLQkJT2JqZWN0SW1wICpmdW5jSW1w
ID0gc3RhdGljX2Nhc3Q8T2JqZWN0SW1wKj4oZnVuYy5pbXAoKSk7Ci0JCU9iamVjdCB0aGlzT2Jq
ID0gT2JqZWN0KGNvbnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKLQkJTGlzdCBhcmdM
aXN0ID0gbGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCk7Ci0JCVZhbHVl
IHJlc3VsdFYgPSBPYmplY3QoZnVuY0ltcCkuY2FsbCAoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7
CisgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgorICAgIGlmIChtZXRob2RO
YW1lID09IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKCJldmFsIikpIHsKKyAgICAgICAgaWYgKGFy
Z0NvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3NbMF0u
dHlwZSAhPSBOUFZhcmlhbnRUeXBlX1N0cmluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0J
CS8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgot
CQljb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwotCQlyZXR1
cm4gdHJ1ZTsKLQkgICAgfQotCX0KKyAgICAgICAgcmV0dXJuIE5QTl9FdmFsdWF0ZSAobnBwLCBv
LCAoTlBTdHJpbmcgKikmYXJnc1swXS52YWx1ZS5zdHJpbmdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICAgIC8vIExvb2t1cCB0aGUgZnVuY3Rpb24gb2JqZWN0LgorICAg
ICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVy
KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CisgICAgICAg
IFZhbHVlIGZ1bmMgPSBvYmotPmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRp
ZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKKworICAgICAgICBpZiAoZnVuYy5pc051bGwoKSkgewor
ICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc051bGwocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmMudHlwZSgpID09IFVuZGVmaW5lZFR5
cGUpIHsKKyAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNVbmRlZmluZWQocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAvLyBDYWxs
IHRoZSBmdW5jdGlvbiBvYmplY3QuCisgICAgICAgIE9iamVjdEltcCAqZnVuY0ltcCA9IHN0YXRp
Y19jYXN0PE9iamVjdEltcCo+KGZ1bmMuaW1wKCkpOworICAgICAgICBPYmplY3QgdGhpc09iaiA9
IE9iamVjdChjb25zdF9jYXN0PE9iamVjdEltcCo+KG9iai0+aW1wKSk7CisgICAgICAgIExpc3Qg
YXJnTGlzdCA9IGxpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQpOworICAg
ICAgICBWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXApLmNhbGwgKGV4ZWMsIHRoaXNPYmos
IGFyZ0xpc3QpOworCisgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9m
IHRoZSBmdW5jdGlvbiBjYWxsLgorICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCByZXN1bHRWLCByZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KICAgICB9IGVsc2UgaWYgKG8tPl9jbGFzcy0+aW52b2tlKQogICAgICAgICByZXR1cm4gby0+
X2NsYXNzLT5pbnZva2UgKG8sIG1ldGhvZE5hbWUsIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOwot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgX05QTl9FdmFsdWF0ZSAoTlBQIG5w
cCwgTlBPYmplY3QgKm8sIE5QU3RyaW5nICpzLCBOUFZhcmlhbnQgKnZhcmlhbnQpCitFWFBPUlRf
QworYm9vbCBOUE5fRXZhbHVhdGUgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUFN0cmluZyAqcywg
TlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmpl
Y3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnBy
ZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIE9iamVjdCB0aGlzT2JqID0gT2JqZWN0KGNv
bnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKICAgICAgICAgVmFsdWUgcmVzdWx0Owot
ICAgICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgTlBVVEYx
NiAqc2NyaXB0U3RyaW5nOwogICAgICAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7CiAgICAg
ICAgIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYgKHMsICZzY3JpcHRTdHJpbmcsICZVVEYxNkxlbmd0
aCk7ICAgIC8vIHJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCiAgICAgICAgIENv
bXBsZXRpb24gY29tcGxldGlvbiA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+ZXZhbHVhdGUoVVN0cmluZygpLCAwLCBVU3RyaW5nKChjb25zdCBVQ2hhciAqKXNjcmlwdFN0
cmluZyxVVEYxNkxlbmd0aCkpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24u
Y29tcGxUeXBlKCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0eXBlID09IE5vcm1hbCkgewog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcGxldGlvbi52YWx1ZSgpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkgewpAQCAtMjAyLDIzICsyMDUsMjQgQEANCiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gVW5kZWZpbmVkKCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBmcmVlICgodm9pZCAqKXNjcmlwdFN0cmluZyk7Ci0gICAgICAgIAorCiAg
ICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdCwgdmFyaWFudCk7Ci0g
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBfTlBOX0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MKK2Jvb2wgTlBO
X0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3Jp
cHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5p
bnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAKQEAgLTIzNSwxNCArMjM5LDE0IEBADQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgVmFsdWUgcmVz
dWx0OwogICAgICAgICBpZiAoaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBvYmot
PmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJp
bmcpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5pbXAtPmdldCAo
ZXhlYywgaS0+dmFsdWUubnVtYmVyKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHJlc3VsdC5p
c051bGwoKSkgewogICAgICAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNOdWxsKHZhcmlh
bnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY4LDEzICsyNzIsMTQgQEANCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIF9OUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5Q
T2JqZWN0ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZh
cmlhbnQpCitFWFBPUlRfQworYm9vbCBOUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0
ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKICAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CkBAIC0yODMsNyArMjg4LDcgQEANCiAg
ICAgICAgICAgICBvYmotPmltcC0+cHV0KGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZyksIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPnB1dChleGVjLCBpLT52YWx1
ZS5udW1iZXIsIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQpKTsKLSAgICAg
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPnNl
dFByb3BlcnR5KQogICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAobywgcHJv
cGVydHlOYW1lLCB2YXJpYW50KTsKQEAgLTI5MSwxMyArMjk2LDE0IEBADQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAq
bywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9DCitib29sIE5QTl9SZW1vdmVQ
cm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKIApAQCAtMzE4LDE5ICszMjQsMjAgQEANCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRl
UHJvcGVydHkgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmlu
ZykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRlUHJvcGVydHkg
KGV4ZWMsIGktPnZhbHVlLm51bWJlcik7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgX05QTl9IYXNQcm9wZXJ0eShO
UFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9D
Citib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xh
c3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOyAKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOwogCi0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+Z2xvYmFsRXhlYygpOwogCkBAIC0zMzksMjYgKzM0NiwyNyBAQA0KIAogICAgICAgICBpZiAo
aS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4
ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmluZykpOwotICAgICAg
ICAKKwogICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4ZWMsIGktPnZhbHVl
Lm51bWJlcik7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPmhhc1Byb3BlcnR5KQogICAgICAg
ICByZXR1cm4gby0+X2NsYXNzLT5oYXNQcm9wZXJ0eSAobywgcHJvcGVydHlOYW1lKTsKLSAgICAK
KwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBfTlBOX0hhc01ldGhvZChOUFAgbnBwLCBO
UE9iamVjdCAqbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCitFWFBPUlRfQworYm9vbCBOUE5f
SGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
IHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAg
Ci0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOwogCisgICAgaWYg
KCFfaXNTYWZlU2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKW1ldGhvZE5hbWU7CiAg
ICAgICAgIGlmICghaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAvLyBMb29rdXAgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAg
ICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigp
LT5nbG9iYWxFeGVjKCk7CiAKQEAgLTM2OCwyMSArMzc2LDIyIEBADQogICAgICAgICBpZiAoZnVu
Yy5pc051bGwoKSB8fCBmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAorCiAgICAgZWxzZSBpZiAoby0+X2NsYXNzLT5oYXNNZXRob2QpIHsK
ICAgICAgICAgcmV0dXJuIG8tPl9jbGFzcy0+aGFzTWV0aG9kIChvLCBtZXRob2ROYW1lKTsKICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRp
b24gKE5QT2JqZWN0ICpvLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpCitFWFBPUlRfQwordm9pZCBO
UE5fU2V0RXhjZXB0aW9uIChOUE9iamVjdCAqbywgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogewog
ICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87CiAgICAgICAgIEV4ZWNT
dGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFs
RXhlYygpOwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgT2JqZWN0IGVy
ciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDUsNiArNDUsNyBAQA0KICAgICBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVj
dXRpb25Db250ZXh0OwogfSBKYXZhU2NyaXB0T2JqZWN0OwogCitJTVBPUlRfQwogTlBPYmplY3Qg
Kl9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IChOUFAgbnBwLCBLSlM6Ok9iamVjdEltcCAqaW1wLCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW5FeGVjdXRpb25Db250ZXh0LCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0KTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucGFwaS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkocmV2aXNpb24g
MTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTEsMTAgKzEsMTEgQEANCisvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRl
bnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwogLyogKioqKiogQkVH
SU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwg
Mi4xCisgKiBWZXJzaW9uOiBOUEwgMS4xL0dQTCAyLjAvTEdQTCAyLjEKICAqCi0gKiBUaGUgY29u
dGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNl
bnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAotICogdGhlIExpY2Vuc2UuIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9NUEwvCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBO
ZXRzY2FwZSBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvTlBMLwogICoKICAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCiAgKiBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBT
ZWUgdGhlIExpY2Vuc2UKQEAgLTE5LDExMSArMjAsMjEwIEBADQogICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIENvbnRyaWJ1dG9yKHMpOgorICog
ICAgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIE5va2lhIENvcnBvcmF0aW9uCiAg
KgorICoKICAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJl
IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKICAqIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAi
TEdQTCIpLAogICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRo
ZSBMR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKICAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ug
d2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CiAgKiB1
bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8g
YWxsb3cgb3RoZXJzIHRvCi0gKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogdXNlIHlvdXIgdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBOUEwsIGluZGljYXRlIHlvdXIKICAq
IGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRo
ZW0gd2l0aCB0aGUgbm90aWNlCiAgKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0
aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQogICogdGhlIHByb3Zpc2lv
bnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1
bmRlcgotICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUg
TEdQTC4KKyAqIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZSBOUEwsIHRoZSBHUEwgb3IgdGhl
IExHUEwuCiAgKgogICogKioqKiogRU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8KLSAKLSAKLSAv
KgotICAqICBOZXRzY2FwZSBjbGllbnQgcGx1Zy1pbiBBUEkgc3BlYwotICAqLwotIAogCisvKiBO
T1RFUzoKKyAqIE5va2lhIG1vZGlmaWVkIHRoaXMgZmlsZSwgYnkgY2hhbmdpbmcgY2VydGFpbiB2
YXJpYWJsZXMgZm9yIHRoZSBwdXJwb3NlIG9mCisgKiBwb3J0aW5nIHRoZSBmaWxlIHRvIHRoZSBT
eW1iaWFuIHBsYXRmb3JtIG9uIE1heSAxc3QsIDIwMDQuCisgKi8KKworCisvKgorICogIG5wYXBp
LmggJFJldmlzaW9uJAorICogIE5ldHNjYXBlIGNsaWVudCBwbHVnLWluIEFQSSBzcGVjCisgKi8K
KwogI2lmbmRlZiBfTlBBUElfSF8KICNkZWZpbmUgX05QQVBJX0hfCiAKLSNpZmRlZiBJTkNMVURF
X0pBVkEKKyNpZmRlZiBfX09TMl9fCisjcHJhZ21hIHBhY2soMSkKKyNlbmRpZgorCisjaW5jbHVk
ZSAicHJ0eXBlcy5oIgorLyogQ29waWVkIGZyb20geHBfY29yZS5oICovCisvKiByZW1vdmVkICNp
ZmRlZiBmb3IgaHB1eCBkZWZpbmVkIGluIC91c3IvaW5jbHVkZS9tb2RlbC5oICovCisjaWZuZGVm
IFhQX01BQworI2lmbmRlZiBfSU5UMTYKKyNkZWZpbmUgX0lOVDE2CisjZW5kaWYKKyNpZm5kZWYg
X0lOVDMyCisjZGVmaW5lIF9JTlQzMgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMTYKKyNkZWZpbmUg
X1VJTlQxNgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMzIKKyNkZWZpbmUgX1VJTlQzMgorI2VuZGlm
CisjZW5kaWYKKworLyoKKyAqIE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVz
aW9uCisgKiBvZiBvYnNvbGV0ZS9wcm90eXBlcy5oLCB3aG9zZSBpbnQxNiwgdWludDE2LAorICog
aW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0aCB0aG9zZQorICogaW4gdGhp
cyBmaWxlLgorICovCisjaWZuZGVmIE5PX05TUFJfMTBfU1VQUE9SVAorI2RlZmluZSBOT19OU1BS
XzEwX1NVUFBPUlQKKyNlbmRpZgorI2lmZGVmIE9KSQogI2luY2x1ZGUgImpyaS5oIiAgICAgICAg
ICAgICAgICAvKiBKYXZhIFJ1bnRpbWUgSW50ZXJmYWNlICovCi0jZWxzZQotI2RlZmluZSBqcmVm
ICAgIHZvaWQgKgotI2RlZmluZSBKUklFbnYgIHZvaWQKICNlbmRpZgogCisjaWYgZGVmaW5lZCAo
X19PUzJfXyApIHx8IGRlZmluZWQgKE9TMikKKyMgaWZuZGVmIFhQX09TMgorIyAgIGRlZmluZSBY
UF9PUzIgMQorIyBlbmRpZiAvKiBYUF9PUzIgKi8KKyNlbmRpZiAvKiBfX09TMl9fICovCisKICNp
ZmRlZiBfV0lORE9XUwotIyAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICBkZWZpbmUgWFBfV0lO
IDEKLSMgICAgZW5kaWYgLyogWFBfV0lOICovCisjIGluY2x1ZGUgPHdpbmRlZi5oPgorIyBpZm5k
ZWYgWFBfV0lOCisjICAgZGVmaW5lIFhQX1dJTiAxCisjIGVuZGlmIC8qIFhQX1dJTiAqLwogI2Vu
ZGlmIC8qIF9XSU5ET1dTICovCiAKICNpZmRlZiBfX01XRVJLU19fCi0jICAgIGRlZmluZSBfZGVj
bHNwZWMgX19kZWNsc3BlYwotIyAgICBpZmRlZiBtYWNpbnRvc2gKLSMgICAgICAgIGlmbmRlZiBY
UF9NQUMKLSMgICAgICAgICAgICBkZWZpbmUgWFBfTUFDIDEKLSMgICAgICAgIGVuZGlmIC8qIFhQ
X01BQyAqLwotIyAgICBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KLSMgICAgaWZkZWYgX19JTlRFTF9f
Ci0jICAgICAgICB1bmRlZiBOVUxMCi0jICAgICAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICAg
ICAgZGVmaW5lIFhQX1dJTiAxCi0jICAgICAgICBlbmRpZiAvKiBfX0lOVEVMX18gKi8KLSMgICAg
ZW5kaWYgLyogWFBfUEMgKi8KKyMgZGVmaW5lIF9kZWNsc3BlYyBfX2RlY2xzcGVjCisjIGlmZGVm
IG1hY2ludG9zaAorIyAgIGlmbmRlZiBYUF9NQUMKKyMgICAgIGRlZmluZSBYUF9NQUMgMQorIyAg
IGVuZGlmIC8qIFhQX01BQyAqLworIyBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KKyMgaWZkZWYgX19J
TlRFTF9fCisjICAgdW5kZWYgTlVMTAorIyAgIGlmbmRlZiBYUF9XSU4KKyMgICAgIGRlZmluZSBY
UF9XSU4gMQorIyAgIGVuZGlmIC8qIFhQX1dJTiAqLworIyBlbmRpZiAvKiBfX0lOVEVMX18gKi8K
ICNlbmRpZiAvKiBfX01XRVJLU19fICovCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYg
IWRlZmluZWQoX19NQUNPU19DTEFTU0lDX18pCi0jICAgZGVmaW5lIFhQX01BQ09TWAorI2lmbmRl
ZiBfX1NZTUJJQU4zMl9fCisjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NY
KQorICAjaW5jbHVkZSA8UXVpY2tkcmF3Lmg+CisgICNpbmNsdWRlIDxFdmVudHMuaD4KICNlbmRp
ZgogCi0jaWZkZWYgWFBfTUFDCi0gICAgI2luY2x1ZGUgPFF1aWNrZHJhdy5oPgotICAgICNpbmNs
dWRlIDxFdmVudHMuaD4KKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjIGluY2x1ZGUgPHN0ZGlvLmg+
CisjIGlmIGRlZmluZWQoTU9aX1gxMSkKKyMgICBpbmNsdWRlIDxYMTEvWGxpYi5oPgorIyAgIGlu
Y2x1ZGUgPFgxMS9YdXRpbC5oPgorIyBlbmRpZgogI2VuZGlmCi0KLSNpZmRlZiBYUF9NQUNPU1gK
LSAgICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotICAgICNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNlbHNlCitjbGFzcyBURGVzQzg7Citj
bGFzcyBURGVzQzE2OworY2xhc3MgSEJ1ZkMxNjsKK2NsYXNzIENEZXNDQXJyYXk7CisjaW5jbHVk
ZSA8ZTMyZGVmLmg+CiAjZW5kaWYKIAotI2lmZGVmIFhQX1VOSVgKLSAgICAjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KLSAgICAjaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jZW5kaWYKLQotCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwotLyogICAgICAgICAgICAgUGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
UGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwogCiAjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMAotI2RlZmluZSBOUF9WRVJT
SU9OX01JTk9SIDE0CisjZGVmaW5lIE5QX1ZFUlNJT05fTUlOT1IgMTMKIAogCisvKiBUaGUgT1Mv
MiB2ZXJzaW9uIG9mIE5ldHNjYXBlIHVzZXMgUkNfREFUQSB0byBkZWZpbmUgdGhlCisgICBtaW1l
IHR5cGVzLCBmaWxlIGV4dGVudGlvbnMsIGV0YyB0aGF0IGFyZSByZXF1aXJlZC4KKyAgIFVzZSBh
IHZlcnRpY2FsIGJhciB0byBzZXBhcmF0ZSB0eXBlcywgZW5kIHR5cGVzIHdpdGggXDAuCisgICBG
aWxlVmVyc2lvbiBhbmQgUHJvZHVjdFZlcnNpb24gYXJlIDMyYml0IGludHMsIGFsbCBvdGhlcgor
ICAgZW50cmllcyBhcmUgc3RyaW5ncyB0aGUgTVVTVCBiZSB0ZXJtaW5hdGVkIHd3aXRoIGEgXDAu
CiAKK0FOIEVYQU1QTEU6CisKK1JDREFUQSBOUF9JTkZPX1Byb2R1Y3RWZXJzaW9uIHsgMSwwLDAs
MSx9CisKK1JDREFUQSBOUF9JTkZPX01JTUVUeXBlICAgIHsgInZpZGVvL3gtdmlkZW98IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpZGVvL3gtZmxpY2tcMCIgfQorUkNEQVRBIE5Q
X0lORk9fRmlsZUV4dGVudHMgeyAiYXZpfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmbGNcMCIgfQorUkNEQVRBIE5QX0lORk9fRmlsZU9wZW5OYW1leyAiTU1PUzIgdmlkZW8gcGxh
eWVyKCouYXZpKXwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTU1PUzIgRmxjL0Zs
aSBwbGF5ZXIoKi5mbGMpXDAiIH0KKworUkNEQVRBIE5QX0lORk9fRmlsZVZlcnNpb24gICAgICAg
eyAxLDAsMCwxIH0KK1JDREFUQSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgIHsgIk5ldHNjYXBl
IENvbW11bmljYXRpb25zXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVEZXNjcmlwdGlvbiAgIHsg
Ik5QQVZJMzIgRXh0ZW5zaW9uIERMTFwwIgorUkNEQVRBIE5QX0lORk9fSW50ZXJuYWxOYW1lICAg
ICAgeyAiTlBBVkkzMlwwIiApCitSQ0RBVEEgTlBfSU5GT19MZWdhbENvcHlyaWdodCAgICB7ICJD
b3B5cmlnaHQgTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgXDI1MSAxOTk2XDAiCitSQ0RBVEEgTlBf
SU5GT19PcmlnaW5hbEZpbGVuYW1lICB7ICJOVkFQSTMyLkRMTCIgfQorUkNEQVRBIE5QX0lORk9f
UHJvZHVjdE5hbWUgICAgICAgeyAiTlBBVkkzMiBEeW5hbWljIExpbmsgTGlicmFyeVwwIiB9CisK
KyovCisKKworLyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gcmVxdWlyZWQgKi8K
KyNkZWZpbmUgTlBfSU5GT19Qcm9kdWN0VmVyc2lvbiAgICAgIDEKKyNkZWZpbmUgTlBfSU5GT19N
SU1FVHlwZSAgICAgICAgICAgIDIKKyNkZWZpbmUgTlBfSU5GT19GaWxlT3Blbk5hbWUgICAgICAg
IDMKKyNkZWZpbmUgTlBfSU5GT19GaWxlRXh0ZW50cyAgICAgICAgIDQKKworLyogUkNfREFUQSB0
eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLworI2RlZmluZSBOUF9JTkZP
X0ZpbGVEZXNjcmlwdGlvbiAgICAgNQorI2RlZmluZSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAg
ICAgNgorCisvKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSBvcHRpb25hbCAqLwor
I2RlZmluZSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgICAgNworI2RlZmluZSBOUF9JTkZPX0Zp
bGVWZXJzaW9uICAgICAgICAgOAorI2RlZmluZSBOUF9JTkZPX0ludGVybmFsTmFtZSAgICAgICAg
OQorI2RlZmluZSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgICAgMTAKKyNkZWZpbmUgTlBfSU5G
T19PcmlnaW5hbEZpbGVuYW1lICAgIDExCisKKyNpZm5kZWYgUkNfSU5WT0tFRAorCisKKwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KLS8qICAgICAgICAgICAgIERlZmluaXRpb24gb2YgQmFzaWMgVHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgRGVmaW5pdGlvbiBvZiBCYXNpYyBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAqLwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KIAogI2lmbmRlZiBfVUlOVDE2CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHVpbnQxNjsKICNlbmRpZgorCiAjaWZuZGVmIF9VSU5UMzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEp
CisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsK
LSNlbHNlIC8qIF9fYWxwaGEgKi8KKyMgICAgZWxzZSAgLyogX19hbHBoYSAqLwogdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHVpbnQzMjsKLSNlbmRpZiAvKiBfX2FscGhhICovCisjICAgIGVuZGlmIC8q
IF9fYWxwaGEgKi8KICNlbmRpZgorCisvKgorICogQUlYIGRlZmluZXMgdGhlc2UgaW4gc3lzL2lu
dHR5cGVzLmggaW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAorICovCisjaWZuZGVmIEFJWAogI2lm
bmRlZiBfSU5UMTYKIHR5cGVkZWYgc2hvcnQgaW50MTY7CiAjZW5kaWYKKwogI2lmbmRlZiBfSU5U
MzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEpCisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVk
ZWYgaW50IGludDMyOwotI2Vsc2UgLyogX19hbHBoYSAqLworIyAgICBlbHNlICAvKiBfX2FscGhh
ICovCiB0eXBlZGVmIGxvbmcgaW50MzI7Ci0jZW5kaWYgLyogX19hbHBoYSAqLworIyAgICBlbmRp
ZiAvKiBfX2FscGhhICovCiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIEZBTFNFCiAjZGVmaW5l
IEZBTFNFICgwKQpAQCAtMTM1LDE1ICsyMzUsMTkgQEANCiAjZGVmaW5lIE5VTEwgKDBMKQogI2Vu
ZGlmCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBOUEJvb2w7Ci10eXBlZGVmIGludDE2ICAg
ICAgICAgICAgTlBFcnJvcjsKLXR5cGVkZWYgaW50MTYgICAgICAgICAgICBOUFJlYXNvbjsKLXR5
cGVkZWYgY2hhciogICAgICAgICAgICBOUE1JTUVUeXBlOwordHlwZWRlZiB1bnNpZ25lZCBjaGFy
IE5QQm9vbDsKK3R5cGVkZWYgaW50MTYgICAgIE5QRXJyb3I7Cit0eXBlZGVmIGludDE2ICAgICBO
UFJlYXNvbjsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordHlwZWRlZiBjaGFyKiAgICAgTlBNSU1F
VHlwZTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordHlwZWRlZiBjb25zdCBURGVzQzgmIE5Q
TUlNRVR5cGU7CisjZW5kaWYKIAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyAgICAgICAgICAgICAqLworLyogICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAg
ICAgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZmRlZiBYUF9NQUMKQEAgLTE1NSw0NyArMjU5
LDU2IEBADQogICovCiB0eXBlZGVmIHN0cnVjdCBfTlBQCiB7Ci0gICAgdm9pZCogICAgcGRhdGE7
ICAgICAgICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KLSAgICB2b2lkKiAgICBuZGF0
YTsgICAgICAgICAgICAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogcGRhdGE7
ICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogbmRhdGE7ICAgICAgLyog
bmV0c2NhcGUgcHJpdmF0ZSBkYXRhICovCiB9IE5QUF90OwogCi10eXBlZGVmIE5QUF90KiAgICBO
UFA7Cit0eXBlZGVmIE5QUF90KiAgTlBQOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUFN0cmVhbQog
ewotICAgIHZvaWQqICAgICAgICBwZGF0YTsgICAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRh
ICovCi0gICAgdm9pZCogICAgICAgIG5kYXRhOyAgICAgICAgLyogbmV0c2NhcGUgcHJpdmF0ZSBk
YXRhICovCi0gICAgY29uc3QgY2hhciogIHVybDsKLSAgICB1aW50MzIgICAgICAgZW5kOwotICAg
IHVpbnQzMiAgICAgICBsYXN0bW9kaWZpZWQ7Ci0gICAgdm9pZCogICAgICAgIG5vdGlmeURhdGE7
CisgIHZvaWQqICBwZGF0YTsgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogIG5k
YXRhOyAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
ICBjb25zdCAgY2hhciogdXJsOworI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovCisgIEhCdWZDMTYq
ICB1cmw7CisjZW5kaWYKKyAgdWludDMyIGVuZDsKKyAgdWludDMyIGxhc3Rtb2RpZmllZDsKKyAg
dm9pZCogIG5vdGlmeURhdGE7CiB9IE5QU3RyZWFtOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUEJ5
dGVSYW5nZQogewotICAgIGludDMyICAgICAgb2Zmc2V0OyAgICAgICAgIC8qIG5lZ2F0aXZlIG9m
ZnNldCBtZWFucyBmcm9tIHRoZSBlbmQgKi8KLSAgICB1aW50MzIgICAgIGxlbmd0aDsKLSAgICBz
dHJ1Y3QgX05QQnl0ZVJhbmdlKiBuZXh0OworICBpbnQzMiAgb2Zmc2V0OyAvKiBuZWdhdGl2ZSBv
ZmZzZXQgbWVhbnMgZnJvbSB0aGUgZW5kICovCisgIHVpbnQzMiBsZW5ndGg7CisgIHN0cnVjdCBf
TlBCeXRlUmFuZ2UqIG5leHQ7CiB9IE5QQnl0ZVJhbmdlOwogCiAKIHR5cGVkZWYgc3RydWN0IF9O
UFNhdmVkRGF0YQogewotICAgIGludDMyICAgIGxlbjsKLSAgICB2b2lkKiAgICBidWY7CisgIGlu
dDMyIGxlbjsKKyAgdm9pZCogYnVmOwogfSBOUFNhdmVkRGF0YTsKIAogCiB0eXBlZGVmIHN0cnVj
dCBfTlBSZWN0CiB7Ci0gICAgdWludDE2ICAgIHRvcDsKLSAgICB1aW50MTYgICAgbGVmdDsKLSAg
ICB1aW50MTYgICAgYm90dG9tOwotICAgIHVpbnQxNiAgICByaWdodDsKKyAgdWludDE2IHRvcDsK
KyAgdWludDE2IGxlZnQ7CisgIHVpbnQxNiBib3R0b207CisgIHVpbnQxNiByaWdodDsKIH0gTlBS
ZWN0OwogCit0eXBlZGVmIHN0cnVjdCBfTlBTaXplCit7CisgIGludDMyIHdpZHRoOworICBpbnQz
MiBoZWlnaHQ7Cit9IE5QU2l6ZTsKIAogI2lmZGVmIFhQX1VOSVgKIC8qCkBAIC0yMDgsNDggKzMy
MSw1MSBAQA0KICAqIFRoZXNlIGFyZSB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBwbGF0Zm9ybSBz
cGVjaWZpYyBpbmZvcm1hdGlvbi4KICAqLwogZW51bSB7Ci0gICAgTlBfU0VUV0lORE9XID0gMSwK
LSAgICBOUF9QUklOVAorICBOUF9TRVRXSU5ET1cgPSAxLAorICBOUF9QUklOVAogfTsKIAogdHlw
ZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAgICAgdHlwZTsKKyAgaW50MzIgdHlwZTsKIH0g
TlBBbnlDYWxsYmFja1N0cnVjdDsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAg
ICAgICAgdHlwZTsKLSAgICBEaXNwbGF5KiAgICAgICAgZGlzcGxheTsKLSAgICBWaXN1YWwqICAg
ICAgICAgdmlzdWFsOwotICAgIENvbG9ybWFwICAgICAgICBjb2xvcm1hcDsKLSAgICB1bnNpZ25l
ZCBpbnQgICAgZGVwdGg7CisgIGludDMyICAgICAgICB0eXBlOworI2lmZGVmIE1PWl9YMTEKKyAg
RGlzcGxheSogICAgIGRpc3BsYXk7CisgIFZpc3VhbCogICAgICB2aXN1YWw7CisgIENvbG9ybWFw
ICAgICBjb2xvcm1hcDsKKyAgdW5zaWduZWQgaW50IGRlcHRoOworI2VuZGlmCiB9IE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3Q7CiAKIHR5cGVkZWYgc3RydWN0CiB7Ci0gICAgaW50MzIgICAgICAg
ICAgICB0eXBlOwotICAgIEZJTEUqICAgICAgICAgICAgZnA7CisgIGludDMyIHR5cGU7CisgIEZJ
TEUqIGZwOwogfSBOUFByaW50Q2FsbGJhY2tTdHJ1Y3Q7CiAKICNlbmRpZiAvKiBYUF9VTklYICov
CiAKKwogLyoKLSAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWlu
IHBsYXRmb3JtcyB0byBOUE5WIGFuZCAKLSAqICAgTlBQViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFy
b3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4gTmV3ZXIgCi0gKiAgIGNvbXBpbGVycyBv
biBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QgCi0gKiAg
IGNvbXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lu
cyBmcm9tIAotICogICBub3QgdW5kZXJzdGFuZGluZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0aGVz
ZSBtYXNrcyBjaGFuZ2UgdGhlIAorICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVk
IG9uIGNlcnRhaW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRo
YXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyCisgKiAgIGNv
bXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBu
b3QKKyAqICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRl
ciBwbHVnaW5zIGZyb20KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFC
SSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZQogICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3Jz
IG9uIHRob3NlIHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcwotICogICBjb21wYXRpYmxl
IHdpdGggZGlmZmVyZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4gCisg
KiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBw
bHVnaW5zIGNhbgogICogICB1c2UgdGhlc2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5l
IGFuZCB1c2UgdGhlIGNvcnJlY3QgQysrCi0gKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4
cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBXaW5kb3dzIAorICogICBBQkkgdGhhdCB0
aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cwog
ICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuCiAgKi8K
IAogI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAwCiAvKgotICogICBnY2MgMy54
IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgg
CisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBpbmNv
bXBhdGlibGUgd2l0aAogICogICBwcmV2aW91cyBjb21waWxlcnMuCiAgKi8KICNpZiAoZGVmaW5l
ZCAoWFBfVU5JWCkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQpAQCAt
MjU4LDEzICszNzQsMTQgQEANCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX0dDQzMgMAogI2Vu
ZGlmCiAKKwogI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwCiAvKgogICogICBP
biBPU1gsIHRoZSBNYWNoLU8gZXhlY3V0YWJsZSBmb3JtYXQgaXMgc2lnbmlmaWNhbnRseQogICog
ICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGRpZmZlcmVudAog
ICogICBDKysgQUJJLCBpdCBhbHNvIGhhcyBoYXMgZGlmZmVyZW50IEMgY2FsbGluZyBjb252ZW50
aW9uLgogICogICBZb3UgbXVzdCB1c2UgZ2x1ZSBjb2RlIHdoZW4gY2FsbGluZyBiZXR3ZWVuIENG
TSBhbmQKLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiAKKyAqICAgTWFjaC1PIEMgZnVuY3Rpb25z
LgogICovCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JUX01BQ19NQUNITykpCiAjZGVmaW5lIF9OUF9B
QklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLCkBAIC0yNzksNTAgKzM5Niw0OCBA
QA0KICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QUF9HZXRWYWx1ZSBzaGFs
bCBiZSBpbXBsZW1lbnRlZAogICovCiB0eXBlZGVmIGVudW0gewotICAgIE5QUFZwbHVnaW5OYW1l
U3RyaW5nID0gMSwKLSAgICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCi0gICAgTlBQVnBs
dWdpbldpbmRvd0Jvb2wsCi0gICAgTlBQVnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVnBs
dWdpbk5hbWVTdHJpbmcgPSAxLAorICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCisgIE5Q
UFZwbHVnaW5XaW5kb3dCb29sLAorICBOUFBWcGx1Z2luVHJhbnNwYXJlbnRCb29sLAorICBOUFBW
amF2YUNsYXNzLCAgICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gTW96aWxsYSAx
LjAgKi8KKyAgTlBQVnBsdWdpbldpbmRvd1NpemUsCisgIE5QUFZwbHVnaW5UaW1lckludGVydmFs
LAogCi0gICAgTlBQVmphdmFDbGFzcywgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5XaW5kb3dTaXplLCAgICAgICAgIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1Z2luVGltZXJJbnRlcnZhbCwgICAg
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxl
SW5zdGFuY2UgPSAoMTAgfCBOUF9BQklfTUFTSyksCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlSUlE
ID0gMTEsCiAKLSAgICBOUFBWcGx1Z2luU2NyaXB0YWJsZUluc3RhbmNlID0gKDEwIHwgTlBfQUJJ
X01BU0spLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBQVnBsdWdpblNj
cmlwdGFibGVJSUQgPSAxMSwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotCi0gICAg
LyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3
aXRoIDAuOS45ICovCi0gICAgTlBQVmphdmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLCAgLyog
Tm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5LZWVwTGlicmFyeUlu
TWVtb3J5ID0gMTMsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1
Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovCi0KKyAgLyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBz
dGFydGluZyB3aXRoIDAuOS45ICovCisgIE5QUFZqYXZhc2NyaXB0UHVzaENhbGxlckJvb2wgPSAx
MiwKKyAgTlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUg
aW4gTW96aWxsYSAxLjAgKi8KKyAgTlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAxNCwg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwogICAgIC8qIEdldCB0aGUgTlBPYmplY3Qg
Zm9yIHNjcmlwdGluZyB0aGUgcGx1Z2luLiAqLwotICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QgID0gMTUKKyAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVjdCAgPSAxNQogfSBOUFBW
YXJpYWJsZTsKIAogLyoKICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QTl9H
ZXRWYWx1ZSBpcyBpbXBsZW1lbnRlZCBieSBNb3ppbGxhCiAgKi8KIHR5cGVkZWYgZW51bSB7Ci0g
ICAgTlBOVnhEaXNwbGF5ID0gMSwKLSAgICBOUE5WeHRBcHBDb250ZXh0LAotICAgIE5QTlZuZXRz
Y2FwZVdpbmRvdywKLSAgICBOUE5WamF2YXNjcmlwdEVuYWJsZWRCb29sLAotICAgIE5QTlZhc2RF
bmFibGVkQm9vbCwKLSAgICBOUE5WaXNPZmZsaW5lQm9vbCwKKyAgTlBOVnhEaXNwbGF5ID0gMSwK
KyAgTlBOVnh0QXBwQ29udGV4dCwKKyAgTlBOVm5ldHNjYXBlV2luZG93LAorICBOUE5WamF2YXNj
cmlwdEVuYWJsZWRCb29sLAorICBOUE5WYXNkRW5hYmxlZEJvb2wsCisgIE5QTlZpc09mZmxpbmVC
b29sLAogCi0gICAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxk
cyBzdGFydGluZyB3aXRoIDAuOS40ICovCi0gICAgTlBOVnNlcnZpY2VNYW5hZ2VyID0gKDEwIHwg
TlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QTlZE
T01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBp
biBXZWJLaXQgKi8KLSAgICBOUE5WRE9NV2luZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyks
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBOVlRvb2xraXQgICAgICAg
ID0gKDEzIHwgTlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwot
ICAgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBN
b3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3aXRoIDAuOS40ICovCisgIE5QTlZzZXJ2aWNlTWFuYWdl
ciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwKKyAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBf
QUJJX01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLworICBOUE5WRE9NV2lu
ZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyksCisgIE5QTlZUb29sa2l0ICAgICAgICA9ICgx
MyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgTlBO
VlN1cHBvcnRzWEVtYmVkQm9vbCA9IDE0LCAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwogCi0gICAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUg
YnJvd3NlciB3aW5kb3cuICovCi0gICAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCisgIC8qIEdl
dCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLworICBOUE5W
V2luZG93TlBPYmplY3QgPSAxNSwKIAotICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBm
b3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovCi0gICAgTlBOVlBsdWdpbkVsZW1lbnROUE9i
amVjdCAgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICAv
KiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50LiAq
LworICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ICAgICAgICAgICAgICAgICAvKiBOb3QgaW1w
bGVtZW50ZWQgaW4gV2ViS2l0ICovCiB9IE5QTlZhcmlhYmxlOwogCiAvKgpAQCAtMzMwLDcxICs0
NDUsNzggQEANCiAgKiByZXR1cm5lZCBpbiB0aGUgd2luZG93IGZpZWxkLgogICovCiB0eXBlZGVm
IGVudW0gewotICAgIE5QV2luZG93VHlwZVdpbmRvdyA9IDEsCi0gICAgTlBXaW5kb3dUeXBlRHJh
d2FibGUKKyAgTlBXaW5kb3dUeXBlV2luZG93ID0gMSwKKyAgTlBXaW5kb3dUeXBlRHJhd2FibGUK
IH0gTlBXaW5kb3dUeXBlOwogCiB0eXBlZGVmIHN0cnVjdCBfTlBXaW5kb3cKIHsKLSAgICB2b2lk
KiAgICB3aW5kb3c7ICAgICAvKiBQbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlICovCi0g
ICAgaW50MzIgICAgeDsgICAgICAgICAgICAvKiBQb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIg
cmVsYXRpdmUgKi8KLSAgICBpbnQzMiAgICB5OyAgICAgICAgICAgIC8qICAgIHRvIGEgbmV0c2Nh
cGUgcGFnZS4gICAgICAgICAgICAgICAgICAgICovCi0gICAgdWludDMyICAgIHdpZHRoOyAgICAg
ICAgLyogTWF4aW11bSB3aW5kb3cgc2l6ZSAqLwotICAgIHVpbnQzMiAgICBoZWlnaHQ7Ci0gICAg
TlBSZWN0ICAgIGNsaXBSZWN0OyAgICAvKiBDbGlwcGluZyByZWN0YW5nbGUgaW4gcG9ydCBjb29y
ZGluYXRlcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVXNlZCBieSBNQUMgb25seS4g
ICAgICAgICAgICAgICovCi0jaWZkZWYgWFBfVU5JWAotICAgIHZvaWQgKiAgICB3c19pbmZvOyAg
ICAvKiBQbGF0Zm9ybS1kZXBlbmRlbnQgYWRkaXRvbmFsIGRhdGEgKi8KKyAgdm9pZCogd2luZG93
OyAgLyogUGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSAqLworICAgICAgICAgICAgICAg
ICAvKiBPUy8yOiB4IC0gUG9zaXRpb24gb2YgYm90dG9tIGxlZnQgY29ybmVyICAqLworICAgICAg
ICAgICAgICAgICAvKiBPUy8yOiB5IC0gcmVsYXRpdmUgdG8gdmlzaWJsZSBuZXRzY2FwZSB3aW5k
b3cgKi8KKyAgaW50MzIgeDsgICAgICAgLyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJl
bGF0aXZlICovCisgIGludDMyIHk7ICAgICAgIC8qIHRvIGEgbmV0c2NhcGUgcGFnZS4gICAgICAg
ICAqLworICB1aW50MzIgd2lkdGg7ICAvKiBNYXhpbXVtIHdpbmRvdyBzaXplICovCisgIHVpbnQz
MiBoZWlnaHQ7CisgIE5QUmVjdCBjbGlwUmVjdDsgLyogQ2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBv
cnQgY29vcmRpbmF0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAvKiBVc2VkIGJ5IE1BQyBvbmx5
LiAgICAgICAqLworI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgIWRlZmluZWQoWFBfTUFDT1NYKQor
ICB2b2lkICogd3NfaW5mbzsgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFkZGl0b25hbCBkYXRhICov
CiAjZW5kaWYgLyogWFBfVU5JWCAqLwotICAgIE5QV2luZG93VHlwZSB0eXBlOyAgICAvKiBJcyB0
aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCisgIE5QV2luZG93VHlwZSB0eXBlOyAvKiBJ
cyB0aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCiB9IE5QV2luZG93OwogCiAKIHR5cGVk
ZWYgc3RydWN0IF9OUEZ1bGxQcmludAogewotICAgIE5QQm9vbCAgICBwbHVnaW5QcmludGVkOyAg
ICAvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBmdWxsc2NyZWVuICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogICAgcHJpbnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgTlBCb29sICAgIHByaW50T25lOyAgICAgICAgLyogVFJVRSBpZiBwbHVnaW4g
c2hvdWxkIHByaW50IG9uZSBjb3B5ICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
ICAgIHRvIGRlZmF1bHQgcHJpbnRlciAgICAgICAgICAgICAgICAgICAgICovCi0gICAgdm9pZCog
ICAgcGxhdGZvcm1QcmludDsgICAgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAq
LworICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBm
dWxsc2NyZWVuIHByaW50aW5nICovCisgIE5QQm9vbCBwcmludE9uZTsgICAgIC8qIFRSVUUgaWYg
cGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSB0byBkZWZhdWx0IHByaW50ZXIgKi8KKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEZ1bGxQcmludDsKIAogdHlwZWRlZiBzdHJ1Y3QgX05QRW1iZWRQcmludAogewotICAgIE5Q
V2luZG93ICAgIHdpbmRvdzsKLSAgICB2b2lkKiAgICBwbGF0Zm9ybVByaW50OyAgICAvKiBQbGF0
Zm9ybS1zcGVjaWZpYyBwcmludGluZyBpbmZvICovCisgIE5QV2luZG93IHdpbmRvdzsKKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEVtYmVkUHJpbnQ7CiAKIHR5cGVkZWYgc3RydWN0IF9OUFByaW50CiB7Ci0gICAgdWludDE2
ICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogTlBfRlVMTCBvciBOUF9FTUJFRCAq
LwotICAgIHVuaW9uCi0gICAgewotICAgICAgICBOUEZ1bGxQcmludCAgICAgZnVsbFByaW50OyAg
ICAgICAgLyogaWYgbW9kZSBpcyBOUF9GVUxMICovCi0gICAgICAgIE5QRW1iZWRQcmludCAgICBl
bWJlZFByaW50OyAgICAgICAgLyogaWYgbW9kZSBpcyBOUF9FTUJFRCAqLwotICAgIH0gcHJpbnQ7
CisgIHVpbnQxNiBtb2RlOyAgICAgICAgICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8K
KyAgdW5pb24KKyAgeworICAgIE5QRnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlz
IE5QX0ZVTEwgKi8KKyAgICBOUEVtYmVkUHJpbnQgZW1iZWRQcmludDsgLyogaWYgbW9kZSBpcyBO
UF9FTUJFRCAqLworICB9IHByaW50OwogfSBOUFByaW50OwogCiAjaWYgZGVmaW5lZChYUF9NQUMp
IHx8IGRlZmluZWQoWFBfTUFDT1NYKQotdHlwZWRlZiBFdmVudFJlY29yZCAgICBOUEV2ZW50Owor
dHlwZWRlZiBFdmVudFJlY29yZCBOUEV2ZW50OwogI2VsaWYgZGVmaW5lZChYUF9XSU4pCiB0eXBl
ZGVmIHN0cnVjdCBfTlBFdmVudAogewotICAgIHVpbnQxNiAgIGV2ZW50OwotICAgIHVpbnQzMiAg
IHdQYXJhbTsKLSAgICB1aW50MzIgICBsUGFyYW07CisgIHVpbnQxNiBldmVudDsKKyAgdWludDMy
IHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKIH0gTlBFdmVudDsKLSNlbGlmIGRlZmluZWQgKFhQ
X1VOSVgpCisjZWxpZiBkZWZpbmVkKFhQX09TMikKK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50Cit7
CisgIHVpbnQzMiBldmVudDsKKyAgdWludDMyIHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKK30g
TlBFdmVudDsKKyNlbGlmIGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoTU9aX1gxMSkKIHR5
cGVkZWYgWEV2ZW50IE5QRXZlbnQ7CiAjZWxzZQotdHlwZWRlZiB2b2lkKiAgICAgICAgICAgIE5Q
RXZlbnQ7Cit0eXBlZGVmIHZvaWQqICAgICBOUEV2ZW50OwogI2VuZGlmIC8qIFhQX01BQyAqLwog
CiAjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NYKQogdHlwZWRlZiBSZ25I
YW5kbGUgTlBSZWdpb247CiAjZWxpZiBkZWZpbmVkKFhQX1dJTikKIHR5cGVkZWYgSFJHTiBOUFJl
Z2lvbjsKLSNlbGlmIGRlZmluZWQoWFBfVU5JWCkKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkgJiYg
ZGVmaW5lZChNT1pfWDExKQogdHlwZWRlZiBSZWdpb24gTlBSZWdpb247CiAjZWxzZQogdHlwZWRl
ZiB2b2lkICpOUFJlZ2lvbjsKQEAgLTQwNywzNiArNTI5LDQ3IEBADQogCiB0eXBlZGVmIHN0cnVj
dCBOUF9Qb3J0CiB7Ci0gICAgQ0dyYWZQdHIgICAgIHBvcnQ7ICAgICAgICAvKiBHcmFmcG9ydCAq
LwotICAgIGludDMyICAgICAgICBwb3J0eDsgICAgICAgIC8qIHBvc2l0aW9uIGluc2lkZSB0aGUg
dG9wbW9zdCB3aW5kb3cgKi8KLSAgICBpbnQzMiAgICAgICAgcG9ydHk7CisgIENHcmFmUHRyIHBv
cnQ7IC8qIEdyYWZwb3J0ICovCisgIGludDMyIHBvcnR4OyAgIC8qIHBvc2l0aW9uIGluc2lkZSB0
aGUgdG9wbW9zdCB3aW5kb3cgKi8KKyAgaW50MzIgcG9ydHk7CiB9IE5QX1BvcnQ7CiAKIC8qCiAg
KiAgTm9uLXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVF
dmVudAogICovCi0jZGVmaW5lIGdldEZvY3VzRXZlbnQgICAgICAgIChvc0V2dCArIDE2KQotI2Rl
ZmluZSBsb3NlRm9jdXNFdmVudCAgICAgICAgKG9zRXZ0ICsgMTcpCi0jZGVmaW5lIGFkanVzdEN1
cnNvckV2ZW50ICAgKG9zRXZ0ICsgMTgpCiAKK2VudW0gTlBFdmVudFR5cGUgeworICBOUEV2ZW50
VHlwZV9HZXRGb2N1c0V2ZW50ID0gKG9zRXZ0ICsgMTYpLAorICBOUEV2ZW50VHlwZV9Mb3NlRm9j
dXNFdmVudCwKKyAgTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZlbnQsCisgIE5QRXZlbnRUeXBl
X01lbnVDb21tYW5kRXZlbnQsCisgIE5QRXZlbnRUeXBlX0NsaXBwaW5nQ2hhbmdlZEV2ZW50LAor
ICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdCZWdpbnNFdmVudCA9IDEwMDAsCisgIE5QRXZlbnRUeXBl
X1Njcm9sbGluZ0VuZHNFdmVudAorfTsKKworI2lmZGVmIE9CU09MRVRFCisjZGVmaW5lIGdldEZv
Y3VzRXZlbnQgICAgIChvc0V2dCArIDE2KQorI2RlZmluZSBsb3NlRm9jdXNFdmVudCAgICAob3NF
dnQgKyAxNykKKyNkZWZpbmUgYWRqdXN0Q3Vyc29yRXZlbnQgKG9zRXZ0ICsgMTgpCisjZW5kaWYK
ICNlbmRpZiAvKiBYUF9NQUMgKi8KIAotCiAvKgogICogVmFsdWVzIGZvciBtb2RlIHBhc3NlZCB0
byBOUFBfTmV3OgogICovCi0jZGVmaW5lIE5QX0VNQkVEICAgICAgICAxCi0jZGVmaW5lIE5QX0ZV
TEwgICAgICAgICAyCisjZGVmaW5lIE5QX0VNQkVEIDEKKyNkZWZpbmUgTlBfRlVMTCAgMgogCiAv
KgogICogVmFsdWVzIGZvciBzdHJlYW0gdHlwZSBwYXNzZWQgdG8gTlBQX05ld1N0cmVhbToKICAq
LwotI2RlZmluZSBOUF9OT1JNQUwgICAgICAgIDEKLSNkZWZpbmUgTlBfU0VFSyAgICAgICAgIDIK
LSNkZWZpbmUgTlBfQVNGSUxFICAgICAgICAzCi0jZGVmaW5lIE5QX0FTRklMRU9OTFkgICAgICAg
IDQKKyNkZWZpbmUgTlBfTk9STUFMICAgICAxCisjZGVmaW5lIE5QX1NFRUsgICAgICAgMgorI2Rl
ZmluZSBOUF9BU0ZJTEUgICAgIDMKKyNkZWZpbmUgTlBfQVNGSUxFT05MWSA0CiAKLSNkZWZpbmUg
TlBfTUFYUkVBRFkgICAgKCgodW5zaWduZWQpKH4wKTw8MSk+PjEpCisjZGVmaW5lIE5QX01BWFJF
QURZICgoKHVuc2lnbmVkKSh+MCk8PDEpPj4xKQogCiAjaWZkZWYgWFBfTUFDCiAjcHJhZ21hIG9w
dGlvbnMgYWxpZ249cmVzZXQKQEAgLTQ0NCwzOCArNTc3LDM4IEBADQogCiAKIC8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCi0vKiAgICAgICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlvbnMg
ICAgICAgICAgICAqLworLyogICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlv
bnMgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqICAgIFZhbHVlcyBvZiB0eXBl
IE5QRXJyb3I6CisgKiBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgogICovCi0jZGVmaW5lIE5QRVJS
X0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotI2RlZmluZSBOUEVSUl9OT19FUlJP
UiAgICAgICAgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMCkKLSNkZWZpbmUgTlBFUlJf
R0VORVJJQ19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQotI2RlZmlu
ZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDIpCi0j
ZGVmaW5lIE5QRVJSX0lOVkFMSURfRlVOQ1RBQkxFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSAr
IDMpCi0jZGVmaW5lIE5QRVJSX01PRFVMRV9MT0FEX0ZBSUxFRF9FUlJPUiAgICAgICAgKE5QRVJS
X0JBU0UgKyA0KQotI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQotI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgICAgIChOUEVSUl9CQVNFICsgNikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVHSU5fRElS
X0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDcpCi0jZGVmaW5lIE5QRVJSX0lOQ09NUEFUSUJM
RV9WRVJTSU9OX0VSUk9SICAgIChOUEVSUl9CQVNFICsgOCkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJ
RF9QQVJBTSAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDkpCi0jZGVmaW5lIE5QRVJSX0lO
VkFMSURfVVJMICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEwKQotI2RlZmluZSBO
UEVSUl9GSUxFX05PVF9GT1VORCAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQotI2Rl
ZmluZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAx
MikKLSNkZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAgICAgIChOUEVSUl9C
QVNFICsgMTMpCisjZGVmaW5lIE5QRVJSX0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgMAor
I2RlZmluZSBOUEVSUl9OT19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAw
KQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VSUk9SICAgICAgICAgICAgICAgKE5QRVJSX0JBU0Ug
KyAxKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgKE5QRVJSX0JB
U0UgKyAyKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0ZVTkNUQUJMRV9FUlJPUiAgICAgKE5QRVJS
X0JBU0UgKyAzKQorI2RlZmluZSBOUEVSUl9NT0RVTEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5Q
RVJSX0JBU0UgKyA0KQorI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgKE5QRVJSX0JBU0UgKyA2KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJS
T1IgICAgKE5QRVJSX0JBU0UgKyA3KQorI2RlZmluZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lP
Tl9FUlJPUiAgKE5QRVJSX0JBU0UgKyA4KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BBUkFNICAg
ICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAg
ICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMCkKKyNkZWZpbmUgTlBFUlJfRklMRV9OT1Rf
Rk9VTkQgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTEpCisjZGVmaW5lIE5QRVJSX05PX0RB
VEEgICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEyKQorI2RlZmluZSBOUEVSUl9T
VFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMykKIAogLyoKLSAqICAg
IFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgorICogVmFsdWVzIG9mIHR5cGUgTlBSZWFzb246CiAg
Ki8KLSNkZWZpbmUgTlBSRVNfQkFTRSAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIE5QUkVTX0RP
TkUgICAgICAgICAgICAgICAgICAgIChOUFJFU19CQVNFICsgMCkKLSNkZWZpbmUgTlBSRVNfTkVU
V09SS19FUlIgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDEpCi0jZGVmaW5lIE5QUkVTX1VTRVJf
QlJFQUsgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDIpCisjZGVmaW5lIE5QUkVTX0JBU0UgICAg
ICAgICAgMAorI2RlZmluZSBOUFJFU19ET05FICAgICAgICAgKE5QUkVTX0JBU0UgKyAwKQorI2Rl
ZmluZSBOUFJFU19ORVRXT1JLX0VSUiAgKE5QUkVTX0JBU0UgKyAxKQorI2RlZmluZSBOUFJFU19V
U0VSX0JSRUFLICAgKE5QUkVTX0JBU0UgKyAyKQogCiAvKgotICogICAgICBEb24ndCB1c2UgdGhl
c2Ugb2Jzb2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCisgKiBEb24ndCB1c2UgdGhlc2Ugb2Jz
b2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCiAgKi8KICNkZWZpbmUgTlBfTk9FUlIgIE5QX05P
RVJSX2lzX29ic29sZXRlX3VzZV9OUEVSUl9OT19FUlJPUgogI2RlZmluZSBOUF9FSU5WQUwgTlBf
RUlOVkFMX2lzX29ic29sZXRlX3VzZV9OUEVSUl9HRU5FUklDX0VSUk9SCkBAIC00ODQsMjYgKzYx
NywzMiBAQA0KIC8qCiAgKiBWZXJzaW9uIGZlYXR1cmUgaW5mb3JtYXRpb24KICAqLwotI2RlZmlu
ZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgOAotI2RlZmluZSBOUFZFUlNfSEFTX05PVElG
SUNBVElPTiAgICAgOQotI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVDT05ORUNUICAgICAgICA5Ci0j
ZGVmaW5lIE5QVkVSU19XSU4xNl9IQVNfTElWRUNPTk5FQ1QgICAgOQotI2RlZmluZSBOUFZFUlNf
NjhLX0hBU19MSVZFQ09OTkVDVCAgICAxMQotI2RlZmluZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1Mg
ICAgICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hBU19TVFJFQU1PVVRQVVQgICAgICA4CisjZGVmaW5l
IE5QVkVSU19IQVNfTk9USUZJQ0FUSU9OICAgICAgOQorI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVD
T05ORUNUICAgICAgIDkKKyNkZWZpbmUgTlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCA5Cisj
ZGVmaW5lIE5QVkVSU182OEtfSEFTX0xJVkVDT05ORUNUICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hB
U19XSU5ET1dMRVNTICAgICAgICAxMQorI2RlZmluZSBOUFZFUlNfSEFTX1hQQ09OTkVDVF9TQ1JJ
UFRJTkcgMTMKIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgRnVuY3Rpb24g
UHJvdG90eXBlcyAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICBG
dW5jdGlvbiBQcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCiAKICNpZiBkZWZpbmVkKF9XSU5ET1dTKSAmJiAhZGVmaW5lZChXSU4zMikKICNk
ZWZpbmUgTlBfTE9BRERTICBfbG9hZGRzCiAjZWxzZQorI2lmIGRlZmluZWQoX19PUzJfXykKKyNk
ZWZpbmUgTlBfTE9BRERTIF9TeXN0ZW0KKyNlbHNlCiAjZGVmaW5lIE5QX0xPQUREUwogI2VuZGlm
CisjZW5kaWYKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKKyNpZm5kZWYgX19T
WU1CSUFOMzJfXworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgog
I2VuZGlmCiAKIC8qCkBAIC01MTEsNzggKzY1MCwxNTAgQEANCiAgKi8KIAogI2lmZGVmIFhQX1VO
SVgKLWNoYXIqICAgICAgICAgICAgICAgICAgICBOUFBfR2V0TUlNRURlc2NyaXB0aW9uKHZvaWQp
OworY2hhciogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lkKTsKICNlbmRpZiAvKiBYUF9VTklY
ICovCiAKLU5QRXJyb3IgICAgIE5QUF9Jbml0aWFsaXplKHZvaWQpOwotdm9pZCAgICAgICAgTlBQ
X1NodXRkb3duKHZvaWQpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAgIE5QUF9OZXcoTlBNSU1F
VHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsK
LU5QRXJyb3IgICAgIE5QX0xPQUREUyAgICBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2
ZWREYXRhKiogc2F2ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX1NldFdpbmRvdyhO
UFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAg
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVr
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlw
ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlBSZWFzb24gcmVhc29uKTsKLWludDMyICAgICAgICBOUF9MT0FERFMgICAgTlBQ
X1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtKTsKLWludDMyICAgICAg
ICBOUF9MT0FERFMgICAgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwg
aW50MzIgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyIGxl
biwgdm9pZCogYnVmZmVyKTsKLXZvaWQgICAgICAgIE5QX0xPQUREUyAgICBOUFBfU3RyZWFtQXNG
aWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCAgICAgICAgTlBf
TE9BRERTICAgIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQp
OwotaW50MTYgICAgICAgICAgICBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBl
dmVudCk7Ci12b2lkICAgICAgICBOUF9MT0FERFMgICAgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFu
Y2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsKLWpyZWYgICAgICAgIE5QX0xP
QUREUyAgICAgICAgICAgIE5QUF9HZXRKYXZhQ2xhc3Modm9pZCk7Ci1OUEVycm9yICAgICBOUFBf
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yICAgICBOUFBf
U2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7CisjaWZkZWYgX19TWU1CSUFO
MzJfXworSU1QT1JUX0MgY29uc3QgVERlc0MxNiogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lk
KTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCiAKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9J
bml0aWFsaXplKHZvaWQpOworI2lmZGVmIF9fU1lNQklBTjMyX18KK0lNUE9SVF9DCisjZW5kaWYg
LyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQp
OworCisjaWZuZGVmIF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXcoTlBN
SU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbHNlCitO
UEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAorICAgICAgICAgICAgICB1aW50MTYgbW9kZSwgQ0Rlc0NBcnJheSogYXJnbiwKKyAgICAg
ICAgICAgICAgQ0Rlc0NBcnJheSogYXJndiwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbmRpZiAv
KiBfX1NZTUJJQU4zMl9fICovCisKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95KE5QUCBp
bnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRX
aW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKK05QRXJyb3IgTlBfTE9BRERT
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlwZSk7CitOUEVycm9y
IE5QX0xPQUREUyBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24p
OworaW50MzIgICBOUF9MT0FERFMgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVh
bSogc3RyZWFtKTsKK2ludDMyICAgTlBfTE9BRERTIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5Q
U3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7CisKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordm9p
ZCAgICBOUF9MT0FERFMgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZu
YW1lKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1N0
cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGZuYW1lKTsKKyNlbmRpZiAvKiBf
X1NZTUJJQU4zMl9fICovCisKK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9QcmludChOUFAgaW5zdGFu
Y2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOworaW50MTYgICBOUF9MT0FERFMgTlBQX0hhbmRs
ZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpOworCisjaWZuZGVmIF9fU1lNQklBTjMy
X18KK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBj
aGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNv
biwgdm9pZCogbm90aWZ5RGF0YSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK3ZvaWQgICAg
TlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCisjaWZkZWYgT0pJCitq
cmVmICAgIE5QX0xPQUREUyBOUFBfR2V0SmF2YUNsYXNzKHZvaWQpOworI2VuZGlmCisKKyNpZmRl
ZiBfX1NZTUJJQU4zMl9fCitJTVBPUlRfQworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KK05Q
RXJyb3IgTlBfTE9BRERTIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7CitOUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOworCiAvKgogICog
TlBOXyogZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBieSB0aGUgbmF2aWdhdG9yIGFuZCBjYWxsZWQg
YnkgdGhlIHBsdWdpbi4KICAqLwordm9pZCAgICBOUF9MT0FERFMgTlBOX1ZlcnNpb24oaW50KiBw
bHVnaW5fbWFqb3IsIGludCogcGx1Z2luX21pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBuZXRzY2FwZV9tYWpvciwgaW50KiBuZXRzY2FwZV9taW5vcik7CiAKLXZvaWQg
ICAgICAgIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQqIG5l
dHNjYXBlX21pbm9yKTsKLU5QRXJyb3IgICAgIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGlmeURhdGEpOwotTlBFcnJvciAgICAgTlBOX0dldFVS
TChOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7Ci1OUEVycm9yICAgICBOUE5fUG9zdFVSTE5vdGlmeShO
UFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsKLU5QRXJyb3IgICAg
IE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlKTsKLU5QRXJy
b3IgICAgIE5QTl9SZXF1ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFu
Z2VMaXN0KTsKLU5QRXJyb3IgICAgIE5QTl9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVU
eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJn
ZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKLWludDMyICAgICAgICBOUE5fV3JpdGUoTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQqIGJ1ZmZlcik7Ci1OUEVycm9yICAgICBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uKTsKLXZvaWQgICAgICAgIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLWNvbnN0IGNoYXIqICAgIE5QTl9Vc2VyQWdlbnQoTlBQ
IGluc3RhbmNlKTsKLXZvaWQqICAgICAgICBOUE5fTWVtQWxsb2ModWludDMyIHNpemUpOwotdm9p
ZCAgICAgICAgTlBOX01lbUZyZWUodm9pZCogcHRyKTsKLXVpbnQzMiAgICAgICAgTlBOX01lbUZs
dXNoKHVpbnQzMiBzaXplKTsKLXZvaWQgICAgICAgIE5QTl9SZWxvYWRQbHVnaW5zKE5QQm9vbCBy
ZWxvYWRQYWdlcyk7Ci1KUklFbnYqICAgICBOUE5fR2V0SmF2YUVudih2b2lkKTsKLWpyZWYgICAg
ICAgIE5QTl9HZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwotTlBFcnJvciAgICAgTlBOX0dldFZh
bHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnZhbHVlKTsKLU5QRXJyb3IgICAgIE5QTl9TZXRWYWx1ZShOUFAg
aW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICp2YWx1ZSk7Ci12b2lkICAgICAgICBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGlu
c3RhbmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsKLXZvaWQgICAgICAgIE5QTl9JbnZhbGlkYXRl
UmVnaW9uKE5QUCBpbnN0YW5jZSwgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Ci12b2lkICAgICAg
ICBOUE5fRm9yY2VSZWRyYXcoTlBQIGluc3RhbmNlKTsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
TlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFVSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNo
YXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
dGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRVUkwo
TlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTE5v
dGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsK
K05QRXJyb3IgTlBfTE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB1
aW50MzIgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVm
LCBOUEJvb2wgZmlsZSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK05QRXJyb3IgTlBfTE9B
RERTIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwg
dm9pZCogbm90aWZ5RGF0YSk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0
YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBURGVzQzE2KiB0YXJnZXQpOworTlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkxOb3Rp
ZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7CitOUEVy
cm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIHVy
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGJ1ZiwgTlBCb29s
IGZpbGUpOworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVz
Ci19ICAvKiBlbmQgZXh0ZXJuICJDIiAqLworTlBFcnJvciBOUF9MT0FERFMgTlBOX1JlcXVlc3RS
ZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiByYW5nZUxpc3QpOworCisjaWZuZGVm
IF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9OZXdTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRhcmdldCwgTlBTdHJlYW0qKiBzdHJlYW0pOworI2Vsc2UvKiBfX1NZTUJJQU4z
Ml9fICovCitOUEVycm9yIE5QX0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBN
SU1FVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVz
QzE2KiB0YXJnZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9f
ICovCisKK2ludDMyICAgTlBfTE9BRERTIE5QTl9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sIGludDMyIGxlbiwgdm9pZCogYnVmZmVyKTsKK05QRXJyb3IgTlBfTE9BRERTIE5Q
Tl9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24g
cmVhc29uKTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9fCit2b2lkICAgIE5QX0xPQUREUyBOUE5f
U3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogbWVzc2FnZSk7CisjZWxzZS8qIF9fU1lN
QklBTjMyX18gKi8KK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNlLCBj
b25zdCBURGVzQzE2JiBtZXNzYWdlKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCisKKyNp
Zm5kZWYgX19TWU1CSUFOMzJfXworY29uc3QgY2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQo
TlBQIGluc3RhbmNlKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLworY29uc3QgVERlc0MxNiog
TlBfTE9BRERTICBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7CisjZW5kaWYgLyogX19TWU1C
SUFOMzJfXyAqLworCisKK3ZvaWQqICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1aW50MzIgc2l6
ZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fTWVtRnJlZSh2b2lkKiBwdHIpOwordWludDMyICBO
UF9MT0FERFMgTlBOX01lbUZsdXNoKHVpbnQzMiBzaXplKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5Q
Tl9SZWxvYWRQbHVnaW5zKE5QQm9vbCByZWxvYWRQYWdlcyk7CisjaWZkZWYgT0pJCitKUklFbnYq
IE5QX0xPQUREUyBOUE5fR2V0SmF2YUVudih2b2lkKTsKK2pyZWYgICAgTlBfTE9BRERTIE5QTl9H
ZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwogI2VuZGlmCitOUEVycm9yIE5QX0xPQUREUyBOUE5f
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUp
OworTlBFcnJvciBOUF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9JbnZhbGlk
YXRlUmVjdChOUFAgaW5zdGFuY2UsIE5QUmVjdCAqaW52YWxpZFJlY3QpOwordm9pZCAgICBOUF9M
T0FERFMgTlBOX0ludmFsaWRhdGVSZWdpb24oTlBQIGluc3RhbmNlLCBOUFJlZ2lvbiBpbnZhbGlk
UmVnaW9uKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9Gb3JjZVJlZHJhdyhOUFAgaW5zdGFuY2Up
OwogCisjaWZuZGVmIF9fU1lNQklBTjMyX18KKyAjaWZkZWYgX19jcGx1c3BsdXMKKyB9ICAvKiBl
bmQgZXh0ZXJuICJDIiAqLworICNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBSQ19JTlZPS0VE
ICovCisjaWZkZWYgX19PUzJfXworI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorCiAjZW5kaWYgLyog
X05QQVBJX0hfICovCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTIwLDE1ICsyMCwxNiBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCisjaW5jbHVk
ZSA8SGFzaE1hcC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZV9pbXBsLmg+
CisjaW5jbHVkZSA8aWRlbnRpZmllci5oPgogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1
ZGUgPGNfdXRpbGl0eS5oPgogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lX2lt
cGwuaD4KLQorLyoKIHN0YXRpYyBCb29sZWFuIHN0cmluZ0lkZW50aWZpZXJFcXVhbChjb25zdCB2
b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVlMikKIHsKICAgICByZXR1cm4gc3RyY21wKChj
b25zdCBjaGFyICopdmFsdWUxLCAoY29uc3QgY2hhciAqKXZhbHVlMikgPT0gMDsKQEAgLTEwMCwx
NCArMTAxLDE0IEBADQogICAgIHJldHVybiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeTsKIH0KIAot
TlBJZGVudGlmaWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoY29uc3QgTlBVVEY4ICpuYW1l
KQorTlBJZGVudGlmaWVyIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5h
bWUpCiB7CiAgICAgYXNzZXJ0IChuYW1lKTsKLSAgICAKKwogICAgIGlmIChuYW1lKSB7CiAgICAg
ICAgIFByaXZhdGVJZGVudGlmaWVyICppZGVudGlmaWVyID0gMDsKLSAgICAgICAgCi0gICAgICAg
IGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAo
Z2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKiluYW1lKTsKKwor
ICAgICAgICAvL2lkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilu
YW1lKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgewogICAgICAgICAgICAgaWRlbnRp
ZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKW1hbGxvYyAoc2l6ZW9mKFByaXZhdGVJZGVudGlm
aWVyKSk7CiAgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMs
IHNvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwKQEAgLTExNiw2MCArMTE3LDEz
OCBAQA0KICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlkZW50aWZpZXJOYW1lID0gc3RyZHVwIChu
YW1lKTsKICAgICAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9IGlkZW50aWZpZXJO
YW1lOwogCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRp
ZmllckRpY3Rpb25hcnkoKSwgaWRlbnRpZmllck5hbWUsIChjb25zdCB2b2lkICopaWRlbnRpZmll
cik7CisgICAgICAgICAgICAvL0NGRGljdGlvbmFyeUFkZFZhbHVlIChnZXRTdHJpbmdJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCBpZGVudGlmaWVyTmFtZSwgKGNvbnN0IHZvaWQgKilpZGVudGlmaWVy
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCi12b2lkIF9OUE5fR2V0U3RyaW5nSWRl
bnRpZmllcnMgKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwgTlBJZGVu
dGlmaWVyICppZGVudGlmaWVycykKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIChjb25z
dCBOUFVURjggKipuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciAqaWRlbnRp
ZmllcnMpCiB7CiAgICAgYXNzZXJ0IChuYW1lcyk7CiAgICAgYXNzZXJ0IChpZGVudGlmaWVycyk7
Ci0gICAgCisKICAgICBpZiAobmFtZXMgJiYgaWRlbnRpZmllcnMpIHsKICAgICAgICAgaW50IGk7
Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykgewot
ICAgICAgICAgICAgaWRlbnRpZmllcnNbaV0gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG5h
bWVzW2ldKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIgKG5hbWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotTlBJZGVudGlmaWVyIF9O
UE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludGlkKQorTlBJZGVudGlmaWVyIE5QTl9HZXRJ
bnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCiB7CisvL2ZvcmNlIGFzc2VydAorCisKICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaWRlbnRpZmllciA9IDA7Ci0gICAgCi0gICAgaWRlbnRpZmllciA9
IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFyeUdldFZhbHVlIChnZXRJbnRJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWludGlkKTsKK2Fzc2VydCggaWRlbnRpZmll
ciApOworICAgIC8vaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFy
eUdldFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWlu
dGlkKTsKICAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7CiAgICAgICAgIGlkZW50aWZpZXIgPSAo
UHJpdmF0ZUlkZW50aWZpZXIgKiltYWxsb2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOwog
ICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMsIHNvIHRoaXMgZGlj
dGlvbmFyeSB3aWxsIGdyb3cuCiAgICAgICAgIGlkZW50aWZpZXItPmlzU3RyaW5nID0gZmFsc2U7
CiAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLm51bWJlciA9IGludGlkOwogCi0gICAgICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qg
dm9pZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOworICAgICAgICAvL0NGRGlj
dGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9p
ZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4g
KE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworfSovCisKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
S0pTOjpVU3RyaW5nOjpSZXA+LCBQcml2YXRlSWRlbnRpZmllcio+IFN0cmluZ0lkZW50aWZpZXJN
YXA7CisKK3N0YXRpYyBTdHJpbmdJZGVudGlmaWVyTWFwKiBnZXRTdHJpbmdJZGVudGlmaWVyTWFw
KCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nSWRlbnRpZmllck1hcCogc3RyaW5nSWRlbnRpZmllck1h
cCA9IDA7CisgICAgaWYgKCFzdHJpbmdJZGVudGlmaWVyTWFwKQorICAgICAgICBzdHJpbmdJZGVu
dGlmaWVyTWFwID0gbmV3IFN0cmluZ0lkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIHN0cmluZ0lk
ZW50aWZpZXJNYXA7CiB9CiAKLWJvb2wgX05QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit0eXBlZGVmIEhhc2hNYXA8aW50LCBQcml2YXRlSWRlbnRpZmllcio+
IEludElkZW50aWZpZXJNYXA7CisKK3N0YXRpYyBJbnRJZGVudGlmaWVyTWFwKiBnZXRJbnRJZGVu
dGlmaWVyTWFwKCkKIHsKKyAgICBzdGF0aWMgSW50SWRlbnRpZmllck1hcCogaW50SWRlbnRpZmll
ck1hcCA9IDA7CisgICAgaWYgKCFpbnRJZGVudGlmaWVyTWFwKQorICAgICAgICBpbnRJZGVudGlm
aWVyTWFwID0gbmV3IEludElkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIGludElkZW50aWZpZXJN
YXA7Cit9CisKK0VYUE9SVF9DCitOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
Y29uc3QgTlBVVEY4KiBuYW1lKQoreworICAgIGFzc2VydChuYW1lKTsKKworICAgIGlmIChuYW1l
KSB7CisgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsKKworICAgICAg
ICBpZGVudGlmaWVyID0gZ2V0U3RyaW5nSWRlbnRpZmllck1hcCgpLT5nZXQoaWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIobmFtZSkudXN0cmluZygpLmFyZXAoKSk7CisgICAgICAgIGlmIChpZGVu
dGlmaWVyID09IDApIHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZp
ZXIqKW1hbGxvYyhzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIC8vIFdl
IG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwg
Z3JvdywgYXMgd2lsbAorICAgICAgICAgICAgLy8gdGhlIG1lbW9yeSBmb3IgdGhlIGlkZW50aWZp
ZXIgbmFtZSBzdHJpbmdzLgorICAgICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSB0cnVl
OworICAgICAgICAgICAgaWRlbnRpZmllci0+dmFsdWUuc3RyaW5nID0gc3RyZHVwKG5hbWUpOwor
CisgICAgICAgICAgICBnZXRTdHJpbmdJZGVudGlmaWVyTWFwKCktPnNldChpZGVudGlmaWVyRnJv
bU5QSWRlbnRpZmllcihuYW1lKS51c3RyaW5nKCkuYXJlcCgpLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitFWFBPUlRfQwordm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cnMoY29uc3QgTlBVVEY4KiogbmFtZXMsIGludDMyX3QgbmFtZUNvdW50LCBOUElkZW50aWZpZXIq
IGlkZW50aWZpZXJzKQoreworICAgIGFzc2VydChuYW1lcyk7CisgICAgYXNzZXJ0KGlkZW50aWZp
ZXJzKTsKKworICAgIGlmIChuYW1lcyAmJiBpZGVudGlmaWVycykKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0g
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZXNbaV0pOworfQorCitFWFBPUlRfQworTlBJZGVu
dGlmaWVyIE5QTl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCit7CisgICAgUHJpdmF0
ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSAwOworCisgICAgaWRlbnRpZmllciA9IGdldEludElk
ZW50aWZpZXJNYXAoKS0+Z2V0KGludGlkKTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7Cisg
ICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKW1hbGxvYyhzaXplb2YoUHJp
dmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgLy8gV2UgbmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVy
IG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBncm93LgorICAgICAgICBpZGVudGlmaWVy
LT5pc1N0cmluZyA9IGZhbHNlOworICAgICAgICBpZGVudGlmaWVyLT52YWx1ZS5udW1iZXIgPSBp
bnRpZDsKKworICAgICAgICBnZXRJbnRJZGVudGlmaWVyTWFwKCktPnNldChpbnRpZCwgaWRlbnRp
Zmllcik7CisgICAgfQorICAgIHJldHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7Cit9CisK
K0VYUE9SVF9DCitib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIg
KilpZGVudGlmaWVyOwogICAgIHJldHVybiBpLT5pc1N0cmluZzsKIH0KIAotTlBVVEY4ICpfTlBO
X1VURjhGcm9tSWRlbnRpZmllciAoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQwor
TlBVVEY4ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyIChOUElkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBQcml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKWlkZW50
aWZpZXI7CiAgICAgaWYgKCFpLT5pc1N0cmluZyB8fCAhaS0+dmFsdWUuc3RyaW5nKQogICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICAgICAgCisKICAgICByZXR1cm4gKE5QVVRGOCAqKXN0cmR1cChp
LT52YWx1ZS5zdHJpbmcpOwogfQogCi1pbnQzMl90IF9OUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQworaW50MzJfdCBOUE5fSW50RnJvbUlkZW50
aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIg
KmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilpZGVudGlmaWVyOwogICAgIGlmICghaS0+aXNTdHJp
bmcpCkBAIC0yMjEsOSArMzAwLDkgQEANCiB7CiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgIT0gTlBW
YXJpYW50VHlwZV9Cb29sKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAg
KnJlc3VsdCA9IHZhcmlhbnQtPnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzMsNyArMzEyLDcgQEANCiAgICAgICAgIE5QU3RyaW5nIGVtcHR5U3Ry
aW5nID0geyAwLCAwIH07CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZzsKICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgIHJldHVybiB2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZTsKIH0KIApA
QCAtMjQ1LDcgKzMyNCw3IEBADQogICAgICAgICAqcmVzdWx0ID0gKGludDMyX3QpdmFyaWFudC0+
dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU3LDcgKzMzNiw3IEBADQogICAgICAgICAq
cmVzdWx0ID0gdmFyaWFudC0+dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY1LDkgKzM0
NCw5IEBADQogewogICAgIGlmICh2YXJpYW50LT50eXBlICE9IE5QVmFyaWFudFR5cGVfT2JqZWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKKwogICAgICpyZXN1bHQgPSB2
YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zMjEsNyArNDAwLDcgQEANCiB2b2lkIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmpl
Y3QgKE5QVmFyaWFudCAqdmFyaWFudCwgTlBPYmplY3QgKnZhbHVlKQogewogICAgIHZhcmlhbnQt
PnR5cGUgPSBOUFZhcmlhbnRUeXBlX09iamVjdDsKLSAgICB2YXJpYW50LT52YWx1ZS5vYmplY3RW
YWx1ZSA9IF9OUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CisgICAgdmFyaWFudC0+dmFsdWUub2Jq
ZWN0VmFsdWUgPSBOUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CiB9CiAKIHZvaWQgTlBOX0luaXRp
YWxpemVWYXJpYW50V2l0aFZhcmlhbnQgKE5QVmFyaWFudCAqZGVzdGluYXRpb24sIGNvbnN0IE5Q
VmFyaWFudCAqc291cmNlKQpAQCAtMzYyLDEyICs0NDEsMTMgQEANCiAgICAgfQogfQogCi12b2lk
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MK
K3ZvaWQgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKE5QVmFyaWFudCAqdmFyaWFudCkKIHsKICAg
ICBhc3NlcnQgKHZhcmlhbnQpOwotICAgIAorCiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgPT0gTlBW
YXJpYW50VHlwZV9PYmplY3QpIHsKLSAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CisgICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
ID0gMDsKICAgICB9CiAgICAgZWxzZSBpZiAodmFyaWFudC0+dHlwZSA9PSBOUFZhcmlhbnRUeXBl
X1N0cmluZykgewpAQCAtMzc1LDM0ICs0NTUsMzYgQEANCiAgICAgICAgIHZhcmlhbnQtPnZhbHVl
LnN0cmluZ1ZhbHVlLlVURjhDaGFyYWN0ZXJzID0gMDsKICAgICAgICAgdmFyaWFudC0+dmFsdWUu
c3RyaW5nVmFsdWUuVVRGOExlbmd0aCA9IDA7CiAgICAgfQotICAgIAorCiAgICAgdmFyaWFudC0+
dHlwZSA9IE5QVmFyaWFudFR5cGVfVm9pZDsKIH0KIAogCi1OUE9iamVjdCAqX05QTl9DcmVhdGVP
YmplY3QgKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcykKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBO
X0NyZWF0ZU9iamVjdCAoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKQogewogICAgIGFzc2VydCAo
YUNsYXNzKTsKIAogICAgIGlmIChhQ2xhc3MpIHsKICAgICAgICAgTlBPYmplY3QgKm9iajsKLSAg
ICAgICAgCisKICAgICAgICAgaWYgKGFDbGFzcy0+YWxsb2NhdGUgIT0gTlVMTCkKICAgICAgICAg
ICAgIG9iaiA9IGFDbGFzcy0+YWxsb2NhdGUgKG5wcCwgYUNsYXNzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgb2JqID0gKE5QT2JqZWN0ICopbWFsbG9jIChzaXplb2YoTlBPYmplY3QpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgIG9iai0+X2NsYXNzID0gYUNsYXNzOwogICAgICAgICBv
YmotPnJlZmVyZW5jZUNvdW50ID0gMTsKIAogICAgICAgICByZXR1cm4gb2JqOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiAwOwogfQogCiAKLU5QT2JqZWN0ICpfTlBOX1JldGFpbk9iamVjdCAo
TlBPYmplY3QgKm9iaikKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBOX1JldGFpbk9iamVjdCAoTlBP
YmplY3QgKm9iaikKIHsKICAgICBhc3NlcnQgKG9iaik7CiAKQEAgLTQxMywxNCArNDk1LDE1IEBA
DQogfQogCiAKLXZvaWQgX05QTl9SZWxlYXNlT2JqZWN0IChOUE9iamVjdCAqb2JqKQorRVhQT1JU
X0MKK3ZvaWQgTlBOX1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpvYmopCiB7CiAgICAgYXNzZXJ0
IChvYmopOwogICAgIGFzc2VydCAob2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKTsKIAogICAgIGlm
IChvYmogJiYgb2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKSB7CiAgICAgICAgIG9iai0+cmVmZXJl
bmNlQ291bnQtLTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5yZWZlcmVu
Y2VDb3VudCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUp
CiAgICAgICAgICAgICAgICAgb2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUgKG9iaik7CkBAIC00MzAs
MTIgKzUxMywxMyBAQA0KICAgICB9CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb25XaXRoVVRG
OCAoTlBPYmplY3QgKm9iaiwgY29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkK
K0VYUE9SVF9DCit2b2lkIE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOCAoTlBPYmplY3QgKm9iaiwg
Y29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkKIHsKICAgICBhc3NlcnQgKG9i
aik7CiAgICAgYXNzZXJ0IChtZXNzYWdlKTsKLSAKKwogICAgIGlmIChvYmogJiYgbWVzc2FnZSkg
ewotICAgICAgICBfTlBOX1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKKyAgICAgICAgTlBO
X1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKICAgICB9CiB9CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL25wcnVudGltZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTczLDYgKzczLDcgQEAN
CiAjZW5kaWYKIAogI2luY2x1ZGUgIm5wYXBpLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
c3RkaW50Lmg+CiAKIC8qCiAgICAgVGhpcyBBUEkgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGJpbmRp
bmcgY29kZSB3cml0dGVuIGluIEMgdG8gc2NyaXB0CkBAIC0xNTEsNiArMTUyLDcgQEANCiAgICAg
QWZ0ZXIgY2FsbGluZyBOUFJlbGVhc2VWYXJpYW50VmFsdWUsIHRoZSB0eXBlIG9mIHRoZSB2YXJp
YW50IHdpbGwKICAgICBiZSBzZXQgdG8gTlBWYXJpYW50VW5kZWZpbmVkVHlwZS4KICovCitJTVBP
UlRfQwogdm9pZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KTsK
IAogI2RlZmluZSBOUFZBUklBTlRfSVNfVk9JRChfdikgICAgKChfdikudHlwZSA9PSBOUFZhcmlh
bnRUeXBlX1ZvaWQpCkBAIC0yMTIsMjAgKzIxNCwyNiBAQA0KICAgICBjb21wYXJlZCB1c2luZyA9
PS4gIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhlIHJlcXVlc3RlZAogICAgIE5QSWRlbnRpZmll
cihzKSB3aWxsIGJlIE5VTEwuCiAqLworSU1QT1JUX0MKIE5QSWRlbnRpZmllciBOUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpOworSU1QT1JUX0MKIHZvaWQgTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3Vu
dCwgTlBJZGVudGlmaWVyICppZGVudGlmaWVycyk7CitJTVBPUlRfQwogTlBJZGVudGlmaWVyIE5Q
Tl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0lk
ZW50aWZpZXJJc1N0cmluZyhOUElkZW50aWZpZXIgaWRlbnRpZmllcik7CiAKIC8qCiAgICAgVGhl
IE5QVVRGOCByZXR1cm5lZCBmcm9tIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgU0hPVUxEIGJlIGZy
ZWVkLgogKi8KK0lNUE9SVF9DCiBOUFVURjggKk5QTl9VVEY4RnJvbUlkZW50aWZpZXIoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpOwogCiAvKgogICAgIEdldCB0aGUgaW50ZWdlciByZXByZXNlbnRl
ZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlzIG5vdCBhbgogICAgIGludGVnZXIgaWRl
bnRpZmllciwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCiAqLworSU1QT1JUX0MKIGludDMy
X3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKIAogLyoK
QEAgLTI5MSwxMSArMjk5LDEzIEBADQogICAgIGZ1bmN0aW9uIGl0IGlzIHRoZSByZXNwb25zaWJp
bGl0eSBvZiB0aGF0IGltcGxlbWVudGF0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCByZXRhaW4KICAg
ICBjb3VudCB0byAxLgogKi8KK0lNUE9SVF9DCiBOUE9iamVjdCAqTlBOX0NyZWF0ZU9iamVjdChO
UFAgbnBwLCBOUENsYXNzICphQ2xhc3MpOwogCiAvKgogICAgIEluY3JlbWVudCB0aGUgTlBPYmpl
Y3QncyByZWZlcmVuY2UgY291bnQuCiAqLworSU1QT1JUX0MKIE5QT2JqZWN0ICpOUE5fUmV0YWlu
T2JqZWN0IChOUE9iamVjdCAqb2JqKTsKIAogLyoKQEAgLTMwMyw2ICszMTMsNyBAQA0KICAgICBj
b3VudCBnb2VzIHRvIHplcm8sIHRoZSBjbGFzcydzIGRlc3Ryb3kgZnVuY3Rpb24gaXMgaW52b2tl
IGlmCiAgICAgc3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIG9iamVjdCBpcyBmcmVlZCBkaXJlY3Rs
eS4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fUmVsZWFzZU9iamVjdCAoTlBPYmplY3QgKm9iaik7
CiAKIC8qCkBAIC0zMTYsMTkgKzMyNywyOCBAQA0KICAgICBDYWxscyBtYWRlIGZyb20gcGx1Z2lu
IGNvZGUgdG8gc2NyaXB0IG11c3QgYmUgbWFkZSBmcm9tIHRoZSB0aHJlYWQKICAgICBvbiB3aGlj
aCB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZC4KICovCitJTVBPUlRfQwogYm9vbCBOUE5fSW52
b2tlKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNv
bnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0
KTsKK0lNUE9SVF9DCiBib29sIE5QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpu
cG9iaiwgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50
ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0V2YWx1YXRlKE5QUCBucHAsIE5QT2JqZWN0
ICpucG9iaiwgTlBTdHJpbmcgKnNjcmlwdCwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MK
IGJvb2wgTlBOX0dldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBO
X1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSwgY29uc3QgTlBWYXJpYW50ICp2YWx1ZSk7CitJTVBPUlRfQwogYm9vbCBOUE5fUmVt
b3ZlUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKTsKK0lNUE9SVF9DCiBib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVj
dCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOworSU1QT1JUX0MKIGJvb2wgTlBO
X0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKTsKIAogLyoKICAgICBOUE5fU2V0RXhjZXB0aW9uIG1heSBiZSBjYWxsZWQgdG8gdHJpZ2dl
ciBhIHNjcmlwdCBleGNlcHRpb24gdXBvbiByZXR1cm4KICAgICBmcm9tIGVudHJ5IHBvaW50cyBp
bnRvIE5QT2JqZWN0cy4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fU2V0RXhjZXB0aW9uIChOUE9i
amVjdCAqb2JqLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDE4OCBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQ0K
Ky8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICogIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUEFTU19SRUZfUFRSX0gNCisj
ZGVmaW5lIEtYTUxDT1JFX1BBU1NfUkVGX1BUUl9IDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFBh
c3NSZWZQdHI8VD4gYWRvcHRSZWYoVCAqcCk7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IA0KKyAgICBjbGFzcyBQYXNzUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAg
UGFzc1JlZlB0cigpIDogbV9wdHIoMCkge30NCisgICAgICAgIFBhc3NSZWZQdHIoVCAqcHRyKSA6
IG1fcHRyKHB0cikgeyBpZiAocHRyKSBwdHItPnJlZigpOyB9DQorICAgICAgICAvLyBJdCBzb21l
d2hhdCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFsbG93IHRyYW5zZmVyIG9mIG93bmVyc2hp
cCBvdXQgb2YNCisgICAgICAgIC8vIGEgY29uc3QgUGFzc1JlZlB0ci4gSG93ZXZlciwgaXQgbWFr
ZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NSZWZQdHINCisgICAgICAgIC8vIHRl
bXBvcmFyaWVzLCBhbmQgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYSBuZWVkIHRvIHVzZSByZWFsIGNv
bnN0IFBhc3NSZWZQdHJzIA0KKyAgICAgICAgLy8gYW55d2F5Lg0KKyAgICAgICAgUGFzc1JlZlB0
cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZSgpKSB7fQ0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykg
OiBtX3B0cihvLnJlbGVhc2UoKSkgeyB9DQorDQorICAgICAgICB+UGFzc1JlZlB0cigpIHsgaWYg
KFQgKnB0ciA9IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFU+IA0KKyAgICAgICAgUGFzc1JlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8p
IDogbV9wdHIoby5nZXQoKSkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisg
ICAgICAgIA0KKyAgICAgICAgVCAqZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisNCisg
ICAgICAgIFQgKnJlbGVhc2UoKSBjb25zdCB7IFQgKnRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7IHJl
dHVybiB0bXA7IH0NCisNCisgICAgICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpt
X3B0cjsgfQ0KKyAgICAgICAgVCAqb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9
DQorICAgICAgICANCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
cHRyOyB9DQorDQorICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGlt
cGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMu
DQorICAgICAgICB0eXBlZGVmIFQqIChQYXNzUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSko
KSBjb25zdDsNCisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3B0ciA/ICZQYXNzUmVmUHRyOjpnZXQgOiAwOyB9DQorICAgICAgICANCisgICAg
ICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShUICopOw0KKyAgICAgICAgUGFzc1JlZlB0ciYgb3Bl
cmF0b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8
VT4mKTsNCisNCisgICAgICAgIGZyaWVuZCBQYXNzUmVmUHRyIGFkb3B0UmVmPFQ+KFQgKik7DQor
ICAgIHByaXZhdGU6DQorICAgICAgICAvLyBhZG9wdGluZyBjb25zdHJ1Y3Rvcg0KKyAgICAgICAg
UGFzc1JlZlB0cihUICpwdHIsIGJvb2wpIDogbV9wdHIocHRyKSB7fQ0KKyAgICAgICAgbXV0YWJs
ZSBUICptX3B0cjsNCisgICAgfTsNCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46
Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mIG8pIA0KKyAgICB7DQorICAgICAgICBUKiBvcHRy
ID0gby5nZXQoKTsNCisgICAgICAgIGlmIChvcHRyKQ0KKyAgICAgICAgICAgIG9wdHItPnJlZigp
Ow0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG9wdHI7DQorICAg
ICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJldHVy
biAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikNCisgICAg
ew0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQorICAgICAg
ICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAgIGlmIChw
dHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0K
KyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxU
PiYgUGFzc1JlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIHJlZikNCisg
ICAgew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxl
YXNlKCk7DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisg
ICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiYgUGFzc1Jl
ZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHJlZikNCisgICAgew0KKyAg
ICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxlYXNlKCk7DQor
ICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJl
dHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwg
Y29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQo
KSA9PSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBj
b25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0g
Yi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNz
UmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0
KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpIA0KKyAg
ICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgDQorICAgIH0NCisgICAgDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
YSA9PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYg
YSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBh
LCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQ
YXNzUmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGIu
Z2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQq
IGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUICpwKQ0KKyAgICB7DQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxUPihwLCB0cnVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJf
Y2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihzdGF0aWNfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiBj
b25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgDQorICAgIHsgDQorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoY29uc3RfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAg
ICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpQYXNzUmVmUHRyOw0K
K3VzaW5nIFdURjo6YWRvcHRSZWY7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0K
K3VzaW5nIFdURjo6Y29uc3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9Q
QVNTX1JFRl9QVFJfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1JlZlB0ci5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9u
IDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9uIDApDQpA
QCAtMCwwICsxLDE4NSBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQ0KKy8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUkVGX1BUUl9IDQorI2Rl
ZmluZSBLWE1MQ09SRV9SRUZfUFRSX0gNCisNCisjaW5jbHVkZSA8YWxnb3JpdGhtPg0KKyNpbmNs
dWRlIDxQYXNzUmVmUHRyLmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAgUmVmUHRy
KCkgOiBtX3B0cigwKSB7fQ0KKyAgICAgICAgUmVmUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsg
aWYgKHB0cikgcHRyLT5yZWYoKTsgfQ0KKyAgICAgICAgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5yZWYoKTsgfQ0KKyAg
ICAgICAgLy8gc2VlIGNvbW1lbnQgaW4gUGFzc1JlZlB0ci5oIGZvciB3aHkgdGhpcyB0YWtlcyBj
b25zdCByZWZlcmVuY2UNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29u
c3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAgICAgflJlZlB0cigpIHsgaWYgKFQgKnB0ciA9
IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyBp
ZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgVCAq
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisgICAgICAgIA0KKyAgICAgICAgUGFzc1Jl
ZlB0cjxUPiByZWxlYXNlKCkgeyBQYXNzUmVmUHRyPFQ+IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsg
bV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9DQorDQorICAgICAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqbV9wdHI7IH0NCisgICAgICAgIFQgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQ0KKyAgICAgICAgDQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3B0cjsgfQ0KKyAgICANCisgICAgICAgIC8vIFRoaXMgY29udmVyc2lvbiBv
cGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3Ro
ZXIgaW50ZWdlciB0eXBlcy4NCisgICAgICAgIHR5cGVkZWYgVCAqIChSZWZQdHI6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKSgpIGNvbnN0Ow0KKyAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6Z2V0IDogMDsgfQ0KKyAgICAg
ICAgDQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsNCisgICAgICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFQgKik7DQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFQ+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAg
ICAgdm9pZCBzd2FwKFJlZlB0ciYpOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVCAqbV9w
dHI7DQorICAgIH07DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+
JiBvKQ0KKyAgICAgICAgOiBtX3B0cihvLnJlbGVhc2UoKSkNCisgICAgew0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9w
ZXJhdG9yPShjb25zdCBSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIG9wdHIgPSBv
LmdldCgpOw0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQor
ICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAg
IGlmIChwdHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0
aGlzOw0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxVPiYgbykNCisgICAgew0KKyAgICAgICAgVCogb3B0ciA9IG8uZ2V0KCk7DQorICAg
ICAgICBpZiAob3B0cikNCisgICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0
ciA9IG1fcHRyOw0KKyAgICAgICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisg
ICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0N
CisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQ0KKyAgICB7DQorICAgICAgICBpZiAob3B0cikNCisg
ICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAgICAg
ICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRl
cmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFBhc3NSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAg
ICAgICAgbV9wdHIgPSBvLnJlbGVhc2UoKTsNCisgICAgICAgIGlmIChwdHIpDQorICAgICAgICAg
ICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0
cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYgbykNCisgICAg
ew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgp
Ow0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAg
ICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIHN0
ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGlubGluZSB2b2lkIHN3YXAoUmVmUHRyPFQ+JiBhLCBSZWZQdHI8VD4mIGIpDQorICAgIHsN
CisgICAgICAgIGEuc3dhcChiKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEs
IGNvbnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09
IGIuZ2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYgYSwgVSogYikNCisg
ICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IA0KKyAgICB9DQorICAgIA0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25z
dCBSZWZQdHI8VT4mIGIpDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdl
dCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpDQorICAgIHsN
CisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IA0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIFJlZlB0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFJlZlB0cjxVPiYgcCkN
CisgICAgeyANCisgICAgICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgUmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHAp
DQorICAgIHsgDQorICAgICAgICByZXR1cm4gUmVmUHRyPFQ+KGNvbnN0X2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpS
ZWZQdHI7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0KK3VzaW5nIFdURjo6Y29u
c3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9SRUZfUFRSX0gNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI2
LDExICsyNiwxMSBAQA0KICNpbmNsdWRlIDxpbnRlcnByZXRlci5oPgogCiAjaW5jbHVkZSA8cnVu
dGltZV9vYmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KLSNpbmNsdWRlIDxvYmpj
X2luc3RhbmNlLmg+CisvLyNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KKy8vI2luY2x1ZGUgPG9i
amNfaW5zdGFuY2UuaD4KICNpbmNsdWRlIDxjX2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8TlBfanNv
YmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPGpuaV9qc29i
amVjdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIEtKUzo6Qmlu
ZGluZ3M7CkBAIC05OSwzMyArOTksMzUgQEANCiAgICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFu
Y2UgKGV4ZWMsIHRoaXMsIGFWYWx1ZSk7CiB9CiAKK0VYUE9SVF9DCiBJbnN0YW5jZSAqSW5zdGFu
Y2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChCaW5kaW5nTGFuZ3VhZ2UgbGFu
Z3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0ICpleGVjdXRpb25D
b250ZXh0KQogewogICAgIEluc3RhbmNlICpuZXdJbnN0YW5jZSA9IDA7CiAgICAgCiAgICAgc3dp
dGNoIChsYW5ndWFnZSkgewotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICBu
ZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJ
bnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4dCk7Ci0JICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3Rh
bmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGlu
Z3M6Ok9iamNJbnN0YW5jZSAoKHN0cnVjdCBvYmpjX29iamVjdCAqKW5hdGl2ZUluc3RhbmNlKTsK
LQkgICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogewotCSAgICBuZXdJ
bnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6Q0luc3RhbmNlICgoTlBPYmplY3QgKiluYXRpdmVJbnN0
YW5jZSk7Ci0JICAgIGJyZWFrOwotCX0KLQlkZWZhdWx0OgotCSAgICBicmVhazsKKyAgICBjYXNl
IEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBC
aW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEluc3RhbmNlOjpPYmpl
Y3RpdmVDTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6
T2JqY0luc3RhbmNlICgoc3RydWN0IG9iamNfb2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAg
ICAgIG5ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpDSW5zdGFuY2UgKChOUE9iamVjdCAqKW5h
dGl2ZUluc3RhbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGlmIChuZXdJbnN0YW5jZSkKLQluZXdJbnN0YW5jZS0+
c2V0RXhlY3V0aW9uQ29udGV4dCAoZXhlY3V0aW9uQ29udGV4dCk7Ci0JCisgICAgbmV3SW5zdGFu
Y2UtPnNldEV4ZWN1dGlvbkNvbnRleHQgKGV4ZWN1dGlvbkNvbnRleHQpOworICAgIAogICAgIHJl
dHVybiBuZXdJbnN0YW5jZTsKIH0KIAorRVhQT1JUX0MKIE9iamVjdCBJbnN0YW5jZTo6Y3JlYXRl
UnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0
YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBJbnN0YW5j
ZSAqaW50ZXJmYWNlT2JqZWN0ID0gSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUlu
c3RhbmNlIChsYW5ndWFnZSwgKHZvaWQgKiluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4
dCk7CkBAIC0xMzQsMzIgKzEzNiwzMyBAQA0KICAgICByZXR1cm4gT2JqZWN0KG5ldyBSdW50aW1l
T2JqZWN0SW1wKGludGVyZmFjZU9iamVjdCx0cnVlKSk7CiB9CiAKK0VYUE9SVF9DCiB2b2lkICpJ
bnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChFeGVjU3RhdGUgKmV4ZWMs
IEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgUm9v
dE9iamVjdCAqb3JpZ2luLCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KQogewogICAgIHZvaWQg
KnJlc3VsdCA9IDA7CiAgICAgCiAgICAgaWYgKHZhbHVlLnR5cGUoKSAhPSBPYmplY3RUeXBlKQot
CXJldHVybiAwOworICAgIHJldHVybiAwOwogCiAgICAgT2JqZWN0SW1wICppbXAgPSBzdGF0aWNf
Y2FzdDxPYmplY3RJbXAqPih2YWx1ZS5pbXAoKSk7CiAgICAgCiAgICAgc3dpdGNoIChsYW5ndWFn
ZSkgewotCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewotCSAgICByZXN1bHQg
PSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAodmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Ci0J
ICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3RhbmNlOjpDTGFuZ3VhZ2U6IHsKLQkgICAgcmVzdWx0
ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKDAsIGltcCwgb3JpZ2luLCBjdXJyZW50KTsKLQkg
ICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICAvLyBG
SVhNRTogIGZhY3RvciBjcmVhdGlvbiBvZiBqbmlfanNvYmplY3RzLCBhbHNvIHJlbW92ZSB1bm5l
Y2Vzc2FyeSB0aHJlYWQKLQkgICAgLy8gaW52b2NhdGlvbiBjb2RlLgotCSAgICBicmVhazsKLQl9
Ci0JZGVmYXVsdDoKLQkgICAgYnJlYWs7CisgICAgY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xh
bmd1YWdlOiB7CisgICAgICAgIC8vcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFsdWUg
KHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOworICAgICAgICBicmVhazsKICAgICB9CisgICAgY2Fz
ZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAgICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2Ny
aXB0T2JqZWN0ICgwLCBpbXAsIG9yaWdpbiwgY3VycmVudCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy8gRklYTUU6
ICBmYWN0b3IgY3JlYXRpb24gb2Ygam5pX2pzb2JqZWN0cywgYWxzbyByZW1vdmUgdW5uZWNlc3Nh
cnkgdGhyZWFkCisgICAgICAgIC8vIGludm9jYXRpb24gY29kZS4KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2luY2x1ZGUgImxpc3QuaCIKICNpbmNsdWRlICJv
YmplY3QuaCIKICNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImhhc2htYXAuaCIKIAogbmFt
ZXNwYWNlIEtKUyAKIHsKQEAgLTEzNiw5ICsxMzcsOSBAQA0KICAgICBzdGF0aWMgdm9pZCBzZXRE
aWRFeGVjdXRlRnVuY3Rpb24gKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKICAgICBz
dGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbiAoKTsKICAg
ICAKLSAgICBzdGF0aWMgSW5zdGFuY2UgKmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNl
IChCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBS
b290T2JqZWN0ICpyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFu
Y2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNv
bnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgUm9vdE9i
amVjdCAqY3VycmVudCk7Ci0gICAgc3RhdGljIE9iamVjdCBjcmVhdGVSdW50aW1lT2JqZWN0IChC
aW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290
T2JqZWN0ICpyID0gMCk7CisgICAgSU1QT1JUX0Mgc3RhdGljIEluc3RhbmNlICpjcmVhdGVCaW5k
aW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpu
YXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOworICAgIElNUE9SVF9DIHN0
YXRpYyB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhl
YywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBjb25zdCBPYmplY3QgJnZhbHVlLCBjb25zdCBS
b290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QgKmN1cnJlbnQpOworICAgIElNUE9S
VF9DIHN0YXRpYyBPYmplY3QgY3JlYXRlUnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxh
bmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOwog
CiAgICAgSW5zdGFuY2UgKCkgOiBfZXhlY3V0aW9uQ29udGV4dCgwKSB7fTsKICAgICAKQEAgLTE4
Nyw2ICsxODgsOSBAQA0KIAogY29uc3QgY2hhciAqc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25z
dCBLSlM6Okxpc3QgJmFMaXN0KTsKIAordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpS
ZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOwordHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVU3RyaW5nOjpSZXA+LCBGaWVsZCo+IEZpZWxkTWFwOwogfSAvLyBuYW1lc3BhY2UgQmluZGlu
Z3MKIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9y
dW50aW1lX29iamVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0LDcgKzU0
LDcgQEANCiAgICAgfQogfQogCi1SdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKEJp
bmRpbmdzOjpJbnN0YW5jZSAqaSwgYm9vbCBvaSkgOiBPYmplY3RJbXAgKChPYmplY3RJbXAgKikw
KQorRVhQT1JUX0MgUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChCaW5kaW5nczo6
SW5zdGFuY2UgKmksIGJvb2wgb2kpIDogT2JqZWN0SW1wICgoT2JqZWN0SW1wICopMCkKIHsKICAg
ICBvd25zSW5zdGFuY2UgPSBvaTsKICAgICBpbnN0YW5jZSA9IGk7CkBAIC04Myw3ICs4Myw3IEBA
DQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdCAobmV3IFJ1bnRpbWVNZXRob2RJbXAo
ZXhlYywgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQkKKyAgICAKICAgICAgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkg
ewogICAgICAgICAgICAgLy8gVHJ5IGEgZmFsbGJhY2sgb2JqZWN0LgogICAgICAgICAgICAgcmVz
dWx0ID0gYUNsYXNzLT5mYWxsYmFja09iamVjdCAoZXhlYywgaW5zdGFuY2UsIHByb3BlcnR5TmFt
ZSk7CkBAIC0xMDcsMTAgKzEwNywxMCBAQA0KICAgICAgICAgZ2V0SW50ZXJuYWxJbnN0YW5jZSgp
LT5zZXRWYWx1ZU9mRmllbGQoZXhlYywgYUZpZWxkLCB2YWx1ZSk7CiAgICAgfQogICAgIGVsc2Ug
ewotCWlmIChnZXRJbnRlcm5hbEluc3RhbmNlKCktPnN1cHBvcnRzU2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKCkpewotCSAgICBnZXRJbnRlcm5hbEluc3RhbmNlKCktPnNldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLQl9CisgICAgaWYgKGdldEludGVy
bmFsSW5zdGFuY2UoKS0+c3VwcG9ydHNTZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoKSl7CisgICAg
ICAgIGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0KKyAgICB9CiAKICAgICBpbnN0YW5jZS0+ZW5k
KCk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEANCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogCiAgICAg
aWYgKGFGaWVsZCkKLQlyZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9v
YmplY3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVf
b2JqZWN0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1
bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNyw3ICszNyw3IEBADQogICAgIAog
ICAgIH5SdW50aW1lT2JqZWN0SW1wKCk7CiAgICAgCi0gICAgUnVudGltZU9iamVjdEltcChCaW5k
aW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3RhbmNlID0gdHJ1ZSk7CisgICAgSU1QT1JU
X0MgUnVudGltZU9iamVjdEltcChCaW5kaW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3Rh
bmNlID0gdHJ1ZSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8gKmNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CiAKQEAgLTQ5LDcgKzQ5LDcgQEANCiAgICAgdmlydHVhbCBib29sIGNh
blB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLAot
CQkJICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC0yMCw5ICsyMCw5IEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1ZGUgPGpuaV9q
c29iamVjdC5oPgorLy8jaW5jbHVkZSA8am5pX2pzb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZV9yb290Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CkBAIC00Miw2ICs0Miw3IEBADQogLy8g
MSBPUiB0aGUgYXBwbGV0IGlzIHNodXRkb3duIHdlIGRlcmVmIHRoZSBKYXZhU2NyaXB0IGluc3Rh
bmNlLiAgQXBwbGV0IGluc3RhbmNlcwogLy8gYXJlIHJlcHJlc2VudGVkIGJ5IGEgamxvbmcuCiAK
Ky8qCiBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzQnlSb290RGljdGlv
bmFyeSA9IDA7CiAKIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGdldFJlZmVyZW5jZXNC
eVJvb3REaWN0aW9uYXJ5KCkKQEAgLTU1LDcgKzU2LDcgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkoKTsK
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gMDsKLSAg
ICAKKwogICAgIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKHJlZnNCeVJvb3QsIChjb25zdCB2b2lkICopcm9vdCk7CiAg
ICAgaWYgKCFyZWZlcmVuY2VzRGljdGlvbmFyeSkgewogICAgICAgICByZWZlcmVuY2VzRGljdGlv
bmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwgTlVMTCk7CkBA
IC02NSw3ICs2Niw3IEBADQogICAgIHJldHVybiByZWZlcmVuY2VzRGljdGlvbmFyeTsKIH0KIAot
Ly8gU2NhbiBhbGwgdGhlIGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9vdHMgdG8gc2VlIGlmIGFu
eSBoYXZlIGEgCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFyeSBmb3IgYWxsIHRoZSByb290cyB0
byBzZWUgaWYgYW55IGhhdmUgYQogLy8gcmVmZXJlbmNlIHRvIHRoZSBpbXAsIGFuZCBpZiBzbywg
cmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CiAvLyBkaWN0aW9uYXJ5LgogLy8gRklYTUU6ICBU
aGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxl
dHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKQEAgLTc0LDExICs3NSwxMSBAQA0KIHsKICAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290
RGljdGlvbmFyeSAoKTsKICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZvdW5kRGljdGlvbmFy
eSA9IDA7Ci0gICAgCisKICAgICBpZiAocmVmc0J5Um9vdCkgewogICAgICAgICBjb25zdCB2b2lk
ICoqYWxsVmFsdWVzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisK
ICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAg
ICAgYWxsVmFsdWVzID0gKGNvbnN0IHZvaWQgKiopbWFsbG9jIChzaXplb2Yodm9pZCAqKSAqIGNv
dW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyAocmVmc0J5Um9vdCwg
TlVMTCwgYWxsVmFsdWVzKTsKQEAgLTg5LDcgKzkwLDcgQEANCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAo
KHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KICAgICByZXR1cm4gZm91bmREaWN0aW9uYXJ5OwpA
QCAtMTAxLDEyICsxMDIsMTIgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZz
QnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgKCk7CiAgICAgY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKnJvb3RPYmplY3QgPSAwOwotICAgIAorCiAgICAgaWYgKHJlZnNC
eVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFsbFZhbHVlcyA9IDA7CiAgICAgICAgIGNv
bnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAg
ICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsK
ICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikg
KiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6
ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xMTgsNyArMTE5LDcgQEANCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMp
OwogICAgIH0KQEAgLTEyOSwxMiArMTMwLDEyIEBADQogewogICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3REaWN0aW9uYXJ5ICgpOwogICAg
IGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICphUm9vdE9iamVjdCA9IDAsICpyZXN1bHQgPSAw
OwotICAgIAorCiAgICAgaWYgKHJlZnNCeVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFs
bFZhbHVlcyA9IDA7CiAgICAgICAgIGNvbnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAg
Q0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25h
cnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoq
KW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChj
b25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xNDYsNyAr
MTQ3LDcgQEANCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KQEAgLTE1Nyw3ICsxNTgsNyBAQA0KIHsK
ICAgICBpZiAocm9vdCkgewogICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5j
ZXNEaWN0aW9uYXJ5ID0gZ2V0UmVmZXJlbmNlc0RpY3Rpb25hcnkgKHJvb3QpOwotICAgICAgICAK
KwogICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUmVmZXJlbmNlcyA9ICh1bnNpZ25lZCBpbnQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCBpbXApOwogICAgICAgICBp
ZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7CiAjaWYgIVVTRV9DT05TRVJWQVRJVkVfR0MKQEAgLTE2
Niw3ICsxNjcsNyBAQA0KICNpZiBVU0VfQ09OU0VSVkFUSVZFX0dDIHwgVEVTVF9DT05TRVJWQVRJ
VkVfR0MKICAgICAgICAgICAgIEludGVycHJldGVyTG9jayBsb2NrOwogICAgICAgICAgICAgZ2NQ
cm90ZWN0KGltcCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlIChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wLCAgKGNvbnN0IHZvaWQgKikxKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE3OCw4ICsxNzksOCBAQA0KIHZvaWQgS0pTOjpC
aW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJbXAgKmltcCkKIHsKICAgICBp
ZiAoIWltcCkKLQlyZXR1cm47Ci0JCisgICAgcmV0dXJuOworCiAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5IChp
bXApOwogCiAgICAgaWYgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5KSB7CkBAIC0xOTEsNyArMTkyLDcg
QEANCiAjaWYgVVNFX0NPTlNFUlZBVElWRV9HQyB8IFRFU1RfQ09OU0VSVkFUSVZFX0dDCiAgICAg
ICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgICAgIGdjVW5wcm90ZWN0KGlt
cCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVl
IChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsK
QEAgLTIyMywxMCArMjI0LDEwIEBADQogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUphdmFTY3JpcHRB
Y2Nlc3NMb2NrKCkKIHsKICAgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7Ci0gICAgCisKICAg
ICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZhdHRyKTsKICAgICBwdGhyZWFkX211dGV4YXR0cl9z
ZXR0eXBlICgmYXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUpOwotICAgIAorCiAgICAgcHRo
cmVhZF9tdXRleF9pbml0KCZqYXZhU2NyaXB0QWNjZXNzTG9jaywgJmF0dHIpOwogfQogCkBAIC0y
NjAsNyArMjYxLDcgQEANCiAgICAgLy8gY2FsbCBjb21wbGV0ZXMuCiAgICAgLy8KICAgICAvLyBG
SVhNRTogIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaXNzdWUuICBDcmVh
dGluZyBhbmQKLSAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNlcyBpcyBleHBlbnNpdmUuICBX
ZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZSAKKyAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNl
cyBpcyBleHBlbnNpdmUuICBXZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZQogICAgIC8vIHBlciB0
aHJlYWQsIGFzIG5lZWRlZCwgaW5zdGVhZC4KICAgICBjb250ZXh0LT5vcmlnaW5hdGluZ0xvb3Ag
PSBjdXJyZW50UnVuTG9vcDsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHNvdXJjZUNvbnRl
eHQgPSB7MCwgY29udGV4dCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgY29tcGxldGVkSmF2YVNjcmlwdEFjY2Vzc307CkBAIC0yNzIsNyArMjczLDcgQEANCiAgICAg
aWYgKENGUnVuTG9vcElzV2FpdGluZyhSb290T2JqZWN0OjpydW5Mb29wKCkpKSB7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChSb290T2JqZWN0OjpydW5Mb29wKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIC8vIFdhaXQgdW50aWwgdGhlIEphdmFTY3JpcHQgYWNjZXNzIHRocmVhZCBpcyBkb25lLgog
ICAgIENGUnVuTG9vcFJ1biAoKTsKIApAQCAtMjg2LDE1ICsyODcsMTUgQEANCiBzdGF0aWMgdm9p
ZCBwZXJmb3JtSmF2YVNjcmlwdEFjY2Vzcyh2b2lkICppKQogewogICAgIGFzc2VydCAoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpID09IFJvb3RPYmplY3Q6OnJ1bkxvb3AoKSk7Ci0gICAgCisKICAgICAv
LyBEaXNwYXRjaCBKYXZhU2NyaXB0IGNhbGxzIGhlcmUuCiAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBzb3VyY2VDb250ZXh0OwogICAgIENGUnVuTG9vcFNvdXJjZUdldENvbnRleHQgKGNvbXBs
ZXRpb25Tb3VyY2UsICZzb3VyY2VDb250ZXh0KTsKLSAgICBKU09iamVjdENhbGxDb250ZXh0ICpj
YWxsQ29udGV4dCA9IChKU09iamVjdENhbGxDb250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOyAg
ICAKKyAgICBKU09iamVjdENhbGxDb250ZXh0ICpjYWxsQ29udGV4dCA9IChKU09iamVjdENhbGxD
b250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOwogICAgIENGUnVuTG9vcFJlZiBvcmlnaW5hdGlu
Z0xvb3AgPSBjYWxsQ29udGV4dC0+b3JpZ2luYXRpbmdMb29wOwogCiAgICAgSlNPYmplY3Q6Omlu
dm9rZSAoY2FsbENvbnRleHQpOwotICAgIAorCiAgICAgLy8gU2lnbmFsIHRoZSBvcmlnaW5hdGlu
ZyB0aHJlYWQgdGhhdCB3ZSdyZSBkb25lLgogICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCAoY29t
cGxldGlvblNvdXJjZSk7CiAgICAgaWYgKENGUnVuTG9vcElzV2FpdGluZyhvcmlnaW5hdGluZ0xv
b3ApKSB7CkBAIC0zMTIsOCArMzEzLDggQEANCiAgICAgYXNzZXJ0IChfZmluZFJvb3RPYmplY3RG
b3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciA9PSAwKTsKIAogICAgIF9maW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyID0gYUZ1bmM7Ci0gICAgCi0gICAgLy8gQXNzdW1lIHRo
YXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJdCdsbCBtb3N0IAorCisg
ICAgLy8gQXNzdW1lIHRoYXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJ
dCdsbCBtb3N0CiAgICAgLy8gbGlrZWx5IChhbHdheXM/KSBiZSB0aGUgbWFpbiBsb29wLgogICAg
IF9ydW5Mb29wID0gKENGUnVuTG9vcFJlZilDRlJldGFpbiAoQ0ZSdW5Mb29wR2V0Q3VycmVudCAo
KSk7CiAKQEAgLTMyNCwxNSArMzI1LDE3IEBADQogICAgIENGUnVuTG9vcEFkZFNvdXJjZShCaW5k
aW5nczo6Um9vdE9iamVjdDo6X3J1bkxvb3AsIEJpbmRpbmdzOjpSb290T2JqZWN0OjpfcGVyZm9y
bUphdmFTY3JpcHRTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKKyovCiAvLyBN
dXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsZXQgaXMgc2h1dGRvd24uCitFWFBPUlRfQwogdm9p
ZCBSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpCiB7Ci0gICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGdldFJlZmVyZW5jZXNEaWN0
aW9uYXJ5ICh0aGlzKTsKLSAgICAKKy8qICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJl
bmNlc0RpY3Rpb25hcnkgPSBnZXRSZWZlcmVuY2VzRGljdGlvbmFyeSAodGhpcyk7CisKICAgICBp
ZiAocmVmZXJlbmNlc0RpY3Rpb25hcnkpIHsKICAgICAgICAgdm9pZCAqKmFsbEltcHMgPSAwOwog
ICAgICAgICBDRkluZGV4IGNvdW50LCBpOwotICAgICAgICAKKwogICAgICAgICBjb3VudCA9IENG
RGljdGlvbmFyeUdldENvdW50KHJlZmVyZW5jZXNEaWN0aW9uYXJ5KTsKICAgICAgICAgYWxsSW1w
cyA9ICh2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCAoY29uc3Qg
dm9pZCAqKilhbGxJbXBzLCBOVUxMKTsKQEAgLTM1NCwxMSArMzU3LDEyNyBAQA0KICAgICAgICAg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERp
Y3Rpb25hcnkoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUgKHJlZnNCeVJvb3Qs
IChjb25zdCB2b2lkICopdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0qLworfQor
CisKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCosIFJlZmVyZW5j
ZXNTZXQqPiBSZWZlcmVuY2VzQnlSb290TWFwOworCitzdGF0aWMgUmVmZXJlbmNlc0J5Um9vdE1h
cCogZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCgpCit7CisgICAgc3RhdGljIFJlZmVyZW5jZXNCeVJv
b3RNYXAqIHJlZmVyZW5jZXNCeVJvb3RNYXAgPSAwOworCisgICAgaWYgKCFyZWZlcmVuY2VzQnlS
b290TWFwKQorICAgICAgICByZWZlcmVuY2VzQnlSb290TWFwID0gbmV3IFJlZmVyZW5jZXNCeVJv
b3RNYXA7CisKKyAgICByZXR1cm4gcmVmZXJlbmNlc0J5Um9vdE1hcDsKK30KKworc3RhdGljIFJl
ZmVyZW5jZXNTZXQqIGdldFJlZmVyZW5jZXNTZXQoY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3QpCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdldFJlZmVy
ZW5jZXNCeVJvb3RNYXAoKTsKKyAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VzU2V0ID0gMDsK
KworICAgIHJlZmVyZW5jZXNTZXQgPSByZWZzQnlSb290LT5nZXQocm9vdCk7CisgICAgaWYgKCFy
ZWZlcmVuY2VzU2V0KSB7CisgICAgICAgIHJlZmVyZW5jZXNTZXQgID0gbmV3IFJlZmVyZW5jZXNT
ZXQ7CisgICAgICAgIHJlZnNCeVJvb3QtPmFkZChyb290LCByZWZlcmVuY2VzU2V0KTsKICAgICB9
CisgICAgcmV0dXJuIHJlZmVyZW5jZXNTZXQ7CiB9CiAKLXZvaWQgUm9vdE9iamVjdDo6c2V0SW50
ZXJwcmV0ZXIgKEtKUzo6SW50ZXJwcmV0ZXIgKmkpCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFy
eSBmb3IgYWxsIHRoZSByb290cyB0byBzZWUgaWYgYW55IGhhdmUgYQorLy8gcmVmZXJlbmNlIHRv
IHRoZSBpbXAsIGFuZCBpZiBzbywgcmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CisvLyBkaWN0
aW9uYXJ5LgorLy8gRklYTUU6ICBUaGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRs
ZW5lY2sgd2l0aCBtYW55IGFwcGxldHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGlt
cCB0byByb290IGRpY3Rpb25hcnkuCitSZWZlcmVuY2VzU2V0KiBLSlM6OkJpbmRpbmdzOjpmaW5k
UmVmZXJlbmNlU2V0KE9iamVjdEltcCAqaW1wKQogeworICAgIFJlZmVyZW5jZXNCeVJvb3RNYXAq
IHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290TWFwICgpOworICAgIGlmIChyZWZzQnlS
b290KSB7CisgICAgICAgIFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHJlZnNCeVJvb3QtPmVuZCgpOworICAgICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBSZWZlcmVuY2VzU2V0KiBzZXQgPSBpdC0+c2Vjb25kOworCisgICAgICAg
ICAgICBpZiAoc2V0LT5jb250YWlucyhpbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBzZXQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gRklYTUU6ICBUaGlz
IGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxldHMu
ICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGltcCB0byByb290IGRpY3Rpb25hcnkuCitj
b25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nczo6cm9vdEZvckltcCAoT2Jq
ZWN0SW1wICppbXApCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdl
dFJlZmVyZW5jZXNCeVJvb3RNYXAgKCk7CisgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3RPYmplY3QgPSAwOworCisgICAgaWYgKHJlZnNCeVJvb3QpIHsKKyAgICAgICAgUmVmZXJl
bmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVmc0J5Um9vdC0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoUmVmZXJlbmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWZz
QnlSb290LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlZmVyZW5j
ZXNTZXQqIHNldCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBpZiAoc2V0LT5jb250YWlucyhp
bXApKSB7CisgICAgICAgICAgICAgICAgcm9vdE9iamVjdCA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiByb290T2JqZWN0OworfQorCitjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpC
aW5kaW5nczo6cm9vdEZvckludGVycHJldGVyIChLSlM6OkludGVycHJldGVyICppbnRlcnByZXRl
cikKK3sKKyAgICBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNl
c0J5Um9vdE1hcCAoKTsKKworICAgIGlmIChyZWZzQnlSb290KSB7CisgICAgICAgIFJlZmVyZW5j
ZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlZnNCeVJvb3QtPmVuZCgpOworICAg
ICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5
Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjb25zdCBCaW5k
aW5nczo6Um9vdE9iamVjdCogYVJvb3RPYmplY3QgPSBpdC0+Zmlyc3Q7CisKKyAgICAgICAgICAg
IGlmIChhUm9vdE9iamVjdC0+aW50ZXJwcmV0ZXIoKSA9PSBpbnRlcnByZXRlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYVJvb3RPYmplY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVuY2UgKGNvbnN0
IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCkKK3sKKyAgICBpZiAo
cm9vdCkgeworICAgICAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VNYXAgPSBnZXRSZWZlcmVu
Y2VzU2V0IChyb290KTsKKworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlTWFwLT5jb3VudChpbXApOworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7Cisv
LyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NQcm90ZWN0KGltcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVmZXJlbmNlTWFwLT5hZGQoaW1wKTsKKyAgICB9Cit9CisKK0VY
UE9SVF9DIHZvaWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJ
bXAgKmltcCkKK3sKKyAgICBpZiAoIWltcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmZXJl
bmNlc1NldCAqcmVmZXJlbmNlc1NldCA9IGZpbmRSZWZlcmVuY2VTZXQoaW1wKTsKKyAgICBpZiAo
cmVmZXJlbmNlc1NldCkgeworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlc1NldC0+Y291bnQoaW1wKTsKKworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAxKSB7
CisvLyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NVbnByb3RlY3QoaW1w
KTsKKyAgICAgICAgfQorICAgICAgICByZWZlcmVuY2VzU2V0LT5yZW1vdmUoaW1wKTsKKyAgICB9
Cit9CisKK0VYUE9SVF9DIHZvaWQgUm9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIgKEtKUzo6SW50
ZXJwcmV0ZXIgKmkpCit7CiAgICAgX2ludGVycHJldGVyID0gaTsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Nyw4ICsyNyw5IEBADQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9vYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9qbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL2puaV9qc29i
amVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDxI
YXNoQ291bnRlZFNldC5oPgogCiBuYW1lc3BhY2UgS0pTIHsKIApAQCAtMzYsOSArMzcsMTEgQEAN
CiAKIGNsYXNzIFJvb3RPYmplY3Q7CiAKK3R5cGVkZWYgSGFzaENvdW50ZWRTZXQ8T2JqZWN0SW1w
Kj4gUmVmZXJlbmNlc1NldDsKIHR5cGVkZWYgUm9vdE9iamVjdCAqKCpGaW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyKSh2b2lkICopOwogCi1leHRlcm4gQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJbXAgKmltcCk7CisvL2V4
dGVybiBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5KE9iamVj
dEltcCAqaW1wKTsKK2V4dGVybiBSZWZlcmVuY2VzU2V0KiBmaW5kUmVmZXJlbmNlU2V0KE9iamVj
dEltcCAqaW1wKTsKIGV4dGVybiBjb25zdCBSb290T2JqZWN0ICpyb290Rm9ySW1wIChPYmplY3RJ
bXAgKmltcCk7CiBleHRlcm4gY29uc3QgUm9vdE9iamVjdCAqcm9vdEZvckludGVycHJldGVyIChJ
bnRlcnByZXRlciAqaW50ZXJwcmV0ZXIpOwogZXh0ZXJuIHZvaWQgYWRkTmF0aXZlUmVmZXJlbmNl
IChjb25zdCBSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCk7CkBAIC03NCwxMCArNzcs
MTAgQEANCiAgICAgCiAgICAgT2JqZWN0SW1wICpyb290T2JqZWN0SW1wKCkgY29uc3QgeyByZXR1
cm4gX2ltcDsgfQogICAgIAotICAgIHZvaWQgc2V0SW50ZXJwcmV0ZXIgKEludGVycHJldGVyICpp
KTsKKyAgICBJTVBPUlRfQyB2b2lkIHNldEludGVycHJldGVyIChJbnRlcnByZXRlciAqaSk7CiAg
ICAgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyKCkgY29uc3QgeyByZXR1cm4gX2ludGVycHJldGVy
OyB9CiAKLSAgICB2b2lkIHJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CisgICAgSU1QT1JU
X0Mgdm9pZCByZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpOwogCiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSB0aHJlYWQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWNjZXNzIEphdmFT
Y3JpcHQuCkBAIC04NiwxMSArODksMTEgQEANCiAgICAgICAgIHJldHVybiBfZmluZFJvb3RPYmpl
Y3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0cjsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENG
UnVuTG9vcFJlZiBydW5Mb29wKCkgeyByZXR1cm4gX3J1bkxvb3A7IH0KLSAgICBzdGF0aWMgQ0ZS
dW5Mb29wU291cmNlUmVmIHBlcmZvcm1KYXZhU2NyaXB0U291cmNlKCkgeyByZXR1cm4gX3BlcmZv
cm1KYXZhU2NyaXB0U291cmNlOyB9CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3Ao
KSB7IHJldHVybiBfcnVuTG9vcDsgfQorICAgIC8vc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBw
ZXJmb3JtSmF2YVNjcmlwdFNvdXJjZSgpIHsgcmV0dXJuIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJj
ZTsgfQorCisgICAgLy9zdGF0aWMgdm9pZCBkaXNwYXRjaFRvSmF2YVNjcmlwdFRocmVhZChKU09i
amVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRj
aFRvSmF2YVNjcmlwdFRocmVhZChKU09iamVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKLSAgICAK
ICAgICBjb25zdCB2b2lkICpuYXRpdmVIYW5kbGUoKSBjb25zdCB7IHJldHVybiBfbmF0aXZlSGFu
ZGxlOyB9CiAKIHByaXZhdGU6CkBAIC05OSw4ICsxMDIsOCBAQA0KICAgICBJbnRlcnByZXRlciAq
X2ludGVycHJldGVyOwogCiAgICAgc3RhdGljIEZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxl
RnVuY3Rpb25QdHIgX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25QdHI7Ci0g
ICAgc3RhdGljIENGUnVuTG9vcFJlZiBfcnVuTG9vcDsKLSAgICBzdGF0aWMgQ0ZSdW5Mb29wU291
cmNlUmVmIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJjZTsKKyAgICAvL3N0YXRpYyBDRlJ1bkxvb3BS
ZWYgX3J1bkxvb3A7CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIF9wZXJmb3JtSmF2
YVNjcmlwdFNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy91dGlsaXR5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvdXRpbGl0eQkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy91dGlsaXR5CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1NDkgQEANCisvLyBDb3B5cmln
aHQgKEMpIDIwMDEsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisv
LyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGli
cmFyeSBpcyBmcmVlDQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkgaXQgdW5kZXIgdGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIg
dmVyc2lvbi4NCisNCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs
b25nDQorLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisv
LyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBv
ZiBhIGZyZWUgc29mdHdhcmUNCisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVj
aWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVz
ZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBp
bGUNCisvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNl
IGFuIGV4ZWN1dGFibGUsIHRoaXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0
aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisv
LyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1p
Z2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQor
DQorLyoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBD
b21wYW55DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0
LVBhY2thcmQgQ29tcGFueSBtYWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUg
c3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlz
IHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQor
ICoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NiwxOTk3DQorICogU2lsaWNvbiBHcmFwaGlj
cyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRz
IGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQg
ZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFy
IGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3Vt
ZW50YXRpb24uICBTaWxpY29uIEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25z
IGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJw
b3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3
YXJyYW50eS4NCisgKi8NCisNCisvLyBoYWNrZWQgdG9nZXRoZXIgZnJvbSB2YXJpb3VzIHN0bCBw
YXJ0IHRvIG1ha2UgSlNDLCBXQyBjb21waWxlDQorDQorI2lmbmRlZiBfVVRJTElUWV9IDQorI2Rl
ZmluZSBfVVRJTElUWV9IIDENCisNCisjaW5jbHVkZSA8aXRlcmF0b3I+DQorDQorI2RlZmluZSBf
X2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoYSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9mdW5jdGlv
bl9yZXF1aXJlcyhhKQ0KKyNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlkX3JhbmdlKGEs
YikNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKGEsYikNCisNCituYW1lc3BhY2Ug
c3RkDQorew0KKyAgLy8vIHBhaXIgaG9sZHMgdHdvIG9iamVjdHMgb2YgYXJiaXRyYXJ5IHR5cGUu
DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgc3RydWN0IHBhaXINCisg
ICAgew0KKyAgICAgIHR5cGVkZWYgX1QxIGZpcnN0X3R5cGU7ICAgIC8vLzwgIEBjIGZpcnN0X3R5
cGUgaXMgdGhlIGZpcnN0IGJvdW5kIHR5cGUNCisgICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlw
ZTsgICAvLy88ICBAYyBzZWNvbmRfdHlwZSBpcyB0aGUgc2Vjb25kIGJvdW5kIHR5cGUNCisNCisg
ICAgICBfVDEgZmlyc3Q7ICAgICAgICAgICAgICAgICAvLy88IEBjIGZpcnN0IGlzIGEgY29weSBv
ZiB0aGUgZmlyc3Qgb2JqZWN0DQorICAgICAgX1QyIHNlY29uZDsgICAgICAgICAgICAgICAgLy8v
PCBAYyBzZWNvbmQgaXMgYSBjb3B5IG9mIHRoZSBzZWNvbmQgb2JqZWN0DQorDQorICAgICAgLy8g
X0dMSUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUw0KKyAgICAgIC8vIDI2NS4gIHN0ZDo6cGFpcjo6
cGFpcigpIGVmZmVjdHMgb3Zlcmx5IHJlc3RyaWN0aXZlDQorICAgICAgLyoqIFRoZSBkZWZhdWx0
IGNvbnN0cnVjdG9yIGNyZWF0ZXMgQGMgZmlyc3QgYW5kIEBjIHNlY29uZCB1c2luZyB0aGVpcg0K
KyAgICAgICAqICByZXNwZWN0aXZlIGRlZmF1bHQgY29uc3RydWN0b3JzLiAgKi8NCisgICAgICBw
YWlyKCkNCisgICAgICA6IGZpcnN0KCksIHNlY29uZCgpIHsgfQ0KKw0KKyAgICAgIC8qKiBUd28g
b2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGEgQGMgcGFpciBjb25zdHJ1Y3RvciB0byBiZSBjb3Bp
ZWQuICAqLw0KKyAgICAgIHBhaXIoY29uc3QgX1QxJiBfX2EsIGNvbnN0IF9UMiYgX19iKQ0KKyAg
ICAgIDogZmlyc3QoX19hKSwgc2Vjb25kKF9fYikgeyB9DQorDQorICAgICAgLyoqIFRoZXJlIGlz
IGFsc28gYSB0ZW1wbGF0ZWQgY29weSBjdG9yIGZvciB0aGUgQGMgcGFpciBjbGFzcyBpdHNlbGYu
ICAqLw0KKyAgICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyPg0KKyAgICAgICAgcGFp
cihjb25zdCBwYWlyPF9VMSwgX1UyPiYgX19wKQ0KKwk6IGZpcnN0KF9fcC5maXJzdCksIHNlY29u
ZChfX3Auc2Vjb25kKSB7IH0NCisgICAgfTsNCisNCisgIC8vLyBUd28gcGFpcnMgb2YgdGhlIHNh
bWUgdHlwZSBhcmUgZXF1YWwgaWZmIHRoZWlyIG1lbWJlcnMgYXJlIGVxdWFsLg0KKyAgdGVtcGxh
dGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQorICAgIGlubGluZSBib29sDQorICAgIG9wZXJhdG9y
PT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkN
CisgICAgeyByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9f
eS5zZWNvbmQ7IH0NCisNCisgIC8vLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli
c3RkYysrLzIwX3V0aWwvaG93dG8uaHRtbCNwYWlybHQ+DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEs
IGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wNCisgICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
IF9feC5maXJzdCA8IF9feS5maXJzdA0KKwkgICAgIHx8ICghKF9feS5maXJzdCA8IF9feC5maXJz
dCkgJiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyB9DQorDQorICAvLy8gVXNlcyBAYyBvcGVy
YXRvcj09IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3Mg
X1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1QxLCBf
VDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194
ID09IF9feSk7IH0NCisNCisgIC8vLyBVc2VzIEBjIG9wZXJhdG9yPCB0byBmaW5kIHRoZSByZXN1
bHQuDQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wN
CisgICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1Qx
LCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuIF9feSA8IF9feDsgfQ0KKw0KKyAgLy8vIFVzZXMg
QGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvcjw9KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
ICEoX195IDwgX194KTsgfQ0KKw0KKyAgLy8vIFVzZXMgQGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhl
IHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUg
Ym9vbA0KKyAgICBvcGVyYXRvcj49KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBh
aXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQ0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIEEgY29udmVuaWVuY2Ugd3JhcHBlciBmb3IgY3JlYXRpbmcgYSBw
YWlyIGZyb20gdHdvIG9iamVjdHMuDQorICAgKiAgQHBhcmFtICB4ICBUaGUgZmlyc3Qgb2JqZWN0
Lg0KKyAgICogIEBwYXJhbSAgeSAgVGhlIHNlY29uZCBvYmplY3QuDQorICAgKiAgQHJldHVybiAg
IEEgbmV3bHktY29uc3RydWN0ZWQgcGFpcjw+IG9iamVjdCBvZiB0aGUgYXBwcm9wcmlhdGUgdHlw
ZS4NCisgICAqDQorICAgKiAgVGhlIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgdGhlIG9iamVjdHMg
YmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS10by1jb25zdCwNCisgICAqICBidXQgTFdHIGlzc3VlICMx
ODEgc2F5cyB0aGV5IHNob3VsZCBiZSBwYXNzZWQgYnkgY29uc3QgdmFsdWUuICBXZSBmb2xsb3cN
CisgICAqICB0aGUgTFdHIGJ5IGRlZmF1bHQuDQorICAgKi8NCisgIC8vIF9HTElCQ1hYX1JFU09M
VkVfTElCX0RFRkVDVFMNCisgIC8vIDE4MS4gIG1ha2VfcGFpcigpIHVuaW50ZW5kZWQgYmVoYXZp
b3INCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgcGFpcjxf
VDEsIF9UMj4NCisgICAgbWFrZV9wYWlyKF9UMSBfX3gsIF9UMiBfX3kpDQorICAgIHsgcmV0dXJu
IHBhaXI8X1QxLCBfVDI+KF9feCwgX195KTsgfQ0KKw0KKw0KKw0KKyAgLy8gaXNfaGVhcCwgYSBw
cmVkaWNhdGUgdGVzdGluZyB3aGV0aGVyIG9yIG5vdCBhIHJhbmdlIGlzDQorICAvLyBhIGhlYXAu
ICBUaGlzIGZ1bmN0aW9uIGlzIGFuIGV4dGVuc2lvbiwgbm90IHBhcnQgb2YgdGhlIEMrKw0KKyAg
Ly8gc3RhbmRhcmQuDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9EaXN0YW5jZT4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX24pDQorICAgIHsNCisgICAgICBfRGlz
dGFuY2UgX19wYXJlbnQgPSAwOw0KKyAgICAgIGZvciAoX0Rpc3RhbmNlIF9fY2hpbGQgPSAxOyBf
X2NoaWxkIDwgX19uOyArK19fY2hpbGQpDQorCXsNCisJICBpZiAoX19maXJzdFtfX3BhcmVudF0g
PCBfX2ZpcnN0W19fY2hpbGRdKQ0KKwkgICAgcmV0dXJuIGZhbHNlOw0KKwkgIGlmICgoX19jaGls
ZCAmIDEpID09IDApDQorCSAgICArK19fcGFyZW50Ow0KKwl9DQorICAgICAgcmV0dXJuIHRydWU7
DQorICAgIH0NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLA0KKyAgICAgICAgICAgdHlwZW5hbWUgX1N0cmljdFdlYWtPcmRl
cmluZz4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
Zmlyc3QsIF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wLA0KKwkgICAgICBfRGlzdGFuY2UgX19u
KQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsNCisgICAgICBmb3IgKF9E
aXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKQ0KKwl7DQorCSAg
aWYgKF9fY29tcChfX2ZpcnN0W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpDQorCSAgICBy
ZXR1cm4gZmFsc2U7DQorCSAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkNCisJICAgICsrX19wYXJl
bnQ7DQorCX0NCisgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKw0KKyAgLyp0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQorICAgIGJvb2wNCisgICAgX19pc19oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0KQ0KKyAgICB7IHJldHVybiBzdGQ6Ol9faXNfaGVhcChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCkpOyB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9TdHJpY3RXZWFrT3JkZXJpbmc+DQorICAgIGJvb2wNCisg
ICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0LA0KKwkgICAgX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApDQorICAg
IHsgcmV0dXJuIHN0ZDo6X19pc19oZWFwKF9fZmlyc3QsIF9fY29tcCwgc3RkOjpkaXN0YW5jZShf
X2ZpcnN0LCBfX2xhc3QpKTsgfSovDQorDQorICAvLyBIZWFwLW1hbmlwdWxhdGlvbiBmdW5jdGlv
bnM6IHB1c2hfaGVhcCwgcG9wX2hlYXAsIG1ha2VfaGVhcCwgc29ydF9oZWFwLg0KKw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2Us
IHR5cGVuYW1lIF9UcD4NCisgICAgdm9pZA0KKyAgICBfX3B1c2hfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwNCisJCV9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9f
dG9wSW5kZXgsIF9UcCBfX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50
ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9f
dG9wSW5kZXggJiYgKihfX2ZpcnN0ICsgX19wYXJlbnQpIDwgX192YWx1ZSkNCisJew0KKwkgICoo
X19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hv
bGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAy
Ow0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAg
fQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQdXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAu
DQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxh
c3QgICBFbmQgb2YgaGVhcCArIGVsZW1lbnQuDQorICAgKiAgQGluZ3JvdXAgaGVhcA0KKyAgICoN
CisgICAqICBUaGlzIG9wZXJhdGlvbiBwdXNoZXMgdGhlIGVsZW1lbnQgYXQgbGFzdC0xIG9udG8g
dGhlIHZhbGlkIGhlYXAgb3ZlciB0aGUNCisgICAqICByYW5nZSBbZmlyc3QsbGFzdC0xKS4gIEFm
dGVyIGNvbXBsZXRpb24sIFtmaXJzdCxsYXN0KSBpcyBhIHZhbGlkIGhlYXAuDQorICAqLw0KKyAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPg0KKyAgICBpbmxpbmUgdm9p
ZA0KKyAgICBwdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QpDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlDQorCSAgX1Zh
bHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VUeXBlOw0KKw0K
KyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9u
X3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVz
KF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4
eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIC8vICAgICAg
X19nbGliY3h4X3JlcXVpcmVzX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSk7DQorDQorICAgICAg
c3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0
KSAtIDEpLA0KKwkJICAgICAgIF9EaXN0YW5jZVR5cGUoMCksIF9WYWx1ZVR5cGUoKihfX2xhc3Qg
LSAxKSkpOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwLA0KKwkgICAgdHlwZW5hbWUg
X0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwNCisJCV9EaXN0YW5jZSBfX3RvcElu
ZGV4LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAgICAgX0Rpc3Rh
bmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hv
bGVJbmRleCA+IF9fdG9wSW5kZXgNCisJICAgICAmJiBfX2NvbXAoKihfX2ZpcnN0ICsgX19wYXJl
bnQpLCBfX3ZhbHVlKSkNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19m
aXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hvbGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFy
ZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19o
b2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQ
dXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAgdXNpbmcgY29tcGFyaXNvbiBmdW5jdG9yLg0KKyAg
ICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAg
RW5kIG9mIGhlYXAgKyBlbGVtZW50Lg0KKyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24g
ZnVuY3Rvci4NCisgICAqICBAaW5ncm91cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3BlcmF0
aW9uIHB1c2hlcyB0aGUgZWxlbWVudCBhdCBsYXN0LTEgb250byB0aGUgdmFsaWQgaGVhcCBvdmVy
IHRoZQ0KKyAgICogIHJhbmdlIFtmaXJzdCxsYXN0LTEpLiAgQWZ0ZXIgY29tcGxldGlvbiwgW2Zp
cnN0LGxhc3QpIGlzIGEgdmFsaWQgaGVhcC4NCisgICAqICBDb21wYXJlIG9wZXJhdGlvbnMgYXJl
IHBlcmZvcm1lZCB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGluZSB2b2lkDQor
ICAgIHB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQor
CSAgX0Rpc3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAg
ICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVy
YXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0IC0gMSwgX19jb21wKTsNCisN
CisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZVR5cGUoKF9fbGFzdCAt
IF9fZmlyc3QpIC0gMSksDQorCQkgICAgICAgX0Rpc3RhbmNlVHlwZSgwKSwgX1ZhbHVlVHlwZSgq
KF9fbGFzdCAtIDEpKSwgX19jb21wKTsNCisgICAgfQ0KKw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsIHR5cGVuYW1lIF9UcD4N
CisgICAgdm9pZA0KKyAgICBfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsDQorCQkgIF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9f
dmFsdWUpDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRleCA9IF9faG9s
ZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4
ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7DQorCSAgaWYg
KCooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQpIDwgKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQg
LSAxKSkpDQorCSAgICBfX3NlY29uZENoaWxkLS07DQorCSAgKihfX2ZpcnN0ICsgX19ob2xlSW5k
ZXgpID0gKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7DQorCSAgX19ob2xlSW5kZXggPSBfX3Nl
Y29uZENoaWxkOw0KKwkgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsN
CisJfQ0KKyAgICAgIGlmIChfX3NlY29uZENoaWxkID09IF9fbGVuKQ0KKwl7DQorCSAgKihfX2Zp
cnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSk7DQor
CSAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsNCisJfQ0KKyAgICAgIHN0ZDo6X19w
dXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUpOw0KKyAg
ICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVu
YW1lIF9UcD4NCisgICAgaW5saW5lIHZvaWQNCisgICAgX19wb3BfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdCwgX1RwIF9fdmFsdWUpDQorICAgIHsNCisg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2UoMCks
IF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSk7DQorICAgIH0NCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgUG9wIGFuIGVsZW1lbnQgb2ZmIGEgaGVhcC4NCisgICAq
ICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVu
ZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhpcyBvcGVy
YXRpb24gcG9wcyB0aGUgdG9wIG9mIHRoZSBoZWFwLiAgVGhlIGVsZW1lbnRzIGZpcnN0IGFuZCBs
YXN0LTENCisgICAqICBhcmUgc3dhcHBlZCBhbmQgW2ZpcnN0LGxhc3QtMSkgaXMgbWFkZSBpbnRv
IGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+DQorICAgIGlubGluZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
dmFsdWVfdHlwZQ0KKwlfVmFsdWVUeXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1l
bnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAg
ICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0
PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2Zp
cnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9f
bGFzdCk7DQorDQorICAgICAgc3RkOjpfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9f
bGFzdCAtIDEsDQorCQkgICAgICBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpKTsNCisgICAgfQ0K
Kw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
RGlzdGFuY2UsDQorCSAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZv
aWQNCisgICAgX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rp
c3RhbmNlIF9faG9sZUluZGV4LA0KKwkJICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlLCBf
Q29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRl
eCA9IF9faG9sZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9f
aG9sZUluZGV4ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7
DQorCSAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwNCisJCSAgICAgKihf
X2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQ0KKwkgICAgX19zZWNvbmRDaGlsZC0tOw0K
KwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQp
Ow0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsNCisJICBfX3NlY29uZENoaWxkID0g
MiAqIChfX3NlY29uZENoaWxkICsgMSk7DQorCX0NCisgICAgICBpZiAoX19zZWNvbmRDaGlsZCA9
PSBfX2xlbikNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCAr
IChfX3NlY29uZENoaWxkIC0gMSkpOw0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZCAt
IDE7DQorCX0NCisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBf
X3RvcEluZGV4LCBfX3ZhbHVlLCBfX2NvbXApOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBh
cmU+DQorICAgIGlubGluZSB2b2lkDQorICAgIF9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsDQorCSAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXAp
DQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpf
X3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBf
RGlzdGFuY2UoMCksIF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSwg
X19jb21wKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQb3AgYW4gZWxlbWVu
dCBvZmYgYSBoZWFwIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZp
cnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0K
KyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAg
QGluZ3JvdXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBwb3BzIHRoZSB0b3Ag
b2YgdGhlIGhlYXAuICBUaGUgZWxlbWVudHMgZmlyc3QgYW5kIGxhc3QtMQ0KKyAgICogIGFyZSBz
d2FwcGVkIGFuZCBbZmlyc3QsbGFzdC0xKSBpcyBtYWRlIGludG8gYSBoZWFwLiAgQ29tcGFyaXNv
bnMgYXJlDQorICAgKiAgbWFkZSB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGlu
ZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LA0KKwkg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkNCisgICAg
ew0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0
aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlk
X3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX2hlYXBf
cHJlZChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7DQorDQorICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQ0KKwlf
VmFsdWVUeXBlOw0KKyAgICAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBf
X2xhc3QgLSAxLA0KKwkJICAgICAgX1ZhbHVlVHlwZSgqKF9fbGFzdCAtIDEpKSwgX19jb21wKTsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBDb25zdHJ1Y3QgYSBoZWFwIG92ZXIg
YSByYW5nZS4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQor
ICAgKiAgVGhpcyBvcGVyYXRpb24gbWFrZXMgdGhlIGVsZW1lbnRzIGluIFtmaXJzdCxsYXN0KSBp
bnRvIGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+DQorICAgIHZvaWQNCisgICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFs
dWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQorCSAgX0Rp
c3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9f
Z2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNv
bmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDxfVmFsdWVUeXBlPikN
CisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsN
CisNCisgICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIpDQorCXJldHVybjsNCisNCisgICAg
ICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsNCisgICAgICBf
RGlzdGFuY2VUeXBlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikgLyAyOw0KKyAgICAgIHdoaWxlICh0
cnVlKQ0KKwl7DQorCSAgc3RkOjpfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xl
biwNCisJCQkgICAgIF9WYWx1ZVR5cGUoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7DQorCSAgaWYg
KF9fcGFyZW50ID09IDApDQorCSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAg
ICB9DQorDQorICAvKioNCisgICAqICBAYnJpZWYgIENvbnN0cnVjdCBhIGhlYXAgb3ZlciBhIHJh
bmdlIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFy
dCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAgQGluZ3JvdXAg
aGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBtYWtlcyB0aGUgZWxlbWVudHMgaW4g
W2ZpcnN0LGxhc3QpIGludG8gYSBoZWFwLg0KKyAgICogIENvbXBhcmlzb25zIGFyZSBtYWRlIHVz
aW5nIGNvbXAuDQorICAqLw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4NCisgICAgaW5saW5lIHZvaWQNCisgICAgbWFrZV9oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LA0KKwkgICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
DQorCSAgX1ZhbHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VU
eXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4
X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwN
CisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVz
X3ZhbGlkX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAgICAgaWYgKF9fbGFzdCAtIF9f
Zmlyc3QgPCAyKQ0KKwlyZXR1cm47DQorDQorICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xl
biA9IF9fbGFzdCAtIF9fZmlyc3Q7DQorICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChf
X2xlbiAtIDIpIC8gMjsNCisgICAgICB3aGlsZSAodHJ1ZSkNCisJew0KKwkgIHN0ZDo6X19hZGp1
c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sDQorCQkJICAgICBfVmFsdWVUeXBlKCoo
X19maXJzdCArIF9fcGFyZW50KSksIF9fY29tcCk7DQorCSAgaWYgKF9fcGFyZW50ID09IDApDQor
CSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAgICB9DQorDQorICAvKioNCisg
ICAqICBAYnJpZWYgIFNvcnQgYSBoZWFwLg0KKyAgICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9m
IGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAgRW5kIG9mIGhlYXAuDQorICAgKiAgQGluZ3Jv
dXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBzb3J0cyB0aGUgdmFsaWQgaGVh
cCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4NCisgICAgdm9pZA0KKyAgICBzb3J0X2hlYXAoX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpDQor
ICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQor
CSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9y
ZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDwNCisJICAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPikNCisgICAgICBf
X2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsNCisgICAgICAv
LyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAg
ICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQ0KKwlzdGQ6OnBvcF9oZWFwKF9fZmlyc3Qs
IF9fbGFzdC0tKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBTb3J0IGEgaGVh
cCB1c2luZyBjb21wYXJpc29uIGZ1bmN0b3IuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQg
b2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAcGFy
YW0gIGNvbXAgICBDb21wYXJpc29uIGZ1bmN0b3IgdG8gdXNlLg0KKyAgICogIEBpbmdyb3VwIGhl
YXANCisgICAqDQorICAgKiAgVGhpcyBvcGVyYXRpb24gc29ydHMgdGhlIHZhbGlkIGhlYXAgaW4g
dGhlIHJhbmdlIFtmaXJzdCxsYXN0KS4NCisgICAqICBDb21wYXJpc29ucyBhcmUgbWFkZSB1c2lu
ZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgc29ydF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LA0KKwkg
ICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVt
ZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21B
Y2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0LCBfX2NvbXAp
Ow0KKw0KKyAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkNCisJc3RkOjpwb3BfaGVh
cChfX2ZpcnN0LCBfX2xhc3QtLSwgX19jb21wKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNl
IHN0ZA0KKw0KKw0KKw0KKyNlbmRpZiANClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTEpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEwOSBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2
YWxsICA8c3JpcmFtLnlhZGF2YWxsaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIERFU0M6U2NyaXB0YWJsZSBwbHVnaW4gJiBXaWRnZXQg
b2JqZWN0IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNDA3CisKKyAgICAgICAgKiBiaW5kaW5ncy9OUF9qc29iamVjdC5jcHA6
CisgICAgICAgIChsaXN0RnJvbVZhcmlhbnRBcmdzKToKKyAgICAgICAgKF9pc1NhZmVTY3JpcHQp
OgorICAgICAgICAoX05QTl9DcmVhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAoTlBOX0ludm9r
ZURlZmF1bHQpOgorICAgICAgICAoTlBOX0ludm9rZSk6CisgICAgICAgIChOUE5fRXZhbHVhdGUp
OgorICAgICAgICAoTlBOX0dldFByb3BlcnR5KToKKyAgICAgICAgKE5QTl9TZXRQcm9wZXJ0eSk6
CisgICAgICAgIChOUE5fUmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoTlBOX0hhc1Byb3BlcnR5
KToKKyAgICAgICAgKE5QTl9IYXNNZXRob2QpOgorICAgICAgICAoTlBOX1NldEV4Y2VwdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvTlBfanNvYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9j
L2NfY2xhc3MuY3BwOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpDQ2xhc3MpOgor
ICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjp+Q0NsYXNzKToKKyAgICAgICAgKEtKUzo6
QmluZGluZ3M6OkNDbGFzczo6Y2xhc3NGb3JJc0EpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6
Q0NsYXNzOjpuYW1lKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kc05h
bWVkKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6CisgICAg
ICAgICogYmluZGluZ3MvYy9jX2NsYXNzLmg6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xh
c3M6OmNvbnN0cnVjdG9yQXQpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpudW1D
b25zdHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2MvY19pbnN0YW5jZS5jcHA6CisgICAg
ICAgIChDSW5zdGFuY2U6OkNJbnN0YW5jZSk6CisgICAgICAgIChDSW5zdGFuY2U6On5DSW5zdGFu
Y2UpOgorICAgICAgICAoQ0luc3RhbmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoQ0luc3RhbmNl
OjpnZXRDbGFzcyk6CisgICAgICAgIChDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAg
IChDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QpOgorICAgICAgICAoQ0luc3RhbmNlOjpk
ZWZhdWx0VmFsdWUpOgorICAgICAgICAoQ0luc3RhbmNlOjpzdHJpbmdWYWx1ZSk6CisgICAgICAg
IChDSW5zdGFuY2U6OnZhbHVlT2YpOgorICAgICAgICAqIGJpbmRpbmdzL2MvY19ydW50aW1lLmg6
CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDRmllbGQ6Om5hbWUpOgorICAgICAgICAoS0pTOjpC
aW5kaW5nczo6Q01ldGhvZDo6bmFtZSk6CisgICAgICAgICogYmluZGluZ3MvYy9jX3V0aWxpdHku
Y3BwOgorICAgICAgICAoY29udmVydFVURjhUb1VURjE2KToKKyAgICAgICAgKGNvbnZlcnRWYWx1
ZVRvTlBWYXJpYW50KToKKyAgICAgICAgKGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKToKKyAgICAg
ICAgKGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2Nf
dXRpbGl0eS5oOgorICAgICAgICAqIGJpbmRpbmdzL25wYXBpLmg6CisgICAgICAgIChfTlBQcmlu
dDo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9ucHJ1bnRpbWUuY3BwOgorICAgICAgICAoZ2V0U3Ry
aW5nSWRlbnRpZmllck1hcCk6CisgICAgICAgIChnZXRJbnRJZGVudGlmaWVyTWFwKToKKyAgICAg
ICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKToKKyAgICAgICAgKE5QTl9HZXRTdHJpbmdJZGVu
dGlmaWVycyk6CisgICAgICAgIChOUE5fR2V0SW50SWRlbnRpZmllcik6CisgICAgICAgIChOUE5f
SWRlbnRpZmllcklzU3RyaW5nKToKKyAgICAgICAgKE5QTl9VVEY4RnJvbUlkZW50aWZpZXIpOgor
ICAgICAgICAoTlBOX0ludEZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9C
b29sKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9TdHJpbmcpOgorICAgICAgICAoTlBOX1Zhcmlh
bnRUb0ludDMyKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9Eb3VibGUpOgorICAgICAgICAoTlBO
X1ZhcmlhbnRUb09iamVjdCk6CisgICAgICAgIChOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoT2Jq
ZWN0KToKKyAgICAgICAgKE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlKToKKyAgICAgICAgKE5QTl9D
cmVhdGVPYmplY3QpOgorICAgICAgICAoTlBOX1JldGFpbk9iamVjdCk6CisgICAgICAgIChOUE5f
UmVsZWFzZU9iamVjdCk6CisgICAgICAgIChOUE5fU2V0RXhjZXB0aW9uV2l0aFVURjgpOgorICAg
ICAgICAqIGJpbmRpbmdzL25wcnVudGltZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUu
Y3BwOgorICAgICAgICAoSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNl
KToKKyAgICAgICAgKEluc3RhbmNlOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1l
X29iamVjdC5jcHA6CisgICAgICAgIChSdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1w
KToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OmdldCk6CisgICAgICAgIChSdW50aW1lT2Jq
ZWN0SW1wOjpwdXQpOgorICAgICAgICAoUnVudGltZU9iamVjdEltcDo6Y2FuUHV0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRp
bWVfcm9vdC5jcHA6CisgICAgICAgIChSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVu
Y2VzKToKKyAgICAgICAgKGdldFJlZmVyZW5jZXNCeVJvb3RNYXApOgorICAgICAgICAoZ2V0UmVm
ZXJlbmNlc1NldCk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpmaW5kUmVmZXJlbmNlU2V0KToK
KyAgICAgICAgKEtKUzo6QmluZGluZ3M6OnJvb3RGb3JJbXApOgorICAgICAgICAoS0pTOjpCaW5k
aW5nczo6cm9vdEZvckludGVycHJldGVyKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OmFkZE5h
dGl2ZVJlZmVyZW5jZSk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpyZW1vdmVOYXRpdmVSZWZl
cmVuY2UpOgorICAgICAgICAoUm9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5oOgorICAgICAgICAqIGdyb3VwL0J3aW5zY3cvSkFWQVND
UklQVENPUkVVLkRFRjoKKyAgICAgICAgKiBncm91cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWY6
CisgICAgICAgICogZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wOgorICAgICAgICAqIGdyb3VwL2Js
ZC5pbmY6CisgICAgICAgICoga2pzL2ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEludGVycHJl
dGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChJbnRlcnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlKToKKyAgICAgICAgKFNhdmVkQnVpbHRpbnM6OlNhdmVkQnVpbHRpbnMpOgor
ICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5oOgorICAgICAgICAqIGtqcy9zdGRpbnQuaDoKKyAg
ICAgICAgKiBranMvdXN0cmluZy5oOgorICAgICAgICAoS0pTOjpVU3RyaW5nOjphcmVwKToKKwog
MjAwNi0xMC0wNCAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ncm91cC9ibGQu
aW5mDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvZ3JvdXAvYmxkLmluZgkocmV2aXNp
b24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAvYmxkLmluZgkod29ya2luZyBjb3B5
KQ0KQEAgLTIxLDYgKzIxLDIxIEBADQogUFJKX1BMQVRGT1JNUw0KIERFRkFVTFQNCiANCitQUkpf
RVhQT1JUUw0KKy4uXGtqc1xpbnRlcm5hbC5oICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxq
YXZhc2NyaXB0Y29yZVxpbnRlcm5hbC5oDQorLi5ca2pzXGludGVycHJldGVyLmggICAgICBcZXBv
YzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXGludGVycHJldGVyLmgNCisuLlxranNcb2Jq
ZWN0LmggICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcb2JqZWN0
LmgNCisuLlxranNccHJvdGVjdC5oICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNj
cmlwdGNvcmVccHJvdGVjdC5oDQorLi5ca2pzXHN0ZGludC5oICAgICAgICAgICBcZXBvYzMyXGlu
Y2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHN0ZGludC5oDQorDQorLi5cYmluZGluZ3NcbnBydW50
aW1lLmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXG5wcnVu
dGltZS5oDQorLi5cYmluZGluZ3NcbnBydW50aW1lX2ltcGwuaCAgICAgICAgICAgIFxlcG9jMzJc
aW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcbnBydW50aW1lX2ltcGwuaA0KKy4uXGJpbmRpbmdz
XG5wcnVudGltZV9wcml2LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3Jp
cHRjb3JlXG5wcnVudGltZV9wcml2LmgNCisuLlxiaW5kaW5nc1xydW50aW1lLmggICAgICAgICAg
ICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHJ1bnRpbWUuaA0KKy4uXGJpbmRp
bmdzXHJ1bnRpbWVfb2JqZWN0LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFz
Y3JpcHRjb3JlXHJ1bnRpbWVfb2JqZWN0LmgNCisuLlxiaW5kaW5nc1xydW50aW1lX3Jvb3QuaCAg
ICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVccnVudGltZV9yb290
LmgNCisuLlxiaW5kaW5nc1xOUF9qc29iamVjdC5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRl
XG9lbVxqYXZhc2NyaXB0Y29yZVxOUF9qc29iamVjdC5oDQorLi5cYmluZGluZ3NcY1xjX3V0aWxp
dHkuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcY191dGls
aXR5LmgNCiBQUkpfTU1QRklMRVMNCiBwY3JlLm1tcA0KIEphdmFTY3JpcHRDb3JlLm1tcA0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRg0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVV
LkRFRgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAvQndpbnNjdy9K
QVZBU0NSSVBUQ09SRVUuREVGCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwxMzkgKzEsMTY4IEBADQog
RVhQT1JUUw0KLQk/PzBCb29sZWFuQEtKU0BAUUFFQF9OQFogQCAxIE5PTkFNRSA7IEtKUzo6Qm9v
bGVhbjo6Qm9vbGVhbihib29sKQ0KLQk/PzBJbnRlcnByZXRlckBLSlNAQFFBRUBBQlZPYmplY3RA
MUBAWiBAIDIgTk9OQU1FIDsgS0pTOjpJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoY2xhc3MgS0pT
OjpPYmplY3QgY29uc3QgJikNCi0JPz8wTGlzdEBLSlNAQFFBRUBYWiBAIDMgTk9OQU1FIDsgS0pT
OjpMaXN0OjpMaXN0KHZvaWQpDQotCT8/ME51bGxAS0pTQEBRQUVAWFogQCA0IE5PTkFNRSA7IEtK
Uzo6TnVsbDo6TnVsbCh2b2lkKQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVASEBaIEAgNSBOT05BTUUg
OyBLSlM6Ok51bWJlcjo6TnVtYmVyKGludCkNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQElAWiBAIDYg
Tk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcih1bnNpZ25lZCBpbnQpDQotCT8/ME51bWJlckBL
SlNAQFFBRUBKQFogQCA3IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIobG9uZykNCi0JPz8w
TnVtYmVyQEtKU0BAUUFFQEtAWiBAIDggTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcih1bnNp
Z25lZCBsb25nKQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVATkBaIEAgOSBOT05BTUUgOyBLSlM6Ok51
bWJlcjo6TnVtYmVyKGRvdWJsZSkNCi0JPz8wT2JqZWN0SW1wQEtKU0BAUUFFQEFCVk9iamVjdEAx
QEBaIEAgMTAgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6Ok9iamVjdEltcChjbGFzcyBLSlM6Ok9i
amVjdCBjb25zdCAmKQ0KLQk/PzBPYmplY3RJbXBAS0pTQEBRQUVAWFogQCAxMSBOT05BTUUgOyBL
SlM6Ok9iamVjdEltcDo6T2JqZWN0SW1wKHZvaWQpDQotCT8/MFN0cmluZ0BLSlNAQFFBRUBBQlZV
U3RyaW5nQDFAQFogQCAxMiBOT05BTUUgOyBLSlM6OlN0cmluZzo6U3RyaW5nKGNsYXNzIEtKUzo6
VVN0cmluZyBjb25zdCAmKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQEFCVjAxQDBAWiBAIDEzIE5P
TkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwg
Y2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQotCT8/MFVTdHJpbmdAS0pTQEBRQUVAREBaIEAg
MTQgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIpDQotCT8/MFVTdHJpbmdAS0pT
QEBRQUVAUEFVVUNoYXJAMUBIX05AWiBAIDE1IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmlu
ZyhzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQsIGJvb2wpDQotCT8/MFVTdHJpbmdAS0pTQEBRQUVA
UEJEQFogQCAxNiBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2hhciBjb25zdCAqKQ0K
LQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBCVVVDaGFyQDFASEBaIEAgMTcgTk9OQU1FIDsgS0pTOjpV
U3RyaW5nOjpVU3RyaW5nKHN0cnVjdCBLSlM6OlVDaGFyIGNvbnN0ICosIGludCkNCi0JPz8wVVN0
cmluZ0BLSlNAQFFBRUBYWiBAIDE4IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyh2b2lk
KQ0KLQk/PzBVbmRlZmluZWRAS0pTQEBRQUVAWFogQCAxOSBOT05BTUUgOyBLSlM6OlVuZGVmaW5l
ZDo6VW5kZWZpbmVkKHZvaWQpDQotCT8/MFZhbHVlQEtKU0BAUUFFQEFCVjAxQEBaIEAgMjAgTk9O
QU1FIDsgS0pTOjpWYWx1ZTo6VmFsdWUoY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/PzBW
YWx1ZUBLSlNAQFFBRUBQQVZWYWx1ZUltcEAxQEBaIEAgMjEgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6
VmFsdWUoY2xhc3MgS0pTOjpWYWx1ZUltcCAqKQ0KLQk/PzFJbnRlcnByZXRlckBLSlNAQFVBRUBY
WiBAIDIyIE5PTkFNRSA7IEtKUzo6SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcih2b2lkKQ0KLQk/
PzFPYmplY3RJbXBAS0pTQEBVQUVAWFogQCAyMyBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6fk9i
amVjdEltcCh2b2lkKQ0KLQk/PzFWYWx1ZUBLSlNAQFFBRUBYWiBAIDI0IE5PTkFNRSA7IEtKUzo6
VmFsdWU6On5WYWx1ZSh2b2lkKQ0KLQk/PzJWYWx1ZUltcEBLSlNAQFNBUEFYSUBaIEAgMjUgTk9O
QU1FIDsgdm9pZCAqIEtKUzo6VmFsdWVJbXA6Om9wZXJhdG9yIG5ldyh1bnNpZ25lZCBpbnQpDQot
CT8/M1ZhbHVlSW1wQEtKU0BAU0FYUEFYQFogQCAyNiBOT05BTUUgOyB2b2lkIEtKUzo6VmFsdWVJ
bXA6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkICopDQotCT8/NENTdHJpbmdAS0pTQEBRQUVBQVYwMUBQ
QkRAWiBAIDI3IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q1N0cmluZyAmIEtKUzo6Q1N0cmluZzo6b3Bl
cmF0b3I9KGNoYXIgY29uc3QgKikNCi0JPz80TGlzdEBLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAg
MjggTk9OQU1FIDsgY2xhc3MgS0pTOjpMaXN0ICYgS0pTOjpMaXN0OjpvcGVyYXRvcj0oY2xhc3Mg
S0pTOjpMaXN0IGNvbnN0ICYpDQotCT8/NFNjb3BlQ2hhaW5AS0pTQEBRQUVBQVYwMUBBQlYwMUBA
WiBAIDI5IE5PTkFNRSA7IGNsYXNzIEtKUzo6U2NvcGVDaGFpbiAmIEtKUzo6U2NvcGVDaGFpbjo6
b3BlcmF0b3I9KGNsYXNzIEtKUzo6U2NvcGVDaGFpbiBjb25zdCAmKQ0KLQk/PzRVU3RyaW5nQEtK
U0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMCBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgJiBL
SlM6OlVTdHJpbmc6Om9wZXJhdG9yPShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0JPz80
VmFsdWVAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDMxIE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFs
dWUgJiBLSlM6OlZhbHVlOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/
PzhLSlNAQFlBX05BQlZVU3RyaW5nQDBAUEJEQFogQCAzMiBOT05BTUUgOyBib29sIEtKUzo6b3Bl
cmF0b3I9PShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2hhciBjb25zdCAqKQ0KLQk/YWRk
QElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJAUEFVMzQyQEBaIEAgMzMgTk9OQU1F
IDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpJZGVudGlmaWVyOjphZGQoc3RydWN0
IEtKUzo6VVN0cmluZzo6UmVwICopDQotCT9hZGRASWRlbnRpZmllckBLSlNAQENBUEFVUmVwQFVT
dHJpbmdAMkBQQkRAWiBAIDM0IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtK
Uzo6SWRlbnRpZmllcjo6YWRkKGNoYXIgY29uc3QgKikNCi0JP2FwcGVuZEBMaXN0QEtKU0BAUUFF
WFBBVlZhbHVlSW1wQDJAQFogQCAzNSBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6YXBwZW5kKGNs
YXNzIEtKUzo6VmFsdWVJbXAgKikNCi0JP2FwcGVuZEBVU3RyaW5nQEtKU0BAUUFFQUFWMTJAQUJW
MTJAQFogQCAzNiBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgJiBLSlM6OlVTdHJpbmc6OmFw
cGVuZChjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0JP2FwcGVuZEBVU3RyaW5nQEtKU0BA
UUFFQUFWMTJAUEJEQFogQCAzNyBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgJiBLSlM6OlVT
dHJpbmc6OmFwcGVuZChjaGFyIGNvbnN0ICopDQotCT9hc2NpaUBVU3RyaW5nQEtKU0BAUUJFUEFE
WFogQCAzOCBOT05BTUUgOyBjaGFyICogS0pTOjpVU3RyaW5nOjphc2NpaSh2b2lkKSBjb25zdA0K
LQk/YXR0YWNoTnVsbEBVU3RyaW5nQEtKU0BAQUFFWFhaIEAgMzkgTk9OQU1FIDsgdm9pZCBLSlM6
OlVTdHJpbmc6OmF0dGFjaE51bGwodm9pZCkNCi0JP2J1aWx0aW5BcnJheUBJbnRlcnByZXRlckBL
SlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDAgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pT
OjpJbnRlcnByZXRlcjo6YnVpbHRpbkFycmF5KHZvaWQpIGNvbnN0DQotCT9idWlsdGluRnVuY3Rp
b25ASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQxIE5PTkFNRSA7IGNsYXNz
IEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5GdW5jdGlvbih2b2lkKSBjb25z
dA0KLQk/YnVpbHRpbk9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAg
NDIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbk9i
amVjdCh2b2lkKSBjb25zdA0KLQk/YnVpbHRpbk9iamVjdFByb3RvdHlwZUBJbnRlcnByZXRlckBL
SlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDMgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pT
OjpJbnRlcnByZXRlcjo6YnVpbHRpbk9iamVjdFByb3RvdHlwZSh2b2lkKSBjb25zdA0KLQk/Y2Fs
bEBPYmplY3RAS0pTQEBRQUU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFBVjEyQEFCVkxpc3RA
MkBAWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3Q6OmNhbGwoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmplY3QgJiwgY2xhc3MgS0pTOjpMaXN0
IGNvbnN0ICYpDQotCT9jYWxsQE9iamVjdEltcEBLSlNAQFVBRT9BVlZhbHVlQDJAUEFWRXhlY1N0
YXRlQDJAQUFWT2JqZWN0QDJAQUJWTGlzdEAyQEBaIEAgNDUgTk9OQU1FIDsgY2xhc3MgS0pTOjpW
YWx1ZSBLSlM6Ok9iamVjdEltcDo6Y2FsbChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBL
SlM6Ok9iamVjdCAmLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJikNCi0JP2NhblB1dEBPYmplY3RJ
bXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDQ2IE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmNhblB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBj
bGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCi0JP2NsYXNzSW5mb0BPYmplY3RJ
bXBAS0pTQEBVQkVQQlVDbGFzc0luZm9AMkBYWiBAIDQ3IE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNs
YXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0SW1wOjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0J
P2NsYXNzTmFtZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZVU3RyaW5nQDJAWFogQCA0OCBOT05BTUUg
OyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpPYmplY3RJbXA6OmNsYXNzTmFtZSh2b2lkKSBjb25z
dA0KLQk/Y29sbGVjdEBDb2xsZWN0b3JAS0pTQEBTQV9OWFogQCA0OSBOT05BTUUgOyBib29sIEtK
Uzo6Q29sbGVjdG9yOjpjb2xsZWN0KHZvaWQpDQotCT9jb21wYXRNb2RlQEludGVycHJldGVyQEtK
U0BAUUJFP0FXNENvbXBhdE1vZGVAMTJAWFogQCA1MCBOT05BTUUgOyBlbnVtIEtKUzo6SW50ZXJw
cmV0ZXI6OkNvbXBhdE1vZGUgS0pTOjpJbnRlcnByZXRlcjo6Y29tcGF0TW9kZSh2b2lkKSBjb25z
dA0KLQk/Y29uc3RydWN0QE9iamVjdEltcEBLSlNAQFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0
ZUAyQEFCVkxpc3RAMkBAWiBAIDUxIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2Jq
ZWN0SW1wOjpjb25zdHJ1Y3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpMaXN0
IGNvbnN0ICYpDQotCT9jb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUFFP0FWT2JqZWN0QDJAUEFW
RXhlY1N0YXRlQDJAQUJWTGlzdEAyQEFCVlVTdHJpbmdAMkBIQFogQCA1MiBOT05BTUUgOyBjbGFz
cyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3RydWN0KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3Qg
JiwgaW50KQ0KLQk/Y29weVRhaWxATGlzdEBLSlNAQFFCRT9BVjEyQFhaIEAgNTMgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpMaXN0IEtKUzo6TGlzdDo6Y29weVRhaWwodm9pZCkgY29uc3QNCi0JP2NyZWF0
ZUBFcnJvckBLSlNAQFNBP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAVzRFcnJvclR5cGVAMkBQ
QkRISFBCVlVTdHJpbmdAMkBAWiBAIDU0IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6
RXJyb3I6OmNyZWF0ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6RXJyb3JUeXBl
LCBjaGFyIGNvbnN0ICosIGludCwgaW50LCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgKikNCi0J
P2NyZWF0ZUBSZXBAVVN0cmluZ0BLSlNAQFNBUEFVMTIzQFBBVVVDaGFyQDNASEBaIEAgNTUgTk9O
QU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpVU3RyaW5nOjpSZXA6OmNyZWF0
ZShzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQpDQotCT9jcmVhdGVDb3B5aW5nQFJlcEBVU3RyaW5n
QEtKU0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BIQFogQCA1NiBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpV
U3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3JlYXRlQ29weWluZyhzdHJ1Y3QgS0pT
OjpVQ2hhciBjb25zdCAqLCBpbnQpDQotCT9kZWZhdWx0VmFsdWVAT2JqZWN0SW1wQEtKU0BAVUJF
P0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFR5cGVAMkBAWiBAIDU3IE5PTkFNRSA7IGNsYXNz
IEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZShjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkgY29uc3QNCi0JP2RlbGV0ZUFsbFByb3BlcnRpZXNAT2Jq
ZWN0SW1wQEtKU0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEBaIEAgNTggTk9OQU1FIDsgdm9pZCBLSlM6
Ok9iamVjdEltcDo6ZGVsZXRlQWxsUHJvcGVydGllcyhjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKQ0K
LQk/ZGVsZXRlUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUFFX05QQVZFeGVjU3RhdGVAMkBBQlZJ
ZGVudGlmaWVyQDJAQFogQCA1OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpkZWxldGVQ
cm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29u
c3QgJikNCi0JP2RlbGV0ZVByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVBRV9OUEFWRXhlY1N0YXRl
QDJASUBaIEAgNjAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlUHJvcGVydHko
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KQ0KLQk/ZGVyZWZWYWx1ZXNATGlz
dEBLSlNAQEFBRVhYWiBAIDYxIE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjpkZXJlZlZhbHVlcyh2
b2lkKQ0KLQk/ZGVzdHJveUBSZXBAVVN0cmluZ0BLSlNAQFFBRVhYWiBAIDYyIE5PTkFNRSA7IHZv
aWQgS0pTOjpVU3RyaW5nOjpSZXA6OmRlc3Ryb3kodm9pZCkNCi0JP2Rpc3BhdGNoVG9PYmplY3RA
VmFsdWVJbXBAS0pTQEBRQkU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWiBAIDYzIE5PTkFN
RSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6VmFsdWVJbXA6OmRpc3BhdGNoVG9PYmplY3QoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP2R5bmFtaWNDYXN0QE9iamVjdEBLSlNAQFNB
P0FWMTJAQUJWVmFsdWVAMkBAWiBAIDY0IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6
T2JqZWN0OjpkeW5hbWljQ2FzdChjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQotCT9lcXVhbEBJ
ZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJEQFogQCA2NSBOT05BTUUgOyBi
b29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICosIGNo
YXIgY29uc3QgKikNCi0JP2VxdWFsQElkZW50aWZpZXJAS0pTQEBDQV9OUEFVUmVwQFVTdHJpbmdA
MkBQQlVVQ2hhckAyQEhAWiBAIDY2IE5PTkFNRSA7IGJvb2wgS0pTOjpJZGVudGlmaWVyOjplcXVh
bChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiwgc3RydWN0IEtKUzo6VUNoYXIgY29uc3QgKiwg
aW50KQ0KLQk/ZXZhbHVhdGVASW50ZXJwcmV0ZXJAS0pTQEBRQUU/QVZDb21wbGV0aW9uQDJAQUJW
VVN0cmluZ0AyQEFCVlZhbHVlQDJAMEBaIEAgNjcgTk9OQU1FIDsgY2xhc3MgS0pTOjpDb21wbGV0
aW9uIEtKUzo6SW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAm
LCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0K
LQk/ZXZhbHVhdGVASW50ZXJwcmV0ZXJAS0pTQEBRQUU/QVZDb21wbGV0aW9uQDJAQUJWVVN0cmlu
Z0AyQEgwQUJWVmFsdWVAMkBAWiBAIDY4IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBL
SlM6OkludGVycHJldGVyOjpldmFsdWF0ZShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgaW50
LCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0K
LQk/ZmluZEVudHJ5QExvb2t1cEBLSlNAQFNBUEJWSGFzaEVudHJ5QDJAUEJWSGFzaFRhYmxlQDJA
QUJWSWRlbnRpZmllckAyQEBaIEAgNjkgTk9OQU1FIDsgY2xhc3MgS0pTOjpIYXNoRW50cnkgY29u
c3QgKiBLSlM6Okxvb2t1cDo6ZmluZEVudHJ5KGNsYXNzIEtKUzo6SGFzaFRhYmxlIGNvbnN0ICos
IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKQ0KLQk/ZnJvbUBVU3RyaW5nQEtKU0BAU0E/
QVYxMkBKQFogQCA3MCBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpVU3RyaW5nOjpm
cm9tKGxvbmcpDQotCT9nZXRAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3MSBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtK
Uzo6T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVu
dGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9nZXRAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVA
MkBQQVZFeGVjU3RhdGVAMkBJQFogQCA3MiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6
T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25z
dA0KLQk/Z2V0QFByb3BlcnR5TWFwQEtKU0BAUUJFUEFWVmFsdWVJbXBAMkBBQlZJZGVudGlmaWVy
QDJAQFogQCA3MyBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlSW1wICogS0pTOjpQcm9wZXJ0eU1h
cDo6Z2V0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/Z2xvYmFsRXhl
Y0BJbnRlcnByZXRlckBLSlNAQFFBRVBBVkV4ZWNTdGF0ZUAyQFhaIEAgNzQgTk9OQU1FIDsgY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiBLSlM6OkludGVycHJldGVyOjpnbG9iYWxFeGVjKHZvaWQpDQot
CT9nbG9iYWxPYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQkVBQVZPYmplY3RAMkBYWiBAIDc1IE5P
TkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0ICYgS0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFsT2JqZWN0
KHZvaWQpIGNvbnN0DQotCT9oYXNJbnN0YW5jZUBPYmplY3RJbXBAS0pTQEBVQUU/QVZCb29sZWFu
QDJAUEFWRXhlY1N0YXRlQDJAQUJWVmFsdWVAMkBAWiBAIDc2IE5PTkFNRSA7IGNsYXNzIEtKUzo6
Qm9vbGVhbiBLSlM6Ok9iamVjdEltcDo6aGFzSW5zdGFuY2UoY2xhc3MgS0pTOjpFeGVjU3RhdGUg
KiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/aGFzT3duUHJvcGVydHlAT2JqZWN0QEtK
U0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3NyBOT05BTUUgOyBi
b29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBj
bGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCi0JP2hhc093blByb3BlcnR5QE9i
amVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzgg
Tk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNP
d25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDc5IE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNA
QFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODAgTk9OQU1FIDsgYm9v
bCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3Mg
S0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RAS0pT
QEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDgxIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6
Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QN
Ci0JP2hhc1Byb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRl
bnRpZmllckAyQEBaIEAgODIgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzUHJvcGVy
dHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYp
IGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAy
QElAWiBAIDgzIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2ltcEF0QExpc3RAS0pT
QEBRQkVQQVZWYWx1ZUltcEAyQEhAWiBAIDg0IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWVJbXAg
KiBLSlM6Okxpc3Q6OmltcEF0KGludCkgY29uc3QNCi0JP2ltcGxlbWVudHNDYWxsQE9iamVjdElt
cEBLSlNAQFVCRV9OWFogQCA4NSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbXBsZW1l
bnRzQ2FsbCh2b2lkKSBjb25zdA0KLQk/aW1wbGVtZW50c0NvbnN0cnVjdEBPYmplY3RJbXBAS0pT
QEBVQkVfTlhaIEAgODYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0Nv
bnN0cnVjdCh2b2lkKSBjb25zdA0KLQk/aW1wbGVtZW50c0hhc0luc3RhbmNlQE9iamVjdEltcEBL
SlNAQFVCRV9OWFogQCA4NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbXBsZW1lbnRz
SGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCi0JP2luY1N0YXRlbWVudENvdW50QEludGVycHJldGVy
QEtKU0BAUUFFWFhaIEAgODggTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjppbmNTdGF0
ZW1lbnRDb3VudCh2b2lkKQ0KLQk/aW5oZXJpdHNAT2JqZWN0SW1wQEtKU0BAUUJFX05QQlVDbGFz
c0luZm9AMkBAWiBAIDg5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmluaGVyaXRzKHN0
cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqKSBjb25zdA0KLQk/aW5pdEdsb2JhbE9iamVjdEBJ
bnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDkwIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRl
cjo6aW5pdEdsb2JhbE9iamVjdCh2b2lkKQ0KLQk/aXNOdWxsQFVTdHJpbmdAS0pTQEBRQkVfTlha
IEAgOTEgTk9OQU1FIDsgYm9vbCBLSlM6OlVTdHJpbmc6OmlzTnVsbCh2b2lkKSBjb25zdA0KLQk/
bGVuZ3RoUHJvcGVydHlAS0pTQEBZQUFCVklkZW50aWZpZXJAMUBYWiBAIDkyIE5PTkFNRSA7IGNs
YXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmIEtKUzo6bGVuZ3RoUHJvcGVydHkodm9pZCkNCi0J
P2xleGljYWxJbnRlcnByZXRlckBFeGVjU3RhdGVAS0pTQEBRQkVQQVZJbnRlcnByZXRlckAyQFha
IEAgOTMgTk9OQU1FIDsgY2xhc3MgS0pTOjpJbnRlcnByZXRlciAqIEtKUzo6RXhlY1N0YXRlOjps
ZXhpY2FsSW50ZXJwcmV0ZXIodm9pZCkgY29uc3QNCi0JP2xvY2tASW50ZXJwcmV0ZXJAS0pTQEBT
QVhYWiBAIDk0IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6bG9jayh2b2lkKQ0KLQk/
bWFya0BPYmplY3RJbXBAS0pTQEBVQUVYWFogQCA5NSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0
SW1wOjptYXJrKHZvaWQpDQotCT9tYXJrZWRAVmFsdWVJbXBAS0pTQEBRQkVfTlhaIEAgOTYgTk9O
QU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjptYXJrZWQodm9pZCkgY29uc3QNCi0JP21lc3NhZ2VQ
cm9wZXJ0eUBLSlNAQFlBQUJWSWRlbnRpZmllckAxQFhaIEAgOTcgTk9OQU1FIDsgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjptZXNzYWdlUHJvcGVydHkodm9pZCkNCi0JP3Byb3BM
aXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBa
IEAgOTggTk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0Ojpwcm9w
TGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KLQk/cHJvcExpc3RAT2JqZWN0SW1w
QEtKU0BAVUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBBVkV4ZWNTdGF0ZUAyQF9OQFogQCA5OSBOT05B
TUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5jZUxpc3QgS0pTOjpPYmplY3RJbXA6OnByb3BMaXN0KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wpDQotCT9wcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BA
UUJFP0FWVmFsdWVAMkBYWiBAIDEwMCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2Jq
ZWN0SW1wOjpwcm90b3R5cGUodm9pZCkgY29uc3QNCi0JP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFB
RVhBQlYxMkBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFz
cyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikNCi0JP3B1c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhQ
QVZPYmplY3RJbXBAMkBAWiBAIDEwMiBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cHVz
aChjbGFzcyBLSlM6Ok9iamVjdEltcCAqKQ0KLQk/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQQVZF
eGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUJWVmFsdWVAMkBIQFogQCAxMDMgTk9OQU1FIDsg
dm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtK
Uzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGludCkNCi0J
P3B1dEBPYmplY3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRlQDJASUFCVlZhbHVlQDJASEBaIEAg
MTA0IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dChjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCB1bnNpZ25lZCBpbnQsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJiwgaW50KQ0KLQk/cHV0
RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVyQDJASEhAWiBAIDEwNSBOT05B
TUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3QoY2xhc3MgS0pTOjpJZGVudGlmaWVy
IGNvbnN0ICYsIGludCwgaW50KQ0KLQk/cHV0RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJ
ZGVudGlmaWVyQDJAUEFWVmFsdWVJbXBAMkBIQFogQCAxMDYgTk9OQU1FIDsgdm9pZCBLSlM6Ok9i
amVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBL
SlM6OlZhbHVlSW1wICosIGludCkNCi0JP3JlZlZhbHVlc0BMaXN0QEtKU0BAQUFFWFhaIEAgMTA3
IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjpyZWZWYWx1ZXModm9pZCkNCi0JP3JlbGVhc2VATGlz
dEBLSlNAQEFBRVhYWiBAIDEwOCBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6cmVsZWFzZSh2b2lk
KQ0KLQk/cmVsZWFzZUBTY29wZUNoYWluQEtKU0BAQUFFWFhaIEAgMTA5IE5PTkFNRSA7IHZvaWQg
S0pTOjpTY29wZUNoYWluOjpyZWxlYXNlKHZvaWQpDQotCT9yZXNldFN0YXRlbWVudENvdW50QElu
dGVycHJldGVyQEtKU0BAUUFFWFhaIEAgMTEwIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRl
cjo6cmVzZXRTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KLQk/cmVzdG9yZUBQcm9wZXJ0eU1hcEBLSlNA
QFFBRVhBQlZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDExMSBOT05BTUUgOyB2b2lkIEtKUzo6UHJv
cGVydHlNYXA6OnJlc3RvcmUoY2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMgY29uc3QgJikNCi0J
P3Jlc3RvcmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFBRVhBQlZTYXZlZEJ1aWx0aW5zQDJA
QFogQCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpyZXN0b3JlQnVpbHRpbnMo
Y2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zIGNvbnN0ICYpDQotCT9zYXZlQFByb3BlcnR5TWFwQEtK
U0BAUUJFWEFBVlNhdmVkUHJvcGVydGllc0AyQEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgS0pTOjpQ
cm9wZXJ0eU1hcDo6c2F2ZShjbGFzcyBLSlM6OlNhdmVkUHJvcGVydGllcyAmKSBjb25zdA0KLQk/
c2F2ZUJ1aWx0aW5zQEludGVycHJldGVyQEtKU0BAUUJFWEFBVlNhdmVkQnVpbHRpbnNAMkBAWiBA
IDExNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNhdmVCdWlsdGlucyhjbGFzcyBL
SlM6OlNhdmVkQnVpbHRpbnMgJikgY29uc3QNCi0JP3NldENvbXBhdE1vZGVASW50ZXJwcmV0ZXJA
S0pTQEBRQUVYVzRDb21wYXRNb2RlQDEyQEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRl
cnByZXRlcjo6c2V0Q29tcGF0TW9kZShlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1vZGUp
DQotCT9zZXRQcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVlZhbHVlQDJAQFogQCAxMTYg
Tk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6c2V0UHJvdG90eXBlKGNsYXNzIEtKUzo6VmFs
dWUgY29uc3QgJikNCi0JP3NldFNob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNA
QFNBWF9OQFogQCAxMTcgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpzZXRTaG91bGRQ
cmludEV4Y2VwdGlvbnMoYm9vbCkNCi0JP3Nob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRl
ckBLSlNAQFNBX05YWiBAIDExOCBOT05BTUUgOyBib29sIEtKUzo6SW50ZXJwcmV0ZXI6OnNob3Vs
ZFByaW50RXhjZXB0aW9ucyh2b2lkKQ0KLQk/dG9BcnJheUluZGV4QFVTdHJpbmdAS0pTQEBRQkVJ
UEFfTkBaIEAgMTE5IE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlVTdHJpbmc6OnRvQXJyYXlJ
bmRleChib29sICopIGNvbnN0DQotCT90b0Jvb2xlYW5AT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZF
eGVjU3RhdGVAMkBAWiBAIDEyMCBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjp0b0Jvb2xl
YW4oY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvSW50MzJAVmFsdWVJbXBAS0pT
QEBRQkVKUEFWRXhlY1N0YXRlQDJAQFogQCAxMjEgTk9OQU1FIDsgbG9uZyBLSlM6OlZhbHVlSW1w
Ojp0b0ludDMyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b0ludGVnZXJAVmFs
dWVJbXBAS0pTQEBRQkVOUEFWRXhlY1N0YXRlQDJAQFogQCAxMjIgTk9OQU1FIDsgZG91YmxlIEtK
Uzo6VmFsdWVJbXA6OnRvSW50ZWdlcihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/
dG9OdW1iZXJAT2JqZWN0SW1wQEtKU0BAVUJFTlBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTIzIE5PTkFN
RSA7IGRvdWJsZSBLSlM6Ok9iamVjdEltcDo6dG9OdW1iZXIoY2xhc3MgS0pTOjpFeGVjU3RhdGUg
KikgY29uc3QNCi0JP3RvT2JqZWN0QE9iamVjdEltcEBLSlNAQFVCRT9BVk9iamVjdEAyQFBBVkV4
ZWNTdGF0ZUAyQEBaIEAgMTI0IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0
SW1wOjp0b09iamVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9QcmltaXRp
dmVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFR5cGVAMkBA
WiBAIDEyNSBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjp0b1ByaW1p
dGl2ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkgY29uc3QNCi0JP3Rv
U3RyaW5nQE9iamVjdEltcEBLSlNAQFVCRT9BVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWiBA
IDEyNiBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpPYmplY3RJbXA6OnRvU3RyaW5n
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b1VJbnQxNkBWYWx1ZUltcEBLSlNA
QFFCRUdQQVZFeGVjU3RhdGVAMkBAWiBAIDEyNyBOT05BTUUgOyB1bnNpZ25lZCBzaG9ydCBLSlM6
OlZhbHVlSW1wOjp0b1VJbnQxNihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9V
SW50MzJAVmFsdWVJbXBAS0pTQEBFQkVfTkFBSUBaIEAgMTI4IE5PTkFNRSA7IGJvb2wgS0pTOjpW
YWx1ZUltcDo6dG9VSW50MzIodW5zaWduZWQgaW50ICYpIGNvbnN0DQotCT90b1VJbnQzMkBWYWx1
ZUltcEBLSlNAQFFCRUtQQVZFeGVjU3RhdGVAMkBAWiBAIDEyOSBOT05BTUUgOyB1bnNpZ25lZCBs
b25nIEtKUzo6VmFsdWVJbXA6OnRvVUludDMyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0
DQotCT90b1VMb25nQFVTdHJpbmdAS0pTQEBRQkVLUEFfTkBaIEAgMTMwIE5PTkFNRSA7IHVuc2ln
bmVkIGxvbmcgS0pTOjpVU3RyaW5nOjp0b1VMb25nKGJvb2wgKikgY29uc3QNCi0JP3R5cGVAT2Jq
ZWN0SW1wQEtKU0BAVUJFP0FXNFR5cGVAMkBYWiBAIDEzMSBOT05BTUUgOyBlbnVtIEtKUzo6VHlw
ZSBLSlM6Ok9iamVjdEltcDo6dHlwZSh2b2lkKSBjb25zdA0KLQk/dW5sb2NrQEludGVycHJldGVy
QEtKU0BAU0FYWFogQCAxMzIgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjp1bmxvY2so
dm9pZCkNCi0JP3ZhbHVlQFN0cmluZ0BLSlNAQFFCRT9BVlVTdHJpbmdAMkBYWiBAIDEzMyBOT05B
TUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpTdHJpbmc6OnZhbHVlKHZvaWQpIGNvbnN0DQot
CT92aXJ0dWFsX2hvb2tASW50ZXJwcmV0ZXJAS0pTQEBNQUVYSFBBWEBaIEAgMTM0IE5PTkFNRSA7
IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dmlydHVhbF9ob29rKGludCwgdm9pZCAqKQ0KLQlranNf
c3RydG9kIEAgMTM1IE5PTkFNRQ0KLQk/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNz
SW5mb0AyQFhaIEAgMTM2IE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtK
Uzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0JP2hhc093blByb3BlcnR5QE9iamVj
dEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTM3IE5PTkFNRSA7IGJvb2wgS0pTOjpP
YmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGlu
dCkgY29uc3QNCisgICAgPz8wQm9vbGVhbkBLSlNAQFFBRUBfTkBaIEAgMSBOT05BTUUgOyBLSlM6
OkJvb2xlYW46OkJvb2xlYW4oYm9vbCkNCisgICAgPz8wSW50ZXJwcmV0ZXJAS0pTQEBRQUVAQUJW
T2JqZWN0QDFAQFogQCAyIE5PTkFNRSA7IEtKUzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKGNs
YXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYpDQorICAgID8/MExpc3RAS0pTQEBRQUVAWFogQCAzIE5P
TkFNRSA7IEtKUzo6TGlzdDo6TGlzdCh2b2lkKQ0KKyAgICA/PzBOdWxsQEtKU0BAUUFFQFhaIEAg
NCBOT05BTUUgOyBLSlM6Ok51bGw6Ok51bGwodm9pZCkNCisgICAgPz8wTnVtYmVyQEtKU0BAUUFF
QEhAWiBAIDUgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihpbnQpDQorICAgID8/ME51bWJl
ckBLSlNAQFFBRUBJQFogQCA2IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQg
aW50KQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBRQUVASkBaIEAgNyBOT05BTUUgOyBLSlM6Ok51bWJl
cjo6TnVtYmVyKGxvbmcpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBLQFogQCA4IE5PTkFNRSA7
IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgbG9uZykNCisgICAgPz8wTnVtYmVyQEtKU0BA
UUFFQE5AWiBAIDkgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihkb3VibGUpDQorICAgID8/
ME9iamVjdEltcEBLSlNAQFFBRUBBQlZPYmplY3RAMUBAWiBAIDEwIE5PTkFNRSA7IEtKUzo6T2Jq
ZWN0SW1wOjpPYmplY3RJbXAoY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJikNCisgICAgPz8wT2Jq
ZWN0SW1wQEtKU0BAUUFFQFhaIEAgMTEgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6Ok9iamVjdElt
cCh2b2lkKQ0KKyAgICA/PzBSdW50aW1lT2JqZWN0SW1wQEtKU0BAUUFFQFBBVkluc3RhbmNlQEJp
bmRpbmdzQDFAX05AWiBAIDEyIE5PTkFNRSA7IEtKUzo6UnVudGltZU9iamVjdEltcDo6UnVudGlt
ZU9iamVjdEltcChjbGFzcyBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqLCBib29sKQ0KKyAgICA/
PzBTdHJpbmdAS0pTQEBRQUVAQUJWVVN0cmluZ0AxQEBaIEAgMTMgTk9OQU1FIDsgS0pTOjpTdHJp
bmc6OlN0cmluZyhjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCisgICAgPz8wVVN0cmluZ0BL
SlNAQFFBRUBBQlYwMUAwQFogQCAxNCBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2xh
c3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KKyAg
ICA/PzBVU3RyaW5nQEtKU0BAUUFFQERAWiBAIDE1IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0
cmluZyhjaGFyKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQFBBVVVDaGFyQDFASF9OQFogQCAx
NiBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoc3RydWN0IEtKUzo6VUNoYXIgKiwgaW50
LCBib29sKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQFBCREBaIEAgMTcgTk9OQU1FIDsgS0pT
OjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIgY29uc3QgKikNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFB
RUBQQlVVQ2hhckAxQEhAWiBAIDE4IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhzdHJ1
Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQorICAgID8/MFVTdHJpbmdAS0pTQEBRQUVAWFog
QCAxOSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcodm9pZCkNCisgICAgPz8wVW5kZWZp
bmVkQEtKU0BAUUFFQFhaIEAgMjAgTk9OQU1FIDsgS0pTOjpVbmRlZmluZWQ6OlVuZGVmaW5lZCh2
b2lkKQ0KKyAgICA/PzBWYWx1ZUBLSlNAQFFBRUBBQlYwMUBAWiBAIDIxIE5PTkFNRSA7IEtKUzo6
VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgPz8wVmFsdWVAS0pT
QEBRQUVAUEFWVmFsdWVJbXBAMUBAWiBAIDIyIE5PTkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNs
YXNzIEtKUzo6VmFsdWVJbXAgKikNCisgICAgPz8xSW50ZXJwcmV0ZXJAS0pTQEBVQUVAWFogQCAy
MyBOT05BTUUgOyBLSlM6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIodm9pZCkNCisgICAgPz8x
T2JqZWN0SW1wQEtKU0BAVUFFQFhaIEAgMjQgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6On5PYmpl
Y3RJbXAodm9pZCkNCisgICAgPz8xVmFsdWVAS0pTQEBRQUVAWFogQCAyNSBOT05BTUUgOyBLSlM6
OlZhbHVlOjp+VmFsdWUodm9pZCkNCisgICAgPz8yVmFsdWVJbXBAS0pTQEBTQVBBWElAWiBAIDI2
IE5PTkFNRSA7IHZvaWQgKiBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBuZXcodW5zaWduZWQgaW50
KQ0KKyAgICA/PzNWYWx1ZUltcEBLSlNAQFNBWFBBWEBaIEAgMjcgTk9OQU1FIDsgdm9pZCBLSlM6
OlZhbHVlSW1wOjpvcGVyYXRvciBkZWxldGUodm9pZCAqKQ0KKyAgICA/PzRDU3RyaW5nQEtKU0BA
UUFFQUFWMDFAUEJEQFogQCAyOCBOT05BTUUgOyBjbGFzcyBLSlM6OkNTdHJpbmcgJiBLSlM6OkNT
dHJpbmc6Om9wZXJhdG9yPShjaGFyIGNvbnN0ICopDQorICAgID8/NExpc3RAS0pTQEBRQUVBQVYw
MUBBQlYwMUBAWiBAIDI5IE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCAmIEtKUzo6TGlzdDo6b3Bl
cmF0b3I9KGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/PzRTY29wZUNoYWluQEtKU0BA
UUFFQUFWMDFAQUJWMDFAQFogQCAzMCBOT05BTUUgOyBjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gJiBL
SlM6OlNjb3BlQ2hhaW46Om9wZXJhdG9yPShjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikN
CisgICAgPz80VVN0cmluZ0BLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAgMzEgTk9OQU1FIDsgY2xh
c3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpVU3Ry
aW5nIGNvbnN0ICYpDQorICAgID8/NFZhbHVlQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMiBO
T05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlICYgS0pTOjpWYWx1ZTo6b3BlcmF0b3I9KGNsYXNzIEtK
Uzo6VmFsdWUgY29uc3QgJikNCisgICAgPz84S0pTQEBZQV9OQUJWVVN0cmluZ0AwQFBCREBaIEAg
MzMgTk9OQU1FIDsgYm9vbCBLSlM6Om9wZXJhdG9yPT0oY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0
ICYsIGNoYXIgY29uc3QgKikNCisgICAgP05QTl9TZXRFeGNlcHRpb25XaXRoVVRGOEBAWUFYUEFV
TlBPYmplY3RAQFBCREhAWiBAIDM0IE5PTkFNRSA7IHZvaWQgTlBOX1NldEV4Y2VwdGlvbldpdGhV
VEY4KHN0cnVjdCBOUE9iamVjdCAqLCBjaGFyIGNvbnN0ICosIGludCkNCisgICAgP2FkZEBJZGVu
dGlmaWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBBVTM0MkBAWiBAIDM1IE5PTkFNRSA7IHN0
cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6SWRlbnRpZmllcjo6YWRkKHN0cnVjdCBLSlM6
OlVTdHJpbmc6OlJlcCAqKQ0KKyAgICA/YWRkQElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBVU3Ry
aW5nQDJAUEJEQFogQCAzNiBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6
OklkZW50aWZpZXI6OmFkZChjaGFyIGNvbnN0ICopDQorICAgID9hcHBlbmRATGlzdEBLSlNAQFFB
RVhQQVZWYWx1ZUltcEAyQEBaIEAgMzcgTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OmFwcGVuZChj
bGFzcyBLSlM6OlZhbHVlSW1wICopDQorICAgID9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEy
QEFCVjEyQEBaIEAgMzggTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5n
OjphcHBlbmQoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID9hcHBlbmRAVVN0cmlu
Z0BLSlNAQFFBRUFBVjEyQFBCREBaIEAgMzkgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYg
S0pTOjpVU3RyaW5nOjphcHBlbmQoY2hhciBjb25zdCAqKQ0KKyAgICA/YXNjaWlAVVN0cmluZ0BL
SlNAQFFCRVBBRFhaIEAgNDAgTk9OQU1FIDsgY2hhciAqIEtKUzo6VVN0cmluZzo6YXNjaWkodm9p
ZCkgY29uc3QNCisgICAgP2F0dGFjaE51bGxAVVN0cmluZ0BLSlNAQEFBRVhYWiBAIDQxIE5PTkFN
RSA7IHZvaWQgS0pTOjpVU3RyaW5nOjphdHRhY2hOdWxsKHZvaWQpDQorICAgID9idWlsdGluQXJy
YXlASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQyIE5PTkFNRSA7IGNsYXNz
IEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5BcnJheSh2b2lkKSBjb25zdA0K
KyAgICA/YnVpbHRpbkZ1bmN0aW9uQEludGVycHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFog
QCA0MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGlu
RnVuY3Rpb24odm9pZCkgY29uc3QNCisgICAgP2J1aWx0aW5PYmplY3RASW50ZXJwcmV0ZXJAS0pT
QEBRQkU/QVZPYmplY3RAMkBYWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6
SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3Qodm9pZCkgY29uc3QNCisgICAgP2J1aWx0aW5PYmpl
Y3RQcm90b3R5cGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQ1IE5PTkFN
RSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3RQcm90
b3R5cGUodm9pZCkgY29uc3QNCisgICAgP2NhbGxAT2JqZWN0QEtKU0BAUUFFP0FWVmFsdWVAMkBQ
QVZFeGVjU3RhdGVAMkBBQVYxMkBBQlZMaXN0QDJAQFogQCA0NiBOT05BTUUgOyBjbGFzcyBLSlM6
OlZhbHVlIEtKUzo6T2JqZWN0OjpjYWxsKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtK
Uzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/Y2FsbEBPYmplY3RJ
bXBAS0pTQEBVQUU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFBVk9iamVjdEAyQEFCVkxpc3RA
MkBAWiBAIDQ3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmNhbGwo
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmplY3QgJiwgY2xhc3MgS0pTOjpM
aXN0IGNvbnN0ICYpDQorICAgID9jYW5QdXRAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3Rh
dGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA0OCBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1w
OjpjYW5QdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNv
bnN0ICYpIGNvbnN0DQorICAgID9jbGFzc0luZm9AT2JqZWN0QEtKU0BAUUJFUEJVQ2xhc3NJbmZv
QDJAWFogQCA0OSBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9i
amVjdDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQorICAgID9jbGFzc0luZm9AT2JqZWN0SW1wQEtK
U0BAVUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA1MCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0lu
Zm8gY29uc3QgKiBLSlM6Ok9iamVjdEltcDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQorICAgID9j
bGFzc05hbWVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmluZ0AyQFhaIEAgNTEgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6T2JqZWN0SW1wOjpjbGFzc05hbWUodm9pZCkgY29uc3QN
CisgICAgP2NvbGxlY3RAQ29sbGVjdG9yQEtKU0BAU0FfTlhaIEAgNTIgTk9OQU1FIDsgYm9vbCBL
SlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCh2b2lkKQ0KKyAgICA/Y29tcGF0TW9kZUBJbnRlcnByZXRl
ckBLSlNAQFFCRT9BVzRDb21wYXRNb2RlQDEyQFhaIEAgNTMgTk9OQU1FIDsgZW51bSBLSlM6Oklu
dGVycHJldGVyOjpDb21wYXRNb2RlIEtKUzo6SW50ZXJwcmV0ZXI6OmNvbXBhdE1vZGUodm9pZCkg
Y29uc3QNCisgICAgP2NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZPYmplY3RAMkBQQVZF
eGVjU3RhdGVAMkBBQlZMaXN0QDJAQFogQCA1NCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBL
SlM6Ok9iamVjdEltcDo6Y29uc3RydWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtK
Uzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/Y29uc3RydWN0QE9iamVjdEltcEBLSlNAQFVBRT9BVk9i
amVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxpc3RAMkBBQlZVU3RyaW5nQDJASEBaIEAgNTUgTk9O
QU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJbXA6OmNvbnN0cnVjdChjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3Ry
aW5nIGNvbnN0ICYsIGludCkNCisgICAgP2NvcHlUYWlsQExpc3RAS0pTQEBRQkU/QVYxMkBYWiBA
IDU2IE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCBLSlM6Okxpc3Q6OmNvcHlUYWlsKHZvaWQpIGNv
bnN0DQorICAgID9jcmVhdGVARXJyb3JAS0pTQEBTQT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAy
QFc0RXJyb3JUeXBlQDJAUEJESEhQQlZVU3RyaW5nQDJAQFogQCA1NyBOT05BTUUgOyBjbGFzcyBL
SlM6Ok9iamVjdCBLSlM6OkVycm9yOjpjcmVhdGUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51
bSBLSlM6OkVycm9yVHlwZSwgY2hhciBjb25zdCAqLCBpbnQsIGludCwgY2xhc3MgS0pTOjpVU3Ry
aW5nIGNvbnN0ICopDQorICAgID9jcmVhdGVAUmVwQFVTdHJpbmdAS0pTQEBTQVBBVTEyM0BQQVVV
Q2hhckAzQEhAWiBAIDU4IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6
VVN0cmluZzo6UmVwOjpjcmVhdGUoc3RydWN0IEtKUzo6VUNoYXIgKiwgaW50KQ0KKyAgICA/Y3Jl
YXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2VASW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQVBB
VjEyM0BXNEJpbmRpbmdMYW5ndWFnZUAxMjNAUEFYUEJWUm9vdE9iamVjdEAyM0BAWiBAIDU5IE5P
TkFNRSA7IGNsYXNzIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICogS0pTOjpCaW5kaW5nczo6SW5z
dGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlKGVudW0gS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSwgdm9pZCAqLCBjbGFzcyBLSlM6OkJpbmRpbmdz
OjpSb290T2JqZWN0IGNvbnN0ICopDQorICAgID9jcmVhdGVDb3B5aW5nQFJlcEBVU3RyaW5nQEtK
U0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BIQFogQCA2MCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3Ry
aW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3JlYXRlQ29weWluZyhzdHJ1Y3QgS0pTOjpV
Q2hhciBjb25zdCAqLCBpbnQpDQorICAgID9jcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWVA
SW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQVBBWFBBVkV4ZWNTdGF0ZUAzQFc0QmluZGluZ0xhbmd1
YWdlQDEyM0BBQlZPYmplY3RAM0BQQlZSb290T2JqZWN0QDIzQDNAWiBAIDYxIE5PTkFNRSA7IHZv
aWQgKiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZh
bHVlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6
OkJpbmRpbmdMYW5ndWFnZSwgY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJiwgY2xhc3MgS0pTOjpC
aW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqLCBjbGFzcyBLSlM6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0IGNvbnN0ICopDQorICAgID9jcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWVASW50ZXJw
cmV0ZXJAS0pTQEBVQUVQQVhQQVZFeGVjU3RhdGVAMkBXNEJpbmRpbmdMYW5ndWFnZUBJbnN0YW5j
ZUBCaW5kaW5nc0AyQEFCVk9iamVjdEAyQFBCVlJvb3RPYmplY3RANjJAM0BaIEAgNjIgTk9OQU1F
IDsgdm9pZCAqIEtKUzo6SW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1
ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpC
aW5kaW5nTGFuZ3VhZ2UsIGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYsIGNsYXNzIEtKUzo6Qmlu
ZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVj
dCBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlUnVudGltZU9iamVjdEBJbnN0YW5jZUBCaW5kaW5nc0BL
SlNAQFNBP0FWT2JqZWN0QDNAVzRCaW5kaW5nTGFuZ3VhZ2VAMTIzQFBBWFBCVlJvb3RPYmplY3RA
MjNAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChlbnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpC
aW5kaW5nTGFuZ3VhZ2UsIHZvaWQgKiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBj
b25zdCAqKQ0KKyAgICA/ZGVmYXVsdFZhbHVlQE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJA
UEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFogQCA2NCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVl
IEtKUzo6T2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51
bSBLSlM6OlR5cGUpIGNvbnN0DQorICAgID9kZWxldGVBbGxQcm9wZXJ0aWVzQE9iamVjdEltcEBL
SlNAQFFBRVhQQVZFeGVjU3RhdGVAMkBAWiBAIDY1IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJ
bXA6OmRlbGV0ZUFsbFByb3BlcnRpZXMoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikNCisgICAgP2Rl
bGV0ZVByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRp
ZmllckAyQEBaIEAgNjYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlUHJvcGVy
dHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYp
DQorICAgID9kZWxldGVQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQUVfTlBBVkV4ZWNTdGF0ZUAy
QElAWiBAIDY3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkNCisgICAgP2RlcmVmVmFsdWVzQExp
c3RAS0pTQEBBQUVYWFogQCA2OCBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6ZGVyZWZWYWx1ZXMo
dm9pZCkNCisgICAgP2Rlc3Ryb3lAUmVwQFVTdHJpbmdAS0pTQEBRQUVYWFogQCA2OSBOT05BTUUg
OyB2b2lkIEtKUzo6VVN0cmluZzo6UmVwOjpkZXN0cm95KHZvaWQpDQorICAgID9kaXNwYXRjaFRv
T2JqZWN0QFZhbHVlSW1wQEtKU0BAUUJFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFogQCA3
MCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OlZhbHVlSW1wOjpkaXNwYXRjaFRvT2Jq
ZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID9keW5hbWljQ2FzdEBPYmpl
Y3RAS0pTQEBTQT9BVjEyQEFCVlZhbHVlQDJAQFogQCA3MSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9i
amVjdCBLSlM6Ok9iamVjdDo6ZHluYW1pY0Nhc3QoY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0K
KyAgICA/ZXF1YWxASWRlbnRpZmllckBLSlNAQENBX05QQVVSZXBAVVN0cmluZ0AyQFBCREBaIEAg
NzIgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZpZXI6OmVxdWFsKHN0cnVjdCBLSlM6OlVTdHJp
bmc6OlJlcCAqLCBjaGFyIGNvbnN0ICopDQorICAgID9lcXVhbEBJZGVudGlmaWVyQEtKU0BAQ0Ff
TlBBVVJlcEBVU3RyaW5nQDJAUEJVVUNoYXJAMkBIQFogQCA3MyBOT05BTUUgOyBib29sIEtKUzo6
SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICosIHN0cnVjdCBLSlM6
OlVDaGFyIGNvbnN0ICosIGludCkNCisgICAgP2V2YWx1YXRlQEludGVycHJldGVyQEtKU0BAUUFF
P0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBBQlZWYWx1ZUAyQDBAWiBAIDc0IE5PTkFNRSA7
IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6OkludGVycHJldGVyOjpldmFsdWF0ZShjbGFzcyBL
SlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmLCBjbGFzcyBLSlM6
OlVTdHJpbmcgY29uc3QgJikNCisgICAgP2V2YWx1YXRlQEludGVycHJldGVyQEtKU0BAUUFFP0FW
Q29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBIMEFCVlZhbHVlQDJAQFogQCA3NSBOT05BTUUgOyBj
bGFzcyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJbnRlcnByZXRlcjo6ZXZhbHVhdGUoY2xhc3MgS0pT
OjpVU3RyaW5nIGNvbnN0ICYsIGludCwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNz
IEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2ZpbmRFbnRyeUBMb29rdXBAS0pTQEBTQVBCVkhh
c2hFbnRyeUAyQFBCVkhhc2hUYWJsZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDc2IE5PTkFNRSA7
IGNsYXNzIEtKUzo6SGFzaEVudHJ5IGNvbnN0ICogS0pTOjpMb29rdXA6OmZpbmRFbnRyeShjbGFz
cyBLSlM6Okhhc2hUYWJsZSBjb25zdCAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikN
CisgICAgP2Zyb21AVVN0cmluZ0BLSlNAQFNBP0FWMTJASkBaIEAgNzcgTk9OQU1FIDsgY2xhc3Mg
S0pTOjpVU3RyaW5nIEtKUzo6VVN0cmluZzo6ZnJvbShsb25nKQ0KKyAgICA/Z2V0QE9iamVjdElt
cEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
NzggTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Z2V0KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAg
ICA/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJASUBaIEAg
NzkgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Z2V0KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2dldEBQcm9wZXJ0eU1h
cEBLSlNAQFFCRVBBVlZhbHVlSW1wQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODAgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpWYWx1ZUltcCAqIEtKUzo6UHJvcGVydHlNYXA6OmdldChjbGFzcyBLSlM6Oklk
ZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2dsb2JhbEV4ZWNASW50ZXJwcmV0ZXJAS0pT
QEBRQUVQQVZFeGVjU3RhdGVAMkBYWiBAIDgxIE5PTkFNRSA7IGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICogS0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFsRXhlYyh2b2lkKQ0KKyAgICA/Z2xvYmFsT2JqZWN0
QEludGVycHJldGVyQEtKU0BAUUJFQUFWT2JqZWN0QDJAWFogQCA4MiBOT05BTUUgOyBjbGFzcyBL
SlM6Ok9iamVjdCAmIEtKUzo6SW50ZXJwcmV0ZXI6Omdsb2JhbE9iamVjdCh2b2lkKSBjb25zdA0K
KyAgICA/aGFzSW5zdGFuY2VAT2JqZWN0SW1wQEtKU0BAVUFFP0FWQm9vbGVhbkAyQFBBVkV4ZWNT
dGF0ZUAyQEFCVlZhbHVlQDJAQFogQCA4MyBOT05BTUUgOyBjbGFzcyBLSlM6OkJvb2xlYW4gS0pT
OjpPYmplY3RJbXA6Omhhc0luc3RhbmNlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtK
Uzo6VmFsdWUgY29uc3QgJikNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9O
UEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODQgTk9OQU1FIDsgYm9vbCBLSlM6
Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RA
S0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg1IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmpl
Y3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkg
Y29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0
YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdElt
cDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVu
dGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pT
QEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJ
bXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkg
Y29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJA
QUJWSWRlbnRpZmllckAyQEBaIEAgODggTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJv
cGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0
ICYpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0
ZUAyQElAWiBAIDg5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5
QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
OTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9o
YXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDkxIE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2ltcEF0QExpc3RAS0pTQEBRQkVQQVZW
YWx1ZUltcEAyQEhAWiBAIDkyIE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWVJbXAgKiBLSlM6Okxp
c3Q6OmltcEF0KGludCkgY29uc3QNCisgICAgP2ltcGxlbWVudHNDYWxsQE9iamVjdEltcEBLSlNA
QFVCRV9OWFogQCA5MyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbXBsZW1lbnRzQ2Fs
bCh2b2lkKSBjb25zdA0KKyAgICA/aW1wbGVtZW50c0NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBV
QkVfTlhaIEAgOTQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1wbGVtZW50c0NvbnN0
cnVjdCh2b2lkKSBjb25zdA0KKyAgICA/aW1wbGVtZW50c0hhc0luc3RhbmNlQE9iamVjdEltcEBL
SlNAQFVCRV9OWFogQCA5NSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjppbXBsZW1lbnRz
SGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCisgICAgP2luY1N0YXRlbWVudENvdW50QEludGVycHJl
dGVyQEtKU0BAUUFFWFhaIEAgOTYgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjppbmNT
dGF0ZW1lbnRDb3VudCh2b2lkKQ0KKyAgICA/aW5oZXJpdHNAT2JqZWN0SW1wQEtKU0BAUUJFX05Q
QlVDbGFzc0luZm9AMkBAWiBAIDk3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmluaGVy
aXRzKHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqKSBjb25zdA0KKyAgICA/aW5pdEdsb2Jh
bE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDk4IE5PTkFNRSA7IHZvaWQgS0pTOjpJ
bnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVjdCh2b2lkKQ0KKyAgICA/aXNOdWxsQFVTdHJpbmdA
S0pTQEBRQkVfTlhaIEAgOTkgTk9OQU1FIDsgYm9vbCBLSlM6OlVTdHJpbmc6OmlzTnVsbCh2b2lk
KSBjb25zdA0KKyAgICA/bGVuZ3RoUHJvcGVydHlAS0pTQEBZQUFCVklkZW50aWZpZXJAMUBYWiBA
IDEwMCBOT05BTUUgOyBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiBLSlM6Omxlbmd0aFBy
b3BlcnR5KHZvaWQpDQorICAgID9sZXhpY2FsSW50ZXJwcmV0ZXJARXhlY1N0YXRlQEtKU0BAUUJF
UEFWSW50ZXJwcmV0ZXJAMkBYWiBAIDEwMSBOT05BTUUgOyBjbGFzcyBLSlM6OkludGVycHJldGVy
ICogS0pTOjpFeGVjU3RhdGU6OmxleGljYWxJbnRlcnByZXRlcih2b2lkKSBjb25zdA0KKyAgICA/
bG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTAyIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRl
cnByZXRlcjo6bG9jayh2b2lkKQ0KKyAgICA/bWFya0BPYmplY3RJbXBAS0pTQEBVQUVYWFogQCAx
MDMgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6bWFyayh2b2lkKQ0KKyAgICA/bWFya2Vk
QFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDEwNCBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6
Om1hcmtlZCh2b2lkKSBjb25zdA0KKyAgICA/bWVzc2FnZVByb3BlcnR5QEtKU0BAWUFBQlZJZGVu
dGlmaWVyQDFAWFogQCAxMDUgTk9OQU1FIDsgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYg
S0pTOjptZXNzYWdlUHJvcGVydHkodm9pZCkNCisgICAgP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFB
RT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTA2IE5PTkFNRSA7IGNs
YXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP3Byb3BMaXN0QE9iamVjdEltcEBLSlNAQFVBRT9BVlJl
ZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTA3IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdEltcDo6cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVj
U3RhdGUgKiwgYm9vbCkNCisgICAgP3Byb3RvdHlwZUBPYmplY3RJbXBAS0pTQEBRQkU/QVZWYWx1
ZUAyQFhaIEAgMTA4IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OnBy
b3RvdHlwZSh2b2lkKSBjb25zdA0KKyAgICA/cHVzaEBTY29wZUNoYWluQEtKU0BAUUFFWEFCVjEy
QEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpwdXNoKGNsYXNzIEtKUzo6
U2NvcGVDaGFpbiBjb25zdCAmKQ0KKyAgICA/cHVzaEBTY29wZUNoYWluQEtKU0BAUUFFWFBBVk9i
amVjdEltcEAyQEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpwdXNoKGNs
YXNzIEtKUzo6T2JqZWN0SW1wICopDQorICAgID9wdXRAT2JqZWN0SW1wQEtKU0BAVUFFWFBBVkV4
ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQlZWYWx1ZUAyQEhAWiBAIDExMSBOT05BTUUgOyB2
b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJiwgaW50KQ0KKyAg
ICA/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQQVZFeGVjU3RhdGVAMkBJQUJWVmFsdWVAMkBIQFog
QCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIHVuc2lnbmVkIGludCwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmLCBpbnQpDQorICAg
ID9wdXREaXJlY3RAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVklkZW50aWZpZXJAMkBISEBaIEAgMTEz
IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dERpcmVjdChjbGFzcyBLSlM6OklkZW50
aWZpZXIgY29uc3QgJiwgaW50LCBpbnQpDQorICAgID9wdXREaXJlY3RAT2JqZWN0SW1wQEtKU0BA
UUFFWEFCVklkZW50aWZpZXJAMkBQQVZWYWx1ZUltcEAyQEhAWiBAIDExNCBOT05BTUUgOyB2b2lk
IEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3QoY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYs
IGNsYXNzIEtKUzo6VmFsdWVJbXAgKiwgaW50KQ0KKyAgICA/cmVmVmFsdWVzQExpc3RAS0pTQEBB
QUVYWFogQCAxMTUgTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OnJlZlZhbHVlcyh2b2lkKQ0KKyAg
ICA/cmVsZWFzZUBMaXN0QEtKU0BAQUFFWFhaIEAgMTE2IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0
OjpyZWxlYXNlKHZvaWQpDQorICAgID9yZWxlYXNlQFNjb3BlQ2hhaW5AS0pTQEBBQUVYWFogQCAx
MTcgTk9OQU1FIDsgdm9pZCBLSlM6OlNjb3BlQ2hhaW46OnJlbGVhc2Uodm9pZCkNCisgICAgP3Jl
bW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXNAUm9vdE9iamVjdEBCaW5kaW5nc0BLSlNAQFFBRVhYWiBA
IDExOCBOT05BTUUgOyB2b2lkIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6OnJlbW92ZUFsbE5h
dGl2ZVJlZmVyZW5jZXModm9pZCkNCisgICAgP3JlbW92ZU5hdGl2ZVJlZmVyZW5jZUBCaW5kaW5n
c0BLSlNAQFlBWFBBVk9iamVjdEltcEAyQEBaIEAgMTE5IE5PTkFNRSA7IHZvaWQgS0pTOjpCaW5k
aW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlKGNsYXNzIEtKUzo6T2JqZWN0SW1wICopDQorICAg
ID9yZXNldFN0YXRlbWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgMTIwIE5PTkFN
RSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzZXRTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KKyAg
ICA/cmVzdG9yZUBQcm9wZXJ0eU1hcEBLSlNAQFFBRVhBQlZTYXZlZFByb3BlcnRpZXNAMkBAWiBA
IDEyMSBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnJlc3RvcmUoY2xhc3MgS0pTOjpT
YXZlZFByb3BlcnRpZXMgY29uc3QgJikNCisgICAgP3Jlc3RvcmVCdWlsdGluc0BJbnRlcnByZXRl
ckBLSlNAQFFBRVhBQlZTYXZlZEJ1aWx0aW5zQDJAQFogQCAxMjIgTk9OQU1FIDsgdm9pZCBLSlM6
OkludGVycHJldGVyOjpyZXN0b3JlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zIGNv
bnN0ICYpDQorICAgID9zYXZlQFByb3BlcnR5TWFwQEtKU0BAUUJFWEFBVlNhdmVkUHJvcGVydGll
c0AyQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgS0pTOjpQcm9wZXJ0eU1hcDo6c2F2ZShjbGFzcyBL
SlM6OlNhdmVkUHJvcGVydGllcyAmKSBjb25zdA0KKyAgICA/c2F2ZUJ1aWx0aW5zQEludGVycHJl
dGVyQEtKU0BAUUJFWEFBVlNhdmVkQnVpbHRpbnNAMkBAWiBAIDEyNCBOT05BTUUgOyB2b2lkIEtK
Uzo6SW50ZXJwcmV0ZXI6OnNhdmVCdWlsdGlucyhjbGFzcyBLSlM6OlNhdmVkQnVpbHRpbnMgJikg
Y29uc3QNCisgICAgP3NldENvbXBhdE1vZGVASW50ZXJwcmV0ZXJAS0pTQEBRQUVYVzRDb21wYXRN
b2RlQDEyQEBaIEAgMTI1IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0Q29tcGF0
TW9kZShlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1vZGUpDQorICAgID9zZXRJbnRlcnBy
ZXRlckBSb290T2JqZWN0QEJpbmRpbmdzQEtKU0BAUUFFWFBBVkludGVycHJldGVyQDNAQFogQCAx
MjYgTk9OQU1FIDsgdm9pZCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0OjpzZXRJbnRlcnByZXRl
cihjbGFzcyBLSlM6OkludGVycHJldGVyICopDQorICAgID9zZXRQcm90b3R5cGVAT2JqZWN0SW1w
QEtKU0BAUUFFWEFCVlZhbHVlQDJAQFogQCAxMjcgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdElt
cDo6c2V0UHJvdG90eXBlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP3NldFNob3Vs
ZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNBWF9OQFogQCAxMjggTk9OQU1FIDsg
dm9pZCBLSlM6OkludGVycHJldGVyOjpzZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCkNCisg
ICAgP3Nob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNBX05YWiBAIDEyOSBO
T05BTUUgOyBib29sIEtKUzo6SW50ZXJwcmV0ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucyh2b2lk
KQ0KKyAgICA/dG9BcnJheUluZGV4QFVTdHJpbmdAS0pTQEBRQkVJUEFfTkBaIEAgMTMwIE5PTkFN
RSA7IHVuc2lnbmVkIGludCBLSlM6OlVTdHJpbmc6OnRvQXJyYXlJbmRleChib29sICopIGNvbnN0
DQorICAgID90b0Jvb2xlYW5AT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBAWiBA
IDEzMSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjp0b0Jvb2xlYW4oY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvSW50MzJAVmFsdWVJbXBAS0pTQEBRQkVIUEFWRXhl
Y1N0YXRlQDJAQFogQCAxMzIgTk9OQU1FIDsgaW50IEtKUzo6VmFsdWVJbXA6OnRvSW50MzIoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvSW50ZWdlckBWYWx1ZUltcEBLSlNA
QFFCRU5QQVZFeGVjU3RhdGVAMkBAWiBAIDEzMyBOT05BTUUgOyBkb3VibGUgS0pTOjpWYWx1ZUlt
cDo6dG9JbnRlZ2VyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b051bWJl
ckBPYmplY3RJbXBAS0pTQEBVQkVOUEFWRXhlY1N0YXRlQDJAQFogQCAxMzQgTk9OQU1FIDsgZG91
YmxlIEtKUzo6T2JqZWN0SW1wOjp0b051bWJlcihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25z
dA0KKyAgICA/dG9PYmplY3RAT2JqZWN0SW1wQEtKU0BAVUJFP0FWT2JqZWN0QDJAUEFWRXhlY1N0
YXRlQDJAQFogQCAxMzUgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJbXA6
OnRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b1ByaW1pdGl2
ZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQFc0VHlwZUAyQEBa
IEAgMTM2IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OnRvUHJpbWl0
aXZlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpUeXBlKSBjb25zdA0KKyAgICA/
dG9TdHJpbmdAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBa
IEAgMTM3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBLSlM6Ok9iamVjdEltcDo6dG9TdHJp
bmcoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvVUludDE2QFZhbHVlSW1w
QEtKU0BAUUJFR1BBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM4IE5PTkFNRSA7IHVuc2lnbmVkIHNob3J0
IEtKUzo6VmFsdWVJbXA6OnRvVUludDE2KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQor
ICAgID90b1VJbnQzMkBWYWx1ZUltcEBLSlNAQEVCRV9OQUFJQFogQCAxMzkgTk9OQU1FIDsgYm9v
bCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQzMih1bnNpZ25lZCBpbnQgJikgY29uc3QNCisgICAgP3Rv
VUludDMyQFZhbHVlSW1wQEtKU0BAUUJFSVBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTQwIE5PTkFNRSA7
IHVuc2lnbmVkIGludCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQzMihjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqKSBjb25zdA0KKyAgICA/dG9VTG9uZ0BVU3RyaW5nQEtKU0BAUUJFS1BBX05AWiBAIDE0MSBO
T05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6VVN0cmluZzo6dG9VTG9uZyhib29sICopIGNvbnN0
DQorICAgID90eXBlQE9iamVjdEltcEBLSlNAQFVCRT9BVzRUeXBlQDJAWFogQCAxNDIgTk9OQU1F
IDsgZW51bSBLSlM6OlR5cGUgS0pTOjpPYmplY3RJbXA6OnR5cGUodm9pZCkgY29uc3QNCisgICAg
P3VubG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTQzIE5PTkFNRSA7IHZvaWQgS0pTOjpJ
bnRlcnByZXRlcjo6dW5sb2NrKHZvaWQpDQorICAgID92YWx1ZUBTdHJpbmdAS0pTQEBRQkU/QVZV
U3RyaW5nQDJAWFogQCAxNDQgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6U3RyaW5n
Ojp2YWx1ZSh2b2lkKSBjb25zdA0KKyAgICA/dmlydHVhbF9ob29rQEludGVycHJldGVyQEtKU0BA
TUFFWEhQQVhAWiBAIDE0NSBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnZpcnR1YWxf
aG9vayhpbnQsIHZvaWQgKikNCisgICAgTlBOX0NyZWF0ZU9iamVjdCBAIDE0NiBOT05BTUUNCisg
ICAgTlBOX0V2YWx1YXRlIEAgMTQ3IE5PTkFNRQ0KKyAgICBOUE5fR2V0SW50SWRlbnRpZmllciBA
IDE0OCBOT05BTUUNCisgICAgTlBOX0dldFByb3BlcnR5IEAgMTQ5IE5PTkFNRQ0KKyAgICBOUE5f
R2V0U3RyaW5nSWRlbnRpZmllciBAIDE1MCBOT05BTUUNCisgICAgTlBOX0dldFN0cmluZ0lkZW50
aWZpZXJzIEAgMTUxIE5PTkFNRQ0KKyAgICBOUE5fSGFzTWV0aG9kIEAgMTUyIE5PTkFNRQ0KKyAg
ICBOUE5fSGFzUHJvcGVydHkgQCAxNTMgTk9OQU1FDQorICAgIE5QTl9JZGVudGlmaWVySXNTdHJp
bmcgQCAxNTQgTk9OQU1FDQorICAgIE5QTl9JbnRGcm9tSWRlbnRpZmllciBAIDE1NSBOT05BTUUN
CisgICAgTlBOX0ludm9rZSBAIDE1NiBOT05BTUUNCisgICAgTlBOX0ludm9rZURlZmF1bHQgQCAx
NTcgTk9OQU1FDQorICAgIE5QTl9SZWxlYXNlT2JqZWN0IEAgMTU4IE5PTkFNRQ0KKyAgICBOUE5f
UmVsZWFzZVZhcmlhbnRWYWx1ZSBAIDE1OSBOT05BTUUNCisgICAgTlBOX1JlbW92ZVByb3BlcnR5
IEAgMTYwIE5PTkFNRQ0KKyAgICBOUE5fUmV0YWluT2JqZWN0IEAgMTYxIE5PTkFNRQ0KKyAgICBO
UE5fU2V0RXhjZXB0aW9uIEAgMTYyIE5PTkFNRQ0KKyAgICBOUE5fU2V0UHJvcGVydHkgQCAxNjMg
Tk9OQU1FDQorICAgIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgQCAxNjQgTk9OQU1FDQorICAgIF9O
UE5fQ3JlYXRlU2NyaXB0T2JqZWN0IEAgMTY1IE5PTkFNRQ0KKyAgICBranNfc3RydG9kIEAgMTY2
IE5PTkFNRQ0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0VBQkkvSmF2YXNjcmlwdENv
cmVVLmRlZg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3VwL0VBQkkvSmF2YXNj
cmlwdENvcmVVLmRlZgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAv
RUFCSS9KYXZhc2NyaXB0Q29yZVUuZGVmCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzOTAgKzEsNDM0
IEBADQogRVhQT1JUUw0KLQlfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQS2MgQCAxIE5PTkFNRQ0K
LQlfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQTlNfN1VTdHJpbmczUmVwRSBAIDIgTk9OQU1FDQot
CV9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQS05TXzVVQ2hhckVp
IEAgMyBOT05BTUUNCi0JX1pOM0tKUzEwSWRlbnRpZmllcjVlcXVhbEVQTlNfN1VTdHJpbmczUmVw
RVBLYyBAIDQgTk9OQU1FDQotCV9aTjNLSlMxMFNjb3BlQ2hhaW40cHVzaEVQTlNfOU9iamVjdElt
cEUgQCA1IE5PTkFNRQ0KLQlfWk4zS0pTMTBTY29wZUNoYWluN3JlbGVhc2VFdiBAIDYgTk9OQU1F
DQotCV9aTjNLSlMxMFNjb3BlQ2hhaW5hU0VSS1MwXyBAIDcgTk9OQU1FDQotCV9aTjNLSlMxMUlu
dGVycHJldGVyMTBnbG9iYWxFeGVjRXYgQCA4IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRl
cjEydmlydHVhbF9ob29rRWlQdiBAIDkgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTNz
ZXRDb21wYXRNb2RlRU5TMF8xMENvbXBhdE1vZGVFIEAgMTAgTk9OQU1FDQotCV9aTjNLSlMxMUlu
dGVycHJldGVyMTVyZXN0b3JlQnVpbHRpbnNFUktOU18xM1NhdmVkQnVpbHRpbnNFIEAgMTEgTk9O
QU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTZpbml0R2xvYmFsT2JqZWN0RXYgQCAxMiBOT05B
TUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxN2luY1N0YXRlbWVudENvdW50RXYgQCAxMyBOT05B
TUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxOXJlc2V0U3RhdGVtZW50Q291bnRFdiBAIDE0IE5P
TkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjIxc2hvdWxkUHJpbnRFeGNlcHRpb25zRXYgQCAx
NSBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIyNHNldFNob3VsZFByaW50RXhjZXB0aW9u
c0ViIEAgMTYgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyNGxvY2tFdiBAIDE3IE5PTkFN
RQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjZ1bmxvY2tFdiBAIDE4IE5PTkFNRQ0KLQlfWk4zS0pT
MTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRVJLTlNfNVZhbHVlRVMzXyBAIDE5
IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRWlT
M19SS05TXzVWYWx1ZUUgQCAyMCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXJDMUVSS05T
XzZPYmplY3RFIEAgMjEgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyQzJFUktOU182T2Jq
ZWN0RSBAIDIyIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlckQwRXYgQCAyMyBOT05BTUUN
Ci0JX1pOM0tKUzExSW50ZXJwcmV0ZXJEMUV2IEAgMjQgTk9OQU1FDQotCV9aTjNLSlMxMUludGVy
cHJldGVyRDJFdiBAIDI1IE5PTkFNRQ0KLQlfWk4zS0pTMTFQcm9wZXJ0eU1hcDdyZXN0b3JlRVJL
TlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMjYgTk9OQU1FDQotCV9aTjNLSlMxNGxlbmd0aFByb3Bl
cnR5RXYgQCAyNyBOT05BTUUNCi0JX1pOM0tKUzE1bWVzc2FnZVByb3BlcnR5RXYgQCAyOCBOT05B
TUUNCi0JX1pOM0tKUzRMaXN0MTFkZXJlZlZhbHVlc0V2IEAgMjkgTk9OQU1FDQotCV9aTjNLSlM0
TGlzdDZhcHBlbmRFUE5TXzhWYWx1ZUltcEUgQCAzMCBOT05BTUUNCi0JX1pOM0tKUzRMaXN0N3Jl
bGVhc2VFdiBAIDMxIE5PTkFNRQ0KLQlfWk4zS0pTNExpc3Q5cmVmVmFsdWVzRXYgQCAzMiBOT05B
TUUNCi0JX1pOM0tKUzRMaXN0QzFFdiBAIDMzIE5PTkFNRQ0KLQlfWk4zS0pTNExpc3RDMkV2IEAg
MzQgTk9OQU1FDQotCV9aTjNLSlM0TGlzdGFTRVJLUzBfIEAgMzUgTk9OQU1FDQotCV9aTjNLSlM0
TnVsbEMxRXYgQCAzNiBOT05BTUUNCi0JX1pOM0tKUzROdWxsQzJFdiBAIDM3IE5PTkFNRQ0KLQlf
Wk4zS0pTNUVycm9yNmNyZWF0ZUVQTlNfOUV4ZWNTdGF0ZUVOU185RXJyb3JUeXBlRVBLY2lpUEtO
U183VVN0cmluZ0UgQCAzOCBOT05BTUUNCi0JX1pOM0tKUzVWYWx1ZUMxRVBOU184VmFsdWVJbXBF
IEAgMzkgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVDMUVSS1MwXyBAIDQwIE5PTkFNRQ0KLQlfWk4z
S0pTNVZhbHVlQzJFUE5TXzhWYWx1ZUltcEUgQCA0MSBOT05BTUUNCi0JX1pOM0tKUzVWYWx1ZUMy
RVJLUzBfIEAgNDIgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVEMUV2IEAgNDMgTk9OQU1FDQotCV9a
TjNLSlM1VmFsdWVEMkV2IEAgNDQgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVhU0VSS1MwXyBAIDQ1
IE5PTkFNRQ0KLQlfWk4zS0pTNkxvb2t1cDlmaW5kRW50cnlFUEtOU185SGFzaFRhYmxlRVJLTlNf
MTBJZGVudGlmaWVyRSBAIDQ2IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMxRWQgQCA0NyBOT05B
TUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVpIEAgNDggTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzFF
aiBAIDQ5IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMxRWwgQCA1MCBOT05BTUUNCi0JX1pOM0tK
UzZOdW1iZXJDMUVtIEAgNTEgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzJFZCBAIDUyIE5PTkFN
RQ0KLQlfWk4zS0pTNk51bWJlckMyRWkgQCA1MyBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMkVq
IEAgNTQgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzJFbCBAIDU1IE5PTkFNRQ0KLQlfWk4zS0pT
Nk51bWJlckMyRW0gQCA1NiBOT05BTUUNCi0JX1pOM0tKUzZPYmplY3QxMWR5bmFtaWNDYXN0RVJL
TlNfNVZhbHVlRSBAIDU3IE5PTkFNRQ0KLQlfWk4zS0pTNk9iamVjdDRjYWxsRVBOU185RXhlY1N0
YXRlRVJTMF9SS05TXzRMaXN0RSBAIDU4IE5PTkFNRQ0KLQlfWk4zS0pTNlN0cmluZ0MxRVJLTlNf
N1VTdHJpbmdFIEAgNTkgTk9OQU1FDQotCV9aTjNLSlM2U3RyaW5nQzJFUktOU183VVN0cmluZ0Ug
QCA2MCBOT05BTUUNCi0JX1pOM0tKUzdCb29sZWFuQzFFYiBAIDYxIE5PTkFNRQ0KLQlfWk4zS0pT
N0Jvb2xlYW5DMkViIEAgNjIgTk9OQU1FDQotCV9aTjNLSlM3Q1N0cmluZ2FTRVBLYyBAIDYzIE5P
TkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmcxMGF0dGFjaE51bGxFdiBAIDY0IE5PTkFNRQ0KLQlfWk4z
S0pTN1VTdHJpbmczUmVwMTNjcmVhdGVDb3B5aW5nRVBLTlNfNVVDaGFyRWkgQCA2NSBOT05BTUUN
Ci0JX1pOM0tKUzdVU3RyaW5nM1JlcDZjcmVhdGVFUE5TXzVVQ2hhckVpIEAgNjYgTk9OQU1FDQot
CV9aTjNLSlM3VVN0cmluZzNSZXA3ZGVzdHJveUV2IEAgNjcgTk9OQU1FDQotCV9aTjNLSlM3VVN0
cmluZzRmcm9tRWwgQCA2OCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nNmFwcGVuZEVQS2MgQCA2
OSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nNmFwcGVuZEVSS1MwXyBAIDcwIE5PTkFNRQ0KLQlf
Wk4zS0pTN1VTdHJpbmdDMUVQS05TXzVVQ2hhckVpIEAgNzEgTk9OQU1FDQotCV9aTjNLSlM3VVN0
cmluZ0MxRVBLYyBAIDcyIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQTlNfNVVDaGFyRWli
IEAgNzMgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRVJLUzBfUzJfIEAgNzQgTk9OQU1FDQot
CV9aTjNLSlM3VVN0cmluZ0MxRWMgQCA3NSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzFFdiBA
IDc2IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVQS05TXzVVQ2hhckVpIEAgNzcgTk9OQU1F
DQotCV9aTjNLSlM3VVN0cmluZ0MyRVBLYyBAIDc4IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdD
MkVQTlNfNVVDaGFyRWliIEAgNzkgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRVJLUzBfUzJf
IEAgODAgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRWMgQCA4MSBOT05BTUUNCi0JX1pOM0tK
UzdVU3RyaW5nQzJFdiBAIDgyIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdhU0VSS1MwXyBAIDgz
IE5PTkFNRQ0KLQlfWk4zS0pTOFZhbHVlSW1wZGxFUHYgQCA4NCBOT05BTUUNCi0JX1pOM0tKUzhW
YWx1ZUltcG53RWogQCA4NSBOT05BTUUNCi0JX1pOM0tKUzlDb2xsZWN0b3I3Y29sbGVjdEV2IEAg
ODYgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wMTFoYXNJbnN0YW5jZUVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzVWYWx1ZUUgQCA4NyBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAxMnNldFByb3Rv
dHlwZUVSS05TXzVWYWx1ZUUgQCA4OCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAxNGRlbGV0
ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDg5IE5PTkFNRQ0K
LQlfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDkw
IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDE5ZGVsZXRlQWxsUHJvcGVydGllc0VQTlNfOUV4
ZWNTdGF0ZUUgQCA5MSBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfNVZhbHVlRWkgQCA5MiBOT05BTUUNCi0JX1pOM0tK
UzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRWpSS05TXzVWYWx1ZUVpIEAgOTMgTk9OQU1F
DQotCV9aTjNLSlM5T2JqZWN0SW1wNGNhbGxFUE5TXzlFeGVjU3RhdGVFUk5TXzZPYmplY3RFUktO
U180TGlzdEUgQCA5NCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA0bWFya0V2IEAgOTUgTk9O
QU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOHByb3BMaXN0RVBOU185RXhlY1N0YXRlRWIgQCA5NiBO
T05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA5Y29uc3RydWN0RVBOU185RXhlY1N0YXRlRVJLTlNf
NExpc3RFIEAgOTcgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzRMaXN0RVJLTlNfN1VTdHJpbmdFaSBAIDk4IE5PTkFNRQ0KLQlfWk4zS0pT
OU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFUE5TXzhWYWx1ZUltcEVpIEAg
OTkgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOXB1dERpcmVjdEVSS05TXzEwSWRlbnRpZmll
ckVpaSBAIDEwMCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBDMUVSS05TXzZPYmplY3RFIEAg
MTAxIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEMxRXYgQCAxMDIgTk9OQU1FDQotCV9aTjNL
SlM5T2JqZWN0SW1wQzJFUktOU182T2JqZWN0RSBAIDEwMyBOT05BTUUNCi0JX1pOM0tKUzlPYmpl
Y3RJbXBDMkV2IEAgMTA0IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEQwRXYgQCAxMDUgTk9O
QU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wRDFFdiBAIDEwNiBOT05BTUUNCi0JX1pOM0tKUzlPYmpl
Y3RJbXBEMkV2IEAgMTA3IE5PTkFNRQ0KLQlfWk4zS0pTOVVuZGVmaW5lZEMxRXYgQCAxMDggTk9O
QU1FDQotCV9aTjNLSlM5VW5kZWZpbmVkQzJFdiBAIDEwOSBOT05BTUUNCi0JX1pOM0tKU2VxRVJL
TlNfN1VTdHJpbmdFUEtjIEAgMTEwIE5PTkFNRQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIxMGNv
bXBhdE1vZGVFdiBAIDExMSBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTJidWlsdGlu
QXJyYXlFdiBAIDExMiBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTJnbG9iYWxPYmpl
Y3RFdiBAIDExMyBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTJzYXZlQnVpbHRpbnNF
Uk5TXzEzU2F2ZWRCdWlsdGluc0UgQCAxMTQgTk9OQU1FDQotCV9aTkszS0pTMTFJbnRlcnByZXRl
cjEzYnVpbHRpbk9iamVjdEV2IEAgMTE1IE5PTkFNRQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIx
NWJ1aWx0aW5GdW5jdGlvbkV2IEAgMTE2IE5PTkFNRQ0KLQlfWk5LM0tKUzExSW50ZXJwcmV0ZXIy
MmJ1aWx0aW5PYmplY3RQcm90b3R5cGVFdiBAIDExNyBOT05BTUUNCi0JX1pOSzNLSlMxMVByb3Bl
cnR5TWFwM2dldEVSS05TXzEwSWRlbnRpZmllckUgQCAxMTggTk9OQU1FDQotCV9aTkszS0pTMTFQ
cm9wZXJ0eU1hcDRzYXZlRVJOU18xNVNhdmVkUHJvcGVydGllc0UgQCAxMTkgTk9OQU1FDQotCV9a
TkszS0pTNExpc3Q1aW1wQXRFaSBAIDEyMCBOT05BTUUNCi0JX1pOSzNLSlM0TGlzdDhjb3B5VGFp
bEV2IEAgMTIxIE5PTkFNRQ0KLQlfWk5LM0tKUzZPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDEyMiBOT05BTUUNCi0JX1pOSzNLSlM2T2JqZWN0
MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTIzIE5PTkFNRQ0KLQlfWk5LM0tKUzZP
YmplY3QxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBA
IDEyNCBOT05BTUUNCi0JX1pOSzNLSlM2U3RyaW5nNXZhbHVlRXYgQCAxMjUgTk9OQU1FDQotCV9a
TkszS0pTN1VTdHJpbmcxMnRvQXJyYXlJbmRleEVQYiBAIDEyNiBOT05BTUUNCi0JX1pOSzNLSlM3
VVN0cmluZzVhc2NpaUV2IEAgMTI3IE5PTkFNRQ0KLQlfWk5LM0tKUzdVU3RyaW5nNmlzTnVsbEV2
IEAgMTI4IE5PTkFNRQ0KLQlfWk5LM0tKUzdVU3RyaW5nN3RvVUxvbmdFUGIgQCAxMjkgTk9OQU1F
DQotCV9aTkszS0pTOFZhbHVlSW1wMTZkaXNwYXRjaFRvT2JqZWN0RVBOU185RXhlY1N0YXRlRSBA
IDEzMCBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA2bWFya2VkRXYgQCAxMzEgTk9OQU1FDQot
CV9aTkszS0pTOFZhbHVlSW1wN3RvSW50MzJFUE5TXzlFeGVjU3RhdGVFIEAgMTMyIE5PTkFNRQ0K
LQlfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQxNkVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzMgTk9OQU1F
DQotCV9aTkszS0pTOFZhbHVlSW1wOHRvVUludDMyRVBOU185RXhlY1N0YXRlRSBAIDEzNCBOT05B
TUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MzJFUmogQCAxMzUgTk9OQU1FDQotCV9aTksz
S0pTOFZhbHVlSW1wOXRvSW50ZWdlckVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzYgTk9OQU1FDQotCV9a
TkszS0pTOUV4ZWNTdGF0ZTE4bGV4aWNhbEludGVycHJldGVyRXYgQCAxMzcgTk9OQU1FDQotCV9a
TkszS0pTOU9iamVjdEltcDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50
aWZpZXJFIEAgMTM4IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxMWhhc1Byb3BlcnR5RVBO
U185RXhlY1N0YXRlRWogQCAxMzkgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDExdG9Qcmlt
aXRpdmVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTQwIE5PTkFNRQ0KLQlfWk5LM0tKUzlP
YmplY3RJbXAxMmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU180VHlwZUUgQCAxNDEgTk9O
QU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE0aGFzT3duUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFIEAgMTQyIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxNGhh
c093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxNDMgTk9OQU1FDQotCV9aTkszS0pTOU9i
amVjdEltcDE0aW1wbGVtZW50c0NhbGxFdiBAIDE0NCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0
SW1wMTlpbXBsZW1lbnRzQ29uc3RydWN0RXYgQCAxNDUgTk9OQU1FDQotCV9aTkszS0pTOU9iamVj
dEltcDIxaW1wbGVtZW50c0hhc0luc3RhbmNlRXYgQCAxNDYgTk9OQU1FDQotCV9aTkszS0pTOU9i
amVjdEltcDNnZXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTQ3IE5PTkFN
RQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185RXhlY1N0YXRlRWogQCAxNDggTk9OQU1F
DQotCV9aTkszS0pTOU9iamVjdEltcDR0eXBlRXYgQCAxNDkgTk9OQU1FDQotCV9aTkszS0pTOU9i
amVjdEltcDZjYW5QdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTUwIE5P
TkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA4aW5oZXJpdHNFUEtOU185Q2xhc3NJbmZvRSBAIDE1
MSBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRvTnVtYmVyRVBOU185RXhlY1N0YXRlRSBA
IDE1MiBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRvT2JqZWN0RVBOU185RXhlY1N0YXRl
RSBAIDE1MyBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRvU3RyaW5nRVBOU185RXhlY1N0
YXRlRSBAIDE1NCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOWNsYXNzSW5mb0V2IEAgMTU1
IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA5Y2xhc3NOYW1lRXYgQCAxNTYgTk9OQU1FDQot
CV9aTkszS0pTOU9iamVjdEltcDlwcm90b3R5cGVFdiBAIDE1NyBOT05BTUUNCi0JX1pOSzNLSlM5
T2JqZWN0SW1wOXRvQm9vbGVhbkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTggTk9OQU1FDQotCV9aVElO
M0tKUzEwQXNzaWduTm9kZUUgQCAxNTkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4z
S0pTMTBCb29sZWFuSW1wRSBAIDE2MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxMERlbGV0ZU5vZGVFIEAgMTYxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzEwTmVnYXRlTm9kZUUgQCAxNjIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTBOdW1iZXJOb2RlRSBAIDE2MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
MFByZWZpeE5vZGVFIEAgMTY0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEw
UmVnRXhwTm9kZUUgQCAxNjUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBS
ZXR1cm5Ob2RlRSBAIDE2NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFN0
cmluZ05vZGVFIEAgMTY3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEwU3dp
dGNoTm9kZUUgQCAxNjggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBUeXBl
T2ZOb2RlRSBAIDE2OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUJpdE9w
ZXJOb2RlRSBAIDE3MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUJvb2xl
YW5Ob2RlRSBAIDE3MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMURvV2hp
bGVOb2RlRSBAIDE3MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUVsZW1l
bnROb2RlRSBAIDE3MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUZpbmFs
bHlOb2RlRSBAIDE3NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUZ1bmN0
aW9uSW1wRSBAIDE3NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMUludGVy
cHJldGVyRSBAIDE3NiBOT05BTUUgREFUQSA4IDsgIzxUST4jDQotCV9aVElOM0tKUzExTWF0aEZ1
bmNJbXBFIEAgMTc3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzExTmV3RXhw
ck5vZGVFIEAgMTc4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzExUG9zdGZp
eE5vZGVFIEAgMTc5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzExUmVzb2x2
ZU5vZGVFIEAgMTgwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzExVmFyRGVj
bE5vZGVFIEAgMTgxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEyQ29udGlu
dWVOb2RlRSBAIDE4MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMkZ1bmNE
ZWNsTm9kZUUgQCAxODMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJGdW5j
RXhwck5vZGVFIEAgMTg0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEyUHJv
cGVydHlOb2RlRSBAIDE4NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMlN0
YXRMaXN0Tm9kZUUgQCAxODYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTJV
bmRlZmluZWRJbXBFIEAgMTg3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEz
QWNjZXNzb3JOb2RlMUUgQCAxODggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTNBY2Nlc3Nvck5vZGUyRSBAIDE4OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxM0FjdGl2YXRpb25JbXBFIEAgMTkwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzEzQXJndW1lbnRzTm9kZUUgQCAxOTEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTNDYXNlQmxvY2tOb2RlRSBAIDE5MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxM0RhdGVPYmplY3RJbXBFIEAgMTkzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzEzR2xvYmFsRnVuY0ltcEUgQCAxOTQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDE5NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxM1BhcmFtZXRlck5vZGVFIEAgMTk2IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzEzU3RhdGVtZW50Tm9kZUUgQCAxOTcgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTNVbmFyeVBsdXNOb2RlRSBAIDE5OCBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFycmF5T2JqZWN0SW1wRSBAIDE5OSBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFzc2lnbkV4cHJOb2RlRSBAIDIwMCBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDIwMSBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNENhc2VDbGF1c2VOb2RlRSBAIDIwMiBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNENsYXVzZUxpc3ROb2RlRSBAIDIwMyBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDIw
NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNExvZ2ljYWxOb3ROb2RlRSBA
IDIwNSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNE5hdGl2ZUVycm9ySW1w
RSBAIDIwNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNFJlbGF0aW9uYWxO
b2RlRSBAIDIwNyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNUNvbmRpdGlv
bmFsTm9kZUUgQCAyMDggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVOdW1i
ZXJPYmplY3RJbXBFIEAgMjA5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1
T2JqZWN0T2JqZWN0SW1wRSBAIDIxMCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxNVJlZ0V4cE9iamVjdEltcEUgQCAyMTEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAgMjEyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzE1VmFyRGVjbExpc3ROb2RlRSBAIDIxMyBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAgMjE0IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAyMTUgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZCb29sZWFuT2JqZWN0SW1wRSBAIDIxNiBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkRhdGVQcm90b0Z1bmNJbXBFIEAgMjE3IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAy
MTggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZGdW5jdGlvbkJvZHlOb2Rl
RSBAIDIxOSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkZ1bmN0aW9uQ2Fs
bE5vZGVFIEAgMjIwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2VmFyU3Rh
dGVtZW50Tm9kZUUgQCAyMjEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdB
cnJheVByb3RvRnVuY0ltcEUgQCAyMjIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4z
S0pTMTdBcnJheVByb3RvdHlwZUltcEUgQCAyMjMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAyMjQgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUgQCAyMjUgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdFcnJvclByb3RvRnVuY0ltcEUgQCAyMjYgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdFeHByU3RhdGVtZW50Tm9kZUUgQCAyMjcgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdGdW5jdGlvbk9iamVjdEltcEUgQCAy
MjggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdPYmplY3RMaXRlcmFsTm9k
ZUUgQCAyMjkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdQcm9wZXJ0eVZh
bHVlTm9kZUUgQCAyMzAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdTdHJp
bmdJbnN0YW5jZUltcEUgQCAyMzEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMjMyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBAIDIzMyBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxOE9iamVjdFByb3RvRnVuY0ltcEUgQCAyMzQgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMjM1IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4U291cmNlRWxlbWVudHNOb2RlRSBAIDIzNiBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOFN0cmluZ1Byb3RvRnVuY0ltcEUg
QCAyMzcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThTdHJpbmdQcm90b3R5
cGVJbXBFIEAgMjM4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE5Qm9vbGVh
blByb3RvRnVuY0ltcEUgQCAyMzkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDI0MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAgMjQxIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzE5U3RyaW5nT2JqZWN0RnVuY0ltcEUgQCAyNDIgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMjBGdW5jdGlvblByb3RvRnVuY0ltcEUgQCAyNDMgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMjBGdW5jdGlvblByb3RvdHlwZUltcEUg
QCAyNDQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTNE5vZGVFIEAgMjQ1IE5P
TkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pUSU4zS0pTNklmTm9kZUUgQCAyNDYgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTN0FkZE5vZGVFIEAgMjQ3IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzdGb3JOb2RlRSBAIDI0OCBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlM3TnVsbEltcEUgQCAyNDkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTN1RyeU5vZGVFIEAgMjUwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzhEZWJ1Z2dlckUgQCAyNTEgTk9OQU1FIERBVEEgOCA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlM4TXVsdE5vZGVFIEAgMjUyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzhO
dWxsTm9kZUUgQCAyNTMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTOFRoaXNO
b2RlRSBAIDI1NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4VmFsdWVJbXBF
IEAgMjU1IE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pUSU4zS0pTOFZvaWROb2RlRSBAIDI1
NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4V2l0aE5vZGVFIEAgMjU3IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlBcnJheU5vZGVFIEAgMjU4IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlCbG9ja05vZGVFIEAgMjU5IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlCcmVha05vZGVFIEAgMjYwIE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlDYXRjaE5vZGVFIEAgMjYxIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzlDb21tYU5vZGVFIEAgMjYyIE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzlFcXVhbE5vZGVFIEAgMjYzIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzlGb3JJbk5vZGVFIEAgMjY0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzlHcm91cE5vZGVFIEAgMjY1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzlMYWJlbE5vZGVFIEAgMjY2IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzlOdW1iZXJJbXBFIEAgMjY3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzlPYmplY3RJbXBFIEAgMjY4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzlSZWdFeHBJbXBFIEAgMjY5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlT
aGlmdE5vZGVFIEAgMjcwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlTdHJp
bmdJbXBFIEAgMjcxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlUaHJvd05v
ZGVFIEAgMjcyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlXaGlsZU5vZGVF
IEAgMjczIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVFZOM0tKUzEwQXNzaWduTm9kZUUg
QCAyNzQgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBCb29sZWFuSW1wRSBA
IDI3NSBOT05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMERlbGV0ZU5vZGVFIEAg
Mjc2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwTmVnYXRlTm9kZUUgQCAy
NzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBOdW1iZXJOb2RlRSBAIDI3
OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFByZWZpeE5vZGVFIEAgMjc5
IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwUmVnRXhwTm9kZUUgQCAyODAg
Tk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBSZXR1cm5Ob2RlRSBAIDI4MSBO
T05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFN0cmluZ05vZGVFIEAgMjgyIE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwU3dpdGNoTm9kZUUgQCAyODMgTk9O
QU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBUeXBlT2ZOb2RlRSBAIDI4NCBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUJpdE9wZXJOb2RlRSBAIDI4NSBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUJvb2xlYW5Ob2RlRSBAIDI4NiBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMURvV2hpbGVOb2RlRSBAIDI4NyBOT05B
TUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUVsZW1lbnROb2RlRSBAIDI4OCBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUZpbmFsbHlOb2RlRSBAIDI4OSBOT05B
TUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDI5MCBOT05B
TUUgREFUQSAxNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFJbnRlcnByZXRlckUgQCAyOTEgTk9O
QU1FIERBVEEgNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFNYXRoRnVuY0ltcEUgQCAyOTIgTk9O
QU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExTmV3RXhwck5vZGVFIEAgMjkzIE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExUG9zdGZpeE5vZGVFIEAgMjk0IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMjk1IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExVmFyRGVjbE5vZGVFIEAgMjk2IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEyQ29udGludWVOb2RlRSBAIDI5NyBO
T05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAyOTgg
Tk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJGdW5jRXhwck5vZGVFIEAgMjk5
IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEyUHJvcGVydHlOb2RlRSBAIDMw
MCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAz
MDEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJVbmRlZmluZWRJbXBFIEAg
MzAyIE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzQWNjZXNzb3JOb2RlMUUg
QCAzMDMgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNBY2Nlc3Nvck5vZGUy
RSBAIDMwNCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM0FjdGl2YXRpb25J
bXBFIEAgMzA1IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM0FyZ3VtZW50
c05vZGVFIEAgMzA2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzQ2FzZUJs
b2NrTm9kZUUgQCAzMDcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNEYXRl
T2JqZWN0SW1wRSBAIDMwOCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNH
bG9iYWxGdW5jSW1wRSBAIDMwOSBOT05BTUUgREFUQSAxNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTNNYXRoT2JqZWN0SW1wRSBAIDMxMCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDMxMSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMzEyIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzEzVW5hcnlQbHVzTm9kZUUgQCAzMTMgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAzMTQgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMzE1IE5PTkFNRSBEQVRBIDM2IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzE0Qml0d2lzZU5vdE5vZGVFIEAgMzE2IE5PTkFNRSBEQVRBIDM2IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzE0Q2FzZUNsYXVzZU5vZGVFIEAgMzE3IE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Q2xhdXNlTGlzdE5vZGVFIEAgMzE4IE5PTkFNRSBEQVRB
IDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0RXJyb3JPYmplY3RJbXBFIEAgMzE5IE5PTkFNRSBE
QVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNExvZ2ljYWxOb3ROb2RlRSBAIDMyMCBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNE5hdGl2ZUVycm9ySW1wRSBAIDMyMSBO
T05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTRSZWxhdGlvbmFsTm9kZUUgQCAz
MjIgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVDb25kaXRpb25hbE5vZGVF
IEAgMzIzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1TnVtYmVyT2JqZWN0
SW1wRSBAIDMyNCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVPYmplY3RP
YmplY3RJbXBFIEAgMzI1IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNVJl
Z0V4cE9iamVjdEltcEUgQCAzMjYgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzE1U3RyaW5nT2JqZWN0SW1wRSBAIDMyNyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTVWYXJEZWNsTGlzdE5vZGVFIEAgMzI4IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzE2QXJndW1lbnRMaXN0Tm9kZUUgQCAzMjkgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTZBcnJheUluc3RhbmNlSW1wRSBAIDMzMCBOT05BTUUgREFUQSAxMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZCb29sZWFuT2JqZWN0SW1wRSBAIDMzMSBOT05BTUUgREFU
QSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZEYXRlUHJvdG9GdW5jSW1wRSBAIDMzMiBOT05B
TUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZEYXRlUHJvdG90eXBlSW1wRSBAIDMz
MyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZGdW5jdGlvbkJvZHlOb2Rl
RSBAIDMzNCBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNkZ1bmN0aW9uQ2Fs
bE5vZGVFIEAgMzM1IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2VmFyU3Rh
dGVtZW50Tm9kZUUgQCAzMzYgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdB
cnJheVByb3RvRnVuY0ltcEUgQCAzMzcgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzE3QXJyYXlQcm90b3R5cGVJbXBFIEAgMzM4IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxN0JpbmFyeUxvZ2ljYWxOb2RlRSBAIDMzOSBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxN0RhdGVPYmplY3RGdW5jSW1wRSBAIDM0MCBOT05BTUUgREFUQSAx
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdFcnJvclByb3RvRnVuY0ltcEUgQCAzNDEgTk9OQU1F
IERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMzQy
IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3RnVuY3Rpb25PYmplY3RJbXBF
IEAgMzQzIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN09iamVjdExpdGVy
YWxOb2RlRSBAIDM0NCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN1Byb3Bl
cnR5VmFsdWVOb2RlRSBAIDM0NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
N1N0cmluZ0luc3RhbmNlSW1wRSBAIDM0NiBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMzQ3IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBAIDM0OCBOT05BTUUgREFUQSAxMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMThPYmplY3RQcm90b0Z1bmNJbXBFIEAgMzQ5IE5PTkFNRSBE
QVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFJlZ0V4cFByb3RvRnVuY0ltcEUgQCAzNTAg
Tk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4U291cmNlRWxlbWVudHNOb2Rl
RSBAIDM1MSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFN0cmluZ1Byb3Rv
RnVuY0ltcEUgQCAzNTIgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4U3Ry
aW5nUHJvdG90eXBlSW1wRSBAIDM1MyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTlCb29sZWFuUHJvdG9GdW5jSW1wRSBAIDM1NCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDM1NSBOT05BTUUgREFUQSAxNDgg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlJbnRlcm5hbEZ1bmN0aW9uSW1wRSBAIDM1NiBOT05BTUUg
REFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlTdHJpbmdPYmplY3RGdW5jSW1wRSBAIDM1
NyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMjBGdW5jdGlvblByb3RvRnVu
Y0ltcEUgQCAzNTggTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzIwRnVuY3Rp
b25Qcm90b3R5cGVJbXBFIEAgMzU5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlM0Tm9kZUUgQCAzNjAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTNklmTm9k
ZUUgQCAzNjEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTN0FkZE5vZGVFIEAg
MzYyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzdGb3JOb2RlRSBAIDM2MyBO
T05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM3TnVsbEltcEUgQCAzNjQgTk9OQU1F
IERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTN1RyeU5vZGVFIEAgMzY1IE5PTkFNRSBEQVRB
IDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhEZWJ1Z2dlckUgQCAzNjYgTk9OQU1FIERBVEEgNDAg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTOE11bHROb2RlRSBAIDM2NyBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlM4TnVsbE5vZGVFIEAgMzY4IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzhUaGlzTm9kZUUgQCAzNjkgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTOFZhbHVlSW1wRSBAIDM3MCBOT05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlM4Vm9pZE5vZGVFIEAgMzcxIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzhXaXRoTm9kZUUgQCAzNzIgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUFy
cmF5Tm9kZUUgQCAzNzMgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUJsb2Nr
Tm9kZUUgQCAzNzQgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUJyZWFrTm9k
ZUUgQCAzNzUgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUNhdGNoTm9kZUUg
QCAzNzYgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUNvbW1hTm9kZUUgQCAz
NzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUVxdWFsTm9kZUUgQCAzNzgg
Tk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUZvckluTm9kZUUgQCAzNzkgTk9O
QU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUdyb3VwTm9kZUUgQCAzODAgTk9OQU1F
IERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUxhYmVsTm9kZUUgQCAzODEgTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOU51bWJlckltcEUgQCAzODIgTk9OQU1FIERBVEEg
NDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOU9iamVjdEltcEUgQCAzODMgTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlSZWdFeHBJbXBFIEAgMzg0IE5PTkFNRSBEQVRBIDEzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5U2hpZnROb2RlRSBAIDM4NSBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlM5U3RyaW5nSW1wRSBAIDM4NiBOT05BTUUgREFUQSA0OCA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlM5VGhyb3dOb2RlRSBAIDM4NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlM5V2hpbGVOb2RlRSBAIDM4OCBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KKyAg
ICBOUE5fQ3JlYXRlT2JqZWN0IEAgMSBOT05BTUUNCisgICAgTlBOX0V2YWx1YXRlIEAgMiBOT05B
TUUNCisgICAgTlBOX0dldEludElkZW50aWZpZXIgQCAzIE5PTkFNRQ0KKyAgICBOUE5fR2V0UHJv
cGVydHkgQCA0IE5PTkFNRQ0KKyAgICBOUE5fR2V0U3RyaW5nSWRlbnRpZmllciBAIDUgTk9OQU1F
DQorICAgIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyBAIDYgTk9OQU1FDQorICAgIE5QTl9IYXNN
ZXRob2QgQCA3IE5PTkFNRQ0KKyAgICBOUE5fSGFzUHJvcGVydHkgQCA4IE5PTkFNRQ0KKyAgICBO
UE5fSWRlbnRpZmllcklzU3RyaW5nIEAgOSBOT05BTUUNCisgICAgTlBOX0ludEZyb21JZGVudGlm
aWVyIEAgMTAgTk9OQU1FDQorICAgIE5QTl9JbnZva2UgQCAxMSBOT05BTUUNCisgICAgTlBOX0lu
dm9rZURlZmF1bHQgQCAxMiBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VPYmplY3QgQCAxMyBOT05B
TUUNCisgICAgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgQCAxNCBOT05BTUUNCisgICAgTlBOX1Jl
bW92ZVByb3BlcnR5IEAgMTUgTk9OQU1FDQorICAgIE5QTl9SZXRhaW5PYmplY3QgQCAxNiBOT05B
TUUNCisgICAgTlBOX1NldEV4Y2VwdGlvbiBAIDE3IE5PTkFNRQ0KKyAgICBOUE5fU2V0UHJvcGVy
dHkgQCAxOCBOT05BTUUNCisgICAgTlBOX1VURjhGcm9tSWRlbnRpZmllciBAIDE5IE5PTkFNRQ0K
KyAgICBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCBAIDIwIE5PTkFNRQ0KKyAgICBfWjI0TlBOX1Nl
dEV4Y2VwdGlvbldpdGhVVEY4UDhOUE9iamVjdFBLY2kgQCAyMSBOT05BTUUNCisgICAgX1pOM0tK
UzEwSWRlbnRpZmllcjNhZGRFUEtjIEAgMjIgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZp
ZXIzYWRkRVBOU183VVN0cmluZzNSZXBFIEAgMjMgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50
aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQS05TXzVVQ2hhckVpIEAgMjQgTk9OQU1FDQor
ICAgIF9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQS2MgQCAyNSBO
T05BTUUNCisgICAgX1pOM0tKUzEwU2NvcGVDaGFpbjRwdXNoRVBOU185T2JqZWN0SW1wRSBAIDI2
IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBTY29wZUNoYWluN3JlbGVhc2VFdiBAIDI3IE5PTkFNRQ0K
KyAgICBfWk4zS0pTMTBTY29wZUNoYWluYVNFUktTMF8gQCAyOCBOT05BTUUNCisgICAgX1pOM0tK
UzExSW50ZXJwcmV0ZXIxMGdsb2JhbEV4ZWNFdiBAIDI5IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJ
bnRlcnByZXRlcjEydmlydHVhbF9ob29rRWlQdiBAIDMwIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJ
bnRlcnByZXRlcjEzc2V0Q29tcGF0TW9kZUVOUzBfMTBDb21wYXRNb2RlRSBAIDMxIE5PTkFNRQ0K
KyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE1cmVzdG9yZUJ1aWx0aW5zRVJLTlNfMTNTYXZlZEJ1
aWx0aW5zRSBAIDMyIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE2aW5pdEdsb2Jh
bE9iamVjdEV2IEAgMzMgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMTdpbmNTdGF0
ZW1lbnRDb3VudEV2IEAgMzQgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMTlyZXNl
dFN0YXRlbWVudENvdW50RXYgQCAzNSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIy
MXNob3VsZFByaW50RXhjZXB0aW9uc0V2IEAgMzYgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVy
cHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYiBAIDM3IE5PTkFNRQ0KKyAgICBfWk4z
S0pTMTFJbnRlcnByZXRlcjMwY3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlRVBOU185RXhl
Y1N0YXRlRU5TXzhCaW5kaW5nczhJbnN0YW5jZTE1QmluZGluZ0xhbmd1YWdlRVJLTlNfNk9iamVj
dEVQS05TM18xMFJvb3RPYmplY3RFU0JfIEAgMzggTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVy
cHJldGVyNGxvY2tFdiBAIDM5IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjZ1bmxv
Y2tFdiBAIDQwIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05T
XzdVU3RyaW5nRVJLTlNfNVZhbHVlRVMzXyBAIDQxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRl
cnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRWlTM19SS05TXzVWYWx1ZUUgQCA0MiBOT05B
TUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXJDMUVSS05TXzZPYmplY3RFIEAgNDMgTk9OQU1F
DQorICAgIF9aTjNLSlMxMUludGVycHJldGVyQzJFUktOU182T2JqZWN0RSBAIDQ0IE5PTkFNRQ0K
KyAgICBfWk4zS0pTMTFJbnRlcnByZXRlckQwRXYgQCA0NSBOT05BTUUNCisgICAgX1pOM0tKUzEx
SW50ZXJwcmV0ZXJEMUV2IEAgNDYgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyRDJF
diBAIDQ3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFQcm9wZXJ0eU1hcDdyZXN0b3JlRVJLTlNfMTVT
YXZlZFByb3BlcnRpZXNFIEAgNDggTk9OQU1FDQorICAgIF9aTjNLSlMxNGxlbmd0aFByb3BlcnR5
RXYgQCA0OSBOT05BTUUNCisgICAgX1pOM0tKUzE1bWVzc2FnZVByb3BlcnR5RXYgQCA1MCBOT05B
TUUNCisgICAgX1pOM0tKUzE2UnVudGltZU9iamVjdEltcEMxRVBOU184QmluZGluZ3M4SW5zdGFu
Y2VFYiBAIDUxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTZSdW50aW1lT2JqZWN0SW1wQzJFUE5TXzhC
aW5kaW5nczhJbnN0YW5jZUViIEAgNTIgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdDExZGVyZWZW
YWx1ZXNFdiBAIDUzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3Q2YXBwZW5kRVBOU184VmFsdWVJ
bXBFIEAgNTQgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdDdyZWxlYXNlRXYgQCA1NSBOT05BTUUN
CisgICAgX1pOM0tKUzRMaXN0OXJlZlZhbHVlc0V2IEAgNTYgTk9OQU1FDQorICAgIF9aTjNLSlM0
TGlzdEMxRXYgQCA1NyBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0QzJFdiBAIDU4IE5PTkFNRQ0K
KyAgICBfWk4zS0pTNExpc3RhU0VSS1MwXyBAIDU5IE5PTkFNRQ0KKyAgICBfWk4zS0pTNE51bGxD
MUV2IEAgNjAgTk9OQU1FDQorICAgIF9aTjNLSlM0TnVsbEMyRXYgQCA2MSBOT05BTUUNCisgICAg
X1pOM0tKUzVFcnJvcjZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2NpaVBL
TlNfN1VTdHJpbmdFIEAgNjIgTk9OQU1FDQorICAgIF9aTjNLSlM1VmFsdWVDMUVQTlNfOFZhbHVl
SW1wRSBAIDYzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlQzFFUktTMF8gQCA2NCBOT05BTUUN
CisgICAgX1pOM0tKUzVWYWx1ZUMyRVBOU184VmFsdWVJbXBFIEAgNjUgTk9OQU1FDQorICAgIF9a
TjNLSlM1VmFsdWVDMkVSS1MwXyBAIDY2IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlRDFFdiBA
IDY3IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlRDJFdiBAIDY4IE5PTkFNRQ0KKyAgICBfWk4z
S0pTNVZhbHVlYVNFUktTMF8gQCA2OSBOT05BTUUNCisgICAgX1pOM0tKUzZMb29rdXA5ZmluZEVu
dHJ5RVBLTlNfOUhhc2hUYWJsZUVSS05TXzEwSWRlbnRpZmllckUgQCA3MCBOT05BTUUNCisgICAg
X1pOM0tKUzZOdW1iZXJDMUVkIEAgNzEgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzFFaSBA
IDcyIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMxRWogQCA3MyBOT05BTUUNCisgICAgX1pO
M0tKUzZOdW1iZXJDMUVsIEAgNzQgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzFFbSBAIDc1
IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWQgQCA3NiBOT05BTUUNCisgICAgX1pOM0tK
UzZOdW1iZXJDMkVpIEAgNzcgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzJFaiBAIDc4IE5P
TkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWwgQCA3OSBOT05BTUUNCisgICAgX1pOM0tKUzZO
dW1iZXJDMkVtIEAgODAgTk9OQU1FDQorICAgIF9aTjNLSlM2T2JqZWN0MTFkeW5hbWljQ2FzdEVS
S05TXzVWYWx1ZUUgQCA4MSBOT05BTUUNCisgICAgX1pOM0tKUzZPYmplY3Q0Y2FsbEVQTlNfOUV4
ZWNTdGF0ZUVSUzBfUktOU180TGlzdEUgQCA4MiBOT05BTUUNCisgICAgX1pOM0tKUzZTdHJpbmdD
MUVSS05TXzdVU3RyaW5nRSBAIDgzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNlN0cmluZ0MyRVJLTlNf
N1VTdHJpbmdFIEAgODQgTk9OQU1FDQorICAgIF9aTjNLSlM3Qm9vbGVhbkMxRWIgQCA4NSBOT05B
TUUNCisgICAgX1pOM0tKUzdCb29sZWFuQzJFYiBAIDg2IE5PTkFNRQ0KKyAgICBfWk4zS0pTN0NT
dHJpbmdhU0VQS2MgQCA4NyBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nMTBhdHRhY2hOdWxs
RXYgQCA4OCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nM1JlcDEzY3JlYXRlQ29weWluZ0VQ
S05TXzVVQ2hhckVpIEAgODkgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzNSZXA2Y3JlYXRl
RVBOU181VUNoYXJFaSBAIDkwIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmczUmVwN2Rlc3Ry
b3lFdiBAIDkxIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmc0ZnJvbUVsIEAgOTIgTk9OQU1F
DQorICAgIF9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUEtjIEAgOTMgTk9OQU1FDQorICAgIF9aTjNL
SlM3VVN0cmluZzZhcHBlbmRFUktTMF8gQCA5NCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5n
QzFFUEtOU181VUNoYXJFaSBAIDk1IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVQS2Mg
QCA5NiBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFFUE5TXzVVQ2hhckVpYiBAIDk3IE5P
TkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVSS1MwX1MyXyBAIDk4IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTN1VTdHJpbmdDMUVjIEAgOTkgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MxRXYg
QCAxMDAgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVBLTlNfNVVDaGFyRWkgQCAxMDEg
Tk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVBLYyBAIDEwMiBOT05BTUUNCisgICAgX1pO
M0tKUzdVU3RyaW5nQzJFUE5TXzVVQ2hhckVpYiBAIDEwMyBOT05BTUUNCisgICAgX1pOM0tKUzdV
U3RyaW5nQzJFUktTMF9TMl8gQCAxMDQgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRWMg
QCAxMDUgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRXYgQCAxMDYgTk9OQU1FDQorICAg
IF9aTjNLSlM3VVN0cmluZ2FTRVJLUzBfIEAgMTA3IE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJpbmRp
bmdzMTBSb290T2JqZWN0MTRzZXRJbnRlcnByZXRlckVQTlNfMTFJbnRlcnByZXRlckUgQCAxMDgg
Tk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGluZ3MxMFJvb3RPYmplY3QyNXJlbW92ZUFsbE5hdGl2
ZVJlZmVyZW5jZXNFdiBAIDEwOSBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczIxcmVtb3Zl
TmF0aXZlUmVmZXJlbmNlRVBOU185T2JqZWN0SW1wRSBAIDExMCBOT05BTUUNCisgICAgX1pOM0tK
UzhCaW5kaW5nczhJbnN0YW5jZTE5Y3JlYXRlUnVudGltZU9iamVjdEVOUzFfMTVCaW5kaW5nTGFu
Z3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RFIEAgMTExIE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJp
bmRpbmdzOEluc3RhbmNlMzBjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWVFUE5TXzlFeGVj
U3RhdGVFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVJLTlNfNk9iamVjdEVQS05TMF8xMFJvb3RPYmpl
Y3RFU0FfIEAgMTEyIE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJpbmRpbmdzOEluc3RhbmNlMzJjcmVh
dGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZUVOUzFfMTVCaW5kaW5nTGFuZ3VhZ2VFUHZQS05T
MF8xMFJvb3RPYmplY3RFIEAgMTEzIE5PTkFNRQ0KKyAgICBfWk4zS0pTOFZhbHVlSW1wZGxFUHYg
QCAxMTQgTk9OQU1FDQorICAgIF9aTjNLSlM4VmFsdWVJbXBud0VqIEAgMTE1IE5PTkFNRQ0KKyAg
ICBfWk4zS0pTOUNvbGxlY3Rvcjdjb2xsZWN0RXYgQCAxMTYgTk9OQU1FDQorICAgIF9aTjNLSlM5
T2JqZWN0SW1wMTFoYXNJbnN0YW5jZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzVWYWx1ZUUgQCAxMTcg
Tk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wMTJzZXRQcm90b3R5cGVFUktOU181VmFsdWVF
IEAgMTE4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTE5IE5PTkFNRQ0KKyAgICBfWk4zS0pT
OU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDEyMCBOT05BTUUN
CisgICAgX1pOM0tKUzlPYmplY3RJbXAxOWRlbGV0ZUFsbFByb3BlcnRpZXNFUE5TXzlFeGVjU3Rh
dGVFIEAgMTIxIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDNwdXRFUE5TXzlFeGVjU3Rh
dGVFUktOU18xMElkZW50aWZpZXJFUktOU181VmFsdWVFaSBAIDEyMiBOT05BTUUNCisgICAgX1pO
M0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRWpSS05TXzVWYWx1ZUVpIEAgMTIzIE5P
TkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDRjYWxsRVBOU185RXhlY1N0YXRlRVJOU182T2Jq
ZWN0RVJLTlNfNExpc3RFIEAgMTI0IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDRtYXJr
RXYgQCAxMjUgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wOHByb3BMaXN0RVBOU185RXhl
Y1N0YXRlRWIgQCAxMjYgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RSBAIDEyNyBOT05BTUUNCisgICAgX1pOM0tKUzlPYmpl
Y3RJbXA5Y29uc3RydWN0RVBOU185RXhlY1N0YXRlRVJLTlNfNExpc3RFUktOU183VVN0cmluZ0Vp
IEAgMTI4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElk
ZW50aWZpZXJFUE5TXzhWYWx1ZUltcEVpIEAgMTI5IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVj
dEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFaWkgQCAxMzAgTk9OQU1FDQorICAgIF9a
TjNLSlM5T2JqZWN0SW1wQzFFUktOU182T2JqZWN0RSBAIDEzMSBOT05BTUUNCisgICAgX1pOM0tK
UzlPYmplY3RJbXBDMUV2IEAgMTMyIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEMyRVJL
TlNfNk9iamVjdEUgQCAxMzMgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wQzJFdiBAIDEz
NCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBEMEV2IEAgMTM1IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTOU9iamVjdEltcEQxRXYgQCAxMzYgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1w
RDJFdiBAIDEzNyBOT05BTUUNCisgICAgX1pOM0tKUzlVbmRlZmluZWRDMUV2IEAgMTM4IE5PTkFN
RQ0KKyAgICBfWk4zS0pTOVVuZGVmaW5lZEMyRXYgQCAxMzkgTk9OQU1FDQorICAgIF9aTjNLSlNl
cUVSS05TXzdVU3RyaW5nRVBLYyBAIDE0MCBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJl
dGVyMTBjb21wYXRNb2RlRXYgQCAxNDEgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRl
cjEyYnVpbHRpbkFycmF5RXYgQCAxNDIgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRl
cjEyZ2xvYmFsT2JqZWN0RXYgQCAxNDMgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRl
cjEyc2F2ZUJ1aWx0aW5zRVJOU18xM1NhdmVkQnVpbHRpbnNFIEAgMTQ0IE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzExSW50ZXJwcmV0ZXIxM2J1aWx0aW5PYmplY3RFdiBAIDE0NSBOT05BTUUNCisgICAg
X1pOSzNLSlMxMUludGVycHJldGVyMTVidWlsdGluRnVuY3Rpb25FdiBAIDE0NiBOT05BTUUNCisg
ICAgX1pOSzNLSlMxMUludGVycHJldGVyMjJidWlsdGluT2JqZWN0UHJvdG90eXBlRXYgQCAxNDcg
Tk9OQU1FDQorICAgIF9aTkszS0pTMTFQcm9wZXJ0eU1hcDNnZXRFUktOU18xMElkZW50aWZpZXJF
IEAgMTQ4IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExUHJvcGVydHlNYXA0c2F2ZUVSTlNfMTVTYXZl
ZFByb3BlcnRpZXNFIEAgMTQ5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzRMaXN0NWltcEF0RWkgQCAx
NTAgTk9OQU1FDQorICAgIF9aTkszS0pTNExpc3Q4Y29weVRhaWxFdiBAIDE1MSBOT05BTUUNCisg
ICAgX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUgQCAxNTIgTk9OQU1FDQorICAgIF9aTkszS0pTNk9iamVjdDExaGFzUHJvcGVydHlF
UE5TXzlFeGVjU3RhdGVFaiBAIDE1MyBOT05BTUUNCisgICAgX1pOSzNLSlM2T2JqZWN0MTRoYXNP
d25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNTQgTk9OQU1F
DQorICAgIF9aTkszS0pTNlN0cmluZzV2YWx1ZUV2IEAgMTU1IE5PTkFNRQ0KKyAgICBfWk5LM0tK
UzdVU3RyaW5nMTJ0b0FycmF5SW5kZXhFUGIgQCAxNTYgTk9OQU1FDQorICAgIF9aTkszS0pTN1VT
dHJpbmc1YXNjaWlFdiBAIDE1NyBOT05BTUUNCisgICAgX1pOSzNLSlM3VVN0cmluZzZpc051bGxF
diBAIDE1OCBOT05BTUUNCisgICAgX1pOSzNLSlM3VVN0cmluZzd0b1VMb25nRVBiIEAgMTU5IE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDE2ZGlzcGF0Y2hUb09iamVjdEVQTlNfOUV4ZWNT
dGF0ZUUgQCAxNjAgTk9OQU1FDQorICAgIF9aTkszS0pTOFZhbHVlSW1wNm1hcmtlZEV2IEAgMTYx
IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDd0b0ludDMyRVBOU185RXhlY1N0YXRlRSBA
IDE2MiBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MTZFUE5TXzlFeGVjU3Rh
dGVFIEAgMTYzIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQzMkVQTlNfOUV4
ZWNTdGF0ZUUgQCAxNjQgTk9OQU1FDQorICAgIF9aTkszS0pTOFZhbHVlSW1wOHRvVUludDMyRVJq
IEAgMTY1IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDl0b0ludGVnZXJFUE5TXzlFeGVj
U3RhdGVFIEAgMTY2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlFeGVjU3RhdGUxOGxleGljYWxJbnRl
cnByZXRlckV2IEAgMTY3IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxMWhhc1Byb3Bl
cnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE2OCBOT05BTUUNCisgICAg
X1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTY5IE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxMXRvUHJpbWl0aXZlRVBOU185RXhlY1N0YXRl
RU5TXzRUeXBlRSBAIDE3MCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTJkZWZhdWx0
VmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTcxIE5PTkFNRQ0KKyAgICBfWk5LM0tK
UzlPYmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRSBAIDE3MiBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTRoYXNPd25Qcm9wZXJ0
eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTczIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAx
NGltcGxlbWVudHNDYWxsRXYgQCAxNzQgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDE5
aW1wbGVtZW50c0NvbnN0cnVjdEV2IEAgMTc1IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJ
bXAyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2IEAgMTc2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlP
YmplY3RJbXAzZ2V0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE3NyBOT05B
TUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wM2dldEVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTc4IE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA0dHlwZUV2IEAgMTc5IE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzlPYmplY3RJbXA2Y2FuUHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RSBAIDE4MCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wOGluaGVyaXRzRVBLTlNfOUNs
YXNzSW5mb0UgQCAxODEgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDh0b051bWJlckVQ
TlNfOUV4ZWNTdGF0ZUUgQCAxODIgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDh0b09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxODMgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdElt
cDh0b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUgQCAxODQgTk9OQU1FDQorICAgIF9aTkszS0pTOU9i
amVjdEltcDljbGFzc0luZm9FdiBAIDE4NSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1w
OWNsYXNzTmFtZUV2IEAgMTg2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA5cHJvdG90
eXBlRXYgQCAxODcgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDl0b0Jvb2xlYW5FUE5T
XzlFeGVjU3RhdGVFIEAgMTg4IE5PTkFNRQ0KKyAgICBfWlRJTjNLSlMxMEFzc2lnbk5vZGVFIEAg
MTg5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMEJvb2xlYW5JbXBFIEAgMTkwIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMERlbGV0ZU5vZGVFIEAgMTkxIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxME5lZ2F0ZU5vZGVFIEAgMTkyIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxME51bWJlck5vZGVFIEAgMTkzIE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxMFByZWZpeE5vZGVFIEAgMTk0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxMFJlZ0V4cE5vZGVFIEAgMTk1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
MFJldHVybk5vZGVFIEAgMTk2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFN0cmlu
Z05vZGVFIEAgMTk3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFN3aXRjaE5vZGVF
IEAgMTk4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFR5cGVPZk5vZGVFIEAgMTk5
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUJpdE9wZXJOb2RlRSBAIDIwMCBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFCb29sZWFuTm9kZUUgQCAyMDEgTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzExRG9XaGlsZU5vZGVFIEAgMjAyIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxMUVsZW1lbnROb2RlRSBAIDIwMyBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTFGaW5hbGx5Tm9kZUUgQCAyMDQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzExRnVuY3Rpb25JbXBFIEAgMjA1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxMUludGVycHJldGVyRSBAIDIwNiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFN
YXRoRnVuY0ltcEUgQCAyMDcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExTmV3RXhw
ck5vZGVFIEAgMjA4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMVBvc3RmaXhOb2Rl
RSBAIDIwOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFSZXNvbHZlTm9kZUUgQCAy
MTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExVmFyRGVjbE5vZGVFIEAgMjExIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMkNvbnRpbnVlTm9kZUUgQCAyMTIgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyRnVuY0RlY2xOb2RlRSBAIDIxMyBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTJGdW5jRXhwck5vZGVFIEAgMjE0IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxMlByb3BlcnR5Tm9kZUUgQCAyMTUgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzEyU3RhdExpc3ROb2RlRSBAIDIxNiBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTJVbmRlZmluZWRJbXBFIEAgMjE3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAgMjE4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxM0FjY2Vzc29yTm9kZTJFIEAgMjE5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
M0FjdGl2YXRpb25JbXBFIEAgMjIwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0Fy
Z3VtZW50c05vZGVFIEAgMjIxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0Nhc2VC
bG9ja05vZGVFIEAgMjIyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0RhdGVPYmpl
Y3RJbXBFIEAgMjIzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0dsb2JhbEZ1bmNJ
bXBFIEAgMjI0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM01hdGhPYmplY3RJbXBF
IEAgMjI1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM1BhcmFtZXRlck5vZGVFIEAg
MjI2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMjI3
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM1VuYXJ5UGx1c05vZGVFIEAgMjI4IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNEFycmF5T2JqZWN0SW1wRSBAIDIyOSBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRBc3NpZ25FeHByTm9kZUUgQCAyMzAgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0Qml0d2lzZU5vdE5vZGVFIEAgMjMxIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNENhc2VDbGF1c2VOb2RlRSBAIDIzMiBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTRDbGF1c2VMaXN0Tm9kZUUgQCAyMzMgTk9OQU1FIDsgIzxU
ST4jDQorICAgIF9aVElOM0tKUzE0RXJyb3JPYmplY3RJbXBFIEAgMjM0IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxNExvZ2ljYWxOb3ROb2RlRSBAIDIzNSBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTMTROYXRpdmVFcnJvckltcEUgQCAyMzYgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzE0UmVsYXRpb25hbE5vZGVFIEAgMjM3IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxNUNvbmRpdGlvbmFsTm9kZUUgQCAyMzggTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzE1TnVtYmVyT2JqZWN0SW1wRSBAIDIzOSBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTVPYmplY3RPYmplY3RJbXBFIEAgMjQwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAyNDEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzE1UnVudGltZUFycmF5SW1wRSBAIDI0MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAgMjQzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxNVZhckRlY2xMaXN0Tm9kZUUgQCAyNDQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2QXJndW1lbnRMaXN0Tm9kZUUgQCAyNDUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAyNDYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAyNDcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2RGF0ZVByb3RvRnVuY0ltcEUgQCAyNDggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAyNDkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAyNTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2RnVuY3Rpb25DYWxsTm9kZUUgQCAyNTEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2UnVudGltZU1ldGhvZEltcEUgQCAyNTIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2UnVudGltZU9iamVjdEltcEUgQCAyNTMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAyNTQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBFIEAgMjU1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxN0FycmF5UHJvdG90eXBlSW1wRSBAIDI1NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAyNTcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VElOM0tKUzE3RGF0ZU9iamVjdEZ1bmNJbXBFIEAgMjU4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxN0Vycm9yUHJvdG9GdW5jSW1wRSBAIDI1OSBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTdFeHByU3RhdGVtZW50Tm9kZUUgQCAyNjAgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzE3RnVuY3Rpb25PYmplY3RJbXBFIEAgMjYxIE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxN09iamVjdExpdGVyYWxOb2RlRSBAIDI2MiBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAyNjMgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzE3U3RyaW5nSW5zdGFuY2VJbXBFIEAgMjY0IE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxOEVtcHR5U3RhdGVtZW50Tm9kZUUgQCAyNjUgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBAIDI2NiBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMThPYmplY3RQcm90b0Z1bmNJbXBFIEAgMjY3IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFJlZ0V4cFByb3RvRnVuY0ltcEUgQCAyNjggTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzE4U291cmNlRWxlbWVudHNOb2RlRSBAIDI2OSBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThTdHJpbmdQcm90b0Z1bmNJbXBFIEAgMjcwIE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFN0cmluZ1Byb3RvdHlwZUltcEUgQCAyNzEgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5Qm9vbGVhblByb3RvRnVuY0ltcEUgQCAyNzIg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5RGVjbGFyZWRGdW5jdGlvbkltcEUgQCAy
NzMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5SW50ZXJuYWxGdW5jdGlvbkltcEUg
QCAyNzQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5U3RyaW5nT2JqZWN0RnVuY0lt
cEUgQCAyNzUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzIwRnVuY3Rpb25Qcm90b0Z1
bmNJbXBFIEAgMjc2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMyMEZ1bmN0aW9uUHJv
dG90eXBlSW1wRSBAIDI3NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTNE5vZGVFIEAg
Mjc4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM2SWZOb2RlRSBAIDI3OSBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN0FkZE5vZGVFIEAgMjgwIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlM3Rm9yTm9kZUUgQCAyODEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzdOdWxsSW1wRSBAIDI4MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN1RyeU5v
ZGVFIEAgMjgzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4QmluZGluZ3M2Q0NsYXNz
RSBAIDI4NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOEJpbmRpbmdzNkNGaWVsZEUg
QCAyODUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzhCaW5kaW5nczhJbnN0YW5jZUUg
QCAyODYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzhCaW5kaW5nczlDSW5zdGFuY2VF
IEAgMjg3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4RGVidWdnZXJFIEAgMjg4IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4TXVsdE5vZGVFIEAgMjg5IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlM4TnVsbE5vZGVFIEAgMjkwIE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlM4VGhpc05vZGVFIEAgMjkxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlM4VmFsdWVJbXBFIEAgMjkyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4Vm9pZE5v
ZGVFIEAgMjkzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4V2l0aE5vZGVFIEAgMjk0
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5QXJyYXlOb2RlRSBAIDI5NSBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUJsb2NrTm9kZUUgQCAyOTYgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzlCcmVha05vZGVFIEAgMjk3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlM5Q2F0Y2hOb2RlRSBAIDI5OCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
OUNvbW1hTm9kZUUgQCAyOTkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlFcXVhbE5v
ZGVFIEAgMzAwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5Rm9ySW5Ob2RlRSBAIDMw
MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUdyb3VwTm9kZUUgQCAzMDIgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlMYWJlbE5vZGVFIEAgMzAzIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlM5TnVtYmVySW1wRSBAIDMwNCBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTOU9iamVjdEltcEUgQCAzMDUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzlSZWdFeHBJbXBFIEAgMzA2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5U2hpZnRO
b2RlRSBAIDMwNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOVN0cmluZ0ltcEUgQCAz
MDggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlUaHJvd05vZGVFIEAgMzA5IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5V2hpbGVOb2RlRSBAIDMxMCBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUVk4zS0pTMTBBc3NpZ25Ob2RlRSBAIDMxMSBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTBCb29sZWFuSW1wRSBAIDMxMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTBEZWxldGVOb2RlRSBAIDMxMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTBOZWdhdGVOb2RlRSBAIDMxNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBOdW1i
ZXJOb2RlRSBAIDMxNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBQcmVmaXhOb2Rl
RSBAIDMxNiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBSZWdFeHBOb2RlRSBAIDMx
NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBSZXR1cm5Ob2RlRSBAIDMxOCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBTdHJpbmdOb2RlRSBAIDMxOSBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTBTd2l0Y2hOb2RlRSBAIDMyMCBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTBUeXBlT2ZOb2RlRSBAIDMyMSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTFCaXRPcGVyTm9kZUUgQCAzMjIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzExQm9vbGVhbk5vZGVFIEAgMzIzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMx
MURvV2hpbGVOb2RlRSBAIDMyNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFFbGVt
ZW50Tm9kZUUgQCAzMjUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExRmluYWxseU5v
ZGVFIEAgMzI2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMUZ1bmN0aW9uSW1wRSBA
IDMyNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFJbnRlcnByZXRlckUgQCAzMjgg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExTWF0aEZ1bmNJbXBFIEAgMzI5IE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDMzMCBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTFQb3N0Zml4Tm9kZUUgQCAzMzEgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMzMyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxMVZhckRlY2xOb2RlRSBAIDMzMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTJDb250aW51ZU5vZGVFIEAgMzM0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxMkZ1bmNEZWNsTm9kZUUgQCAzMzUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEy
RnVuY0V4cHJOb2RlRSBAIDMzNiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJQcm9w
ZXJ0eU5vZGVFIEAgMzM3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMlN0YXRMaXN0
Tm9kZUUgQCAzMzggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEyVW5kZWZpbmVkSW1w
RSBAIDMzOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBY2Nlc3Nvck5vZGUxRSBA
IDM0MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDM0
MSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBY3RpdmF0aW9uSW1wRSBAIDM0MiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBcmd1bWVudHNOb2RlRSBAIDM0MyBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNDYXNlQmxvY2tOb2RlRSBAIDM0NCBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDM0NSBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDM0NiBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDM0NyBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDM0OCBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTNTdGF0ZW1lbnROb2RlRSBAIDM0OSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTNVbmFyeVBsdXNOb2RlRSBAIDM1MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAzNTEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMzUyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNEJpdHdpc2VOb3ROb2RlRSBAIDM1MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTRDYXNlQ2xhdXNlTm9kZUUgQCAzNTQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0
Q2xhdXNlTGlzdE5vZGVFIEAgMzU1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNEVy
cm9yT2JqZWN0SW1wRSBAIDM1NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRMb2dp
Y2FsTm90Tm9kZUUgQCAzNTcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0TmF0aXZl
RXJyb3JJbXBFIEAgMzU4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNFJlbGF0aW9u
YWxOb2RlRSBAIDM1OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVDb25kaXRpb25h
bE5vZGVFIEAgMzYwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNU51bWJlck9iamVj
dEltcEUgQCAzNjEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1T2JqZWN0T2JqZWN0
SW1wRSBAIDM2MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVSZWdFeHBPYmplY3RJ
bXBFIEAgMzYzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNVJ1bnRpbWVBcnJheUlt
cEUgQCAzNjQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1U3RyaW5nT2JqZWN0SW1w
RSBAIDM2NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVWYXJEZWNsTGlzdE5vZGVF
IEAgMzY2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkFyZ3VtZW50TGlzdE5vZGVF
IEAgMzY3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkFycmF5SW5zdGFuY2VJbXBF
IEAgMzY4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkJvb2xlYW5PYmplY3RJbXBF
IEAgMzY5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkRhdGVQcm90b0Z1bmNJbXBF
IEAgMzcwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkRhdGVQcm90b3R5cGVJbXBF
IEAgMzcxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkZ1bmN0aW9uQm9keU5vZGVF
IEAgMzcyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkZ1bmN0aW9uQ2FsbE5vZGVF
IEAgMzczIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNlJ1bnRpbWVNZXRob2RJbXBF
IEAgMzc0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNlJ1bnRpbWVPYmplY3RJbXBF
IEAgMzc1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNlZhclN0YXRlbWVudE5vZGVF
IEAgMzc2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0FycmF5UHJvdG9GdW5jSW1w
RSBAIDM3NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdBcnJheVByb3RvdHlwZUlt
cEUgQCAzNzggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3QmluYXJ5TG9naWNhbE5v
ZGVFIEAgMzc5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0RhdGVPYmplY3RGdW5j
SW1wRSBAIDM4MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdFcnJvclByb3RvRnVu
Y0ltcEUgQCAzODEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3RXhwclN0YXRlbWVu
dE5vZGVFIEAgMzgyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0Z1bmN0aW9uT2Jq
ZWN0SW1wRSBAIDM4MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdPYmplY3RMaXRl
cmFsTm9kZUUgQCAzODQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3UHJvcGVydHlW
YWx1ZU5vZGVFIEAgMzg1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN1N0cmluZ0lu
c3RhbmNlSW1wRSBAIDM4NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThFbXB0eVN0
YXRlbWVudE5vZGVFIEAgMzg3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOE51bWJl
clByb3RvRnVuY0ltcEUgQCAzODggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE4T2Jq
ZWN0UHJvdG9GdW5jSW1wRSBAIDM4OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThS
ZWdFeHBQcm90b0Z1bmNJbXBFIEAgMzkwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMx
OFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAzOTEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzE4U3RyaW5nUHJvdG9GdW5jSW1wRSBAIDM5MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAgMzkzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBFIEAgMzk0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlMxOURlY2xhcmVkRnVuY3Rpb25JbXBFIEAgMzk1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAgMzk2IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxOVN0cmluZ09iamVjdEZ1bmNJbXBFIEAgMzk3IE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlMyMEZ1bmN0aW9uUHJvdG9GdW5jSW1wRSBAIDM5OCBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMjBGdW5jdGlvblByb3RvdHlwZUltcEUgQCAzOTkgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzROb2RlRSBAIDQwMCBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTNklmTm9kZUUgQCA0MDEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzdBZGROb2RlRSBAIDQwMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTN0Zvck5vZGVF
IEAgNDAzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM3TnVsbEltcEUgQCA0MDQgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzdUcnlOb2RlRSBAIDQwNSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOEJpbmRpbmdzNkNDbGFzc0UgQCA0MDYgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzhCaW5kaW5nczZDRmllbGRFIEAgNDA3IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlM4QmluZGluZ3M4SW5zdGFuY2VFIEAgNDA4IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlM4QmluZGluZ3M5Q0luc3RhbmNlRSBAIDQwOSBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTOERlYnVnZ2VyRSBAIDQxMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTOE11bHROb2RlRSBAIDQxMSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOE51
bGxOb2RlRSBAIDQxMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFRoaXNOb2RlRSBA
IDQxMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFZhbHVlSW1wRSBAIDQxNCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFZvaWROb2RlRSBAIDQxNSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOFdpdGhOb2RlRSBAIDQxNiBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTOUFycmF5Tm9kZUUgQCA0MTcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzlCbG9ja05vZGVFIEAgNDE4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5QnJlYWtO
b2RlRSBAIDQxOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUNhdGNoTm9kZUUgQCA0
MjAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlDb21tYU5vZGVFIEAgNDIxIE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5RXF1YWxOb2RlRSBAIDQyMiBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOUZvckluTm9kZUUgQCA0MjMgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzlHcm91cE5vZGVFIEAgNDI0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlM5TGFiZWxOb2RlRSBAIDQyNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOU51bWJl
ckltcEUgQCA0MjYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlPYmplY3RJbXBFIEAg
NDI3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5UmVnRXhwSW1wRSBAIDQyOCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVNoaWZ0Tm9kZUUgQCA0MjkgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzlTdHJpbmdJbXBFIEAgNDMwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlM5VGhyb3dOb2RlRSBAIDQzMSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTOVdoaWxlTm9kZUUgQCA0MzIgTk9OQU1FIDsgIzxWVD4jDQogDQpJbmRleDogSmF2YVNjcmlw
dENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZh
U2NyaXB0Q29yZS9ncm91cC9KYXZhU2NyaXB0Q29yZS5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC00
OCw2ICs0OCw5IEBADQogDQogDQogU1lTVEVNSU5DTFVERSAuLlxranMNCitVU0VSSU5DTFVERSAu
LlxiaW5kaW5ncw0KK1NZU1RFTUlOQ0xVREUgLi5cYmluZGluZ3MNCitTWVNURU1JTkNMVURFIC4u
XGJpbmRpbmdzXGMNCiBTWVNURU1JTkNMVURFIC4uXHBjcmUNCiBTWVNURU1JTkNMVURFIC4uXC4u
XE1lbW9yeU1hbmFnZXJcaW5jDQogI2lmbmRlZiBfX0JST1dTRVJfU0RLDQpAQCAtMTAyLDYgKzEw
NSwyNCBAQA0KIFNPVVJDRSB2YWx1ZS5jcHANCiAvL1NPVVJDRSBXcnRTdGF0aWNzLmNwcA0KIA0K
K1NPVVJDRVBBVEggIC4uXGJpbmRpbmdzDQorDQorU09VUkNFIG5wcnVudGltZS5jcHANCitTT1VS
Q0UgTlBfanNvYmplY3QuY3BwIA0KK1NPVVJDRSBydW50aW1lLmNwcCANCitTT1VSQ0UgcnVudGlt
ZV9hcnJheS5jcHAgDQorU09VUkNFIHJ1bnRpbWVfbWV0aG9kLmNwcCANCitTT1VSQ0UgcnVudGlt
ZV9vYmplY3QuY3BwIA0KK1NPVVJDRSBydW50aW1lX3Jvb3QuY3BwIA0KKy8vU09VUkNFIHNvZnRs
aW5raW5nLmMgDQorDQorU09VUkNFUEFUSCAgLi5cYmluZGluZ3NcYw0KKw0KK1NPVVJDRSBjX2Ns
YXNzLmNwcA0KK1NPVVJDRSBjX2luc3RhbmNlLmNwcA0KK1NPVVJDRSBjX3J1bnRpbWUuY3BwDQor
U09VUkNFIGNfdXRpbGl0eS5jcHANCisNCiBMSUJSQVJZICAgICAgICAgZXN0bGliLmxpYg0KIExJ
QlJBUlkgICAgICAgICBldXNlci5saWINCiANCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50
ZXJwcmV0ZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJl
dGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTEzNSwxMiArMTM1LDEyIEBADQogICAgIEludGVy
cHJldGVyTG9jayBsb2NrOwogICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IHJlcC0+Z2xvYmFsRXhlYygp
OwogI2lmbmRlZiBfX09PTV9fCi0JLy9GSVhNRTogbWFrZSBhIG1lbW9yeW1hbmFnZXIgdmVyc2lv
biBmb3Igc3RyZHVwCisgICAgLy9GSVhNRTogbWFrZSBhIG1lbW9yeW1hbmFnZXIgdmVyc2lvbiBm
b3Igc3RyZHVwCiAgICAgY2hhciAqZiA9IHN0cmR1cChzb3VyY2VVUkwuYXNjaWkoKSk7CiAjZWxz
ZQotCWNvbnN0IGNoYXIqIHNzID0gc291cmNlVVJMLmFzY2lpKCk7CisgICAgY29uc3QgY2hhciog
c3MgPSBzb3VyY2VVUkwuYXNjaWkoKTsKICAgICBjaGFyICpmID0gKGNoYXIqKU1lbW9yeU1hbmFn
ZXI6OkNhbGxvYyggc3RybGVuKHNzKSArIDEsIHNpemVvZiggY2hhciApICk7Ci0JbWVtY3B5KCBm
LCBzcywgc3RybGVuKCBzcyApICk7CisgICAgbWVtY3B5KCBmLCBzcywgc3RybGVuKCBzcyApICk7
CiAjZW5kaWYKICAgICBjb25zdCBjaGFyICptZXNzYWdlID0gY29tcC52YWx1ZSgpLnRvT2JqZWN0
KGV4ZWMpLnRvU3RyaW5nKGV4ZWMpLmFzY2lpKCk7CiAjaWZuZGVmIE5PS0lBX0NIQU5HRVMKQEAg
LTM2MiwxMiArMzYyLDExIEBADQogICBwcmludEV4Y2VwdGlvbnMgPSBwcmludDsKIH0KIAotI2lm
bmRlZiBOT0tJQV9DSEFOR0VTCitFWFBPUlRfQwogdm9pZCAqSW50ZXJwcmV0ZXI6OmNyZWF0ZUxh
bmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nczo6SW5zdGFu
Y2U6OkJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3Qg
QmluZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KmN1cnJlbnQpCiB7CiAgICAgcmV0dXJuIEJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlTGFuZ3Vh
Z2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBsYW5ndWFnZSwgdmFsdWUsIG9yaWdpbiwgY3VycmVu
dCk7CiB9Ci0jZW5kaWYKIAogI2VuZGlmCiAKQEAgLTM4MSw3ICszODAsNyBAQA0KICAgcmVwLT5y
ZXN0b3JlQnVpbHRpbnMoYnVpbHRpbnMpOwogfQogCi1TYXZlZEJ1aWx0aW5zOjpTYXZlZEJ1aWx0
aW5zKCkgOiAKK1NhdmVkQnVpbHRpbnM6OlNhdmVkQnVpbHRpbnMoKSA6CiAgIF9pbnRlcm5hbCgw
KQogewogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTcwNjkp
DQorKysgSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0yOCw3ICsyOCw3IEBADQogI2luY2x1ZGUgIm9iamVjdC5oIgogI2luY2x1ZGUgInR5cGVzLmgi
CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdF
UwogCiAjaW5jbHVkZSAicnVudGltZS5oIgogCkBAIC0xMTQsNyArMTE0LDcgQEANCiAgIGNsYXNz
IFNhdmVkQnVpbHRpbnNJbnRlcm5hbDsKIAogICBjbGFzcyBTYXZlZEJ1aWx0aW5zIHsKLQlPT01f
TkVXX0RFTEVURQorICAgIE9PTV9ORVdfREVMRVRFCiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJl
dGVySW1wOwogICBwdWJsaWM6CiAgICAgU2F2ZWRCdWlsdGlucygpOwpAQCAtMjA1LDggKzIwNSw4
IEBADQogICAgICAqLwogICAgIElNUE9SVF9DIENvbXBsZXRpb24gZXZhbHVhdGUoY29uc3QgVVN0
cmluZyAmc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nICZj
b2RlLCBjb25zdCBWYWx1ZSAmdGhpc1YgPSBWYWx1ZSgpKTsKIAotCS8vIE92ZXJsb2FkIG9mIGV2
YWx1YXRlIHRvIGtlZXAgSmF2YVNjcmlwdEdsdWUgYm90aCBzb3VyY2UgYW5kIGJpbmFyeSBjb21w
YXRpYmxlLgotCUlNUE9SVF9DIENvbXBsZXRpb24gZXZhbHVhdGUoY29uc3QgVVN0cmluZyAmY29k
ZSwgY29uc3QgVmFsdWUgJnRoaXNWID0gVmFsdWUoKSwgY29uc3QgVVN0cmluZyAmc291cmNlRmls
ZW5hbWUgPSBVU3RyaW5nKCkpOworICAgIC8vIE92ZXJsb2FkIG9mIGV2YWx1YXRlIHRvIGtlZXAg
SmF2YVNjcmlwdEdsdWUgYm90aCBzb3VyY2UgYW5kIGJpbmFyeSBjb21wYXRpYmxlLgorICAgIElN
UE9SVF9DIENvbXBsZXRpb24gZXZhbHVhdGUoY29uc3QgVVN0cmluZyAmY29kZSwgY29uc3QgVmFs
dWUgJnRoaXNWID0gVmFsdWUoKSwgY29uc3QgVVN0cmluZyAmc291cmNlRmlsZW5hbWUgPSBVU3Ry
aW5nKCkpOwogCiAgICAgLyoqCiAgICAgICogQGludGVybmFsCkBAIC0zNDAsNyArMzQwLDcgQEAN
CiAKICNpZmRlZiBOT0tJQV9DSEFOR0VTCiAgICAgSU1QT1JUX0Mgdm9pZCBpbmNTdGF0ZW1lbnRD
b3VudCgpOwotCUlNUE9SVF9DIHZvaWQgcmVzZXRTdGF0ZW1lbnRDb3VudCgpOworICAgIElNUE9S
VF9DIHZvaWQgcmVzZXRTdGF0ZW1lbnRDb3VudCgpOwogICAgIGludCBzdGF0ZW1lbnRDb3VudCgp
IGNvbnN0OwogI2VuZGlmCiAKQEAgLTM4Myw4ICszODMsOCBAQA0KICAgICAgKiBzZWN1cml0eSBj
aGVja3MuCiAgICAgICovCiAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2JqZWN0KGNvbnN0IFZh
bHVlICZ2KSB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIC8qKiAKKworICAgIC8qKgogICAg
ICAqIEZpbmQgdGhlIGludGVycHJldGVyIGZvciBhIHBhcnRpY3VsYXIgZ2xvYmFsIG9iamVjdC4g
IFRoaXMgc2hvdWxkIHJlYWxseQogICAgICAqIGJlIGEgc3RhdGljIG1ldGhvZCwgYnV0IHdlIGNh
bid0IGRvIHRoYXQgaXMgQysrLiAgQWdhaW4sIGFzIHdpdGggaXNHbG9iYWxPYmplY3QoKQogICAg
ICAqIGltcGxlbWVudGF0aW9uIHJlYWxseSBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGluc3RhbmNl
cyBvZiBJbnRlcnByZXRlcgpAQCAtMzkyLDcgKzM5Miw3IEBADQogICAgICAqIG92ZXJyaWRlIG9m
IHRoaXMgbWV0aG9kIGlzIGN1cnJlbnRseSBpbiBXZWJDb3JlLgogICAgICAqLwogICAgIHZpcnR1
YWwgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0IChjb25zdCBWYWx1ZUlt
cCAqaW1wKSB7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICAvKioKICAgICAgKiBEZXRlcm1pbmUg
aWYgdGhlIGl0IGlzICdzYWZlJyB0byBleGVjdXRlIGNvZGUgaW4gdGhlIHRhcmdldCBpbnRlcnBy
ZXRlciBmcm9tIGFuCiAgICAgICogb2JqZWN0IHRoYXQgb3JpZ2luYXRlZCBpbiB0aGlzIGludGVy
cHJldGVyLiAgVGhpcyBjaGVjayBpcyB1c2VkIHRvIGVuZm9yY2UgV2ViQ29yZQpAQCAtNDAxLDEx
ICs0MDEsMTAgQEANCiAgICAgICovCiAgICAgdmlydHVhbCBib29sIGlzU2FmZVNjcmlwdCAoY29u
c3QgSW50ZXJwcmV0ZXIgKnRhcmdldCkgeyByZXR1cm4gdHJ1ZTsgfQogCi0jaWZuZGVmIE5PS0lB
X0NIQU5HRVMgICAgCisgICAgSU1QT1JUX0MKICAgICB2aXJ0dWFsIHZvaWQgKmNyZWF0ZUxhbmd1
YWdlSW5zdGFuY2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nczo6SW5zdGFuY2U6
OkJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKmN1
cnJlbnQpOwogI2VuZGlmCi0jZW5kaWYKLSAgICAKKwogICBwcml2YXRlOgogICAgIEludGVycHJl
dGVySW1wICpyZXA7CiAKQEAgLTQzMiw3ICs0MzEsNyBAQA0KICAgICogYW5kIGFsc28gdGhlIGN1
cnJlbnQgZXhlY3V0aW9uIHN0YXRlIGNvbnRleHQuCiAgICAqLwogICBjbGFzcyBFeGVjU3RhdGUg
ewotCU9PTV9ORVdfREVMRVRFCisgICAgT09NX05FV19ERUxFVEUKICAgICBmcmllbmQgY2xhc3Mg
SW50ZXJwcmV0ZXJJbXA7CiAgICAgZnJpZW5kIGNsYXNzIEZ1bmN0aW9uSW1wOwogI2lmIEFQUExF
X0NIQU5HRVMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9zdGRpbnQuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2tqcy9zdGRpbnQuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2
YVNjcmlwdENvcmUva2pzL3N0ZGludC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsMzYgKzI1LDMz
IEBADQogDQogI2luY2x1ZGUgPGUzMmRlZi5oPg0KIA0KLSNpZm5kZWYgdWludDMyX3QNCi0jZGVm
aW5lIHVpbnQzMl90IFRVaW50MzINCi0jZGVmaW5lIGludDMyX3QJVEludDMyDQotI2VuZGlmDQor
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7DQordHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4
X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsNCit0eXBlZGVmIHNob3J0IGlu
dDE2X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7DQordHlwZWRlZiBpbnQgaW50
MzJfdDsNCit0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NF90Ow0KK3R5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIHVpbnQ2NF90Ow0KIA0KLSNpZm5kZWYgdWludDE2X3QNCi0jZGVmaW5lIHVpbnQxNl90
IFRVaW50MTYNCi0jZGVmaW5lIGludDE2X3QJVEludDE2DQotI2VuZGlmDQordHlwZWRlZiB1bnNp
Z25lZCBsb25nIHVpbnRwdHJfdDsNCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50cHRyX3Q7DQog
DQotI2lmbmRlZiB1aW50OF90DQotI2RlZmluZSB1aW50OF90IFRVaW50OA0KLSNkZWZpbmUgaW50
OF90CVRJbnQ4DQotI2VuZGlmDQotDQogI2Vsc2UNCiANCiAjaWZuZGVmIHVpbnQzMl90DQogI2Rl
ZmluZSB1aW50MzJfdCB1bnNpZ25lZCBpbnQNCi0jZGVmaW5lIGludDMyX3QJaW50DQorI2RlZmlu
ZSBpbnQzMl90ICAgIGludA0KICNlbmRpZg0KIA0KICNpZm5kZWYgdWludDE2X3QNCiAjZGVmaW5l
IHVpbnQxNl90IHVuc2lnbmVkIHNob3J0IGludA0KLSNkZWZpbmUgaW50MTZfdAkgc2hvcnQgaW50
DQorI2RlZmluZSBpbnQxNl90ICAgICBzaG9ydCBpbnQNCiAjZW5kaWYNCiANCiAjaWZuZGVmIHVp
bnQ4X3QNCiAjZGVmaW5lIHVpbnQ4X3QgdW5zaWduZWQgY2hhcg0KLSNkZWZpbmUgaW50OF90CWNo
YXINCisjZGVmaW5lIGludDhfdCAgICBjaGFyDQogI2VuZGlmDQogDQogDQpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL3VzdHJpbmcuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy91c3RyaW5nLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy91c3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC00NzcsNiArNDc3LDcgQEANCiAgICAgICovCiAgICAg
c3RhdGljIHZvaWQgZ2xvYmFsQ2xlYXIoKTsKICNlbmRpZgorICAgIFJlcCAqYXJlcCgpIGNvbnN0
IHsgcmV0dXJuIHJlcDsgfQogICBwcml2YXRlOgogICAgIFVTdHJpbmcoUmVwICpyKSB7IGF0dGFj
aChyKTsgfQogICAgIHZvaWQgYXR0YWNoKFJlcCAqcikgeyByZXAgPSByOyByLT5yZWYoKTsgfQpJ
bmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2JyaWRnZS9XZWJDb3JlQnJpZGdlLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2Vi
Q29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xNjUsNyAr
MTY1LDcgQEANCiAgICAgfQ0KICAgICBpUGFydC0+c2V0QnJpZGdlKDApOw0KICAgICBpUGFydC0+
ZGVyZWYoKTsNCi0gICAgDQorDQogICAgIGRlbGV0ZSBpU21hcnRUZXh0QnVmZmVyOw0KICAgICB9
DQogDQpAQCAtMjkxLDcgKzI5MSw3IEBADQogRVhQT1JUX0MNCiB2b2lkIENXZWJDb3JlQnJpZGdl
OjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZyhjb25zdCBURGVzQyYgYUVuY29kaW5nLCBUQm9v
bCBhVXNlckNob3NlbikNCiB7DQotICAgIGlTbWFydExpbmtOb2RlID0gTlVMTDsgICAgDQorICAg
IGlTbWFydExpbmtOb2RlID0gTlVMTDsNCiAgICAgaVBhcnQtPnNldEVuY29kaW5nKFFTdHJpbmc6
OkZyb21EZXMoYUVuY29kaW5nKSwgYVVzZXJDaG9zZW4pOw0KICAgICBDbGllbnQoKS5Eb2N1bWVu
dFN0YXJ0ZWQoKTsNCiB9DQpAQCAtMTMyNiw2ICsxMzI2LDEyIEBADQogDQogKi8NCiBFWFBPUlRf
Qw0KK05QT2JqZWN0KiBDV2ViQ29yZUJyaWRnZTo6V2luZG93U2NyaXB0TlBPYmplY3QoKQ0KK3sN
CisgICAgcmV0dXJuIGlQYXJ0LT53aW5kb3dTY3JpcHROUE9iamVjdCgpOw0KK30NCisNCitFWFBP
UlRfQw0KIHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE5hbWUoY29uc3QgVERlc0MmIGFOYW1lKQ0K
IHsNCiAgICAgaVBhcnQtPktIVE1MUGFydDo6c2V0TmFtZShRU3RyaW5nOjpGcm9tRGVzKGFOYW1l
KSk7DQpAQCAtMTQyNiwxMiArMTQzMiwxMiBAQA0KIFRQdHJDIENXZWJDb3JlQnJpZGdlOjpHZXRO
ZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKFRCb29sJiBhQ29udGludWUpDQogew0KIA0KLSAg
ICBpZigoIWlQYXJ0KSB8fCAoIWlQYXJ0LT54bWxEb2NJbXBsKCkpKSANCisgICAgaWYoKCFpUGFy
dCkgfHwgKCFpUGFydC0+eG1sRG9jSW1wbCgpKSkNCiAgICAgICAgIHsNCiAgICAgICAgIGFDb250
aW51ZSA9IEVGYWxzZTsNCiAgICAgICAgIHJldHVybiBUUHRyQygpOw0KICAgICAgICAgfQ0KLSAg
DQorDQogICAgIGlmIChpU21hcnRMaW5rTm9kZSA9PSBOVUxMKQ0KICAgICAgICAgew0KICAgICAg
ICAgaVNtYXJ0TGlua05vZGUgPSBpUGFydC0+eG1sRG9jSW1wbCgpOw0KQEAgLTE0NDEsMTAgKzE0
NDcsMTAgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICAvL2FkZCByZWYNCiAgICAgICAgIH0N
Ci0gICAgZWxzZSANCi0gICAgICAgIHsgICANCisgICAgZWxzZQ0KKyAgICAgICAgew0KICAgICAg
ICAgRE9NOjpOb2RlSW1wbCogbm9kZVRlbXAgPSBpU21hcnRMaW5rTm9kZTsNCi0gICAgICAgIGlT
bWFydExpbmtOb2RlID0gaVNtYXJ0TGlua05vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsgIA0KKyAg
ICAgICAgaVNtYXJ0TGlua05vZGUgPSBpU21hcnRMaW5rTm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgp
Ow0KICAgICAgICAgaWYoaVNtYXJ0TGlua05vZGUpDQogICAgICAgICAgICAgew0KICAgICAgICAg
ICAgIGlTbWFydExpbmtOb2RlLT5yZWYoKTsNCkBAIC0xNDYwLDE2ICsxNDY2LDE2IEBADQogICAg
ICAgICBpZihpU21hcnRMaW5rTm9kZS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpDQogICAgICAgICAg
ICAgew0KICAgICAgICAgICAgIGFDb250aW51ZSA9IEVUcnVlOw0KLSAgICAgICAgICAgIFJlbmRl
clRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oaVNtYXJ0TGlu
a05vZGUtPnJlbmRlcmVyKCkpOyAgICAgICAgICAgDQorICAgICAgICAgICAgUmVuZGVyVGV4dCog
dGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihpU21hcnRMaW5rTm9kZS0+
cmVuZGVyZXIoKSk7DQogICAgICAgICAgICAgZGVsZXRlIGlTbWFydFRleHRCdWZmZXI7DQogICAg
ICAgICAgICAgaVNtYXJ0VGV4dEJ1ZmZlciA9IE5VTEw7DQotICAgICAgICAgICAgaVNtYXJ0VGV4
dEJ1ZmZlciA9IHRleHRSZW5kZXJlci0+ZGF0YSgpLnN0cmluZygpLkRlcygpLkFsbG9jTCgpOyAg
ICAgICAgICAgICAgICANCisgICAgICAgICAgICBpU21hcnRUZXh0QnVmZmVyID0gdGV4dFJlbmRl
cmVyLT5kYXRhKCkuc3RyaW5nKCkuRGVzKCkuQWxsb2NMKCk7DQogICAgICAgICAgICAgcmV0dXJu
IGlTbWFydFRleHRCdWZmZXItPlB0cigpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAN
CiAgICAgRE9NOjpOb2RlSW1wbCogbm9kZVRlbXAgPSBpU21hcnRMaW5rTm9kZTsNCi0gICAgaVNt
YXJ0TGlua05vZGUgPSBpU21hcnRMaW5rTm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOyAgIA0KKyAg
ICBpU21hcnRMaW5rTm9kZSA9IGlTbWFydExpbmtOb2RlLT50cmF2ZXJzZU5leHROb2RlKCk7DQog
ICAgIGlmKGlTbWFydExpbmtOb2RlKQ0KICAgICAgICAgew0KICAgICAgICAgaVNtYXJ0TGlua05v
ZGUtPnJlZigpOw0KQEAgLTE0NzksMTMgKzE0ODUsMTMgQEANCiAgICAgfQ0KIA0KICAgICBhQ29u
dGludWUgPSBFRmFsc2U7DQotICAgIHJldHVybiBUUHRyQygpOyAgICANCisgICAgcmV0dXJuIFRQ
dHJDKCk7DQogfQ0KIA0KIEVYUE9SVF9DDQogdm9pZCBDV2ViQ29yZUJyaWRnZTo6R2V0UmVuZGVy
VGV4dEFyZWEoY29uc3QgVERlc0MmIGFUZXh0LCBSQXJyYXk8VFJlY3Q+JiBhUmVjdCkNCiB7DQot
ICBpUGFydC0+Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShhVGV4dCwgTm9kZShpU21hcnRMaW5rTm9k
ZSksIGFSZWN0KTsgICANCisgIGlQYXJ0LT5nZXRSZW5kZXJUZXh0UmVjdEFycmF5KGFUZXh0LCBO
b2RlKGlTbWFydExpbmtOb2RlKSwgYVJlY3QpOw0KIH0NCiANCiANCkBAIC0yMDkzLDcgKzIwOTks
NyBAQA0KICAgICAgICAgbmV3KEVMZWF2ZSkgQ0FycmF5UHRyRmxhdDxDV2ViQ29yZVBhZ2VEYXRh
SXRlbT4oMTApOw0KICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBpdGVtQXJyYXkgKTsNCiAgICAg
Q1dlYkNvcmVQYWdlRGF0YUl0ZW0qIGRhdGFJdGVtID0gTlVMTDsNCi0gICAgDQorDQogICAgIC8v
IGdldCBwYWdlIG1hcmt1cCBkb2N1bWVudCBpZiByZXF1ZXN0ZWQNCiAgICAgaWYoYVR5cGVNYXNr
ICYgQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OkVNYXJrdXApDQogICAgICAgICB7DQpAQCAtMjEwMSw4
ICsyMTA3LDggQEANCiAgICAgICAgIGRhdGFJdGVtID0gQ1dlYkNvcmVQYWdlRGF0YUl0ZW06Ok5l
d0woQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OkVNYXJrdXApOw0KICAgICAgICAgQ2xlYW51cFN0YWNr
OjpQdXNoTCggZGF0YUl0ZW0gKTsNCiAgICAgICAgIGRhdGFJdGVtLT5TZXRVcmxMKGlQYXJ0LT5y
ZXF1ZXN0ZWRVUkxTdHJpbmcoKS5EZXMoKSk7DQotICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVu
dFR5cGVMKF9MKCJ0ZXh0L2h0bWwiKSk7ICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgICAg
ICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVjcy0yIikpOyANCisgICAgICAgIGRhdGFJdGVt
LT5TZXRDb250ZW50VHlwZUwoX0woInRleHQvaHRtbCIpKTsNCisgICAgICAgIGRhdGFJdGVtLT5T
ZXRDaGFyc2V0TChfTCgidWNzLTIiKSk7DQogICAgICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoIHBh
Z2VNYXJrdXBRLkRlcygpICk7DQogICAgICAgICBpdGVtQXJyYXktPkFwcGVuZEwoZGF0YUl0ZW0p
Ow0KICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoIGRhdGFJdGVtICk7DQpAQCAtMjEyNCw5ICsy
MTMwLDkgQEANCiAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZGF0YUl0ZW0g
KTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldFVybEwoc2hlZXRVcmwuc3RyaW5nKCku
RGVzKCkpOw0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVudFR5cGVMKGRTdHls
ZXNoZWV0LnR5cGUoKS5zdHJpbmcoKS5EZXMoKSk7DQotICAgICAgICAgICAgICAgIC8vQ2hhcnNl
dCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQgcGFnZXMuICAgDQorICAgICAgICAgICAgICAgIC8vQ2hh
cnNldCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQgcGFnZXMuDQogICAgICAgICAgICAgICAgIGRhdGFJ
dGVtLT5TZXRDaGFyc2V0TChfTCgidWNzLTIiKSk7DQotICAgICAgICAgICAgICAgIGRhdGFJdGVt
LT5TZXREYXRhTChrU3R5bGVTaGVldC0+c2hlZXQoKS5zdHJpbmcoKS5EZXMoKSk7ICAgICAgICAg
ICAgICAgIA0KKyAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoa1N0eWxlU2hlZXQt
PnNoZWV0KCkuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAgICAgICBpdGVtQXJyYXktPkFw
cGVuZEwoZGF0YUl0ZW0gKTsNCiAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoIGRh
dGFJdGVtICk7DQogICAgICAgICAgICAgICAgIH0NCkBAIC0yMTUzLDcgKzIxNTksNyBAQA0KICAg
ICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBkYXRhSXRlbSApOw0KICAgICAgICAg
ICAgICAgICBkYXRhSXRlbS0+U2V0VXJsTChzY3JpcHRVcmwuc3RyaW5nKCkuRGVzKCkpOw0KICAg
ICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVudFR5cGVMKF9MKCJhcHBsaWNhdGlvbi94
LWphdmFzY3JpcHQiKSk7DQotICAgICAgICAgICAgICAgIC8vIENoYXJzZXQgaXMgcmVxdWlyZWQg
Zm9yIHNhdmVkIHBhZ2VzLiANCisgICAgICAgICAgICAgICAgLy8gQ2hhcnNldCBpcyByZXF1aXJl
ZCBmb3Igc2F2ZWQgcGFnZXMuDQogICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0
TChfTCgidWNzLTIiKSk7DQogICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXREYXRhTChrU2Ny
aXB0LT5zY3JpcHQoKS5zdHJpbmcoKS5EZXMoKSk7DQogICAgICAgICAgICAgICAgIGl0ZW1BcnJh
eS0+QXBwZW5kTChkYXRhSXRlbSk7DQpAQCAtMjg1OSwxNCArMjg2NSwxNCBAQA0KIHsNCiAgICAg
aWYoIWlQYXJ0IHx8ICFpUGFydC0+eG1sRG9jSW1wbCgpKSByZXR1cm4gRUZhbHNlOw0KICAgICBp
ZihhSW5pdGlhbGl6ZSkgew0KLSAgICAgICAgDQorDQogICAgICAgICBpZiAoaVBhcnQtPnhtbERv
Y0ltcGwoKSAmJiBpUGFydC0+eG1sRG9jSW1wbCgpLT5mb2N1c05vZGUoKSl7DQogICAgICAgICAg
ICAgUVBvaW50IGNwKGlQYXJ0LT54bWxEb2NJbXBsKCktPmZvY3VzTm9kZSgpLT5nZXRSZWN0KCku
Y2VudGVyKCkpOw0KICAgICAgICAgICAgIGlQYXJ0LT5zZXRDdXJzb3JQb3NpdGlvbihjcCk7DQog
ICAgICAgICAgICAgaVBhcnQtPnZpZXcoKS0+R2V0RG9jdW1lbnRWaWV3KCkuU2V0Rm9jdXMoRVRy
dWUpOw0KICAgICAgICAgICAgIHJldHVybiBFVHJ1ZTsNCiAgICAgICAgIH0NCi0gICAgICAgIA0K
Kw0KICAgICAgICAgUVB0ckxpc3Q8S1BhcnRzOjpSZWFkT25seVBhcnQ+IGNoaWxkUGFydExpc3Qg
PSBpUGFydC0+ZnJhbWVzKCk7DQogICAgICAgICBmb3IoS1BhcnRzOjpSZWFkT25seVBhcnQqIGNo
aWxkUGFydCA9IGNoaWxkUGFydExpc3QuZmlyc3QoKTtjaGlsZFBhcnQ7Y2hpbGRQYXJ0ID0gY2hp
bGRQYXJ0TGlzdC5uZXh0KCkpew0KICAgICAgICAgICAgIEtIVE1MUGFydCAqa2h0bWxfcGFydCA9
IHN0YXRpY19jYXN0PEtIVE1MUGFydCAqPihjaGlsZFBhcnQpOw0KQEAgLTI4ODQsNyArMjg5MCw3
IEBADQogICAgICAgICBpUGFydC0+dGFiYmVkTmF2aWdhdGlvbigwLDEsYUVsVHlwZSwgYUluaXRp
YWxpemUpOw0KICAgICAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9DQotICAgIA0KKw0KICAgICBp
bnQgbHIgPSAoYURpcmVjdGlvbiA9PSBFV2ViTmF2TGVmdCkgPyAtMSA6IChhRGlyZWN0aW9uID09
IEVXZWJOYXZSaWdodCkgPyAxIDogMCA7DQogICAgIGludCB0YiA9IChsciAhPSAwKSA/IDA6IChh
RGlyZWN0aW9uID09IEVXZWJOYXZVcCkgPyAtMSA6IDEgOw0KICAgICBib29sIGZvdW5kID0gaVBh
cnQtPnRhYmJlZE5hdmlnYXRpb24obHIsdGIsYUVsVHlwZSxhSW5pdGlhbGl6ZSk7DQpJbmRleDog
V2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9i
cmlkZ2UvV2ViQ29yZUJyaWRnZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2JyaWRn
ZS9XZWJDb3JlQnJpZGdlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xMzMsNiArMTMzLDEzIEBADQog
Y2xhc3MgS0hUTUxWaWV3Ow0KIGNsYXNzIFJlbmRlckFyZW5hOw0KIA0KKyNpZmRlZiAgUkRfQlJP
V1NFUl9XSURHRVRTDQorbmFtZXNwYWNlIEtKUyB7DQorICAgIGNsYXNzIEV4ZWNTdGF0ZTsNCisg
ICAgY2xhc3MgT2JqZWN0SW1wOw0KKyAgICBjbGFzcyBQcm90ZWN0ZWRWYWx1ZTsNCit9DQorI2Vu
ZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogbmFtZXNwYWNlIGtodG1sIHsNCiAgICAgY2xhc3Mg
UmVuZGVyUGFydDsNCiAgICAgY2xhc3MgUmVuZGVyT2JqZWN0Ow0KQEAgLTE1OSw2ICsxNjYsNyBA
QA0KIA0KIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0Ow0KIGNsYXNzIENXZWJDb3JlUGFn
ZURhdGFJdGVtOw0KK2NsYXNzIE5QT2JqZWN0Ow0KIA0KIHR5cGVkZWYga2h0bWw6OlJlbmRlclBh
cnQgS0hUTUxSZW5kZXJQYXJ0Ow0KIA0KQEAgLTI0NSw4ICsyNTMsOCBAQA0KICAgICAgICAgSU1Q
T1JUX0MgVFB0ckMgUmVmZXJyZXIoKSBjb25zdDsNCiAgICAgICAgIElNUE9SVF9DIFRQdHJDIERv
bWFpbigpIGNvbnN0Ow0KICAgICAgICAgSU1QT1JUX0MgSEJ1ZkMqIEdldFRleHRDb250ZW50TCgp
Ow0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgIElNUE9SVF9DIFRQdHJDIEdldE5leHRSZW5k
ZXJUZXh0Rm9yU21hcnRMaW5rc0woVEJvb2wmIGFLZWVwR29pbmcpOyAgICANCisNCisgICAgICAg
IElNUE9SVF9DIFRQdHJDIEdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0woVEJvb2wmIGFL
ZWVwR29pbmcpOw0KICAgICAgICAgSU1QT1JUX0Mgdm9pZCBHZXRSZW5kZXJUZXh0QXJlYShjb25z
dCBURGVzQyYgYVRleHQsIFJBcnJheTxUUmVjdD4mIGFSZWN0KTsNCiANCiAgICAgICAgIElNUE9S
VF9DIHZvaWQgSW5zdGFsbEluRnJhbWUoTVdlYkNvcmVTY3JvbGxWaWV3JiBhVmlldyk7DQpAQCAt
NDQyLDYgKzQ1MCw3IEBADQogICAgICAgICAvL3ZvaWQgZW5zdXJlQ2FyZXRWaXNpYmxlOw0KIA0K
ICAgICAgICAgLy8tIChXZWJTY3JpcHRPYmplY3QgKil3aW5kb3dTY3JpcHRPYmplY3Q7DQorICAg
ICAgICBJTVBPUlRfQyBOUE9iamVjdCogV2luZG93U2NyaXB0TlBPYmplY3QoKTsNCiANCiAgICAg
ICAgIC8vLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdPcGVyYXRpb25Gb3JEcmFnZ2luZ0luZm8oaWQg
PE5TRHJhZ2dpbmdJbmZvPilpbmZvOw0KICAgICAgICAgLy92b2lkIGRyYWdFeGl0ZWRXaXRoRHJh
Z2dpbmdJbmZvKGlkIDxOU0RyYWdnaW5nSW5mbz4paW5mbzsNCkBAIC01MTIsMTEgKzUyMSwxMSBA
QA0KICAgICAgICAgVEJvb2wgaVNob3VsZENyZWF0ZVJlbmRlcmVyczsNCiAgICAgICAgIC8vIHBv
aW50ZXIgdG8gdGhlIGNsaWVudCBzaWRlIGJyaWRnZSBpbnRlcmZhY2UNCiAgICAgICAgIE1XZWJD
bGllbnRCcmlkZ2UqIGlDbGllbnRCcmlkZ2U7DQotICAgICAgICAvL3BvaW50ZXIgZm9yIHJlbmRl
ciB0ZXh0IG9iamVjdCBmb3Igc21hcnQgbGluayBwYXJzaW5nIA0KKyAgICAgICAgLy9wb2ludGVy
IGZvciByZW5kZXIgdGV4dCBvYmplY3QgZm9yIHNtYXJ0IGxpbmsgcGFyc2luZw0KICAgICAgICAg
RE9NOjpOb2RlSW1wbCogaVNtYXJ0TGlua05vZGU7DQogICAgICAgICAvL3BvaW50ZXIgZm9yIHNt
YXJ0IHRleHQgYnVmZmVyDQogICAgICAgICBIQnVmQyogaVNtYXJ0VGV4dEJ1ZmZlcjsNCi0gICAg
ICAgIA0KKw0KICAgICB9Ow0KIA0KIA0KQEAgLTYxNCw3ICs2MjMsNyBAQA0KICAgICB2aXJ0dWFs
IFRCb29sIERlZmVyc0xvYWRpbmcoKSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBTZXREZWZlcnNM
b2FkaW5nKFRCb29sIGFMb2FkaW5nKSA9IDA7DQogDQotICAgIHZpcnR1YWwgdm9pZCBTYXZlRm9y
bURhdGEoY29uc3QgQ0FycmF5UHRyRmxhdDxDV2ViQ29yZUZvcm1EYXRhRWxlbWVudD4mIGFGb3Jt
RGF0YSkgPSAwOyANCisgICAgdmlydHVhbCB2b2lkIFNhdmVGb3JtRGF0YShjb25zdCBDQXJyYXlQ
dHJGbGF0PENXZWJDb3JlRm9ybURhdGFFbGVtZW50PiYgYUZvcm1EYXRhKSA9IDA7DQogDQogICAg
IHZpcnR1YWwgdm9pZCBTYXZlRG9jdW1lbnRTdGF0ZShjb25zdCBUQXJyYXk8VFB0ckM+JiBhRG9j
dW1lbnRTdGF0ZSkgPSAwOw0KICAgICB2aXJ0dWFsIFRBcnJheTxUUHRyQz4qIERvY3VtZW50U3Rh
dGUoKSBjb25zdCA9IDA7DQpAQCAtNzE3LDYgKzcyNiwxMCBAQA0KICAgICB2aXJ0dWFsIHZvaWQg
U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNvbnN0IFREZXNDJiBhTmFtZSwgY29uc3QgVERlc0Mm
IGFWYWx1ZSkgPSAwOw0KIA0KICAgICB2aXJ0dWFsIFRCb29sIENhbmNlbEluUHJvZ3Jlc3MoKSA9
IDA7DQorDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgdmlydHVhbCB2b2lkKiBj
cmVhdGVXaWRnZXRPYmplY3Qodm9pZCogZXhlYykgPSAwOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJf
V0lER0VUUw0KIH07DQogDQogI2VuZGlmICAgICAgLy8gV0VCQ09SRUJSSURHRV9IDQpJbmRleDog
V2ViQ29yZS9icmlkZ2UvV2ViQ29yZVdpZGdldC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9i
cmlkZ2UvV2ViQ29yZVdpZGdldC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2JyaWRn
ZS9XZWJDb3JlV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkNCkBAIC01Niw3ICs1Niw3IEBADQogDQog
DQogLyoqDQotKiAgaW50ZXJmYWNlLCB1c2VkIGJ5IHdpZGdldCBjbGFzc2VzIA0KKyogIGludGVy
ZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3Nlcw0KICogIEBsaWIgd2ViY29yZS5saWINCiAqICBA
c2luY2UgMy4xDQogKi8NCkBAIC02NCw5ICs2NCw5IEBADQogICB7DQogICBwdWJsaWM6DQogDQot
ICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJDb3JlR3JhcGhpY3NDb250ZXh0JiAvKmFHYyovLCAN
CisgICAgdmlydHVhbCB2b2lkIERyYXcoQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQmIC8qYUdjKi8s
DQogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRSZWN0JiAvKmFSZWN0Ki8pID0gMDsNCi0g
ICAgDQorDQogICAgIHZpcnR1YWwgVEJvb2wgSXNWaXNpYmxlKCkgY29uc3QgPSAwOw0KIA0KICAg
ICB2aXJ0dWFsIFRSZWN0IFJlY3QoKSBjb25zdCA9IDA7DQpAQCAtODEsMTIgKzgxLDEyIEBADQog
DQogICAgIHZpcnR1YWwgdm9pZCBTZXRSZWN0KGNvbnN0IFRSZWN0JiBhUmVjdCkgPSAwOw0KIA0K
LSAgICB2aXJ0dWFsIHZvaWQgQWN0aXZhdGUoKSA9IDA7ICAgIA0KLSAgICANCisgICAgdmlydHVh
bCB2b2lkIEFjdGl2YXRlKCkgPSAwOw0KKw0KICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFyZW50KCBN
V2ViQ29yZVNjcm9sbFZpZXcqIGFQYXJlbnQgKSA9ICAwOw0KIA0KICAgICB2aXJ0dWFsIHZvaWQg
Q2xvc2UoKSA9IDA7DQotICAgIA0KKw0KICAgICB2aXJ0dWFsIFRCb29sIElzU2Nyb2xsVmlldygp
IGNvbnN0IHsgcmV0dXJuIEVGYWxzZTsgfQ0KIA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFsZXR0
ZShUV2ViQ29yZVBhbGV0dGUpIHt9DQpAQCAtOTQsMzIgKzk0LDM0IEBADQogICAgIHZpcnR1YWwg
dm9pZCBTZXRPdXRsaW5lV2lkdGgoVFVpbnQ4ICkge30NCiANCiAgICAgdmlydHVhbCB2b2lkIFNl
dFdyaXRpbmdEaXJlY3Rpb25SdGwoVEJvb2wpIHt9DQorDQorICAgIHZpcnR1YWwgdm9pZCogUGx1
Z2luU2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0NCiAgIH07DQogDQogDQogLyoqDQot
KiAgaW50ZXJmYWNlLCB1c2VkIGJ5IHdpZGdldCBjbGFzc2VzIA0KKyogIGludGVyZmFjZSwgdXNl
ZCBieSB3aWRnZXQgY2xhc3Nlcw0KICogIEBsaWIgd2ViY29yZS5saWINCiAqICBAc2luY2UgMy4x
DQogKi8NCiBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXc6IHB1YmxpYyBNV2ViQ29yZVdpZGdldA0K
ICAgew0KLSAgcHVibGljOiAgICAgIA0KLSAgDQorICBwdWJsaWM6DQorDQogICAgIFRCb29sIElz
U2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIEVUcnVlOyB9DQotICAgIA0KLSAgICB2aXJ0dWFs
IFRTaXplIFNpemVIaW50KCkgY29uc3QgeyByZXR1cm4gVFNpemUoKTsgfSAgICANCi0gICAgDQot
ICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJDb3JlR3JhcGhpY3NDb250ZXh0JiAvKmFHYyovLCAN
Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFJlY3QmIC8qYVJlY3QqLykgeyB9ICAgIA0K
LSAgICANCi0gICAgdmlydHVhbCB2b2lkIEludmFsaWRhdGVSZWN0KGNvbnN0IFRSZWN0JiAvKmFS
ZWN0Ki8sIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJvb2wgLyphRHJhd05v
dyovKSA9IDA7ICANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCisNCisgICAgdmlydHVhbCBUU2l6ZSBTaXplSGludCgpIGNv
bnN0IHsgcmV0dXJuIFRTaXplKCk7IH0NCisNCisgICAgdmlydHVhbCB2b2lkIERyYXcoQ1dlYkNv
cmVHcmFwaGljc0NvbnRleHQmIC8qYUdjKi8sDQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRSZWN0JiAvKmFSZWN0Ki8pIHsgfQ0KKw0KKyAgICB2aXJ0dWFsIHZvaWQgSW52YWxpZGF0ZVJl
Y3QoY29uc3QgVFJlY3QmIC8qYVJlY3QqLywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRCb29sIC8qYURyYXdOb3cqLykgPSAwOw0KKw0KICAgICB2aXJ0dWFsIHZvaWQgU2Nyb2xs
VG8oVFBvaW50IC8qYVBvaW50Ki8pID0gMDsNCi0gICAgDQorDQogICAgIHZpcnR1YWwgVFJlY3Qg
VmlzaWJsZVJlY3QoKSBjb25zdCA9IDA7DQotICAgIA0KKw0KICAgICB2aXJ0dWFsIFRTaXplIENv
bnRlbnRTaXplKCkgY29uc3QgPSAwOw0KIA0KICAgICB2aXJ0dWFsIHZvaWQgUmVzaXplQ29udGVu
dChUU2l6ZSAvKmFTaXplKi8pID0gMDsNCkBAIC0xNDcsNyArMTQ5LDcgQEANCiAgICAgdmlydHVh
bCB2b2lkIFNldFNjcm9sbEJhcnNTdXBwcmVzc2VkKFRCb29sIC8qYVN1cHByZXNzZWQqLywgVEJv
b2wgLyphUmVwYWludE9uVW5zdXBwcmVzcyovKSA9IDA7DQogDQogICAgIHZpcnR1YWwgdm9pZCBB
ZGRDaGlsZChNV2ViQ29yZVdpZGdldCogLyphQ2hpbGQqLywgVEludCAvKmFYKi8gLCBUSW50IC8q
YVkqLyApID0gMDsNCi0gICAgDQorDQogICAgIHZpcnR1YWwgVEludCBTY2FsaW5nRmFjdG9yKCkg
Y29uc3QgPSAwOw0KIA0KICAgICBpbmxpbmUgVFBvaW50IFRvRG9jQ29vcmRzKGNvbnN0IFRQb2lu
dCYgYUZyb20pIGNvbnN0DQpAQCAtMTU1LDEzICsxNTcsMTMgQEANCiAgICAgICAgIFRJbnQgeiA9
IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAgIHJldHVybiBUUG9pbnQoYUZyb20uaVgqMTAwL3os
YUZyb20uaVkqMTAwL3opOw0KICAgICAgICAgfQ0KLSAgICANCisNCiAgICAgaW5saW5lIFRTaXpl
IFRvRG9jQ29vcmRzKGNvbnN0IFRTaXplJiBhRnJvbSkgY29uc3QNCiAgICAgICAgIHsNCiAgICAg
ICAgIFRJbnQgeiA9IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAgIHJldHVybiBUU2l6ZShhRnJv
bS5pV2lkdGgqMTAwL3osYUZyb20uaUhlaWdodCoxMDAveik7DQotICAgICAgICB9ICAgIA0KLSAg
ICAgICAgDQorICAgICAgICB9DQorDQogICAgIGlubGluZSBUUmVjdCBUb0RvY0Nvb3Jkcyhjb25z
dCBUUmVjdCYgYUZyb20pIGNvbnN0DQogICAgICAgICB7DQogICAgICAgICByZXR1cm4gVFJlY3Qo
VG9Eb2NDb29yZHMoYUZyb20uaVRsKSxUb0RvY0Nvb3JkcyhhRnJvbS5pQnIpKTsNCkBAIC0xNzIs
MTggKzE3NCwxOCBAQA0KICAgICAgICAgVEludCB6ID0gU2NhbGluZ0ZhY3RvcigpOw0KICAgICAg
ICAgcmV0dXJuIFRQb2ludChhRnJvbS5pWCp6LzEwMCxhRnJvbS5pWSp6LzEwMCk7DQogICAgICAg
ICB9DQotICAgIA0KKw0KICAgICBpbmxpbmUgVFNpemUgVG9WaWV3Q29vcmRzKGNvbnN0IFRTaXpl
JiBhRnJvbSkgY29uc3QNCiAgICAgICAgIHsNCiAgICAgICAgIFRJbnQgeiA9IFNjYWxpbmdGYWN0
b3IoKTsNCiAgICAgICAgIHJldHVybiBUU2l6ZShhRnJvbS5pV2lkdGgqei8xMDAsYUZyb20uaUhl
aWdodCp6LzEwMCk7DQotICAgICAgICB9ICAgIA0KLSAgICAgICAgDQorICAgICAgICB9DQorDQog
ICAgIGlubGluZSBUUmVjdCBUb1ZpZXdDb29yZHMoY29uc3QgVFJlY3QmIGFGcm9tKSBjb25zdA0K
ICAgICAgICAgew0KICAgICAgICAgcmV0dXJuIFRSZWN0KFRvVmlld0Nvb3JkcyhhRnJvbS5pVGwp
LFRvVmlld0Nvb3JkcyhhRnJvbS5pQnIpKTsNCi0gICAgICAgIH0gICAgDQotICAgIA0KKyAgICAg
ICAgfQ0KKw0KICAgICBpbmxpbmUgVEJvb2wgSXNTY2FsZWQoKSBjb25zdCB7IHJldHVybiBTY2Fs
aW5nRmFjdG9yKCkhPTEwMDsgfQ0KICAgfTsNCiANCkBAIC0xOTgsMzIgKzIwMCwzMiBAQA0KIGNs
YXNzIE1XZWJDb3JlT2JqZWN0V2lkZ2V0OiBwdWJsaWMgTVdlYkNvcmVXaWRnZXQNCiAgICAgew0K
ICAgICBwdWJsaWM6IC8vIENvbnN0cnVjdG9yIGFuZCBEZWNvbnN0cnV0b3INCi0gICAgDQorDQog
ICAgICAgICB2aXJ0dWFsIH5NV2ViQ29yZU9iamVjdFdpZGdldCgpIHt9Ow0KLSAgICANCisNCiAg
ICAgcHVibGljOiAvLyBDbGFzcyBNZXRob2RzDQotICAgIA0KKw0KICAgICAgICAgLy8gT2JqZWN0
L0VtYmVkIHJlbGF0ZWQgbWV0aG9kcw0KICAgICAvLyBSZXR1cm5zIEVUcnVlIGlmIHRoZSB3aWRn
ZXQgaXMgYWN0aXZlDQogICAgIHZpcnR1YWwgVEJvb2wgSXNBY3RpdmUoKSBjb25zdCA9IDA7DQot
ICAgIA0KKw0KICAgICAvLyBEZWFjdGl2YXRlcyB0aGUgcGx1Z2luDQogICAgIHZpcnR1YWwgdm9p
ZCBEZUFjdGl2YXRlKCkgPSAwOw0KLSAgICANCisNCiAgICAgLy8gU2V0cyB0aGUgZm9udA0KICAg
ICB2aXJ0dWFsIHZvaWQgU2V0Rm9udChDRm9udCogYUZvbnQpID0gMDsNCi0gICAgDQorDQogICAg
IC8vIFNvdW5kc3RhcnQgcmVsYXRlZCBtZXRob2RzDQogICAgIC8vIFBsYXlzIHRoZSBjb250ZW50
DQogICAgIHZpcnR1YWwgdm9pZCBQbGF5UGx1Z2luQ29udGVudChjb25zdCBURGVzQyYgYVJlcXVl
c3RVcmwpID0gMDsNCi0gICAgDQotICAgIC8vIFN0b3BzIHBsYXlpbmcgdGhlIGNvbnRlbnQgICAg
ICAgIA0KKw0KKyAgICAvLyBTdG9wcyBwbGF5aW5nIHRoZSBjb250ZW50DQogICAgIHZpcnR1YWwg
dm9pZCBTdG9wUGx1Z2luQ29udGVudChjb25zdCBURGVzQyYgYVJlcXVlc3RVcmwpID0gMDsNCi0g
ICAgDQotICAgIA0KLSAgICAvLyByZXR1cm4gRVRydWUgaWYgdGhlIHBsdWdpbiBoYXMgcmVzaXpl
ZCANCisNCisNCisgICAgLy8gcmV0dXJuIEVUcnVlIGlmIHRoZSBwbHVnaW4gaGFzIHJlc2l6ZWQN
CiAgICAgdmlydHVhbCBUQm9vbCBIYXNSZXNpemVkKCkgPSAwOw0KLSAgICANCisNCiAgICAgLy8g
Y2hlY2sgaWYgdGhlIHBsdWdpbiBpcyBhYmxlIHRvIGFjY2VwdCBmb2N1cyBldmVudA0KICAgICB2
aXJ0dWFsIFRCb29sIElzRm9jdXNhYmxlKCkgY29uc3QgPSAwOw0KIA0KSW5kZXg6IFdlYkNvcmUv
QldJTlMvV0VCQ09SRVUuREVGDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9CV0lOUy9XRUJDT1JF
VS5ERUYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvQldJTlMvV0VCQ09SRVUuREVGCSh3
b3JraW5nIGNvcHkpDQpAQCAtMSwxNTkgKzEsMTYwIEBADQogRVhQT1JUUw0KLQk/PzFDV2ViQ29y
ZVNldHRpbmdzQEBVQUVAWFogQCAxIE5PTkFNRSA7IENXZWJDb3JlU2V0dGluZ3M6On5DV2ViQ29y
ZVNldHRpbmdzKHZvaWQpDQotCT9BY3RpdmF0ZUFjY2Vzc0tleXNAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhVVEtleUV2ZW50QEBAWiBAIDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0aXZh
dGVBY2Nlc3NLZXlzKHN0cnVjdCBUS2V5RXZlbnQpDQotCT9BY3RpdmF0ZUV2ZW50QENXZWJDb3Jl
QnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6QWN0aXZhdGVFdmVudChjbGFzcyBUUG9pbnQgJikNCi0JP0FkZERhdGFAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpB
ZGREYXRhKGNsYXNzIFREZXNDOCBjb25zdCAmKQ0KLQk/QWRkSXRlbVRvQ2FjaGVMQFRXZWJDb3Jl
Q2FjaGVAQFNBWEFBVk1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvQEBBQVZURGVzQzhAQEhA
WiBAIDUgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUNhY2hlOjpBZGRJdGVtVG9DYWNoZUwoY2xhc3Mg
TVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlckluZm8gJiwgY2xhc3MgVERlc0M4ICYsIGludCkNCi0J
P0FkZFRvQ29udGFjdHNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgNiBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpBZGRUb0NvbnRhY3RzKGNsYXNzIFRQb2ludCAmKQ0K
LQk/QWRqdXN0Vmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDcgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6QWRqdXN0Vmlld1NpemUodm9pZCkNCi0JP0FsdFRleHRAVFdlYkNv
cmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgOCBOT05BTUUgOyBjbGFzcyBUUHRy
QzE2ICYgVFdlYkNvcmVJbWFnZUNhcnJpZXI6OkFsdFRleHQodm9pZCkNCi0JP0F1dG9SZWZyZXNo
RW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA5IE5PTkFNRSA7IGludCBDV2ViQ29y
ZVNldHRpbmdzOjpBdXRvUmVmcmVzaEVuYWJsZWQodm9pZCkgY29uc3QNCi0JP0JvZHlCYWNrZ3Jv
dW5kQ29sb3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRSZ2JAQFhaIEAgMTAgTk9OQU1FIDsgY2xh
c3MgVFJnYiBDV2ViQ29yZUJyaWRnZTo6Qm9keUJhY2tncm91bmRDb2xvcih2b2lkKQ0KLQk/Q2Fu
Q2FjaGVQYWdlQENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMSBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVCcmlkZ2U6OkNhbkNhY2hlUGFnZSh2b2lkKSBjb25zdA0KLQk/Q2xlYXJGaW5kQENXZWJDb3Jl
QnJpZGdlQEBRQUVYWFogQCAxMiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbGVhckZp
bmQodm9pZCkNCi0JP0NsaWVudEBDV2ViQ29yZUJyaWRnZUBAUUFFQUFWTVdlYkNsaWVudEJyaWRn
ZUBAWFogQCAxMyBOT05BTUUgOyBjbGFzcyBNV2ViQ2xpZW50QnJpZGdlICYgQ1dlYkNvcmVCcmlk
Z2U6OkNsaWVudCh2b2lkKQ0KLQk/Q2xvc2VVUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDE0
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNsb3NlVVJMKHZvaWQpDQotCT9Db29raWVB
ZGFwdGVyQFRXZWJDb3JlQ29va2llRmFjdG9yeUBAU0FQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJA
QFhaIEAgMTUgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVDb29raWVBZGFwdGVyICogVFdlYkNvcmVD
b29raWVGYWN0b3J5OjpDb29raWVBZGFwdGVyKHZvaWQpDQotCT9DcmVhdGVEb2N1bWVudFdpdGhF
bmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEhAWiBAIDE2IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nKGNsYXNzIFRE
ZXNDMTYgY29uc3QgJiwgaW50KQ0KLQk/Q3JlYXRlS0hUTUxWaWV3QENXZWJDb3JlQnJpZGdlQEBR
QUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBISEBaIEAgMTcgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6Q3JlYXRlS0hUTUxWaWV3KGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmLCBpbnQs
IGludCkNCi0JP0N1cnNpdmVGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJD
MTZAQFhaIEAgMTggTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpDdXJz
aXZlRm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/RGVBY3RpdmF0ZUV2ZW50QENXZWJDb3JlQnJp
ZGdlQEBRQUVYSEBaIEAgMTkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RGVBY3RpdmF0
ZUV2ZW50KGludCkNCi0JP0RlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFC
RUhYWiBAIDIwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0Rml4ZWRGb250
U2l6ZSh2b2lkKSBjb25zdA0KLQk/RGVmYXVsdEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFC
RUhYWiBAIDIxIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0Rm9udFNpemUo
dm9pZCkgY29uc3QNCi0JP0RlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5nc0BAUUJF
P0FWVFB0ckMxNkBAWFogQCAyMiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGlu
Z3M6OkRlZmF1bHRUZXh0RW5jb2Rpbmcodm9pZCkgY29uc3QNCi0JP0RlZmVyc1RpbWVyc0BDV2Vi
Q29yZUJyaWRnZUBAU0FIWFogQCAyMyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkRlZmVy
c1RpbWVycyh2b2lkKQ0KLQk/RGV0ZXJtaW5lQ3Vyc29yUG9zaXRpb25AQ1dlYkNvcmVCcmlkZ2VA
QFFBRUhBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEFBVlRSZWN0QEAxQUFWVFBvaW50
QEBIQFogQCAyNCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkRldGVybWluZUN1cnNvclBv
c2l0aW9uKGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJiwg
Y2xhc3MgVFJlY3QgJiwgY2xhc3MgVFBvaW50ICYsIGludCkNCi0JP0RpZE5vdE9wZW5VUkxAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OkRpZE5vdE9wZW5VUkwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/RG9tYWlu
QENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDI2IE5PTkFNRSA7IGNsYXNzIFRQ
dHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkRvbWFpbih2b2lkKSBjb25zdA0KLQk/RHJhd1JlY3RAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhBQlZUUmVjdEBAQUFWQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQEBa
IEAgMjcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RHJhd1JlY3QoY2xhc3MgVFJlY3Qg
Y29uc3QgJiwgY2xhc3MgQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgJikNCi0JP0R1bXBSZW5kZXJU
cmVlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAyOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpEdW1wUmVuZGVyVHJlZSh2b2lkKQ0KLQk/RW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFog
QCAyOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFbmQodm9pZCkNCi0JP0V4ZWN1dGVT
Y3JpcHRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDMwIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OkV4ZWN1dGVTY3JpcHQoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0K
LQk/RmFjdG9yeUBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAU0FQQVZNV2ViQ29yZUZvcm1D
b250cm9sRmFjdG9yeUBAWFogQCAzMSBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9s
RmFjdG9yeSAqIFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpGYWN0b3J5KHZvaWQpDQotCT9G
YWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVJbWFnZVJl
bmRlcmVyRmFjdG9yeUBAWFogQCAzMiBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUltYWdlUmVuZGVy
ZXJGYWN0b3J5ICogVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0K
LQk/RmFjdG9yeUBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVUZXh0
UmVuZGVyZXJGYWN0b3J5QEBYWiBAIDMzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRl
cmVyRmFjdG9yeSAqIFRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0K
LQk/RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFog
QCAzNCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkZhbnRhc3lGb250
RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9GYXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRn
ZUBAUUJFSFhaIEAgMzUgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpGYXN0Rmlyc3REaXNw
bGF5TW9kZSh2b2lkKSBjb25zdA0KLQk/RmluZExpbmtzT2ZUeXBlQENXZWJDb3JlQnJpZGdlQEBR
QUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlAVVRXZWJDb3JlTGlua0l0ZW1AQEBAQFogQCAzNiBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGaW5kTGlua3NPZlR5cGUoY2xhc3MgVERlc0Mx
NiBjb25zdCAmLCBjbGFzcyBSQXJyYXk8c3RydWN0IFRXZWJDb3JlTGlua0l0ZW0+ICYpDQotCT9G
aXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAzNyBO
T05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkZpeGVkRm9udEZhbWlseSh2
b2lkKSBjb25zdA0KLQk/Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUBDV2ViQ29yZUJyaWRn
ZUBAUUFFWEhAWiBAIDM4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkZvcmNlTGF5b3V0
QWRqdXN0aW5nVmlld1NpemUoaW50KQ0KLQk/R2V0UGFnZURhdGFMQENXZWJDb3JlQnJpZGdlQEBR
QUVQQVY/JENBcnJheVB0ckBWQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQEBASEBaIEAgMzkgTk9OQU1F
IDsgY2xhc3MgQ0FycmF5UHRyPGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVtPiAqIENXZWJDb3Jl
QnJpZGdlOjpHZXRQYWdlRGF0YUwoaW50KQ0KLQk/R2V0VGV4dENvbnRlbnRMQENXZWJDb3JlQnJp
ZGdlQEBRQUVQQVZIQnVmQzE2QEBYWiBAIDQwIE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2Vi
Q29yZUJyaWRnZTo6R2V0VGV4dENvbnRlbnRMKHZvaWQpDQotCT9HZXRVcmxPZk5vZGVJbkZvY3Vz
TEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWSEJ1ZkMxNkBAQUFWVFBvaW50QEBAWiBAIDQxIE5PTkFN
RSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0VXJsT2ZOb2RlSW5Gb2N1c0wo
Y2xhc3MgVFBvaW50ICYpIGNvbnN0DQotCT9IYXNQZW5kaW5nTGF5b3V0QENXZWJDb3JlQnJpZGdl
QEBRQkVIWFogQCA0MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Okhhc1BlbmRpbmdMYXlv
dXQodm9pZCkgY29uc3QNCi0JP0hpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBUEFW
TVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQFhaIEAgNDMgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVI
aXN0b3J5UHJvdmlkZXIgKiBUV2ViQ29yZUhpc3Rvcnk6Okhpc3RvcnlQcm92aWRlcih2b2lkKQ0K
LQk/SW1hZ2VDb3VudEBDV2ViQ29yZUJyaWRnZUBAUUFFSEhAWiBAIDQ0IE5PTkFNRSA7IGludCBD
V2ViQ29yZUJyaWRnZTo6SW1hZ2VDb3VudChpbnQpDQotCT9JbWFnZVR5cGVAVFdlYkNvcmVJbWFn
ZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgNDUgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAm
IFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpJbWFnZVR5cGUodm9pZCkNCi0JP0ltYWdlc0luUmVjdEBD
V2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlGaXhGbGF0QFZUV2ViQ29yZUltYWdlQ2Fycmll
ckBAQEBIQFogQCA0NiBOT05BTUUgOyBjbGFzcyBDQXJyYXlGaXhGbGF0PGNsYXNzIFRXZWJDb3Jl
SW1hZ2VDYXJyaWVyPiAqIENXZWJDb3JlQnJpZGdlOjpJbWFnZXNJblJlY3QoaW50KQ0KLQk/SW5p
dGlhbGl6ZVNldHRpbmdzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWQ1dlYkNvcmVTZXR0aW5nc0BA
QFogQCA0NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpJbml0aWFsaXplU2V0dGluZ3Mo
Y2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyBjb25zdCAmKQ0KLQk/SW5zdGFsbEluRnJhbWVAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhBQVZNV2ViQ29yZVNjcm9sbFZpZXdAQEBaIEAgNDggTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6SW5zdGFsbEluRnJhbWUoY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3
ICYpDQotCT9Jc0ZyYW1lU2V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA0OSBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVCcmlkZ2U6OklzRnJhbWVTZXQodm9pZCkgY29uc3QNCi0JP0phdmFFbmFibGVk
QENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRp
bmdzOjpKYXZhRW5hYmxlZCh2b2lkKSBjb25zdA0KLQk/SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1MSBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVTZXR0aW5nczo6SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSh2
b2lkKSBjb25zdA0KLQk/SmF2YVNjcmlwdEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFha
IEAgNTIgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRFbmFibGVkKHZv
aWQpIGNvbnN0DQotCT9KdW1wVG9TZWxlY3Rpb25AQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDUz
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okp1bXBUb1NlbGVjdGlvbih2b2lkKQ0KLQk/
S2V5RXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhVVEtleUV2ZW50QEBIQFogQCA1NCBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OktleUV2ZW50KHN0cnVjdCBUS2V5RXZlbnQsIGludCkNCi0J
P0xvYWRJbWFnZXNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDU1IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OkxvYWRJbWFnZXModm9pZCkNCi0JP0xvYWRlckNvbnRhaW5lckBUV2ViQ29y
ZUxvYWRlckNvbnRhaW5lckBAU0FQQVZNV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAWFogQCA1NiBO
T05BTUUgOyBjbGFzcyBNV2ViQ29yZUxvYWRlckNvbnRhaW5lciAqIFRXZWJDb3JlTG9hZGVyQ29u
dGFpbmVyOjpMb2FkZXJDb250YWluZXIodm9pZCkNCi0JP01pbmltdW1Gb250U2l6ZUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkVIWFogQCA1NyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6TWlu
aW11bUZvbnRTaXplKHZvaWQpIGNvbnN0DQotCT9NaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJD
b3JlU2V0dGluZ3NAQFFCRUhYWiBAIDU4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpN
aW5pbXVtTG9naWNhbEZvbnRTaXplKHZvaWQpIGNvbnN0DQotCT9OYW1lQENXZWJDb3JlQnJpZGdl
QEBRQkU/QVZUUHRyQzE2QEBYWiBAIDU5IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVC
cmlkZ2U6Ok5hbWUodm9pZCkgY29uc3QNCi0JP05hdmlnYWJsZU5vZGVVbmRlckN1cnNvckBDV2Vi
Q29yZUJyaWRnZUBAUUJFSEFBVlRQb2ludEBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBl
QEBBQVZUUmVjdEBAQFogQCA2MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5hdmlnYWJs
ZU5vZGVVbmRlckN1cnNvcihjbGFzcyBUUG9pbnQgJiwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVt
ZW50VHlwZSAmLCBjbGFzcyBUUmVjdCAmKSBjb25zdA0KLQk/TmVlZHNMYXlvdXRAQ1dlYkNvcmVC
cmlkZ2VAQFFCRUhYWiBAIDYxIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6TmVlZHNMYXlv
dXQodm9pZCkgY29uc3QNCi0JP05ld0xAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWMUBBQVZNV2ViQ2xp
ZW50QnJpZGdlQEBAWiBAIDYyIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlQnJpZGdlICogQ1dlYkNv
cmVCcmlkZ2U6Ok5ld0woY2xhc3MgTVdlYkNsaWVudEJyaWRnZSAmKQ0KLQk/TmV3TEBDV2ViQ29y
ZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQEFBVkNGYnNCaXRHY0BAUEFWQ0Zic0JpdG1hcEBAUEFW
TVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDYzIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhp
Y3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdEdj
ICYsIGNsYXNzIENGYnNCaXRtYXAgKiwgY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3ICopDQotCT9O
ZXdMQENXZWJDb3JlR3JhcGhpY3NDb250ZXh0QEBTQVBBVjFAUEFWQ0Zic0JpdG1hcERldmljZUBA
UEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDY0IE5PTkFNRSA7IGNs
YXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5l
d0woY2xhc3MgQ0Zic0JpdG1hcERldmljZSAqLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1X
ZWJDb3JlU2Nyb2xsVmlldyAqKQ0KLQk/TmV3TEBDV2ViQ29yZVNldHRpbmdzQEBTQVBBVjFAWFog
QCA2NSBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZVNldHRpbmdzICogQ1dlYkNvcmVTZXR0aW5nczo6
TmV3TCh2b2lkKQ0KLQk/Tm90aWZ5RGVjb2RpbmdFcnJvckBDV2ViQ29yZUltYWdlQ2FsbGJhY2tX
cmFwcGVyQEBRQUVYWFogQCA2NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dy
YXBwZXI6Ok5vdGlmeURlY29kaW5nRXJyb3Iodm9pZCkNCi0JP05vdGlmeUZpbmlzaGVkQENXZWJD
b3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFBRVhYWiBAIDY3IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6Tm90aWZ5RmluaXNoZWQodm9pZCkNCi0JP05vdGlmeVVw
ZGF0ZUBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2OCBOT05BTUUgOyB2
b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeVVwZGF0ZSh2b2lkKQ0KLQk/
TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzQENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCA2OSBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh2
b2lkKQ0KLQk/T3BlblVSTEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEgwMEFCVlRE
YXRlVGltZUBAQFogQCA3MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpPcGVuVVJMKGNs
YXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFRE
ZXNDMTYgY29uc3QgJiwgY2xhc3MgVERhdGVUaW1lIGNvbnN0ICYpDQotCT9QbHVnaW5IYW5kbGVy
QFRXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FQQVZNV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFhaIEAg
NzEgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5kbGVyICogVFdlYkNvcmVQbHVnaW5I
YW5kbGVyOjpQbHVnaW5IYW5kbGVyKHZvaWQpDQotCT9QbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNl
dHRpbmdzQEBRQkVIWFogQCA3MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6UGx1Z2lu
c0VuYWJsZWQodm9pZCkgY29uc3QNCi0JP1BvaW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFF
WFVUUG9pbnRlckV2ZW50QEBAWiBAIDczIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBv
aW50ZXJFdmVudChzdHJ1Y3QgVFBvaW50ZXJFdmVudCkNCi0JP1BvaW50ZXJFdmVudEBDV2ViQ29y
ZUJyaWRnZUBAUUFFWFc0VFR5cGVAVFBvaW50ZXJFdmVudEBAQUJWVFBvaW50QEBAWiBAIDc0IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVudChlbnVtIFRQb2ludGVyRXZl
bnQ6OlRUeXBlLCBjbGFzcyBUUG9pbnQgY29uc3QgJikNCi0JP1ByZXBhcmVGb3JFeGl0QENXZWJD
b3JlQnJpZGdlQEBTQVhYWiBAIDc1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlByZXBh
cmVGb3JFeGl0KHZvaWQpDQotCT9Qcm92aXNpb25hbExvYWRTdGFydGVkQENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCA3NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcm92aXNpb25hbExv
YWRTdGFydGVkKHZvaWQpDQotCT9SYXdEYXRhQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZU
UHRyQzhAQFhaIEAgNzcgTk9OQU1FIDsgY2xhc3MgVFB0ckM4ICYgVFdlYkNvcmVJbWFnZUNhcnJp
ZXI6OlJhd0RhdGEodm9pZCkNCi0JP1JlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlQENXZWJDb3Jl
QnJpZGdlQEBRQUVYVzRUV2ViQ29yZURldmljZVR5cGVAQEBaIEAgNzggTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZUJyaWRnZTo6UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGUoZW51bSBUV2ViQ29yZURl
dmljZVR5cGUpDQotCT9SZWZlcnJlckBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFog
QCA3OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpSZWZlcnJlcih2b2lk
KSBjb25zdA0KLQk/UmVtb3ZlRmlsZU5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZUUG9pbnRA
QEBaIEAgODAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UmVtb3ZlRmlsZU5hbWUoY2xh
c3MgVFBvaW50ICYpDQotCT9SZW1vdmVGcm9tRnJhbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBA
IDgxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92ZUZyb21GcmFtZSh2b2lkKQ0K
LQk/UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWMGtodG1sQEBYWiBAIDgyIE5PTkFN
RSA7IGNsYXNzIGtodG1sOjpSZW5kZXJQYXJ0ICogQ1dlYkNvcmVCcmlkZ2U6OlJlbmRlclBhcnQo
dm9pZCkgY29uc3QNCi0JP1JlbmRlcmVyQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVQQVZNV2Vi
Q29yZUltYWdlUmVuZGVyZXJAQFhaIEAgODMgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJl
bmRlcmVyICogVFdlYkNvcmVJbWFnZUNhcnJpZXI6OlJlbmRlcmVyKHZvaWQpDQotCT9SZXNvbHZl
VXJsTEBDV2ViQ29yZUJyaWRnZUBAU0FQQVZIQnVmQzE2QEBBQlZURGVzQzE2QEAwQFogQCA4NCBO
T05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OlJlc29sdmVVcmxMKGNsYXNz
IFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/UmVzdG9yZURvY3Vt
ZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDg1IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OlJlc3RvcmVEb2N1bWVudFN0YXRlKHZvaWQpDQotCT9TYW5zU2VyaWZGb250RmFt
aWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgODYgTk9OQU1FIDsgY2xh
c3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpTYW5zU2VyaWZGb250RmFtaWx5KHZvaWQpIGNv
bnN0DQotCT9TYXZlRG9jdW1lbnRTdGF0ZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgODcgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2F2ZURvY3VtZW50U3RhdGUodm9pZCkNCi0JP1Nh
dmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA4OCBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVTZXR0aW5nczo6U2F2ZVJhd0RhdGFFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9T
Y2FsaW5nRmFjdG9yQ2hhbmdlZEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDg5IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNjYWxpbmdGYWN0b3JDaGFuZ2VkKGludCkNCi0JP1Njcm9s
bFRvQW5jaG9yQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MCBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hvcihjbGFzcyBURGVzQzE2IGNvbnN0
ICYpDQotCT9TY3JvbGxUb0FuY2hvcldpdGhVUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVz
QzE2QEBAWiBAIDkxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNjcm9sbFRvQW5jaG9y
V2l0aFVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZWFyY2hBZ2FpbkBDV2ViQ29yZUJy
aWRnZUBAUUFFSEFCVlREZXNDMTZAQEhISEBaIEAgOTIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpTZWFyY2hBZ2FpbihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQot
CT9TZWFyY2hGb3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkzIE5P
TkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoRm9yKGNsYXNzIFREZXNDMTYgY29uc3Qg
JiwgaW50LCBpbnQsIGludCkNCi0JP1NlbGVjdGlvbkNvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/
QVZUUmdiQEBYWiBAIDk0IE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OlNlbGVj
dGlvbkNvbG9yKHZvaWQpDQotCT9TZW5kUmVzaXplRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhY
WiBAIDk1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNlbmRSZXNpemVFdmVudCh2b2lk
KQ0KLQk/U2VuZFNjcm9sbEV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA5NiBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kU2Nyb2xsRXZlbnQodm9pZCkNCi0JP1NlcmlmRm9u
dEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDk3IE5PTkFNRSA7
IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2VyaWZGb250RmFtaWx5KHZvaWQpIGNv
bnN0DQotCT9TZXRBdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDk4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0QXV0b1JlZnJlc2hFbmFibGVk
KGludCkNCi0JP1NldENhbGxiYWNrQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFBRVhQ
QVZDYWNoZWRJbWFnZUNhbGxiYWNrQGtodG1sQEBAWiBAIDk5IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6U2V0Q2FsbGJhY2soY2xhc3Mga2h0bWw6OkNhY2hlZElt
YWdlQ2FsbGJhY2sgKikNCi0JP1NldENvb2tpZUFkYXB0ZXJAVFdlYkNvcmVDb29raWVGYWN0b3J5
QEBTQVhQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQEBaIEAgMTAwIE5PTkFNRSA7IHZvaWQgVFdl
YkNvcmVDb29raWVGYWN0b3J5OjpTZXRDb29raWVBZGFwdGVyKGNsYXNzIE1XZWJDb3JlQ29va2ll
QWRhcHRlciAqKQ0KLQk/U2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFF
WEFCVlREZXNDMTZAQEBaIEAgMTAxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0
Q3Vyc2l2ZUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RGVmYXVsdEZp
eGVkRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEwMiBOT05BTUUgOyB2b2lk
IENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGaXhlZEZvbnRTaXplKGludCkNCi0JP1NldERl
ZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTAzIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVmYXVsdEZvbnRTaXplKGludCkNCi0JP1NldERlZmF1
bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA0
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVmYXVsdFRleHRFbmNvZGluZyhj
bGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXREZWZlcnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VA
QFNBWEhAWiBAIDEwNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXREZWZlcnNUaW1l
cnMoaW50KQ0KLQk/U2V0RHJhd3NCYWNrZ3JvdW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAg
MTA2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldERyYXdzQmFja2dyb3VuZChpbnQp
DQotCT9TZXRGYW50YXN5Rm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0Mx
NkBAQFogQCAxMDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRGYW50YXN5Rm9u
dEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRGYXN0Rmlyc3REaXNwbGF5TW9k
ZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEwOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpTZXRGYXN0Rmlyc3REaXNwbGF5TW9kZShpbnQpDQotCT9TZXRGaXhlZEZvbnRGYW1pbHlA
Q1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVTZXR0aW5nczo6U2V0Rml4ZWRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3Qg
JikNCi0JP1NldEZvbnRTaXplTGV2ZWxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMTAgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0Rm9udFNpemVMZXZlbChpbnQpDQotCT9TZXRG
b3JtQ29udHJvbFRleHRCeU5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEAwQFog
QCAxMTEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0Rm9ybUNvbnRyb2xUZXh0QnlO
YW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0
SGlzdG9yeVByb3ZpZGVyQFRXZWJDb3JlSGlzdG9yeUBAU0FYUEFWTVdlYkNvcmVIaXN0b3J5UHJv
dmlkZXJAQEBaIEAgMTEyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVIaXN0b3J5OjpTZXRIaXN0b3J5
UHJvdmlkZXIoY2xhc3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgKikNCi0JP1NldEphdmFFbmFi
bGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTMgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZVNldHRpbmdzOjpTZXRKYXZhRW5hYmxlZChpbnQpDQotCT9TZXRKYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTQgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRv
bWF0aWNhbGx5KGludCkNCi0JP1NldEphdmFTY3JpcHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NA
QFFBRVhIQFogQCAxMTUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2Ny
aXB0RW5hYmxlZChpbnQpDQotCT9TZXRNYXhCaWRpV2lkdGhAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhI
QFogQCAxMTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TWF4QmlkaVdpZHRoKGlu
dCkNCi0JP1NldE1pbmltdW1Gb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE3
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0TWluaW11bUZvbnRTaXplKGludCkN
Ci0JP1NldE1pbmltdW1Mb2dpY2FsRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDExOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Mb2dpY2FsRm9u
dFNpemUoaW50KQ0KLQk/U2V0TmFtZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEBa
IEAgMTE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE5hbWUoY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KLQk/U2V0TmVlZHNMYXlvdXRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDEy
MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROZWVkc0xheW91dCh2b2lkKQ0KLQk/
U2V0UGFyZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWMUBAWiBAIDEyMSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpTZXRQYXJlbnQoY2xhc3MgQ1dlYkNvcmVCcmlkZ2UgKikNCi0JP1Nl
dFBsdWdpbnNFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMjIgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRQbHVnaW5zRW5hYmxlZChpbnQpDQotCT9TZXRSZW5k
ZXJQYXJ0QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWUmVuZGVyUGFydEBraHRtbEBAQFogQCAxMjMg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UmVuZGVyUGFydChjbGFzcyBraHRtbDo6
UmVuZGVyUGFydCAqKQ0KLQk/U2V0U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdz
OjpTZXRTYW5zU2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFNh
dmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTI1IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2F2ZVJhd0RhdGFFbmFibGVkKGludCkNCi0JP1Nl
dFNlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAx
MjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTZXJpZkZvbnRGYW1pbHkoY2xh
c3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3Jl
QnJpZGdlQEBRQUVYSEBaIEAgMTI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFNo
b3VsZENyZWF0ZVJlbmRlcmVycyhpbnQpDQotCT9TZXRTaG91bGRQcmludEJhY2tncm91bmRzQENX
ZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRp
bmdzOjpTZXRTaG91bGRQcmludEJhY2tncm91bmRzKGludCkNCi0JP1NldFN0YW5kYXJkRm9udEZh
bWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjkgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTdGFuZGFyZEZvbnRGYW1pbHkoY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KLQk/U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMzAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdz
OjpTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1Nl
dFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNB
WFBBVk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBAWiBAIDEzMSBOT05BTUUgOyB2b2lkIFRX
ZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpTZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5KGNs
YXNzIE1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5ICopDQotCT9TZXRXZWJDb3JlSW1hZ2VSZW5k
ZXJlckZhY3RvcnlAVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVJ
bWFnZVJlbmRlcmVyRmFjdG9yeUBAQFogQCAxMzIgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUltYWdl
UmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkoY2xhc3MgTVdl
YkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqKQ0KLQk/U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5l
ckBUV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FYUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJA
QEBaIEAgMTMzIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVMb2FkZXJDb250YWluZXI6OlNldFdlYkNv
cmVMb2FkZXJDb250YWluZXIoY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKikNCi0JP1Nl
dFdlYkNvcmVQbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FYUEFWTVdlYkNv
cmVQbHVnaW5IYW5kbGVyQEBAWiBAIDEzNCBOT05BTUUgOyB2b2lkIFRXZWJDb3JlUGx1Z2luSGFu
ZGxlcjo6U2V0V2ViQ29yZVBsdWdpbkhhbmRsZXIoY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5kbGVy
ICopDQotCT9TZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBUV2ViQ29yZVRleHRSZW5kZXJl
ckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAQFogQCAxMzUgTk9O
QU1FIDsgdm9pZCBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6OlNldFdlYkNvcmVUZXh0UmVu
ZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSAqKQ0KLQk/U2V0
V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAx
MzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRXaWxsTG9hZEltYWdlc0F1dG9t
YXRpY2FsbHkoaW50KQ0KLQk/U2hvdWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBR
QUVIWFogQCAxMzcgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTaG91bGRDcmVhdGVSZW5k
ZXJlcnModm9pZCkNCi0JP1Nob3VsZFByaW50QmFja2dyb3VuZHNAQ1dlYkNvcmVTZXR0aW5nc0BA
UUJFSFhaIEAgMTM4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpTaG91bGRQcmludEJh
Y2tncm91bmRzKHZvaWQpIGNvbnN0DQotCT9TaG93aW5nRmFzdFByZXZpZXdAQ1dlYkNvcmVCcmlk
Z2VAQFFCRUhYWiBAIDEzOSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlNob3dpbmdGYXN0
UHJldmlldyh2b2lkKSBjb25zdA0KLQk/U3RhbmRhcmRGb250RmFtaWx5QENXZWJDb3JlU2V0dGlu
Z3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQwIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNv
cmVTZXR0aW5nczo6U3RhbmRhcmRGb250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9UYWJiZWROYXZp
Z2F0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVIVzRUV2ViTmF2RGlyZWN0aW9uQEBBQVc0VFdlYkNv
cmVGb2N1c2VkRWxlbWVudFR5cGVAQEhAWiBAIDE0MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6OlRhYmJlZE5hdmlnYXRpb24oZW51bSBUV2ViTmF2RGlyZWN0aW9uLCBlbnVtIFRXZWJDb3Jl
Rm9jdXNlZEVsZW1lbnRUeXBlICYsIGludCkNCi0JP1RleHRFbmNvZGluZ0BDV2ViQ29yZUJyaWRn
ZUBAUUJFSVhaIEAgMTQyIE5PTkFNRSA7IHVuc2lnbmVkIGludCBDV2ViQ29yZUJyaWRnZTo6VGV4
dEVuY29kaW5nKHZvaWQpIGNvbnN0DQotCT9VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJD
MTZAQFhaIEAgMTQzIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OlVSTCh2
b2lkKSBjb25zdA0KLQk/VVJMV2l0aFJlbGF0aXZlU3RyaW5nQENXZWJDb3JlQnJpZGdlQEBRQUVQ
QVZIQnVmQzE2QEBBQlZURGVzQzE2QEBAWiBAIDE0NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICog
Q1dlYkNvcmVCcmlkZ2U6OlVSTFdpdGhSZWxhdGl2ZVN0cmluZyhjbGFzcyBURGVzQzE2IGNvbnN0
ICYpDQotCT9VcGRhdGVBbGxWaWV3c0BDV2ViQ29yZUJyaWRnZUBAU0FYWFogQCAxNDUgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6VXBkYXRlQWxsVmlld3Modm9pZCkNCi0JP1VybEBUV2Vi
Q29yZUltYWdlQ2FycmllckBAUUFFQUFWVFB0ckMxNkBAWFogQCAxNDYgTk9OQU1FIDsgY2xhc3Mg
VFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpVcmwodm9pZCkNCi0JP1VzZXJTdHlsZVNo
ZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAxNDcgTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpVc2VyU3R5bGVTaGVldExvY2F0
aW9uKHZvaWQpIGNvbnN0DQotCT9XaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUJFSFhaIEAgMTQ4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpXaWxs
TG9hZEltYWdlc0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCi0JP2hhc093blByb3BlcnR5QE9i
amVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTQ5IE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/aGFzUHJvcGVy
dHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCAx
NTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVj
U3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9tYXJrZWRA
VmFsdWVJbXBAS0pTQEBRQkVfTlhaIEAgMTUxIE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6
bWFya2VkKHZvaWQpIGNvbnN0DQotCT9jbGFzc0luZm9AT2JqZWN0QEtKU0BAUUJFUEJVQ2xhc3NJ
bmZvQDJAWFogQCAxNTIgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pT
OjpPYmplY3Q6OmNsYXNzSW5mbyh2b2lkKSBjb25zdA0KLQk/aGFzT3duUHJvcGVydHlAT2JqZWN0
QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCAxNTMgTk9OQU1FIDsgYm9vbCBLSlM6Ok9i
amVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50
KSBjb25zdA0KLQk/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJ
QFogQCAxNTQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KLQk/cHJvcExpc3RAT2JqZWN0QEtK
U0BAUUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBBVkV4ZWNTdGF0ZUAyQF9OQFogQCAxNTUgTk9OQU1F
IDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0Ojpwcm9wTGlzdChjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KLQk/R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtz
TEBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFB0ckMxNkBAQUFIQFogQCAxNTYgTk9OQU1FIDsgY2xh
c3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtz
TChpbnQgJikNCi0JP0dldFJlbmRlclRleHRBcmVhQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERl
c0MxNkBAQUFWPyRSQXJyYXlAVlRSZWN0QEBAQEBaIEAgMTU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3Mg
UkFycmF5PGNsYXNzIFRSZWN0PiAmKQ0KKyAgICA/PzFDV2ViQ29yZVNldHRpbmdzQEBVQUVAWFog
QCAxIE5PTkFNRSA7IENXZWJDb3JlU2V0dGluZ3M6On5DV2ViQ29yZVNldHRpbmdzKHZvaWQpDQor
ICAgID9BY3RpdmF0ZUFjY2Vzc0tleXNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhVVEtleUV2ZW50QEBA
WiBAIDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0aXZhdGVBY2Nlc3NLZXlzKHN0
cnVjdCBUS2V5RXZlbnQpDQorICAgID9BY3RpdmF0ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVY
QUFWVFBvaW50QEBAWiBAIDMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0aXZhdGVF
dmVudChjbGFzcyBUUG9pbnQgJikNCisgICAgP0FkZERhdGFAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhB
QlZURGVzQzhAQEBaIEAgNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpBZGREYXRhKGNs
YXNzIFREZXNDOCBjb25zdCAmKQ0KKyAgICA/QWRkSXRlbVRvQ2FjaGVMQFRXZWJDb3JlQ2FjaGVA
QFNBWEFBVk1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvQEBBQVZURGVzQzhAQEhAWiBAIDUg
Tk9OQU1FIDsgdm9pZCBUV2ViQ29yZUNhY2hlOjpBZGRJdGVtVG9DYWNoZUwoY2xhc3MgTVdlYkNv
cmVVcmxSZXNwb25zZUhlYWRlckluZm8gJiwgY2xhc3MgVERlc0M4ICYsIGludCkNCisgICAgP0Fk
ZFRvQ29udGFjdHNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgNiBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpBZGRUb0NvbnRhY3RzKGNsYXNzIFRQb2ludCAmKQ0KKyAg
ICA/QWRqdXN0Vmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDcgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6QWRqdXN0Vmlld1NpemUodm9pZCkNCisgICAgP0FsdFRleHRAVFdl
YkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgOCBOT05BTUUgOyBjbGFzcyBU
UHRyQzE2ICYgVFdlYkNvcmVJbWFnZUNhcnJpZXI6OkFsdFRleHQodm9pZCkNCisgICAgP0F1dG9S
ZWZyZXNoRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA5IE5PTkFNRSA7IGludCBD
V2ViQ29yZVNldHRpbmdzOjpBdXRvUmVmcmVzaEVuYWJsZWQodm9pZCkgY29uc3QNCisgICAgP0Jv
ZHlCYWNrZ3JvdW5kQ29sb3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRSZ2JAQFhaIEAgMTAgTk9O
QU1FIDsgY2xhc3MgVFJnYiBDV2ViQ29yZUJyaWRnZTo6Qm9keUJhY2tncm91bmRDb2xvcih2b2lk
KQ0KKyAgICA/Q2FuQ2FjaGVQYWdlQENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMSBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkNhbkNhY2hlUGFnZSh2b2lkKSBjb25zdA0KKyAgICA/Q2xl
YXJGaW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxMiBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpDbGVhckZpbmQodm9pZCkNCisgICAgP0NsaWVudEBDV2ViQ29yZUJyaWRnZUBAUUFF
QUFWTVdlYkNsaWVudEJyaWRnZUBAWFogQCAxMyBOT05BTUUgOyBjbGFzcyBNV2ViQ2xpZW50QnJp
ZGdlICYgQ1dlYkNvcmVCcmlkZ2U6OkNsaWVudCh2b2lkKQ0KKyAgICA/Q2xvc2VVUkxAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhYWiBAIDE0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNsb3Nl
VVJMKHZvaWQpDQorICAgID9Db29raWVBZGFwdGVyQFRXZWJDb3JlQ29va2llRmFjdG9yeUBAU0FQ
QVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQFhaIEAgMTUgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVD
b29raWVBZGFwdGVyICogVFdlYkNvcmVDb29raWVGYWN0b3J5OjpDb29raWVBZGFwdGVyKHZvaWQp
DQorICAgID9DcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFC
VlREZXNDMTZAQEhAWiBAIDE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZURv
Y3VtZW50V2l0aEVuY29kaW5nKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50KQ0KKyAgICA/Q3Jl
YXRlS0hUTUxWaWV3QENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBI
SEBaIEAgMTcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q3JlYXRlS0hUTUxWaWV3KGNs
YXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmLCBpbnQsIGludCkNCisgICAgP0N1cnNpdmVGb250RmFt
aWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTggTk9OQU1FIDsgY2xh
c3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpDdXJzaXZlRm9udEZhbWlseSh2b2lkKSBjb25z
dA0KKyAgICA/RGVBY3RpdmF0ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTkgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RGVBY3RpdmF0ZUV2ZW50KGludCkNCisgICAgP0Rl
ZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDIwIE5PTkFNRSA7
IGludCBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0Rml4ZWRGb250U2l6ZSh2b2lkKSBjb25zdA0K
KyAgICA/RGVmYXVsdEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDIxIE5PTkFN
RSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0Rm9udFNpemUodm9pZCkgY29uc3QNCisg
ICAgP0RlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBA
WFogQCAyMiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkRlZmF1bHRU
ZXh0RW5jb2Rpbmcodm9pZCkgY29uc3QNCisgICAgP0RlZmVyc1RpbWVyc0BDV2ViQ29yZUJyaWRn
ZUBAU0FIWFogQCAyMyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkRlZmVyc1RpbWVycyh2
b2lkKQ0KKyAgICA/RGV0ZXJtaW5lQ3Vyc29yUG9zaXRpb25AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhB
QVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEFBVlRSZWN0QEAxQUFWVFBvaW50QEBIQFog
QCAyNCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkRldGVybWluZUN1cnNvclBvc2l0aW9u
KGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJiwgY2xhc3Mg
VFJlY3QgJiwgY2xhc3MgVFBvaW50ICYsIGludCkNCisgICAgP0RpZE5vdE9wZW5VUkxAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OkRpZE5vdE9wZW5VUkwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/RG9tYWlu
QENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDI2IE5PTkFNRSA7IGNsYXNzIFRQ
dHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkRvbWFpbih2b2lkKSBjb25zdA0KKyAgICA/RHJhd1JlY3RA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZUUmVjdEBAQUFWQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRA
QEBaIEAgMjcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RHJhd1JlY3QoY2xhc3MgVFJl
Y3QgY29uc3QgJiwgY2xhc3MgQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgJikNCisgICAgP0R1bXBS
ZW5kZXJUcmVlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAyOCBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpEdW1wUmVuZGVyVHJlZSh2b2lkKQ0KKyAgICA/RW5kQENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCAyOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFbmQodm9pZCkNCisg
ICAgP0V4ZWN1dGVTY3JpcHRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDMw
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkV4ZWN1dGVTY3JpcHQoY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAU0FQ
QVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAWFogQCAzMSBOT05BTUUgOyBjbGFzcyBNV2Vi
Q29yZUZvcm1Db250cm9sRmFjdG9yeSAqIFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpGYWN0
b3J5KHZvaWQpDQorICAgID9GYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNB
UEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMiBOT05BTUUgOyBjbGFzcyBN
V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5ICogVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9y
eTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rv
cnlAQFNBUEFWTVdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBYWiBAIDMzIE5PTkFNRSA7IGNs
YXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlVGV4dFJlbmRlcmVyRmFj
dG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0
aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAzNCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJD
b3JlU2V0dGluZ3M6OkZhbnRhc3lGb250RmFtaWx5KHZvaWQpIGNvbnN0DQorICAgID9GYXN0Rmly
c3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgMzUgTk9OQU1FIDsgaW50IENX
ZWJDb3JlQnJpZGdlOjpGYXN0Rmlyc3REaXNwbGF5TW9kZSh2b2lkKSBjb25zdA0KKyAgICA/Rmlu
ZExpbmtzT2ZUeXBlQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlA
VVRXZWJDb3JlTGlua0l0ZW1AQEBAQFogQCAzNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpGaW5kTGlua3NPZlR5cGUoY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBSQXJyYXk8c3Ry
dWN0IFRXZWJDb3JlTGlua0l0ZW0+ICYpDQorICAgID9GaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAzNyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENX
ZWJDb3JlU2V0dGluZ3M6OkZpeGVkRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/Rm9yY2VM
YXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDM4IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemUoaW50
KQ0KKyAgICA/R2V0UGFnZURhdGFMQENXZWJDb3JlQnJpZGdlQEBRQUVQQVY/JENBcnJheVB0ckBW
Q1dlYkNvcmVQYWdlRGF0YUl0ZW1AQEBASEBaIEAgMzkgTk9OQU1FIDsgY2xhc3MgQ0FycmF5UHRy
PGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVtPiAqIENXZWJDb3JlQnJpZGdlOjpHZXRQYWdlRGF0
YUwoaW50KQ0KKyAgICA/R2V0VGV4dENvbnRlbnRMQENXZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVm
QzE2QEBYWiBAIDQwIE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0
VGV4dENvbnRlbnRMKHZvaWQpDQorICAgID9HZXRVcmxPZk5vZGVJbkZvY3VzTEBDV2ViQ29yZUJy
aWRnZUBAUUJFUEFWSEJ1ZkMxNkBAQUFWVFBvaW50QEBAWiBAIDQxIE5PTkFNRSA7IGNsYXNzIEhC
dWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0VXJsT2ZOb2RlSW5Gb2N1c0woY2xhc3MgVFBvaW50
ICYpIGNvbnN0DQorICAgID9IYXNQZW5kaW5nTGF5b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFog
QCA0MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Okhhc1BlbmRpbmdMYXlvdXQodm9pZCkg
Y29uc3QNCisgICAgP0hpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBUEFWTVdlYkNv
cmVIaXN0b3J5UHJvdmlkZXJAQFhaIEAgNDMgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVIaXN0b3J5
UHJvdmlkZXIgKiBUV2ViQ29yZUhpc3Rvcnk6Okhpc3RvcnlQcm92aWRlcih2b2lkKQ0KKyAgICA/
SW1hZ2VDb3VudEBDV2ViQ29yZUJyaWRnZUBAUUFFSEhAWiBAIDQ0IE5PTkFNRSA7IGludCBDV2Vi
Q29yZUJyaWRnZTo6SW1hZ2VDb3VudChpbnQpDQorICAgID9JbWFnZVR5cGVAVFdlYkNvcmVJbWFn
ZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgNDUgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAm
IFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpJbWFnZVR5cGUodm9pZCkNCisgICAgP0ltYWdlc0luUmVj
dEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlGaXhGbGF0QFZUV2ViQ29yZUltYWdlQ2Fy
cmllckBAQEBIQFogQCA0NiBOT05BTUUgOyBjbGFzcyBDQXJyYXlGaXhGbGF0PGNsYXNzIFRXZWJD
b3JlSW1hZ2VDYXJyaWVyPiAqIENXZWJDb3JlQnJpZGdlOjpJbWFnZXNJblJlY3QoaW50KQ0KKyAg
ICA/SW5pdGlhbGl6ZVNldHRpbmdzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWQ1dlYkNvcmVTZXR0
aW5nc0BAQFogQCA0NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpJbml0aWFsaXplU2V0
dGluZ3MoY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyBjb25zdCAmKQ0KKyAgICA/SW5zdGFsbEluRnJh
bWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZNV2ViQ29yZVNjcm9sbFZpZXdAQEBaIEAgNDggTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5zdGFsbEluRnJhbWUoY2xhc3MgTVdlYkNvcmVT
Y3JvbGxWaWV3ICYpDQorICAgID9Jc0ZyYW1lU2V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA0
OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OklzRnJhbWVTZXQodm9pZCkgY29uc3QNCisg
ICAgP0phdmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUwIE5PTkFNRSA7IGlu
dCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhRW5hYmxlZCh2b2lkKSBjb25zdA0KKyAgICA/SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFog
QCA1MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseSh2b2lkKSBjb25zdA0KKyAgICA/SmF2YVNjcmlwdEVuYWJsZWRAQ1dl
YkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTIgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6
OkphdmFTY3JpcHRFbmFibGVkKHZvaWQpIGNvbnN0DQorICAgID9KdW1wVG9TZWxlY3Rpb25AQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDUzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okp1
bXBUb1NlbGVjdGlvbih2b2lkKQ0KKyAgICA/S2V5RXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhV
VEtleUV2ZW50QEBIQFogQCA1NCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OktleUV2ZW50
KHN0cnVjdCBUS2V5RXZlbnQsIGludCkNCisgICAgP0xvYWRJbWFnZXNAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhYWiBAIDU1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkxvYWRJbWFnZXModm9p
ZCkNCisgICAgP0xvYWRlckNvbnRhaW5lckBUV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FQQVZN
V2ViQ29yZUxvYWRlckNvbnRhaW5lckBAWFogQCA1NiBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUxv
YWRlckNvbnRhaW5lciAqIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpMb2FkZXJDb250YWluZXIo
dm9pZCkNCisgICAgP01pbmltdW1Gb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1
NyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6TWluaW11bUZvbnRTaXplKHZvaWQpIGNv
bnN0DQorICAgID9NaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhY
WiBAIDU4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpNaW5pbXVtTG9naWNhbEZvbnRT
aXplKHZvaWQpIGNvbnN0DQorICAgID9OYW1lQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2
QEBYWiBAIDU5IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6Ok5hbWUodm9p
ZCkgY29uc3QNCisgICAgP05hdmlnYWJsZU5vZGVVbmRlckN1cnNvckBDV2ViQ29yZUJyaWRnZUBA
UUJFSEFBVlRQb2ludEBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBA
QFogQCA2MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5hdmlnYWJsZU5vZGVVbmRlckN1
cnNvcihjbGFzcyBUUG9pbnQgJiwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBj
bGFzcyBUUmVjdCAmKSBjb25zdA0KKyAgICA/TmVlZHNMYXlvdXRAQ1dlYkNvcmVCcmlkZ2VAQFFC
RUhYWiBAIDYxIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6TmVlZHNMYXlvdXQodm9pZCkg
Y29uc3QNCisgICAgP05ld0xAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWMUBBQVZNV2ViQ2xpZW50QnJp
ZGdlQEBAWiBAIDYyIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlQnJpZGdlICogQ1dlYkNvcmVCcmlk
Z2U6Ok5ld0woY2xhc3MgTVdlYkNsaWVudEJyaWRnZSAmKQ0KKyAgICA/TmV3TEBDV2ViQ29yZUdy
YXBoaWNzQ29udGV4dEBAU0FQQVYxQEFBVkNGYnNCaXRHY0BAUEFWQ0Zic0JpdG1hcEBAUEFWTVdl
YkNvcmVTY3JvbGxWaWV3QEBAWiBAIDYzIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhpY3ND
b250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdEdjICYs
IGNsYXNzIENGYnNCaXRtYXAgKiwgY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3ICopDQorICAgID9O
ZXdMQENXZWJDb3JlR3JhcGhpY3NDb250ZXh0QEBTQVBBVjFAUEFWQ0Zic0JpdG1hcERldmljZUBA
UEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDY0IE5PTkFNRSA7IGNs
YXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5l
d0woY2xhc3MgQ0Zic0JpdG1hcERldmljZSAqLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1X
ZWJDb3JlU2Nyb2xsVmlldyAqKQ0KKyAgICA/TmV3TEBDV2ViQ29yZVNldHRpbmdzQEBTQVBBVjFA
WFogQCA2NSBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZVNldHRpbmdzICogQ1dlYkNvcmVTZXR0aW5n
czo6TmV3TCh2b2lkKQ0KKyAgICA/Tm90aWZ5RGVjb2RpbmdFcnJvckBDV2ViQ29yZUltYWdlQ2Fs
bGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxs
YmFja1dyYXBwZXI6Ok5vdGlmeURlY29kaW5nRXJyb3Iodm9pZCkNCisgICAgP05vdGlmeUZpbmlz
aGVkQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFBRVhYWiBAIDY3IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6Tm90aWZ5RmluaXNoZWQodm9pZCkNCisg
ICAgP05vdGlmeVVwZGF0ZUBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2
OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeVVwZGF0
ZSh2b2lkKQ0KKyAgICA/TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzQENXZWJDb3JlQnJpZGdl
QEBRQUVIWFogQCA2OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok51bVBlbmRpbmdPckxv
YWRpbmdSZXF1ZXN0cyh2b2lkKQ0KKyAgICA/T3BlblVSTEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFC
VlREZXNDMTZAQEgwMEFCVlREYXRlVGltZUBAQFogQCA3MCBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBjbGFzcyBURGVzQzE2
IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERhdGVUaW1lIGNvbnN0ICYp
DQorICAgID9QbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FQQVZNV2ViQ29y
ZVBsdWdpbkhhbmRsZXJAQFhaIEAgNzEgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5k
bGVyICogVFdlYkNvcmVQbHVnaW5IYW5kbGVyOjpQbHVnaW5IYW5kbGVyKHZvaWQpDQorICAgID9Q
bHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA3MiBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQodm9pZCkgY29uc3QNCisgICAgP1BvaW50
ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFVUUG9pbnRlckV2ZW50QEBAWiBAIDczIE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVudChzdHJ1Y3QgVFBvaW50ZXJFdmVu
dCkNCisgICAgP1BvaW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFc0VFR5cGVAVFBvaW50
ZXJFdmVudEBAQUJWVFBvaW50QEBAWiBAIDc0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlBvaW50ZXJFdmVudChlbnVtIFRQb2ludGVyRXZlbnQ6OlRUeXBlLCBjbGFzcyBUUG9pbnQgY29u
c3QgJikNCisgICAgP1ByZXBhcmVGb3JFeGl0QENXZWJDb3JlQnJpZGdlQEBTQVhYWiBAIDc1IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlByZXBhcmVGb3JFeGl0KHZvaWQpDQorICAgID9Q
cm92aXNpb25hbExvYWRTdGFydGVkQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA3NiBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcm92aXNpb25hbExvYWRTdGFydGVkKHZvaWQpDQorICAg
ID9SYXdEYXRhQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzhAQFhaIEAgNzcgTk9O
QU1FIDsgY2xhc3MgVFB0ckM4ICYgVFdlYkNvcmVJbWFnZUNhcnJpZXI6OlJhd0RhdGEodm9pZCkN
CisgICAgP1JlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlQENXZWJDb3JlQnJpZGdlQEBRQUVYVzRU
V2ViQ29yZURldmljZVR5cGVAQEBaIEAgNzggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGUoZW51bSBUV2ViQ29yZURldmljZVR5cGUpDQorICAg
ID9SZWZlcnJlckBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA3OSBOT05BTUUg
OyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpSZWZlcnJlcih2b2lkKSBjb25zdA0KKyAg
ICA/UmVtb3ZlRmlsZU5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgODAg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UmVtb3ZlRmlsZU5hbWUoY2xhc3MgVFBvaW50
ICYpDQorICAgID9SZW1vdmVGcm9tRnJhbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDgxIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92ZUZyb21GcmFtZSh2b2lkKQ0KKyAgICA/
UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWMGtodG1sQEBYWiBAIDgyIE5PTkFNRSA7
IGNsYXNzIGtodG1sOjpSZW5kZXJQYXJ0ICogQ1dlYkNvcmVCcmlkZ2U6OlJlbmRlclBhcnQodm9p
ZCkgY29uc3QNCisgICAgP1JlbmRlcmVyQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVQQVZNV2Vi
Q29yZUltYWdlUmVuZGVyZXJAQFhaIEAgODMgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJl
bmRlcmVyICogVFdlYkNvcmVJbWFnZUNhcnJpZXI6OlJlbmRlcmVyKHZvaWQpDQorICAgID9SZXNv
bHZlVXJsTEBDV2ViQ29yZUJyaWRnZUBAU0FQQVZIQnVmQzE2QEBBQlZURGVzQzE2QEAwQFogQCA4
NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OlJlc29sdmVVcmxMKGNs
YXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/UmVzdG9y
ZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDg1IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OlJlc3RvcmVEb2N1bWVudFN0YXRlKHZvaWQpDQorICAgID9TYW5zU2Vy
aWZGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgODYgTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpTYW5zU2VyaWZGb250RmFtaWx5
KHZvaWQpIGNvbnN0DQorICAgID9TYXZlRG9jdW1lbnRTdGF0ZUBDV2ViQ29yZUJyaWRnZUBAUUFF
WFhaIEAgODcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2F2ZURvY3VtZW50U3RhdGUo
dm9pZCkNCisgICAgP1NhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFog
QCA4OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2F2ZVJhd0RhdGFFbmFibGVkKHZv
aWQpIGNvbnN0DQorICAgID9TY2FsaW5nRmFjdG9yQ2hhbmdlZEBDV2ViQ29yZUJyaWRnZUBAUUFF
WEhAWiBAIDg5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNjYWxpbmdGYWN0b3JDaGFu
Z2VkKGludCkNCisgICAgP1Njcm9sbFRvQW5jaG9yQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERl
c0MxNkBAQFogQCA5MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hv
cihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TY3JvbGxUb0FuY2hvcldpdGhVUkxAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDkxIE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OlNjcm9sbFRvQW5jaG9yV2l0aFVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQor
ICAgID9TZWFyY2hBZ2FpbkBDV2ViQ29yZUJyaWRnZUBAUUFFSEFCVlREZXNDMTZAQEhISEBaIEAg
OTIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTZWFyY2hBZ2FpbihjbGFzcyBURGVzQzE2
IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQorICAgID9TZWFyY2hGb3JAQ1dlYkNvcmVCcmlkZ2VA
QFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkzIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6
U2VhcmNoRm9yKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBpbnQsIGludCkNCisgICAgP1Nl
bGVjdGlvbkNvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdiQEBYWiBAIDk0IE5PTkFNRSA7
IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OlNlbGVjdGlvbkNvbG9yKHZvaWQpDQorICAgID9T
ZW5kUmVzaXplRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDk1IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OlNlbmRSZXNpemVFdmVudCh2b2lkKQ0KKyAgICA/U2VuZFNjcm9sbEV2
ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA5NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpTZW5kU2Nyb2xsRXZlbnQodm9pZCkNCisgICAgP1NlcmlmRm9udEZhbWlseUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDk3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYg
Q1dlYkNvcmVTZXR0aW5nczo6U2VyaWZGb250RmFtaWx5KHZvaWQpIGNvbnN0DQorICAgID9TZXRB
dXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDk4IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0QXV0b1JlZnJlc2hFbmFibGVkKGludCkNCisgICAg
P1NldENhbGxiYWNrQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFBRVhQQVZDYWNoZWRJ
bWFnZUNhbGxiYWNrQGtodG1sQEBAWiBAIDk5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNh
bGxiYWNrV3JhcHBlcjo6U2V0Q2FsbGJhY2soY2xhc3Mga2h0bWw6OkNhY2hlZEltYWdlQ2FsbGJh
Y2sgKikNCisgICAgP1NldENvb2tpZUFkYXB0ZXJAVFdlYkNvcmVDb29raWVGYWN0b3J5QEBTQVhQ
QVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQEBaIEAgMTAwIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVD
b29raWVGYWN0b3J5OjpTZXRDb29raWVBZGFwdGVyKGNsYXNzIE1XZWJDb3JlQ29va2llQWRhcHRl
ciAqKQ0KKyAgICA/U2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFC
VlREZXNDMTZAQEBaIEAgMTAxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0Q3Vy
c2l2ZUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0RGVmYXVsdEZp
eGVkRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEwMiBOT05BTUUgOyB2b2lk
IENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGaXhlZEZvbnRTaXplKGludCkNCisgICAgP1Nl
dERlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTAzIE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVmYXVsdEZvbnRTaXplKGludCkNCisgICAgP1Nl
dERlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBa
IEAgMTA0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVmYXVsdFRleHRFbmNv
ZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXREZWZlcnNUaW1lcnNAQ1dlYkNv
cmVCcmlkZ2VAQFNBWEhAWiBAIDEwNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRE
ZWZlcnNUaW1lcnMoaW50KQ0KKyAgICA/U2V0RHJhd3NCYWNrZ3JvdW5kQENXZWJDb3JlQnJpZGdl
QEBRQUVYSEBaIEAgMTA2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldERyYXdzQmFj
a2dyb3VuZChpbnQpDQorICAgID9TZXRGYW50YXN5Rm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdz
OjpTZXRGYW50YXN5Rm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRG
YXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEwOCBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRGYXN0Rmlyc3REaXNwbGF5TW9kZShpbnQpDQorICAg
ID9TZXRGaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBa
IEAgMTA5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0Rml4ZWRGb250RmFtaWx5
KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldEZvbnRTaXplTGV2ZWxAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhIQFogQCAxMTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0Rm9u
dFNpemVMZXZlbChpbnQpDQorICAgID9TZXRGb3JtQ29udHJvbFRleHRCeU5hbWVAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhBQlZURGVzQzE2QEAwQFogQCAxMTEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJy
aWRnZTo6U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xh
c3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0SGlzdG9yeVByb3ZpZGVyQFRXZWJDb3JlSGlz
dG9yeUBAU0FYUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQEBaIEAgMTEyIE5PTkFNRSA7IHZv
aWQgVFdlYkNvcmVIaXN0b3J5OjpTZXRIaXN0b3J5UHJvdmlkZXIoY2xhc3MgTVdlYkNvcmVIaXN0
b3J5UHJvdmlkZXIgKikNCisgICAgP1NldEphdmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhIQFogQCAxMTMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhRW5hYmxl
ZChpbnQpDQorICAgID9TZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5QENX
ZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRp
bmdzOjpTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGludCkNCisgICAg
P1NldEphdmFTY3JpcHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTUgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2NyaXB0RW5hYmxlZChpbnQpDQor
ICAgID9TZXRNYXhCaWRpV2lkdGhAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMTYgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TWF4QmlkaVdpZHRoKGludCkNCisgICAgP1NldE1p
bmltdW1Gb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE3IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0TWluaW11bUZvbnRTaXplKGludCkNCisgICAgP1NldE1p
bmltdW1Mb2dpY2FsRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDExOCBOT05B
TUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoaW50
KQ0KKyAgICA/U2V0TmFtZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTE5
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE5hbWUoY2xhc3MgVERlc0MxNiBjb25z
dCAmKQ0KKyAgICA/U2V0TmVlZHNMYXlvdXRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDEyMCBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROZWVkc0xheW91dCh2b2lkKQ0KKyAgICA/
U2V0UGFyZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWMUBAWiBAIDEyMSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpTZXRQYXJlbnQoY2xhc3MgQ1dlYkNvcmVCcmlkZ2UgKikNCisgICAg
P1NldFBsdWdpbnNFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMjIgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRQbHVnaW5zRW5hYmxlZChpbnQpDQorICAgID9T
ZXRSZW5kZXJQYXJ0QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWUmVuZGVyUGFydEBraHRtbEBAQFog
QCAxMjMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UmVuZGVyUGFydChjbGFzcyBr
aHRtbDo6UmVuZGVyUGFydCAqKQ0KKyAgICA/U2V0U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29y
ZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjQgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZVNldHRpbmdzOjpTZXRTYW5zU2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikN
CisgICAgP1NldFNhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAg
MTI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2F2ZVJhd0RhdGFFbmFibGVk
KGludCkNCisgICAgP1NldFNlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJW
VERlc0MxNkBAQFogQCAxMjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTZXJp
ZkZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0U2hvdWxkQ3JlYXRl
UmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTI3IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OlNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhpbnQpDQorICAgID9TZXRTaG91
bGRQcmludEJhY2tncm91bmRzQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMjggTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTaG91bGRQcmludEJhY2tncm91bmRzKGludCkN
CisgICAgP1NldFN0YW5kYXJkRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERl
c0MxNkBAQFogQCAxMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbkBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMzAgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlA
VFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0
b3J5QEBAWiBAIDEzMSBOT05BTUUgOyB2b2lkIFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpT
ZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5KGNsYXNzIE1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0
b3J5ICopDQorICAgID9TZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVJbWFn
ZVJlbmRlcmVyRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAQFog
QCAxMzIgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJD
b3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkoY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9y
eSAqKQ0KKyAgICA/U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5lckBUV2ViQ29yZUxvYWRlckNvbnRh
aW5lckBAU0FYUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJAQEBaIEAgMTMzIE5PTkFNRSA7IHZv
aWQgVFdlYkNvcmVMb2FkZXJDb250YWluZXI6OlNldFdlYkNvcmVMb2FkZXJDb250YWluZXIoY2xh
c3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKikNCisgICAgP1NldFdlYkNvcmVQbHVnaW5IYW5k
bGVyQFRXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FYUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBA
WiBAIDEzNCBOT05BTUUgOyB2b2lkIFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6U2V0V2ViQ29yZVBs
dWdpbkhhbmRsZXIoY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5kbGVyICopDQorICAgID9TZXRXZWJD
b3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQFNBWFBB
Vk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAQFogQCAxMzUgTk9OQU1FIDsgdm9pZCBUV2Vi
Q29yZVRleHRSZW5kZXJlckZhY3Rvcnk6OlNldFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5KGNs
YXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSAqKQ0KKyAgICA/U2V0V2lsbExvYWRJbWFn
ZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMzYgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkoaW50
KQ0KKyAgICA/U2hvdWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCAx
MzcgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTaG91bGRDcmVhdGVSZW5kZXJlcnModm9p
ZCkNCisgICAgP1Nob3VsZFByaW50QmFja2dyb3VuZHNAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFha
IEAgMTM4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpTaG91bGRQcmludEJhY2tncm91
bmRzKHZvaWQpIGNvbnN0DQorICAgID9TaG93aW5nRmFzdFByZXZpZXdAQ1dlYkNvcmVCcmlkZ2VA
QFFCRUhYWiBAIDEzOSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlNob3dpbmdGYXN0UHJl
dmlldyh2b2lkKSBjb25zdA0KKyAgICA/U3RhbmRhcmRGb250RmFtaWx5QENXZWJDb3JlU2V0dGlu
Z3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQwIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNv
cmVTZXR0aW5nczo6U3RhbmRhcmRGb250RmFtaWx5KHZvaWQpIGNvbnN0DQorICAgID9UYWJiZWRO
YXZpZ2F0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVIVzRUV2ViTmF2RGlyZWN0aW9uQEBBQVc0VFdl
YkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEhAWiBAIDE0MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVC
cmlkZ2U6OlRhYmJlZE5hdmlnYXRpb24oZW51bSBUV2ViTmF2RGlyZWN0aW9uLCBlbnVtIFRXZWJD
b3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGludCkNCisgICAgP1RleHRFbmNvZGluZ0BDV2ViQ29y
ZUJyaWRnZUBAUUJFSVhaIEAgMTQyIE5PTkFNRSA7IHVuc2lnbmVkIGludCBDV2ViQ29yZUJyaWRn
ZTo6VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQorICAgID9VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFC
RT9BVlRQdHJDMTZAQFhaIEAgMTQzIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlk
Z2U6OlVSTCh2b2lkKSBjb25zdA0KKyAgICA/VVJMV2l0aFJlbGF0aXZlU3RyaW5nQENXZWJDb3Jl
QnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBBQlZURGVzQzE2QEBAWiBAIDE0NCBOT05BTUUgOyBjbGFz
cyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OlVSTFdpdGhSZWxhdGl2ZVN0cmluZyhjbGFzcyBU
RGVzQzE2IGNvbnN0ICYpDQorICAgID9VcGRhdGVBbGxWaWV3c0BDV2ViQ29yZUJyaWRnZUBAU0FY
WFogQCAxNDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6VXBkYXRlQWxsVmlld3Modm9p
ZCkNCisgICAgP1VybEBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFQUFWVFB0ckMxNkBAWFogQCAx
NDYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpVcmwodm9p
ZCkNCisgICAgP1VzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FW
VFB0ckMxNkBAWFogQCAxNDcgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdz
OjpVc2VyU3R5bGVTaGVldExvY2F0aW9uKHZvaWQpIGNvbnN0DQorICAgID9XaWxsTG9hZEltYWdl
c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTQ4IE5PTkFNRSA7IGlu
dCBDV2ViQ29yZVNldHRpbmdzOjpXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkodm9pZCkgY29u
c3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJA
QUJWSWRlbnRpZmllckAyQEBaIEAgMTQ5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093
blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBj
b25zdCAmKSBjb25zdA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCAxNTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVj
dDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9tYXJrZWRAVmFsdWVJbXBAS0pTQEBRQkVfTlhaIEAg
MTUxIE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6bWFya2VkKHZvaWQpIGNvbnN0DQorICAg
ID9jbGFzc0luZm9AT2JqZWN0QEtKU0BAUUJFUEJVQ2xhc3NJbmZvQDJAWFogQCAxNTIgTk9OQU1F
IDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pTOjpPYmplY3Q6OmNsYXNzSW5mbyh2
b2lkKSBjb25zdA0KKyAgICA/aGFzT3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBJQFogQCAxNTMgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVy
dHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KKyAgICA/aGFz
UHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCAxNTQgTk9OQU1F
IDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
dW5zaWduZWQgaW50KSBjb25zdA0KKyAgICA/cHJvcExpc3RAT2JqZWN0QEtKU0BAUUFFP0FWUmVm
ZXJlbmNlTGlzdEAyQFBBVkV4ZWNTdGF0ZUAyQF9OQFogQCAxNTUgTk9OQU1FIDsgY2xhc3MgS0pT
OjpSZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0Ojpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCBib29sKQ0KKyAgICA/R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTEBDV2ViQ29y
ZUJyaWRnZUBAUUFFP0FWVFB0ckMxNkBAQUFIQFogQCAxNTYgTk9OQU1FIDsgY2xhc3MgVFB0ckMx
NiBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTChpbnQgJikN
CisgICAgP0dldFJlbmRlclRleHRBcmVhQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBA
QUFWPyRSQXJyYXlAVlRSZWN0QEBAQEBaIEAgMTU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkdldFJlbmRlclRleHRBcmVhKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgUkFycmF5
PGNsYXNzIFRSZWN0PiAmKQ0KKyAgICAgICAgP1dpbmRvd1NjcmlwdE5QT2JqZWN0QENXZWJDb3Jl
QnJpZGdlQEBRQUVQQVZOUE9iamVjdEBAWFogQCAxNTggTk9OQU1FIDsgY2xhc3MgTlBPYmplY3Qg
KiBDV2ViQ29yZUJyaWRnZTo6V2luZG93U2NyaXB0TlBPYmplY3Qodm9pZCkNCiANCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNzI5MSkNCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEs
MyArMSw4MSBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2YWxsICA8c3JpcmFtLnlhZGF2YWxsaUBub2tp
YS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisgICAgICAg
IERFU0M6U2NyaXB0YWJsZSBwbHVnaW4gJiBXaWRnZXQgb2JqZWN0IGltcGxlbWVudGF0aW9uIA0K
KyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDcNCisN
CisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRA0KKw0KKyAg
ICAgICAgKiBCV0lOUy9XRUJDT1JFVS5ERUY6DQorICAgICAgICAqIEVBQkkvV2ViQ29yZVUuREVG
Og0KKyAgICAgICAgKiBicmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHA6DQorICAgICAgICAoQ1dlYkNv
cmVCcmlkZ2U6On5DV2ViQ29yZUJyaWRnZSk6DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OkNy
ZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6V2lu
ZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpHZXROZXh0UmVu
ZGVyVGV4dEZvclNtYXJ0TGlua3NMKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6R2V0UmVu
ZGVyVGV4dEFyZWEpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpHZXRQYWdlRGF0YUwpOg0K
KyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKToNCisgICAgICAgICog
YnJpZGdlL1dlYkNvcmVCcmlkZ2UuaDoNCisgICAgICAgICogYnJpZGdlL1dlYkNvcmVXaWRnZXQu
aDoNCisgICAgICAgIChNV2ViQ29yZVdpZGdldDo6UGx1Z2luU2NyaXB0YWJsZU9iamVjdCk6DQor
ICAgICAgICAqIGdyb3VwL0tIVE1MLm1tcDoNCisgICAgICAgICogZ3JvdXAvS1dRLm1tcDoNCisg
ICAgICAgICogZ3JvdXAvV2ViQ29yZS5tbXA6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2Jp
bmRpbmcuY3BwOg0KKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6OmlzR2xvYmFsT2Jq
ZWN0KToNCisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUlu
c3RhbmNlRm9yVmFsdWUpOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmg6DQor
ICAgICAgICAqIGtodG1sL2VjbWEva2pzX2RvbS5jcHA6DQorICAgICAgICAoRE9NTm9kZTo6bWFy
ayk6DQorICAgICAgICAoRE9NTm9kZTo6Z2V0VmFsdWVQcm9wZXJ0eSk6DQorICAgICAgICAoRE9N
Tm9kZTo6Z2V0TGlzdGVuZXIpOg0KKyAgICAgICAgKERPTU5vZGVQcm90b0Z1bmM6OnRyeUNhbGwp
Og0KKyAgICAgICAgKERPTU5vZGVMaXN0OjpjYWxsKToNCisgICAgICAgIChET01Eb2N1bWVudDo6
RE9NRG9jdW1lbnQpOg0KKyAgICAgICAgKERPTURvY3VtZW50UHJvdG9GdW5jOjp0cnlDYWxsKToN
CisgICAgICAgIChET01FbGVtZW50OjpET01FbGVtZW50KToNCisgICAgICAgIChET01FbGVtZW50
UHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01ET01JbXBsZW1lbnRhdGlvbjo6RE9N
RE9NSW1wbGVtZW50YXRpb24pOg0KKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6RE9NTmFtZWRO
b2RlTWFwKToNCisgICAgICAgIChLSlM6OmdldERPTURvY3VtZW50Tm9kZSk6DQorICAgICAgICAo
S0pTOjpjaGVja05vZGVTZWN1cml0eSk6DQorICAgICAgICAoS0pTOjpnZXRSdW50aW1lT2JqZWN0
KToNCisgICAgICAgIChET01OYW1lZE5vZGVzQ29sbGVjdGlvbjo6dHJ5R2V0KToNCisgICAgICAg
IChET01DaGFyYWN0ZXJEYXRhOjpET01DaGFyYWN0ZXJEYXRhKToNCisgICAgICAgIChET01DaGFy
YWN0ZXJEYXRhUHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01UZXh0OjpET01UZXh0
KToNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93LmNwcDoNCisgICAgICAgIChXaW5k
b3c6OldpbmRvdyk6DQorICAgICAgICAoV2luZG93OjptYXJrKToNCisgICAgICAgIChXaW5kb3c6
OmdldCk6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX3dpbmRvdy5oOg0KKyAgICAgICAgKEtK
Uzo6V2luZG93OjopOg0KKyAgICAgICAgKEtKUzo6U2VsZWN0aW9uOjopOg0KKyAgICAgICAgKiBr
aHRtbC9lY21hL2tqc193aW5kb3cubHV0Lmg6DQorICAgICAgICAoS0pTOjopOg0KKyAgICAgICAg
KiBraHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHA6DQorICAgICAgICAoSFRNTEFwcGxldEVs
ZW1lbnRJbXBsOjpnZXRBcHBsZXRJbnN0YW5jZSk6DQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVu
dEltcGw6OkhUTUxFbWJlZEVsZW1lbnRJbXBsKToNCisgICAgICAgIChIVE1MRW1iZWRFbGVtZW50
SW1wbDo6Z2V0RW1iZWRJbnN0YW5jZSk6DQorICAgICAgICAqIGtodG1sL2h0bWwvaHRtbF9vYmpl
Y3RpbXBsLmg6DQorICAgICAgICAqIGt3cS9LV1FLSFRNTFBhcnQuY3BwOg0KKyAgICAgICAgKEtX
UUtIVE1MUGFydDo6S1dRS0hUTUxQYXJ0KToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OnN1Ym1p
dEZvcm0pOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6YmluZGluZ1Jvb3RPYmplY3QpOg0KKyAg
ICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0UmVuZGVyVGV4dFJlY3RBcnJheSk6DQorICAgICAgICAo
S1dRS0hUTUxQYXJ0OjphZGRQbHVnaW5Sb290T2JqZWN0KToNCisgICAgICAgIChLV1FLSFRNTFBh
cnQ6OmNsZWFudXBQbHVnaW5Sb290T2JqZWN0cyk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0Ojpn
ZXROZXdUYWJiZWRDdXJzb3JQb3NpdGlvbik6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0Ojp0YWJi
ZWROYXZpZ2F0aW9uKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OnByZXBhcmVGb3JVc2VyQWN0
aW9uKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OmNyZWF0ZVdpZGdldE9iamVjdCk6DQorICAg
ICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRFbWJlZEluc3RhbmNlRm9yVmlldyk6DQorICAgICAgICAo
S1dRS0hUTUxQYXJ0OjpnZXRPYmplY3RJbnN0YW5jZUZvclZpZXcpOg0KKyAgICAgICAgKEtXUUtI
VE1MUGFydDo6d2luZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAgICAgKiBrd3EvS1dRS0hUTUxQ
YXJ0Lmg6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcp
Og0KKw0KIDIwMDYtMTAtMjMgIG5hZ3VvICA8Z2VvcmdlLmd1b0Bub2tpYS5jb20+DQogDQogICAg
ICAgICBSZXZpZXdlZCBieSBaYWxhbi4NCkluZGV4OiBXZWJDb3JlL0VBQkkvV2ViQ29yZVUuREVG
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9FQUJJL1dlYkNvcmVVLkRFRgkocmV2aXNpb24gMTcw
NjkpDQorKysgV2ViQ29yZS9FQUJJL1dlYkNvcmVVLkRFRgkod29ya2luZyBjb3B5KQ0KQEAgLTEs
MTYyICsxLDE2MyBAQA0KIEVYUE9SVFMNCi0JX1pOMTNUV2ViQ29yZUNhY2hlMTVBZGRJdGVtVG9D
YWNoZUxFUjI5TVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlckluZm9SNlREZXNDOGkgQCAxIE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTBJbWFnZUNvdW50RWkgQCAyIE5PTkFNRQ0KLQlfWk4x
NENXZWJDb3JlQnJpZGdlMTBMb2FkSW1hZ2VzRXYgQCAzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3Jl
QnJpZGdlMTFSZXNvbHZlVXJsTEVSSzdURGVzQzE2UzJfIEAgNCBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTExU2VhcmNoQWdhaW5FUks3VERlc0MxNmlpaSBAIDUgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UxMkRlZmVyc1RpbWVyc0V2IEAgNiBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTEyR2V0UGFnZURhdGFMRWkgQCA3IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdl
MTJJbWFnZXNJblJlY3RFaSBAIDggTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMlBvaW50
ZXJFdmVudEUxM1RQb2ludGVyRXZlbnQgQCA5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdl
MTJQb2ludGVyRXZlbnRFTjEzVFBvaW50ZXJFdmVudDVUVHlwZUVSSzZUUG9pbnQgQCAxMCBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEzQWN0aXZhdGVFdmVudEVSNlRQb2ludCBAIDExIE5P
TkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNBZGRUb0NvbnRhY3RzRVI2VFBvaW50IEAgMTIg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0RpZE5vdE9wZW5VUkxFUks3VERlc0MxNiBA
IDEzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNFeGVjdXRlU2NyaXB0RVJLN1REZXND
MTYgQCAxNCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEzU2V0UmVuZGVyUGFydEVQTjVr
aHRtbDEwUmVuZGVyUGFydEUgQCAxNSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0QWRq
dXN0Vmlld1NpemVFdiBAIDE2IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTREdW1wUmVu
ZGVyVHJlZUV2IEAgMTcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNEluc3RhbGxJbkZy
YW1lRVIxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDE4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlMTRQcmVwYXJlRm9yRXhpdEV2IEAgMTkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
NFJlbW92ZUZpbGVOYW1lRVI2VFBvaW50IEAgMjAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UxNFNjcm9sbFRvQW5jaG9yRVJLN1REZXNDMTYgQCAyMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTE0U2VsZWN0aW9uQ29sb3JFdiBAIDIyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlMTRTZXROZWVkc0xheW91dEV2IEAgMjMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
NFVwZGF0ZUFsbFZpZXdzRXYgQCAyNCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1Q3Jl
YXRlS0hUTUxWaWV3RVIxOE1XZWJDb3JlU2Nyb2xsVmlld2lpIEAgMjUgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNURlQWN0aXZhdGVFdmVudEVpIEAgMjYgTk9OQU1FDQotCV9aTjE0Q1dl
YkNvcmVCcmlkZ2UxNUZpbmRMaW5rc09mVHlwZUVSSzdURGVzQzE2UjZSQXJyYXlJMTZUV2ViQ29y
ZUxpbmtJdGVtRSBAIDI3IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVHZXRUZXh0Q29u
dGVudExFdiBAIDI4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVKdW1wVG9TZWxlY3Rp
b25FdiBAIDI5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVSZW1vdmVGcm9tRnJhbWVF
diBAIDMwIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kUmVzaXplRXZlbnRFdiBA
IDMxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kU2Nyb2xsRXZlbnRFdiBAIDMy
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXREZWZlcnNUaW1lcnNFaSBAIDMzIE5P
TkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXRNYXhCaWRpV2lkdGhFaSBAIDM0IE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTZTZXRGb250U2l6ZUxldmVsRWkgQCAzNSBOT05BTUUN
Ci0JX1pOMTRDV2ViQ29yZUJyaWRnZTE2VGFiYmVkTmF2aWdhdGlvbkUxNlRXZWJOYXZEaXJlY3Rp
b25SMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZWkgQCAzNiBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTE3U2F2ZURvY3VtZW50U3RhdGVFdiBAIDM3IE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlMThBY3RpdmF0ZUFjY2Vzc0tleXNFOVRLZXlFdmVudCBAIDM4IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMThJbml0aWFsaXplU2V0dGluZ3NFUksxNkNXZWJDb3JlU2V0dGlu
Z3MgQCAzOSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4U2V0RHJhd3NCYWNrZ3JvdW5k
RWkgQCA0MCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE5Qm9keUJhY2tncm91bmRDb2xv
ckV2IEAgNDEgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyMFJlc3RvcmVEb2N1bWVudFN0
YXRlRXYgQCA0MiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIwU2NhbGluZ0ZhY3RvckNo
YW5nZWRFaSBAIDQzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjFTY3JvbGxUb0FuY2hv
cldpdGhVUkxFUks3VERlc0MxNiBAIDQ0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjFT
aG91bGRDcmVhdGVSZW5kZXJlcnNFdiBAIDQ1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdl
MjFVUkxXaXRoUmVsYXRpdmVTdHJpbmdFUks3VERlc0MxNiBAIDQ2IE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlMjJQcm92aXNpb25hbExvYWRTdGFydGVkRXYgQCA0NyBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTIzRGV0ZXJtaW5lQ3Vyc29yUG9zaXRpb25FUjI2VFdlYkNvcmVGb2N1
c2VkRWxlbWVudFR5cGVSNVRSZWN0UzNfUjZUUG9pbnRpIEAgNDggTk9OQU1FDQotCV9aTjE0Q1dl
YkNvcmVCcmlkZ2UyM1NldEZhc3RGaXJzdERpc3BsYXlNb2RlRWkgQCA0OSBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTI0U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lRVJLN1REZXNDMTZTMl8g
QCA1MCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0U2hvdWxkQ3JlYXRlUmVuZGVy
ZXJzRWkgQCA1MSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI2Q3JlYXRlRG9jdW1lbnRX
aXRoRW5jb2RpbmdFUks3VERlc0MxNmkgQCA1MiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTI2UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGVFMThUV2ViQ29yZURldmljZVR5cGUgQCA1MyBO
T05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI3TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3Rz
RXYgQCA1NCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI4Rm9yY2VMYXlvdXRBZGp1c3Rp
bmdWaWV3U2l6ZUVpIEAgNTUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UzRW5kRXYgQCA1
NiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTROZXdMRVIxNk1XZWJDbGllbnRCcmlkZ2Ug
QCA1NyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTZDbGllbnRFdiBAIDU4IE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlN0FkZERhdGFFUks2VERlc0M4IEAgNTkgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2U3T3BlblVSTEVSSzdURGVzQzE2aVMyX1MyX1JLOVREYXRlVGltZSBA
IDYwIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlN1NldE5hbWVFUks3VERlc0MxNiBAIDYx
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlOENsb3NlVVJMRXYgQCA2MiBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZThEcmF3UmVjdEVSSzVUUmVjdFIyM0NXZWJDb3JlR3JhcGhpY3ND
b250ZXh0IEAgNjMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U4S2V5RXZlbnRFOVRLZXlF
dmVudGkgQCA2NCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTlDbGVhckZpbmRFdiBAIDY1
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlOVNlYXJjaEZvckVSSzdURGVzQzE2aWlpIEAg
NjYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U5U2V0UGFyZW50RVBTXyBAIDY3IE5PTkFN
RQ0KLQlfWk4xNVRXZWJDb3JlSGlzdG9yeTE1SGlzdG9yeVByb3ZpZGVyRXYgQCA2OCBOT05BTUUN
Ci0JX1pOMTVUV2ViQ29yZUhpc3RvcnkxOFNldEhpc3RvcnlQcm92aWRlckVQMjNNV2ViQ29yZUhp
c3RvcnlQcm92aWRlciBAIDY5IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxNFNldEph
dmFFbmFibGVkRWkgQCA3MCBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMTdTZXRQbHVn
aW5zRW5hYmxlZEVpIEAgNzEgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0RGVm
YXVsdEZvbnRTaXplRWkgQCA3MiBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRG
aXhlZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDczIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0
dGluZ3MxOFNldE1pbmltdW1Gb250U2l6ZUVpIEAgNzQgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVT
ZXR0aW5nczE4U2V0U2VyaWZGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3NSBOT05BTUUNCi0JX1pO
MTZDV2ViQ29yZVNldHRpbmdzMjBTZXRDdXJzaXZlRm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzYg
Tk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0RmFudGFzeUZvbnRGYW1pbHlFUks3
VERlc0MxNiBAIDc3IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNldEphdmFTY3Jp
cHRFbmFibGVkRWkgQCA3OCBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRBdXRv
UmVmcmVzaEVuYWJsZWRFaSBAIDc5IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNl
dFNhdmVSYXdEYXRhRW5hYmxlZEVpIEAgODAgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5n
czIxU2V0U3RhbmRhcmRGb250RmFtaWx5RVJLN1REZXNDMTYgQCA4MSBOT05BTUUNCi0JX1pOMTZD
V2ViQ29yZVNldHRpbmdzMjJTZXREZWZhdWx0VGV4dEVuY29kaW5nRVJLN1REZXNDMTYgQCA4MiBO
T05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjJTZXRTYW5zU2VyaWZGb250RmFtaWx5RVJL
N1REZXNDMTYgQCA4MyBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjNTZXREZWZhdWx0
Rml4ZWRGb250U2l6ZUVpIEAgODQgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0
TWluaW11bUxvZ2ljYWxGb250U2l6ZUVpIEAgODUgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0
aW5nczI1U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0VpIEAgODYgTk9OQU1FDQotCV9aTjE2Q1dl
YkNvcmVTZXR0aW5nczI1U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSSzdURGVzQzE2IEAgODcg
Tk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczMwU2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0
aWNhbGx5RWkgQCA4OCBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzNDBTZXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RWkgQCA4OSBOT05BTUUNCi0JX1pOMTZDV2Vi
Q29yZVNldHRpbmdzNE5ld0xFdiBAIDkwIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3NE
MEV2IEAgOTEgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nc0QxRXYgQCA5MiBOT05BTUUN
Ci0JX1pOMTZDV2ViQ29yZVNldHRpbmdzRDJFdiBAIDkzIE5PTkFNRQ0KLQlfWk4yMFRXZWJDb3Jl
SW1hZ2VDYXJyaWVyM1VybEV2IEAgOTQgTk9OQU1FDQotCV9aTjIwVFdlYkNvcmVJbWFnZUNhcnJp
ZXI3QWx0VGV4dEV2IEAgOTUgTk9OQU1FDQotCV9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI3UmF3
RGF0YUV2IEAgOTYgTk9OQU1FDQotCV9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI4UmVuZGVyZXJF
diBAIDk3IE5PTkFNRQ0KLQlfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyOUltYWdlVHlwZUV2IEAg
OTggTk9OQU1FDQotCV9aTjIxVFdlYkNvcmVDb29raWVGYWN0b3J5MTNDb29raWVBZGFwdGVyRXYg
QCA5OSBOT05BTUUNCi0JX1pOMjFUV2ViQ29yZUNvb2tpZUZhY3RvcnkxNlNldENvb2tpZUFkYXB0
ZXJFUDIxTVdlYkNvcmVDb29raWVBZGFwdGVyIEAgMTAwIE5PTkFNRQ0KLQlfWk4yMVRXZWJDb3Jl
UGx1Z2luSGFuZGxlcjEzUGx1Z2luSGFuZGxlckV2IEAgMTAxIE5PTkFNRQ0KLQlfWk4yMVRXZWJD
b3JlUGx1Z2luSGFuZGxlcjIzU2V0V2ViQ29yZVBsdWdpbkhhbmRsZXJFUDIxTVdlYkNvcmVQbHVn
aW5IYW5kbGVyIEAgMTAyIE5PTkFNRQ0KLQlfWk4yM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0NE5l
d0xFUDE2Q0Zic0JpdG1hcERldmljZVAxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcg
QCAxMDMgTk9OQU1FDQotCV9aTjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0TmV3TEVSOUNGYnNC
aXRHY1AxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxMDQgTk9OQU1FDQotCV9a
TjIzVFdlYkNvcmVMb2FkZXJDb250YWluZXIxNUxvYWRlckNvbnRhaW5lckV2IEAgMTA1IE5PTkFN
RQ0KLQlfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVyMjVTZXRXZWJDb3JlTG9hZGVyQ29udGFp
bmVyRVAyM01XZWJDb3JlTG9hZGVyQ29udGFpbmVyIEAgMTA2IE5PTkFNRQ0KLQlfWk4yNlRXZWJD
b3JlRm9ybUNvbnRyb2xGYWN0b3J5MjhTZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5RVAyNk1X
ZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5IEAgMTA3IE5PTkFNRQ0KLQlfWk4yNlRXZWJDb3JlRm9y
bUNvbnRyb2xGYWN0b3J5N0ZhY3RvcnlFdiBAIDEwOCBOT05BTUUNCi0JX1pOMjdUV2ViQ29yZVRl
eHRSZW5kZXJlckZhY3RvcnkyOVNldFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5RVAyN01XZWJD
b3JlVGV4dFJlbmRlcmVyRmFjdG9yeSBAIDEwOSBOT05BTUUNCi0JX1pOMjdUV2ViQ29yZVRleHRS
ZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTEwIE5PTkFNRQ0KLQlfWk4yOENXZWJDb3JlSW1h
Z2VDYWxsYmFja1dyYXBwZXIxMVNldENhbGxiYWNrRVBONWtodG1sMTlDYWNoZWRJbWFnZUNhbGxi
YWNrRSBAIDExMSBOT05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTJO
b3RpZnlVcGRhdGVFdiBAIDExMiBOT05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tX
cmFwcGVyMTROb3RpZnlGaW5pc2hlZEV2IEAgMTEzIE5PTkFNRQ0KLQlfWk4yOENXZWJDb3JlSW1h
Z2VDYWxsYmFja1dyYXBwZXIxOU5vdGlmeURlY29kaW5nRXJyb3JFdiBAIDExNCBOT05BTUUNCi0J
X1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5MzBTZXRXZWJDb3JlSW1hZ2VSZW5kZXJl
ckZhY3RvcnlFUDI4TVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSBAIDExNSBOT05BTUUNCi0J
X1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5N0ZhY3RvcnlFdiBAIDExNiBOT05BTUUN
Ci0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMElzRnJhbWVTZXRFdiBAIDExNyBOT05BTUUNCi0JX1pO
SzE0Q1dlYkNvcmVCcmlkZ2UxMFJlbmRlclBhcnRFdiBAIDExOCBOT05BTUUNCi0JX1pOSzE0Q1dl
YkNvcmVCcmlkZ2UxMU5lZWRzTGF5b3V0RXYgQCAxMTkgTk9OQU1FDQotCV9aTksxNENXZWJDb3Jl
QnJpZGdlMTJDYW5DYWNoZVBhZ2VFdiBAIDEyMCBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlk
Z2UxMlRleHRFbmNvZGluZ0V2IEAgMTIxIE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTE2
SGFzUGVuZGluZ0xheW91dEV2IEAgMTIyIE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTE4
U2hvd2luZ0Zhc3RQcmV2aWV3RXYgQCAxMjMgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdl
MjBGYXN0Rmlyc3REaXNwbGF5TW9kZUV2IEAgMTI0IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJy
aWRnZTIwR2V0VXJsT2ZOb2RlSW5Gb2N1c0xFUjZUUG9pbnQgQCAxMjUgTk9OQU1FDQotCV9aTksx
NENXZWJDb3JlQnJpZGdlMjROYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JFUjZUUG9pbnRSMjZUV2Vi
Q29yZUZvY3VzZWRFbGVtZW50VHlwZVI1VFJlY3QgQCAxMjYgTk9OQU1FDQotCV9aTksxNENXZWJD
b3JlQnJpZGdlM1VSTEV2IEAgMTI3IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTROYW1l
RXYgQCAxMjggTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlNkRvbWFpbkV2IEAgMTI5IE5P
TkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZThSZWZlcnJlckV2IEAgMTMwIE5PTkFNRQ0KLQlf
Wk5LMTZDV2ViQ29yZVNldHRpbmdzMTFKYXZhRW5hYmxlZEV2IEAgMTMxIE5PTkFNRQ0KLQlfWk5L
MTZDV2ViQ29yZVNldHRpbmdzMTRQbHVnaW5zRW5hYmxlZEV2IEAgMTMyIE5PTkFNRQ0KLQlfWk5L
MTZDV2ViQ29yZVNldHRpbmdzMTVEZWZhdWx0Rm9udFNpemVFdiBAIDEzMyBOT05BTUUNCi0JX1pO
SzE2Q1dlYkNvcmVTZXR0aW5nczE1Rml4ZWRGb250RmFtaWx5RXYgQCAxMzQgTk9OQU1FDQotCV9a
TksxNkNXZWJDb3JlU2V0dGluZ3MxNU1pbmltdW1Gb250U2l6ZUV2IEAgMTM1IE5PTkFNRQ0KLQlf
Wk5LMTZDV2ViQ29yZVNldHRpbmdzMTVTZXJpZkZvbnRGYW1pbHlFdiBAIDEzNiBOT05BTUUNCi0J
X1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3Q3Vyc2l2ZUZvbnRGYW1pbHlFdiBAIDEzNyBOT05BTUUN
Ci0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3RmFudGFzeUZvbnRGYW1pbHlFdiBAIDEzOCBOT05B
TUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3SmF2YVNjcmlwdEVuYWJsZWRFdiBAIDEzOSBO
T05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE4QXV0b1JlZnJlc2hFbmFibGVkRXYgQCAx
NDAgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOFNhdmVSYXdEYXRhRW5hYmxlZEV2
IEAgMTQxIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThTdGFuZGFyZEZvbnRGYW1p
bHlFdiBAIDE0MiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE5RGVmYXVsdFRleHRF
bmNvZGluZ0V2IEAgMTQzIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTlTYW5zU2Vy
aWZGb250RmFtaWx5RXYgQCAxNDQgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMERl
ZmF1bHRGaXhlZEZvbnRTaXplRXYgQCAxNDUgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGlu
Z3MyMk1pbmltdW1Mb2dpY2FsRm9udFNpemVFdiBAIDE0NiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNv
cmVTZXR0aW5nczIyU2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0V2IEAgMTQ3IE5PTkFNRQ0KLQlfWk5L
MTZDV2ViQ29yZVNldHRpbmdzMjJVc2VyU3R5bGVTaGVldExvY2F0aW9uRXYgQCAxNDggTk9OQU1F
DQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyN1dpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUV2
IEAgMTQ5IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMzdKYXZhU2NyaXB0Q2FuT3Bl
bldpbmRvd3NBdXRvbWF0aWNhbGx5RXYgQCAxNTAgTk9OQU1FDQotCV9aVEkxNENXZWJDb3JlQnJp
ZGdlIEAgMTUxIE5PTkFNRSA7ICM8VEk+Iw0KLQlfWlRJMTZDV2ViQ29yZVNldHRpbmdzIEAgMTUy
IE5PTkFNRSA7ICM8VEk+Iw0KLQlfWlRJMjBDV2ViQ29yZVBhZ2VEYXRhSXRlbSBAIDE1MyBOT05B
TUUgOyAjPFRJPiMNCi0JX1pUSTIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCAxNTQgTk9OQU1F
IDsgIzxUST4jDQotCV9aVFYxNENXZWJDb3JlQnJpZGdlIEAgMTU1IE5PTkFNRSA7ICM8VlQ+Iw0K
LQlfWlRWMTZDV2ViQ29yZVNldHRpbmdzIEAgMTU2IE5PTkFNRSA7ICM8VlQ+Iw0KLQlfWlRWMjBD
V2ViQ29yZVBhZ2VEYXRhSXRlbSBAIDE1NyBOT05BTUUgOyAjPFZUPiMNCi0JX1pUVjIzQ1dlYkNv
cmVHcmFwaGljc0NvbnRleHQgQCAxNTggTk9OQU1FIDsgIzxWVD4jDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UxN0dldFJlbmRlclRleHRBcmVhRVJLN1REZXNDMTZSNlJBcnJheUk1VFJlY3RFIEAgMTU5
IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMzFHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0
TGlua3NMRVJpIEAgMTYwIE5PTkFNRQ0KKyAgICBfWk4xM1RXZWJDb3JlQ2FjaGUxNUFkZEl0ZW1U
b0NhY2hlTEVSMjlNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5mb1I2VERlc0M4aSBAIDEgTk9O
QU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMEltYWdlQ291bnRFaSBAIDIgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMExvYWRJbWFnZXNFdiBAIDMgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UxMVJlc29sdmVVcmxMRVJLN1REZXNDMTZTMl8gQCA0IE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTFTZWFyY2hBZ2FpbkVSSzdURGVzQzE2aWlpIEAgNSBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEyRGVmZXJzVGltZXJzRXYgQCA2IE5PTkFN
RQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTJHZXRQYWdlRGF0YUxFaSBAIDcgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkltYWdlc0luUmVjdEVpIEAgOCBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTEyUG9pbnRlckV2ZW50RTEzVFBvaW50ZXJFdmVudCBAIDkgTk9O
QU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMlBvaW50ZXJFdmVudEVOMTNUUG9pbnRlckV2
ZW50NVRUeXBlRVJLNlRQb2ludCBAIDEwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdl
MTNBY3RpdmF0ZUV2ZW50RVI2VFBvaW50IEAgMTEgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVC
cmlkZ2UxM0FkZFRvQ29udGFjdHNFUjZUUG9pbnQgQCAxMiBOT05BTUUNCisgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTEzRGlkTm90T3BlblVSTEVSSzdURGVzQzE2IEAgMTMgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UxM0V4ZWN1dGVTY3JpcHRFUks3VERlc0MxNiBAIDE0IE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNTZXRSZW5kZXJQYXJ0RVBONWtodG1sMTBSZW5kZXJQ
YXJ0RSBAIDE1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRBZGp1c3RWaWV3U2l6
ZUV2IEAgMTYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNER1bXBSZW5kZXJUcmVl
RXYgQCAxNyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0SW5zdGFsbEluRnJhbWVF
UjE4TVdlYkNvcmVTY3JvbGxWaWV3IEAgMTggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxNFByZXBhcmVGb3JFeGl0RXYgQCAxOSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRn
ZTE0UmVtb3ZlRmlsZU5hbWVFUjZUUG9pbnQgQCAyMCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTE0U2Nyb2xsVG9BbmNob3JFUks3VERlc0MxNiBAIDIxIE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlMTRTZWxlY3Rpb25Db2xvckV2IEAgMjIgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNFNldE5lZWRzTGF5b3V0RXYgQCAyMyBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTE0VXBkYXRlQWxsVmlld3NFdiBAIDI0IE5PTkFNRQ0KKyAgICBfWk4xNENX
ZWJDb3JlQnJpZGdlMTVDcmVhdGVLSFRNTFZpZXdFUjE4TVdlYkNvcmVTY3JvbGxWaWV3aWkgQCAy
NSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE1RGVBY3RpdmF0ZUV2ZW50RWkgQCAy
NiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE1RmluZExpbmtzT2ZUeXBlRVJLN1RE
ZXNDMTZSNlJBcnJheUkxNlRXZWJDb3JlTGlua0l0ZW1FIEAgMjcgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNUdldFRleHRDb250ZW50TEV2IEAgMjggTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNUp1bXBUb1NlbGVjdGlvbkV2IEAgMjkgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNVJlbW92ZUZyb21GcmFtZUV2IEAgMzAgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNVNlbmRSZXNpemVFdmVudEV2IEAgMzEgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNVNlbmRTY3JvbGxFdmVudEV2IEAgMzIgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNVNldERlZmVyc1RpbWVyc0VpIEAgMzMgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNVNldE1heEJpZGlXaWR0aEVpIEAgMzQgTk9OQU1FDQorICAgIF9aTjE0
Q1dlYkNvcmVCcmlkZ2UxNlNldEZvbnRTaXplTGV2ZWxFaSBAIDM1IE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlMTZUYWJiZWROYXZpZ2F0aW9uRTE2VFdlYk5hdkRpcmVjdGlvblIyNlRX
ZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlaSBAIDM2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMTdTYXZlRG9jdW1lbnRTdGF0ZUV2IEAgMzcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2UxOEFjdGl2YXRlQWNjZXNzS2V5c0U5VEtleUV2ZW50IEAgMzggTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UxOEluaXRpYWxpemVTZXR0aW5nc0VSSzE2Q1dlYkNvcmVTZXR0
aW5ncyBAIDM5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMThTZXREcmF3c0JhY2tn
cm91bmRFaSBAIDQwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTlCb2R5QmFja2dy
b3VuZENvbG9yRXYgQCA0MSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIwUmVzdG9y
ZURvY3VtZW50U3RhdGVFdiBAIDQyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjBT
Y2FsaW5nRmFjdG9yQ2hhbmdlZEVpIEAgNDMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UyMVNjcm9sbFRvQW5jaG9yV2l0aFVSTEVSSzdURGVzQzE2IEAgNDQgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UyMVNob3VsZENyZWF0ZVJlbmRlcmVyc0V2IEAgNDUgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMVVSTFdpdGhSZWxhdGl2ZVN0cmluZ0VSSzdURGVzQzE2
IEAgNDYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMlByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWRFdiBAIDQ3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjNEZXRlcm1pbmVD
dXJzb3JQb3NpdGlvbkVSMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZVI1VFJlY3RTM19SNlRQ
b2ludGkgQCA0OCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIzU2V0RmFzdEZpcnN0
RGlzcGxheU1vZGVFaSBAIDQ5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjRTZXRG
b3JtQ29udHJvbFRleHRCeU5hbWVFUks3VERlc0MxNlMyXyBAIDUwIE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlMjRTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnNFaSBAIDUxIE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjZDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZ0VSSzdU
RGVzQzE2aSBAIDUyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjZSZWFwcGx5U3R5
bGVzRm9yRGV2aWNlVHlwZUUxOFRXZWJDb3JlRGV2aWNlVHlwZSBAIDUzIE5PTkFNRQ0KKyAgICBf
Wk4xNENXZWJDb3JlQnJpZGdlMjdOdW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHNFdiBAIDU0IE5P
TkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjhGb3JjZUxheW91dEFkanVzdGluZ1ZpZXdT
aXplRWkgQCA1NSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTNFbmRFdiBAIDU2IE5P
TkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlNE5ld0xFUjE2TVdlYkNsaWVudEJyaWRnZSBA
IDU3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlNkNsaWVudEV2IEAgNTggTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U3QWRkRGF0YUVSSzZURGVzQzggQCA1OSBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTdPcGVuVVJMRVJLN1REZXNDMTZpUzJfUzJfUks5VERh
dGVUaW1lIEAgNjAgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U3U2V0TmFtZUVSSzdU
RGVzQzE2IEAgNjEgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U4Q2xvc2VVUkxFdiBA
IDYyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlOERyYXdSZWN0RVJLNVRSZWN0UjIz
Q1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCA2MyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZThLZXlFdmVudEU5VEtleUV2ZW50aSBAIDY0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlOUNsZWFyRmluZEV2IEAgNjUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U5
U2VhcmNoRm9yRVJLN1REZXNDMTZpaWkgQCA2NiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTlTZXRQYXJlbnRFUFNfIEAgNjcgTk9OQU1FDQorICAgIF9aTjE1VFdlYkNvcmVIaXN0b3J5
MTVIaXN0b3J5UHJvdmlkZXJFdiBAIDY4IE5PTkFNRQ0KKyAgICBfWk4xNVRXZWJDb3JlSGlzdG9y
eTE4U2V0SGlzdG9yeVByb3ZpZGVyRVAyM01XZWJDb3JlSGlzdG9yeVByb3ZpZGVyIEAgNjkgTk9O
QU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE0U2V0SmF2YUVuYWJsZWRFaSBAIDcwIE5P
TkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MxN1NldFBsdWdpbnNFbmFibGVkRWkgQCA3
MSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXREZWZhdWx0Rm9udFNpemVF
aSBAIDcyIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldEZpeGVkRm9udEZh
bWlseUVSSzdURGVzQzE2IEAgNzMgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4
U2V0TWluaW11bUZvbnRTaXplRWkgQCA3NCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRp
bmdzMThTZXRTZXJpZkZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc1IE5PTkFNRQ0KKyAgICBfWk4x
NkNXZWJDb3JlU2V0dGluZ3MyMFNldEN1cnNpdmVGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3NiBO
T05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRGYW50YXN5Rm9udEZhbWlseUVS
SzdURGVzQzE2IEAgNzcgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0SmF2
YVNjcmlwdEVuYWJsZWRFaSBAIDc4IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3My
MVNldEF1dG9SZWZyZXNoRW5hYmxlZEVpIEAgNzkgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVT
ZXR0aW5nczIxU2V0U2F2ZVJhd0RhdGFFbmFibGVkRWkgQCA4MCBOT05BTUUNCisgICAgX1pOMTZD
V2ViQ29yZVNldHRpbmdzMjFTZXRTdGFuZGFyZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDgxIE5P
TkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMlNldERlZmF1bHRUZXh0RW5jb2RpbmdF
Uks3VERlc0MxNiBAIDgyIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMlNldFNh
bnNTZXJpZkZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDgzIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJD
b3JlU2V0dGluZ3MyM1NldERlZmF1bHRGaXhlZEZvbnRTaXplRWkgQCA4NCBOT05BTUUNCisgICAg
X1pOMTZDV2ViQ29yZVNldHRpbmdzMjVTZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkgQCA4NSBO
T05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjVTZXRTaG91bGRQcmludEJhY2tncm91
bmRzRWkgQCA4NiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjVTZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uRVJLN1REZXNDMTYgQCA4NyBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMzBTZXRXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHlFaSBAIDg4IE5PTkFNRQ0K
KyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3M0MFNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHlFaSBAIDg5IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3M0TmV3
TEV2IEAgOTAgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nc0QwRXYgQCA5MSBOT05B
TUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzRDFFdiBAIDkyIE5PTkFNRQ0KKyAgICBfWk4x
NkNXZWJDb3JlU2V0dGluZ3NEMkV2IEAgOTMgTk9OQU1FDQorICAgIF9aTjIwVFdlYkNvcmVJbWFn
ZUNhcnJpZXIzVXJsRXYgQCA5NCBOT05BTUUNCisgICAgX1pOMjBUV2ViQ29yZUltYWdlQ2Fycmll
cjdBbHRUZXh0RXYgQCA5NSBOT05BTUUNCisgICAgX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjdS
YXdEYXRhRXYgQCA5NiBOT05BTUUNCisgICAgX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjhSZW5k
ZXJlckV2IEAgOTcgTk9OQU1FDQorICAgIF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI5SW1hZ2VU
eXBlRXYgQCA5OCBOT05BTUUNCisgICAgX1pOMjFUV2ViQ29yZUNvb2tpZUZhY3RvcnkxM0Nvb2tp
ZUFkYXB0ZXJFdiBAIDk5IE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3JlQ29va2llRmFjdG9yeTE2
U2V0Q29va2llQWRhcHRlckVQMjFNV2ViQ29yZUNvb2tpZUFkYXB0ZXIgQCAxMDAgTk9OQU1FDQor
ICAgIF9aTjIxVFdlYkNvcmVQbHVnaW5IYW5kbGVyMTNQbHVnaW5IYW5kbGVyRXYgQCAxMDEgTk9O
QU1FDQorICAgIF9aTjIxVFdlYkNvcmVQbHVnaW5IYW5kbGVyMjNTZXRXZWJDb3JlUGx1Z2luSGFu
ZGxlckVQMjFNV2ViQ29yZVBsdWdpbkhhbmRsZXIgQCAxMDIgTk9OQU1FDQorICAgIF9aTjIzQ1dl
YkNvcmVHcmFwaGljc0NvbnRleHQ0TmV3TEVQMTZDRmJzQml0bWFwRGV2aWNlUDEwQ0Zic0JpdG1h
cFAxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDEwMyBOT05BTUUNCisgICAgX1pOMjNDV2ViQ29yZUdy
YXBoaWNzQ29udGV4dDROZXdMRVI5Q0Zic0JpdEdjUDEwQ0Zic0JpdG1hcFAxOE1XZWJDb3JlU2Ny
b2xsVmlldyBAIDEwNCBOT05BTUUNCisgICAgX1pOMjNUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjE1
TG9hZGVyQ29udGFpbmVyRXYgQCAxMDUgTk9OQU1FDQorICAgIF9aTjIzVFdlYkNvcmVMb2FkZXJD
b250YWluZXIyNVNldFdlYkNvcmVMb2FkZXJDb250YWluZXJFUDIzTVdlYkNvcmVMb2FkZXJDb250
YWluZXIgQCAxMDYgTk9OQU1FDQorICAgIF9aTjI2VFdlYkNvcmVGb3JtQ29udHJvbEZhY3Rvcnky
OFNldFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlFUDI2TVdlYkNvcmVGb3JtQ29udHJvbEZhY3Rv
cnkgQCAxMDcgTk9OQU1FDQorICAgIF9aTjI2VFdlYkNvcmVGb3JtQ29udHJvbEZhY3Rvcnk3RmFj
dG9yeUV2IEAgMTA4IE5PTkFNRQ0KKyAgICBfWk4yN1RXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9y
eTI5U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlFUDI3TVdlYkNvcmVUZXh0UmVuZGVyZXJG
YWN0b3J5IEAgMTA5IE5PTkFNRQ0KKyAgICBfWk4yN1RXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9y
eTdGYWN0b3J5RXYgQCAxMTAgTk9OQU1FDQorICAgIF9aTjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNr
V3JhcHBlcjExU2V0Q2FsbGJhY2tFUE41a2h0bWwxOUNhY2hlZEltYWdlQ2FsbGJhY2tFIEAgMTEx
IE5PTkFNRQ0KKyAgICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxMk5vdGlmeVVw
ZGF0ZUV2IEAgMTEyIE5PTkFNRQ0KKyAgICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBw
ZXIxNE5vdGlmeUZpbmlzaGVkRXYgQCAxMTMgTk9OQU1FDQorICAgIF9aTjI4Q1dlYkNvcmVJbWFn
ZUNhbGxiYWNrV3JhcHBlcjE5Tm90aWZ5RGVjb2RpbmdFcnJvckV2IEAgMTE0IE5PTkFNRQ0KKyAg
ICBfWk4yOFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkzMFNldFdlYkNvcmVJbWFnZVJlbmRl
cmVyRmFjdG9yeUVQMjhNV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5IEAgMTE1IE5PTkFNRQ0K
KyAgICBfWk4yOFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTE2IE5P
TkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTEwSXNGcmFtZVNldEV2IEAgMTE3IE5PTkFN
RQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTEwUmVuZGVyUGFydEV2IEAgMTE4IE5PTkFNRQ0K
KyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTExTmVlZHNMYXlvdXRFdiBAIDExOSBOT05BTUUNCisg
ICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMkNhbkNhY2hlUGFnZUV2IEAgMTIwIE5PTkFNRQ0KKyAg
ICBfWk5LMTRDV2ViQ29yZUJyaWRnZTEyVGV4dEVuY29kaW5nRXYgQCAxMjEgTk9OQU1FDQorICAg
IF9aTksxNENXZWJDb3JlQnJpZGdlMTZIYXNQZW5kaW5nTGF5b3V0RXYgQCAxMjIgTk9OQU1FDQor
ICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMThTaG93aW5nRmFzdFByZXZpZXdFdiBAIDEyMyBOT05B
TUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyMEZhc3RGaXJzdERpc3BsYXlNb2RlRXYgQCAx
MjQgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMjBHZXRVcmxPZk5vZGVJbkZvY3Vz
TEVSNlRQb2ludCBAIDEyNSBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyNE5hdmln
YWJsZU5vZGVVbmRlckN1cnNvckVSNlRQb2ludFIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBl
UjVUUmVjdCBAIDEyNiBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UzVVJMRXYgQCAx
MjcgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlNE5hbWVFdiBAIDEyOCBOT05BTUUN
CisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2U2RG9tYWluRXYgQCAxMjkgTk9OQU1FDQorICAgIF9a
TksxNENXZWJDb3JlQnJpZGdlOFJlZmVycmVyRXYgQCAxMzAgTk9OQU1FDQorICAgIF9aTksxNkNX
ZWJDb3JlU2V0dGluZ3MxMUphdmFFbmFibGVkRXYgQCAxMzEgTk9OQU1FDQorICAgIF9aTksxNkNX
ZWJDb3JlU2V0dGluZ3MxNFBsdWdpbnNFbmFibGVkRXYgQCAxMzIgTk9OQU1FDQorICAgIF9aTksx
NkNXZWJDb3JlU2V0dGluZ3MxNURlZmF1bHRGb250U2l6ZUV2IEAgMTMzIE5PTkFNRQ0KKyAgICBf
Wk5LMTZDV2ViQ29yZVNldHRpbmdzMTVGaXhlZEZvbnRGYW1pbHlFdiBAIDEzNCBOT05BTUUNCisg
ICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1TWluaW11bUZvbnRTaXplRXYgQCAxMzUgTk9OQU1F
DQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNVNlcmlmRm9udEZhbWlseUV2IEAgMTM2IE5P
TkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdDdXJzaXZlRm9udEZhbWlseUV2IEAg
MTM3IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdGYW50YXN5Rm9udEZhbWls
eUV2IEAgMTM4IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdKYXZhU2NyaXB0
RW5hYmxlZEV2IEAgMTM5IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThBdXRv
UmVmcmVzaEVuYWJsZWRFdiBAIDE0MCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5n
czE4U2F2ZVJhd0RhdGFFbmFibGVkRXYgQCAxNDEgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3Jl
U2V0dGluZ3MxOFN0YW5kYXJkRm9udEZhbWlseUV2IEAgMTQyIE5PTkFNRQ0KKyAgICBfWk5LMTZD
V2ViQ29yZVNldHRpbmdzMTlEZWZhdWx0VGV4dEVuY29kaW5nRXYgQCAxNDMgTk9OQU1FDQorICAg
IF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOVNhbnNTZXJpZkZvbnRGYW1pbHlFdiBAIDE0NCBOT05B
TUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIwRGVmYXVsdEZpeGVkRm9udFNpemVFdiBA
IDE0NSBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIyTWluaW11bUxvZ2ljYWxG
b250U2l6ZUV2IEAgMTQ2IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJTaG91
bGRQcmludEJhY2tncm91bmRzRXYgQCAxNDcgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0
dGluZ3MyMlVzZXJTdHlsZVNoZWV0TG9jYXRpb25FdiBAIDE0OCBOT05BTUUNCisgICAgX1pOSzE2
Q1dlYkNvcmVTZXR0aW5nczI3V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5RXYgQCAxNDkgTk9O
QU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MzN0phdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHlFdiBAIDE1MCBOT05BTUUNCisgICAgX1pUSTE0Q1dlYkNvcmVCcmlkZ2Ug
QCAxNTEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVEkxNkNXZWJDb3JlU2V0dGluZ3MgQCAxNTIg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVEkyMENXZWJDb3JlUGFnZURhdGFJdGVtIEAgMTUzIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDE1NCBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUVjE0Q1dlYkNvcmVCcmlkZ2UgQCAxNTUgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFYxNkNXZWJDb3JlU2V0dGluZ3MgQCAxNTYgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFYyMENXZWJDb3JlUGFnZURhdGFJdGVtIEAgMTU3IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICAgICAgX1pUVjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCAxNTggTk9OQU1FIDsgIzxW
VD4jDQorICAgICAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTdHZXRSZW5kZXJUZXh0QXJlYUVSSzdU
RGVzQzE2UjZSQXJyYXlJNVRSZWN0RSBAIDE1OSBOT05BTUUNCisgICAgICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2UzMUdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0xFUmkgQCAxNjAgTk9OQU1F
DQorICAgICAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjBXaW5kb3dTY3JpcHROUE9iamVjdEV2IEAg
MTYxIE5PTkFNRQ0KIA0KSW5kZXg6IFdlYkNvcmUvZ3JvdXAvS0hUTUwubW1wDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9ncm91cC9LSFRNTC5tbXAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNv
cmUvZ3JvdXAvS0hUTUwubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNTksNiArNTksNyBAQA0KIFNZ
U1RFTUlOQ0xVREUgICAgICAgLi5cLi5cLg0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cSmF2
YVNjcmlwdENvcmVca2pzDQogU1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlxKYXZhU2NyaXB0Q29y
ZVxwY3JlDQorU1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxiaW5kaW5n
cw0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cTWVtb3J5TWFuYWdlclxJbmMNCiAjaWZuZGVm
IF9fQlJPV1NFUl9TREsNCiBTWVNURU1JTkNMVURFICAgICAgIFxTNjBcbGlieG1sMnBhcnNlclx4
bWxlbmdpbmVcaW5jXGxpYnhtbA0KSW5kZXg6IFdlYkNvcmUvZ3JvdXAvS1dRLm1tcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvZ3JvdXAvS1dRLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2Vi
Q29yZS9ncm91cC9LV1EubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNjIsNiArNjIsNyBAQA0KIFNZ
U1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlDQogU1lTVEVNSU5DTFVERSAgICAg
Li5cLi5cSmF2YVNjcmlwdENvcmVca2pzDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNj
cmlwdENvcmVccGNyZQ0KK1NZU1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGJp
bmRpbmdzDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cTWVtb3J5TWFuYWdlclxJbmMNCiANCiBP
UFRJT04gQ1cgLXByZWZpeCBwcmFnbWFzLnByZWYNCkluZGV4OiBXZWJDb3JlL2dyb3VwL1dlYkNv
cmUubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9ncm91cC9XZWJDb3JlLm1tcAkocmV2aXNp
b24gMTcwNjkpDQorKysgV2ViQ29yZS9ncm91cC9XZWJDb3JlLm1tcAkod29ya2luZyBjb3B5KQ0K
QEAgLTYzLDYgKzYzLDcgQEANCiBTWVNURU1JTkNMVURFICAgICAgIC4uXGtodG1sXGVkaXRpbmcN
CiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxranMNCiBTWVNURU1JTkNM
VURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxwY3JlDQorU1lTVEVNSU5DTFVERSAgICAgLi5c
Li5cSmF2YVNjcmlwdENvcmVcYmluZGluZ3MNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxNZW1v
cnlNYW5hZ2VyXEluYw0KIA0KIA0KSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGlu
Zy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuY3Bw
CShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpDQpAQCAtMzYxLDEzICszNjEsMTMgQEANCiAgIHJldHVybiBmYWxzZTsK
IH0KIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFO
R0VTCiBib29sIFNjcmlwdEludGVycHJldGVyOjppc0dsb2JhbE9iamVjdChjb25zdCBWYWx1ZSAm
dikKIHsKICAgICBpZiAodi50eXBlKCkgPT0gT2JqZWN0VHlwZSkgewotCU9iamVjdCBvID0gdi50
b09iamVjdCAoZ2xvYmFsRXhlYygpKTsKLQlpZiAoby5jbGFzc0luZm8oKSA9PSAmV2luZG93Ojpp
bmZvKQotCSAgICByZXR1cm4gdHJ1ZTsKKyAgICBPYmplY3QgbyA9IHYudG9PYmplY3QgKGdsb2Jh
bEV4ZWMoKSk7CisgICAgaWYgKG8uY2xhc3NJbmZvKCkgPT0gJldpbmRvdzo6aW5mbykKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTM4OSwxMSAr
Mzg5LDEyIEBADQogewogICAgIHZvaWQgKnJlc3VsdCA9IDA7CiAKKyNpZiAhTk9LSUFfQ0hBTkdF
UwogICAgIGlmIChsYW5ndWFnZSA9PSBCaW5kaW5nczo6SW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5n
dWFnZSkKLQlyZXN1bHQgPSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgdmFsdWUs
IG9yaWdpbiwgY3VycmVudCk7Ci0KKyAgICByZXN1bHQgPSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JW
YWx1ZSAoZXhlYywgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7CisjZW5kaWYKICAgICBpZiAoIXJl
c3VsdCkKLQlyZXN1bHQgPSBJbnRlcnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZh
bHVlIChleGVjLCBsYW5ndWFnZSwgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7CisgICAgcmVzdWx0
ID0gSW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgbGFu
Z3VhZ2UsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
SW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdl
YkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNyAr
MzEsNyBAQA0KICNpbmNsdWRlIDxranMvbG9va3VwLmg+CiAjaW5jbHVkZSA8a2pzL3Byb3RlY3Qu
aD4KIAotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFO
R0VTCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZS5oPgogI2VuZGlmCiAKQEAgLTE0
MCw3ICsxNDAsNyBAQA0KIAogICAgIERPTTo6RXZlbnQgKmdldEN1cnJlbnRFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZXZ0OyB9CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VT
CisjaWYgQVBQTEVfQ0hBTkdFUwogICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdChjb25z
dCBWYWx1ZSAmdik7CiAgICAgdmlydHVhbCBJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXJGb3JHbG9i
YWxPYmplY3QgKGNvbnN0IFZhbHVlSW1wICppbXApOwogICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVT
Y3JpcHQgKGNvbnN0IEludGVycHJldGVyICp0YXJnZXQpOwpJbmRleDogV2ViQ29yZS9raHRtbC9l
Y21hL2tqc19kb20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19k
b20uY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2RvbS5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC00Myw3ICs0Myw3IEBADQogCiAjaW5jbHVkZSAibWlzYy9o
dG1sdGFncy5oIgogCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQ
UExFX0NIQU5HRVMKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lX29iamVjdC5oPgog
I2VuZGlmCiAKQEAgLTU4LDIxICs1OCwyMSBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8qIFNv
dXJjZSBmb3IgRE9NTm9kZVByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdl
bmVyYXRlLgogQGJlZ2luIERPTU5vZGVQcm90b1RhYmxlIDEzCi0gIGluc2VydEJlZm9yZQlET01O
b2RlOjpJbnNlcnRCZWZvcmUJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlcGxhY2VDaGlsZAlE
T01Ob2RlOjpSZXBsYWNlQ2hpbGQJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlbW92ZUNoaWxk
CURPTU5vZGU6OlJlbW92ZUNoaWxkCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBhcHBlbmRDaGls
ZAlET01Ob2RlOjpBcHBlbmRDaGlsZAlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgaGFzQXR0cmli
dXRlcwlET01Ob2RlOjpIYXNBdHRyaWJ1dGVzCURvbnREZWxldGV8RnVuY3Rpb24gMAotICBoYXND
aGlsZE5vZGVzCURPTU5vZGU6Okhhc0NoaWxkTm9kZXMJRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0g
IGNsb25lTm9kZQlET01Ob2RlOjpDbG9uZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGlu
c2VydEJlZm9yZSAgRE9NTm9kZTo6SW5zZXJ0QmVmb3JlICAgRG9udERlbGV0ZXxGdW5jdGlvbiAy
CisgIHJlcGxhY2VDaGlsZCAgRE9NTm9kZTo6UmVwbGFjZUNoaWxkICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAyCisgIHJlbW92ZUNoaWxkICAgRE9NTm9kZTo6UmVtb3ZlQ2hpbGQgICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAxCisgIGFwcGVuZENoaWxkICAgRE9NTm9kZTo6QXBwZW5kQ2hpbGQgICAgRG9u
dERlbGV0ZXxGdW5jdGlvbiAxCisgIGhhc0F0dHJpYnV0ZXMgRE9NTm9kZTo6SGFzQXR0cmlidXRl
cyAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCisgIGhhc0NoaWxkTm9kZXMgRE9NTm9kZTo6SGFzQ2hp
bGROb2RlcyAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCisgIGNsb25lTm9kZSBET01Ob2RlOjpDbG9u
ZU5vZGUgIERvbnREZWxldGV8RnVuY3Rpb24gMQogIyBET00yCi0gIG5vcm1hbGl6ZQlET01Ob2Rl
OjpOb3JtYWxpemUJRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIGlzU3VwcG9ydGVkICAgRE9NTm9k
ZTo6SXNTdXBwb3J0ZWQJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIG5vcm1hbGl6ZSBET01Ob2Rl
OjpOb3JtYWxpemUgIERvbnREZWxldGV8RnVuY3Rpb24gMAorICBpc1N1cHBvcnRlZCAgIERPTU5v
ZGU6OklzU3VwcG9ydGVkICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgogIyBmcm9tIHRoZSBFdmVu
dFRhcmdldCBpbnRlcmZhY2UKLSAgYWRkRXZlbnRMaXN0ZW5lcglET01Ob2RlOjpBZGRFdmVudExp
c3RlbmVyCURvbnREZWxldGV8RnVuY3Rpb24gMwotICByZW1vdmVFdmVudExpc3RlbmVyCURPTU5v
ZGU6OlJlbW92ZUV2ZW50TGlzdGVuZXIJRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIGRpc3BhdGNo
RXZlbnQJCURPTU5vZGU6OkRpc3BhdGNoRXZlbnQJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGNv
bnRhaW5zCURPTU5vZGU6OkNvbnRhaW5zCQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgYWRkRXZl
bnRMaXN0ZW5lciAgRE9NTm9kZTo6QWRkRXZlbnRMaXN0ZW5lciAgIERvbnREZWxldGV8RnVuY3Rp
b24gMworICByZW1vdmVFdmVudExpc3RlbmVyICAgRE9NTm9kZTo6UmVtb3ZlRXZlbnRMaXN0ZW5l
ciAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgZGlzcGF0Y2hFdmVudCAgICAgRE9NTm9kZTo6
RGlzcGF0Y2hFdmVudCAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGNvbnRhaW5zICBET01Ob2Rl
OjpDb250YWlucyAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICMgIkRPTSBsZXZlbCAwIiAo
ZnJvbSBHZWNrbyBET00gcmVmZXJlbmNlOyBhbHNvIGluIFdpbklFKQogICBpdGVtICAgICAgICAg
IERPTU5vZGU6Okl0ZW0gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogQGVuZApAQCAt
MTEzLDcgKzExMyw3IEBADQogICAgIERPTU9iamVjdDo6bWFyaygpOwogICAgIHJldHVybjsKICAg
fQotICAKKwogICAvLyBUaGlzIGlzIGEgbm9kZSBvdXRzaWRlIHRoZSBkb2N1bWVudCwgc28gZmlu
ZCB0aGUgcm9vdCBvZiB0aGUgdHJlZSBpdCBpcyBpbiwKICAgLy8gYW5kIHN0YXJ0IG1hcmtpbmcg
ZnJvbSB0aGVyZS4KICAgTm9kZUltcGwgKnJvb3QgPSBub2RlLmhhbmRsZSgpOwpAQCAtMTYzLDc1
ICsxNjMsNzUgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NTm9kZVRhYmxlLiBVc2UgIm1ha2UgaGFz
aHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Ob2RlVGFibGUgNjcKLSAgbm9kZU5h
bWUJRE9NTm9kZTo6Tm9kZU5hbWUJRG9udERlbGV0ZXxSZWFkT25seQotICBub2RlVmFsdWUJRE9N
Tm9kZTo6Tm9kZVZhbHVlCURvbnREZWxldGUKLSAgbm9kZVR5cGUJRE9NTm9kZTo6Tm9kZVR5cGUJ
RG9udERlbGV0ZXxSZWFkT25seQotICBwYXJlbnROb2RlCURPTU5vZGU6OlBhcmVudE5vZGUJRG9u
dERlbGV0ZXxSZWFkT25seQotICBwYXJlbnRFbGVtZW50CURPTU5vZGU6OlBhcmVudEVsZW1lbnQJ
RG9udERlbGV0ZXxSZWFkT25seQotICBjaGlsZE5vZGVzCURPTU5vZGU6OkNoaWxkTm9kZXMJRG9u
dERlbGV0ZXxSZWFkT25seQotICBmaXJzdENoaWxkCURPTU5vZGU6OkZpcnN0Q2hpbGQJRG9udERl
bGV0ZXxSZWFkT25seQotICBsYXN0Q2hpbGQJRE9NTm9kZTo6TGFzdENoaWxkCURvbnREZWxldGV8
UmVhZE9ubHkKKyAgbm9kZU5hbWUgIERPTU5vZGU6Ok5vZGVOYW1lICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBub2RlVmFsdWUgRE9NTm9kZTo6Tm9kZVZhbHVlICBEb250RGVsZXRlCisgIG5vZGVU
eXBlICBET01Ob2RlOjpOb2RlVHlwZSAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgcGFyZW50Tm9k
ZSAgICBET01Ob2RlOjpQYXJlbnROb2RlIERvbnREZWxldGV8UmVhZE9ubHkKKyAgcGFyZW50RWxl
bWVudCBET01Ob2RlOjpQYXJlbnRFbGVtZW50ICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGNoaWxk
Tm9kZXMgICAgRE9NTm9kZTo6Q2hpbGROb2RlcyBEb250RGVsZXRlfFJlYWRPbmx5CisgIGZpcnN0
Q2hpbGQgICAgRE9NTm9kZTo6Rmlyc3RDaGlsZCBEb250RGVsZXRlfFJlYWRPbmx5CisgIGxhc3RD
aGlsZCBET01Ob2RlOjpMYXN0Q2hpbGQgIERvbnREZWxldGV8UmVhZE9ubHkKICAgcHJldmlvdXNT
aWJsaW5nICBET01Ob2RlOjpQcmV2aW91c1NpYmxpbmcgRG9udERlbGV0ZXxSZWFkT25seQotICBu
ZXh0U2libGluZwlET01Ob2RlOjpOZXh0U2libGluZwlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGF0
dHJpYnV0ZXMJRE9NTm9kZTo6QXR0cmlidXRlcwlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5hbWVz
cGFjZVVSSQlET01Ob2RlOjpOYW1lc3BhY2VVUkkJRG9udERlbGV0ZXxSZWFkT25seQorICBuZXh0
U2libGluZyAgIERPTU5vZGU6Ok5leHRTaWJsaW5nICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAg
YXR0cmlidXRlcyAgICBET01Ob2RlOjpBdHRyaWJ1dGVzIERvbnREZWxldGV8UmVhZE9ubHkKKyAg
bmFtZXNwYWNlVVJJICBET01Ob2RlOjpOYW1lc3BhY2VVUkkgICBEb250RGVsZXRlfFJlYWRPbmx5
CiAjIERPTTIKLSAgcHJlZml4CURPTU5vZGU6OlByZWZpeAkJRG9udERlbGV0ZQotICBsb2NhbE5h
bWUJRE9NTm9kZTo6TG9jYWxOYW1lCURvbnREZWxldGV8UmVhZE9ubHkKLSAgb3duZXJEb2N1bWVu
dAlET01Ob2RlOjpPd25lckRvY3VtZW50CURvbnREZWxldGV8UmVhZE9ubHkKKyAgcHJlZml4ICAg
IERPTU5vZGU6OlByZWZpeCAgICAgRG9udERlbGV0ZQorICBsb2NhbE5hbWUgRE9NTm9kZTo6TG9j
YWxOYW1lICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG93bmVyRG9jdW1lbnQgRE9NTm9kZTo6T3du
ZXJEb2N1bWVudCAgRG9udERlbGV0ZXxSZWFkT25seQogIwotICBvbmFib3J0CURPTU5vZGU6Ok9u
QWJvcnQJCURvbnREZWxldGUKLSAgb25ibHVyCURPTU5vZGU6Ok9uQmx1cgkJCURvbnREZWxldGUK
LSAgb25jaGFuZ2UJRE9NTm9kZTo6T25DaGFuZ2UJCURvbnREZWxldGUKLSAgb25jbGljawlET01O
b2RlOjpPbkNsaWNrCQlEb250RGVsZXRlCi0gIG9uY29udGV4dG1lbnUJRE9NTm9kZTo6T25Db250
ZXh0TWVudQkJRG9udERlbGV0ZQotICBvbmRibGNsaWNrCURPTU5vZGU6Ok9uRGJsQ2xpY2sJCURv
bnREZWxldGUKLSAgb25iZWZvcmVjdXQJRE9NTm9kZTo6T25CZWZvcmVDdXQJCURvbnREZWxldGUK
KyAgb25hYm9ydCAgIERPTU5vZGU6Ok9uQWJvcnQgICAgICAgIERvbnREZWxldGUKKyAgb25ibHVy
ICAgIERPTU5vZGU6Ok9uQmx1ciAgICAgICAgIERvbnREZWxldGUKKyAgb25jaGFuZ2UgIERPTU5v
ZGU6Ok9uQ2hhbmdlICAgICAgIERvbnREZWxldGUKKyAgb25jbGljayAgIERPTU5vZGU6Ok9uQ2xp
Y2sgICAgICAgIERvbnREZWxldGUKKyAgb25jb250ZXh0bWVudSBET01Ob2RlOjpPbkNvbnRleHRN
ZW51ICAgICAgRG9udERlbGV0ZQorICBvbmRibGNsaWNrICAgIERPTU5vZGU6Ok9uRGJsQ2xpY2sg
ICAgIERvbnREZWxldGUKKyAgb25iZWZvcmVjdXQgICBET01Ob2RlOjpPbkJlZm9yZUN1dCAgICAg
ICAgRG9udERlbGV0ZQogICBvbmN1dCAgICAgICAgIERPTU5vZGU6Ok9uQ3V0ICAgICAgICAgICAg
ICAgICAgRG9udERlbGV0ZQotICBvbmJlZm9yZWNvcHkJRE9NTm9kZTo6T25CZWZvcmVDb3B5CQlE
b250RGVsZXRlCi0gIG9uY29weQlET01Ob2RlOjpPbkNvcHkgICAgICAgICAgICAgICAgIERvbnRE
ZWxldGUKLSAgb25iZWZvcmVwYXN0ZQlET01Ob2RlOjpPbkJlZm9yZVBhc3RlCQlEb250RGVsZXRl
Ci0gIG9ucGFzdGUJRE9NTm9kZTo6T25QYXN0ZQkJRG9udERlbGV0ZQotICBvbmRyYWcJRE9NTm9k
ZTo6T25EcmFnCQkJRG9udERlbGV0ZQotICBvbmRyYWdkcm9wCURPTU5vZGU6Ok9uRHJhZ0Ryb3AJ
CURvbnREZWxldGUKLSAgb25kcmFnZW5kCURPTU5vZGU6Ok9uRHJhZ0VuZAkJRG9udERlbGV0ZQot
ICBvbmRyYWdlbnRlcglET01Ob2RlOjpPbkRyYWdFbnRlcgkJRG9udERlbGV0ZQotICBvbmRyYWds
ZWF2ZQlET01Ob2RlOjpPbkRyYWdMZWF2ZQkJRG9udERlbGV0ZQotICBvbmRyYWdvdmVyCURPTU5v
ZGU6Ok9uRHJhZ092ZXIJCURvbnREZWxldGUKLSAgb25kcmFnc3RhcnQJRE9NTm9kZTo6T25EcmFn
U3RhcnQJCURvbnREZWxldGUKLSAgb25kcm9wCURPTU5vZGU6Ok9uRHJvcCAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZQotICBvbmVycm9yCURPTU5vZGU6Ok9uRXJyb3IJCURvbnREZWxldGUKLSAg
b25mb2N1cwlET01Ob2RlOjpPbkZvY3VzICAgICAgIAkJRG9udERlbGV0ZQorICBvbmJlZm9yZWNv
cHkgIERPTU5vZGU6Ok9uQmVmb3JlQ29weSAgICAgICBEb250RGVsZXRlCisgIG9uY29weSAgICBE
T01Ob2RlOjpPbkNvcHkgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25iZWZvcmVwYXN0
ZSBET01Ob2RlOjpPbkJlZm9yZVBhc3RlICAgICAgRG9udERlbGV0ZQorICBvbnBhc3RlICAgRE9N
Tm9kZTo6T25QYXN0ZSAgICAgICAgRG9udERlbGV0ZQorICBvbmRyYWcgICAgRE9NTm9kZTo6T25E
cmFnICAgICAgICAgRG9udERlbGV0ZQorICBvbmRyYWdkcm9wICAgIERPTU5vZGU6Ok9uRHJhZ0Ry
b3AgICAgIERvbnREZWxldGUKKyAgb25kcmFnZW5kIERPTU5vZGU6Ok9uRHJhZ0VuZCAgICAgIERv
bnREZWxldGUKKyAgb25kcmFnZW50ZXIgICBET01Ob2RlOjpPbkRyYWdFbnRlciAgICAgICAgRG9u
dERlbGV0ZQorICBvbmRyYWdsZWF2ZSAgIERPTU5vZGU6Ok9uRHJhZ0xlYXZlICAgICAgICBEb250
RGVsZXRlCisgIG9uZHJhZ292ZXIgICAgRE9NTm9kZTo6T25EcmFnT3ZlciAgICAgRG9udERlbGV0
ZQorICBvbmRyYWdzdGFydCAgIERPTU5vZGU6Ok9uRHJhZ1N0YXJ0ICAgICAgICBEb250RGVsZXRl
CisgIG9uZHJvcCAgICBET01Ob2RlOjpPbkRyb3AgICAgICAgICAgICAgICAgIERvbnREZWxldGUK
KyAgb25lcnJvciAgIERPTU5vZGU6Ok9uRXJyb3IgICAgICAgIERvbnREZWxldGUKKyAgb25mb2N1
cyAgIERPTU5vZGU6Ok9uRm9jdXMgICAgICAgICAgICBEb250RGVsZXRlCiAgIG9uaW5wdXQgICAg
ICAgRE9NTm9kZTo6T25JbnB1dCAgICAgICAgICAgICAgICBEb250RGVsZXRlCi0gIG9ua2V5ZG93
bglET01Ob2RlOjpPbktleURvd24JCURvbnREZWxldGUKLSAgb25rZXlwcmVzcwlET01Ob2RlOjpP
bktleVByZXNzCQlEb250RGVsZXRlCi0gIG9ua2V5dXAJRE9NTm9kZTo6T25LZXlVcAkJRG9udERl
bGV0ZQotICBvbmxvYWQJRE9NTm9kZTo6T25Mb2FkCQkJRG9udERlbGV0ZQotICBvbm1vdXNlZG93
bglET01Ob2RlOjpPbk1vdXNlRG93bgkJRG9udERlbGV0ZQotICBvbm1vdXNlbW92ZQlET01Ob2Rl
OjpPbk1vdXNlTW92ZQkJRG9udERlbGV0ZQotICBvbm1vdXNlb3V0CURPTU5vZGU6Ok9uTW91c2VP
dXQJCURvbnREZWxldGUKLSAgb25tb3VzZW92ZXIJRE9NTm9kZTo6T25Nb3VzZU92ZXIJCURvbnRE
ZWxldGUKLSAgb25tb3VzZXVwCURPTU5vZGU6Ok9uTW91c2VVcAkJRG9udERlbGV0ZQotICBvbm1v
dXNld2hlZWwJRE9NTm9kZTo6T25Nb3VzZVdoZWVsCQlEb250RGVsZXRlCi0gIG9ubW92ZQlET01O
b2RlOjpPbk1vdmUJCQlEb250RGVsZXRlCi0gIG9ucmVzZXQJRE9NTm9kZTo6T25SZXNldAkJRG9u
dERlbGV0ZQotICBvbnJlc2l6ZQlET01Ob2RlOjpPblJlc2l6ZQkJRG9udERlbGV0ZQorICBvbmtl
eWRvd24gRE9NTm9kZTo6T25LZXlEb3duICAgICAgRG9udERlbGV0ZQorICBvbmtleXByZXNzICAg
IERPTU5vZGU6Ok9uS2V5UHJlc3MgICAgIERvbnREZWxldGUKKyAgb25rZXl1cCAgIERPTU5vZGU6
Ok9uS2V5VXAgICAgICAgIERvbnREZWxldGUKKyAgb25sb2FkICAgIERPTU5vZGU6Ok9uTG9hZCAg
ICAgICAgIERvbnREZWxldGUKKyAgb25tb3VzZWRvd24gICBET01Ob2RlOjpPbk1vdXNlRG93biAg
ICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNlbW92ZSAgIERPTU5vZGU6Ok9uTW91c2VNb3ZlICAg
ICAgICBEb250RGVsZXRlCisgIG9ubW91c2VvdXQgICAgRE9NTm9kZTo6T25Nb3VzZU91dCAgICAg
RG9udERlbGV0ZQorICBvbm1vdXNlb3ZlciAgIERPTU5vZGU6Ok9uTW91c2VPdmVyICAgICAgICBE
b250RGVsZXRlCisgIG9ubW91c2V1cCBET01Ob2RlOjpPbk1vdXNlVXAgICAgICBEb250RGVsZXRl
CisgIG9ubW91c2V3aGVlbCAgRE9NTm9kZTo6T25Nb3VzZVdoZWVsICAgICAgIERvbnREZWxldGUK
KyAgb25tb3ZlICAgIERPTU5vZGU6Ok9uTW92ZSAgICAgICAgIERvbnREZWxldGUKKyAgb25yZXNl
dCAgIERPTU5vZGU6Ok9uUmVzZXQgICAgICAgIERvbnREZWxldGUKKyAgb25yZXNpemUgIERPTU5v
ZGU6Ok9uUmVzaXplICAgICAgIERvbnREZWxldGUKICAgb25zY3JvbGwgICAgICBET01Ob2RlOjpP
blNjcm9sbCAgICAgICAgICAgICAgIERvbnREZWxldGUKICAgb25zZWFyY2ggICAgICBET01Ob2Rl
OjpPblNlYXJjaCAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25zZWxlY3QJRE9NTm9kZTo6
T25TZWxlY3QJCURvbnREZWxldGUKLSAgb25zZWxlY3RzdGFydAlET01Ob2RlOjpPblNlbGVjdFN0
YXJ0CQlEb250RGVsZXRlCi0gIG9uc3VibWl0CURPTU5vZGU6Ok9uU3VibWl0CQlEb250RGVsZXRl
Ci0gIG9udW5sb2FkCURPTU5vZGU6Ok9uVW5sb2FkCQlEb250RGVsZXRlCisgIG9uc2VsZWN0ICBE
T01Ob2RlOjpPblNlbGVjdCAgICAgICBEb250RGVsZXRlCisgIG9uc2VsZWN0c3RhcnQgRE9NTm9k
ZTo6T25TZWxlY3RTdGFydCAgICAgIERvbnREZWxldGUKKyAgb25zdWJtaXQgIERPTU5vZGU6Ok9u
U3VibWl0ICAgICAgIERvbnREZWxldGUKKyAgb251bmxvYWQgIERPTU5vZGU6Ok9uVW5sb2FkICAg
ICAgIERvbnREZWxldGUKICMgSUUgZXh0ZW5zaW9ucwotICBvZmZzZXRMZWZ0CURPTU5vZGU6Ok9m
ZnNldExlZnQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgb2Zmc2V0VG9wCURPTU5vZGU6Ok9mZnNl
dFRvcAkJRG9udERlbGV0ZXxSZWFkT25seQotICBvZmZzZXRXaWR0aAlET01Ob2RlOjpPZmZzZXRX
aWR0aAkJRG9udERlbGV0ZXxSZWFkT25seQotICBvZmZzZXRIZWlnaHQJRE9NTm9kZTo6T2Zmc2V0
SGVpZ2h0CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG9mZnNldFBhcmVudAlET01Ob2RlOjpPZmZz
ZXRQYXJlbnQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgY2xpZW50V2lkdGgJRE9NTm9kZTo6Q2xp
ZW50V2lkdGgJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgY2xpZW50SGVpZ2h0CURPTU5vZGU6OkNs
aWVudEhlaWdodAkJRG9udERlbGV0ZXxSZWFkT25seQotICBzY3JvbGxMZWZ0CURPTU5vZGU6OlNj
cm9sbExlZnQJCURvbnREZWxldGUKLSAgc2Nyb2xsVG9wCURPTU5vZGU6OlNjcm9sbFRvcAkJRG9u
dERlbGV0ZQorICBvZmZzZXRMZWZ0ICAgIERPTU5vZGU6Ok9mZnNldExlZnQgICAgIERvbnREZWxl
dGV8UmVhZE9ubHkKKyAgb2Zmc2V0VG9wIERPTU5vZGU6Ok9mZnNldFRvcCAgICAgIERvbnREZWxl
dGV8UmVhZE9ubHkKKyAgb2Zmc2V0V2lkdGggICBET01Ob2RlOjpPZmZzZXRXaWR0aCAgICAgICAg
RG9udERlbGV0ZXxSZWFkT25seQorICBvZmZzZXRIZWlnaHQgIERPTU5vZGU6Ok9mZnNldEhlaWdo
dCAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9mZnNldFBhcmVudCAgRE9NTm9kZTo6T2Zm
c2V0UGFyZW50ICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgY2xpZW50V2lkdGggICBET01O
b2RlOjpDbGllbnRXaWR0aCAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBjbGllbnRIZWln
aHQgIERPTU5vZGU6OkNsaWVudEhlaWdodCAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHNj
cm9sbExlZnQgICAgRE9NTm9kZTo6U2Nyb2xsTGVmdCAgICAgRG9udERlbGV0ZQorICBzY3JvbGxU
b3AgRE9NTm9kZTo6U2Nyb2xsVG9wICAgICAgRG9udERlbGV0ZQogICBzY3JvbGxXaWR0aCAgIERP
TU5vZGU6OlNjcm9sbFdpZHRoICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBzY3Jv
bGxIZWlnaHQgIERPTU5vZGU6OlNjcm9sbEhlaWdodCAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQogQGVuZApAQCAtMzE0LDkgKzMxNCw5IEBADQogICBjYXNlIE9uTW91c2VPdmVyOgogICAg
IHJldHVybiBnZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6TU9VU0VPVkVSX0VWRU5UKTsKICAg
Y2FzZSBPbk1vdXNlVXA6Ci0gICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpN
T1VTRVVQX0VWRU5UKTsgICAgICAKKyAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudElt
cGw6Ok1PVVNFVVBfRVZFTlQpOwogICBjYXNlIE9uTW91c2VXaGVlbDoKLSAgICByZXR1cm4gZ2V0
TGlzdGVuZXIoRE9NOjpFdmVudEltcGw6Ok1PVVNFV0hFRUxfRVZFTlQpOyAgICAgIAorICAgIHJl
dHVybiBnZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6TU9VU0VXSEVFTF9FVkVOVCk7CiAgIGNh
c2UgT25CZWZvcmVDdXQ6CiAgICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpC
RUZPUkVDVVRfRVZFTlQpOwogICBjYXNlIE9uQ3V0OgpAQCAtNjAzLDkgKzYwMyw5IEBADQogICAg
IERPTTo6RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBub2RlLmhhbmRsZSgpLT5nZXRIVE1MRXZl
bnRMaXN0ZW5lcihldmVudElkKTsKICAgICBKU0V2ZW50TGlzdGVuZXIgKmpzTGlzdGVuZXIgPSBz
dGF0aWNfY2FzdDxKU0V2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcik7CiAgICAgaWYgKCBqc0xpc3Rl
bmVyICYmIGpzTGlzdGVuZXItPmxpc3RlbmVyT2JqSW1wKCkgKQotCXJldHVybiBqc0xpc3RlbmVy
LT5saXN0ZW5lck9iaigpOworICAgIHJldHVybiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iaigpOwog
ICAgIGVsc2UKLQlyZXR1cm4gTnVsbCgpOworICAgIHJldHVybiBOdWxsKCk7CiB9CiAKIHZvaWQg
RE9NTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSAqLCBTY29wZUNoYWluICYp
IGNvbnN0CkBAIC02NTgsMTMgKzY1OCwxMyBAQA0KICAgICBjYXNlIERPTU5vZGU6OkNvbnRhaW5z
OgogICAgIHsKICAgICAgICAgaW50IGV4Y2VwdGlvbmNvZGU9MDsKLQlET006Ok5vZGUgb3RoZXIg
PSB0b05vZGUoYXJnc1swXSk7Ci0JaWYgKCFvdGhlci5pc051bGwoKSAmJiBub2RlLm5vZGVUeXBl
KCk9PURPTTo6Tm9kZTo6RUxFTUVOVF9OT0RFKQotCXsKLQkgICAgRE9NOjpOb2RlQmFzZUltcGwg
KmltcGwgPSBzdGF0aWNfY2FzdDxET006Ok5vZGVCYXNlSW1wbCAqPihub2RlLmhhbmRsZSgpKTsK
LQkgICAgYm9vbCByZXR2YWwgPSAhaW1wbC0+Y2hlY2tOb093bmVyKG90aGVyLmhhbmRsZSgpLGV4
Y2VwdGlvbmNvZGUpOwotCSAgICByZXR1cm4gQm9vbGVhbihyZXR2YWwgJiYgZXhjZXB0aW9uY29k
ZSA9PSAwKTsKLQl9CisgICAgRE9NOjpOb2RlIG90aGVyID0gdG9Ob2RlKGFyZ3NbMF0pOworICAg
IGlmICghb3RoZXIuaXNOdWxsKCkgJiYgbm9kZS5ub2RlVHlwZSgpPT1ET006Ok5vZGU6OkVMRU1F
TlRfTk9ERSkKKyAgICB7CisgICAgICAgIERPTTo6Tm9kZUJhc2VJbXBsICppbXBsID0gc3RhdGlj
X2Nhc3Q8RE9NOjpOb2RlQmFzZUltcGwgKj4obm9kZS5oYW5kbGUoKSk7CisgICAgICAgIGJvb2wg
cmV0dmFsID0gIWltcGwtPmNoZWNrTm9Pd25lcihvdGhlci5oYW5kbGUoKSxleGNlcHRpb25jb2Rl
KTsKKyAgICAgICAgcmV0dXJuIEJvb2xlYW4ocmV0dmFsICYmIGV4Y2VwdGlvbmNvZGUgPT0gMCk7
CisgICAgfQogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGNhc2UgRE9N
Tm9kZTo6SXRlbToKQEAgLTc0OSw4ICs3NDksOCBAQA0KICAgICBPYmplY3QgZXJyID0gRXJyb3I6
OmNyZWF0ZShleGVjLCBHZW5lcmFsRXJyb3IsICJFeGNlcHRpb24gZnJvbSBET01Ob2RlTGlzdCIp
OwogICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihlcnIpOwogICAgIERPTTo6X2V4Y2VwdGlvbmNvZGUg
PSAwOwotICB9ICAKLSNlbHNlICAgICAKKyAgfQorI2Vsc2UKICAgdHJ5IHsKICAgICB2YWwgPSB0
cnlDYWxsKGV4ZWMsIHRoaXNPYmosIGFyZ3MpOwogICB9CkBAIC03NTksNyArNzU5LDcgQEANCiAg
ICAgT2JqZWN0IGVyciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCAiRXhjZXB0
aW9uIGZyb20gRE9NTm9kZUxpc3QiKTsKICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXJyKTsKICAg
fQotI2VuZGlmICAKKyNlbmRpZgogICByZXR1cm4gdmFsOwogfQogCkBAIC04MDUsMTAgKzgwNSwx
MCBAQA0KIAogLyogU291cmNlIGZvciBET01BdHRyVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVz
IiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTUF0dHJUYWJsZSA1Ci0gIG5hbWUJCURPTUF0dHI6
Ok5hbWUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgc3BlY2lmaWVkCURPTUF0dHI6OlNwZWNpZmll
ZAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHZhbHVlCQlET01BdHRyOjpWYWx1ZVByb3BlcnR5CURv
bnREZWxldGV8UmVhZE9ubHkKLSAgb3duZXJFbGVtZW50CURPTUF0dHI6Ok93bmVyRWxlbWVudAlE
b250RGVsZXRlfFJlYWRPbmx5CisgIG5hbWUgICAgICBET01BdHRyOjpOYW1lICAgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgc3BlY2lmaWVkIERPTUF0dHI6OlNwZWNpZmllZCAgRG9udERlbGV0
ZXxSZWFkT25seQorICB2YWx1ZSAgICAgRE9NQXR0cjo6VmFsdWVQcm9wZXJ0eSAgRG9udERlbGV0
ZXxSZWFkT25seQorICBvd25lckVsZW1lbnQgIERPTUF0dHI6Ok93bmVyRWxlbWVudCAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBET01BdHRyOjp0cnlHZXQoRXhlY1N0YXRl
ICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC05MDcsMTQg
KzkwNywxNCBAQA0KICovCiAKIERPTURvY3VtZW50OjpET01Eb2N1bWVudChFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IERPTTo6RG9jdW1lbnQgJmQpCi0gIDogRE9NTm9kZShkKSAKLXsgCisgIDogRE9N
Tm9kZShkKQorewogICBzZXRQcm90b3R5cGUoRE9NRG9jdW1lbnRQcm90bzo6c2VsZihleGVjKSk7
CiB9CiAKIERPTURvY3VtZW50OjpET01Eb2N1bWVudChjb25zdCBET006OkRvY3VtZW50ICZkKQot
ICA6IERPTU5vZGUoZCkgCi17IAorICA6IERPTU5vZGUoZCkKK3sKIH0KIAogRE9NRG9jdW1lbnQ6
On5ET01Eb2N1bWVudCgpCkBAIC0xMDg4LDcgKzEwODgsNyBAQA0KICAgICAvLyAiSWYgbm90IHN1
cHBvcnRlZCBbZm9yIGEgY29tbWFuZCBpZGVudGlmaWVyXSwgdGhpcyBtZXRob2QgcmV0dXJucyBh
IEJvb2xlYW4gc2V0IHRvIGZhbHNlLiIKICAgICBpZiAoY29tbWFuZFZhbHVlLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gQm9vbGVhbihmYWxzZSk7Ci0gICAgZWxzZSAKKyAgICBlbHNlCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoY29tbWFuZFZhbHVlKTsKICAgfQogICBkZWZhdWx0OgpAQCAtMTEw
MiwyMSArMTEwMiwyMSBAQA0KIAogLyogU291cmNlIGZvciBET01FbGVtZW50UHJvdG9UYWJsZS4g
VXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRWxlbWVudFBy
b3RvVGFibGUgMTcKLSAgZ2V0QXR0cmlidXRlCQlET01FbGVtZW50OjpHZXRBdHRyaWJ1dGUJRG9u
dERlbGV0ZXxGdW5jdGlvbiAxCi0gIHNldEF0dHJpYnV0ZQkJRE9NRWxlbWVudDo6U2V0QXR0cmli
dXRlCURvbnREZWxldGV8RnVuY3Rpb24gMgotICByZW1vdmVBdHRyaWJ1dGUJRE9NRWxlbWVudDo6
UmVtb3ZlQXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRBdHRyaWJ1dGVOb2Rl
CURPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHNl
dEF0dHJpYnV0ZU5vZGUJRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlTm9kZQlEb250RGVsZXRlfEZ1
bmN0aW9uIDIKLSAgcmVtb3ZlQXR0cmlidXRlTm9kZQlET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1
dGVOb2RlCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRFbGVtZW50c0J5VGFnTmFtZQlET01F
bGVtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgaGFz
QXR0cmlidXRlCQlET01FbGVtZW50OjpIYXNBdHRyaWJ1dGUJRG9udERlbGV0ZXxGdW5jdGlvbiAx
Ci0gIGdldEF0dHJpYnV0ZU5TCURPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5TCURvbnREZWxldGV8
RnVuY3Rpb24gMgotICBzZXRBdHRyaWJ1dGVOUwlET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOUwlE
b250RGVsZXRlfEZ1bmN0aW9uIDMKLSAgcmVtb3ZlQXR0cmlidXRlTlMJRE9NRWxlbWVudDo6UmVt
b3ZlQXR0cmlidXRlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGdldEF0dHJpYnV0ZU5vZGVO
UwlET01FbGVtZW50OjpHZXRBdHRyaWJ1dGVOb2RlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0g
IHNldEF0dHJpYnV0ZU5vZGVOUwlET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOb2RlTlMJRG9udERl
bGV0ZXxGdW5jdGlvbiAxCi0gIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMgRE9NRWxlbWVudDo6R2V0
RWxlbWVudHNCeVRhZ05hbWVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgaGFzQXR0cmlidXRl
TlMJRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGdl
dEF0dHJpYnV0ZSAgICAgIERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZSAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDEKKyAgc2V0QXR0cmlidXRlICAgICAgRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZW1vdmVBdHRyaWJ1dGUgICBET01FbGVtZW50OjpS
ZW1vdmVBdHRyaWJ1dGUgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGdldEF0dHJpYnV0ZU5vZGUg
IERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisg
IHNldEF0dHJpYnV0ZU5vZGUgIERPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZU5vZGUgICAgRG9udERl
bGV0ZXxGdW5jdGlvbiAyCisgIHJlbW92ZUF0dHJpYnV0ZU5vZGUgICBET01FbGVtZW50OjpSZW1v
dmVBdHRyaWJ1dGVOb2RlIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBnZXRFbGVtZW50c0J5VGFn
TmFtZSAgRE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWUgICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAxCisgIGhhc0F0dHJpYnV0ZSAgICAgIERPTUVsZW1lbnQ6Okhhc0F0dHJpYnV0ZSAgICBE
b250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0QXR0cmlidXRlTlMgICAgRE9NRWxlbWVudDo6R2V0
QXR0cmlidXRlTlMgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBzZXRBdHRyaWJ1dGVOUyAgICBE
T01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCisgIHJlbW92
ZUF0dHJpYnV0ZU5TIERPTUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZU5TICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAyCisgIGdldEF0dHJpYnV0ZU5vZGVOUyAgICBET01FbGVtZW50OjpHZXRBdHRyaWJ1
dGVOb2RlTlMgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBzZXRBdHRyaWJ1dGVOb2RlTlMgICAg
RE9NRWxlbWVudDo6U2V0QXR0cmlidXRlTm9kZU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAg
Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyBET01FbGVtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZU5T
IERvbnREZWxldGV8RnVuY3Rpb24gMgorICBoYXNBdHRyaWJ1dGVOUyAgICBET01FbGVtZW50OjpI
YXNBdHRyaWJ1dGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiAgIHNjcm9sbEludG9WaWV3ICAg
ICAgICBET01FbGVtZW50OjpTY3JvbGxJbnRvVmlldyAgICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MQogICBmb2N1cyAgICAgICAgICAgICAgICAgRE9NRWxlbWVudDo6RWxlbWVudEZvY3VzICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKICAgYmx1ciAgICAgICAgICAgICAgICAgIERPTUVsZW1l
bnQ6OkVsZW1lbnRCbHVyICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCkBAIC0xMTM0LDE5
ICsxMTM0LDE5IEBADQogY29uc3QgQ2xhc3NJbmZvIERPTUVsZW1lbnQ6OmluZm8gPSB7ICJFbGVt
ZW50IiwgJkRPTU5vZGU6OmluZm8sICZET01FbGVtZW50VGFibGUsIDAgfTsKIC8qIFNvdXJjZSBm
b3IgRE9NRWxlbWVudFRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4K
IEBiZWdpbiBET01FbGVtZW50VGFibGUgMwotICB0YWdOYW1lCURPTUVsZW1lbnQ6OlRhZ05hbWUg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBzdHlsZQkJRE9N
RWxlbWVudDo6U3R5bGUgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRP
bmx5CisgIHRhZ05hbWUgICBET01FbGVtZW50OjpUYWdOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3R5bGUgICAgIERPTUVsZW1lbnQ6OlN0eWxlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIERP
TUVsZW1lbnQ6OkRPTUVsZW1lbnQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006OkVsZW1lbnQg
JmUpCi0gIDogRE9NTm9kZShlKSAKKyAgOiBET01Ob2RlKGUpCiB7CiAgIHNldFByb3RvdHlwZShE
T01FbGVtZW50UHJvdG86OnNlbGYoZXhlYykpOwogfQogCiBET01FbGVtZW50OjpET01FbGVtZW50
KGNvbnN0IERPTTo6RWxlbWVudCAmZSkKLSAgOiBET01Ob2RlKGUpIAoteyAKKyAgOiBET01Ob2Rl
KGUpCit7CiB9CiAKIFZhbHVlIERPTUVsZW1lbnQ6OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNv
bnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTEyMzEsNyArMTIzMSw3IEBA
DQogICAgICAgcmV0dXJuIGdldERPTU5vZGVMaXN0KGV4ZWMsZWxlbWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZU5TKGFyZ3NbMF0udG9TdHJpbmcoZXhlYykuc3RyaW5nKCksYXJnc1sxXS50b1N0cmlu
ZyhleGVjKS5zdHJpbmcoKSkpOwogICAgIGNhc2UgRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlTlM6
IC8vIERPTTIKICAgICAgIHJldHVybiBCb29sZWFuKGVsZW1lbnQuaGFzQXR0cmlidXRlTlMoYXJn
c1swXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSxhcmdzWzFdLnRvU3RyaW5nKGV4ZWMpLnN0cmlu
ZygpKSk7Ci0gICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxJbnRvVmlldzogCisgICAgY2FzZSBE
T01FbGVtZW50OjpTY3JvbGxJbnRvVmlldzoKICAgICAgIChhcmdzWzBdLnR5cGUoKSAhPSBVbmRl
ZmluZWRUeXBlICYmIGFyZ3NbMF0udHlwZSgpICE9IE51bGxUeXBlKSA/IGVsZW1lbnQuc2Nyb2xs
SW50b1ZpZXcoYXJnc1swXS50b0Jvb2xlYW4oZXhlYykpIDogZWxlbWVudC5zY3JvbGxJbnRvVmll
dyh0cnVlKTsKICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAgICBjYXNlIERPTUVsZW1lbnQ6
OlNjcm9sbEJ5TGluZXM6CkBAIC0xMjQwLDcgKzEyNDAsNyBAQA0KICAgICAgICAgRE9NOjpEb2N1
bWVudEltcGwqIGRvY2ltcGwgPSBub2RlLmhhbmRsZSgpLT5nZXREb2N1bWVudCgpOwogICAgICAg
ICBpZiAoZG9jaW1wbCkgewogICAgICAgICAgICAgZG9jaW1wbC0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgICAgIH0gICAgICAgICAgICAKKyAgICAgICAgfQog
ICAgICAgICBraHRtbDo6UmVuZGVyT2JqZWN0ICpyZW5kID0gbm9kZS5oYW5kbGUoKSA/IG5vZGUu
aGFuZGxlKCktPnJlbmRlcmVyKCkgOiAwTDsKICAgICAgICAgaWYgKHJlbmQgJiYgcmVuZC0+aGFz
T3ZlcmZsb3dDbGlwKCkpIHsKICAgICAgICAgICAgIEtXUVNjcm9sbERpcmVjdGlvbiBkaXJlY3Rp
b24gPSBLV1FTY3JvbGxEb3duOwpAQCAtMTI1Myw3ICsxMjUzLDcgQEANCiAgICAgICAgICAgICBy
ZW5kLT5sYXllcigpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwotICAgICAgICAKKwogICAg
IH0KICAgICBjYXNlIERPTUVsZW1lbnQ6OkVsZW1lbnRGb2N1czoKICAgICAgICAgZWxlbWVudC5m
b2N1cygpOwpAQCAtMTI3MCwxMSArMTI3MCwxMSBAQA0KIAogLyogU291cmNlIGZvciBET01ET01J
bXBsZW1lbnRhdGlvblByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVy
YXRlLgogQGJlZ2luIERPTURPTUltcGxlbWVudGF0aW9uUHJvdG9UYWJsZSA1Ci0gIGhhc0ZlYXR1
cmUJCURPTURPTUltcGxlbWVudGF0aW9uOjpIYXNGZWF0dXJlCQlEb250RGVsZXRlfEZ1bmN0aW9u
IDIKKyAgaGFzRmVhdHVyZSAgICAgICAgRE9NRE9NSW1wbGVtZW50YXRpb246Okhhc0ZlYXR1cmUg
ICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgogIyBET00yCi0gIGNyZWF0ZUNTU1N0eWxlU2hl
ZXQJRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZUNTU1N0eWxlU2hlZXQJRG9udERlbGV0ZXxG
dW5jdGlvbiAyCi0gIGNyZWF0ZURvY3VtZW50VHlwZQlET01ET01JbXBsZW1lbnRhdGlvbjo6Q3Jl
YXRlRG9jdW1lbnRUeXBlCURvbnREZWxldGV8RnVuY3Rpb24gMwotICBjcmVhdGVEb2N1bWVudAlE
T01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1lbnQJCURvbnREZWxldGV8RnVuY3Rpb24g
MworICBjcmVhdGVDU1NTdHlsZVNoZWV0ICAgRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZUNT
U1N0eWxlU2hlZXQgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgY3JlYXRlRG9jdW1lbnRUeXBl
ICAgIERPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVEb2N1bWVudFR5cGUgICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAzCisgIGNyZWF0ZURvY3VtZW50ICAgIERPTURPTUltcGxlbWVudGF0aW9uOjpD
cmVhdGVEb2N1bWVudCAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCiAgIGNyZWF0ZUhUTUxE
b2N1bWVudCAgICBET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlSFRNTERvY3VtZW50ICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKIEBlbmQKICovCkBAIC0xMjg1LDggKzEyODUsOCBAQA0K
IGNvbnN0IENsYXNzSW5mbyBET01ET01JbXBsZW1lbnRhdGlvbjo6aW5mbyA9IHsgIkRPTUltcGxl
bWVudGF0aW9uIiwgMCwgMCwgMCB9OwogCiBET01ET01JbXBsZW1lbnRhdGlvbjo6RE9NRE9NSW1w
bGVtZW50YXRpb24oRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006OkRPTUltcGxlbWVudGF0aW9u
ICZpKQotICA6IGltcGxlbWVudGF0aW9uKGkpIAoteyAKKyAgOiBpbXBsZW1lbnRhdGlvbihpKQor
ewogICBzZXRQcm90b3R5cGUoRE9NRE9NSW1wbGVtZW50YXRpb25Qcm90bzo6c2VsZihleGVjKSk7
CiB9CiAKQEAgLTEzMjgsMTMgKzEzMjgsMTMgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NRG9jdW1l
bnRUeXBlVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2lu
IERPTURvY3VtZW50VHlwZVRhYmxlIDYKLSAgbmFtZQkJCURPTURvY3VtZW50VHlwZTo6TmFtZQkJ
RG9udERlbGV0ZXxSZWFkT25seQotICBlbnRpdGllcwkJRE9NRG9jdW1lbnRUeXBlOjpFbnRpdGll
cwlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5vdGF0aW9ucwkJRE9NRG9jdW1lbnRUeXBlOjpOb3Rh
dGlvbnMJRG9udERlbGV0ZXxSZWFkT25seQorICBuYW1lICAgICAgICAgIERPTURvY3VtZW50VHlw
ZTo6TmFtZSAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGVudGl0aWVzICAgICAgRE9NRG9j
dW1lbnRUeXBlOjpFbnRpdGllcyAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgbm90YXRpb25zICAg
ICBET01Eb2N1bWVudFR5cGU6Ok5vdGF0aW9ucyAgRG9udERlbGV0ZXxSZWFkT25seQogIyBET00y
Ci0gIHB1YmxpY0lkCQlET01Eb2N1bWVudFR5cGU6OlB1YmxpY0lkCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgc3lzdGVtSWQJCURPTURvY3VtZW50VHlwZTo6U3lzdGVtSWQJRG9udERlbGV0ZXxSZWFk
T25seQotICBpbnRlcm5hbFN1YnNldAlET01Eb2N1bWVudFR5cGU6OkludGVybmFsU3Vic2V0CURv
bnREZWxldGV8UmVhZE9ubHkKKyAgcHVibGljSWQgICAgICBET01Eb2N1bWVudFR5cGU6OlB1Ymxp
Y0lkICAgRG9udERlbGV0ZXxSZWFkT25seQorICBzeXN0ZW1JZCAgICAgIERPTURvY3VtZW50VHlw
ZTo6U3lzdGVtSWQgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGludGVybmFsU3Vic2V0ICAgIERP
TURvY3VtZW50VHlwZTo6SW50ZXJuYWxTdWJzZXQgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAog
Ki8KIERPTURvY3VtZW50VHlwZTo6RE9NRG9jdW1lbnRUeXBlKEV4ZWNTdGF0ZSAqZXhlYywgY29u
c3QgRE9NOjpEb2N1bWVudFR5cGUgJmR0KQpAQCAtMTM3MSwxNCArMTM3MSwxNCBAQA0KIAogLyog
U291cmNlIGZvciBET01OYW1lZE5vZGVNYXBQcm90b1RhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxl
cyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01OYW1lZE5vZGVNYXBQcm90b1RhYmxlIDcKLSAg
Z2V0TmFtZWRJdGVtCQlET01OYW1lZE5vZGVNYXA6OkdldE5hbWVkSXRlbQkJRG9udERlbGV0ZXxG
dW5jdGlvbiAxCi0gIHNldE5hbWVkSXRlbQkJRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW0J
CURvbnREZWxldGV8RnVuY3Rpb24gMQotICByZW1vdmVOYW1lZEl0ZW0JRE9NTmFtZWROb2RlTWFw
OjpSZW1vdmVOYW1lZEl0ZW0JRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGl0ZW0JCQlET01OYW1l
ZE5vZGVNYXA6Okl0ZW0JCQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0TmFtZWRJdGVtICAg
ICAgRE9NTmFtZWROb2RlTWFwOjpHZXROYW1lZEl0ZW0gICAgICAgRG9udERlbGV0ZXxGdW5jdGlv
biAxCisgIHNldE5hbWVkSXRlbSAgICAgIERPTU5hbWVkTm9kZU1hcDo6U2V0TmFtZWRJdGVtICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICByZW1vdmVOYW1lZEl0ZW0gICBET01OYW1lZE5v
ZGVNYXA6OlJlbW92ZU5hbWVkSXRlbSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgaXRlbSAg
ICAgICAgICBET01OYW1lZE5vZGVNYXA6Okl0ZW0gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rp
b24gMQogIyBET00yCi0gIGdldE5hbWVkSXRlbU5TCURPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJ
dGVtTlMJCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBzZXROYW1lZEl0ZW1OUwlET01OYW1lZE5v
ZGVNYXA6OlNldE5hbWVkSXRlbU5TCQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgcmVtb3ZlTmFt
ZWRJdGVtTlMJRE9NTmFtZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0ZW1OUwlEb250RGVsZXRlfEZ1
bmN0aW9uIDIKKyAgZ2V0TmFtZWRJdGVtTlMgICAgRE9NTmFtZWROb2RlTWFwOjpHZXROYW1lZEl0
ZW1OUyAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHNldE5hbWVkSXRlbU5TICAgIERPTU5h
bWVkTm9kZU1hcDo6U2V0TmFtZWRJdGVtTlMgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBy
ZW1vdmVOYW1lZEl0ZW1OUyBET01OYW1lZE5vZGVNYXA6OlJlbW92ZU5hbWVkSXRlbU5TICBEb250
RGVsZXRlfEZ1bmN0aW9uIDIKIEBlbmQKICovCiBERUZJTkVfUFJPVE9UWVBFKCJOYW1lZE5vZGVN
YXAiLCBET01OYW1lZE5vZGVNYXBQcm90bykKQEAgLTEzODgsOCArMTM4OCw4IEBADQogY29uc3Qg
Q2xhc3NJbmZvIERPTU5hbWVkTm9kZU1hcDo6aW5mbyA9IHsgIk5hbWVkTm9kZU1hcCIsIDAsIDAs
IDAgfTsKIAogRE9NTmFtZWROb2RlTWFwOjpET01OYW1lZE5vZGVNYXAoRXhlY1N0YXRlICpleGVj
LCBjb25zdCBET006Ok5hbWVkTm9kZU1hcCAmbSkKLSAgOiBtYXAobSkgCi17IAorICA6IG1hcCht
KQorewogICBzZXRQcm90b3R5cGUoRE9NTmFtZWROb2RlTWFwUHJvdG86OnNlbGYoZXhlYykpOwog
fQogCkBAIC0xNDU5LDkgKzE0NTksOSBAQA0KIAogLyogU291cmNlIGZvciBET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBA
YmVnaW4gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFibGUgMwotICB0YXJnZXQJRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpUYXJnZXQJRG9udERlbGV0ZXxSZWFkT25seQotICBkYXRhCQlET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OkRhdGEJCURvbnREZWxldGUKLSAgc2hlZXQJCURPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6U2hlZXQJCURvbnREZWxldGV8UmVhZE9ubHkKKyAgdGFyZ2V0ICAg
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6VGFyZ2V0ICAgIERvbnREZWxldGV8UmVhZE9ubHkK
KyAgZGF0YSAgICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6RGF0YSAgICAgIERvbnREZWxl
dGUKKyAgc2hlZXQgICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6U2hlZXQgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkg
Y29uc3QKQEAgLTE0OTksOCArMTQ5OSw4IEBADQogCiAvKiBTb3VyY2UgZm9yIERPTU5vdGF0aW9u
VGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTU5v
dGF0aW9uVGFibGUgMgotICBwdWJsaWNJZAkJRE9NTm90YXRpb246OlB1YmxpY0lkCURvbnREZWxl
dGV8UmVhZE9ubHkKLSAgc3lzdGVtSWQJCURPTU5vdGF0aW9uOjpTeXN0ZW1JZAlEb250RGVsZXRl
fFJlYWRPbmx5CisgIHB1YmxpY0lkICAgICAgRE9NTm90YXRpb246OlB1YmxpY0lkICAgRG9udERl
bGV0ZXxSZWFkT25seQorICBzeXN0ZW1JZCAgICAgIERPTU5vdGF0aW9uOjpTeXN0ZW1JZCAgIERv
bnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBET01Ob3RhdGlvbjo6dHJ5R2V0KEV4
ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAt
MTUyNyw5ICsxNTI3LDkgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NRW50aXR5VGFibGUuIFVzZSAi
bWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTUVudGl0eVRhYmxlIDIK
LSAgcHVibGljSWQJCURPTUVudGl0eTo6UHVibGljSWQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAg
c3lzdGVtSWQJCURPTUVudGl0eTo6U3lzdGVtSWQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgbm90
YXRpb25OYW1lCQlET01FbnRpdHk6Ok5vdGF0aW9uTmFtZQlEb250RGVsZXRlfFJlYWRPbmx5Cisg
IHB1YmxpY0lkICAgICAgRE9NRW50aXR5OjpQdWJsaWNJZCAgICAgRG9udERlbGV0ZXxSZWFkT25s
eQorICBzeXN0ZW1JZCAgICAgIERPTUVudGl0eTo6U3lzdGVtSWQgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkKKyAgbm90YXRpb25OYW1lICAgICAgRE9NRW50aXR5OjpOb3RhdGlvbk5hbWUgRG9udERl
bGV0ZXxSZWFkT25seQogQGVuZAogKi8KIFZhbHVlIERPTUVudGl0eTo6dHJ5R2V0KEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMTU2OCw3
ICsxNTY4LDcgQEANCiAgICAgcmV0ID0gbmV3IERPTURvY3VtZW50KGV4ZWMsIG4pOwogCiAgIFZh
bHVlIHZhbChyZXQpOwotICAKKwogICAvLyBNYWtlIHN1cmUgdGhlIGRvY3VtZW50IGlzIGtlcHQg
YXJvdW5kIGJ5IHRoZSB3aW5kb3cgb2JqZWN0LCBhbmQgd29ya3MgcmlnaHQgd2l0aCB0aGUKICAg
Ly8gYmFjay9mb3J3YXJkIGNhY2hlLgogICBpZiAobi52aWV3KCkpIHsKQEAgLTE1ODMsNyArMTU4
Myw3IEBADQogCiBib29sIEtKUzo6Y2hlY2tOb2RlU2VjdXJpdHkoRXhlY1N0YXRlICpleGVjLCBj
b25zdCBET006Ok5vZGUmIG4pCiB7Ci0gIGlmICghbi5oYW5kbGUoKSkgCisgIGlmICghbi5oYW5k
bGUoKSkKICAgICByZXR1cm4gZmFsc2U7CiAKICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBjdXJy
ZW50bHkgZXhlY3V0aW5nIGludGVycHJldGVyIGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBzcGVj
aWZpZWQgbm9kZQpAQCAtMTY2MCwxMyArMTY2MCwxMiBAQA0KIAogVmFsdWUgS0pTOjpnZXRSdW50
aW1lT2JqZWN0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpOb2RlICZub2RlKQogewotI2lm
ICFOT0tJQV9DSEFOR0VTICAKICAgICBET006OkhUTUxFbGVtZW50IGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxET006OkhUTUxFbGVtZW50Pihub2RlKTsKIAogICAgIGlmICghbm9kZS5pc051bGwoKSkg
ewogICAgICAgICBpZiAobm9kZS5oYW5kbGUoKS0+aWQoKSA9PSBJRF9BUFBMRVQpIHsKICAgICAg
ICAgICAgIERPTTo6SFRNTEFwcGxldEVsZW1lbnRJbXBsICphcHBsZXRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RE9NOjpIVE1MQXBwbGV0RWxlbWVudEltcGwgKj4oZWxlbWVudC5oYW5kbGUoKSk7Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGFwcGxldEVsZW1lbnQtPmdldEFwcGxldElu
c3RhbmNlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgaW5zdGFuY2UgaXMgb3duZWQgYnkg
dGhlIGFwcGxldCBlbGVtZW50LgogICAgICAgICAgICAgICAgIFJ1bnRpbWVPYmplY3RJbXAgKmFw
cGxldEltcCA9IG5ldyBSdW50aW1lT2JqZWN0SW1wKGFwcGxldEVsZW1lbnQtPmdldEFwcGxldElu
c3RhbmNlKCksIGZhbHNlKTsKQEAgLTE2NzUsNyArMTY3NCw3IEBADQogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgaWYgKG5vZGUuaGFuZGxlKCktPmlkKCkgPT0gSURfRU1CRUQpIHsKICAgICAgICAg
ICAgIERPTTo6SFRNTEVtYmVkRWxlbWVudEltcGwgKmVtYmVkRWxlbWVudCA9IHN0YXRpY19jYXN0
PERPTTo6SFRNTEVtYmVkRWxlbWVudEltcGwgKj4oZWxlbWVudC5oYW5kbGUoKSk7Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgaWYgKGVtYmVkRWxlbWVudC0+Z2V0RW1iZWRJbnN0YW5jZSgp
KSB7CiAgICAgICAgICAgICAgICAgUnVudGltZU9iamVjdEltcCAqcnVudGltZUltcCA9IG5ldyBS
dW50aW1lT2JqZWN0SW1wKGVtYmVkRWxlbWVudC0+Z2V0RW1iZWRJbnN0YW5jZSgpLCBmYWxzZSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZhbHVlKHJ1bnRpbWVJbXApOwpAQCAtMTY4MywxNCAr
MTY4MiwxMyBAQA0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChub2RlLmhhbmRsZSgpLT5p
ZCgpID09IElEX09CSkVDVCkgewogICAgICAgICAgICAgRE9NOjpIVE1MT2JqZWN0RWxlbWVudElt
cGwgKm9iamVjdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhUTUxPYmplY3RFbGVtZW50SW1w
bCAqPihlbGVtZW50LmhhbmRsZSgpKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAo
b2JqZWN0RWxlbWVudC0+Z2V0T2JqZWN0SW5zdGFuY2UoKSkgewogICAgICAgICAgICAgICAgIFJ1
bnRpbWVPYmplY3RJbXAgKnJ1bnRpbWVJbXAgPSBuZXcgUnVudGltZU9iamVjdEltcChvYmplY3RF
bGVtZW50LT5nZXRPYmplY3RJbnN0YW5jZSgpLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIFZhbHVlKHJ1bnRpbWVJbXApOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQot
I2VuZGlmICAgIAogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBydW50aW1lIG9iamVjdCByZXR1
cm4gdGhlIGEgVmFsdWUgdGhhdCByZXBvcnRzIGlzTnVsbCgpID09IHRydWUuCiAgICAgcmV0dXJu
IFZhbHVlKCk7CiB9CkBAIC0xNzEwLDE4ICsxNzA4LDE4IEBADQogY29uc3QgQ2xhc3NJbmZvIE5v
ZGVDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIk5vZGVDb25zdHJ1Y3RvciIsIDAsICZOb2RlQ29uc3Ry
dWN0b3JUYWJsZSwgMCB9OwogLyogU291cmNlIGZvciBOb2RlQ29uc3RydWN0b3JUYWJsZS4gVXNl
ICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gTm9kZUNvbnN0cnVjdG9y
VGFibGUgMTEKLSAgRUxFTUVOVF9OT0RFCQlET006Ok5vZGU6OkVMRU1FTlRfTk9ERQkJRG9udERl
bGV0ZXxSZWFkT25seQotICBBVFRSSUJVVEVfTk9ERQlET006Ok5vZGU6OkFUVFJJQlVURV9OT0RF
CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIFRFWFRfTk9ERQkJRE9NOjpOb2RlOjpURVhUX05PREUJ
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgQ0RBVEFfU0VDVElPTl9OT0RFCURPTTo6Tm9kZTo6Q0RB
VEFfU0VDVElPTl9OT0RFCURvbnREZWxldGV8UmVhZE9ubHkKLSAgRU5USVRZX1JFRkVSRU5DRV9O
T0RFCURPTTo6Tm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFCURvbnREZWxldGV8UmVhZE9ubHkK
LSAgRU5USVRZX05PREUJCURPTTo6Tm9kZTo6RU5USVRZX05PREUJCURvbnREZWxldGV8UmVhZE9u
bHkKKyAgRUxFTUVOVF9OT0RFICAgICAgRE9NOjpOb2RlOjpFTEVNRU5UX05PREUgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgQVRUUklCVVRFX05PREUgICAgRE9NOjpOb2RlOjpBVFRSSUJVVEVf
Tk9ERSAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIFRFWFRfTk9ERSAgICAgRE9NOjpOb2Rl
OjpURVhUX05PREUgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgQ0RBVEFfU0VDVElPTl9O
T0RFICAgIERPTTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFICAgRG9udERlbGV0ZXxSZWFkT25s
eQorICBFTlRJVFlfUkVGRVJFTkNFX05PREUgRE9NOjpOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05P
REUgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBFTlRJVFlfTk9ERSAgICAgICBET006Ok5vZGU6
OkVOVElUWV9OT0RFICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREUgRE9NOjpOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgRG9udERl
bGV0ZXxSZWFkT25seQotICBDT01NRU5UX05PREUJCURPTTo6Tm9kZTo6Q09NTUVOVF9OT0RFCQlE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIERPQ1VNRU5UX05PREUJCURPTTo6Tm9kZTo6RE9DVU1FTlRf
Tk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQotICBET0NVTUVOVF9UWVBFX05PREUJRE9NOjpOb2Rl
OjpET0NVTUVOVF9UWVBFX05PREUJRG9udERlbGV0ZXxSZWFkT25seQotICBET0NVTUVOVF9GUkFH
TUVOVF9OT0RFIERPTTo6Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQlEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIE5PVEFUSU9OX05PREUJCURPTTo6Tm9kZTo6Tk9UQVRJT05fTk9ERQkJRG9udERl
bGV0ZXxSZWFkT25seQorICBDT01NRU5UX05PREUgICAgICBET006Ok5vZGU6OkNPTU1FTlRfTk9E
RSAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBET0NVTUVOVF9OT0RFICAgICBET006Ok5vZGU6
OkRPQ1VNRU5UX05PREUgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgRE9DVU1FTlRfVFlQ
RV9OT0RFICAgIERPTTo6Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIERPTTo6Tm9kZTo6RE9DVU1FTlRfRlJBR01F
TlRfTk9ERSAgRG9udERlbGV0ZXxSZWFkT25seQorICBOT1RBVElPTl9OT0RFICAgICBET006Ok5v
ZGU6Ok5PVEFUSU9OX05PREUgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBW
YWx1ZSBOb2RlQ29uc3RydWN0b3I6OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50
aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTE3NzcsMjEgKzE3NzUsMjEgQEANCiAKIC8q
IFNvdXJjZSBmb3IgRE9NRXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZS4gVXNlICJtYWtlIGhhc2h0
YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRXhjZXB0aW9uQ29uc3RydWN0b3JUYWJs
ZSAxNQotICBJTkRFWF9TSVpFX0VSUgkJRE9NOjpET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJS
CQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIERPTVNUUklOR19TSVpFX0VSUgkJRE9NOjpET01FeGNl
cHRpb246OkRPTVNUUklOR19TSVpFX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIEhJRVJBUkNI
WV9SRVFVRVNUX0VSUgkJRE9NOjpET01FeGNlcHRpb246OkhJRVJBUkNIWV9SRVFVRVNUX0VSUglE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIFdST05HX0RPQ1VNRU5UX0VSUgkJRE9NOjpET01FeGNlcHRp
b246OldST05HX0RPQ1VNRU5UX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIElOVkFMSURfQ0hB
UkFDVEVSX0VSUgkJRE9NOjpET01FeGNlcHRpb246OklOVkFMSURfQ0hBUkFDVEVSX0VSUglEb250
RGVsZXRlfFJlYWRPbmx5Ci0gIE5PX0RBVEFfQUxMT1dFRF9FUlIJCURPTTo6RE9NRXhjZXB0aW9u
OjpOT19EQVRBX0FMTE9XRURfRVJSCURvbnREZWxldGV8UmVhZE9ubHkKLSAgTk9fTU9ESUZJQ0FU
SU9OX0FMTE9XRURfRVJSCURPTTo6RE9NRXhjZXB0aW9uOjpOT19NT0RJRklDQVRJT05fQUxMT1dF
RF9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBOT1RfRk9VTkRfRVJSCQkJRE9NOjpET01FeGNl
cHRpb246Ok5PVF9GT1VORF9FUlIJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgTk9UX1NVUFBPUlRF
RF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpOT1RfU1VQUE9SVEVEX0VSUglEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIElOVVNFX0FUVFJJQlVURV9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlVTRV9B
VFRSSUJVVEVfRVJSCURvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9TVEFURV9FUlIJCURP
TTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX1NUQVRFX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IFNZTlRBWF9FUlIJCQlET006OkRPTUV4Y2VwdGlvbjo6U1lOVEFYX0VSUgkJRG9udERlbGV0ZXxS
ZWFkT25seQotICBJTlZBTElEX01PRElGSUNBVElPTl9FUlIJRE9NOjpET01FeGNlcHRpb246OklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIE5BTUVTUEFDRV9F
UlIJCQlET006OkRPTUV4Y2VwdGlvbjo6TkFNRVNQQUNFX0VSUgkJRG9udERlbGV0ZXxSZWFkT25s
eQotICBJTlZBTElEX0FDQ0VTU19FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX0FDQ0VT
U19FUlIJRG9udERlbGV0ZXxSZWFkT25seQorICBJTkRFWF9TSVpFX0VSUiAgICAgICAgRE9NOjpE
T01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAg
RE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6RE9NU1RSSU5HX1NJ
WkVfRVJSICAgRG9udERlbGV0ZXxSZWFkT25seQorICBISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAg
IERPTTo6RE9NRXhjZXB0aW9uOjpISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgRG9udERlbGV0ZXxS
ZWFkT25seQorICBXUk9OR19ET0NVTUVOVF9FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpX
Uk9OR19ET0NVTUVOVF9FUlIgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURfQ0hBUkFD
VEVSX0VSUiAgICAgRE9NOjpET01FeGNlcHRpb246OklOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICBE
b250RGVsZXRlfFJlYWRPbmx5CisgIE5PX0RBVEFfQUxMT1dFRF9FUlIgICAgICAgRE9NOjpET01F
eGNlcHRpb246Ok5PX0RBVEFfQUxMT1dFRF9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgTk9f
TU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSICAgRE9NOjpET01FeGNlcHRpb246Ok5PX01PRElGSUNB
VElPTl9BTExPV0VEX0VSUiAgRG9udERlbGV0ZXxSZWFkT25seQorICBOT1RfRk9VTkRfRVJSICAg
ICAgICAgRE9NOjpET01FeGNlcHRpb246Ok5PVF9GT1VORF9FUlIgICAgICAgIERvbnREZWxldGV8
UmVhZE9ubHkKKyAgTk9UX1NVUFBPUlRFRF9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT1Rf
U1VQUE9SVEVEX0VSUiAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIElOVVNFX0FUVFJJQlVURV9F
UlIgICAgICAgRE9NOjpET01FeGNlcHRpb246OklOVVNFX0FUVFJJQlVURV9FUlIgIERvbnREZWxl
dGV8UmVhZE9ubHkKKyAgSU5WQUxJRF9TVEFURV9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJ
TlZBTElEX1NUQVRFX0VSUiAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIFNZTlRBWF9FUlIgICAg
ICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6U1lOVEFYX0VSUiAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5CisgIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgRE9NOjpET01FeGNlcHRpb246OklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUiBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5BTUVTUEFDRV9F
UlIgICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6TkFNRVNQQUNFX0VSUiAgICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQorICBJTlZBTElEX0FDQ0VTU19FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0
aW9uOjpJTlZBTElEX0FDQ0VTU19FUlIgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwog
CkBAIC0xODc4LDE2ICsxODc2LDE2IEBADQogICAgICAgRE9NOjpOb2RlIG5vZGUgPSAqaXQ7CiAg
ICAgICBET006Ok5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gbm9kZS5hdHRyaWJ1dGVzKCk7CiAg
ICAgICBpZiAoYXR0cmlidXRlcy5pc051bGwoKSkgewotCWNvbnRpbnVlOworICAgIGNvbnRpbnVl
OwogICAgICAgfQogCiAgICAgICBET006Ok5vZGUgaWRBdHRyID0gYXR0cmlidXRlcy5nZXROYW1l
ZEl0ZW0oImlkIik7CiAgICAgICBpZiAoaWRBdHRyLmlzTnVsbCgpKSB7Ci0JY29udGludWU7Cisg
ICAgY29udGludWU7CiAgICAgICB9CiAKICAgICAgIGlmIChpZEF0dHIubm9kZVZhbHVlKCkgPT0g
cHJvcGVydHlOYW1lLnN0cmluZygpKSB7Ci0JcmV0dXJuIGdldERPTU5vZGUoZXhlYyxub2RlKTsK
KyAgICByZXR1cm4gZ2V0RE9NTm9kZShleGVjLG5vZGUpOwogICAgICAgfQogICAgIH0KICAgfQpA
QCAtMTg5OCwxOCArMTg5NiwxOCBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY29uc3QgQ2xh
c3NJbmZvIERPTUNoYXJhY3RlckRhdGE6OmluZm8gPSB7ICJDaGFyYWN0ZXJJbXAiLAotCQkJCQkg
ICZET01Ob2RlOjppbmZvLCAmRE9NQ2hhcmFjdGVyRGF0YVRhYmxlLCAwIH07CisgICAgICAgICAg
ICAgICAgICAgICAgJkRPTU5vZGU6OmluZm8sICZET01DaGFyYWN0ZXJEYXRhVGFibGUsIDAgfTsK
IC8qCiBAYmVnaW4gRE9NQ2hhcmFjdGVyRGF0YVRhYmxlIDIKLSAgZGF0YQkJRE9NQ2hhcmFjdGVy
RGF0YTo6RGF0YQkJRG9udERlbGV0ZQotICBsZW5ndGgJRE9NQ2hhcmFjdGVyRGF0YTo6TGVuZ3Ro
CURvbnREZWxldGV8UmVhZE9ubHkKKyAgZGF0YSAgICAgIERPTUNoYXJhY3RlckRhdGE6OkRhdGEg
ICAgICBEb250RGVsZXRlCisgIGxlbmd0aCAgICBET01DaGFyYWN0ZXJEYXRhOjpMZW5ndGggICAg
RG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogQGJlZ2luIERPTUNoYXJhY3RlckRhdGFQcm90b1Rh
YmxlIDcKLSAgc3Vic3RyaW5nRGF0YQlET01DaGFyYWN0ZXJEYXRhOjpTdWJzdHJpbmdEYXRhCURv
bnREZWxldGV8RnVuY3Rpb24gMgotICBhcHBlbmREYXRhCURPTUNoYXJhY3RlckRhdGE6OkFwcGVu
ZERhdGEJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGluc2VydERhdGEJRE9NQ2hhcmFjdGVyRGF0
YTo6SW5zZXJ0RGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgZGVsZXRlRGF0YQlET01DaGFy
YWN0ZXJEYXRhOjpEZWxldGVEYXRhCURvbnREZWxldGV8RnVuY3Rpb24gMgotICByZXBsYWNlRGF0
YQlET01DaGFyYWN0ZXJEYXRhOjpSZXBsYWNlRGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAg
c3Vic3RyaW5nRGF0YSBET01DaGFyYWN0ZXJEYXRhOjpTdWJzdHJpbmdEYXRhIERvbnREZWxldGV8
RnVuY3Rpb24gMgorICBhcHBlbmREYXRhICAgIERPTUNoYXJhY3RlckRhdGE6OkFwcGVuZERhdGEg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGluc2VydERhdGEgICAgRE9NQ2hhcmFjdGVyRGF0
YTo6SW5zZXJ0RGF0YSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgZGVsZXRlRGF0YSAgICBE
T01DaGFyYWN0ZXJEYXRhOjpEZWxldGVEYXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBy
ZXBsYWNlRGF0YSAgIERPTUNoYXJhY3RlckRhdGE6OlJlcGxhY2VEYXRhICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAyCiBAZW5kCiAqLwogREVGSU5FX1BST1RPVFlQRSgiRE9NQ2hhcmFjdGVyRGF0YSIs
RE9NQ2hhcmFjdGVyRGF0YVByb3RvKQpAQCAtMTkxNywxMyArMTkxNSwxMyBAQA0KIElNUExFTUVO
VF9QUk9UT1RZUEVfV0lUSF9QQVJFTlQoRE9NQ2hhcmFjdGVyRGF0YVByb3RvLERPTUNoYXJhY3Rl
ckRhdGFQcm90b0Z1bmMsIERPTU5vZGVQcm90bykKIAogRE9NQ2hhcmFjdGVyRGF0YTo6RE9NQ2hh
cmFjdGVyRGF0YShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6Q2hhcmFjdGVyRGF0YSAmZCkK
LSA6IERPTU5vZGUoZCkgCisgOiBET01Ob2RlKGQpCiB7CiAgIHNldFByb3RvdHlwZShET01DaGFy
YWN0ZXJEYXRhUHJvdG86OnNlbGYoZXhlYykpOwogfQogCiBET01DaGFyYWN0ZXJEYXRhOjpET01D
aGFyYWN0ZXJEYXRhKGNvbnN0IERPTTo6Q2hhcmFjdGVyRGF0YSAmZCkKLSA6IERPTU5vZGUoZCkg
CisgOiBET01Ob2RlKGQpCiB7CiB9CiAKQEAgLTE5NzQsOSArMTk3Miw5IEBADQogICAgICAgICBE
T006Ol9leGNlcHRpb25jb2RlID0gRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUjsKICAgICAg
ICAgcmV0dXJuIFVuZGVmaW5lZCgpOwogICAgICAgfQotI2Vsc2UgICAgICAKKyNlbHNlCiAgICAg
ICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSKTsKLSNl
bmRpZiAgICAgICAgCisjZW5kaWYKICAgICAgIHJldHVybiBnZXRTdHJpbmdPck51bGwoZGF0YS5z
dWJzdHJpbmdEYXRhKGFyZ3NbMF0udG9JbnQzMihleGVjKSwgY291bnQpKTsKICAgICB9CiAgICAg
Y2FzZSBET01DaGFyYWN0ZXJEYXRhOjpBcHBlbmREYXRhOgpAQCAtMTk5Myw5ICsxOTkxLDkgQEAN
CiAgICAgICAgIERPTTo6X2V4Y2VwdGlvbmNvZGUgPSBET01FeGNlcHRpb246OklOREVYX1NJWkVf
RVJSOwogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgICB9Ci0jZWxzZSAgICAgCisj
ZWxzZQogICAgICAgICB0aHJvdyBET01FeGNlcHRpb24oRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpF
X0VSUik7Ci0jZW5kaWYgIAorI2VuZGlmCiAgICAgICBkYXRhLmRlbGV0ZURhdGEoYXJnc1swXS50
b0ludDMyKGV4ZWMpLCBjb3VudCk7CiAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgfQpA
QCAtMjAwNyw5ICsyMDA1LDkgQEANCiAgICAgICAgIERPTTo6X2V4Y2VwdGlvbmNvZGUgPSBET01F
eGNlcHRpb246OklOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAg
ICAgICB9Ci0jZWxzZSAgICAgIAorI2Vsc2UKICAgICAgICAgdGhyb3cgRE9NRXhjZXB0aW9uKERP
TUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlIpOwotI2VuZGlmICAKKyNlbmRpZgogICAgICAgZGF0
YS5yZXBsYWNlRGF0YShhcmdzWzBdLnRvSW50MzIoZXhlYyksIGNvdW50LCBhcmdzWzJdLnRvU3Ry
aW5nKGV4ZWMpLnN0cmluZygpKTsKICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAgICB9CkBA
IC0yMDIxLDEwICsyMDE5LDEwIEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjb25zdCBDbGFz
c0luZm8gRE9NVGV4dDo6aW5mbyA9IHsgIlRleHQiLAotCQkJCSAmRE9NQ2hhcmFjdGVyRGF0YTo6
aW5mbywgMCwgMCB9OworICAgICAgICAgICAgICAgICAmRE9NQ2hhcmFjdGVyRGF0YTo6aW5mbywg
MCwgMCB9OwogLyoKIEBiZWdpbiBET01UZXh0UHJvdG9UYWJsZSAxCi0gIHNwbGl0VGV4dAlET01U
ZXh0OjpTcGxpdFRleHQJRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHNwbGl0VGV4dCBET01UZXh0
OjpTcGxpdFRleHQgIERvbnREZWxldGV8RnVuY3Rpb24gMQogQGVuZAogKi8KIERFRklORV9QUk9U
T1RZUEUoIkRPTVRleHQiLERPTVRleHRQcm90bykKQEAgLTIwMzIsOCArMjAzMCw4IEBADQogSU1Q
TEVNRU5UX1BST1RPVFlQRV9XSVRIX1BBUkVOVChET01UZXh0UHJvdG8sRE9NVGV4dFByb3RvRnVu
YyxET01DaGFyYWN0ZXJEYXRhUHJvdG8pCiAKIERPTVRleHQ6OkRPTVRleHQoRXhlY1N0YXRlICpl
eGVjLCBjb25zdCBET006OlRleHQgJnQpCi0gIDogRE9NQ2hhcmFjdGVyRGF0YSh0KSAKLXsgCisg
IDogRE9NQ2hhcmFjdGVyRGF0YSh0KQorewogICBzZXRQcm90b3R5cGUoRE9NVGV4dFByb3RvOjpz
ZWxmKGV4ZWMpKTsKIH0KIApJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHdvcmtp
bmcgY29weSkNCkBAIC0zMjIsNiArMzIyLDkgQEANCiAgICwgaGlzdG9yeSgwKQogICAsIGZyYW1l
cygwKQogICAsIGxvYygwKQorI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUworICAsIG1fd2lkZ2V0
KDApCisjZW5kaWYKICAgLCBtX3NlbGVjdGlvbigwKQogICAsIG1fbG9jYXRpb25iYXIoMCkKICAg
LCBtX21lbnViYXIoMCkKQEAgLTQ4Myw2ICs0ODYsMTAgQEANCiAgICAgbV9zdGF0dXNiYXItPm1h
cmsoKTsKICAgaWYgKG1fdG9vbGJhciAmJiAhbV90b29sYmFyLT5tYXJrZWQoKSkKICAgICBtX3Rv
b2xiYXItPm1hcmsoKTsKKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMKKyAgaWYgKG1fd2lkZ2V0
ICYmICFtX3dpZGdldC0+bWFya2VkKCkpCisgICAgbV93aWRnZXQtPm1hcmsoKTsKKyNlbmRpZgog
fQogCiBVU3RyaW5nIFdpbmRvdzo6dG9TdHJpbmcoRXhlY1N0YXRlICopIGNvbnN0CkBAIC04MDcs
NiArODE0LDEyIEBADQogI2VuZGlmCiAgICAgY2FzZSBMb2NhdGlvbmJhcjoKICAgICAgIHJldHVy
biBWYWx1ZShsb2NhdGlvbmJhcihleGVjKSk7CisjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRTCisg
ICAgY2FzZSBfV2lkZ2V0OgorICAgICAgICByZXR1cm4gVmFsdWUobV93aWRnZXQgPyBtX3dpZGdl
dCA6CisgICAgICAgICAgICAgICAgICAgKGNvbnN0X2Nhc3Q8V2luZG93Kj4odGhpcyktPm1fd2lk
Z2V0ID0gS1dRKG1fcGFydCktPmNyZWF0ZVdpZGdldE9iamVjdChleGVjKSkpOworCisjZW5kaWYK
ICAgICBjYXNlIE1lbnViYXI6CiAgICAgICByZXR1cm4gVmFsdWUobWVudWJhcihleGVjKSk7CiAg
ICAgY2FzZSBPZmZzY3JlZW5CdWZmZXJpbmc6CkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pz
X3dpbmRvdy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cu
aAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTEwMSwxMyArMTAxLDEzIEBADQogICAgIGJvb2wgaGFzVGltZW91
dHMoKTsKICAgICBRTWFwPGludCwgU2NoZWR1bGVkQWN0aW9uKj4gKnBhdXNlVGltZW91dHMoY29u
c3Qgdm9pZCAqa2V5KTsKICAgICB2b2lkIHJlc3VtZVRpbWVvdXRzKFFNYXA8aW50LCBTY2hlZHVs
ZWRBY3Rpb24qPipzYSwgY29uc3Qgdm9pZCAqa2V5KTsKLSAgICAKKwogICAgIEtKUzo6SW50ZXJw
cmV0ZXIgKmludGVycHJldGVyKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBpc1NhZmVTY3Jp
cHQgKGNvbnN0IEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXIgKm9yaWdpbiwgY29uc3QgS0pTOjpTY3Jp
cHRJbnRlcnByZXRlciAqdGFyZ2V0KTsKICNlbmRpZgogICAgIHZvaWQgc2NoZWR1bGVDbG9zZSgp
OwotICAgICAgICAKKwogICAgIGJvb2wgaXNTYWZlU2NyaXB0KEV4ZWNTdGF0ZSAqZXhlYykgY29u
c3Q7CiAgICAgTG9jYXRpb24gKmxvY2F0aW9uKCkgY29uc3Q7CiAgICAgU2VsZWN0aW9uICpzZWxl
Y3Rpb24oKSBjb25zdDsKQEAgLTE0MSwxMyArMTQxLDE3IEBADQogICAgICAgICAgICBTY3JlZW5U
b3AsIFNjcmVlbkxlZnQsCiAgICAgICAgICAgIFNjcm9sbFRvLCBTY3JvbGxYLCBTY3JvbGxZLCBN
b3ZlQnksIE1vdmVUbywgUmVzaXplQnksIFJlc2l6ZVRvLCBTZWxmLCBfV2luZG93LCBUb3AsIF9T
Y3JlZW4sCiAgICAgICAgICAgIEltYWdlLCBPcHRpb24sIEFsZXJ0LCBDb25maXJtLCBQcm9tcHQs
IE9wZW4sIFByaW50LCBTZXRUaW1lb3V0LCBDbGVhclRpbWVvdXQsCi0gICAgICAgICAgIEZvY3Vz
LCBHZXRTZWxlY3Rpb24sIEJsdXIsIENsb3NlLCBTZXRJbnRlcnZhbCwgQ2xlYXJJbnRlcnZhbCwg
Q2FwdHVyZUV2ZW50cywgCisgICAgICAgICAgIEZvY3VzLCBHZXRTZWxlY3Rpb24sIEJsdXIsIENs
b3NlLCBTZXRJbnRlcnZhbCwgQ2xlYXJJbnRlcnZhbCwgQ2FwdHVyZUV2ZW50cywKICAgICAgICAg
ICAgUmVsZWFzZUV2ZW50cywgQWRkRXZlbnRMaXN0ZW5lciwgUmVtb3ZlRXZlbnRMaXN0ZW5lciwg
WE1MSHR0cFJlcXVlc3QsIFhNTFNlcmlhbGl6ZXIsIERPTVBhcnNlciwKLSAgICAgT25hYm9ydCwg
T25ibHVyLCBPbmNoYW5nZSwgT25jbGljaywgT25kYmxjbGljaywgT25kcmFnZHJvcCwgT25lcnJv
ciwgCisgICAgIE9uYWJvcnQsIE9uYmx1ciwgT25jaGFuZ2UsIE9uY2xpY2ssIE9uZGJsY2xpY2ss
IE9uZHJhZ2Ryb3AsIE9uZXJyb3IsCiAgICAgIE9uZm9jdXMsIE9ua2V5ZG93biwgT25rZXlwcmVz
cywgT25rZXl1cCwgT25sb2FkLCBPbm1vdXNlZG93biwgT25tb3VzZW1vdmUsCiAgICAgICAgICAg
IE9ubW91c2VvdXQsIE9ubW91c2VvdmVyLCBPbm1vdXNldXAsIE9uV2luZG93TW91c2VXaGVlbCwg
T25tb3ZlLCBPbnJlc2V0LCBPbnJlc2l6ZSwgT25zY3JvbGwsIE9uc2VhcmNoLAogICAgICAgICAg
ICBPbnNlbGVjdCwgT25zdWJtaXQsIE9udW5sb2FkLCBPbmJlZm9yZXVubG9hZCwKLSAgICAgICAg
ICAgU3RhdHVzYmFyLCBUb29sYmFyLCBGcmFtZUVsZW1lbnQsIFNob3dNb2RhbERpYWxvZyB9Owor
ICAgICAgICAgICBTdGF0dXNiYXIsIFRvb2xiYXIsIEZyYW1lRWxlbWVudCwgU2hvd01vZGFsRGlh
bG9nCisjaWZkZWYgTk9LSUFfQ0hBTkdFUworICAgICAgICAgICAsX1dpZGdldAorI2VuZGlmCisg
ICAgICAgICAgIH07CiAgIHByb3RlY3RlZDoKICAgICBWYWx1ZSBnZXRMaXN0ZW5lcihFeGVjU3Rh
dGUgKmV4ZWMsIGludCBldmVudElkKSBjb25zdDsKICAgICB2b2lkIHNldExpc3RlbmVyKEV4ZWNT
dGF0ZSAqZXhlYywgaW50IGV2ZW50SWQsIFZhbHVlIGZ1bmMpOwpAQCAtMTU1LDYgKzE1OSw5IEBA
DQogICAgIHZvaWQgdXBkYXRlTGF5b3V0KGJvb2wgaWdub3JlU3R5bGVzaGVldHMgPSB0cnVlKSBj
b25zdDsKIAogICAgIFFHdWFyZGVkUHRyPEtIVE1MUGFydD4gbV9wYXJ0OworI2lmZGVmIFJEX0JS
T1dTRVJfV0lER0VUUworICAgIE9iamVjdEltcCAqbV93aWRnZXQ7CisjZW5kaWYKICAgICBTY3Jl
ZW4gKnNjcmVlbjsKICAgICBIaXN0b3J5ICpoaXN0b3J5OwogICAgIEZyYW1lQXJyYXkgKmZyYW1l
czsKQEAgLTI0MSw4ICsyNDgsOCBAQA0KICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBjb25zdCBWYWx1ZSAmdmFsdWUs
IGludCBhdHRyID0gTm9uZSk7CiAgICAgdmlydHVhbCBWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3Rh
dGUgKmV4ZWMsIFR5cGUgcHJlZmVycmVkKSBjb25zdDsKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9T
dHJpbmcoRXhlY1N0YXRlICpleGVjKSBjb25zdDsKLSAgICBlbnVtIHsgQW5jaG9yTm9kZSwgQW5j
aG9yT2Zmc2V0LCBGb2N1c05vZGUsIEZvY3VzT2Zmc2V0LCBCYXNlTm9kZSwgQmFzZU9mZnNldCwg
RXh0ZW50Tm9kZSwgRXh0ZW50T2Zmc2V0LCAKLSAgICAgICAgICAgSXNDb2xsYXBzZWQsIF9UeXBl
LCBFcXVhbEVxdWFsLCBDb2xsYXBzZSwgQ29sbGFwc2VUb0VuZCwgQ29sbGFwc2VUb1N0YXJ0LCBF
bXB0eSwgVG9TdHJpbmcsIAorICAgIGVudW0geyBBbmNob3JOb2RlLCBBbmNob3JPZmZzZXQsIEZv
Y3VzTm9kZSwgRm9jdXNPZmZzZXQsIEJhc2VOb2RlLCBCYXNlT2Zmc2V0LCBFeHRlbnROb2RlLCBF
eHRlbnRPZmZzZXQsCisgICAgICAgICAgIElzQ29sbGFwc2VkLCBfVHlwZSwgRXF1YWxFcXVhbCwg
Q29sbGFwc2UsIENvbGxhcHNlVG9FbmQsIENvbGxhcHNlVG9TdGFydCwgRW1wdHksIFRvU3RyaW5n
LAogICAgICAgICAgICBTZXRCYXNlQW5kRXh0ZW50LCBTZXRQb3NpdGlvbiwgTW9kaWZ5IH07CiAg
ICAgS0hUTUxQYXJ0ICpwYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJ0OyB9CiAgICAgdmlydHVh
bCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Cklu
ZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5sdXQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5sdXQuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTI5LDEwICsyOSwxMCBAQA0KICAgIHsgIkNTU1J1bGUiLCBXaW5kb3c6OkNTU1J1bGUsIERvbnRE
ZWxldGUsIDAsICZXaW5kb3dUYWJsZUVudHJpZXNbMTEyXSB9LAogICAgeyAibGVuZ3RoIiwgV2lu
ZG93OjpMZW5ndGgsIERvbnREZWxldGV8UmVhZE9ubHksIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwg
MCwgMCB9LAorICAgeyAid2lkZ2V0IiwgV2luZG93OjpfV2lkZ2V0LCBEb250RGVsZXRlfEZ1bmN0
aW9uLCAwLCAwIH0sCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9
LAogICAgeyAwLCAwLCAwLCAwLCAwIH0sCi0gICB7IDAsIDAsIDAsIDAsIDAgfSwKICAgIHsgInBy
aW50IiwgV2luZG93OjpQcmludCwgRG9udERlbGV0ZXxGdW5jdGlvbiwgMiwgJldpbmRvd1RhYmxl
RW50cmllc1sxMTFdIH0sCiAgICB7ICJvcGVuZXIiLCBXaW5kb3c6Ok9wZW5lciwgRG9udERlbGV0
ZXxSZWFkT25seSwgMCwgMCB9LAogICAgeyAicGFyZW50IiwgV2luZG93OjpQYXJlbnQsIERvbnRE
ZWxldGV8UmVhZE9ubHksIDAsIDAgfSwKSW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29i
amVjdGltcGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfb2Jq
ZWN0aW1wbC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1s
X29iamVjdGltcGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTk5LDcgKzE5OSw2IEBADQogfQog
CiAjaWYgQVBQTEVfQ0hBTkdFUwotI2lmICFOT0tJQV9DSEFOR0VTCiBLSlM6OkJpbmRpbmdzOjpJ
bnN0YW5jZSAqSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpnZXRBcHBsZXRJbnN0YW5jZSgpIGNvbnN0
CiB7CiAgICAgS0hUTUxQYXJ0KiBwYXJ0ID0gZ2V0RG9jdW1lbnQoKS0+cGFydCgpOwpAQCAtMjA4
LDcgKzIwNyw3IEBADQogCiAgICAgaWYgKGFwcGxldEluc3RhbmNlKQogICAgICAgICByZXR1cm4g
YXBwbGV0SW5zdGFuY2U7Ci0KKyNpZiAhTk9LSUFfQ0hBTkdFUwogICAgIFJlbmRlckFwcGxldCAq
ciA9IHN0YXRpY19jYXN0PFJlbmRlckFwcGxldCo+KG1fcmVuZGVyKTsKICAgICBpZiAocikgewog
ICAgICAgICByLT5jcmVhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpOwpAQCAtMjE5LDkgKzIxOCw5IEBA
DQogICAgICAgICAgICAgYXBwbGV0SW5zdGFuY2UgPSBLV1EocGFydCktPmdldEFwcGxldEluc3Rh
bmNlRm9yVmlldygoTlNWaWV3ICopX3ZpZXcpOwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAg
ICAgcmV0dXJuIGFwcGxldEluc3RhbmNlOwogfQotI2VuZGlmCiAKIHZvaWQgSFRNTEFwcGxldEVs
ZW1lbnRJbXBsOjpjbG9zZVJlbmRlcmVyKCkKIHsKQEAgLTI0Myw5ICsyNDIsNyBAQA0KIAogSFRN
TEVtYmVkRWxlbWVudEltcGw6OkhUTUxFbWJlZEVsZW1lbnRJbXBsKERvY3VtZW50UHRyICpkb2Mp
CiAgICAgOiBIVE1MRWxlbWVudEltcGwoZG9jKQotI2lmICFOT0tJQV9DSEFOR0VTCiAgICAgLCBl
bWJlZEluc3RhbmNlKDApCi0jZW5kaWYKIHsKICNpZiBOT0tJQV9DSEFOR0VTCiAgIG5lZWRXaWRn
ZXRVcGRhdGUgPSBmYWxzZTsKQEAgLTI2MSw3ICsyNTgsNyBAQA0KICAgICByZXR1cm4gSURfRU1C
RUQ7CiB9CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVf
Q0hBTkdFUwogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKkhUTUxFbWJlZEVsZW1lbnRJbXBsOjpn
ZXRFbWJlZEluc3RhbmNlKCkgY29uc3QKIHsKICAgICBLSFRNTFBhcnQqIHBhcnQgPSBnZXREb2N1
bWVudCgpLT5wYXJ0KCk7CkBAIC0yNzcsMTAgKzI3NCwxNyBAQA0KICAgICAgICAgICAgIC8vIENh
bGwgaW50byB0aGUgcGFydCAoYW5kIG92ZXIgdGhlIGJyaWRnZSkgdG8gcHVsbCB0aGUgQmluZGlu
Z3M6Okluc3RhbmNlCiAgICAgICAgICAgICAvLyBmcm9tIHRoZSBndXRzIG9mIHRoZSBKYXZhIFZN
LgogICAgICAgICAgICAgdm9pZCAqX3ZpZXcgPSByLT53aWRnZXQoKS0+Z2V0VmlldygpOworI2lm
IE5PS0lBX0NIQU5HRVMKKyAgICAgICAgICAgIGVtYmVkSW5zdGFuY2UgPSBLV1EocGFydCktPmdl
dEVtYmVkSW5zdGFuY2VGb3JWaWV3KChNV2ViQ29yZVdpZGdldCAqKV92aWV3KTsKKyAgICAgICAg
ICAgIC8vIEFwcGxldCBtYXkgc3BlY2lmaWVkIHdpdGggPGVtYmVkPiB0YWcuCisgICAgICAgICAg
ICBpZiAoIWVtYmVkSW5zdGFuY2UpCisgICAgICAgICAgICAgICAgZW1iZWRJbnN0YW5jZSA9IEtX
UShwYXJ0KS0+Z2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3KChNV2ViQ29yZVdpZGdldCAqKV92aWV3
KTsKKyNlbHNlCiAgICAgICAgICAgICBlbWJlZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRFbWJl
ZEluc3RhbmNlRm9yVmlldygoTlNWaWV3ICopX3ZpZXcpOwogICAgICAgICAgICAgLy8gQXBwbGV0
IG1heSBzcGVjaWZpZWQgd2l0aCA8ZW1iZWQ+IHRhZy4KICAgICAgICAgICAgIGlmICghZW1iZWRJ
bnN0YW5jZSkKICAgICAgICAgICAgICAgICBlbWJlZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRB
cHBsZXRJbnN0YW5jZUZvclZpZXcoKE5TVmlldyAqKV92aWV3KTsKKyNlbmRpZgogICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiBlbWJlZEluc3RhbmNlOwpAQCAtNTY4LDcgKzU3Miw3IEBADQog
ICAgIHJldHVybiBJRF9PQkpFQ1Q7CiB9CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9D
SEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKkhUTUxP
YmplY3RFbGVtZW50SW1wbDo6Z2V0T2JqZWN0SW5zdGFuY2UoKSBjb25zdAogewogICAgIEtIVE1M
UGFydCogcGFydCA9IGdldERvY3VtZW50KCktPnBhcnQoKTsKQEAgLTU4MSw3ICs1ODUsMTEgQEAN
CiAgICAgaWYgKFJlbmRlck9iamVjdCAqciA9IG1fcmVuZGVyKSB7CiAgICAgICAgIGlmIChyLT5p
c1dpZGdldCgpKSB7CiAgICAgICAgICAgICBpZiAoUVdpZGdldCAqd2lkZ2V0ID0gc3RhdGljX2Nh
c3Q8UmVuZGVyV2lkZ2V0ICo+KHIpLT53aWRnZXQoKSkgeworI2lmIE5PS0lBX0NIQU5HRVMgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKE1XZWJDb3JlV2lkZ2V0ICp2aWV3ID0g
d2lkZ2V0LT5nZXRWaWV3KCkpICB7CisjZWxzZQogICAgICAgICAgICAgICAgIGlmIChOU1ZpZXcg
KnZpZXcgPSB3aWRnZXQtPmdldFZpZXcoKSkgIHsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAvLyBDYWxsIGludG8gdGhlIHBhcnQgKGFuZCBvdmVyIHRoZSBicmlkZ2UpIHRvIHB1bGwgdGhl
IEJpbmRpbmdzOjpJbnN0YW5jZQogICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBndXRz
IG9mIHRoZSBwbHVnaW4uCiAgICAgICAgICAgICAgICAgICAgIG9iamVjdEluc3RhbmNlID0gS1dR
KHBhcnQpLT5nZXRPYmplY3RJbnN0YW5jZUZvclZpZXcodmlldyk7CkluZGV4OiBXZWJDb3JlL2to
dG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1s
L2h0bWwvaHRtbF9vYmplY3RpbXBsLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0
bWwvaHRtbC9odG1sX29iamVjdGltcGwuaAkod29ya2luZyBjb3B5KQ0KQEAgLTY0LDE5ICs2NCwx
NiBAQA0KICNpZiBBUFBMRV9DSEFOR0VTCiAgICAgdmlydHVhbCBib29sIGFsbFBhcmFtc0F2YWls
YWJsZSgpOwogICAgIHZvaWQgc2V0dXBBcHBsZXQoKSBjb25zdDsKLSNpZiAhTk9LSUFfQ0hBTkdF
UworCiAgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEFwcGxldEluc3RhbmNlKCkgY29u
c3Q7CiAjZW5kaWYKLSNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAga2h0bWw6OlZBbGlnbiB2YWxp
Z247CiAKIHByaXZhdGU6CiAjaWYgQVBQTEVfQ0hBTkdFUwotI2lmICFOT0tJQV9DSEFOR0VTCiAg
ICAgbXV0YWJsZSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqYXBwbGV0SW5zdGFuY2U7Ci0jZW5k
aWYKICAgICBib29sIG1fYWxsUGFyYW1zQXZhaWxhYmxlOwogI2VuZGlmCiB9OwpAQCAtMTEzLDcg
KzExMCw3IEBADQogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50SW1w
bCAqZXZ0KTsKICNlbmRpZgogCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUwor
I2lmIEFQUExFX0NIQU5HRVMKICAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0RW1iZWRJ
bnN0YW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTEyNCw3ICsxMjEsNyBAQA0KICAgYm9vbCBu
ZWVkV2lkZ2V0VXBkYXRlOwogICAgIEhUTUxJbWFnZUxvYWRlciogbV9pbWFnZUxvYWRlcjsKICNl
bmRpZgotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFO
R0VTCiBwcml2YXRlOgogICAgIG11dGFibGUgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmVtYmVk
SW5zdGFuY2U7CiAjZW5kaWYKQEAgLTE4Niw3ICsxODMsNyBAQA0KIAogICAgIHZvaWQgcmVuZGVy
RmFsbGJhY2tDb250ZW50KCk7CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VT
CisjaWYgQVBQTEVfQ0hBTkdFUwogICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRPYmpl
Y3RJbnN0YW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTE5Nyw3ICsxOTQsNyBAQA0KICAgICBi
b29sIG1fdXNlRmFsbGJhY2tDb250ZW50IDogMTsKICAgICBIVE1MSW1hZ2VMb2FkZXIqIG1faW1h
Z2VMb2FkZXI7CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQ
TEVfQ0hBTkdFUwogcHJpdmF0ZToKICAgICBtdXRhYmxlIEtKUzo6QmluZGluZ3M6Okluc3RhbmNl
ICpvYmplY3RJbnN0YW5jZTsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5jcHAJKHJldmlz
aW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5jcHAJKHdvcmtpbmcgY29w
eSkNCkBAIC02Miw2ICs2Miw4IEBADQogI2luY2x1ZGUgImtqc193aW5kb3cuaCIKICNlbmRpZgog
CisjaW5jbHVkZSAicHJvdGVjdC5oIgorI2luY2x1ZGUgImtqc193aW5kb3cuaCIKICNpbmNsdWRl
ICJyZW5kZXJfY2FudmFzLmgiCiAjaW5jbHVkZSAicmVuZGVyX2ZyYW1lcy5oIgogI2luY2x1ZGUg
InJlbmRlcl9pbWFnZS5oIgpAQCAtMjE5LDEwICsyMjEsOSBAQA0KICAgICAsIF91c2VzSW5hY3Rp
dmVUZXh0QmFja2dyb3VuZENvbG9yKGZhbHNlKQogICAgICwgX3Nob3dzRmlyc3RSZXNwb25kZXIo
dHJ1ZSkKICAgICAsIF9kcmF3U2VsZWN0aW9uT25seShmYWxzZSkKLSNpZiAhS0hUTUxfTk9fU0NS
SVBUSU5HCi0vLyAgICAsIF9iaW5kaW5nUm9vdCgwKQorICAgICwgX3dpbmRvd1NjcmlwdE5QT2Jq
ZWN0KDApCisgICAgLCBfYmluZGluZ1Jvb3QoMCkKICAgICAsIF93aW5kb3dTY3JpcHRPYmplY3Qo
MCkKLSNlbmRpZgogLy8gICAgLCBfZHJhZ1NyYygwKQogLy8gICAgLCBfZHJhZ0NsaXBib2FyZCgw
KQogICAgICwgX2VsZW1lbnRUb0RyYXcoMCkKQEAgLTc0OSw3ICs3NTAsNyBAQA0KICAgICAvLyBG
SVhNRTogRnJhbWUgdGFyZ2V0aW5nIGlzIG9ubHkgb25lIG9mIHRoZSB3YXlzIHRoZSBzdWJtaXNz
aW9uIGNvdWxkIGVuZCB1cCBkb2luZyBzb21ldGhpbmcgb3RoZXIKICAgICAvLyB0aGFuIHJlcGxh
Y2luZyB0aGlzIGZyYW1lJ3MgY29udGVudCwgc28gdGhpcyBjaGVjayBpcyBmbGF3ZWQuIE9uIHRo
ZSBvdGhlciBoYW5kLCB0aGUgY2hlY2sgaXMgaGFyZGx5CiAgICAgLy8gbmVlZGVkIGFueSBtb3Jl
IG5vdyB0aGF0IHdlIHJlc2V0IF9zdWJtaXR0ZWRGb3JtVVJMIG9uIGVhY2ggbW91c2Ugb3Iga2V5
IGRvd24gZXZlbnQuCi0gICAgCisKICAgICBDV2ViQ29yZUJyaWRnZSAqdGFyZ2V0ID0gYXJncy5m
cmFtZU5hbWUuaXNFbXB0eSgpID8gX2JyaWRnZSA6IF9icmlkZ2UtPkNsaWVudCgpLkZpbmRGcmFt
ZU5hbWVkKGFyZ3MuZnJhbWVOYW1lLkRlcygpKTsKICAgICBLSFRNTFBhcnQgKnRhcmdldFBhcnQg
PSB0YXJnZXQtPlBhcnQoKTsKICAgICBib29sIHdpbGxSZXBsYWNlVGhpc0ZyYW1lID0gZmFsc2U7
CkBAIC03NTksNyArNzYwLDcgQEANCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KLSAgICAKKwogICAgIGlmICh3aWxsUmVwbGFjZVRoaXNGcmFtZSkgewogICAgICAgICBpZiAo
X3N1Ym1pdHRlZEZvcm1VUkwgPT0gdXJsKSB7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjYw
LDggKzEyNjEsNyBAQA0KICAgfQogfQogCi0jaWYgIUtIVE1MX05PX1NDUklQVElORwotLypLSlM6
OkJpbmRpbmdzOjpSb290T2JqZWN0ICpLV1FLSFRNTFBhcnQ6OmJpbmRpbmdSb290T2JqZWN0KCkK
K0tKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKktXUUtIVE1MUGFydDo6YmluZGluZ1Jvb3RPYmpl
Y3QoKQogewogICAgIGlmICghX2JpbmRpbmdSb290KSB7CiAgICAgICAgIF9iaW5kaW5nUm9vdCA9
IG5ldyBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0KDApOyAgICAvLyBUaGUgcm9vdCBnZXRzIGRl
bGV0ZWQgYnkgSmF2YVNjcmlwdENvcmUuCkBAIC0xMjczLDcgKzEyNzMsOCBAQA0KICAgICByZXR1
cm4gX2JpbmRpbmdSb290OwogfQogCi1XZWJTY3JpcHRPYmplY3QgKktXUUtIVE1MUGFydDo6d2lu
ZG93U2NyaXB0T2JqZWN0KCkKKworLypXZWJTY3JpcHRPYmplY3QgKktXUUtIVE1MUGFydDo6d2lu
ZG93U2NyaXB0T2JqZWN0KCkKIHsKICAgICBpZiAoIV93aW5kb3dTY3JpcHRPYmplY3QpIHsKICAg
ICAgICAgS0pTOjpPYmplY3RJbXAgKndpbiA9IHN0YXRpY19jYXN0PEtKUzo6T2JqZWN0SW1wICo+
KEtKUzo6V2luZG93OjpyZXRyaWV2ZVdpbmRvdyh0aGlzKSk7CkBAIC0xMjgyLDcgKzEyODMsNiBA
QA0KIAogICAgIHJldHVybiBfd2luZG93U2NyaXB0T2JqZWN0OwogfSovCi0jZW5kaWYKIAogdm9p
ZCBLV1FLSFRNTFBhcnQ6OnBhcnRDbGVhcmVkSW5CZWdpbigpCiB7CkBAIC0yOTU5LDQ2ICsyOTU5
LDQ2IEBADQogCiB2b2lkIEtXUUtIVE1MUGFydDo6Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShjb25z
dCBURGVzQyYgYVRleHRFbnRyeSwgY29uc3QgRE9NOjpOb2RlJiBhTm9kZSwgUkFycmF5PFRSZWN0
PiYgYUVudHJ5UmVjdExpc3QpCiB7Ci0gIAotICAgIFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZzo6
RnJvbURlcyhhVGV4dEVudHJ5KTsgICAgCi0gICAgCisKKyAgICBRU3RyaW5nIHRhcmdldCA9IFFT
dHJpbmc6OkZyb21EZXMoYVRleHRFbnRyeSk7CisKICAgICBjb25zdCBsb25nIHN0YXJ0ID0gMDsK
LSAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihh
Tm9kZS5oYW5kbGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgICAgICAKKyAgUmVuZGVyVGV4dCogdGV4
dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihhTm9kZS5oYW5kbGUoKS0+cmVu
ZGVyZXIoKSk7CiAgIGNvbnN0IGxvbmcgb2Zmc2V0ID0gdGV4dFJlbmRlcmVyLT5sZW5ndGgoKTsK
LSAgICBSYW5nZSBzZWFyY2hSYW5nZShhTm9kZSwgc3RhcnQsIGFOb2RlLCBvZmZzZXQpOyAgICAg
Ci0gICAgICAgIAorICAgIFJhbmdlIHNlYXJjaFJhbmdlKGFOb2RlLCBzdGFydCwgYU5vZGUsIG9m
ZnNldCk7CisKICAgICBSYW5nZSByZXN1bHRSYW5nZSA9IGtodG1sOjpmaW5kUGxhaW5UZXh0KHNl
YXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUpOwogCiAgIHdoaWxlICghcmVzdWx0UmFuZ2Uu
Y29sbGFwc2VkKCkpCiAgICAgewotICAgICAgICAKKwogICAgIHNldFNlbGVjdGlvbihraHRtbDo6
U2VsZWN0aW9uKHJlc3VsdFJhbmdlLCBraHRtbDo6RE9XTlNUUkVBTSwga2h0bWw6OlNFTF9QUkVG
RVJfVVBTVFJFQU1fQUZGSU5JVFkpLCBmYWxzZSk7Ci0gICAgCi0gICAgCi0gICAgaWYgKGQtPm1f
c2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkpIAorCisKKyAgICBpZiAoZC0+bV9zZWxlY3Rp
b24uc3RhcnQoKS5pc05vdE51bGwoKSkKICAgICAgIHsKLSAgICAgIGlmIChkLT5tX3NlbGVjdGlv
bi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5v
ZGUoKS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpICAgICAgICAgICAgIAorICAgICAgaWYgKGQtPm1f
c2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0
YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RleHQoKSkKICAgICAgICAgewotICAgICAgICAv
L2dldCB0aGUgc2VsZWN0aW9uIHJlY3QgICAgCi0gICAgICAgIFJlbmRlclRleHQgKnJ0ID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVu
ZGVyZXIoKSk7ICAgICAgCi0gICAgICAgICAgICAgIGlmIChydCkgCisgICAgICAgIC8vZ2V0IHRo
ZSBzZWxlY3Rpb24gcmVjdAorICAgICAgICBSZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJl
bmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOwor
ICAgICAgICAgICAgICBpZiAocnQpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgUVJlY3QgclNlbGVjdGlvbiA9IHJ0LT5zZWxlY3Rpb25SZWN0KCk7Ci0gICAgICAgICAgICAg
ICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVjdGlvbik7ICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVjdGlv
bik7CiAgICAgICAgICAgICAgICAgICBhRW50cnlSZWN0TGlzdC5BcHBlbmQoVFJlY3QoclNlbGVj
dGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9wKCksIHJTZWxlY3Rpb24ucmlnaHQoKSwgclNlbGVj
dGlvbi5ib3R0b20oKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgfSAg
ICAgCi0gICAgICAKLSAgICAKLSAgICAgICAgc2VhcmNoUmFuZ2Uuc2V0U3RhcnQoYU5vZGUsIHJl
c3VsdFJhbmdlLmVuZE9mZnNldCgpKTsgICAgICAgICAgICAgCisgICAgICB9CisKKworICAgICAg
ICBzZWFyY2hSYW5nZS5zZXRTdGFydChhTm9kZSwgcmVzdWx0UmFuZ2UuZW5kT2Zmc2V0KCkpOwog
ICAgICAgICBzZWFyY2hSYW5nZS5zZXRFbmQoYU5vZGUsIG9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICByZXN1bHRSYW5nZSA9IGtodG1sOjpmaW5kUGxhaW5UZXh0KHNlYXJj
aFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUpOyAgICAKLSAgICB9ICAgCiAKKyAgICAgIHJlc3Vs
dFJhbmdlID0ga2h0bWw6OmZpbmRQbGFpblRleHQoc2VhcmNoUmFuZ2UsIHRhcmdldCwgdHJ1ZSwg
dHJ1ZSk7CisgICAgfQorCiAgICAgY2xlYXJTZWxlY3Rpb24oKTsKLSAgICAgIAorCiB9CiAKIC8q
CkBAIC0zMDA5LDUyICszMDA5LDUyIEBADQogICAgICAgewogICAgICAgICBkLT5tX2ZpcnN0Rm91
bmQgPSBkLT5tX3NlbGVjdGlvbjsKICAgICAgIH0KLSAgICBlbHNlIAotICAgICAgeyAgICAgICAg
CisgICAgZWxzZQorICAgICAgewogICAgICAgICBkLT5tX2ZpcnN0Rm91bmQgPSBraHRtbDo6U2Vs
ZWN0aW9uKCk7CiAgICAgICB9Ci0gICAgCisKICAga2h0bWw6OlNlbGVjdGlvbiBmaXJzdEZvdW5k
KGQtPm1fZmlyc3RGb3VuZCk7CiAgIGtodG1sOjpTZWxlY3Rpb24gbGFzdEZvdW5kKGQtPm1fbGFz
dEZvdW5kKTsKICAga2h0bWw6OlNlbGVjdGlvbiBjdXJzZWxlY3Rpb24oZC0+bV9zZWxlY3Rpb24p
OwogCiAKICAgICBUSW50IHJlc3VsdCA9IEZpbmRTdHJpbmcoYVRleHRFbnRyeSwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gIAorCiAgIHdoaWxlIChyZXN1bHQgPT0gVEJyQ3RsRGVmczo6RUZp
bmRNYXRjaCkKICAgICB7CiAKLSAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51
bGwoKSkgCisgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkpCiAgICAg
ICB7Ci0gICAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkg
JiYgZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGV4dCgpKSAg
ICAgICAgICAgICAKKyAgICAgIGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVu
ZGVyZXIoKSAmJiBkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNU
ZXh0KCkpCiAgICAgICAgIHsKLSAgICAgICAgLy9nZXQgdGhlIHNlbGVjdGlvbiByZWN0ICAgIAot
ICAgICAgICBSZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9z
ZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOyAgICAgIAotICAgICAgICAgICAg
ICBpZiAocnQpIAorICAgICAgICAvL2dldCB0aGUgc2VsZWN0aW9uIHJlY3QKKyAgICAgICAgUmVu
ZGVyVGV4dCAqcnQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGQtPm1fc2VsZWN0aW9uLnN0
YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgaWYgKHJ0KQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIFFSZWN0IHJTZWxlY3Rpb24gPSBydC0+c2Vs
ZWN0aW9uUmVjdCgpOwogCiAgICAgICAgICAgYm9vbCBiRXhpc3RzID0gRUZhbHNlOwotICAgICAg
ICAgICAgZm9yKGludCBpID0gMDtpIDwgX2ZvY3VzYWJsZU5vZGVMaXN0LT5jb3VudCgpO2krKykg
CisgICAgICAgICAgICBmb3IoaW50IGkgPSAwO2kgPCBfZm9jdXNhYmxlTm9kZUxpc3QtPmNvdW50
KCk7aSsrKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUVJlY3QgbnIgPSBfZm9j
dXNhYmxlTm9kZUxpc3QtPm9wZXJhdG9yW10oaSk7CiAgICAgICAgICAgICAgICAgaWYoIW5yLmlu
dGVyc2VjdHMoclNlbGVjdGlvbikpCi0gICAgICAgICAgICAgICAgICB7ICAgICAKKyAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGJFeGlzdHMgPSBFVHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAKKwogICAgICAg
ICAgIGlmICghYkV4aXN0cykKLSAgICAgICAgICAgIHsgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVjdGlvbik7ICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBfZm9jdXNhYmxlTm9kZUxp
c3QtPmFwcGVuZChyU2VsZWN0aW9uKTsKICAgICAgICAgICAgIH0KLSAgICAgIAorCiAgICAgICAg
ICAgICAgICAgICBhRW50cnlSZWN0TGlzdC5BcHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCks
IHJTZWxlY3Rpb24udG9wKCksIHJTZWxlY3Rpb24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20o
KSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQotICAgICAgCisKICAg
ICByZXN1bHQgPSBGaW5kU3RyaW5nKGFUZXh0RW50cnksIHRydWUsIHRydWUsIHRydWUsIHRydWUp
OwogICAgIH0KIApAQCAtMzA2Miw3ICszMDYyLDcgQEANCiAgIGQtPm1fZmlyc3RGb3VuZCA9IGZp
cnN0Rm91bmQ7CiAgIGQtPm1fbGFzdEZvdW5kID0gbGFzdEZvdW5kOwogICBkLT5tX3NlbGVjdGlv
biA9IGN1cnNlbGVjdGlvbjsKLSAgICAgICAgCisKIH0KICovCiAvLyByZXR1cm5zIE5TUmVjdCBi
ZWNhdXNlIGdvaW5nIHRocm91Z2ggUVJlY3Qgd291bGQgdHJ1bmNhdGUgYW55IGZsb2F0cwpAQCAt
MzM1NiwyMyArMzM1NiwyMSBAQA0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYKIAog
dm9pZCBLV1FLSFRNTFBhcnQ6OmFkZFBsdWdpblJvb3RPYmplY3QoY29uc3QgS0pTOjpCaW5kaW5n
czo6Um9vdE9iamVjdCAqcm9vdCkKIHsKICAgICByb290T2JqZWN0cy5hcHBlbmQgKHJvb3QpOwog
fQotI2VuZGlmCiAKIHZvaWQgS1dRS0hUTUxQYXJ0OjpjbGVhbnVwUGx1Z2luUm9vdE9iamVjdHMo
KQogewogLy8gIyMjIE5PVCBJTVBMRU1FTlRFRCBzY3JpcHRpbmcsIHBsdWdpbnMKLS8qCiAgICAg
S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdDsKICAgICB3aGlsZSAoKHJvb3QgPSByb290
T2JqZWN0cy5nZXRMYXN0KCkpKSB7CiAgICAgICAgIHJvb3QtPnJlbW92ZUFsbE5hdGl2ZVJlZmVy
ZW5jZXMgKCk7CiAgICAgICAgIHJvb3RPYmplY3RzLnJlbW92ZUxhc3QoKTsKICAgICB9Ci0qLwog
fQogCiAKQEAgLTM3OTMsNyArMzc5MSw3IEBADQogICAgICAgICAgIFFQb2ludCBucCA9IG5lYXJl
c3RQb2ludEluUmVjdChfY3Vyc29yUG9zaXRpb24saW50ZXJzZWN0UmVjdCk7CiAgICAgICAgICAg
aW50IHggPSAobnAueCgpIC0gX2N1cnNvclBvc2l0aW9uLngoKSk7CiAgICAgICAgICAgaW50IHkg
PSAobnAueSgpIC0gX2N1cnNvclBvc2l0aW9uLnkoKSk7Ci0gICAgICAgICAgCisKICAgICAgICAg
ICBpZihsciAhPSAwICYmIEFicyh5KSA+IHZpZXcoKS0+dmlzaWJsZUhlaWdodCgpLzQpIGNvbnRp
bnVlOwogCiAgICAgICAgICAgaWYoIWZvY3VzUmFuZ2UuaXNFbXB0eSgpICYmICFmb2N1c1JlY3Qu
aXNFbXB0eSgpKSB7CkBAIC0zOTgyLDcgKzM5ODAsNyBAQA0KICAgICAgICAgICAgfQogICAgICAg
IH0KICAgICAgICBpZihmb2N1c1JlY3QuaXNFbXB0eSgpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAg
CisKICAgICAgICBmb2N1c2VkRnJhbWVQYXJ0LT5icmlkZ2UoKS0+UG9pbnRlckV2ZW50KFRQb2lu
dGVyRXZlbnQ6OkVNb3ZlLGZvY3VzUmVjdC5jZW50ZXIoKS5Qb2ludCgpKTsKIAogICAgICAgIFFS
ZWN0IHZpZXdSZWN0KGZvY3VzZWRGcmFtZVBhcnQtPnZpZXcoKS0+Y29udGVudHNYKCksZm9jdXNl
ZEZyYW1lUGFydC0+dmlldygpLT5jb250ZW50c1koKSwKQEAgLTQwNjQsNCArNDA2MiwzOCBAQA0K
ICAgICAvLyBSZXNldCB0aGUgbXVsdGlwbGUgZm9ybSBzdWJtaXNzaW9uIHByb3RlY3Rpb24gY29k
ZS4KICAgICAvLyBXZSdsbCBsZXQgeW91IHN1Ym1pdCB0aGUgc2FtZSBmb3JtIHR3aWNlIGlmIHlv
dSBkbyB0d28gc2VwYXJhdGUgdXNlciBhY3Rpb25zLgogICAgIF9zdWJtaXR0ZWRGb3JtVVJMID0g
S1VSTCgpOwotfQ0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQorfQorCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUworS0pTOjpPYmplY3RJbXAqIEtXUUtIVE1MUGFydDo6Y3JlYXRlV2lk
Z2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKQoreworICAgIEtKUzo6T2JqZWN0SW1wKiBv
YmpJbXBsID0gc3RhdGljX2Nhc3Q8S0pTOjpPYmplY3RJbXAgKj4oX2JyaWRnZS0+Q2xpZW50KCku
Y3JlYXRlV2lkZ2V0T2JqZWN0KCh2b2lkKiApZXhlYykpOworICAgIHJldHVybiBvYmpJbXBsOwor
fQorI2VuZGlmCisKK0tKUzo6QmluZGluZ3M6Okluc3RhbmNlICpLV1FLSFRNTFBhcnQ6OmdldEVt
YmVkSW5zdGFuY2VGb3JWaWV3IChNV2ViQ29yZVdpZGdldCAqYVZpZXcpCit7CisgICAgcmV0dXJu
IGdldE9iamVjdEluc3RhbmNlRm9yVmlldyhhVmlldyk7Cit9CisKK0tKUzo6QmluZGluZ3M6Oklu
c3RhbmNlICpLV1FLSFRNTFBhcnQ6OmdldE9iamVjdEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVX
aWRnZXQgKmFWaWV3KQoreworICAgIHZvaWQqIG9iamVjdCA9IGFWaWV3LT5QbHVnaW5TY3JpcHRh
YmxlT2JqZWN0KCk7CisgICAgaWYgKG9iamVjdCkgeworICAgICAgICAvL0tKUzo6QmluZGluZ3M6
OlJvb3RPYmplY3QgKmV4ZWN1dGlvbkNvbnRleHQgPSBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0
OjpmaW5kUm9vdE9iamVjdEZvck5hdGl2ZUhhbmRsZUZ1bmN0aW9uICgpKGFWaWV3KTsKKyAgICAg
ICAgLy9yZXR1cm4gS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5n
dWFnZUluc3RhbmNlIChLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Q0xhbmd1YWdlLCBvYmplY3Qs
IGV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICByZXR1cm4gS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZTo6Q0xhbmd1YWdlLCBvYmplY3QpOworICAgIH0KK30KKworTlBPYmplY3QgKktXUUtIVE1M
UGFydDo6d2luZG93U2NyaXB0TlBPYmplY3QoKQoreworICAgIGlmICghX3dpbmRvd1NjcmlwdE5Q
T2JqZWN0KSB7CisgICAgICAgIEtKUzo6T2JqZWN0SW1wICp3aW4gPSBzdGF0aWNfY2FzdDxLSlM6
Ok9iamVjdEltcCAqPihLSlM6OldpbmRvdzo6cmV0cmlldmVXaW5kb3codGhpcykpOworICAgICAg
ICBfd2luZG93U2NyaXB0TlBPYmplY3QgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoMCwgd2lu
LCBiaW5kaW5nUm9vdE9iamVjdCgpLCBiaW5kaW5nUm9vdE9iamVjdCgpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gX3dpbmRvd1NjcmlwdE5QT2JqZWN0OworfQorCkluZGV4OiBXZWJDb3JlL2t3cS9L
V1FLSFRNTFBhcnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5o
CShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTM0LDYgKzM0LDcgQEANCiAjaW5jbHVkZSAiZG9tX25vZGVpbXBsLmgiCiAj
aW5jbHVkZSAiaHRtbF9mb3JtaW1wbC5oIgogI2luY2x1ZGUgImh0bWxfdGFibGVpbXBsLmgiCisj
aW5jbHVkZSAib2JqZWN0LmgiCiAKICNpbmNsdWRlICJXZWJDb3JlS2V5Ym9hcmRBY2Nlc3MuaCIK
ICNpbmNsdWRlICJXZWJDb3JlS2V5VmFsdWVQYWlyLmgiCkBAIC00MSw2ICs0Miw5IEBADQogCiAj
aW5jbHVkZSA8ZTMyYmFzZS5oPgogI2luY2x1ZGUgPHczMnN0ZC5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL25wcnVudGltZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL05QX2pzb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZS5oPgogCiAjaW5jbHVkZSAi
S1dRRGljdC5oIgogI2luY2x1ZGUgIktXUUNsaXBib2FyZC5oIgpAQCAtNTgsNiArNjIsNyBAQA0K
ICAgICBjbGFzcyBTYXZlZFByb3BlcnRpZXM7CiAgICAgY2xhc3MgU2F2ZWRCdWlsdGluczsKICAg
ICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CisgICAgY2xhc3MgUHJvdGVjdGVkVmFsdWU7CiB9CiAK
IGNsYXNzIENXZWJDb3JlQnJpZGdlOwpAQCAtMjAzLDcgKzIwOCw3IEBADQogCiAgICAgUVJlY3Qg
c2VsZWN0aW9uUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgZ2V0UmVuZGVyVGV4dFJlY3RBcnJheShj
b25zdCBURGVzQyYgYVRleHRFbnRyeSwgY29uc3QgRE9NOjpOb2RlJiBhTm9kZSwgUkFycmF5PFRS
ZWN0PiYgYUVudHJ5UmVjdExpc3QpOwotICAgIAorCiAvLyAgICBOU1JlY3QgdmlzaWJsZVNlbGVj
dGlvblJlY3QoKSBjb25zdDsKIC8vICAgIE5TSW1hZ2UgKnNlbGVjdGlvbkltYWdlKCkgY29uc3Q7
CiAvLyAgICBOU0ltYWdlICpzbmFwc2hvdERyYWdJbWFnZShET006Ok5vZGUgbm9kZSwgTlNSZWN0
ICppbWFnZVJlY3QsIE5TUmVjdCAqZWxlbWVudFJlY3QpIGNvbnN0OwpAQCAtMjIyLDYgKzIyNyw5
IEBADQogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgVEtleUV2ZW50JiBldmVudCwgYm9vbCB1cCk7
CiAgICAgLy9ib29sIExhc3RFdmVudElzTW91c2VVcCgpOwogCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUworICAgIEtKUzo6T2JqZWN0SW1wKiBjcmVhdGVXaWRnZXRPYmplY3QoS0pTOjpFeGVj
U3RhdGUqIGV4ZWMpIDsKKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUwogCiAgICAgLy9NZXRo
b2RzIHRvIHVwZGF0ZSBmb2N1c2FibGUgbm9kZSBsaXN0CiAgICAgdm9pZCB1cGRhdGVGb2N1c2Fi
bGVSZWN0TGlzdCgpOwpAQCAtMjg5LDkgKzI5NywxMyBAQA0KICAgICB2b2lkIGRpZFRlbGxCcmlk
Z2VBYm91dExvYWQoY29uc3QgUVN0cmluZyAmdXJsU3RyaW5nKTsKICAgICBib29sIGhhdmVUb2xk
QnJpZGdlQWJvdXRMb2FkKGNvbnN0IFFTdHJpbmcgJnVybFN0cmluZyk7CiAKLS8vICAgIEtKUzo6
QmluZGluZ3M6Okluc3RhbmNlICpnZXRFbWJlZEluc3RhbmNlRm9yVmlldyAoTlNWaWV3ICphVmll
dyk7Ci0vLyAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0QXBwbGV0SW5zdGFuY2VGb3JW
aWV3IChOU1ZpZXcgKmFWaWV3KTsKLS8vICAgIHZvaWQgYWRkUGx1Z2luUm9vdE9iamVjdChjb25z
dCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290KTsKKyAgICBLSlM6OkJpbmRpbmdzOjpJ
bnN0YW5jZSAqZ2V0RW1iZWRJbnN0YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICphVmlldyk7
CisgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldE9iamVjdEluc3RhbmNlRm9yVmlldyhN
V2ViQ29yZVdpZGdldCAqYVZpZXcpOworICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRB
cHBsZXRJbnN0YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICopIHsgcmV0dXJuIDA7IH0KKyAg
ICB2b2lkIGFkZFBsdWdpblJvb3RPYmplY3QoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVj
dCAqcm9vdCk7CisgICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqYmluZGluZ1Jvb3RPYmpl
Y3QoKTsKKyAgICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0Rm9y
RE9NKCk7CisgICAgTlBPYmplY3QgKndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAgICAgdm9pZCBj
bGVhbnVwUGx1Z2luUm9vdE9iamVjdHMoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9y
VW5kbyhjb25zdCBraHRtbDo6RWRpdENvbW1hbmRQdHIgJik7CkBAIC00MjcsOSArNDM5LDEwIEBA
DQogCiAgICAgZnJpZW5kIGNsYXNzIEtIVE1MUGFydDsKIAotLy8gICAgS0pTOjpCaW5kaW5nczo6
Um9vdE9iamVjdCAqX2JpbmRpbmdSb290OyAgLy8gVGhlIHJvb3Qgb2JqZWN0IHVzZWQgZm9yIG9i
amVjdHMKKyAgICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpfYmluZGluZ1Jvb3Q7ICAvLyBU
aGUgcm9vdCBvYmplY3QgdXNlZCBmb3Igb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBib3VuZCBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgcGx1
Z2luLgotLy8gICAgUVB0ckxpc3Q8S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gcm9vdE9iamVj
dHM7CisgICAgTlBPYmplY3QgKl93aW5kb3dTY3JpcHROUE9iamVjdDsKKyAgICBRUHRyTGlzdDxL
SlM6OkJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2JqZWN0czsKICAgICBDV2ViU2NyaXB0T2Jq
ZWN0ICpfd2luZG93U2NyaXB0T2JqZWN0OwogCiAgICAgRE9NOjpOb2RlIF9kcmFnU3JjOyAgICAg
Ly8gZWxlbWVudCB0aGF0IG1heSBiZSBhIGRyYWcgc291cmNlLCBmb3IgdGhlIGN1cnJlbnQgbW91
c2UgZ2VzdHVyZQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bC5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bC5oCShyZXZpc2lvbiAx
NzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC02NDksNiArNjQ5LDE1IEBADQogICAgICAgICAqLw0KICAgICAgICAgSU1QT1JUX0Mg
VEJyQ3RsRGVmczo6VEJyQ3RsRmluZFJlc3BvbnNlIEZpbmRLZXl3b3JkQWdhaW4oIFRCb29sIGFG
b3dhcmREaXJlY3Rpb24gKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAg
ICAgLyoqDQorICAgICAgICAqIENyZWF0ZXMgdGhlIHdpZGdldCBleHRlbnNpb24gb2JqZWN0DQor
ICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiBNV2lkZ2V0RXh0ZW5zaW9u
DQorICAgICAgICAqLw0KKyAgICAgICAgSU1QT1JUX0MgTVdpZGdldEV4dGVuc2lvbiogQ3JlYXRl
V2lkZ2V0RXh0ZW5zaW9uTChNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykgOw0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KKw0KICAgICBwdWJsaWM6IC8vIGZyb20gTUJyQ3Rs
TG9hZEV2ZW50T2JzZXJ2ZXINCiANCiAgICAgICAgIHZvaWQgSGFuZGxlQnJvd3NlckxvYWRFdmVu
dEwoIFRCckN0bERlZnM6OlRCckN0bExvYWRFdmVudCBhQnJDdGxMb2FkRXZlbnQsDQpAQCAtNzIz
LDYgKzczMiw3IEBADQogICAgICAgICAqLw0KICAgICAgICAgVEJvb2wgU2VuZENvbW1hbmRzVG9D
bGllbnQoVEJyQ3RsRGVmczo6VEJyQ3RsQ2xpZW50Q29tbWFuZHMgYUNvbW1hbmQsIGNvbnN0IENB
cnJheUZpeDxUUHRyQz4mIGFBdHRyaWJ1dGVzTmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENBcnJheUZpeDxUUHRyQz4mIGFBdHRyaWJ1dGVWYWx1ZXMp
Ow0KKw0KICAgICBwcm90ZWN0ZWQ6ICAvLyBGdW5jdGlvbnMgZnJvbSBDQ29lQ29udHJvbA0KIA0K
ICAgICAgICAgLyoqDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bERlZnMu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxEZWZzLmgJ
KHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxEZWZz
LmgJKHdvcmtpbmcgY29weSkNCkBAIC02MDMsNyArNjAzLDcgQEANCiANCiAgICAgICAgICAgICBF
RWxlbWVudE1vdXNlQnV0dG9uTGlzdGVuZXIsIC8vLzwgQSBNb3VzZSBidXR0b24gbGlzdGVuZXIN
CiAgICAgICAgICAgICBFRWxlbWVudFNjcm9sbEJhciwgICAgLy8vPCBBIHNjcm9sbCBiYXINCi0g
ICAgICAgICAgICANCisNCiAgICAgICAgICAgICBFRWxlbWVudFNtYXJ0TGlua1RlbCwgLy8vPCBB
IHRlbGVwaG9uZSBudW1iZXIgaW4gdGhlIHBhZ2UuDQogICAgICAgICAgICAgRUVsZW1lbnRTbWFy
dExpbmtFbWFpbCAvLy88IGFuIGVtYWlsIGFkZHJlc3MgaW4gdGhlIHBhZ2UuDQogICAgICAgICB9
Ow0KQEAgLTcxNiw2ICs3MTYsMTcgQEANCiAgICAgICAgIEVDbGllbnRDb21tYW5kTGF1bmNoRmlu
ZEtleXdvcmQgPSAwLA0KICAgICAgICAgRUNsaWVudENvbW1hbmRTdWJzY3JpYmVUb0ZlZWRzDQog
ICAgICAgICB9Ow0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIC8qKg0KKyAgICAq
IFRoZSB3aWRnZXQgcGFyYW1zLg0KKyAgICAqLw0KKyAgICBlbnVtIFRCckN0bFdpZGdldFBhcmFt
cw0KKyAgICAgICAgew0KKyAgICAgICAgRVdpZGdldElkZW50aWZpZXIgPSAwLA0KKyAgICAgICAg
RVdpZGdldEJ1bmRsZUlkLA0KKyAgICAgICAgRVdpZGdldEJhc2VQYXRoDQorICAgICAgICB9Ow0K
KyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9Ow0KIA0KICNlbmRpZiAgICAgIC8v
IEJSQ1RMREVGU19IDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bEludGVy
ZmFjZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bElu
dGVyZmFjZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5j
L0JyQ3RsSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkNCkBAIC03MSw3ICs3MSwxMCBAQA0KIGNs
YXNzIFRCckN0bFN1YnNjcmliZVRvOw0KIGNsYXNzIE1CckN0bFN0YXRlQ2hhbmdlT2JzZXJ2ZXI7
DQogY2xhc3MgTUJyQ3RsQ29tbWFuZE9ic2VydmVyOw0KLQ0KKyNpZmRlZiAgUkRfQlJPV1NFUl9X
SURHRVRTDQorY2xhc3MgTVdpZGdldENhbGxiYWNrOw0KK2NsYXNzIE1XaWRnZXRFeHRlbnNpb247
DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogY2xhc3MgQ0JyQ3RsSW50ZXJmYWNlOw0K
IGNsYXNzIENQbHVnaW5JbmZvOw0KIA0KQEAgLTU5Niw2ICs1OTksMTUgQEANCiAgICAgICAgICov
DQogICAgICAgICBJTVBPUlRfQyB2aXJ0dWFsIHZvaWQgUmVtb3ZlQ29tbWFuZE9ic2VydmVyKE1C
ckN0bENvbW1hbmRPYnNlcnZlciogYUJyQ3RsQ29tbWFuZE9ic2VydmVyKSA9IDA7DQogDQorI2lm
ZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBVbnJlZ2lz
dGVyIGEgY2xpZW50IGNvbW1hbmQgaW50ZXJmYWNlIGZvciB0aGUgYnJvd3NlciBlbmdpbmUNCisg
ICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcGFyYW0gVGhlIG9ic2VydmVyIHRvIHVu
cmVnaXN0ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAg
SU1QT1JUX0MgdmlydHVhbCBNV2lkZ2V0RXh0ZW5zaW9uKiBDcmVhdGVXaWRnZXRFeHRlbnNpb25M
KE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKSA9IDA7DQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQogICAgIH07DQogDQogDQpAQCAtODY4LDYgKzg4MCw0OSBAQA0KICAgICAg
ICAgdmlydHVhbCB2b2lkIEhhbmRsZUNvbW1hbmRMKFRCckN0bERlZnM6OlRCckN0bENsaWVudENv
bW1hbmRzIGFDb21tYW5kLCBjb25zdCBDQXJyYXlGaXg8VFB0ckM+JiBhQXR0cmlidXRlc05hbWVz
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDQXJyYXlGaXg8
VFB0ckM+JiBhQXR0cmlidXRlVmFsdWVzKSA9IDA7DQogICAgIH07DQorI2lmZGVmICBSRF9CUk9X
U0VSX1dJREdFVFMNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKy8qKg0KKyogIFRoaXMgY2xhc3Mg
cHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHRoZSBicm93c2VyIGVuZ2luZSB0byBpbnRlcmFjdCB3
aXRoIHRoZSB3aWRnZXQgaG9zdCBhcHBsaWNhdGlvbg0KKyoNCisqICBAbGliIEJyb3dzZXJFbmdp
bmUubGliDQorKiAgQHNpbmNlIDMuMg0KKyovDQorY2xhc3MgTVdpZGdldENhbGxiYWNrDQorICAg
IHsNCisgICAgcHVibGljOiAvLyBOZXcgZnVuY3Rpb25zDQorDQorICAgICAgICAvL1RPIEJFIElN
UExFTUVOVEVEDQorICAgIH07DQorLy8gQ0xBU1MgREVDTEFSQVRJT04NCisvKioNCisqICBUaGlz
IGNsYXNzIHByb3ZpZGVzIGFuIGV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIHRoZSB3aWRnZXQgaG9z
dCBhcHAgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgYnJvd3NlciBlbmdpbmUNCisqICBUaGlzIGNsYXNz
IGluY2x1ZGVzIHRoZSBXaWRnZXQgc3BlY2lmaWMgZXh0ZW5zaW9uIG5lZWRlZCBpbiB0aGUgYnJv
d3NlciBlbmdpbmUNCisqICBAbGliIEJyb3dzZXJFbmdpbmUubGliDQorKiAgQHNpbmNlIDMuMg0K
KyovDQorY2xhc3MgTVdpZGdldEV4dGVuc2lvbg0KKyAgICB7DQorICAgIHB1YmxpYzogLy8gTmV3
IGZ1bmN0aW9ucw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCB0byBzZXQgcGFyYW1l
dGVycyBpbiB0aGUgYnJvd3NlciBlbmdpbmUNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAg
ICAgKiBAcGFyYW0gVGhlIHdpZGdldCBpZGVudGlmaWVyDQorICAgICAgICAqIEBwYXJhbSBUaGUg
dmFsdWUgZm9yIHRoZSBwYXJhbWF0ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAg
ICAqLw0KKyAgICAgICAgdmlydHVhbCB2b2lkIFNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxX
aWRnZXRQYXJhbXMgYVBhcmFtLCBjb25zdCBURGVzQyYgYVZhbHVlKSA9IDA7DQorDQorICAgICAg
ICAvKioNCisgICAgICAgICogTWV0aG9kIHRvIHNldCBwYXJhbWV0ZXJzIGluIHRoZSBicm93c2Vy
IGVuZ2luZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgd2lk
Z2V0IHBhcmFtZXRlciBhUGFyYW0NCisgICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBmb3IgdGhl
IHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBh
UGFyYW0sIFRVaW50IGFWYWx1ZSkgPSAwOw0KKyAgICB9Ow0KKyNlbmRpZiAvL1JEX0JST1dTRVJf
V0lER0VUUw0KICNlbmRpZiAgICAgIC8vIEJSQ1RMSU5URVJGQUNFX0gNCiANCiAvLyBFbmQgb2Yg
RmlsZQ0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb250cm9sL3NyYy9CckN0bC5jcHAJKHJldmlzaW9uIDE3
MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtNzcsNiArNzcsOSBAQA0KICNpbmNsdWRlICJGYXZpY29uLmgiDQogI2luY2x1ZGUg
IlVybFJlcXVlc3RJbmZvLmgiDQogI2luY2x1ZGUgIlRvb2xCYXIuaCINCisjaWZkZWYgIFJEX0JS
T1dTRVJfV0lER0VUUw0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisjZW5kaWYgLy9S
RF9CUk9XU0VSX1dJREdFVFMNCiANCiAjaWZkZWYgUkRfMzJfQlJPV1NFUg0KICNpbmNsdWRlICJT
bWFydExpbmtIYW5kbGVyLmgiDQpAQCAtNDM1LDE0ICs0MzgsMTQgQEANCiAgICAgICAgIGRlbGV0
ZSAoQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIqKWlCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOw0KICAg
ICAgICAgfQ0KIA0KLSAgICBpQnJDdGxTb2Z0a2V5c09ic2VydmVyID0gTlVMTDsgICAgDQorICAg
IGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXIgPSBOVUxMOw0KICAgICBpQnJDdGxTcGVjaWFsTG9hZE9i
c2VydmVyID0gTlVMTDsNCi0gICAgaUJyQ3RsTGF5b3V0T2JzZXJ2ZXIgPSBOVUxMOyAgICAgICAg
DQorICAgIGlCckN0bExheW91dE9ic2VydmVyID0gTlVMTDsNCiAgICAgaUJyQ3RsRGlhbG9nc1By
b3ZpZGVyID0gTlVMTDsNCiAgICAgaUJyQ3RsV2luZG93T2JzZXJ2ZXIgPSBOVUxMOw0KICAgICBp
QnJDdGxEb3dubG9hZE9ic2VydmVyID0gTlVMTDsNCi0gICAgaUJyQ3RsU2Nyb2xsaW5nUHJvdmlk
ZXIgPSBOVUxMOyAgICANCi0gICAgDQorICAgIGlCckN0bFNjcm9sbGluZ1Byb3ZpZGVyID0gTlVM
TDsNCisNCiAgICAgLy8NCiAgICAgZGVsZXRlIGlIdHRwTG9hZGVyRXZlbnRUb1VpTGlzdGVuZXI7
DQogDQpAQCAtNDYzLDcgKzQ2Niw3IEBADQogDQogICAgIC8vRGVsZXRlIHRoZSBXZWJraXRDb250
cm9sDQogICAgIGRlbGV0ZSBpV2ViS2l0Q29udHJvbDsNCi0gICAgDQorDQogICAgIC8vIGNsb3Nl
IHRoZSBhcnJheXMsIGF2b2lkIG1lbW9yeSBsZWFrcw0KICAgICBpTG9hZEV2ZW50T2JzZXJ2ZXJz
QXJyYXkuQ2xvc2UoKTsNCiAgICAgaVN0YXRlQ2hhbmdlT2JzZXJ2ZXJBcnJheS5DbG9zZSgpOw0K
QEAgLTQ3Miw3ICs0NzUsNyBAQA0KICAgICBpU3Vic2NyaWJlVG9JdGVtcy5DbG9zZSgpOw0KICAg
ICBpV21sU2VydmljZU9wdGlvbi5DbG9zZSgpOw0KIA0KLSAgICANCisNCiAgICAgfQ0KIA0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtNzMzLDcgKzczNiw3IEBADQogICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgIGlXZWJLaXRDb250cm9sLT5XZWJLaXRWaWV3KCku
U2V0U21hcnRMaW5rTW9kZShFU21hcnRMaW5rUGhvbmUpOw0KICAgICAgICAgICAgICAgICBpV2Vi
S2l0Q29udHJvbC0+V2ViS2l0VmlldygpLkZpbmROZXh0U21hcnRMaW5rKEVUcnVlKTsNCi0gICAg
ICAgICAgICAgICAgfSAgICANCisgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICAgICAgIH0NCiAgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RUNvbW1hbmRGaW5k
SXRlbUVNYWlsOg0KQEAgLTc0Myw5ICs3NDYsOSBAQA0KICAgICAgICAgICAgICAgICBmb3IgKCBU
SW50IGk9MDsgaTxpU3RhdGVDaGFuZ2VPYnNlcnZlckFycmF5LkNvdW50KCk7IGkrKyApDQogICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICBpU3RhdGVDaGFuZ2VPYnNl
cnZlckFycmF5W2ldLT5TdGF0ZUNoYW5nZWQoIFRCckN0bERlZnM6OkVTdGF0ZVNtYXJ0VGV4dFZp
ZXcsIEVUcnVlKTsNCi0gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICANCisgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZp
ZXcoKS5TZXRTbWFydExpbmtNb2RlKCBFU21hcnRMaW5rRW1haWwgKTsNCi0gICAgICAgICAgICAg
ICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5GaW5kTmV4dFNtYXJ0TGluayggRVRydWUg
KTsgICAgDQorICAgICAgICAgICAgICAgIGlXZWJLaXRDb250cm9sLT5XZWJLaXRWaWV3KCkuRmlu
ZE5leHRTbWFydExpbmsoIEVUcnVlICk7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICAgfQ0KQEAgLTg3Niw2ICs4NzksMTcgQEANCiAgICAgICAgICAg
ICAgICAgVFBsdWdpbkNvbnRyb2wgcGx1Z2luQ29udHJvbCgqaVdlYktpdENvbnRyb2wpOw0KICAg
ICAgICAgICAgICAgICBwbHVnaW5Db250cm9sLkhhbmRsZVBsdWdpbkNvbW1hbmRMKGFDb21tYW5k
KTsNCiAgICAgICAgICAgICAgICAgfQ0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAg
ICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIENXaWRn
ZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7
DQorICAgICAgICAgICAgICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAgICAgICAgICAgICAgICAgew0K
KyAgICAgICAgICAgICAgICAgICAgd2RndEV4dC0+T3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQoYUNv
bW1hbmQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsN
CisgICAgICAgICAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0gICAvLyBlbmQgb2Ygc3dp
dGNoDQpAQCAtMTEwNiw2ICsxMTIwLDEzIEBADQogICAgIC8vIEJhc2Ugd2UncmUgdXNpbmcgZm9y
IHRoZSBwbHVnLWlucw0KICAgICBUUGx1Z2luQ29udHJvbCBwbHVnaW5Db250cm9sKCppV2ViS2l0
Q29udHJvbCk7DQogICAgIHBsdWdpbkNvbnRyb2wuQWRkUGx1Z2luT3B0aW9uTWVudUl0ZW1zTChh
TWVudVBhbmUsIFRCckN0bERlZnM6OkVDb21tYW5kSWRQbHVnaW5CYXNlLCBhQWZ0ZXIpOw0KKyNp
ZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQg
PSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0RXh0KQ0K
KyAgICAgICAgew0KKyAgICAgICAgd2RndEV4dC0+QWRkT3B0aW9uTWVudUl0ZW1zTChhTWVudVBh
bmUpOw0KKyAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9DQog
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0xODkzLDcgKzE5MTQsNyBAQA0KICAgICBp
ZiAoaUJyQ3RsU29mdGtleXNPYnNlcnZlcikNCiAgICAgICAgIHsNCiAgICAgICAgIGlCckN0bFNv
ZnRrZXlzT2JzZXJ2ZXItPlVwZGF0ZVNvZnRrZXlMKEVLZXlMZWZ0LCBLTnVsbERlc0MsIDAsIEVD
aGFuZ2VSZWFzb25JZGxlKTsNCi0gICAgICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXItPlVwZGF0
ZVNvZnRrZXlMKEVLZXlSaWdodCwgS051bGxEZXNDLCAwLCBFQ2hhbmdlUmVhc29uSWRsZSk7ICAg
ICAgICANCisgICAgICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXItPlVwZGF0ZVNvZnRrZXlMKEVL
ZXlSaWdodCwgS051bGxEZXNDLCAwLCBFQ2hhbmdlUmVhc29uSWRsZSk7DQogICAgICAgICB9DQog
ICAgIH0NCiANCkBAIC0yMzYzLDQgKzIzODQsMTYgQEANCiAgICAgcmV0dXJuIEVUcnVlOw0KICAg
ICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKy8vIENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uDQorLy8NCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KKy8vDQorRVhQT1JUX0MgTVdpZGdldEV4dGVuc2lvbiogQ0JyQ3RsOjpD
cmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKQ0K
KyAgICB7DQorICAgIHJldHVybiBpV2ViS2l0Q29udHJvbC0+Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9u
TChhV2lkZ2V0Q2FsbGJhY2spOw0KKyAgICB9DQorDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURH
RVRTDQogLy8gIEVuZCBvZiBGaWxlDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy93ZWJr
aXRicmlkZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvd2Via2l0
YnJpZGdlLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvd2Vi
a2l0YnJpZGdlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yLDEzICsyLDEzIEBADQogKiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCiAqICBOYW1lICAgICAgICA6IHdlYmtpdGJyaWRnZS5oDQogKiAgUGFy
dCBvZiAgICAgOiBXZWJraXQgLyBCcm93c2VyVmlldw0KLSogIEludGVyZmFjZSAgIDogDQorKiAg
SW50ZXJmYWNlICAgOg0KICogIERlc2NyaXB0aW9uIDoNCiAqICBWZXJzaW9uICAgICA6IDMuMQ0K
ICoNCiAqICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24NCiAqICAgIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQotKiAgDQorKg0KICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqICAgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zDQogKiAgIGFyZSBtZXQ6DQpAQCAtMjIsNyArMjIsNyBAQA0KICogICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQog
KiAgICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkDQogKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KLSogIA0KKyoNCiAqICAgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
Uw0KICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVA0KICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCkBAIC05MSw2ICs5MSwxMCBAQA0K
IA0KICAgICBwdWJsaWM6IC8vIE1ldGhvZHMgRnJvbSBNV2ViQ2xpZW50QnJpZGdlDQogDQorI2lm
ZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIHZvaWQqIGNyZWF0ZVdpZGdldE9iamVj
dCh2b2lkKiBleGVjKTsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCiAgICAgICAg
IC8qKg0KICAgICAgICAgKiBDaGlsZEZyYW1lcw0KICAgICAgICAgKiBGcm9tIE1XZWJDbGllbnRC
cmlkZ2UNCkBAIC0xMDI2LDcgKzEwMzAsNyBAQA0KICAgICAgICAgQ1dlYktpdExvYWRlciogICAg
ICAgICAgaUxvYWRlcjsgICAgICAgICAgICAgIC8vIG93bmVkDQogICAgIC8vDQogICAgIENJZGxl
KiAgICAgICAgICBpQ2xvc2VXaW5kb3dDYWxsYmFjazsgLy9vd2VkDQotICAgIA0KKw0KICAgICAg
ICAgLy8gVmFyaWFibGVzIHRvIHN0b3JlIHRoZSBzdGF0ZQ0KICAgICAgICAgSEJ1ZkMqIGlQYWdl
VGl0bGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZA0KICAgICAgICAgSEJ1ZkMq
IGlTdGF0dXNUZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwd25lZA0KSW5kZXg6IFdl
YktpdC9Ccm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJvbC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
S2l0L0Jyb3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtOTAsNiArOTAsOSBAQA0KIGNsYXNzIENIdHRwQ2FjaGVNYW5hZ2VyOw0KIGNsYXNzIENTdGF0
aWNJbWFnZURlY29kZXI7DQogY2xhc3MgQ1BsdWdpbkNvbnRlbnRQbGF5ZXI7DQorI2lmZGVmICBS
RF9CUk9XU0VSX1dJREdFVFMNCitjbGFzcyBDV2lkZ2V0RXh0ZW5zaW9uOw0KKyNlbmRpZiAvL1JE
X0JST1dTRVJfV0lER0VUUw0KIA0KIC8vIENMQVNTIERFQ0xBUkFUSU9ODQogLyoqDQpAQCAtMzEx
LDYgKzMxNCwxNiBAQA0KICAgICAgICAgKi8NCiAgICAgICAgIENXZWJLaXRWaWV3KiBDcmVhdGVX
aW5kb3coY29uc3QgVERlc0MmIGFGcmFtZU5hbWUsVEJvb2wgYVVzZXJJbml0aWF0ZWQpOw0KIA0K
KyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogQ3Jl
YXRlV2lkZ2V0RXh0ZW5zaW9uDQorICAgICAgICAqIFB1cnBvc2U6IENyZWF0ZXMgdGhlIHdpZGdl
dCBleHRlbnNpb24gb2JqZWN0DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBh
cmFtIE1XaWRnZXRDYWxsYmFjayogYVdpZGdldENhbGxiYWNrDQorICAgICAgICAqIEByZXR1cm4g
TVdpZGdldEV4dGVuc2lvbioNCisgICAgICAgICovDQorICAgICAgICBNV2lkZ2V0RXh0ZW5zaW9u
KiBDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNr
KSA7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogICAgICAgICAvKioNCiAgICAg
ICAgICogRmluZFdpbmRvd05hbWVkDQpAQCAtNDkzLDcgKzUwNiwxNiBAQA0KICAgICAgICAgKi8N
CiAgICAgICAgIENCckN0bCYgQnJDdGwoKSBjb25zdCB7IHJldHVybiAqaUJyQ3RsOyB9DQogDQor
I2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgICAgIC8qKg0KKyAgICAgICAgKiBBc3Nv
Y2lhdGVkIGJyb3dzZXIgY29udHJvbA0KKyAgICAgICAgKiBAc2luY2UgMy4wDQorICAgICAgICAq
IEByZXR1cm4gQSByZWZlcmVuY2UgdG8gQnJDdGwNCisgICAgICAgICovDQorICAgICAgICBDV2lk
Z2V0RXh0ZW5zaW9uKiBXaWRnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBpV2lkZ2V0RXh0
ZW5zaW9uOyB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQorDQorICAgICAgICAvKioN
CiAgICAgICAgICogUmVzb3VyY2UgbG9hZGVyIHNldHRpbmdzIGNvbnRyb2xsZXINCiAgICAgICAg
ICogQHNpbmNlIDMuMA0KICAgICAgICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlDQpAQCAtODkzLDYg
KzkxNSw5IEBADQogICAgICAgICAvLyBwbHVnaW4gcGxheWVyDQogICAgICAgICBDUGx1Z2luQ29u
dGVudFBsYXllciogICAgICAgaVBsdWdpblBsYXllcjsNCiAjZW5kaWYNCisjaWZkZWYgIFJEX0JS
T1dTRVJfV0lER0VUUw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogaVdpZGdldEV4dGVuc2lv
bjsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfTsNCiANCiAjZW5kaWYgICAg
ICAvLyBXRUJLSVRDT05UUk9MX0gNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdl
dEV4dGVuc2lvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRn
ZXRFeHRlbnNpb24uaAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dp
ZGdldEV4dGVuc2lvbi5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzNTUgQEANCisvKg0KKyog
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRl
cmZhY2UuaA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldEludGVyZmFj
ZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0KKyogIENv
cHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVyaWFsLCBp
bmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRlciBwcm9n
cmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAgTm9raWEg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyogIGluY2x1
ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0K
KyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0dGVuIGNv
bnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRh
aW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUgZGlzY2xv
c2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBO
b2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQorDQorI2lm
bmRlZiBfX1dJREdFVEVOR0lORUNBTExCQUNLDQorI2RlZmluZSBfX1dJREdFVEVOR0lORUNBTExC
QUNLDQorDQorLy8gIElOQ0xVREVTDQorI2luY2x1ZGUgPGUzMmJhc2UuaD4NCisjaW5jbHVkZSA8
ZTMyaGFzaHRhYi5oPg0KKyNpbmNsdWRlIDxCckN0bEludGVyZmFjZS5oPg0KKyNpbmNsdWRlICJX
aWRnZXRFbmdpbmVCcmlkZ2UuaCINCisNCisvLyBDT05TVEFOVFMNCisNCisvLyBNQUNST1MNCisN
CisvLyBEQVRBIFRZUEVTDQorDQorLy8gRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIEZPUldB
UkQgREVDTEFSQVRJT04NCitjbGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2lkZ2V0UHJlZmVy
ZW5jZXM7DQorY2xhc3MgVFdpZGdldFJlbmRlcmVyOw0KK2NsYXNzIENFaWtNZW51UGFuZTsNCisN
CisvLyBDTEFTUyBERUNMQVJBVElPTg0KKy8qKg0KKyogIENXaWRnZXRFeHRlbnNpb24NCisqDQor
KiAgQGxpYiBicm93c2VyZW5naW5lLmRsbA0KKyogIEBzaW5jZSAzLjINCisqLw0KK2NsYXNzIENX
aWRnZXRFeHRlbnNpb246IHB1YmxpYyBDQmFzZSwgcHVibGljIE1XaWRnZXRFbmdpbmVDYWxsQmFj
aywgcHVibGljIE1XaWRnZXRFeHRlbnNpb24NCisgICAgew0KKyAgICBwdWJsaWM6DQorICAgICAg
ICAvKioNCisgICAgICAgICogQ29uc3RydWN0b3INCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAg
ICAgICAgKiBAcGFyYW0gV2Via2l0Vmlldw0KKyAgICAgICAgKiBAcGFyYW0gV2lkZ2V0Q2FsbGJh
Y2sgaW50ZXJmYWNlDQorICAgICAgICAqIEByZXR1cm4gQ1dpZGdldEV4dGVuc2lvbiBvYmplY3Qu
DQorICAgICAgICAqLw0KKyAgICAgICAgc3RhdGljIENXaWRnZXRFeHRlbnNpb24qIE5ld0woQ1dl
YktpdFZpZXcmIGFXZWJLaXRWaWV3LE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKTsN
CisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBEZXN0cnVjdG9yLg0KKyAgICAgICAgKi8NCisg
ICAgICAgIHZpcnR1YWwgfkNXaWRnZXRFeHRlbnNpb24oKTsNCisNCisgICAgcHVibGljOg0KKyAg
ICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBBZGRPcHRpb25NZW51SXRlbXNMDQorICAgICAg
ICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSBvcHRpb25zIG1lbnUNCisgICAg
ICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBBZGRPcHRpb25N
ZW51SXRlbXNMKCBDRWlrTWVudVBhbmUmIGFNZW51UGFuZSApOw0KKw0KKyAgICAgICAgLyoqDQor
ICAgICAgICAqIE1ldGhvZCBPcHRpb25zTWVudUl0ZW1TZWxlY3RlZA0KKyAgICAgICAgKiBAc2lu
Y2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgb3B0aW9ucyBtZW51IGNvbW1hbmQNCisgICAg
ICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBPcHRpb25zTWVu
dUl0ZW1TZWxlY3RlZCggVEludCBhQ29tbWFuZCApOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAg
ICAqIE1ldGhvZCBPbkhpZGVTZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAg
ICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT25IaWRlU2VsZWN0
ZWQoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT25SZW1vdmVTZWxlY3Rl
ZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAg
ICAgKi8NCisgICAgICAgIHZvaWQgT25SZW1vdmVTZWxlY3RlZCgpOw0KKw0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCBPblNob3dTZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4y
DQorICAgICAgICAqIEBwYXJhbSBUaGUgd2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICogQHBh
cmFtIFRoZSB2YWx1ZSBmb3IgdGhlIHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQN
CisgICAgICAgICovDQorICAgICAgICB2b2lkIE9uU2hvd1NlbGVjdGVkKCk7DQorDQorICAgIHB1
YmxpYzogLy8gRnJvbSBNV2lkZ2V0RW5naW5lQ2FsbEJhY2sNCisNCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBNZXRob2QgT3BlbkFwcGxpY2F0aW9uDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHBhcmFtIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBvcGVuDQorICAg
ICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT3BlbkFwcGxp
Y2F0aW9uKGNvbnN0IFREZXNDJiBhQXBwTmFtZSwgY29uc3QgVERlc0MmIGFQYXJhbSk7DQorDQor
ICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIE9wZW5VcmwNCisgICAgICAgICogQHNpbmNl
IDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHVybCB0byBvcGVuDQorICAgICAgICAqIEByZXR1
cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT3BlblVybChjb25zdCBURGVzQyYg
YVVybCk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFByZWZlcmVuY2VGb3JL
ZXkNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVu
Y2Uga2V5DQorICAgICAgICAqIEBwYXJhbSBUaGUgcHJlZmVyZW5jZSB2YWx1ZQ0KKyAgICAgICAg
KiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICBUSW50IFByZWZlcmVuY2VGb3JL
ZXkoY29uc3QgVERlc0MmIGFLZXksIFRQdHJDJiBhVmFsdWUpOw0KKw0KKyAgICAgICAgLyoqDQor
ICAgICAgICAqIE1ldGhvZCBQcmVwYXJlRm9yVHJhbnNpdGlvbg0KKyAgICAgICAgKiBAc2luY2Ug
My4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgdHJhbnNpdGlvbiB0eXBlDQorICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgUHJlcGFyZUZvclRyYW5zaXRp
b24oY29uc3QgVERlc0MmIGFUcmFuc2l0aW9uKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAg
KiBNZXRob2QgUGVyZm9ybVRyYW5zaXRpb24NCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAg
ICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFBlcmZvcm1UcmFu
c2l0aW9uKCk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFNldFByZWZlcmVu
Y2VGb3JLZXkNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHBy
ZWZlcmVuY2Uga2V5DQorICAgICAgICAqIEBwYXJhbSBUaGUgcHJlZmVyZW5jZSB2YWx1ZQ0KKyAg
ICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldFByZWZl
cmVuY2VGb3JLZXkoY29uc3QgVERlc0MmIGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUpOw0KKw0K
KyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBBZGRPcHRpb25zTWVudUl0ZW0NCisgICAg
ICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gTmFtZSBvZiBvcHRpb25zIG1lbnUg
aXRlbQ0KKyAgICAgICAgKiBAcmV0dXJuIGNvbW1hbmQgaWQNCisgICAgICAgICovDQorICAgICAg
ICBUSW50IEFkZE9wdGlvbnNNZW51SXRlbShjb25zdCBURGVzQyYgYU5hbWUpOw0KKw0KKyAgICAg
ICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBDbGVhck9wdGlvbnNNZW51DQorICAgICAgICAqIEBz
aW5jZSAzLjINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAg
dm9pZCBDbGVhck9wdGlvbnNNZW51KCk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIEdldFdpZGdldElkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVy
biBUaGUgd2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICovDQorICAgICAgICBURGVzQyYgR2V0
V2lkZ2V0QnVuZGxlSWQoKSB7IHJldHVybiAqaVdpZGdldEJ1bmRsZUlkOyB9DQorDQorICAgICAg
ICAvKioNCisgICAgICAgICogTWV0aG9kIFNldFNjcm9sbEJhcg0KKyAgICAgICAgKiBAc2luY2Ug
My4yDQorICAgICAgICAqIEBwYXJhbSBUQm9vbCB2aXNpYmxlDQorICAgICAgICAqIEByZXR1cm4g
dm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0U2Nyb2xsQmFyKFRCb29sIGFWaXNp
YmxlKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgU2V0TmF2aWdhdGlvbkVu
YWJsZWQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVEJvb2wgZW5h
YmxlZA0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lk
IFNldE5hdmlnYXRpb25FbmFibGVkKFRCb29sIGFFbmFibGUpOw0KKw0KKyAgICAgICAgLyoqDQor
ICAgICAgICAqIE1ldGhvZCBTZXRPcHRpb25zTWVudUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5j
ZSAzLjINCisgICAgICAgICogQHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICog
QHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPcHRpb25zTWVudUxp
c3RlbmVyKENXaWRnZXRFdmVudEhhbmRsZXIqIGFDYWxsYmFjayk7DQorDQorICAgICAgICAvKioN
CisgICAgICAgICogTWV0aG9kIFNldE9uSGlkZUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAz
LjINCisgICAgICAgICogQHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJl
dHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPbkhpZGVMaXN0ZW5lcihD
V2lkZ2V0RXZlbnRIYW5kbGVyKiBhQ2FsbGJhY2spOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAg
ICAqIE1ldGhvZCBTZXRPblJlbW92ZUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2
b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPblJlbW92ZUxpc3RlbmVyKENXaWRn
ZXRFdmVudEhhbmRsZXIqIGFDYWxsYmFjayk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICog
TWV0aG9kIFNldE9uU2hvd0xpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHBhcmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQor
ICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRPblNob3dMaXN0ZW5lcihDV2lkZ2V0RXZlbnRI
YW5kbGVyKiBhQ2FsbGJhY2spOw0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICAvKioNCisgICAg
ICAgICogTWV0aG9kIFdpZGdldFJlbmRlcmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAg
ICAgICogQHJldHVybiB3aWRnZXQgcmVuZGVyZXINCisgICAgICAgICovDQorICAgICAgICBUV2lk
Z2V0UmVuZGVyZXIqIFdpZGdldFJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gaVdpZGdldFJlbmRl
cmVyOyB9DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFdpZGdldEVuZ2luZUJy
aWRnZXQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHdpZGdldCBl
bmdpbmUgYnJpZGdlDQorICAgICAgICAqLw0KKyAgICAgICAgTVdpZGdldEVuZ2luZUJyaWRnZSYg
V2lkZ2V0RW5naW5lQnJpZGdlKCkgY29uc3QgeyByZXR1cm4gKmlXaWRnZXRFbmdpbmVCcmlkZ2U7
IH0NCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgTmF2aWdhdGlvbkVuYWJsZWQN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIGJvb2wNCisgICAgICAg
ICovDQorICAgICAgICBUQm9vbCBOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlO
YXZpZ2F0aW9uRW5hYmxlZDsgfQ0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBX
aWRnZXRCYXNlUGF0aA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4g
VERlc0Mgd2lkZ2V0IGJhc2UgcGF0aA0KKyAgICAgICAgKi8NCisgICAgICAgIFREZXNDJiBXaWRn
ZXRCYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJuICppV2lkZ2V0QmFzZVBhdGg7IH0NCisNCisgICAg
ICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgR2V0V2lkZ2V0SWQNCisgICAgICAgICogQHNpbmNl
IDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIFRoZSB3aWRnZXQgdWlkDQorICAgICAgICAqLw0KKyAg
ICAgICAgVEludCBHZXRXaWRnZXRJZCgpIHsgcmV0dXJuIGlXaWRnZXRJZDsgfQ0KKw0KKyAgICBw
dWJsaWM6IC8vIE5ldyBmdW5jdGlvbnMNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRo
b2QgdG8gc2V0IHBhcmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQorICAgICAgICAqIEBz
aW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSB3aWRnZXQgaWRlbnRpZmllcg0KKyAgICAg
ICAgKiBAcGFyYW0gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW1hdGVyDQorICAgICAgICAqIEByZXR1
cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6
OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIGNvbnN0IFREZXNDJiBhVmFsdWUpOw0KKw0KKyAg
ICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJv
d3NlciBlbmdpbmUNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhl
IHdpZGdldCBwYXJhbWV0ZXIgYVBhcmFtDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9y
IHRoZSBwYXJhbWF0ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAg
ICAgICAgdm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJh
bSwgVFVpbnQgYVZhbHVlKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgY3Jl
YXRlV2lkZ2V0T2JqZWN0DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFt
DQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQqIGNy
ZWF0ZVdpZGdldE9iamVjdCh2b2lkKiBleGVjKTsNCisNCisgICAgcHJpdmF0ZToNCisgICAgICAg
ICAvKioNCisgICAgICAgICogTWV0aG9kIExvYWRXaWRnZXRFbmdpbmVEbGxMDQorICAgICAgICAq
IEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAg
ICAgdm9pZCBMb2FkV2lkZ2V0RW5naW5lRGxsTCgpOw0KKw0KKyAgICAgICAgIC8qKg0KKyAgICAg
ICAgKiBNZXRob2QgQ3JlYXRlQXBwSGFzaFRhYmxlTA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQ3JlYXRl
QXBwSGFzaFRhYmxlTCgpOw0KKw0KKyAgICAgICAgLyoNCisgICAgICAgICogTWV0aG9kIExhdW5j
aEFwcGxpY2F0aW9uTA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBU
aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdG8gb3Blbg0KKyAgICAgICAgKiBAcmV0dXJuIHZv
aWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIExhdW5jaEFwcGxpY2F0aW9uTChjb25zdCBU
VWlkJiBhVWlkLCBjb25zdCBURGVzQyYgYVBhcmFtKTsNCisNCisgICAgcHJvdGVjdGVkOg0KKyAg
ICAgICAgLyoqDQorICAgICAgICAqIDJuZCBwaGFzZSBjb25zdHJ1Y3Rvci4NCisgICAgICAgICov
DQorICAgICAgICB2b2lkIENvbnN0cnVjdEwoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAg
KiBDKysgY29uc3RydWN0b3IuDQorICAgICAgICAqLw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lv
biggQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3LE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxi
YWNrICk7DQorDQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBDV2ViS2l0VmlldyogaVdlYktp
dFZpZXc7ICAgICAgICAgICAgICAgICAgICAvL25vdCBvd25lZA0KKw0KKyAgICAgICAgQ1dpZGdl
dFByZWZlcmVuY2VzKiBpUHJlZmVyZW5jZXM7DQorICAgICAgICBUV2lkZ2V0UmVuZGVyZXIqIGlX
aWRnZXRSZW5kZXJlcjsNCisNCisgICAgICAgIHN0cnVjdCBUTWVudUl0ZW0NCisgICAgICAgICAg
ICB7DQorICAgICAgICAgICAgSEJ1ZkMqIGlUZXh0Ow0KKyAgICAgICAgICAgIFRJbnQgaUNtZElk
Ow0KKyAgICAgICAgICAgIH07DQorDQorICAgICAgICBSQXJyYXk8VE1lbnVJdGVtPiBpTWVudUl0
ZW1zOw0KKw0KKyAgICAgICAgVEludCAgICBpV2lkZ2V0SWQ7DQorICAgICAgICBUQm9vbCAgIGlO
YXZpZ2F0aW9uRW5hYmxlZDsNCisgICAgICAgIFRCb29sICAgaVBhZ2VTY2FsZXJXYXNFbmFibGVk
Ow0KKyAgICAgICAgSEJ1ZkMqICBpV2lkZ2V0QmFzZVBhdGg7DQorICAgICAgICBIQnVmQyogIGlX
aWRnZXRCdW5kbGVJZDsNCisNCisgICAgICAgIE1XaWRnZXRFbmdpbmVCcmlkZ2UqIGlXaWRnZXRF
bmdpbmVCcmlkZ2U7DQorICAgICAgICBNV2lkZ2V0Q2FsbGJhY2sqIGlXaWRnZXRDYWxsYmFjazsN
CisNCisgICAgICAgIFJQdHJIYXNoTWFwPFREZXNDLFRJbnQ+IGlBcHBVaWRNYXA7DQorICAgICAg
ICBSTGlicmFyeSBpTGlicmFyeTsNCisNCisgICAgfTsNCisNCisjZW5kaWYNCkluZGV4OiBXZWJL
aXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFByZWZlcmVuY2VzLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDApDQor
KysgV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw3NCBAQA0KKy8qDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqICBO
YW1lICAgICAgICA6IFdlYktpdFdpZGdldEludGVyZmFjZS5oDQorKiAgUGFydCBvZiAgICAgOiBX
ZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVzY3JpcHRpb24gOg0KKyogIFZl
cnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChjKSAyMDA0IE5va2lhIENvcnBv
cmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGFuZCBh
bnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkgY29weXJp
Z2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBhcmUg
cmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9yaW5nLCBh
ZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0ZXJpYWwg
cmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0KKyogIE5va2lhIENvcnBvcmF0
aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlkZW50aWFsDQorKiAgaW5mb3Jt
YXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQgdGhlDQor
KiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBvcmF0aW9uLg0KKyogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQorKi8NCisNCisjaWZuZGVmIF9fV0lER0VURU5HSU5FUFJFRkVSRU5D
RVMNCisjZGVmaW5lIF9fV0lER0VURU5HSU5FUFJFRkVSRU5DRVMNCisNCisvLyAgSU5DTFVERVMN
CisjaW5jbHVkZSA8ZTMyYmFzZS5oPg0KKyNpbmNsdWRlIDxlMzJoYXNodGFiLmg+DQorLy8gQ09O
U1RBTlRTDQorDQorLy8gTUFDUk9TDQorDQorLy8gREFUQSBUWVBFUw0KKw0KKy8vIEZVTkNUSU9O
IFBST1RPVFlQRVMNCisNCisvLyBGT1JXQVJEIERFQ0xBUkFUSU9ODQorY2xhc3MgQ1dpZGdldEV4
dGVuc2lvbjsNCisNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKy8qKg0KKyogIENXaWRnZXRQcmVm
ZXJlbmNlcw0KKyoNCisqICBAbGliIHdpZGdldGVuZ2luZS5kbGwNCisqICBAc2luY2UgMy4xDQor
Ki8NCitjbGFzcyBDV2lkZ2V0UHJlZmVyZW5jZXMgOiBwdWJsaWMgQ0Jhc2UNCisgICAgew0KKw0K
KyAgICBwdWJsaWM6DQorICAgICAgICBzdGF0aWMgQ1dpZGdldFByZWZlcmVuY2VzKiBOZXdMKENX
aWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICAgICAgc3RhdGljIENXaWRn
ZXRQcmVmZXJlbmNlcyogTmV3TEMoQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbik7
DQorICAgICAgICB+Q1dpZGdldFByZWZlcmVuY2VzKCk7DQorDQorICAgIHB1YmxpYzoNCisgICAg
ICAgIHZvaWQgTG9hZEwoKTsNCisgICAgICAgIHZvaWQgU2F2ZUwoKTsNCisgICAgICAgIFRJbnQg
UHJlZmVyZW5jZUwoY29uc3QgVERlc0MmIGFOYW1lLCBUUHRyQyYgYVZhbHVlKTsNCisgICAgICAg
IHZvaWQgU2V0UHJlZmVyZW5jZUwoY29uc3QgVERlc0MmIGFOYW1lLCBjb25zdCBURGVzQyYgYVZh
bHVlKTsNCisNCisgICAgcHJvdGVjdGVkOg0KKyAgICAgICAgdm9pZCBFbXB0eSgpOw0KKyAgICAg
ICAgdm9pZCBDcmVhdGVGaWxlUGF0aEwoKTsNCisgICAgICAgIEhCdWZDKiBNYWtlS2V5TEMoY29u
c3QgVERlc0MmIGFOYW1lKTsNCisNCisgICAgcHJvdGVjdGVkOg0KKyAgICAgICAgQ1dpZGdldFBy
ZWZlcmVuY2VzKENXaWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICAgICAg
dm9pZCBDb25zdHJ1Y3RMKCk7DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBSUHRySGFzaE1h
cDxURGVzQyxURGVzQz4gaU1hcDsNCisgICAgICAgIEhCdWZDKiBpRmlsZVBhdGg7DQorICAgICAg
ICBDV2lkZ2V0RXh0ZW5zaW9uKiBpV2lkZ2V0RXh0ZW5zaW9uOyAvL25vdCBvd25lZA0KKw0KKyAg
ICB9Ow0KKw0KKyNlbmRpZg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0UmVu
ZGVyZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0UmVu
ZGVyZXIuaAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFJl
bmRlcmVyLmgJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDc4IEBADQorLyoNCisqID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KKyogIE5hbWUgICAgICAgIDogV2lkZ2V0RW5naW5lUmVuZGVyZXIuaA0K
KyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldEludGVyZmFjZQ0KKyogIERl
c2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0KKyogIENvcHlyaWdodCAo
YykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRpbmcg
ZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRlciBwcm9ncmFtcywgaXMg
cHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyogIGluY2x1ZGluZyByZXBy
b2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0KKyogIG9yIGFs
bCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YN
CisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNvbmZp
ZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUgZGlzY2xvc2VkIHRvIG90
aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBOb2tpYSBDb3Jw
b3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQorDQorI2lmbmRlZiBfX1dJ
REdFVEVOR0lORVJFTkRFUkVSDQorI2RlZmluZSBfX1dJREdFVEVOR0lORVJFTkRFUkVSDQorDQor
Ly8gIElOQ0xVREVTDQorI2luY2x1ZGUgPGUzMmJhc2UuaD4NCisvLyBDT05TVEFOVFMNCisNCisv
LyBNQUNST1MNCisNCisvLyBEQVRBIFRZUEVTDQorDQorLy8gRlVOQ1RJT04gUFJPVE9UWVBFUw0K
Kw0KKy8vIEZPUldBUkQgREVDTEFSQVRJT04NCitjbGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBD
V2luZG93R2M7DQorY2xhc3MgQ0Zic0JpdG1hcDsNCisNCisvLyBDTEFTUyBERUNMQVJBVElPTg0K
Kw0KKy8qKg0KKyogIFRXaWRnZXRSZW5kZXJlcg0KKyoNCisqICBAbGliIHdpZGdldGVuZ2luZS5k
bGwNCisqICBAc2luY2UgMy4xDQorKi8gICAgDQorY2xhc3MgVFdpZGdldFJlbmRlcmVyDQorICAg
IHsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgVFdpZGdldFJlbmRlcmVyKENXZWJLaXRWaWV3
JiBhV2ViS2l0Vmlldyk7DQorICAgICAgICB+VFdpZGdldFJlbmRlcmVyKCk7DQorDQorICAgIHB1
YmxpYzogICAgDQorICAgICAgICB2b2lkIFByZXBhcmVGb3JUcmFuc2l0aW9uTChjb25zdCBURGVz
QyYgYVRyYW5zaXRpb24pOw0KKyAgICAgICAgdm9pZCBQZXJmb3JtVHJhbnNpdGlvbkwoKTsNCisg
ICAgICAgIA0KKyAgICBwdWJsaWM6DQorICAgICAgICB2b2lkIFRyYW5zaXRpb25DYigpOw0KKyAg
ICAgICAgVEJvb2wgVHJhbnNpdGlvbkluUHJvZ3Jlc3MoKSB7IHJldHVybiBpVHJhbnNpdGlvbkJp
dG1hcCE9MDsgfQ0KKyAgICAgICAgdm9pZCBEcmF3VHJhbnNpdGlvbihDV2luZG93R2MmIGdjLCBD
RmJzQml0bWFwKiBhQ3VycmVudEJpdG1hcCk7DQorDQorICAgIHByb3RlY3RlZDoNCisgICAgICAg
IHZvaWQgQ3JlYXRlVHJhbnNpdGlvbkJpdG1hcEwoKTsNCisgICAgICAgIHZvaWQgRGVzdHJveVRy
YW5zaXRpb25CaXRtYXAoKTsNCisgICAgICAgIHZvaWQgQ3JlYXRlRmFkZU1hc2tMKCk7DQorICAg
ICAgICB2b2lkIERlc3Ryb3lGYWRlTWFzaygpOw0KKyAgICAgICAgdm9pZCBEcmF3RmFkZU1hc2tM
KCk7DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBDV2ViS2l0VmlldyogaVdlYktpdFZpZXc7
DQorICAgICAgICBDRmJzQml0bWFwKiBpVHJhbnNpdGlvbkJpdG1hcDsNCisgICAgICAgIENGYnNC
aXRtYXAqIGlGYWRlTWFzazsNCisgICAgICAgIENQZXJpb2RpYyogaVRyYW5zaXRpb25UaW1lcjsN
CisgICAgICAgIFRJbnQgaVRyYW5zaXRpb25Db3VudDsgICAgICAgIA0KKyAgICAgICAgICAgICAg
ICANCisgICAgfTsNCisgICAgICAgIA0KKyNlbmRpZg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmll
dy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2Vy
Vmlldy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0
L0Jyb3dzZXJWaWV3L3NyYy9LZXlFdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
NTQ1LDcgKzU0NSw3IEBADQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGlmKCBpV2ViS2l0
Vmlldy0+Rm9jdXNlZEVsZW1lbnRUeXBlKCkgPT0gVEJyQ3RsRGVmczo6RUVsZW1lbnROb25lDQog
ICAgICAgICAgICAgICAgICYmIGFFdmVudENvZGUgPT0gRUV2ZW50S2V5RG93biAmJiBhS2V5RXZl
bnQuaVJlcGVhdHMgPT0gMA0KLSAgICAgICAgICAgICAgICAvKiYmIGlXZWJLaXRWaWV3LT5XZWJL
aXRDb250cm9sKCkuQnJDdGwoKS5DYXBhYmlsaXRpZXMoKSAmIFRCckN0bERlZnM6OkVDYXBhYmls
aXR5VG9vbEJhciovICkNCisgICAgICAgICAgICAgICAgJiYgaVdlYktpdFZpZXctPldlYktpdENv
bnRyb2woKS5CckN0bCgpLkNhcGFiaWxpdGllcygpICYgVEJyQ3RsRGVmczo6RUNhcGFiaWxpdHlU
b29sQmFyICkNCiAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICBpV2ViS2l0Vmll
dy0+TGF1bmNoVG9vbEJhckwoKTsNCiAgICAgICAgICAgICAgICAgcmV0dXJuIEVLZXlXYXNDb25z
dW1lZDsNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHAJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvd2Via2l0YnJpZGdlLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTUxLDYgKzUxLDkgQEANCiAjaW5jbHVkZSAiSGlzdG9yeUNv
bnRyb2xsZXIuaCINCiAjaW5jbHVkZSAiTG9hZGVyVXRpbHMuaCINCiAjaW5jbHVkZSAiV2ViS2l0
TG9nZ2VyLmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0
RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogLy9DT05TVEFO
VFMNCiBfTElUKEtEYXRlU3RyaW5nLCAiJS1CJTowJUolOjElVCU6MiVTJS4lKkM0JTozJStCIik7
DQpAQCAtOTE4LDcgKzkyMSw3IEBADQogDQogICBpZihpRnJhbWUtPldlYktpdFZpZXcoKS5XZWJL
aXRDb250cm9sKCkuQnJDdGwoKS5DYXBhYmlsaXRpZXMoKSAmIFRCckN0bERlZnM6OkVDYXBhYmls
aXR5R3JhcGhpY2FsUGFnZSkNCiAgICAgew0KLSAgICBUUkFQX0lHTk9SRShpZiggaUZyYW1lLT5X
ZWJLaXRWaWV3KCkuUGFnZVNjYWxlcigpICkgDQorICAgIFRSQVBfSUdOT1JFKGlmKCBpRnJhbWUt
PldlYktpdFZpZXcoKS5QYWdlU2NhbGVyKCkgKQ0KICAgICAgICAgICAgICAgICAgICAgaUZyYW1l
LT5XZWJLaXRWaWV3KCkuUGFnZVNjYWxlcigpLT5Eb2N1bWVudENoYW5nZWRMKCkpOw0KICAgICB9
DQogICAgIC8vIGRvY3VtZW50IGlzIHBhcnNlZCBhbmQgbm8gcGVuZGluZyB0cmFuc2FjdGlvbiBt
ZWFuIHRoYXQNCkBAIC0xMzUwLDQgKzEzNTMsMTUgQEANCiAgICAgfQ0KICAgfQ0KIA0KKyNpZmRl
ZiAgUkRfQlJPV1NFUl9XSURHRVRTDQordm9pZCogQ1dlYktpdEJyaWRnZTo6Y3JlYXRlV2lkZ2V0
T2JqZWN0KHZvaWQqIGV4ZWMpDQorICAgIHsNCisgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4
dCA9IGlGcmFtZS0+V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKS5XaWRnZXRFeHRlbnNpb24o
KTsNCisgICAgaWYod2RndEV4dCkNCisgICAgICAgew0KKyAgICAgICByZXR1cm4gd2RndEV4dC0+
Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4ZWMpOw0KKyAgICAgICB9DQorICAgIHJldHVybiAwOw0KKyAg
ICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogLy8gZW5kIG9mIGZpbGUNCkluZGV4
OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wuY3BwDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9sLmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9sLmNwcAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTgxLDYgKzgxLDkgQEANCiAjaW5jbHVkZSAiV2ViQ29yZUhpc3RvcnkuaCIN
CiAjaW5jbHVkZSAiSHR0cENhY2hlTWFuYWdlci5oIg0KICNpbmNsdWRlICJTdGF0aWNJbWFnZURl
Y29kZXIuaCINCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyNpbmNsdWRlICJXaWRnZXRF
eHRlbnNpb24uaCINCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAjaWZkZWYgUkRf
MzJfQlJPV1NFUg0KICNpbmNsdWRlICJQbHVnaW5Db250ZW50UGxheWVyLmgiDQpAQCAtNjI3LDYg
KzYzMCw5IEBADQogDQogICAgIC8vIGNsZWF1cCB0aGUgc3RhdGljIG9iamVjdA0KICAgICBDU3Rh
dGljT2JqZWN0Q29udGFpbmVyOjpJbnN0YW5jZSgpLkRlcmVmKCk7DQorI2lmZGVmICBSRF9CUk9X
U0VSX1dJREdFVFMNCisgICAgZGVsZXRlIGlXaWRnZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRf
QlJPV1NFUl9XSURHRVRTDQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAg
LTIwOTAsNiArMjA5NiwyMiBAQA0KICAgICAgICAgQ1dlYkNvcmVCcmlkZ2U6OlNldERlZmVyc1Rp
bWVycyggRUZhbHNlICk7DQogICAgICAgICB9DQogICAgIH0NCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dlYktpdENvbnRyb2w6OkNy
ZWF0ZVdpZGdldEV4dGVuc2lvbg0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0K
K01XaWRnZXRFeHRlbnNpb24qIENXZWJLaXRDb250cm9sOjpDcmVhdGVXaWRnZXRFeHRlbnNpb25M
KE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKQ0KKyAgICB7DQorICAgIGlmKCAhaVdp
ZGdldEV4dGVuc2lvbiApDQorICAgICAgICB7DQorICAgICAgICBpV2lkZ2V0RXh0ZW5zaW9uID0g
Q1dpZGdldEV4dGVuc2lvbjo6TmV3TCgqaVdlYktpdFZpZXcsYVdpZGdldENhbGxiYWNrKTsNCisg
ICAgICAgIH0NCisgICAgUGx1Z2luSGFuZGxlcigpLkxvYWRQbHVnaW5zU3luY0woKTsNCisgICAg
cmV0dXJuIGlXaWRnZXRFeHRlbnNpb247DQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJ
REdFVFMNCiAjaWZkZWYgUkRfMzJfQlJPV1NFUg0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vIENhbGxlZCB3aGVuIHVzZXIgY2xpY2tzIGEgcGx1Z2luIHdoaWNoIGlzIGFibGUgdG8gYWNj
ZXB0IHVzZXIgaW5wdXQsDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5j
cHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Vmll
dy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02MCw2ICs2MCwxMSBAQA0KICNpbmNsdWRlICJXZWJL
aXRTdXJmYWNlLmgiDQogI2luY2x1ZGUgIldlYktpdFRvb2xCYXJJbnRlcmZhY2UuaCINCiAjaW5j
bHVkZSAiVG9vbEJhci5oIg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorI2luY2x1ZGUg
IldpZGdldEV4dGVuc2lvbi5oIg0KKyNpbmNsdWRlICJXaWRnZXRFbmdpbmVCcmlkZ2UuaCINCisj
aW5jbHVkZSAiV2lkZ2V0UmVuZGVyZXIuaCINCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMN
CiAjaW5jbHVkZSAiRmVhdE1nci5oIg0KIA0KIA0KQEAgLTYxMyw2ICs2MTgsMTcgQEANCiAgICAg
ICAgIHJldHVybjsNCiAgICAgICAgIH0NCiAgICAgU2V0Vmlld1Zpc2libGUoYVZpc2libGUpOw0K
KyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RF
eHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmKCB3ZGd0RXh0
ICkNCisgICAgICAgIHsNCisgICAgICAgIE1XaWRnZXRFbmdpbmVCcmlkZ2UqIHdkZ3RCcmlkZ2Ug
PSAmd2RndEV4dC0+V2lkZ2V0RW5naW5lQnJpZGdlKCk7DQorICAgICAgICBpZiggd2RndEJyaWRn
ZSApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIHdkZ3RCcmlkZ2UtPlNldFdpZGdldFZp
c2liaWxpdHkoYVZpc2libGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisjZW5kaWYg
Ly9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfQ0KIA0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KQEAgLTg3NCw2ICs4OTAsMTcgQEANCiAgICAgLy8gcHV0IG9mZnNjcmVlbiBiaXRtYXAgb250
byB0aGUgc2NyZWVuDQogICBpUmVuZGVyVGFyZ2V0LT5GbGlwKCBSZWN0KCkuaVRsLCBnYyApOw0K
IA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdk
Z3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0
RXh0KQ0KKyAgICAgICAgew0KKyAgICAgICAgVFdpZGdldFJlbmRlcmVyKiB3aWRnZXRSZW5kZXJl
ciA9IGlXZWJLaXRDb250cm9sLT5XaWRnZXRFeHRlbnNpb24oKS0+V2lkZ2V0UmVuZGVyZXIoKTsN
CisgICAgICAgIGlmICh3aWRnZXRSZW5kZXJlciAmJiB3aWRnZXRSZW5kZXJlci0+VHJhbnNpdGlv
bkluUHJvZ3Jlc3MoKSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgd2lkZ2V0UmVuZGVy
ZXItPkRyYXdUcmFuc2l0aW9uKGdjLCBPZmZzY3JlZW5CaXRtYXAoKSk7DQorICAgICAgICAgICAg
fQ0KKyAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICBpZiAoaUlz
UGFnZVNjYWxlckVuYWJsZWQpDQogICAgICAgICB7DQogICAgICAgICBpUGFnZVNjYWxlci0+RHJh
dyggZ2MsYVJlY3QgKTsNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldEV4dGVu
c2lvbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldEV4
dGVuc2lvbi5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRn
ZXRFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1MTAgQEANCisvKg0KKyog
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRl
cmZhY2UuY3BwDQorKiAgUGFydCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJm
YWNlDQorKiAgRGVzY3JpcHRpb24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAg
Q29weXJpZ2h0IChjKSAyMDA0IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWws
IGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHBy
b2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tp
YSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5j
bHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55
DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4g
Y29uc2VudCBvZg0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29u
dGFpbnMgY29uZmlkZW50aWFsDQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNj
bG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9m
IE5va2lhIENvcnBvcmF0aW9uLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisv
LyBJTkNMVURFIEZJTEVTDQorI2luY2x1ZGUgPGUzMnN0ZC5oPg0KKyNpbmNsdWRlIDxlaWtlbnYu
aD4NCisjaW5jbHVkZSA8YXBnY2xpLmg+DQorI2luY2x1ZGUgPGFwZ3Rhc2suaD4NCisjaW5jbHVk
ZSA8YnJvd3NlcmxhdW5jaGVyLmg+DQorDQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0K
KyNpbmNsdWRlICJXaWRnZXRQcmVmZXJlbmNlcy5oIg0KKyNpbmNsdWRlICJXaWRnZXRSZW5kZXJl
ci5oIg0KKyNpbmNsdWRlICJXaWRnZXRFdmVudEhhbmRsZXIuaCINCisjaW5jbHVkZSAiV2ViQ29y
ZVdpZGdldC5oIg0KKyNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgiDQorI2luY2x1ZGUgIldlYktp
dEN1cnNvci5oIg0KKyNpbmNsdWRlICJXZWJLaXRGcmFtZS5oIg0KKyNpbmNsdWRlICJXZWJLaXRW
aWV3LmgiDQorI2luY2x1ZGUgIkJyQ3RsLmgiDQorI2luY2x1ZGUgIkJyQ3RsU2Nyb2xsaW5nUHJv
dmlkZXIuaCINCisvLyNpbmNsdWRlICJTY3JvbGxiYXIuaCINCisNCisvLyBFWFRFUk5BTCBEQVRB
IFNUUlVDVFVSRVMNCisNCisvLyBFWFRFUk5BTCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8g
Q09OU1RBTlRTDQorDQorLy8gTUFDUk9TDQorDQorLy8gTE9DQUwgQ09OU1RBTlRTIEFORCBNQUNS
T1MNCitjb25zdCBUSW50IEtPcHRpb25zQ21kSWQgPSA2MDAwOw0KK2NvbnN0IFRJbnQgS01heE9w
dGlvbnNNZW51ID0gMjU7DQorY29uc3QgVEludCBLTWF4T3B0aW9uc01lbnVJdGVtU2l6ZSA9IDI1
NjsgLy9ieXRlcw0KKw0KKw0KKy8vLw0KK2NvbnN0IFRJbnQgS01lZGlhR2FsbGVyeVVpZCA9IDB4
MTAxRjg1OTk7DQorX0xJVChLTWVkaWFHYWxsZXJ5LCJtZWRpYWdhbGxlcnkiKTsNCitjb25zdCBU
SW50IEtXZWJCcm93c2VyVWlkID0gMHgxMDAwOEQzOTsNCitfTElUKEtXZWJCcm93c2VyLCJ3ZWJi
cm93c2VyIik7DQorY29uc3QgVEludCBLQ2FtQXBwRW5naW5lVWlkID0gMHgxMDFGODU3QTsNCitf
TElUKEtDYW1BcHBFbmdpbmUsImNhbWVyYSIpOw0KKw0KKy8vIE1PRFVMRSBEQVRBIFNUUlVDVFVS
RVMNCit1c2luZyBuYW1lc3BhY2UgS0pTOw0KKw0KKy8vIExPQ0FMIEZVTkNUSU9OIFBST1RPVFlQ
RVMNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEVuZ2luZUNhbGxCYWNr
OjpOZXdMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRF
eHRlbnNpb24qIENXaWRnZXRFeHRlbnNpb246Ok5ld0woDQorICAgIENXZWJLaXRWaWV3JiBhV2Vi
S2l0VmlldywNCisgICAgTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2sgKQ0KKyAgICB7
DQorICAgIENXaWRnZXRFeHRlbnNpb24qIHNlbGYgPSBuZXcgKEVMZWF2ZSkgQ1dpZGdldEV4dGVu
c2lvbihhV2ViS2l0VmlldyxhV2lkZ2V0Q2FsbGJhY2spOw0KKyAgICBDbGVhbnVwU3RhY2s6OlB1
c2hMKHNlbGYpOw0KKyAgICBzZWxmLT5Db25zdHJ1Y3RMKCk7DQorICAgIENsZWFudXBTdGFjazo6
UG9wKCk7DQorICAgIHJldHVybiBzZWxmOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkNXaWRnZXRFeHRlbnNpb24NCisvLw0KKy8vDQor
Ly8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldEV4dGVuc2lvbjo6Q1dpZGdldEV4
dGVuc2lvbigNCisgICAgQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3LA0KKyAgICBNV2lkZ2V0Q2Fs
bGJhY2smIGFXaWRnZXRDYWxsYmFjayApDQorICAgIDppV2ViS2l0VmlldygmYVdlYktpdFZpZXcp
LA0KKyAgICBpV2lkZ2V0Q2FsbGJhY2soJmFXaWRnZXRDYWxsYmFjaykNCisgICAgew0KKyAgICB9
DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246On5DV2lk
Z2V0RXh0ZW5zaW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NX
aWRnZXRFeHRlbnNpb246On5DV2lkZ2V0RXh0ZW5zaW9uKCkNCisgICAgew0KKyAgICBpZiAoaVBy
ZWZlcmVuY2VzKQ0KKyAgICAgICAgew0KKyAgICAgICAgVFJBUF9JR05PUkUoaVByZWZlcmVuY2Vz
LT5TYXZlTCgpKTsNCisgICAgICAgIH0NCisgICAgZGVsZXRlIGlQcmVmZXJlbmNlczsNCisgICAg
ZGVsZXRlIGlXaWRnZXRSZW5kZXJlcjsNCisgICAgZGVsZXRlIGlXaWRnZXRFbmdpbmVCcmlkZ2U7
DQorICAgIGRlbGV0ZSBpV2lkZ2V0QmFzZVBhdGg7DQorICAgIGRlbGV0ZSBpV2lkZ2V0QnVuZGxl
SWQ7DQorICAgIGlBcHBVaWRNYXAuUmVzZXRBbmREZXN0cm95KCk7DQorICAgIGlMaWJyYXJ5LkNs
b3NlKCk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4
dGVuc2lvbjo6Q29uc3RydWN0TA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkNvbnN0cnVjdEwoKQ0KKyAgICB7DQorDQorICAg
IGlQcmVmZXJlbmNlcyA9IENXaWRnZXRQcmVmZXJlbmNlczo6TmV3TCgqdGhpcyk7DQorICAgIGlX
aWRnZXRSZW5kZXJlciA9IG5ldyAoRUxlYXZlKSBUV2lkZ2V0UmVuZGVyZXIoKmlXZWJLaXRWaWV3
KTsNCisgICAgTG9hZFdpZGdldEVuZ2luZURsbEwoKTsNCisgICAgaVdpZGdldEVuZ2luZUJyaWRn
ZS0+U2V0T2JzZXJ2ZXIoKnRoaXMpOw0KKyAgICBDcmVhdGVBcHBIYXNoVGFibGVMKCk7DQorICAg
IH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
Q3JlYXRlQXBwSGFzaFRhYmxlTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkNyZWF0ZUFwcEhhc2hUYWJsZUwoKQ0KKyAgICB7
DQorICAgIFRJbnQqIHVpZG1nID0gbmV3IFRJbnQoS01lZGlhR2FsbGVyeVVpZCk7DQorICAgIEhC
dWZDKiBidWZtZWRpYSA9IEhCdWZDOjpOZXdMKFRQdHJDKEtNZWRpYUdhbGxlcnkpLkxlbmd0aCgp
KTsNCisgICAgKmJ1Zm1lZGlhID0gS01lZGlhR2FsbGVyeTsNCisNCisgICAgVEludCogdWlkd2Vi
ID0gbmV3IFRJbnQoS1dlYkJyb3dzZXJVaWQpOw0KKyAgICBIQnVmQyogYnVmd2ViID0gSEJ1ZkM6
Ok5ld0woVFB0ckMoS1dlYkJyb3dzZXIpLkxlbmd0aCgpKTsNCisgICAgKmJ1ZndlYiA9IEtXZWJC
cm93c2VyOw0KKw0KKyAgICBUSW50KiB1aWRjYW0gPSBuZXcgVEludChLQ2FtQXBwRW5naW5lVWlk
KTsNCisgICAgSEJ1ZkMqIGJ1ZmNhbSA9IEhCdWZDOjpOZXdMKFRQdHJDKEtDYW1BcHBFbmdpbmUp
Lkxlbmd0aCgpKTsNCisgICAgKmJ1ZmNhbSA9IEtDYW1BcHBFbmdpbmU7DQorDQorICAgIGlBcHBV
aWRNYXAuSW5zZXJ0TChidWZtZWRpYSx1aWRtZyk7DQorICAgIGlBcHBVaWRNYXAuSW5zZXJ0TChi
dWZ3ZWIsdWlkd2ViKTsNCisgICAgaUFwcFVpZE1hcC5JbnNlcnRMKGJ1ZmNhbSx1aWRjYW0pOw0K
KyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246
OkxhdW5jaEFwcGxpY2F0aW9uTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkxhdW5jaEFwcGxpY2F0aW9uTChjb25zdCBUVWlk
JiBhVWlkLCBjb25zdCBURGVzQyYgYVBhcmFtKQ0KKyAgICB7DQorDQorICAgIFJBcGFMc1Nlc3Np
b24gYXBhTHNTZXNzaW9uOw0KKyAgICBUQXBhVGFza0xpc3QgdGFza0xpc3QoQ0Vpa29uRW52OjpT
dGF0aWMoKS0+V3NTZXNzaW9uKCkpOw0KKyAgICBUQXBhVGFzayB0YXNrID0gdGFza0xpc3QuRmlu
ZEFwcChhVWlkKTsNCisgICAgaWYgKHRhc2suRXhpc3RzKCkpDQorICAgICAgICB7DQorICAgICAg
ICB0YXNrLkJyaW5nVG9Gb3JlZ3JvdW5kKCk7DQorICAgICAgICBpZiAoYVBhcmFtLkxlbmd0aCgp
ID4gMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgSEJ1ZkM4KiBwYXJhbTggPSBIQnVm
Qzg6Ok5ld0xDKGFQYXJhbS5MZW5ndGgoKSk7DQorICAgICAgICAgICAgcGFyYW04LT5EZXMoKS5B
cHBlbmQoYVBhcmFtKTsNCisgICAgICAgICAgICB0YXNrLlNlbmRNZXNzYWdlKFRVaWQ6OlVpZCgw
KSwqcGFyYW04KTsNCisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3kocGFy
YW04KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIGVsc2UNCisgICAgICAgIHsN
CisgICAgICAgIFRJbnQgZUNvbm5lY3QgPSBLRXJyTm9uZTsNCisgICAgICAgIGlmICghYXBhTHNT
ZXNzaW9uLkhhbmRsZSgpKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBlQ29ubmVjdCA9
IGFwYUxzU2Vzc2lvbi5Db25uZWN0KCk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYg
KGVDb25uZWN0ID09IEtFcnJOb25lKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBUVGhy
ZWFkSWQgdGhyZWFkSWQ7DQorICAgICAgICAgICAgYXBhTHNTZXNzaW9uLlN0YXJ0RG9jdW1lbnQo
YVBhcmFtLCBhVWlkLCB0aHJlYWRJZCk7DQorICAgICAgICAgICAgYXBhTHNTZXNzaW9uLkNsb3Nl
KCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICB9DQorDQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246Ok9wZW5BcHBsaWNhdGlvbg0K
Ky8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRl
bnNpb246Ok9wZW5BcHBsaWNhdGlvbihjb25zdCBURGVzQyYgYUFwcE5hbWUsIGNvbnN0IFREZXND
JiBhUGFyYW0pDQorICAgIHsNCisNCisgICAgVEludCogdWlkID0gaUFwcFVpZE1hcC5GaW5kKGFB
cHBOYW1lKTsNCisgICAgaWYgKHVpZCkNCisgICAgICAgIHsNCisgICAgICAgIFRVaWQgdWlkQXBw
ID0gVFVpZDo6VWlkKCp1aWQpOw0KKyAgICAgICAgTGF1bmNoQXBwbGljYXRpb25MKHVpZEFwcCxh
UGFyYW0pOw0KKyAgICAgICAgfQ0KKw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIENXaWRnZXRFeHRlbnNpb246Ok9wZW5VcmwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuVXJsKGNvbnN0IFRE
ZXNDJiBhVXJsKQ0KKyAgICB7DQorICAgIEhCdWZDKiBwYXJhbSA9IEhCdWZDOjpOZXdMQyhhVXJs
Lkxlbmd0aCgpKzIpOw0KKyAgICBwYXJhbS0+RGVzKCkuQXBwZW5kKF9MKCI0ICIpKTsNCisgICAg
cGFyYW0tPkRlcygpLkFwcGVuZChhVXJsKTsNCisgICAgVFJBUF9JR05PUkUoTGF1bmNoQXBwbGlj
YXRpb25MKFRVaWQ6OlVpZChLV2ViQnJvd3NlclVpZCksICpwYXJhbSkpOw0KKyAgICBDbGVhbnVw
U3RhY2s6OlBvcEFuZERlc3Ryb3kocGFyYW0pOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlByZWZlcmVuY2VGb3JLZXkNCisvLw0KKy8v
DQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVEludCBDV2lkZ2V0RXh0ZW5zaW9uOjpQ
cmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXNDJiBhS2V5LCBUUHRyQyYgYVZhbHVlKQ0KKyAgICB7
DQorICAgIHJldHVybiBpUHJlZmVyZW5jZXMtPlByZWZlcmVuY2VMKGFLZXksIGFWYWx1ZSk7DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
UHJlcGFyZUZvclRyYW5zaXRpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpQcmVwYXJlRm9yVHJhbnNpdGlvbihjb25zdCBU
RGVzQyYgYVRyYW5zaXRpb24pDQorICAgIHsNCisgICAgaVdpZGdldFJlbmRlcmVyLT5QcmVwYXJl
Rm9yVHJhbnNpdGlvbkwoYVRyYW5zaXRpb24pOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlBlcmZvcm1UcmFuc2l0aW9uDQorLy8NCisv
Lw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6
UGVyZm9ybVRyYW5zaXRpb24oKQ0KKyAgICB7DQorICAgIGlXaWRnZXRSZW5kZXJlci0+UGVyZm9y
bVRyYW5zaXRpb25MKCk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
Q1dpZGdldEV4dGVuc2lvbjo6U2V0UHJlZmVyZW5jZUZvcktleQ0KKy8vDQorLy8NCisvLw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNldFByZWZlcmVu
Y2VGb3JLZXkoY29uc3QgVERlc0MmIGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUpDQorICAgIHsN
CisgICAgaVByZWZlcmVuY2VzLT5TZXRQcmVmZXJlbmNlTChhS2V5LCBhVmFsdWUpOw0KKyAgICB9
DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlNl
dFNjcm9sbEJhcg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lk
IENXaWRnZXRFeHRlbnNpb246OlNldFNjcm9sbEJhcihUQm9vbCAvKmFWaXNpYmxlKi8pDQorICAg
IHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpTZXROYXZpZ2F0aW9uRW5hYmxlZA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNldE5hdmlnYXRpb25FbmFibGVkKFRC
b29sIGFFbmFibGUpDQorICAgIHsNCisgICAgaU5hdmlnYXRpb25FbmFibGVkID0gYUVuYWJsZTsN
CisgICAgaVdlYktpdFZpZXctPlNldFRhYmJlZE5hdmlnYXRpb24oICFhRW5hYmxlICk7DQorICAg
IGlmICggaVdlYktpdFZpZXctPkN1cnNvcigpICkNCisgICAgICAgIHsNCisgICAgICAgIGlXZWJL
aXRWaWV3LT5DdXJzb3IoKS0+Q3Vyc29yVXBkYXRlKCBhRW5hYmxlICk7DQorICAgICAgICB9DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
QWRkT3B0aW9uc01lbnVJdGVtDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KK1RJbnQgQ1dpZGdldEV4dGVuc2lvbjo6QWRkT3B0aW9uc01lbnVJdGVtKGNvbnN0IFREZXND
JiBhVGV4dCkNCisgICAgew0KKyAgICBUSW50IGNtZElkID0gKFRCckN0bERlZnM6OkVDb21tYW5k
SWRCYXNlICsgVEJyQ3RsRGVmczo6RUNvbW1hbmRJZFN1YnNjcmliZVRvQmFzZSArIEtPcHRpb25z
Q21kSWQpICsgaU1lbnVJdGVtcy5Db3VudCgpOw0KKw0KKyAgICBpZiAoaU1lbnVJdGVtcy5Db3Vu
dCgpIDw9IEtNYXhPcHRpb25zTWVudSAmJg0KKyAgICAgICAgYVRleHQuTGVuZ3RoKCkgPiAwICYm
IGFUZXh0Lkxlbmd0aCgpIDw9IEtNYXhPcHRpb25zTWVudUl0ZW1TaXplICkNCisgICAgICAgIHsN
CisgICAgICAgIFRNZW51SXRlbSBpdGVtOw0KKyAgICAgICAgaXRlbS5pVGV4dCA9IGFUZXh0LkFs
bG9jKCk7DQorICAgICAgICBpdGVtLmlDbWRJZCA9IGNtZElkOw0KKyAgICAgICAgaU1lbnVJdGVt
cy5BcHBlbmQoaXRlbSk7DQorICAgICAgICB9DQorDQorICAgIHJldHVybiBjbWRJZDsNCisgICAg
fQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpDbGVh
ck9wdGlvbnNNZW51DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3Zv
aWQgQ1dpZGdldEV4dGVuc2lvbjo6Q2xlYXJPcHRpb25zTWVudSgpDQorICAgIHsNCisNCisgICAg
Zm9yIChUSW50IG49MDsgbjxpTWVudUl0ZW1zLkNvdW50KCk7IG4rKykNCisgICAgICAgIHsNCisg
ICAgICAgIGRlbGV0ZSBpTWVudUl0ZW1zW25dLmlUZXh0Ow0KKyAgICAgICAgfQ0KKw0KKyAgICBp
TWVudUl0ZW1zLlJlc2V0KCk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
Ly8gQ1dpZGdldEV4dGVuc2lvbjo6QWRkT3B0aW9uTWVudUl0ZW1zTA0KKy8vDQorLy8NCisvLw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlv
bk1lbnVJdGVtc0woQ0Vpa01lbnVQYW5lJiBhTWVudVBhbmUpDQorICAgIHsNCisNCisgICAgaWYg
KCBhTWVudVBhbmUuTnVtYmVyT2ZJdGVtc0luUGFuZSgpID4gMSkNCisgICAgICAgIHsNCisgICAg
ICAgIGFNZW51UGFuZS5EZWxldGVCZXR3ZWVuTWVudUl0ZW1zKCAwLCBhTWVudVBhbmUuTnVtYmVy
T2ZJdGVtc0luUGFuZSgpLTIgKTsNCisgICAgICAgIH0NCisNCisNCisgICAgZm9yIChUSW50IG49
aU1lbnVJdGVtcy5Db3VudCgpLTE7IG4+PTA7IG4tLSkNCisgICAgICAgIHsNCisgICAgICAgIENF
aWtNZW51UGFuZUl0ZW06OlNEYXRhIG1lbnVEYXRhOw0KKyAgICAgICAgbWVudURhdGEuaUNvbW1h
bmRJZCA9IGlNZW51SXRlbXNbbl0uaUNtZElkOw0KKyAgICAgICAgbWVudURhdGEuaUNhc2NhZGVJ
ZCA9IDA7DQorICAgICAgICBtZW51RGF0YS5pRmxhZ3MgPSAwOw0KKyAgICAgICAgbWVudURhdGEu
aVRleHQgPSAqaU1lbnVJdGVtc1tuXS5pVGV4dDsNCisgICAgICAgIGFNZW51UGFuZS5JbnNlcnRN
ZW51SXRlbUwobWVudURhdGEsMCk7DQorICAgICAgICB9DQorDQorICAgIH0NCisNCisNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T3B0aW9uc01lbnVJdGVt
U2VsZWN0ZWQNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBD
V2lkZ2V0RXh0ZW5zaW9uOjpPcHRpb25zTWVudUl0ZW1TZWxlY3RlZChUSW50IGFDb21tYW5kKQ0K
KyAgICB7DQorICAgIGlmIChpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgVEludCBuID0gYUNvbW1hbmQtKFRCckN0bERlZnM6OkVDb21tYW5kSWRCYXNlICsgVEJyQ3Rs
RGVmczo6RUNvbW1hbmRJZFN1YnNjcmliZVRvQmFzZSArIEtPcHRpb25zQ21kSWQpOw0KKyAgICAg
ICAgaWYgKG4+PTAgJiYgbjxpTWVudUl0ZW1zLkNvdW50KCkpDQorICAgICAgICAgICAgew0KKyAg
ICAgICAgICAgIEhCdWZDKiBpdGVtVGV4dCA9IGlNZW51SXRlbXNbbl0uaVRleHQ7DQorICAgICAg
ICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+T3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQoKml0ZW1U
ZXh0KTsNCisgICAgICAgICAgICBPblNob3dTZWxlY3RlZCgpOw0KKyAgICAgICAgICAgIH0NCisg
ICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0
RXh0ZW5zaW9uOjpPbkhpZGVTZWxlY3RlZA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9uSGlkZVNlbGVjdGVkKCkNCisgICAg
ew0KKyAgICBpZiAoaVdpZGdldEVuZ2luZUJyaWRnZSkNCisgICAgICAgIHsNCisgICAgICAgIGlX
aWRnZXRFbmdpbmVCcmlkZ2UtPlNldFdpZGdldFZpc2liaWxpdHkoRUZhbHNlKTsNCisgICAgICAg
IH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpPblNob3dTZWxlY3RlZA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9uU2hvd1NlbGVjdGVkKCkNCisgICAgew0KKyAg
ICBpZihpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAgICAgICAgew0KKyAgICAgICAgaVdpZGdldEVu
Z2luZUJyaWRnZS0+U2V0V2lkZ2V0VmlzaWJpbGl0eShFVHJ1ZSk7DQorICAgICAgICB9DQorICAg
IH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
Y3JlYXRlV2lkZ2V0T2JqZWN0DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KK3ZvaWQqIENXaWRnZXRFeHRlbnNpb246OmNyZWF0ZVdpZGdldE9iamVjdCh2b2lkKiBleGVj
KQ0KKyAgICB7DQorICAgIGlmKCBpV2lkZ2V0RW5naW5lQnJpZGdlICkNCisgICAgICAgIHsNCisg
ICAgICAgIHJldHVybiBpV2lkZ2V0RW5naW5lQnJpZGdlLT5XaWRnZXQoZXhlYyk7DQorICAgICAg
ICB9DQorICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpMb2FkV2lkZ2V0RW5naW5lRGxsTA0KKy8vDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6TG9hZFdp
ZGdldEVuZ2luZURsbEwoKQ0KKyAgICB7DQorDQorICAgIGlmKCFpV2lkZ2V0RW5naW5lQnJpZGdl
KQ0KKyAgICAgICAgew0KKw0KKyAgICAgICAgX0xJVCggS0Jyb3dzZXJXaWRnZXRFbmdpbmVOYW1l
LCAid2lkZ2V0ZW5naW5lLmRsbCIgKTsNCisgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvciggaUxp
YnJhcnkuTG9hZCggS0Jyb3dzZXJXaWRnZXRFbmdpbmVOYW1lICkgKTsNCisNCisgICAgICAgIFRM
aWJyYXJ5RnVuY3Rpb24gZW50cnkgPSBpTGlicmFyeS5Mb29rdXAoMSk7DQorDQorICAgICAgICBp
ZiAoIWVudHJ5KQ0KKyAgICAgICAgICAgIFVzZXI6OkxlYXZlKEtFcnJOb3RGb3VuZCk7DQorDQor
ICAgICAgICAvL0NhbGwgdGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGluc3RhbmNlIG9mIGNsYXNz
DQorICAgICAgICBpV2lkZ2V0RW5naW5lQnJpZGdlID0gKE1XaWRnZXRFbmdpbmVCcmlkZ2UqKSBl
bnRyeSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQYXJhbUwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTChUQnJDdGxEZWZz
OjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBhcmFtLCBjb25zdCBURGVzQyYgYVZhbHVlKQ0KKyAgICB7
DQorICAgIHN3aXRjaChhUGFyYW0pDQorICAgICAgICB7DQorICAgICAgICBjYXNlIFRCckN0bERl
ZnM6OkVXaWRnZXRCYXNlUGF0aDoNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgaVdpZGdl
dEJhc2VQYXRoID0gYVZhbHVlLkFsbG9jTCgpOw0KKyAgICAgICAgICAgIGlQcmVmZXJlbmNlcy0+
TG9hZEwoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAg
Y2FzZSBUQnJDdGxEZWZzOjpFV2lkZ2V0QnVuZGxlSWQ6DQorICAgICAgICAgICAgew0KKyAgICAg
ICAgICAgIGlXaWRnZXRCdW5kbGVJZCA9IGFWYWx1ZS5BbGxvY0woKTsNCisgICAgICAgICAgICBi
cmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJy
ZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQYXJhbUwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTChUQnJDdGxEZWZzOjpU
QnJDdGxXaWRnZXRQYXJhbXMgYVBhcmFtLCBUVWludCBhVmFsdWUpDQorICAgIHsNCisgICAgc3dp
dGNoKGFQYXJhbSkNCisgICAgICAgIHsNCisgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RVdpZGdl
dElkZW50aWZpZXI6DQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlXaWRnZXRJZCA9IGFW
YWx1ZTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZh
dWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy9FTkQg
T0YgRklMRQ0KKw0KKw0KKw0KKw0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0
UHJlZmVyZW5jZXMuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9X
aWRnZXRQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3
L3NyYy9XaWRnZXRQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDI5MSBA
QA0KKy8qDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktp
dFdpZGdldEludGVyZmFjZS5jcHANCisqICBQYXJ0IG9mICAgICA6IFdlYkVuZ2luZS9XZWJLaXRX
aWRnZXRJbnRlcmZhY2UNCisqICBEZXNjcmlwdGlvbiA6DQorKiAgVmVyc2lvbiAgICAgOiAyLjEu
MQ0KKyoNCisqICBDb3B5cmlnaHQgKGMpIDIwMDQgTm9raWEgQ29ycG9yYXRpb24uDQorKiAgVGhp
cyBtYXRlcmlhbCwgaW5jbHVkaW5nIGRvY3VtZW50YXRpb24gYW5kIGFueSByZWxhdGVkDQorKiAg
Y29tcHV0ZXIgcHJvZ3JhbXMsIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgY29udHJvbGxlZCBi
eQ0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIGFyZSByZXNlcnZlZC4gQ29weWlu
ZywNCisqICBpbmNsdWRpbmcgcmVwcm9kdWNpbmcsIHN0b3JpbmcsIGFkYXB0aW5nIG9yIHRyYW5z
bGF0aW5nLCBhbnkNCisqICBvciBhbGwgb2YgdGhpcyBtYXRlcmlhbCByZXF1aXJlcyB0aGUgcHJp
b3Igd3JpdHRlbiBjb25zZW50IG9mDQorKiAgTm9raWEgQ29ycG9yYXRpb24uIFRoaXMgbWF0ZXJp
YWwgYWxzbyBjb250YWlucyBjb25maWRlbnRpYWwNCisqICBpbmZvcm1hdGlvbiB3aGljaCBtYXkg
bm90IGJlIGRpc2Nsb3NlZCB0byBvdGhlcnMgd2l0aG91dCB0aGUNCisqICBwcmlvciB3cml0dGVu
IGNvbnNlbnQgb2YgTm9raWEgQ29ycG9yYXRpb24uDQorKiA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
CisqLw0KKw0KKy8vIElOQ0xVREUgRklMRVMNCisjaW5jbHVkZSA8ZTMyc3RkLmg+DQorI2luY2x1
ZGUgPFMzMkZJTEUuSD4NCisjaW5jbHVkZSA8ZjMyZmlsZS5oPg0KKyNpbmNsdWRlIDx1cmkxNi5o
Pg0KKyNpbmNsdWRlICJXaWRnZXRQcmVmZXJlbmNlcy5oIg0KKyNpbmNsdWRlICJXaWRnZXRFeHRl
bnNpb24uaCINCisNCisvLyBFWFRFUk5BTCBEQVRBIFNUUlVDVFVSRVMNCisNCisvLyBFWFRFUk5B
TCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gQ09OU1RBTlRTDQorY29uc3QgVEludCBLTWF4
SW50TGVuZ3RoID0gMTA7DQorY29uc3QgVEludCBLTWF4S2V5VmFsdWVTaXplID0gNDA5NjsgLy80
IGsNCisNCitfTElUKCBLS2V5Rm9ybWF0LCAiJWQuJVMiICk7DQorX0xJVCggS1ByZWZzRmlsZSwi
cHJlZnMuZGF0IiApOw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJl
ZmVyZW5jZXM6Ok5ld0wNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
Q1dpZGdldFByZWZlcmVuY2VzKiBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0woQ1dpZGdldEV4dGVu
c2lvbiYgYVdpZGdldEV4dGVuc2lvbikNCisgICAgew0KKyAgICBDV2lkZ2V0UHJlZmVyZW5jZXMq
IHNlbGYgPSBOZXdMQyhhV2lkZ2V0RXh0ZW5zaW9uKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQb3Ao
IHNlbGYgKTsNCisgICAgcmV0dXJuIHNlbGY7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2VzOjpOZXdMQw0KKy8vDQorLy8NCisvLw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0UHJlZmVyZW5jZXMqIENXaWRnZXRQcmVm
ZXJlbmNlczo6TmV3TEMoQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbikNCisgICAg
ew0KKyAgICBDV2lkZ2V0UHJlZmVyZW5jZXMqIHNlbGYgPSBuZXcgKCBFTGVhdmUgKSBDV2lkZ2V0
UHJlZmVyZW5jZXMoYVdpZGdldEV4dGVuc2lvbik7DQorICAgIENsZWFudXBTdGFjazo6UHVzaEwo
IHNlbGYgKTsNCisgICAgc2VsZi0+Q29uc3RydWN0TCgpOw0KKyAgICByZXR1cm4gc2VsZjsNCisg
ICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6
OkNXaWRnZXRQcmVmZXJlbmNlcw0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCitDV2lkZ2V0UHJlZmVyZW5jZXM6OkNXaWRnZXRQcmVmZXJlbmNlcyhDV2lkZ2V0RXh0ZW5z
aW9uJiBhV2lkZ2V0RXh0ZW5zaW9uKQ0KKyAgICA6IGlXaWRnZXRFeHRlbnNpb24oJmFXaWRnZXRF
eHRlbnNpb24pDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDV2lkZ2V0UHJlZmVyZW5jZXM6On5DV2lkZ2V0UHJlZmVyZW5jZXMNCisvLw0KKy8vDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldFByZWZlcmVuY2VzOjp+Q1dpZGdldFBy
ZWZlcmVuY2VzKCkNCisgICAgew0KKyAgICBpTWFwLlJlc2V0QW5kRGVzdHJveSgpOw0KKyAgICBp
TWFwLkNsb3NlKCk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dp
ZGdldFByZWZlcmVuY2VzOjpDb25zdHJ1Y3RMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldFByZWZlcmVuY2VzOjpDb25zdHJ1Y3RMKCkNCisgICAg
ew0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJl
bmNlczo6UHJlZmVyZW5jZUwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorVEludCBDV2lkZ2V0UHJlZmVyZW5jZXM6OlByZWZlcmVuY2VMKGNvbnN0IFREZXNDJiBhS2V5
LCBUUHRyQyYgYVZhbHVlKQ0KKyAgICB7DQorDQorICAgIFRJbnQgclN1Y2Nlc3MgPSBLRXJyTm90
Rm91bmQ7DQorDQorICAgIGlmIChhS2V5Lkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1ZVNpemUpDQor
ICAgICAgICB7DQorICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xDKGFLZXkuTGVuZ3Ro
KCkrS01heEludExlbmd0aCsxKTsNCisgICAgICAgIGtleS0+RGVzKCkuRm9ybWF0KCBLS2V5Rm9y
bWF0LCBpV2lkZ2V0RXh0ZW5zaW9uLT5HZXRXaWRnZXRJZCgpLCAmYUtleSApOw0KKw0KKyAgICAg
ICAgVERlc0MqIHJlcyA9IGlNYXAuRmluZCgqa2V5KTsNCisgICAgICAgIGlmIChyZXMpDQorICAg
ICAgICAgICAgew0KKyAgICAgICAgICAgIGFWYWx1ZS5TZXQoKnJlcyk7DQorICAgICAgICAgICAg
clN1Y2Nlc3MgPSBLRXJyTm9uZTsNCisgICAgICAgICAgICB9DQorDQorDQorICAgICAgICBDbGVh
bnVwU3RhY2s6OlBvcChrZXkpOw0KKw0KKyAgICAgICAgfQ0KKw0KKyAgICAgcmV0dXJuIHJTdWNj
ZXNzOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVm
ZXJlbmNlczo6U2V0UHJlZmVyZW5jZUwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6
U2V0UHJlZmVyZW5jZUwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
dm9pZCBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMKGNvbnN0IFREZXNDJiBhS2V5
LCBjb25zdCBURGVzQyYgYVZhbHVlKQ0KKyAgICB7DQorDQorICAgIGlmIChhS2V5Lkxlbmd0aCgp
IDw9IEtNYXhLZXlWYWx1ZVNpemUpDQorICAgICAgICB7DQorDQorICAgICAgICBIQnVmQyoga2V5
ID0gSEJ1ZkM6Ok5ld0xDKGFLZXkuTGVuZ3RoKCkrS01heEludExlbmd0aCsxKTsNCisgICAgICAg
IGtleS0+RGVzKCkuRm9ybWF0KCBLS2V5Rm9ybWF0LCBpV2lkZ2V0RXh0ZW5zaW9uLT5HZXRXaWRn
ZXRJZCgpLCAmYUtleSApOw0KKw0KKyAgICAgICAgaWYgKGFWYWx1ZS5MZW5ndGgoKSA8PSBLTWF4
S2V5VmFsdWVTaXplKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBIQnVmQyogdmFsdWUg
PSBhVmFsdWUuQWxsb2NMQygpOw0KKyAgICAgICAgICAgIGlNYXAuSW5zZXJ0TChrZXksdmFsdWUp
Ow0KKyAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKHZhbHVlKTsNCisgICAgICAgICAgICBD
bGVhbnVwU3RhY2s6OlBvcChrZXkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisg
ICAgICAgICAgICB7DQorICAgICAgICAgICAgaU1hcC5SZW1vdmUoa2V5KTsNCisgICAgICAgICAg
ICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koa2V5KTsNCisgICAgICAgICAgICB9DQorDQor
ICAgICAgICB9DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dp
ZGdldFByZWZlcmVuY2VzOjpTYXZlDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KK3ZvaWQgQ1dpZGdldFByZWZlcmVuY2VzOjpTYXZlTCgpDQorICAgIHsNCisgICAgUkZz
IGZzOw0KKyAgICBpZiAoIGZzLkNvbm5lY3QoKSA9PSBLRXJyTm9uZSApDQorICAgICAgICB7DQor
DQorICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTCggZnMgKTsNCisNCisgICAgICAgIEhCdWZDKiBm
aWxlUGF0aCA9IGZpbGVQYXRoID0gSEJ1ZkM6Ok5ld0xDKGlXaWRnZXRFeHRlbnNpb24tPldpZGdl
dEJhc2VQYXRoKCkuTGVuZ3RoKCkgICsgS1ByZWZzRmlsZSgpLkxlbmd0aCgpKTsNCisNCisgICAg
ICAgIFRQdHIgZk5hbWUoZmlsZVBhdGgtPkRlcygpKTsNCisgICAgICAgIGZOYW1lLkFwcGVuZChp
V2lkZ2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNlUGF0aCgpKTsNCisgICAgICAgIGZOYW1lLkFwcGVu
ZChLUHJlZnNGaWxlKTsNCisNCisgICAgICAgIFJGaWxlV3JpdGVTdHJlYW0gd3JpdGVTdHJlYW07
DQorICAgICAgICBUSW50IGZpbGVlcnJvciA9IHdyaXRlU3RyZWFtLlJlcGxhY2UoIGZzLCAqZmls
ZVBhdGgsIEVGaWxlV3JpdGUgKTsNCisNCisgICAgICAgIGlmIChmaWxlZXJyb3IgIT0gS0Vyck5v
bmUpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGZzLkNyZWF0ZVByaXZhdGVQYXRoKEVE
cml2ZUMpOw0KKyAgICAgICAgICAgIGZpbGVlcnJvciA9IHdyaXRlU3RyZWFtLkNyZWF0ZSggZnMs
ICpmaWxlUGF0aCwgRUZpbGVXcml0ZSB8IEVGaWxlU2hhcmVFeGNsdXNpdmUgKTsNCisgICAgICAg
ICAgICB9DQorDQorICAgICAgICBpZiAoZmlsZWVycm9yID09IEtFcnJOb25lKQ0KKyAgICAgICAg
ICAgIHsNCisgICAgICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTCh3cml0ZVN0cmVhbSk7DQorDQor
ICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVJbnQzMkwoaU1hcC5Db3VudCgpKTsNCisgICAg
ICAgICAgICBUUHRySGFzaE1hcEl0ZXI8VERlc0MsVERlc0M+IGl0KGlNYXApOw0KKyAgICAgICAg
ICAgIGNvbnN0IFREZXNDKiBrZXk7DQorICAgICAgICAgICAgY29uc3QgVERlc0MqIHZhbHVlOw0K
KyAgICAgICAgICAgIHdoaWxlICgoa2V5ID0gaXQuTmV4dEtleSgpKSAhPSAwKQ0KKyAgICAgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhbHVlID0gaXQuQ3VycmVudFZhbHVlKCk7DQor
ICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlSW50MzJMKGtleS0+TGVuZ3RoKCkpOw0K
KyAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUwoKmtleSk7DQorICAgICAgICAgICAg
ICAgIHdyaXRlU3RyZWFtLldyaXRlSW50MzJMKHZhbHVlLT5MZW5ndGgoKSk7DQorICAgICAgICAg
ICAgICAgIHdyaXRlU3RyZWFtLldyaXRlTCgqdmFsdWUpOw0KKyAgICAgICAgICAgICAgICB9DQor
DQorICAgICAgICAgICAgd3JpdGVTdHJlYW0uQ29tbWl0TCgpOw0KKyAgICAgICAgICAgIENsZWFu
dXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL3dyaXRlU3RyZWFtDQorICAgICAgICAgICAgfQ0K
Kw0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZmlsZVBhdGgNCisg
ICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL2ZzDQorICAgICAgICB9DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2Vz
OjpMb2FkTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENX
aWRnZXRQcmVmZXJlbmNlczo6TG9hZEwoKQ0KKyAgICB7DQorDQorICAgIFJGcyBmczsNCisgICAg
aWYgKGZzLkNvbm5lY3QoKSA9PSBLRXJyTm9uZSkNCisgICAgICAgIHsNCisgICAgICAgIENsZWFu
dXBDbG9zZVB1c2hMKCBmcyApOw0KKw0KKyAgICAgICAgSEJ1ZkMqIGZpbGVQYXRoID0gSEJ1ZkM6
Ok5ld0xDKGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkuTGVuZ3RoKCkgICsgS1By
ZWZzRmlsZSgpLkxlbmd0aCgpKTsNCisNCisgICAgICAgIFRQdHIgZk5hbWUoZmlsZVBhdGgtPkRl
cygpKTsNCisgICAgICAgIGZOYW1lLkFwcGVuZChpV2lkZ2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNl
UGF0aCgpKTsNCisgICAgICAgIGZOYW1lLkFwcGVuZChLUHJlZnNGaWxlKTsNCisNCisgICAgICAg
IFJGaWxlUmVhZFN0cmVhbSByZWFkU3RyZWFtOw0KKyAgICAgICAgaWYgKHJlYWRTdHJlYW0uT3Bl
biggZnMsICpmaWxlUGF0aCwgRUZpbGVSZWFkICkgPT0gS0Vyck5vbmUpDQorICAgICAgICAgICAg
ew0KKyAgICAgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKHJlYWRTdHJlYW0pOw0KKw0KKyAgICAg
ICAgICAgIFRJbnQgY291bnQoIHJlYWRTdHJlYW0uUmVhZEludDMyTCgpICk7DQorICAgICAgICAg
ICAgZm9yKCBUSW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKyApDQorICAgICAgICAgICAgICAgIHsN
CisNCisgICAgICAgICAgICAgICAgVEludCBsZW4gPSByZWFkU3RyZWFtLlJlYWRJbnQzMkwoKTsN
CisgICAgICAgICAgICAgICAgaWYgKGxlbj4wKQ0KKyAgICAgICAgICAgICAgICAgICAgew0KKw0K
KyAgICAgICAgICAgICAgICAgICAgSEJ1ZkMqIGtleSA9IEhCdWZDOjpOZXdMQyhsZW4pOw0KKyAg
ICAgICAgICAgICAgICAgICAgVFB0ciBwdHJrZXkgPSBrZXktPkRlcygpOw0KKyAgICAgICAgICAg
ICAgICAgICAgcmVhZFN0cmVhbS5SZWFkTChwdHJrZXksbGVuKTsNCisgICAgICAgICAgICAgICAg
ICAgIGxlbiA9IHJlYWRTdHJlYW0uUmVhZEludDMyTCgpOw0KKw0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGxlbjw9S01heEtleVZhbHVlU2l6ZSkNCisgICAgICAgICAgICAgICAgICAgICAgICB7
DQorICAgICAgICAgICAgICAgICAgICAgICAgSEJ1ZkMqIHZhbHVlID0gSEJ1ZkM6Ok5ld0xDKGxl
bik7DQorICAgICAgICAgICAgICAgICAgICAgICAgVFB0ciBwdHJ2YWx1ZSA9IHZhbHVlLT5EZXMo
KTsNCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkU3RyZWFtLlJlYWRMKHB0cnZhbHVlLGxl
bik7DQorICAgICAgICAgICAgICAgICAgICAgICAgaU1hcC5JbnNlcnRMKGtleSx2YWx1ZSk7DQor
DQorICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AodmFsdWUpOw0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKGtleSk7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cEFuZERlc3Ryb3koa2V5KTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAg
ICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAg
IHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmRE
ZXN0cm95KCk7IC8vcmVhZFN0cmVhbQ0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIENsZWFu
dXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL2ZpbGVQYXRoDQorICAgICAgICBDbGVhbnVwU3Rh
Y2s6OlBvcEFuZERlc3Ryb3koKTsgLy9mcw0KKyAgICAgICAgfQ0KKw0KKyAgICB9DQorDQpJbmRl
eDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRSZW5kZXJlci5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldFJlbmRlcmVyLmNwcAkocmV2aXNpb24g
MCkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldFJlbmRlcmVyLmNwcAkocmV2aXNp
b24gMCkNCkBAIC0wLDAgKzEsMjI4IEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
KyogIE5hbWUgICAgICAgIDogV2lkZ2V0RW5naW5lUmVuZGVyZXIuY3BwDQorKiAgUGFydCBvZiAg
ICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVzY3JpcHRpb24gOg0K
KyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChjKSAyMDA0IE5va2lh
IENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBkb2N1bWVudGF0aW9u
IGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkg
Y29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9y
aW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0
ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0KKyogIE5va2lhIENv
cnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlkZW50aWFsDQorKiAg
aW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQg
dGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBvcmF0aW9uLg0KKyog
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisvLyBJTkNMVURFIEZJTEVTDQorI2luY2x1
ZGUgPGVpa21lbnViLmg+DQorI2luY2x1ZGUgPGdkaS5oPg0KKyNpbmNsdWRlIDxiaXRkZXYuaD4N
CisNCisjaW5jbHVkZSAiV2lkZ2V0UmVuZGVyZXIuaCINCisjaW5jbHVkZSAiV2ViS2l0Vmlldy5o
Ig0KKw0KKy8vIEVYVEVSTkFMIERBVEEgU1RSVUNUVVJFUw0KKw0KKy8vIEVYVEVSTkFMIEZVTkNU
SU9OIFBST1RPVFlQRVMNCisNCisvLyBDT05TVEFOVFMNCitjb25zdCBUSW50IE1heFRyYW5zaXRp
b25Db3VudCA9IDMwOw0KKw0KKy8vIExPQ0FMIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVHJhbnNpdGlvbkNiDQorLy8NCisvLw0KKy8vDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RJbnQgVHJhbnNpdGlvbkNiKCBUQW55KiBhUHRyICkN
CisgICAgew0KKyAgICBzdGF0aWNfY2FzdDxUV2lkZ2V0UmVuZGVyZXIqPihhUHRyKS0+VHJhbnNp
dGlvbkNiKCk7DQorICAgIHJldHVybiBFVHJ1ZTsNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OlRXaWRnZXRSZW5kZXJlcg0KKy8vDQor
Ly8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitUV2lkZ2V0UmVuZGVyZXI6OlRXaWRn
ZXRSZW5kZXJlcihDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcpIDogaVdlYktpdFZpZXcoJmFXZWJL
aXRWaWV3KSwgaVRyYW5zaXRpb25CaXRtYXAoMCksIGlGYWRlTWFzaygwKSwgaVRyYW5zaXRpb25U
aW1lcigwKSwgaVRyYW5zaXRpb25Db3VudCgwKSAgIA0KKyAgICB7DQorICAgIH0NCisNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjp+VFdpZGdldFJlbmRlcmVy
DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RXaWRnZXRSZW5kZXJl
cjo6flRXaWRnZXRSZW5kZXJlcigpDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OlByZXBhcmVGb3JUcmFuc2l0aW9uDQorLy8N
CisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVy
OjpQcmVwYXJlRm9yVHJhbnNpdGlvbkwoY29uc3QgVERlc0MmIC8qYVRyYW5zaXRpb24qLykNCisg
ICAgeyAgIA0KKyAgICBpVHJhbnNpdGlvbkNvdW50ID0gMDsgICAgICAgIA0KKyAgICBEZXN0cm95
VHJhbnNpdGlvbkJpdG1hcCgpOw0KKyAgICBDcmVhdGVUcmFuc2l0aW9uQml0bWFwTCgpOyAgICAg
ICAgICAgICAgICAgICAgDQorICAgIERlc3Ryb3lGYWRlTWFzaygpOw0KKyAgICBDcmVhdGVGYWRl
TWFza0woKTsNCisgICAgRHJhd0ZhZGVNYXNrTCgpOyAgICAgICAgDQorICAgIH0NCisNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpQZXJmb3JtVHJhbnNpdGlv
bkwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0
UmVuZGVyZXI6OlBlcmZvcm1UcmFuc2l0aW9uTCgpDQorICAgIHsNCisgICAgDQorICAgIGRlbGV0
ZSBpVHJhbnNpdGlvblRpbWVyOw0KKyAgICBpVHJhbnNpdGlvblRpbWVyID0gMDsNCisgICAgVFJB
UF9JR05PUkUoaVRyYW5zaXRpb25UaW1lciA9IENQZXJpb2RpYzo6TmV3TCggQ0FjdGl2ZTo6RVBy
aW9yaXR5TG93ICkpOw0KKyAgICBpVHJhbnNpdGlvbkNvdW50ID0gMDsNCisgICAgaVRyYW5zaXRp
b25UaW1lci0+U3RhcnQoIDIwLCAyMCwgVENhbGxCYWNrKCAmOjpUcmFuc2l0aW9uQ2IsIHRoaXMg
KSApOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5k
ZXJlcjo6VHJhbnNpdGlvbkNiDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpUcmFuc2l0aW9uQ2IoKQ0KKyAgICB7DQorICAgIA0K
KyAgICBpVHJhbnNpdGlvbkNvdW50Kys7DQorICAgIA0KKyAgICBpZiAoaVRyYW5zaXRpb25Db3Vu
dD09TWF4VHJhbnNpdGlvbkNvdW50KQ0KKyAgICAgICAgew0KKyAgICAgICAgRGVzdHJveVRyYW5z
aXRpb25CaXRtYXAoKTsNCisgICAgICAgIGlUcmFuc2l0aW9uVGltZXItPkNhbmNlbCgpOw0KKyAg
ICAgICAgRGVzdHJveUZhZGVNYXNrKCk7DQorICAgICAgICB9DQorDQorICAgIFRSQVBfSUdOT1JF
KERyYXdGYWRlTWFza0woKSk7DQorICAgIGlXZWJLaXRWaWV3LT5EcmF3RGVmZXJyZWQoKTsNCisg
ICAgDQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRl
cmVyOjpDcmVhdGVUcmFuc2l0aW9uQml0bWFwTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6Q3JlYXRlVHJhbnNpdGlvbkJpdG1h
cEwoKQ0KKyAgICB7DQorICAgIGlUcmFuc2l0aW9uQml0bWFwID0gbmV3IChFTGVhdmUpIENGYnNC
aXRtYXAoKTsNCisgICAgVXNlcjo6TGVhdmVJZkVycm9yKGlUcmFuc2l0aW9uQml0bWFwLT5DcmVh
dGUoIGlXZWJLaXRWaWV3LT5PZmZzY3JlZW5CaXRtYXAoKS0+U2l6ZUluUGl4ZWxzKCksICBpV2Vi
S2l0Vmlldy0+RGlzcGxheU1vZGUoKSkpOw0KKyAgICBDRmJzQml0bWFwRGV2aWNlKiBkZXYgPSBD
RmJzQml0bWFwRGV2aWNlOjpOZXdMKGlUcmFuc2l0aW9uQml0bWFwKTsNCisgICAgQ2xlYW51cFN0
YWNrOjpQdXNoTChkZXYpOw0KKyAgICBDRmJzQml0R2MqIGdjOw0KKyAgICBVc2VyOjpMZWF2ZUlm
RXJyb3IoZGV2LT5DcmVhdGVDb250ZXh0KGdjKSk7DQorICAgIGdjLT5CaXRCbHQoVFBvaW50KDAs
MCksaVdlYktpdFZpZXctPk9mZnNjcmVlbkJpdG1hcCgpKTsNCisgICAgZGVsZXRlIGdjOw0KKyAg
ICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkRlc3Ryb3lUcmFuc2l0aW9uQml0bWFw
DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJl
bmRlcmVyOjpEZXN0cm95VHJhbnNpdGlvbkJpdG1hcCgpDQorICAgIHsNCisgICAgZGVsZXRlIGlU
cmFuc2l0aW9uQml0bWFwOw0KKyAgICBpVHJhbnNpdGlvbkJpdG1hcCA9IDA7DQorICAgIH0NCisN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpDcmVhdGVGYWRl
TWFza0wNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lk
Z2V0UmVuZGVyZXI6OkNyZWF0ZUZhZGVNYXNrTCgpDQorICAgIHsNCisgICAgaUZhZGVNYXNrID0g
bmV3IChFTGVhdmUpIENGYnNCaXRtYXAoKTsNCisgICAgaUZhZGVNYXNrLT5DcmVhdGUoaVRyYW5z
aXRpb25CaXRtYXAtPlNpemVJblBpeGVscygpLEVHcmF5MjU2KTsNCisgICAgfQ0KKw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkRlc3Ryb3lGYWRlTWFzaw0K
Ky8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5k
ZXJlcjo6RGVzdHJveUZhZGVNYXNrKCkNCisgICAgew0KKyAgICBkZWxldGUgaUZhZGVNYXNrOw0K
KyAgICBpRmFkZU1hc2sgPSAwOw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6RHJhd0ZhZGVNYXNrTA0KKy8vDQorLy8NCisvLw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6RHJhd0ZhZGVNYXNr
TCgpDQorICAgIHsNCisgICAgaWYgKGlGYWRlTWFzaykNCisgICAgICAgIHsgICAgICAgIA0KKyAg
ICAgICAgQ0Zic0JpdG1hcERldmljZSogZGV2ID0gQ0Zic0JpdG1hcERldmljZTo6TmV3TChpRmFk
ZU1hc2spOw0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChkZXYpOw0KKyAgICAgICAgQ0Zi
c0JpdEdjKiBnYzsNCisgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihkZXYtPkNyZWF0ZUNvbnRl
eHQoZ2MpKTsNCisgICAgICAgIGlGYWRlTWFzay0+TG9ja0hlYXAoKTsNCisgICAgICAgIFRTaXpl
IHMgPSBpRmFkZU1hc2stPlNpemVJblBpeGVscygpOw0KKyAgICAgICAgVFVpbnQ4KiBkYXRhID0g
KFRVaW50OCopaUZhZGVNYXNrLT5EYXRhQWRkcmVzcygpOw0KKyAgICAgICAgVFVpbnQ4KiBlbmQg
PSBkYXRhICsgcy5pV2lkdGgqcy5pSGVpZ2h0Ow0KKyAgICAgICAgd2hpbGUgKCBkYXRhPGVuZCAp
DQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICooZGF0YSsrKSA9ICgyNTUqaVRyYW5zaXRp
b25Db3VudC9NYXhUcmFuc2l0aW9uQ291bnQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGlG
YWRlTWFzay0+VW5sb2NrSGVhcCgpOw0KKyAgICAgICAgZGVsZXRlIGdjOw0KKyAgICAgICAgQ2xl
YW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpEcmF3VHJhbnNpdGlv
bg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRS
ZW5kZXJlcjo6RHJhd1RyYW5zaXRpb24oQ1dpbmRvd0djJiBnYywgQ0Zic0JpdG1hcCogYUN1cnJl
bnRCaXRtYXApDQorICAgIHsNCisNCisgICAgaWYgKCFpVHJhbnNpdGlvbkJpdG1hcCB8fCAhYUN1
cnJlbnRCaXRtYXAgfHwgIWlGYWRlTWFzaykNCisgICAgICAgIHJldHVybjsNCisgICAgDQorICAg
IFRTaXplIHMgPSBpVHJhbnNpdGlvbkJpdG1hcC0+U2l6ZUluUGl4ZWxzKCk7DQorICAgIGdjLkJp
dEJsdChUUG9pbnQoMCwwKSxpVHJhbnNpdGlvbkJpdG1hcCk7DQorICAgIGdjLkJpdEJsdE1hc2tl
ZChUUG9pbnQoMCwwKSxhQ3VycmVudEJpdG1hcCwgVFJlY3QocyksIGlGYWRlTWFzaywgRUZhbHNl
KTsNCisNCisgICAgfQ0KKw0KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI5MSkNCisrKyBXZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDY0IEBADQorMjAwNi0xMC0yNSAgeWFkYXZhbGwg
IDxzcmlyYW0ueWFkYXZhbGxpQG5va2lhLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IFNh
Y2hpbiAoU2FjaGluLlBhZG1hQG5va2lhLmNvbSkuDQorICAgICAgICBERVNDOlNjcmlwdGFibGUg
cGx1Z2luICYgV2lkZ2V0IG9iamVjdCBpbXBsZW1lbnRhdGlvbiANCisgICAgICAgIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDA3DQorDQorICAgICAgICAqIEJyb3dz
ZXJDb250cm9sL2luYy9CckN0bC5oOg0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9pbmMvQnJD
dGxEZWZzLmg6DQorICAgICAgICAoVEJyQ3RsRGVmczo6KToNCisgICAgICAgICogQnJvd3NlckNv
bnRyb2wvaW5jL0JyQ3RsSW50ZXJmYWNlLmg6DQorICAgICAgICAqIEJyb3dzZXJDb250cm9sL3Ny
Yy9CckN0bC5jcHA6DQorICAgICAgICAoQ0JyQ3RsOjp+Q0JyQ3RsKToNCisgICAgICAgIChDQnJD
dGw6OkhhbmRsZUNvbW1hbmRMKToNCisgICAgICAgIChDQnJDdGw6OkFkZE9wdGlvbk1lbnVJdGVt
c0wpOg0KKyAgICAgICAgKENCckN0bDo6VXBkYXRlRGVmYXVsdFNvZnRrZXlzTCk6DQorICAgICAg
ICAoQ0JyQ3RsOjpDcmVhdGVXaWRnZXRFeHRlbnNpb25MKToNCisgICAgICAgICogQnJvd3NlclZp
ZXcvaW5jL1dlYktpdENvbnRyb2wuaDoNCisgICAgICAgIChDV2ViS2l0Q29udHJvbDo6V2lkZ2V0
RXh0ZW5zaW9uKToNCisgICAgICAgICogQnJvd3NlclZpZXcvaW5jL3dlYmtpdGJyaWRnZS5oOg0K
KyAgICAgICAgKiBCcm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNwcDoNCisgICAgICAg
IChDS2V5RXZlbnRIYW5kbGVyOjpIYW5kbGVBY3RpdmF0ZUtleXNMKToNCisgICAgICAgICogQnJv
d3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wuY3BwOg0KKyAgICAgICAgKENXZWJLaXRDb250cm9s
Ojp+Q1dlYktpdENvbnRyb2wpOg0KKyAgICAgICAgKENXZWJLaXRDb250cm9sOjpDcmVhdGVXaWRn
ZXRFeHRlbnNpb25MKToNCisgICAgICAgICogQnJvd3NlclZpZXcvc3JjL1dlYktpdFZpZXcuY3Bw
Og0KKyAgICAgICAgKENXZWJLaXRWaWV3OjpNYWtlVmlzaWJsZSk6DQorICAgICAgICAoQ1dlYktp
dFZpZXc6OkRyYXcpOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9zcmMvd2Via2l0YnJpZGdlLmNw
cDoNCisgICAgICAgIChDV2ViS2l0QnJpZGdlOjpMYXlvdXRDaGFuZ2VkKToNCisgICAgICAgIChD
V2ViS2l0QnJpZGdlOjpjcmVhdGVXaWRnZXRPYmplY3QpOg0KKyAgICAgICAgKiBQbHVnaW4vaW5j
L1BsdWdpbkhhbmRsZXIuaDoNCisgICAgICAgICogUGx1Z2luL2luYy9QbHVnaW5Ta2luLmg6DQor
ICAgICAgICAoQ1BsdWdpblNraW46OldlYktpdENvbnRyb2wpOg0KKyAgICAgICAgKENQbHVnaW5T
a2luOjpGcmFtZSk6DQorICAgICAgICAqIFBsdWdpbi9pbmMvUGx1Z2luV2luLmg6DQorICAgICAg
ICAqIFBsdWdpbi9pbmMvbnBhcGkuaDoNCisgICAgICAgICogUGx1Z2luL3NyYy9OcG5JbXBsZW1l
bnRhdGlvbi5jcHA6DQorICAgICAgICAoTnBuR2V0VmFsdWUpOg0KKyAgICAgICAgKiBQbHVnaW4v
c3JjL1BsdWdpbkhhbmRsZXIuY3BwOg0KKyAgICAgICAgKENQbHVnaW5JbmZvOjpQYXJzZURlZmF1
bHREYXRhTCk6DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zU3luY0wpOg0K
KyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpMb2FkUGx1Z2luc0wpOg0KKyAgICAgICAgKENQbHVn
aW5IYW5kbGVyOjpSZWxvYWRQbHVnaW5zKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6R2V0
UGx1Z2luTmFtZSk6DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkZpbGVOYW1l
KToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luRGVzY3JpcHRpb24pOg0KKyAg
ICAgICAgKENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5Db3VudCk6DQorICAgICAgICAoQ1BsdWdp
bkhhbmRsZXI6OlJlbG9hZFBsdWdpbnNMKToNCisgICAgICAgICogUGx1Z2luL3NyYy9QbHVnaW5T
a2luLmNwcDoNCisgICAgICAgIChDUGx1Z2luU2tpbjo6Q29uc3RydWN0TCk6DQorICAgICAgICAo
Q1BsdWdpblNraW46OkNyZWF0ZVBsdWdpbldpbkwpOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpT
ZWxlY3RWaWV3ZXJBbmREb3dubG9hZEwpOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpQbHVnaW5T
Y3JpcHRhYmxlT2JqZWN0KToNCisgICAgICAgICogUGx1Z2luL3NyYy9QbHVnaW5XaW4uY3BwOg0K
KyAgICAgICAgKENQbHVnaW5XaW46OldpbmRvd1NjcmlwdE5QT2JqZWN0KToNCisgICAgICAgIChD
UGx1Z2luV2luOjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KToNCisgICAgICAgICogZ3JvdXAvQnJv
d3NlclZpZXcubW1wOg0KKyAgICAgICAgKiBncm91cC9QbHVnaW4ubW1wOg0KKyAgICAgICAgKiBn
cm91cC93ZWJraXQubW1wOg0KKyAgICAgICAgKiByb20vd2Via2l0LmlieToNCisNCiAyMDA2LTEw
LTIzICBuYWd1byAgPGdlb3JnZS5ndW9Abm9raWEuY29tPg0KIA0KICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FjaGluLg0KSW5kZXg6IFdlYktpdC9ncm91cC9Ccm93c2VyVmlldy5tbXANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvZ3JvdXAvQnJvd3NlclZpZXcubW1wCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJLaXQvZ3JvdXAvQnJvd3NlclZpZXcubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNzcsNiAr
NzcsMTIgQEANCiBTT1VSQ0UgICAgICAgICAgU21hcnRMaW5rSGFuZGxlci5jcHANCiBTT1VSQ0Ug
ICAgICAgICAgU21hcnRMaW5rTWFwLmNwcA0KICNlbmRpZg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9X
SURHRVRTDQorU09VUkNFICAgICAgICAgIFdpZGdldEV4dGVuc2lvbi5jcHANCitTT1VSQ0UgICAg
ICAgICAgV2lkZ2V0UHJlZmVyZW5jZXMuY3BwDQorU09VUkNFICAgICAgICAgIFdpZGdldFJlbmRl
cmVyLmNwcA0KK1NZU1RFTUlOQ0xVREUgICAgICAgIC4uXC4uXC4uXFdpZGdldEVuZ2luZVxpbmMN
CisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiBVU0VSSU5DTFVERSAgICAgLi5cUmVzb3Vy
Y2VMb2FkZXJcSW5jDQogVVNFUklOQ0xVREUgICAgIC4uXFJlc291cmNlTG9hZGVyXGNhY2hlSW5j
DQogVVNFUklOQ0xVREUgICAgIC4uXEJyb3dzZXJWaWV3XEluYw0KSW5kZXg6IFdlYktpdC9ncm91
cC9QbHVnaW4ubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2dyb3VwL1BsdWdpbi5tbXAJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9ncm91cC9QbHVnaW4ubW1wCSh3b3JraW5nIGNvcHkp
DQpAQCAtNjAsNiArNjAsOSBAQA0KIFVTRVJJTkNMVURFICAgICAuLlxSZXNvdXJjZUxvYWRlclxJ
bmMNCiAjaWZuZGVmIF9fQlJPV1NFUl9TREsNCiBVU0VSSU5DTFVERSAgICAgLi5cLi5cLi5cUGFn
ZVNjYWxlclxJbmMNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK1VTRVJJTkNMVURFICAg
ICBcUzYwXG13XHdlYlxXZWJFbmdpbmVcV2lkZ2V0RW5naW5lXEluYw0KKyNlbmRpZiAvL1JEX0JS
T1dTRVJfV0lER0VUUw0KICNlbmRpZg0KIFVTRVJJTkNMVURFICAgICAuLlwuLlxXRUJDT1JFXGJy
aWRnZQ0KIA0KSW5kZXg6IFdlYktpdC9ncm91cC93ZWJraXQubW1wDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L2dyb3VwL3dlYmtpdC5tbXAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9ncm91
cC93ZWJraXQubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtMTE1LDYgKzExNSw5IEBADQogU1lTVEVN
SU5DTFVERSBcRXBvYzMyXGluY2x1ZGUgXEVwb2MzMlxpbmNsdWRlXG9lbQ0KICNlbmRpZg0KIA0K
KyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorVVNFUklOQ0xVREUgICAuLlwuLlwuLlxXaWRn
ZXRFbmdpbmVcaW5jDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogLy8tLQ0KIA0KIFNZ
U1RFTUlOQ0xVREUgXEVwb2MzMlxpbmNsdWRlXGh0dHANCkluZGV4OiBXZWJLaXQvUGx1Z2luL2lu
Yy9ucGFwaS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9pbmMvbnBhcGkuaAkocmV2
aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9pbmMvbnBhcGkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTE0LDcgKzE0LDcgQEANCiAgKg0KICAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIG1vemls
bGEub3JnIGNvZGUuDQogICoNCi0gKiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdp
bmFsIENvZGUgaXMgDQorICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBD
b2RlIGlzDQogICogTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uDQogICogUG9y
dGlvbnMgY3JlYXRlZCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykg
MTk5OA0KICAqIHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCkBA
IC03MywxMiArNzMsMTIgQEANCiAjZW5kaWYNCiAjZW5kaWYNCiANCi0vKiANCi0gKiBOT19OU1BS
XzEwX1NVUFBPUlQgZGlzYWJsZXMgdGhlIGluY2x1c2lvbiANCi0gKiBvZiBvYnNvbGV0ZS9wcm90
eXBlcy5oLCB3aG9zZSBpbnQxNiwgdWludDE2LCANCi0gKiBpbnQzMiwgYW5kIHVpbnQzMiB0eXBl
ZGVmcyBjb25mbGljdCB3aXRoIHRob3NlIA0KLSAqIGluIHRoaXMgZmlsZS4gDQotICovIA0KKy8q
DQorICogTk9fTlNQUl8xMF9TVVBQT1JUIGRpc2FibGVzIHRoZSBpbmNsdXNpb24NCisgKiBvZiBv
YnNvbGV0ZS9wcm90eXBlcy5oLCB3aG9zZSBpbnQxNiwgdWludDE2LA0KKyAqIGludDMyLCBhbmQg
dWludDMyIHR5cGVkZWZzIGNvbmZsaWN0IHdpdGggdGhvc2UNCisgKiBpbiB0aGlzIGZpbGUuDQor
ICovDQogI2lmbmRlZiBOT19OU1BSXzEwX1NVUFBPUlQNCiAjZGVmaW5lIE5PX05TUFJfMTBfU1VQ
UE9SVA0KICNlbmRpZg0KQEAgLTEyMCw3ICsxMjAsNyBAQA0KICAgI2luY2x1ZGUgPEV2ZW50cy5o
Pg0KICNlbmRpZg0KIA0KLSNpZiBkZWZpbmVkKFhQX1VOSVgpIA0KKyNpZiBkZWZpbmVkKFhQX1VO
SVgpDQogIyBpbmNsdWRlIDxzdGRpby5oPg0KICMgaWYgZGVmaW5lZChNT1pfWDExKQ0KICMgICBp
bmNsdWRlIDxYMTEvWGxpYi5oPg0KQEAgLTI5OCwxMSArMjk4LDExIEBADQogICB1aW50MTYgcmln
aHQ7DQogfSBOUFJlY3Q7DQogDQotdHlwZWRlZiBzdHJ1Y3QgX05QU2l6ZSANCi17IA0KLSAgaW50
MzIgd2lkdGg7IA0KLSAgaW50MzIgaGVpZ2h0OyANCi19IE5QU2l6ZTsgDQordHlwZWRlZiBzdHJ1
Y3QgX05QU2l6ZQ0KK3sNCisgIGludDMyIHdpZHRoOw0KKyAgaW50MzIgaGVpZ2h0Ow0KK30gTlBT
aXplOw0KIA0KICNpZmRlZiBYUF9VTklYDQogLyoNCkBAIC0zNDUsMjEgKzM0NSwyMSBAQA0KIA0K
IA0KIC8qDQotICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVkIG9uIGNlcnRhaW4g
cGxhdGZvcm1zIHRvIE5QTlYgYW5kIA0KLSAqICAgTlBQViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFy
b3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4gTmV3ZXIgDQotICogICBjb21waWxlcnMg
b24gc29tZSBwbGF0Zm9ybXMgbWF5IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90IA0KLSAq
ICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRlciBwbHVn
aW5zIGZyb20gDQotICogICBub3QgdW5kZXJzdGFuZGluZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0
aGVzZSBtYXNrcyBjaGFuZ2UgdGhlIA0KKyAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBw
bGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0byBOUE5WIGFuZA0KKyAqICAgTlBQViBzZWxlY3Rv
cnMgdGhhdCBwYXNzIGFyb3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4gTmV3ZXINCisg
KiAgIGNvbXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0
IGFyZSBub3QNCisgKiAgIGNvbXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZl
bnQgb2xkZXIgcGx1Z2lucyBmcm9tDQorICogICBub3QgdW5kZXJzdGFuZGluZyBhIG5ldyBicm93
c2VyJ3MgQUJJLCB0aGVzZSBtYXNrcyBjaGFuZ2UgdGhlDQogICogICB2YWx1ZXMgb2YgdGhvc2Ug
c2VsZWN0b3JzIG9uIHRob3NlIHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcw0KLSAqICAg
Y29tcGF0aWJsZSB3aXRoIGRpZmZlcmVuZXQgdmVyc2lvbnMgb2YgdGhlIGJyb3dzZXIsIHBsdWdp
bnMgY2FuIA0KKyAqICAgY29tcGF0aWJsZSB3aXRoIGRpZmZlcmVuZXQgdmVyc2lvbnMgb2YgdGhl
IGJyb3dzZXIsIHBsdWdpbnMgY2FuDQogICogICB1c2UgdGhlc2UgbWFza3MgdG8gZHluYW1pY2Fs
bHkgZGV0ZXJtaW5lIGFuZCB1c2UgdGhlIGNvcnJlY3QgQysrDQotICogICBBQkkgdGhhdCB0aGUg
YnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cyANCisg
KiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBhcHBs
eSB0byBXaW5kb3dzDQogICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5v
dCBjaGFuZ2UuDQogICovDQogDQogI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAw
DQogLyoNCi0gKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFy
ZSBpbmNvbXBhdGlibGUgd2l0aCANCisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24g
VU5JWCBhbmQgT1NYIGFyZSBpbmNvbXBhdGlibGUgd2l0aA0KICAqICAgcHJldmlvdXMgY29tcGls
ZXJzLg0KICAqLw0KICNpZiAoZGVmaW5lZCAoWFBfVU5JWCkgJiYgZGVmaW5lZChfX0dOVUNfXykg
JiYgKF9fR05VQ19fID49IDMpKQ0KQEAgLTM3NSw3ICszNzUsNyBAQA0KICAqICAgZGlmZmVyZW50
IHRoYW4gQ0ZNLiBJbiBhZGRpdGlvbiB0byBoYXZpbmcgYSBkaWZmZXJlbnQNCiAgKiAgIEMrKyBB
QkksIGl0IGFsc28gaGFzIGhhcyBkaWZmZXJlbnQgQyBjYWxsaW5nIGNvbnZlbnRpb24uDQogICog
ICBZb3UgbXVzdCB1c2UgZ2x1ZSBjb2RlIHdoZW4gY2FsbGluZyBiZXR3ZWVuIENGTSBhbmQNCi0g
KiAgIE1hY2gtTyBDIGZ1bmN0aW9ucy4gDQorICogICBNYWNoLU8gQyBmdW5jdGlvbnMuDQogICov
DQogI2lmIChkZWZpbmVkKFRBUkdFVF9SVF9NQUNfTUFDSE8pKQ0KICNkZWZpbmUgX05QX0FCSV9N
SVhJTl9GT1JfTUFDSE8gTlBfQUJJX01BQ0hPX01BU0sNCkBAIC00MDQsMTEgKzQwNCwxNCBAQA0K
ICAgLyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBzdGFydGlu
ZyB3aXRoIDAuOS45ICovDQogICBOUFBWamF2YXNjcmlwdFB1c2hDYWxsZXJCb29sID0gMTIsDQog
ICBOUFBWcGx1Z2luS2VlcExpYnJhcnlJbk1lbW9yeSA9IDEzLCAgIC8qIGF2YWlsYWJsZSBpbiBN
b3ppbGxhIDEuMCAqLw0KLSAgLyogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWZpYyB0byBOb2tpYSwg
c28gdmFsdWUgaXMgDQotICAgKiBzdGFydGVkIGZyb20gMTAwLiBUaGUgbnVtYmVycyAxMyB0byAx
MDAwIGFyZSBsZWZ0DQorI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgTlBQVnBsdWdpbk5l
ZWRzWEVtYmVkICAgICAgICAgPSAxNCwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0K
KyAgIC8qIHN0YXJ0ZWQgZnJvbSAxMDAuIFRoZSBudW1iZXJzIDEzIHRvIDEwMDAgYXJlIGxlZnQN
CiAgICAqIGZvciBzdGFuZGFyaXphdGlvbiBhbmQgb3RoZXIgZnV0dXJlIHVzZS4gVmFsdWUgcmV0
dXJuIGlzIHplcm8gZm9yDQogICAgKiBpbmV0ZXJhY3RpdmUgYW5kICdvbmUnIGZvciBub24taW50
ZXJhY3RpdmUuDQogICAgKi8NCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QgID0gMTUs
DQorI2VuZGlmDQogICBOUFBWcGx1Z2luSW50ZXJhY3RpdmVCb29sID0gMTAwMA0KIH0gTlBQVmFy
aWFibGU7DQogDQpAQCAtNDI3LDYgKzQzMCwxNiBAQA0KICAgTlBOVnNlcnZpY2VNYW5hZ2VyID0g
KDEwIHwgTlBfQUJJX01BU0spLA0KICAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBfQUJJ
X01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLw0KICAgTlBOVkRPTVdpbmRv
dyAgICAgID0gKDEyIHwgTlBfQUJJX01BU0spDQorI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUw0K
KyAgLE5QTlZUb29sa2l0ICAgICAgICA9ICgxMyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAg
ICAgICAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisNCisgIC8qIEdldCB0
aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLw0KKyAgTlBOVldp
bmRvd05QT2JqZWN0ID0gMTUsDQorDQorICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBm
b3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovDQorICBOUE5WUGx1Z2luRWxlbWVudE5QT2Jq
ZWN0ICAgICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQorI2Vu
ZGlmDQogfSBOUE5WYXJpYWJsZTsNCiANCiAvKg0KSW5kZXg6IFdlYktpdC9QbHVnaW4vaW5jL1Bs
dWdpbkhhbmRsZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbkhh
bmRsZXIuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luSGFu
ZGxlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTM3LDYgKzEzNywxNiBAQA0KICAgICAgICAgKi8N
CiAgICAgICAgIFRVaW50IEdldEluZGV4RnJvbUhhbmRsZShUSW50IGFIYW5kbGUpOw0KIA0KKyNp
ZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogR2V0IHRo
ZSBpbmRleCBvZiBwbHVnaW4gaW5mbyBmcm9tIGl0cyBoYW5kbGUuDQorICAgICAgICAqDQorICAg
ICAgICAqIEBzaW5jZSAzLjENCisgICAgICAgICogQHBhcmFtIGFIYW5kbGUgVGhlIGhhbmRsZSBv
ZiB0aGUgcGx1Z2luLCByZXR1cm5lZCBmcm9tIEZpbmRQbHVnaW4uDQorICAgICAgICAqIEByZXR1
cm4gdGhlIGluZGV4IG9mIHRoZSBwbHVnaW4gaW5mby4NCisgICAgICAgICovDQorICAgICAgICBU
Qm9vbCBMb2FkUGx1Z2luc1N5bmNMKCk7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
ICAgIHB1YmxpYzogLy9Gcm9tIE1XZWJDb3JlUGx1Z2luSGFuZGxlcg0KICAgICAgICAgLyoqDQog
ICAgICAgICAqIFNjYW5zIGZvciBuZXcgcGx1Z2lucy4NCkluZGV4OiBXZWJLaXQvUGx1Z2luL2lu
Yy9QbHVnaW5Ta2luLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5T
a2luLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpblNraW4u
aAkod29ya2luZyBjb3B5KQ0KQEAgLTE2OCw3ICsxNjgsMTQgQEANCiAgICAgICAgICogQHNpbmNl
IDMuMQ0KICAgICAgICAgKiBAcmV0dXJuIFRoZSBXZWJLaXRDb250cm9sIG9iamVjdA0KICAgICAg
ICAgKi8NCi0gICAgICAgIENXZWJLaXRDb250cm9sKiBXZWJLaXRDb250cm9sKCkgeyByZXR1cm4g
JmlXZWJLaXRGcmFtZS0+V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKTsgfQ0KKyAgICAgICAg
Q1dlYktpdENvbnRyb2wqIFdlYktpdENvbnRyb2woKSBjb25zdCB7IHJldHVybiAmaVdlYktpdEZy
YW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpOyB9DQorICAgICAgICAvKioNCisgICAg
ICAgICogRnJhbWUNCisgICAgICAgICogUmV0dXJucyBhIHBvaW50ZXIgdG8gV2ViS2l0RnJhbWUg
b2JqZWN0Lg0KKyAgICAgICAgKiBAc2luY2UgMy4xDQorICAgICAgICAqIEByZXR1cm4gVGhlIFdl
YktpdENvbnRyb2wgb2JqZWN0DQorICAgICAgICAqLw0KKyAgICAgICAgQ1dlYktpdEZyYW1lKiBG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlXZWJLaXRGcmFtZTsgfSANCiANCiAgICAgICAgIC8qKg0K
ICAgICAgICAgKiBIYXNSZXNpemVkDQpAQCAtMzYyLDYgKzM2OSwxNSBAQA0KICAgICAgICAgVEJv
b2wgQ2FuSW50ZXJhY3QoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gaUNhblBsdWdpbkludGVy
YWN0OyB9DQogI2VuZGlmDQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAg
IC8qKg0KKyAgICAgICAgKiBHZXQgdGhlIHNjcmlwdGluZyBvYmplY3QgZnJvbSBwbHVnaW4NCisg
ICAgICAgICogU2V0cyB0aGUgZm9udA0KKyAgICAgICAgKiBAc2luY2UgMy4xDQorICAgICAgICAq
IEByZXR1cm4NCisgICAgICAgICovDQorICAgICAgICB2b2lkICpQbHVnaW5TY3JpcHRhYmxlT2Jq
ZWN0KCk7IA0KKyNlbmRpZg0KICAgcHVibGljOiAvLyBGdW5jdGlvbnMgZnJvbSBNVmlld0ZvY3Vz
T2JzZXJ2ZXINCiANCiAgICAgICAgIC8qKg0KSW5kZXg6IFdlYktpdC9QbHVnaW4vaW5jL1BsdWdp
bldpbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luV2luLmgJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbldpbi5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtNTcsNiArNTcsOSBAQA0KIGNsYXNzIENXZWJLaXRDb250cm9sOw0KIGNsYXNz
IENQbHVnaW5Ta2luOw0KIGNsYXNzIENQbHVnaW5IYW5kbGVyOw0KKyNpZmRlZiAgUkRfQlJPV1NF
Ul9XSURHRVRTDQorY2xhc3MgTlBPYmplY3Q7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRT
DQogDQogLy8gTE9DQUwgQ09OU1RBTlRTIEFORCBNQUNST1MNCiAvLyBUaGVzZSBhcmUgdXNlZCB0
byBkZXNpZ25hdGUgdGhlIGhhbmRsaW5nIG9mIGluY29taW5nIGNvbnRlbnQgYW5kIGxvYWRpbmcg
UGx1Z2lucw0KQEAgLTQ2Niw2ICs0NjksMjEgQEANCiAgICAgICAgICovDQogICAgIHZvaWQgSGFu
ZGxlTG9zaW5nRm9yZWdyb3VuZCgpOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQor
ICAgICAgICAvKioNCisgICAgICAgICogUmV0dXJuIHdpbmRvdyBvYmplY3QgdXNhYmxlIGZyb20g
c2NyaXB0YWJsZSBwbHVnaW5zIA0KKyAgICAgICAgKiBAc2luY2UgMy4xDQorICAgICAgICAqIEBy
ZXR1cm4gbm9uZQ0KKyAgICAgICAgKi8gICAgICAgIA0KKyAgICAgICAgTlBPYmplY3QqIFdpbmRv
d1NjcmlwdE5QT2JqZWN0KCk7IA0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEdldCB0aGUgc2Ny
aXB0aW5nIG9iamVjdCBmcm9tIHBsdWdpbg0KKyAgICAgICAgKiBTZXRzIHRoZSBmb250DQorICAg
ICAgICAqIEBzaW5jZSAzLjENCisgICAgICAgICogQHJldHVybg0KKyAgICAgICAgKi8NCisgICAg
ICAgIHZvaWQgKlBsdWdpblNjcmlwdGFibGVPYmplY3QoKTsgICAgICAgICANCisjZW5kaWYgLy9S
RF9CUk9XU0VSX1dJREdFVFMNCiANCiAgICAgcHJvdGVjdGVkOiAvLyBOZXcgZnVuY3Rpb25zDQog
DQpJbmRleDogV2ViS2l0L1BsdWdpbi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L1BsdWdpbi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwCShyZXZpc2lv
biAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL3NyYy9OcG5JbXBsZW1lbnRhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC00MjUsNyArNDI1LDIwIEBADQogICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0KKyNpZmRlZiAg
UkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICBjYXNlIE5QTlZXaW5kb3dOUE9iamVjdDoNCisg
ICAgICAgICAgICB7DQorICAgICAgICAgICAgQ1BsdWdpbldpbiogcGx1Z2luV2luID0gKENQbHVn
aW5XaW4qKWFJbnN0YW5jZS0+bmRhdGE7DQorICAgICAgICAgICAgTlBPYmplY3QqIHdpbmRvd09i
amVjdCA9IHBsdWdpbldpbi0+V2luZG93U2NyaXB0TlBPYmplY3QoKTsNCisgICAgICAgICAgICBp
ZiAod2luZG93T2JqZWN0KQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZv
aWQgKip2ID0gKHZvaWQgKiopYVJldFZhbHVlOw0KKyAgICAgICAgICAgICAgICAqdiA9IHdpbmRv
d09iamVjdDsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOw0KKyAgICAg
ICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7DQor
ICAgICAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICAgICAgY2Fz
ZSBOUE5WRE9NV2luZG93Og0KICAgICAgICAgY2FzZSBOUE5WeERpc3BsYXk6ICAgICAgICAgIC8v
IFVuaXggb25seTogUmV0dXJucyB0aGUgY3VycmVudCBEaXNwbGF5DQogICAgICAgICBjYXNlIE5Q
TlZ4dEFwcENvbnRleHQ6ICAgICAgLy8gVW5peCBvbmx5OiBSZXR1cm5zIHRoZSBhcHBsaWNhdGlv
bidzIFh0QXBwQ29udGV4dA0KSW5kZXg6IFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbkhhbmRsZXIu
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luSGFuZGxlci5jcHAJ
KHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbkhhbmRsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpDQpAQCAtMTAsOSArMTAsOSBAQA0KICogICAgQ29weXJpZ2h0IChjKSAy
MDA2LCBOb2tpYSBDb3Jwb3JhdGlvbg0KICogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqICAN
Ci0qICAJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0DQotKiAgCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSogIAlhcmUgbWV0Og0KKyogICAgICBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQNCisqICAgICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorKiAgICAgIGFyZSBtZXQ6DQogKiAgDQogKiAg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQNCiAqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQpAQCAtMjQsMTggKzI0LDE4IEBADQogKiAgICAg
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkDQogKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICogIA0KLSogIAlUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQotKiAgCSJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UDQotKiAgCUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KLSogIAlBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KLSogIAlPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwNCi0qICAJU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVA0KLSogIAlMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCi0qICAJREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
DQotKiAgCVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQNCi0qICAJKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUNCi0qICAJVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KLSogIAlEQU1B
R0UuDQorKiAgICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMNCisqICAgICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisqICAgICAgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SDQorKiAgICAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorKiAgICAgIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KKyogICAg
ICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UDQorKiAgICAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyogICAgICBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCisq
ICAgICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVA0KKyogICAgICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0KKyogICAgICBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIDQorKiAg
ICAgIERBTUFHRS4NCiAqICANCiAqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4
dCBmb3IgZnVydGhlciBncmFudHMuDQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zMjUs
OCArMzI1LDggQEANCiAgICAgICAgICAgICBpZiAoaSA+IG1hcmtlcikNCiAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICBUUHRyQzggbWltZUZpbGVFeHQ4KGFNSU1FRGVzY3JpcHRp
b24uTWlkKG1hcmtlcixpLW1hcmtlcikpOw0KLQkgICAgICAgICAgICBuZXdNaW1lRmlsZUV4dEVu
dHJ5ID0gSEJ1ZkM6Ok5ld0xDKGktbWFya2VyKTsNCi0JICAgICAgICAgICAgbmV3TWltZUZpbGVF
eHRFbnRyeS0+RGVzKCkuQ29weShtaW1lRmlsZUV4dDgpOw0KKyAgICAgICAgICAgICAgICBuZXdN
aW1lRmlsZUV4dEVudHJ5ID0gSEJ1ZkM6Ok5ld0xDKGktbWFya2VyKTsNCisgICAgICAgICAgICAg
ICAgbmV3TWltZUZpbGVFeHRFbnRyeS0+RGVzKCkuQ29weShtaW1lRmlsZUV4dDgpOw0KICAgICAg
ICAgICAgICAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoaU1pbWVGaWxlRXh0ZW5zaW9ucy5BcHBlbmQo
bmV3TWltZUZpbGVFeHRFbnRyeSkpOw0KICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cCgpOyAvL3BvcCBuZXdNaW1lRmlsZUV4dEVudHJ5DQogDQpAQCAtMzY2LDggKzM2Niw4IEBADQog
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgbmV3
IG1pbWVEZXNjcmlwdGlvbiBlbnRyeQ0KICAgICAgICAgICAgICAgICAgICAgVFB0ckM4IG1pbWVE
ZXNjOChhTUlNRURlc2NyaXB0aW9uLk1pZChtYXJrZXIsaS1tYXJrZXIpKTsNCi0JCSAgICAgICAg
ICAgIG5ld01pbWVEZXNjcmlwdGlvbkVudHJ5ID0gSEJ1ZkM6Ok5ld0xDKGktbWFya2VyKTsNCi0J
CSAgICAgICAgICAgIG5ld01pbWVEZXNjcmlwdGlvbkVudHJ5LT5EZXMoKS5Db3B5KG1pbWVEZXNj
OCk7DQorICAgICAgICAgICAgICAgICAgICBuZXdNaW1lRGVzY3JpcHRpb25FbnRyeSA9IEhCdWZD
OjpOZXdMQyhpLW1hcmtlcik7DQorICAgICAgICAgICAgICAgICAgICBuZXdNaW1lRGVzY3JpcHRp
b25FbnRyeS0+RGVzKCkuQ29weShtaW1lRGVzYzgpOw0KIA0KICAgICAgICAgICAgICAgICAgICAg
VXNlcjo6TGVhdmVJZkVycm9yKGlNaW1lRGVzY3JpcHRpb25zLkFwcGVuZChuZXdNaW1lRGVzY3Jp
cHRpb25FbnRyeSkpOw0KICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsg
IC8vcG9wIG5ld01pbWVEZXNjcmlwdGlvbkVudHJ5DQpAQCAtNTIxLDcgKzUyMSwyOCBAQA0KICAg
ICByZXR1cm4gZG9uZUluaXQ7DQogICAgIH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VU
Uw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1BsdWdpbkhhbmRsZXI6OkluaXRpYWxp
emUNCisvLw0KKy8vIEluaXRpYWxpemVzIHRoZSBQbHVnaW5IYW5kbGVyLCBwb3NzaWJseSBhc3lu
Y2hyb25vdXNseQ0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCitUQm9vbCBDUGx1Z2lu
SGFuZGxlcjo6TG9hZFBsdWdpbnNTeW5jTCgpDQorICAgIHsNCisgICAgaWYoIGlQbHVnaW5JbmZv
QXJyYXkuQ291bnQoKSAhPSAwICkNCisgICAgICAgIHsNCisgICAgICAgIHJldHVybiBFVHJ1ZTsN
CisgICAgICAgIH0NCisNCisgICAgLy9DYW5jZWwgdGhlIGVhcmxpZXIgcmVxdWVzdCBhbmQgbG9h
ZCBwbHVnaW5zIG5vdw0KKyAgICBpZiggaUlkbGUgKQ0KKyAgICAgICAgew0KKyAgICAgICAgaUlk
bGUtPkNhbmNlbCgpOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gTG9hZFBsdWdpbnNMKCk7DQor
ICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAvLyBDUGx1Z2luSGFuZGxlcjo6
TG9hZFBsdWdpbnNMDQogLy8NCiAvLyBMb2FkcyBhbGwgdGhlIHBsdWdpbnMgYW5kIHF1ZXJ5IHRo
ZW0gZm9yIGRldGFpbHMuDQpAQCAtNTM1LDMyICs1NTYsMzIgQEANCiAgICAgLy8gQ3JlYXRlIHRo
ZSBFQ29tIGluZm8gYXJyYXksIGNvbnRhaW5zIHRoZSBwbHVnaW4gaW5mb3JtYXRpb24NCiAgICAg
UkltcGxJbmZvUHRyQXJyYXkgZWNvbVBsdWdpbkluZm9BcnJheTsNCiANCi0JLy8gR2V0IGxpc3Qg
b2YgRUNPTSBwbHVnaW5zIHRoYXQgbWF0Y2ggdGhlIEtOQnJvd3NlclBsdWdpbkludGVyZmFjZVVp
ZA0KLQlSRUNvbVNlc3Npb246Okxpc3RJbXBsZW1lbnRhdGlvbnNMKEtCcm93c2VyUGx1Z2luSW50
ZXJmYWNlVWlkLCBlY29tUGx1Z2luSW5mb0FycmF5KTsNCisgICAgLy8gR2V0IGxpc3Qgb2YgRUNP
TSBwbHVnaW5zIHRoYXQgbWF0Y2ggdGhlIEtOQnJvd3NlclBsdWdpbkludGVyZmFjZVVpZA0KKyAg
ICBSRUNvbVNlc3Npb246Okxpc3RJbXBsZW1lbnRhdGlvbnNMKEtCcm93c2VyUGx1Z2luSW50ZXJm
YWNlVWlkLCBlY29tUGx1Z2luSW5mb0FycmF5KTsNCiANCi0JLy8gTG9vcCB0aHJvdWdoIGFsbCB0
aGUgTmV0c2NhcGUgcGx1Z2lucyBmb3VuZCBieSBFQ29tIGFuZCBwb3B1bGF0ZSB0aGUNCi0JLy8g
aVBsdWdpbkluZm9BcnJheQ0KLQljb25zdCBUSW50IHBsdWdpbkNvdW50ID0gZWNvbVBsdWdpbklu
Zm9BcnJheS5Db3VudCgpOw0KLQlmb3IgKFRJbnQgaW5kZXg9MDsgaW5kZXg8cGx1Z2luQ291bnQ7
ICsraW5kZXgpDQorICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIE5ldHNjYXBlIHBsdWdpbnMg
Zm91bmQgYnkgRUNvbSBhbmQgcG9wdWxhdGUgdGhlDQorICAgIC8vIGlQbHVnaW5JbmZvQXJyYXkN
CisgICAgY29uc3QgVEludCBwbHVnaW5Db3VudCA9IGVjb21QbHVnaW5JbmZvQXJyYXkuQ291bnQo
KTsNCisgICAgZm9yIChUSW50IGluZGV4PTA7IGluZGV4PHBsdWdpbkNvdW50OyArK2luZGV4KQ0K
ICAgICAgICAgew0KLQkJQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBuZXcoRUxlYXZlKSBDUGx1
Z2luSW5mbzsNCi0JICAgIHBsdWdpbkluZm8tPmlIYW5kbGUgPSBpTmV4dEhhbmRsZSsrOw0KLQkg
ICAgQ2xlYW51cFN0YWNrOjpQdXNoTChwbHVnaW5JbmZvKTsNCisgICAgICAgIENQbHVnaW5JbmZv
KiBwbHVnaW5JbmZvID0gbmV3KEVMZWF2ZSkgQ1BsdWdpbkluZm87DQorICAgICAgICBwbHVnaW5J
bmZvLT5pSGFuZGxlID0gaU5leHRIYW5kbGUrKzsNCisgICAgICAgIENsZWFudXBTdGFjazo6UHVz
aEwocGx1Z2luSW5mbyk7DQogDQotCSAgICAvLyBTZXQgdGhlIHBsdWdpbiBwcm9wZXJ0aWVzDQot
CSAgICBwbHVnaW5JbmZvLT5pUGx1Z2luSW5mbyA9IGVjb21QbHVnaW5JbmZvQXJyYXlbaW5kZXhd
Ow0KLQkgICAgLy8gUmVhZCB0aGUgcGx1Z2luJ3MgbmFtZSBhbmQgcGx1Z2luIEZpbGVOYW1lIChk
aXNwbGF5X25hbWUpIGZyb20gdGhlIElNUExFTUVOVEFUSU9OX0lORk8NCi0JICAgIHBsdWdpbklu
Zm8tPlBhcnNlRGlzcGxheU5hbWVMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5EaXNwbGF5TmFt
ZSgpKTsNCi0JICAgIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbiA9IEhCdWZDOjpOZXdMKHBsdWdp
bkluZm8tPmlQbHVnaW5JbmZvLT5PcGFxdWVEYXRhKCkuTGVuZ3RoKCkpOw0KLQkgICAgcGx1Z2lu
SW5mby0+aURlc2NyaXB0aW9uLT5EZXMoKS5Db3B5KHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5P
cGFxdWVEYXRhKCkpOw0KLQkgICAgcGx1Z2luSW5mby0+aVVpZCA9IHBsdWdpbkluZm8tPmlQbHVn
aW5JbmZvLT5JbXBsZW1lbnRhdGlvblVpZCgpOw0KLQkgICAgLy8gUGFyc2VzIHRoZSBhTUlNRURl
c2NyaXB0aW9uIHN0cmluZyB0byBwb3B1bGF0ZSB0aGUgbWltZVR5cGVzLCBtaW1lRXh0ZW5zaW9u
cywNCi0JICAgIC8vIGFuZCBtaW1lRGVzY3JpcHRpb25zIGFycmF5cy4NCi0JICAgIHBsdWdpbklu
Zm8tPlBhcnNlRGVmYXVsdERhdGFMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5EYXRhVHlwZSgp
KTsNCisgICAgICAgIC8vIFNldCB0aGUgcGx1Z2luIHByb3BlcnRpZXMNCisgICAgICAgIHBsdWdp
bkluZm8tPmlQbHVnaW5JbmZvID0gZWNvbVBsdWdpbkluZm9BcnJheVtpbmRleF07DQorICAgICAg
ICAvLyBSZWFkIHRoZSBwbHVnaW4ncyBuYW1lIGFuZCBwbHVnaW4gRmlsZU5hbWUgKGRpc3BsYXlf
bmFtZSkgZnJvbSB0aGUgSU1QTEVNRU5UQVRJT05fSU5GTw0KKyAgICAgICAgcGx1Z2luSW5mby0+
UGFyc2VEaXNwbGF5TmFtZUwocGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPkRpc3BsYXlOYW1lKCkp
Ow0KKyAgICAgICAgcGx1Z2luSW5mby0+aURlc2NyaXB0aW9uID0gSEJ1ZkM6Ok5ld0wocGx1Z2lu
SW5mby0+aVBsdWdpbkluZm8tPk9wYXF1ZURhdGEoKS5MZW5ndGgoKSk7DQorICAgICAgICBwbHVn
aW5JbmZvLT5pRGVzY3JpcHRpb24tPkRlcygpLkNvcHkocGx1Z2luSW5mby0+aVBsdWdpbkluZm8t
Pk9wYXF1ZURhdGEoKSk7DQorICAgICAgICBwbHVnaW5JbmZvLT5pVWlkID0gcGx1Z2luSW5mby0+
aVBsdWdpbkluZm8tPkltcGxlbWVudGF0aW9uVWlkKCk7DQorICAgICAgICAvLyBQYXJzZXMgdGhl
IGFNSU1FRGVzY3JpcHRpb24gc3RyaW5nIHRvIHBvcHVsYXRlIHRoZSBtaW1lVHlwZXMsIG1pbWVF
eHRlbnNpb25zLA0KKyAgICAgICAgLy8gYW5kIG1pbWVEZXNjcmlwdGlvbnMgYXJyYXlzLg0KKyAg
ICAgICAgcGx1Z2luSW5mby0+UGFyc2VEZWZhdWx0RGF0YUwocGx1Z2luSW5mby0+aVBsdWdpbklu
Zm8tPkRhdGFUeXBlKCkpOw0KIA0KLQkgICAgLy8gQWRkIHRoZSBmaWx0ZXIgaW5mb3JtYXRpb24g
dG8gdGhlIGxpc3QNCi0JICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpUGx1Z2luSW5mb0FycmF5LkFw
cGVuZChwbHVnaW5JbmZvKSk7DQotCSAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOyAgICAvLyBwbHVn
aW5JbmZvDQorICAgICAgICAvLyBBZGQgdGhlIGZpbHRlciBpbmZvcm1hdGlvbiB0byB0aGUgbGlz
dA0KKyAgICAgICAgVXNlcjo6TGVhdmVJZkVycm9yKGlQbHVnaW5JbmZvQXJyYXkuQXBwZW5kKHBs
dWdpbkluZm8pKTsNCisgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCk7ICAgIC8vIHBsdWdpbklu
Zm8NCiAgICAgICAgIH0NCiANCiAgICAgLy8gQ2xlYW4gdXAgdGhlIEVDb20gaW5mbyBhcnJheQ0K
QEAgLTcxOSw3ICs3NDAsNyBAQA0KIC8vDQogdm9pZCBDUGx1Z2luSGFuZGxlcjo6UmVsb2FkUGx1
Z2lucyhUQm9vbCBhUmVsb2FkUGFnZXMsICBNV2ViQ2xpZW50QnJpZGdlJiBhV2ViQ2xpZW50QnJp
ZGdlKQ0KICAgIHsNCi0JVFJBUF9JR05PUkUoIFJlbG9hZFBsdWdpbnNMKGFSZWxvYWRQYWdlcywg
YVdlYkNsaWVudEJyaWRnZSkpOw0KKyAgICBUUkFQX0lHTk9SRSggUmVsb2FkUGx1Z2luc0woYVJl
bG9hZFBhZ2VzLCBhV2ViQ2xpZW50QnJpZGdlKSk7DQogICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQpAQCAtNzI5LDEyICs3NTAsMTIgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KIFRQdHJDIENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5OYW1lKFRJbnQgYUluZGV4KQ0KICAg
ICB7DQotIAlDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4
XTsNCi0gCWlmIChwbHVnaW5JbmZvICYmIHBsdWdpbkluZm8tPmlOYW1lKQ0KLSAJICAgew0KLSAJ
ICAgcmV0dXJuIHBsdWdpbkluZm8tPk5hbWUoKS0+RGVzKCk7DQotIAkgICB9DQotIAlyZXR1cm4g
VFB0ckMoKTsNCisgICAgIENQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJh
eVthSW5kZXhdOw0KKyAgICAgaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aU5hbWUpDQor
ICAgICAgICB7DQorICAgICAgICByZXR1cm4gcGx1Z2luSW5mby0+TmFtZSgpLT5EZXMoKTsNCisg
ICAgICAgIH0NCisgICAgIHJldHVybiBUUHRyQygpOw0KICAgICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCkBAIC03NDQsMTIgKzc2NSwxMiBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogVFB0ckMgQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkZpbGVOYW1lKFRJbnQgYUluZGV4
KQ0KICAgICB7DQotIAlDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlb
YUluZGV4XTsNCi0gCWlmIChwbHVnaW5JbmZvICYmIHBsdWdpbkluZm8tPmlGaWxlTmFtZSkNCi0g
CSAgIHsNCi0gCSAgIHJldHVybiBwbHVnaW5JbmZvLT5GaWxlTmFtZSgpLT5EZXMoKTsNCi0gCSAg
IH0NCi0gCXJldHVybiBUUHRyQygpOw0KKyAgICAgQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBp
UGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQorICAgICBpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5J
bmZvLT5pRmlsZU5hbWUpDQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gcGx1Z2luSW5mby0+
RmlsZU5hbWUoKS0+RGVzKCk7DQorICAgICAgICB9DQorICAgICByZXR1cm4gVFB0ckMoKTsNCiAg
ICAgfQ0KIA0KIA0KQEAgLTc2MCwxMiArNzgxLDEyIEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiBUUHRyQyBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luRGVzY3JpcHRpb24oVEludCBhSW5k
ZXgpDQogICAgIHsNCi0gCUNQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJh
eVthSW5kZXhdOw0KLSAJaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aURlc2NyaXB0aW9u
KQ0KLSAJICAgew0KLSAJICAgcmV0dXJuIHBsdWdpbkluZm8tPkRlc2NyaXB0aW9uKCktPkRlcygp
Ow0KLSAJICAgfQ0KLSAJcmV0dXJuIFRQdHJDKCk7DQorICAgICBDUGx1Z2luSW5mbyogcGx1Z2lu
SW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCisgICAgIGlmIChwbHVnaW5JbmZvICYm
IHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbikNCisgICAgICAgIHsNCisgICAgICAgIHJldHVybiBw
bHVnaW5JbmZvLT5EZXNjcmlwdGlvbigpLT5EZXMoKTsNCisgICAgICAgIH0NCisgICAgIHJldHVy
biBUUHRyQygpOw0KICAgICB9DQogDQogDQpAQCAtNzc3LDggKzc5OCw4IEBADQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiBUSW50IENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5Db3VudCgpDQog
ICAgIHsNCi0JcmV0dXJuIGlQbHVnaW5JbmZvQXJyYXkuQ291bnQoKTsNCi0JfQ0KKyAgICByZXR1
cm4gaVBsdWdpbkluZm9BcnJheS5Db3VudCgpOw0KKyAgICB9DQogDQogDQogDQpAQCAtOTA2LDcg
KzkyNyw3IEBADQogICAgIHRtcFBsdWdpbkluZm9BcnJheS5DbG9zZSgpOw0KICAgICBpZiAoYVJl
bG9hZFBhZ2VzKQ0KICAgICAgICAgew0KLQkJYVdlYkNsaWVudEJyaWRnZS5SZWxvYWQoKTsNCisg
ICAgICAgIGFXZWJDbGllbnRCcmlkZ2UuUmVsb2FkKCk7DQogICAgICAgICB9DQogICAgIH0NCiAN
CkluZGV4OiBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5Ta2luLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpblNraW4uY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBX
ZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5Ta2luLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTY5LDYg
KzY5LDkgQEANCiAjaW5jbHVkZSAiV2ViS2l0Vmlldy5oIg0KICNpbmNsdWRlICJXZWJLaXRDb250
cm9sLmgiDQogI2luY2x1ZGUgIldlYkNvcmVHcmFwaGljc0NvbnRleHQuaCINCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisjZW5kaWYg
Ly9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAvLyBDT05TVEFOVFMNCiAvLyBzY2hlbWUgZm9yIFJU
U1AgdXJsDQpAQCAtMTU1LDcgKzE1OCw3IEBADQogI2VuZGlmDQogICAgIHJlcC0+R2V0KCBLQnJv
d3NlclVzQnVpbGQsIHZhbHVlICk7DQogICAgIGRlbGV0ZSByZXA7DQotICAgIA0KKw0KICAgICBp
ZiAoICF2YWx1ZSB8fCBhQ2FuUGx1Z2luSW50ZXJhY3QgKQ0KICAgICAgICAgew0KICAgICAgICAg
aUNhblBsdWdpbkludGVyYWN0ID0gRVRydWU7DQpAQCAtMjA0LDcgKzIwNywxMiBAQA0KICAgICAg
ICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAgLy8gdXJsU2NoZW1lDQogICAg
ICAgICAgICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICBDV2lk
Z2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0gaVdlYktpdEZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0
Q29udHJvbCgpLldpZGdldEV4dGVuc2lvbigpOw0KKyAgICAgICAgaWYgKCBiUnRzcEZvdW5kIHx8
ICh3ZGd0RXh0ICYmIGFVcmwuTGVuZ3RoKCkgPT0gMCkpDQorI2Vsc2UNCiAgICAgICAgIGlmICgg
YlJ0c3BGb3VuZCApDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgICAgICAgICAg
ew0KICAgICAgICAgICAgIC8vIElmIHJ0c3Agc2NoZW1lIGluIHVybCwgcGFzcyB0byBwbHVnaW4g
ZGlyZWN0bHksDQogICAgICAgICAgICAgLy8gYWZ0ZXIgdGhlIGF0dHJpYnV0ZSBhcnJheXMgaW5p
dGlhbGl6ZWQNCkBAIC01NTUsNyArNTYzLDcgQEANCiAgICAgew0KICAgICAvLyBUaGUgYUxvYWRN
b2RlIGlzIG5vdCBjdXJyZW50bHkgdXNlZC4gIEl0IHdvdWxkIGJlIHVzZWQgZm9yIGNoZWNraW5n
IHRoZQ0KICAgICAvLyBsb2FkIG1vZGUgYW5kIGRldGVybWluaW5nIGlmIHRoZSBwbHVnaW4gc2hv
dWxkIGJlIGRlbGV0ZWQgYW5kIHJlY3JlYXRlZC4NCi0gICAgDQorDQogICAgIC8vIENyZWF0ZSB0
aGUgUGx1Z2luV2luLCBpZiBpdCBkb2Vzbid0IGV4aXN0LA0KICAgICBpZiAoICFpUGx1Z2luV2lu
ICkNCiAgICAgICAgIHsNCkBAIC01NjMsNyArNTcxLDcgQEANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqaUF0dHJpYnV0ZU5hbWVzLCAqaUF0dHJpYnV0ZVZhbHVlcywNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGhpcywNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpV2ViS2l0RnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRD
b250cm9sKCkpICk7DQotICAgICAgICANCisNCiAgICAgICAgIGlmICggZXJyICE9IEtFcnJOb25l
ICkNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgaWYgKCBlcnIgPT0gS0Vyck5vdFN1cHBv
cnRlZCApDQpAQCAtNTc1LDcgKzU4Myw3IEBADQogICAgICAgICAgICAgICAgIFVzZXI6OkxlYXZl
KCBlcnIgKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCi0gICAgICAgICAg
ICANCisNCiAgICAgICAgIGlmICggIWlJc1NvdW5kc3RhcnQgKQ0KICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAvLyBSZWZyZXNoDQpAQCAtNjE4LDcgKzYyNiw3IEBADQogICAgIENBcnJheUZp
eEZsYXQ8VEJyQ3RsU2VsZWN0T3B0aW9uRGF0YT4qIG9iakxpc3QgPSBuZXcgKEVMZWF2ZSkNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBcnJheUZpeEZs
YXQ8VEJyQ3RsU2VsZWN0T3B0aW9uRGF0YT4oMik7DQogICAgIENsZWFudXBTdGFjazo6UHVzaEwo
b2JqTGlzdCk7DQotICAgIA0KKw0KICAgICAvLyBBZGQgb2JqZWN0IGxpc3QgZW50cnkNCiAgICAg
Zm9yIChpbnQgaT0wOyBpPDI7IGkrKykNCiAgICAgICAgIHsNCkBAIC02NTAsMTAgKzY1OCwxMCBA
QA0KICAgICBvYmpMaXN0LT5SZXNldCgpOw0KICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ry
b3koIDQgKTsvLyBvYmpMaXN0LCB0ZXh0LCB0ZXh0LCB0aXRsZQ0KICAgICB9DQotICAgIA0KKw0K
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ1BsdWdpblNraW46OklzRm9jdXNhYmxlDQot
Ly8gDQorLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJvb2wgQ1BsdWdpblNr
aW46OklzRm9jdXNhYmxlKCkgY29uc3QNCkBAIC02NjQsMyArNjcyLDEwIEBADQogICAgICAgICBy
ZXR1cm4gRUZhbHNlOw0KICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCit2
b2lkKiBDUGx1Z2luU2tpbjo6UGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpDQorICAgIHsNCisgICAg
cmV0dXJuIGlQbHVnaW5XaW4/aVBsdWdpbldpbi0+UGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpOjA7
DQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCkluZGV4OiBXZWJLaXQv
UGx1Z2luL3NyYy9QbHVnaW5XaW4uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9z
cmMvUGx1Z2luV2luLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9zcmMv
UGx1Z2luV2luLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTUzLDYgKzUzLDcgQEANCiAjaW5jbHVk
ZSAiUGx1Z2luU2tpbi5oIg0KICNpbmNsdWRlICJQbHVnaW5IYW5kbGVyLmgiDQogI2luY2x1ZGUg
IldlYktpdENvbnRyb2wuaCINCisjaW5jbHVkZSAiV2ViS2l0QnJpZGdlLmgiDQogDQogLy8gQ09O
U1RBTlRTDQogY29uc3QgVEludCBLUGx1Z2luR3JhbnVsYXJpdHkgPSAzOw0KQEAgLTExOTksOCAr
MTIwMCwzMyBAQA0KICAgICAgICAgfSAgICAgICAgICAgICAgICAgDQogICB9DQogDQorI2lmZGVm
ICBSRF9CUk9XU0VSX1dJREdFVFMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICANCitO
UE9iamVjdCogQ1BsdWdpbldpbjo6V2luZG93U2NyaXB0TlBPYmplY3QoKQ0KKyAgICB7DQorICAg
IHJldHVybiBpUGx1Z2luU2tpbi0+RnJhbWUoKS0+V2ViS2l0QnJpZGdlKCkuV2ViQ29yZUJyaWRn
ZSgpLldpbmRvd1NjcmlwdE5QT2JqZWN0KCk7DQorICAgIH0NCiANCisNCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENQbHVnaW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QgDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgDQordm9pZCogQ1BsdWdpbldpbjo6UGx1Z2luU2Ny
aXB0YWJsZU9iamVjdCgpDQorICAgIHsNCisgICAgaWYgKGlQbHVnaW5GdW5jcy0+Z2V0dmFsdWUp
IHsNCisgICAgICAgIHZvaWQgKnZhbHVlID0gMDsNCisgICAgICAgIE5QRXJyb3IgbnBFcnIgPSBp
UGx1Z2luRnVuY3MtPmdldHZhbHVlKCBpSW5zdGFuY2UsIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QsICh2b2lkICopJnZhbHVlKTsNCisgICAgICAgIGlmIChucEVyciA9PSBOUEVSUl9OT19F
UlJPUikgew0KKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsNCisgICAgICAgIH0NCisgICAgfQ0K
KyAgICByZXR1cm4gKHZvaWQgKikwOyAgICANCisgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJf
V0lER0VUUw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ1BsdWdpbldpbjo6SXND
b250ZW50SW50ZXJhY3RpdmUoKQ0KIC8vIFRlbGxzICB0aGF0IHBsdWdpbiBjb250ZW50IGNhbiBh
Y2NlcHQgdXNlciBpbnRlcmFjdGlvbi4gDQogLy8gVGhlIHJldHVybiB2YWx1ZSBvZiBpUGx1Z2lu
RnVuY3MtPmdldHZhbHVlICIwIiBvciBmYWxzZSBtZWFucyAgcGx1Z2luIGlzIGludGVyYWN0aXZl
LiANCkluZGV4OiBXZWJLaXQvcm9tL3dlYmtpdC5pYnkNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
cm9tL3dlYmtpdC5pYnkJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9yb20vd2Via2l0Lmli
eQkod29ya2luZyBjb3B5KQ0KQEAgLTU4LDYgKzU4LDkgQEANCiBmaWxlPUFCSV9ESVJcQlVJTERf
RElSXEJyb3dzZXJDYWNoZS5kbGwgICAgICAgICAgICAgICAgIFNIQVJFRF9MSUJfRElSXEJyb3dz
ZXJDYWNoZS5kbGwNCiBmaWxlPUFCSV9ESVJcQlVJTERfRElSXEhpc3RvcnlQcm92aWRlci5kbGwg
ICAgICAgICAgICAgIFNIQVJFRF9MSUJfRElSXEhpc3RvcnlQcm92aWRlci5kbGwNCiBmaWxlPUFC
SV9ESVJcQlVJTERfRElSXFRvb2xCYXIuZGxsICAgICAgICAgICAgICAgICAgICAgIFNIQVJFRF9M
SUJfRElSXFRvb2xCYXIuZGxsDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitmaWxlPUFC
SV9ESVJcQlVJTERfRElSXFdpZGdldEVuZ2luZS5kbGwgICAgICAgICAgICAgICAgICAgICAgU0hB
UkVEX0xJQl9ESVJcV2lkZ2V0RW5naW5lLmRsbA0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VU
Uw0KIA0KIEVDT01fUExVR0lOKEJyb3dzZXJSZWMuZGxsLCAwMTAwNUEwMi5yc2MpDQogRUNPTV9Q
TFVHSU4oTWVtb3J5UGx1Z2luLmRsbCwgbWVtb3J5cGx1Z2luLlJTQykNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11213</attachid>
            <date>2006-10-25 14:55:45 -0700</date>
            <delta_ts>2006-10-25 15:38:47 -0700</delta_ts>
            <desc>Fix SDK build break</desc>
            <filename>WidgetImpl.patch</filename>
            <type>text/plain</type>
            <size>555662</size>
            <attacher name="Sriram">sriram.yadavalli</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQ0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQkocmV2aXNpb24gMCkNCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9hbGdvcml0aG0JKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDE4
MCBAQA0KKy8vIEJpdHMgYW5kIHBpZWNlcyB1c2VkIGluIGFsZ29yaXRobXMgLSotIEMrKyAtKi0N
CisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8gc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlDQor
Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8v
IFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUNCisvLyBs
aWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVz
IGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0
aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUgYW5kIGxp
bmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMNCisv
LyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUg
dG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRo
aXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBvdGhlciBy
ZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENvcHlyaWdo
dCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQZXJtaXNz
aW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdh
cmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBn
cmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBz
dXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBtYWtlcyBu
bw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0
d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91
dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHlyaWdodCAo
YykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMu
DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFu
ZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBw
dXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQg
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICog
dGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBo
aWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBv
ZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFz
IGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisNCisjaWZu
ZGVmIF9fQUxHT1JJVEhNDQorI2RlZmluZSBfX0FMR09SSVRITQ0KKw0KKyNkZWZpbmUgX19nbGli
Y3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9fQSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc192
YWxpZF9yYW5nZShfX0EsIF9fQikNCisNCituYW1lc3BhY2Ugc3RkDQorew0KKw0KKyAgdHlwZWRl
ZiBpbnQgcHRyZGlmZl90Ow0KKw0KKyAgI3VuZGVmIG1pbg0KKyAgI3VuZGVmIG1heA0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAg
ICogIEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0g
IGIgIEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRo
ZSBsZXNzZXIgb2YgdGhlIHBhcmFtZXRlcnMuDQorICAgKg0KKyAgICogIFRoaXMgaXMgdGhlIHNp
bXBsZSBjbGFzc2ljIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICBJdCB3aWxsIHdvcmsgb24NCisg
ICAqICB0ZW1wb3JhcnkgZXhwcmVzc2lvbnMsIHNpbmNlIHRoZXkgYXJlIG9ubHkgZXZhbHVhdGVk
IG9uY2UsIHVubGlrZSBhDQorICAgKiAgcHJlcHJvY2Vzc29yIG1hY3JvLg0KKyAgKi8NCisgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgaW5saW5lIGNvbnN0IF9UcCYNCisgICAgbWluKGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikNCisgICAgew0KKyAgICAgIGlmIChfX2IgPCBf
X2EpDQorCXJldHVybiBfX2I7DQorICAgICAgcmV0dXJuIF9fYTsNCisgICAgfQ0KKw0KKyAgLyoq
DQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAgICog
IEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0gIGIg
IEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRoZSBn
cmVhdGVyIG9mIHRoZSBwYXJhbWV0ZXJzLg0KKyAgICoNCisgICAqICBUaGlzIGlzIHRoZSBzaW1w
bGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAgSXQgd2lsbCB3b3JrIG9uDQorICAg
KiAgdGVtcG9yYXJ5IGV4cHJlc3Npb25zLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGV2YWx1YXRlZCBv
bmNlLCB1bmxpa2UgYQ0KKyAgICogIHByZXByb2Nlc3NvciBtYWNyby4NCisgICovDQorICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+DQorICAgIGlubGluZSBjb25zdCBfVHAmDQorICAgIG1heChjb25z
dCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpDQorICAgIHsNCisgICAgICBpZiAoX19hIDwgX19i
KQ0KKwlyZXR1cm4gX19iOw0KKyAgICAgIHJldHVybiBfX2E7DQorICAgIH0NCisgICAgDQorICAv
KioNCisgICAqICBAYnJpZWYgU3dhcHMgdHdvIHZhbHVlcy4NCisgICAqICBAcGFyYW0gIGEgIEEg
dGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHBhcmFtICBiICBBbm90aGVyIHRoaW5n
IG9mIGFyYml0cmFyeSB0eXBlLg0KKyAgICogIEByZXR1cm4gICBOb3RoaW5nLg0KKyAgICoNCisg
ICAqICBUaGlzIGlzIHRoZSBzaW1wbGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAg
SXQgd2lsbCB3b3JrIG9uDQorICAgKiAgYW55IHR5cGUgd2hpY2ggaGFzIGEgY29weSBjb25zdHJ1
Y3RvciBhbmQgYW4gYXNzaWdubWVudCBvcGVyYXRvci4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+DQorICAgIGlubGluZSB2b2lkDQorICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19i
KQ0KKyAgICB7DQorICAgICAgY29uc3QgX1RwIF9fdG1wID0gX19hOw0KKyAgICAgIF9fYSA9IF9f
YjsNCisgICAgICBfX2IgPSBfX3RtcDsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBs
aWVkIHZlcnNpb24gb2YgbGlic3RkYysrICogc3RkOjpjb3B5LA0KKyAgICogc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIG91ciBwdXJwb3NlLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+DQorICAgIGlubGluZSBfT3V0
cHV0SXRlcmF0b3INCisgICAgY29weSggX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQgKQ0KKyAgICB7DQorICAgICAg
ICBmb3IoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0ICkNCisgICAg
ICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAgICAgIHJldHVybiBfX3Jlc3VsdDsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBsaWVkIHZlcnNpb24gb2YgbGlic3RkYysr
ICogc3RkOjpmaWxsLA0KKyAgICogc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nl
Lg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVl
Pg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBmaWxsKCBfSXRlcmF0b3IgX19zdGFydCwgX0l0ZXJh
dG9yIF9fZW5kLCBfVmFsdWUgX192YWwgKQ0KKyAgICB7DQorICAgICAgICBmb3IoOyBfX3N0YXJ0
ICE9IF9fZW5kOyArK19fc3RhcnQgKQ0KKyAgICAgICAgICAgICpfX3N0YXJ0ID0gX192YWw7DQor
ICAgIH0NCisgICAgDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCB0eXBlbmFtZSBDb21wYXJl
Pg0KKyAgICAgIGlubGluZSB2b2lkIHNvcnQoVHlwZSogYmVnaW4sIFR5cGUqIGVuZCwgQ29tcGFy
ZSBjb21wYXJlKQ0KKyAgICB7DQorICAgIHN0YWJsZV9zb3J0KGJlZ2luLGVuZCxjb21wYXJlKTsN
CisgICAgfQ0KKyAgICANCisgIC8vIEZJWE1FIGJ1YmJsZXNvcnQNCisgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGUsIHR5cGVuYW1lIENvbXBhcmU+DQorICAgIGlubGluZSB2b2lkIHN0YWJsZV9zb3J0
KFR5cGUqIGJlZ2luLCBUeXBlKiBlbmQsIENvbXBhcmUgY29tcGFyZSkNCisgICAgew0KKyAgICAg
ICAgVHlwZSogZSA9IGVuZDsNCisgICAgICAgIHdoaWxlIChlIT1iZWdpbikgew0KKyAgICAgICAg
ICAgIGJvb2wgc29ydGVkID0gdHJ1ZTsNCisgICAgICAgICAgICBmb3IgKFR5cGUqIGkgPSBiZWdp
bjsgaSE9ZTsgaSsrKSB7DQorICAgICAgICAgICAgICAgIGlmICghY29tcGFyZSgqaSwqKGkrMSkp
KSB7DQorICAgICAgICAgICAgICAgICAgICBUeXBlIHRlbXAgPSAqaTsNCisgICAgICAgICAgICAg
ICAgICAgICppID0gKihpKzEpOw0KKyAgICAgICAgICAgICAgICAgICAgKihpKzEpPXRlbXA7DQor
ICAgICAgICAgICAgICAgICAgICBzb3J0ZWQgPSBmYWxzZTsNCisgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoc29ydGVkKQ0K
KyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBlLS07DQorICAgICAgICB9DQor
ICAgIH0NCit9DQorDQorI2VuZGlmDQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTEsNSArMSw1IEBADQogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMTE0ICsyMCw5NSBAQA0KICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KLSNpbmNsdWRlIDxjX2NsYXNzLmg+Ci0jaW5jbHVkZSA8Y19pbnN0YW5jZS5oPgotI2lu
Y2x1ZGUgPGNfcnVudGltZS5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJjX2NsYXNzLmgiCiAKLWJvb2wgTlBOX0lzVmFs
aWRJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5hbWUpOworI2luY2x1ZGUgImNfaW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJjX3J1bnRpbWUuaCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgor
I2luY2x1ZGUgImlkZW50aWZpZXIuaCIKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25EZWxldGUoKSB7
Ci0gICAgQ0ZSZWxlYXNlIChfZmllbGRzKTsKLSAgICBDRlJlbGVhc2UgKF9tZXRob2RzKTsKLX0K
LSAgICAKKy8vIEZJWE1FOiBTaG91bGQgdXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBDRkRpY3Rpb25h
cnkgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgZm9yIHBvcnRhYmlsaXR5LgogCi12b2lkIEND
bGFzczo6X2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZvdGhlcikgewotICAgIF9pc2EgPSBvdGhl
ci5faXNhOwotICAgIF9tZXRob2RzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weSAoTlVMTCwgb3Ro
ZXIuX21ldGhvZHMpOwotICAgIF9maWVsZHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVDb3B5IChOVUxM
LCBvdGhlci5fZmllbGRzKTsKLX0KLSAgICAKK25hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25Jbml0IChOUENsYXNzICphQ2xhc3MpCitD
Q2xhc3M6OkNDbGFzcyhOUENsYXNzKiBhQ2xhc3MpCiB7CiAgICAgX2lzYSA9IGFDbGFzczsKLSAg
ICBfbWV0aG9kcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKLSAgICBfZmllbGRzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsIE5V
TEwpOwogfQogCi0KLXN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9
IDA7Ci0KLXN0YXRpYyB2b2lkIF9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSgpCitDQ2xh
c3M6On5DQ2xhc3MoKQogewotICAgIGlmIChjbGFzc2VzQnlJc0EgPT0gMCkKLSAgICAgICAgY2xh
c3Nlc0J5SXNBID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgTlVMTCwgTlVM
TCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKF9tZXRob2RzKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMo
X2ZpZWxkcyk7CiB9CiAKLUNDbGFzcyAqQ0NsYXNzOjpjbGFzc0ZvcklzQSAoTlBDbGFzcyAqaXNh
KQordHlwZWRlZiBIYXNoTWFwPE5QQ2xhc3MqLCBDQ2xhc3MqPiBDbGFzc2VzQnlJc0FNYXA7Citz
dGF0aWMgQ2xhc3Nlc0J5SXNBTWFwKiBjbGFzc2VzQnlJc0EgPSAwOworCitDQ2xhc3MqIENDbGFz
czo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQogewotICAgIF9jcmVhdGVDbGFzc2VzQnlJc0FJ
Zk5lY2Vzc2FyeSgpOwotICAgIAotICAgIENDbGFzcyAqYUNsYXNzID0gKENDbGFzcyAqKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGNsYXNzZXNCeUlzQSwgaXNhKTsKLSAgICBpZiAoYUNsYXNzID09IE5V
TEwpIHsKLSAgICAgICAgYUNsYXNzID0gbmV3IENDbGFzcyAoaXNhKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUgKGNsYXNzZXNCeUlzQSwgaXNhLCBhQ2xhc3MpOworICAgIGlmICghY2xh
c3Nlc0J5SXNBKQorICAgICAgICBjbGFzc2VzQnlJc0EgPSBuZXcgQ2xhc3Nlc0J5SXNBTWFwOwor
CisgICAgQ0NsYXNzKiBhQ2xhc3MgPSBjbGFzc2VzQnlJc0EtPmdldChpc2EpOworICAgIGlmICgh
YUNsYXNzKSB7CisgICAgICAgIGFDbGFzcyA9IG5ldyBDQ2xhc3MoaXNhKTsKKyAgICAgICAgY2xh
c3Nlc0J5SXNBLT5zZXQoaXNhLCBhQ2xhc3MpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBh
Q2xhc3M7CiB9CiAKLQotQ0NsYXNzOjpDQ2xhc3MgKE5QQ2xhc3MgKmlzYSkKK2NvbnN0IGNoYXIq
IENDbGFzczo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgX2NvbW1vbkluaXQgKGlzYSk7Ci19Ci0KLWNv
bnN0IGNoYXIgKkNDbGFzczo6bmFtZSgpIGNvbnN0Ci17CiAgICAgcmV0dXJuICIiOwogfQogCi1N
ZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKl9uYW1lLCBJbnN0YW5j
ZSAqaW5zdGFuY2UpIGNvbnN0CitNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0
IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7CiAKLSAgICBD
RlN0cmluZ1JlZiBtZXRob2ROYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBf
bmFtZSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSk7Ci0gICAgTWV0aG9kICptZXRob2QgPSAoTWV0
aG9kICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKF9tZXRob2RzLCBtZXRob2ROYW1lKTsKKyAgICBN
ZXRob2QqIG1ldGhvZCA9IF9tZXRob2RzLmdldChhLmFyZXAoKSk7CiAgICAgaWYgKG1ldGhvZCkg
ewotICAgICAgICBDRlJlbGVhc2UgKG1ldGhvZE5hbWUpOwogICAgICAgICBtZXRob2RMaXN0LmFk
ZE1ldGhvZChtZXRob2QpOwogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9Ci0gICAg
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChfbmFt
ZSk7Ci0gICAgY29uc3QgQ0luc3RhbmNlICppbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3Rh
bmNlKj4oaW5zdGFuY2UpOwotICAgIE5QT2JqZWN0ICpvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsK
LSAgICBpZiAoX2lzYS0+aGFzTWV0aG9kICYmIF9pc2EtPmhhc01ldGhvZCAob2JqLCBpZGVudCkp
ewotICAgICAgICBNZXRob2QgKmFNZXRob2QgPSBuZXcgQ01ldGhvZCAoaWRlbnQpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpX21ldGhvZHMs
IG1ldGhvZE5hbWUsIGFNZXRob2QpOwotICAgICAgICBtZXRob2RMaXN0LmFkZE1ldGhvZCAoYU1l
dGhvZCk7CisKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cihhLmFzY2lpKCkpOworICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNv
bnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKKyAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0
T2JqZWN0KCk7CisgICAgaWYgKF9pc2EtPmhhc01ldGhvZCAmJiBfaXNhLT5oYXNNZXRob2Qob2Jq
LCBpZGVudCkpeworICAgICAgICBNZXRob2QqIGFNZXRob2QgPSBuZXcgQ01ldGhvZChpZGVudCk7
IC8vIGRlbGV0ZWQgaW4gdGhlIENDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIF9tZXRob2RzLnNl
dChhLmFyZXAoKSwgYU1ldGhvZCk7CisgICAgICAgIG1ldGhvZExpc3QuYWRkTWV0aG9kKGFNZXRo
b2QpOwogICAgIH0KIAotICAgIENGUmVsZWFzZSAobWV0aG9kTmFtZSk7Ci0gICAgCiAgICAgcmV0
dXJuIG1ldGhvZExpc3Q7CiB9CiAKIAotRmllbGQgKkNDbGFzczo6ZmllbGROYW1lZChjb25zdCBj
aGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0CitGaWVsZCogQ0NsYXNzOjpmaWVs
ZE5hbWVkKGNvbnN0IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QK
IHsKLSAgICBDRlN0cmluZ1JlZiBmaWVsZE5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KE5VTEwsIG5hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwotICAgIEZpZWxkICphRmllbGQg
PSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoX2ZpZWxkcywgZmllbGROYW1lKTsKLSAg
ICBpZiAoYUZpZWxkKSB7Ci0gICAgICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKKyAgICBVU3Ry
aW5nIGEoIGlkZW50aWZpZXIgKTsKKyAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQoYS5h
cmVwKCkpOworICAgIGlmIChhRmllbGQpCiAgICAgICAgIHJldHVybiBhRmllbGQ7Ci0gICAgfQog
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1l
KTsKLSAgICBjb25zdCBDSW5zdGFuY2UgKmluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFu
Y2UqPihpbnN0YW5jZSk7Ci0gICAgTlBPYmplY3QgKm9iaiA9IGluc3QtPmdldE9iamVjdCgpOwot
ICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9wZXJ0eSAob2JqLCBpZGVu
dCkpewotICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkIChpZGVudCk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlICgoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilfZmllbGRzLCBmaWVsZE5h
bWUsIGFGaWVsZCk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIoYS5hc2NpaSgpKTsKKyAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CisgICAgTlBPYmplY3QqIG9iaiA9IGluc3Qt
PmdldE9iamVjdCgpOworICAgIGlmIChfaXNhLT5oYXNQcm9wZXJ0eSAmJiBfaXNhLT5oYXNQcm9w
ZXJ0eShvYmosIGlkZW50KSl7CisgICAgICAgIGFGaWVsZCA9IG5ldyBDRmllbGQoaWRlbnQpOyAv
LyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBfZmllbGRzLnNldChh
LmFyZXAoKSwgYUZpZWxkKTsKICAgICB9Ci0gICAgCi0gICAgQ0ZSZWxlYXNlIChmaWVsZE5hbWUp
OwotCiAgICAgcmV0dXJuIGFGaWVsZDsKLX07Cit9CisKK30KK30KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvYy9jX2NsYXNzLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL2MvY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsMTIgKzIwLDEzIEBA
DQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogI2lmbmRlZiBfQklORElOR1NfT0JKQ19DTEFTU19IXwog
I2RlZmluZSBfQklORElOR1NfT0JKQ19DTEFTU19IXwogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlICJmYXN0X21hbGxvYy5oIgorI2luY2x1ZGUg
PEhhc2hNYXAuaD4KIAogCiAjaW5jbHVkZSA8cnVudGltZS5oPgpAQCAtMzksNTQgKzQwLDI4IEBA
DQogY2xhc3MgQ0NsYXNzIDogcHVibGljIEtKUzo6QmluZGluZ3M6OkNsYXNzCiB7CiAgICAgLy8g
VXNlIHRoZSBwdWJsaWMgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyB0byBnZXQgaW5zdGFuY2VzIG9m
IEphdmFDbGFzcy4KLSAgICAKKwogcHJvdGVjdGVkOgotICAgIHZvaWQgX2NvbW1vbkluaXQgKE5Q
Q2xhc3MgKmFDbGFzcyk7Ci0gICAgdm9pZCBfY29tbW9uQ29weShjb25zdCBDQ2xhc3MgJm90aGVy
KTsKLSAgICB2b2lkIF9jb21tb25EZWxldGUoKTsKLSAgICAgICAgCisgICAgQ0NsYXNzKE5QQ2xh
c3MqKTsgLy8gVXNlIGNsYXNzRm9ySXNBIHRvIGNyZWF0ZSBhIENDbGFzcy4KKwogcHVibGljOgot
ICAgIENDbGFzcyAoTlBDbGFzcyAqYUNsYXNzKTsKKyAgICBzdGF0aWMgQ0NsYXNzKiBjbGFzc0Zv
cklzQShOUENsYXNzKik7CisgICAgdmlydHVhbCB+Q0NsYXNzKCk7CiAKLSAgICAvLyBSZXR1cm4g
dGhlIGNhY2hlZCBPYmpDIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAvL3N0YXRpYyBDQ2xh
c3MgKmNsYXNzRm9yTmFtZSAoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgc3RhdGljIENDbGFzcyAq
Y2xhc3NGb3JJc0EgKE5QQ2xhc3MgKmFDbGFzcyk7Ci0gICAgICAgICAgICAKLSAgICB+Q0NsYXNz
ICgpIHsKLSAgICAgICAgX2NvbW1vbkRlbGV0ZSgpOwotICAgIH0KLSAgICAKLSAgICBDQ2xhc3Mg
KGNvbnN0IENDbGFzcyAmb3RoZXIpIDogQ2xhc3MoKSB7Ci0gICAgICAgIF9jb21tb25Db3B5IChv
dGhlcik7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqLCBJbnN0YW5jZSop
IGNvbnN0OworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgY2hhciAqLCBJbnN0
YW5jZSopIGNvbnN0OwogCi0gICAgQ0NsYXNzICZvcGVyYXRvcj0oY29uc3QgQ0NsYXNzICZvdGhl
cikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgICAgIAotICAgICAgICBfY29tbW9uRGVsZXRlKCk7Ci0gICAgICAg
IF9jb21tb25Db3B5IChvdGhlcik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQorICAgIHZpcnR1YWwgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yQXQobG9uZykgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgbG9uZyBudW1Db25zdHJ1Y3RvcnMoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKLSAg
ICAKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIgKm5hbWUs
IEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBGaWVsZCAqZmll
bGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwotICAg
IAotICAgIHZpcnR1YWwgQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yQXQobG9uZyBpKSBjb25zdCB7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH07Ci0gICAgCi0gICAgdmlydHVhbCBsb25nIG51bUNv
bnN0cnVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07Ci0gICAgICAgIAogcHJpdmF0ZToKLSAg
ICBOUENsYXNzICpfaXNhOwotICAgIENGRGljdGlvbmFyeVJlZiBfbWV0aG9kczsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgX2ZpZWxkczsKKyAgICBDQ2xhc3MoY29uc3QgQ0NsYXNzJik7IC8vIHByb2hp
Yml0IGNvcHlpbmcKKyAgICBDQ2xhc3MmIG9wZXJhdG9yPShjb25zdCBDQ2xhc3MmKTsgLy8gcHJv
aGliaXQgYXNzaWdubWVudAorCisgICAgTlBDbGFzcyogX2lzYTsKKyAgICBtdXRhYmxlIE1ldGhv
ZE1hcCBfbWV0aG9kczsKKyAgICBtdXRhYmxlIEZpZWxkTWFwIF9maWVsZHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2lu
c3RhbmNlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19p
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMCw3ICsyMCw3IEBADQogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogI2luY2x1ZGUgPGNfY2xhc3MuaD4KICNpbmNsdWRlIDxjX2luc3Rh
bmNlLmg+CkBAIC0zMywzMiArMzMsMjkgQEANCiAjaWZkZWYgTkRFQlVHCiAjZGVmaW5lIENfTE9H
KGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQogI2Vsc2UKLSNkZWZpbmUgQ19MT0coZm9ybWF0
QW5kQXJncy4uLikgeyBcCi0gICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JWQgLS0gJXM6ICAiLCBf
X0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IFwKLSAgICBmcHJpbnRmKHN0ZGVyciwg
Zm9ybWF0QW5kQXJncyk7IFwKLX0KKyNkZWZpbmUgQ19MT0coZm9ybWF0QW5kQXJncy4uLikgKCh2
b2lkKTApCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7CiB1c2luZyBu
YW1lc3BhY2UgS0pTOwogCi1DSW5zdGFuY2U6OkNJbnN0YW5jZSAoTlBPYmplY3QgKm8pIAorQ0lu
c3RhbmNlOjpDSW5zdGFuY2UgKE5QT2JqZWN0ICpvKQogewotICAgIF9vYmplY3QgPSBfTlBOX1Jl
dGFpbk9iamVjdCAobyk7CisgICAgX29iamVjdCA9IE5QTl9SZXRhaW5PYmplY3QgKG8pOwogICAg
IF9jbGFzcyA9IDA7CiAgICAgc2V0RXhlY3V0aW9uQ29udGV4dCAoMCk7CiB9OwogCi1DSW5zdGFu
Y2U6On5DSW5zdGFuY2UgKCkgCitDSW5zdGFuY2U6On5DSW5zdGFuY2UgKCkKIHsKLSAgICBfTlBO
X1JlbGVhc2VPYmplY3QgKF9vYmplY3QpOworICAgIE5QTl9SZWxlYXNlT2JqZWN0IChfb2JqZWN0
KTsKICAgICBkZWxldGUgX2NsYXNzOwogfQogCiAKLUNJbnN0YW5jZTo6Q0luc3RhbmNlIChjb25z
dCBDSW5zdGFuY2UgJm90aGVyKSA6IEluc3RhbmNlKCkgCitDSW5zdGFuY2U6OkNJbnN0YW5jZSAo
Y29uc3QgQ0luc3RhbmNlICZvdGhlcikgOiBJbnN0YW5jZSgpCiB7Ci0gICAgX29iamVjdCA9IF9O
UE5fUmV0YWluT2JqZWN0IChvdGhlci5fb2JqZWN0KTsKKyAgICBfb2JqZWN0ID0gTlBOX1JldGFp
bk9iamVjdCAob3RoZXIuX29iamVjdCk7CiAgICAgX2NsYXNzID0gMDsKICAgICBzZXRFeGVjdXRp
b25Db250ZXh0IChvdGhlci5leGVjdXRpb25Db250ZXh0KCkpOwogfTsKQEAgLTY2LDE5ICs2Mywx
OSBAQA0KIENJbnN0YW5jZSAmQ0luc3RhbmNlOjpvcGVyYXRvcj0oY29uc3QgQ0luc3RhbmNlICZv
dGhlcil7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgCisKICAgICBOUE9iamVjdCAqX29sZE9iamVjdCA9IF9vYmplY3Q7Ci0gICAgX29iamVjdD0g
X05QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3QpOwotICAgIF9OUE5fUmVsZWFzZU9iamVj
dCAoX29sZE9iamVjdCk7CisgICAgX29iamVjdD0gTlBOX1JldGFpbk9iamVjdCAob3RoZXIuX29i
amVjdCk7CisgICAgTlBOX1JlbGVhc2VPYmplY3QgKF9vbGRPYmplY3QpOwogICAgIF9jbGFzcyA9
IDA7Ci0gICAgCisKICAgICByZXR1cm4gKnRoaXM7CiB9OwogCiBDbGFzcyAqQ0luc3RhbmNlOjpn
ZXRDbGFzcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFfY2xhc3MpIHsKLSAgICAgICAgX2NsYXNzID0g
bmV3IENDbGFzcyAoX29iamVjdC0+X2NsYXNzKTsKKyAgICBpZiAoIV9jbGFzcyl7CisgICAgICAg
IF9jbGFzcyA9IENDbGFzczo6Y2xhc3NGb3JJc0EoX29iamVjdC0+X2NsYXNzKTsKICAgICB9CiAg
ICAgcmV0dXJuIF9jbGFzczsKIH0KQEAgLTEwNSw3ICsxMDIsNyBAQA0KICAgICBDTWV0aG9kICpt
ZXRob2QgPSAwOwogICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihtZXRob2RMaXN0
Lm1ldGhvZEF0KDApKTsKIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5n
SWRlbnRpZmllciAobWV0aG9kLT5uYW1lKCkpOworICAgIE5QSWRlbnRpZmllciBpZGVudCA9IE5Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyIChtZXRob2QtPm5hbWUoKSk7CiAgICAgaWYgKCFfb2JqZWN0
LT5fY2xhc3MtPmhhc01ldGhvZCAoX29iamVjdCwgaWRlbnQpKSB7CiAgICAgICAgIHJldHVybiBV
bmRlZmluZWQoKTsKICAgICB9CkBAIC0xMTcsNyArMTE0LDcgQEANCiAgICAgICAgIGNBcmdzID0g
KE5QVmFyaWFudCAqKW1hbGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgIGVsc2UK
ICAgICAgICAgY0FyZ3MgPSBsb2NhbEJ1ZmZlcjsKLSAgICAKKwogICAgIGZvciAoaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChleGVjLCBh
cmdzLmF0KGkpLCAmY0FyZ3NbaV0pOwogICAgIH0KQEAgLTEyOCwyMCArMTI1LDIwIEBADQogICAg
IF9vYmplY3QtPl9jbGFzcy0+aW52b2tlIChfb2JqZWN0LCBpZGVudCwgY0FyZ3MsIGNvdW50LCAm
cmVzdWx0VmFyaWFudCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAg
ICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJnc1tpXSk7CisgICAgICAgIE5QTl9S
ZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOwogICAgIH0KIAogICAgIGlmIChjQXJncyAh
PSBsb2NhbEJ1ZmZlcikKICAgICAgICAgZnJlZSAoKHZvaWQgKiljQXJncyk7Ci0gICAgICAgICAg
ICAKKwogICAgIGlmICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAg
ICAgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoZXhlYywgJnJlc3VsdFZh
cmlhbnQpOwotICAgICAgICAKLSAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgIAorCisgICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVl
ICgmcmVzdWx0VmFyaWFudCk7CisKICAgICAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0KIApAQCAtMTUwLDcgKzE0Nyw3IEBA
DQogewogICAgIFZhbHVlIHJlc3VsdFZhbHVlOwogCi0gICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+
aW52b2tlRGVmYXVsdCkgeyAgICAgCisgICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+aW52b2tlRGVm
YXVsdCkgewogICAgICAgICB1bnNpZ25lZCBpLCBjb3VudCA9IGFyZ3Muc2l6ZSgpOwogICAgICAg
ICBOUFZhcmlhbnQgKmNBcmdzOwogICAgICAgICBOUFZhcmlhbnQgbG9jYWxCdWZmZXJbMTI4XTsK
QEAgLTE1OCw3ICsxNTUsNyBAQA0KICAgICAgICAgICAgIGNBcmdzID0gKE5QVmFyaWFudCAqKW1h
bGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjQXJncyA9IGxvY2FsQnVmZmVyOwotICAgICAgICAKKwogICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQgKGV4
ZWMsIGFyZ3MuYXQoaSksICZjQXJnc1tpXSk7CiAgICAgICAgIH0KQEAgLTE2OSwyMSArMTY2LDIx
IEBADQogICAgICAgICBfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQgKF9vYmplY3QsIGNB
cmdzLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKCZjQXJn
c1tpXSk7CisgICAgICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJmNBcmdzW2ldKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChjQXJncyAhPSBsb2NhbEJ1ZmZlcikKICAgICAgICAg
ICAgIGZyZWUgKCh2b2lkICopY0FyZ3MpOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgIGlm
ICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsKICAgICAgICAgICAgIHJlc3Vs
dFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUgKGV4ZWMsICZyZXN1bHRWYXJpYW50KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVz
dWx0VmFyaWFudCk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUgKCZyZXN1bHRWYXJpYW50KTsKKwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFZh
bHVlOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwog
fQogCkBAIC0xOTksMTQgKzE5NiwxNCBAQA0KICAgICBlbHNlIGlmIChoaW50ID09IEtKUzo6Qm9v
bGVhblR5cGUpIHsKICAgICAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZSgpOwogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB2YWx1ZU9mKCk7CiB9CiAKIEtKUzo6VmFsdWUgQ0luc3RhbmNlOjpzdHJp
bmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgY2hhciBidWZbMTAyNF07Ci0gICAgc25wcmludGYgKGJ1
ZiwgMTAyNCwgIk5QT2JqZWN0ICVwLCBOUENsYXNzICVwIiwgX29iamVjdCwgX29iamVjdC0+X2Ns
YXNzKTsKKyAgICAvL3NucHJpbnRmIChidWYsIDEwMjQsICJOUE9iamVjdCAlcCwgTlBDbGFzcyAl
cCIsIF9vYmplY3QsIF9vYmplY3QtPl9jbGFzcyk7CiAgICAgS0pTOjpTdHJpbmcgdihidWYpOwog
ICAgIHJldHVybiB2OwogfQpAQCAtMjI1LDcgKzIyMiw3IEBADQogICAgIHJldHVybiB2OwogfQog
Ci1LSlM6OlZhbHVlIENJbnN0YW5jZTo6dmFsdWVPZigpIGNvbnN0IAorS0pTOjpWYWx1ZSBDSW5z
dGFuY2U6OnZhbHVlT2YoKSBjb25zdAogewogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwogfTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19ydW50aW1lLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfcnVudGltZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjUsNyArMjUsNyBAQA0KICNpZm5kZWYgX0JJTkRJTkdTX09CSkNfUlVOVElNRV9I
XwogI2RlZmluZSBfQklORElOR1NfT0JKQ19SVU5USU1FX0hfCiAKLSNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorLy8jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KIAogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1ZGUgPG5wcnVu
dGltZV9pbXBsLmg+CkBAIC01Miw3ICs1Miw3IEBADQogICAgIHZpcnR1YWwgS0pTOjpWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmlu
c3RhbmNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEtKUzo6
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEtKUzo6VmFs
dWUgJmFWYWx1ZSkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkg
Y29uc3QgeyByZXR1cm4gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIoX2ZpZWxkSWRlbnRpZmllcik7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBOUE5fVVRG
OEZyb21JZGVudGlmaWVyKF9maWVsZElkZW50aWZpZXIpOyB9CiAgICAgdmlydHVhbCBSdW50aW1l
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KICAgICAKIHByaXZhdGU6CkBAIC02Nyw3
ICs2Nyw3IEBADQogCiAgICAgQ01ldGhvZChOUElkZW50aWZpZXIgaWRlbnQpIDogTWV0aG9kKCks
IF9tZXRob2RJZGVudGlmaWVyKGlkZW50KSB7fTsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBfTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9k
SWRlbnRpZmllcik7IH07CisgICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gTlBOX1VURjhGcm9tSWRlbnRpZmllcihfbWV0aG9kSWRlbnRpZmllcik7IH07CiAKICAg
ICB2aXJ0dWFsIGxvbmcgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIDA7IH07CiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMTcw
NjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjAsMTAgKzIwLDEwIEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1
ZGUgPGNfaW5zdGFuY2UuaD4gCi0jaW5jbHVkZSA8Y191dGlsaXR5Lmg+IAorI2luY2x1ZGUgPGNf
aW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxjX3V0aWxpdHkuaD4KICNpbmNsdWRlIDxpbnRlcm5hbC5o
PgogI2luY2x1ZGUgPG5wcnVudGltZV9pbXBsLmg+CiAjaW5jbHVkZSA8bnBydW50aW1lX3ByaXYu
aD4KQEAgLTQ1LDIwICs0NSw1MCBAQA0KIC8vIFJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBV
VEYxNkNoYXJzLgogdm9pZCBjb252ZXJ0VVRGOFRvVVRGMTYgKGNvbnN0IE5QVVRGOCAqVVRGOENo
YXJzLCBpbnQgVVRGOExlbmd0aCwgTlBVVEYxNiAqKlVURjE2Q2hhcnMsIHVuc2lnbmVkIGludCAq
VVRGMTZMZW5ndGgpCiB7Ci0gICAgYXNzZXJ0IChVVEY4Q2hhcnMpOwotICAgIAogICAgIGlmIChV
VEY4TGVuZ3RoID09IC0xKQogICAgICAgICBVVEY4TGVuZ3RoID0gc3RybGVuKFVURjhDaGFycyk7
Ci0gICAgICAgIAotICAgIENGU3RyaW5nUmVmIHN0cmluZ1JlZiA9IENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzIChOVUxMLCAoY29uc3QgVUludDgqKVVURjhDaGFycywgKENGSW5kZXgpVVRGOExlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSk7CiAKLSAgICAqVVRGMTZMZW5ndGggPSAo
dW5zaWduZWQgaW50KUNGU3RyaW5nR2V0TGVuZ3RoIChzdHJpbmdSZWYpOwotICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2MgKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgp
KTsKKyAgICAqVVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoOwogCi0gICAgLy8gQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURjE2LgotICAgIENGUmFuZ2UgcmFuZ2UgPSB7IDAsICpVVEYxNkxlbmd0aCB9
OwotICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyAoc3RyaW5nUmVmLCByYW5nZSwgKFVuaUNoYXIg
KikqVVRGMTZDaGFycyk7Ci0gICAgQ0ZSZWxlYXNlIChzdHJpbmdSZWYpOworICAgICpVVEYxNkNo
YXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRGMTYpICogKCpVVEYxNkxlbmd0aCkp
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8ICpVVEYxNkxlbmd0aDsgaSsrKQorICAg
ICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKworICAgLyogYXNz
ZXJ0KFVURjhDaGFycyB8fCBVVEY4TGVuZ3RoID09IDApOworICAgIGFzc2VydChVVEYxNkNoYXJz
KTsKKworICAgIGlmIChVVEY4TGVuZ3RoID09IC0xKQorICAgICAgICBVVEY4TGVuZ3RoID0gc3Ry
bGVuKFVURjhDaGFycyk7CisKKyAgICAvLyBVVEYxNkxlbmd0aCBtYXhpbXVtIGxlbmd0aCBpcyB0
aGUgbGVuZ3RoIG9mIHRoZSBVVEY4IHN0cmluZywgcGx1cyBvbmUgdG8gaW5jbHVkZSB0ZXJtaW5h
dG9yCisgICAgLy8gV2l0aG91dCB0aGUgcGx1cyBvbmUsIGl0IHdpbGwgY29udmVydCBvaywgYnV0
IGEgd2FybmluZyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY29udmVydGVyIGFzCisgICAgLy8gdGhl
cmUgaXMgbm90IGVub3VnaCByb29tIGZvciBhIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICAq
VVRGMTZMZW5ndGggPSBVVEY4TGVuZ3RoICsgMTsKKworICAgICpVVEYxNkNoYXJzID0gMDsKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBVQ29udmVydGVyKiBjb252
ID0gdWNudl9vcGVuKCJ1dGY4IiwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMp
KSB7CisgICAgICAgICpVVEYxNkNoYXJzID0gKE5QVVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRG
MTYpICogKCpVVEYxNkxlbmd0aCkpOworICAgICAgICB1Y252X3NldFRvVUNhbGxCYWNrKGNvbnYs
IFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QLCAwLCAwLCAwLCAmc3RhdHVzKTsKKyAgICAgICAgKlVU
RjE2TGVuZ3RoID0gdWNudl90b1VDaGFycyhjb252LCAoOjpVQ2hhciopKlVURjE2Q2hhcnMsICpV
VEYxNkxlbmd0aCwgVVRGOENoYXJzLCBVVEY4TGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgdWNu
dl9jbG9zZShjb252KTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGNvbnZl
cnNpb24gd2FzIHN1Y2Nlc3NmdWwKKyAgICAvLyBTb21lIHBsdWdpbnMgcmV0dXJuIGludmFsaWQg
VVRGLTggaW4gTlBWYXJpYW50VHlwZV9TdHJpbmcsIHNlZSA8aHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYzPgorICAgIC8vIFRoZXJlIGlzIG5vICJiYWQg
ZGF0YSIgZm9yIGxhdGluMS4gSXQgaXMgdW5saWtlbHkgdGhhdCB0aGUgcGx1Z2luIHdhcyByZWFs
bHkgc2VuZGluZyB0ZXh0IGluIHRoaXMgZW5jb2RpbmcsCisgICAgLy8gYnV0IGl0IHNob3VsZCBo
YXZlIHVzZWQgVVRGLTgsIGFuZCBub3cgd2UgYXJlIHNpbXBseSBhdm9pZGluZyBhIGNyYXNoLgor
ICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgKlVURjE2TGVuZ3RoID0gVVRG
OExlbmd0aDsKKworICAgICAgICBpZiAoISpVVEYxNkNoYXJzKSAgIC8vIElmIHRoZSBtZW1vcnkg
d2Fzbid0IGFsbG9jYXRlZCwgYWxsb2NhdGUgaXQuCisgICAgICAgICAgICAqVVRGMTZDaGFycyA9
IChOUFVURjE2ICopbWFsbG9jKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgpKTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKlVURjE2TGVuZ3RoOyBpKyspCisgICAg
ICAgICAgICAoKlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsKKyAgICB9Ki8K
IH0KIAogLy8gVmFyaWFudCB2YWx1ZSBtdXN0IGJlIHJlbGVhc2VkIHdpdGggTlBSZWxlYXNlVmFy
aWFudFZhbHVlKCkKQEAgLTc0LDcgKzEwNCw3IEBADQogdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZh
cmlhbnQgKnJlc3VsdCkKIHsKICAgICBUeXBlIHR5cGUgPSB2YWx1ZS50eXBlKCk7Ci0gICAgCisK
ICAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlKSB7CiAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5n
LlVURjhTdHJpbmcoKTsKQEAgLTEwMCwzMSArMTMwLDMxIEBADQogICAgICAgICAgICAgQ0luc3Rh
bmNlICppbnN0YW5jZSA9IHN0YXRpY19jYXN0PENJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJ
bnN0YW5jZSgpKTsKICAgICAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3Qg
KHJlc3VsdCwgaW5zdGFuY2UtPmdldE9iamVjdCgpKTsKICAgICAgICAgfQotCWVsc2UgeworICAg
IGVsc2UgewogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gZXhl
Yy0+aW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgS0pTOjpJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJw
cmV0ZXIgPSBleGVjLT5pbnRlcnByZXRlcigpOwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6
OlJvb3RPYmplY3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIo
b3JpZ2luSW50ZXJwcmV0ZXIpOwogCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKmludGVycHJldGVy
ID0gMDsKLQkgICAgaWYgKG9yaWdpbkludGVycHJldGVyLT5pc0dsb2JhbE9iamVjdCh2YWx1ZSkp
IHsKLQkJaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRlci0+aW50ZXJwcmV0ZXJGb3JHbG9i
YWxPYmplY3QgKHZhbHVlLmltcCgpKTsKLQkgICAgfQorICAgICAgICBLSlM6OkludGVycHJldGVy
ICppbnRlcnByZXRlciA9IDA7CisgICAgICAgIGlmIChvcmlnaW5JbnRlcnByZXRlci0+aXNHbG9i
YWxPYmplY3QodmFsdWUpKSB7CisgICAgICAgIGludGVycHJldGVyID0gb3JpZ2luSW50ZXJwcmV0
ZXItPmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0ICh2YWx1ZS5pbXAoKSk7CisgICAgICAgIH0K
IAotCSAgICBpZiAoIWludGVycHJldGVyKQotCQlpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJl
dGVyOwotCQkKKyAgICAgICAgaWYgKCFpbnRlcnByZXRlcikKKyAgICAgICAgaW50ZXJwcmV0ZXIg
PSBvcmlnaW5JbnRlcnByZXRlcjsKKwogICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RP
YmplY3QgKmV4ZWN1dGlvbkNvbnRleHQgPSByb290Rm9ySW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIp
OwogICAgICAgICAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KSB7CiAgICAgICAgICAgICAgICAg
QmluZGluZ3M6OlJvb3RPYmplY3QgKm5ld0V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgS0pTOjpCaW5k
aW5nczo6Um9vdE9iamVjdCgwKTsKICAgICAgICAgICAgICAgICBuZXdFeGVjdXRpb25Db250ZXh0
LT5zZXRJbnRlcnByZXRlciAoaW50ZXJwcmV0ZXIpOwogICAgICAgICAgICAgICAgIGV4ZWN1dGlv
bkNvbnRleHQgPSBuZXdFeGVjdXRpb25Db250ZXh0OwogICAgICAgICAgICAgfQotICAgIAotCSAg
ICBOUE9iamVjdCAqb2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRl
TGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1
ZS50b09iamVjdChleGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4
dCk7Ci0JICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsK
LQkgICAgX05QTl9SZWxlYXNlT2JqZWN0IChvYmopOwotCX0KKworICAgICAgICBOUE9iamVjdCAq
b2JqID0gKE5QT2JqZWN0ICopZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Y3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlIChleGVjLCBJbnN0YW5jZTo6Q0xhbmd1YWdlLCB2YWx1ZS50b09iamVjdChl
eGVjKSwgb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgZXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsKKyAgICAgICAg
TlBOX1JlbGVhc2VPYmplY3QgKG9iaik7CiAgICAgfQorICAgIH0KICAgICBlbHNlCiAgICAgICAg
IE5QTl9Jbml0aWFsaXplVmFyaWFudEFzVW5kZWZpbmVkKHJlc3VsdCk7CiB9CkBAIC0xNjcsNyAr
MTk3LDcgQEANCiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmpl
Y3QpIHsKICAgICAgICAgTlBPYmplY3QgKm9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
OwotICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RD
bGFzcykgewogICAgICAgICAgICAgLy8gR2V0IE9iamVjdEltcCBmcm9tIE5QX0phdmFTY3JpcHRP
YmplY3QuCiAgICAgICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvID0gKEphdmFTY3JpcHRPYmpl
Y3QgKilvYmo7CkBAIC0xNzgsNyArMjA4LDE2IEBADQogICAgICAgICAgICAgcmV0dXJuIEluc3Rh
bmNlOjpjcmVhdGVSdW50aW1lT2JqZWN0KEluc3RhbmNlOjpDTGFuZ3VhZ2UsICh2b2lkICopb2Jq
KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0K
IAorSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5h
bWUpCit7CisgICAgTlBVVEYxNiAqbWV0aG9kTmFtZTsKKyAgICB1bnNpZ25lZCBVVEYxNkxlbmd0
aDsKKyAgICBjb252ZXJ0VVRGOFRvVVRGMTYobmFtZSwgLTEsICZtZXRob2ROYW1lLCAmVVRGMTZM
ZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgorICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5n
dGgpOworICAgIGZyZWUobWV0aG9kTmFtZSk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkocmV2aXNpb24gMTcwNjkp
DQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSA8cnVudGltZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWVfb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZV9yb290Lmg+CisjaW5jbHVkZSA8aWRl
bnRpZmllci5oPgogCiB0eXBlZGVmIHVpbnQxNl90IE5QVVRGMTY7CiBOUFVURjE2ICpOUE5fVVRG
MTZGcm9tU3RyaW5nIChOUFN0cmluZyAqb2JqKTsKQEAgLTUxLDYgKzUyLDcgQEANCiBleHRlcm4g
dm9pZCBjb2VyY2VWYWx1ZVRvTlBWYXJpYW50U3RyaW5nVHlwZSAoS0pTOjpFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4g
dm9pZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0
IEtKUzo6VmFsdWUgJnZhbHVlLCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBleHRlcm4gS0pTOjpWYWx1
ZSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5Q
VmFyaWFudCAqdmFyaWFudCk7CitLSlM6OklkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50
aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKTsKIAogdHlwZWRlZiBzdHJ1Y3QgCiB7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaENvdW50ZWRTZXQuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoQ291bnRlZFNldC5oCShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSwxNzggQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAt
Ki0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
Q29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICov
DQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX0NPVU5URURfU0VUX0gNCisjZGVmaW5lIEtYTUxD
T1JFX0hBU0hfQ09VTlRFRF9TRVRfSA0KKw0KKy8vI2luY2x1ZGUgIkFzc2VydGlvbnMuaCINCisj
aW5jbHVkZSAiSGFzaE1hcC5oIg0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucyA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPFZhbHVlPjo6SGFzaCwNCisgICAgICAgIHR5cGVuYW1lIFRyYWl0cyA9IEhhc2hUcmFp
dHM8VmFsdWU+ID4gY2xhc3MgSGFzaENvdW50ZWRTZXQgew0KKyAgICBwcml2YXRlOg0KKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFZhbHVlLCB1bnNpZ25lZCwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
PiBJbXBsVHlwZTsNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5
cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciBpdGVyYXRv
cjsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNv
bnN0X2l0ZXJhdG9yOw0KKw0KKyAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQ0KKw0KKyAgICAg
ICAgaW50IHNpemUoKSBjb25zdDsNCisgICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0Ow0KKyAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7DQorDQorICAgICAgICAvLyBpdGVyYXRvcnMgaXRl
cmF0ZSBvdmVyIHBhaXJzIG9mIHZhbHVlcyBhbmQgY291bnRzDQorICAgICAgICBpdGVyYXRvciBi
ZWdpbigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQor
DQorICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpOw0KKyAgICAg
ICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisg
ICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3Q7DQorICAg
ICAgICB1bnNpZ25lZCBjb3VudChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdDsNCisNCisg
ICAgICAgIC8vIGluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFk
eSBwcmVzZW50DQorICAgICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBp
bnRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLA0KKyAgICAgICAgLy8gYW5kIGEg
Ym9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZA0KKyAgICAgICAgc3Rk
OjpwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSk7DQorDQor
ICAgICAgICAvLyByZWR1Y2VzIHRoZSBjb3VudCBvZiB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIGl0
IGlmIGNvdW50DQorICAgICAgICAvLyBnb2VzIGRvd24gdG8gemVybw0KKyAgICAgICAgdm9pZCBy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSk7DQorICAgICAgICB2b2lkIHJlbW92ZShpdGVy
YXRvciBpdCk7DQorDQorICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIEltcGxUeXBlIG1faW1wbDsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAg
aW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
c2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOw0KKyAg
ICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBpbnQgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNhcGFjaXR5KCkgY29uc3QNCisgICAgew0KKyAg
ICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHNpemUoKSA9
PSAwOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNo
Q291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmJlZ2luKCkNCisgICAgew0K
KyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdpbigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmVuZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7DQor
ICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSBjb25zdA0KKyAg
ICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZW5kKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdHlw
ZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJh
dG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNv
bnN0IFZhbHVlVHlwZSYgdmFsdWUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmlu
ZCh2YWx1ZSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVy
YXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9p
bXBsLmZpbmQodmFsdWUpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBi
b29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250YWlu
cyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
bV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBp
bmxpbmUgdW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OmNvdW50KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZ2V0KHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAg
ICBpbmxpbmUgc3RkOjpwYWlyPHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQ0KKyAgICB7
DQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVl
LCAwKTsNCisgICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNvbmQ7DQorICAgICAgICByZXR1cm4g
cmVzdWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkNCisgICAgew0KKyAgICAgICAgcmVtb3ZlKGZpbmQodmFsdWUpKTsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAgICB7
DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAg
ICAgICAgdW5zaWduZWQgb2xkVmFsID0gaXQtPnNlY29uZDsNCisgICAgICAgIC8vQVNTRVJUKG9s
ZFZhbCAhPSAwKTsNCisgICAgICAgIHVuc2lnbmVkIG5ld1ZhbCA9IG9sZFZhbCAtIDE7DQorICAg
ICAgICBpZiAobmV3VmFsID09IDApDQorICAgICAgICAgICAgbV9pbXBsLnJlbW92ZShpdCk7DQor
ICAgICAgICBlbHNlDQorICAgICAgICAgICAgaXQtPnNlY29uZCA9IG5ld1ZhbDsNCisgICAgfQ0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBtX2ltcGwu
Y2xlYXIoKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNlIGtodG1sDQorDQordXNpbmcgV1RG
OjpIYXNoQ291bnRlZFNldDsNCisNCisjZW5kaWYgLyogS1hNTENPUkVfSEFTSF9DT1VOVEVEX1NF
VF9IICovDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaEZ1bmN0aW9ucy5oCShy
ZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hGdW5jdGlvbnMuaAko
cmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTA1IEBADQorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxp
YnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
Lg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0K
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwNCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNf
SA0KKyNkZWZpbmUgS1hNTENPUkVfSEFTSF9GVU5DVElPTlNfSA0KKw0KKyNpbmNsdWRlICJSZWZQ
dHIuaCINCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAg
IHRlbXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgSW50VHlwZXM7DQorICAgIHRlbXBsYXRlPD4g
c3RydWN0IEludFR5cGVzPDE+IHsgdHlwZWRlZiBpbnQ4X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1
aW50OF90IFVuc2lnbmVkVHlwZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50VHlwZXM8
Mj4geyB0eXBlZGVmIGludDE2X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50MTZfdCBVbnNpZ25l
ZFR5cGU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDQ+IHsgdHlwZWRlZiBp
bnQzMl90IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDMyX3QgVW5zaWduZWRUeXBlOyB9Ow0KKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczw4PiB7IHR5cGVkZWYgaW50NjRfdCBTaWduZWRU
eXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2lnbmVkVHlwZTsgfTsNCisNCisgICAgLy8gaW50ZWdl
ciBoYXNoIGZ1bmN0aW9uDQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgMzIgQml0IE1peCBGdW5j
dGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFzaC5odG0NCisgICAg
aW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDMyX3Qga2V5KQ0KKyAgICB7DQorICAgICAgICBr
ZXkgKz0gfihrZXkgPDwgMTUpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4gMTApOw0KKyAgICAg
ICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiA2KTsNCisgICAg
ICAgIGtleSArPSB+KGtleSA8PCAxMSk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7DQor
ICAgICAgICByZXR1cm4ga2V5Ow0KKyAgICB9DQorDQorICAgIC8vIFRob21hcyBXYW5nJ3MgNjQg
Yml0IE1peCBGdW5jdGlvbjogaHR0cDovL3d3dy5jcmlzLmNvbS9+VHR3YW5nL3RlY2gvaW50aGFz
aC5odG0NCisgICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQ0KKyAgICB7
DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMzIpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4g
MjIpOw0KKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsNCisgICAgICAgIGtleSBePSAoa2V5
ID4+IDgpOw0KKyAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7DQorICAgICAgICBrZXkgXj0gKGtl
eSA+PiAxNSk7DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMjcpOw0KKyAgICAgICAga2V5IF49
IChrZXkgPj4gMzEpOw0KKyAgICAgICAgcmV0dXJuIGtleTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSW50SGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChUIGtleSkgeyByZXR1cm4gaW50SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRU
eXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGU+KGtleSkpOyB9DQorICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChUIGEsIFQgYikgeyByZXR1cm4gYSA9PSBiOyB9DQorICAgIH07DQorDQorICAg
IC8vIHBvaW50ZXIgaWRlbnRpdHkgaGFzaCBmdW5jdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUHRySGFzaCB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChU
IGtleSkgeyByZXR1cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihrZXkpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgUHRySGFzaDxSZWZQdHI8UD4gPiB7DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBSZWZQdHI8UD4mIGtleSkgeyByZXR1cm4gUHRySGFzaDxQKj46Omhhc2goa2V5Lmdl
dCgpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFA+JiBhLCBj
b25zdCBSZWZQdHI8UD4mIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKw0KKyAgICAv
LyBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIGVhY2ggdHlwZQ0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQorDQorICAgIC8vIG1ha2UgSW50SGFzaCB0
aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBtYW55IGludGVnZXIgdHlwZXMNCisNCisgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNp
Z25lZD4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
PiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBs
b25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNoOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nIGxvbmc+IHsgdHlwZWRlZiBJbnRIYXNoPHVu
c2lnbmVkIGxvbmcgbG9uZz4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25n
IGxvbmc+IEhhc2g7IH07DQorDQorICAgIC8vIG1ha2UgUHRySGFzaCB0aGUgZGVmYXVsdCBoYXNo
IGZ1bmN0aW9uIGZvciBwb2ludGVyIHR5cGVzIHRoYXQgZG9uJ3Qgc3BlY2lhbGl6ZQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UCo+IHsgdHlwZWRlZiBQ
dHJIYXNoPFAqPiBIYXNoOyB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8UmVmUHRyPFA+ID4geyB0eXBlZGVmIFB0ckhhc2g8UmVmUHRyPFA+ID4gSGFzaDsg
fTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6OkRlZmF1bHRIYXNoOw0K
K3VzaW5nIFdURjo6SW50SGFzaDsNCit1c2luZyBXVEY6OlB0ckhhc2g7DQorDQorI2VuZGlmIC8v
IEtYTE1DT1JFX0hBU0hfRlVOQ1RJT05TX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9IYXNoTWFwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNo
TWFwLmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaE1hcC5o
CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzMzIgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
bGlicmFyaWVzDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4NCisgKg0KKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisg
Kg0KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bw0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsDQorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisjaWZuZGVmIEtYTUxDT1JFX0hBU0hfTUFQ
X0gNCisjZGVmaW5lIEtYTUxDT1JFX0hBU0hfTUFQX0gNCisNCisjaW5jbHVkZSAiSGFzaFRhYmxl
LmgiDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJU
eXBlPiBzdHJ1Y3QgUGFpckZpcnN0RXh0cmFjdG9yOw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1l
IERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsDQorICAgICAgICB0eXBlbmFtZSBLZXlUcmFpdHNB
cmcgPSBIYXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZyA9IEhhc2hU
cmFpdHM8TWFwcGVkQXJnPiA+DQorICAgIGNsYXNzIEhhc2hNYXAgew0KKyAgICBwcml2YXRlOg0K
KyAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOw0KKyAgICAgICAgdHlwZWRl
ZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiBQYWlyQmFz
ZUhhc2hUcmFpdHM8S2V5VHJhaXRzLCBNYXBwZWRUcmFpdHM+IFZhbHVlVHJhaXRzOw0KKw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVRyYWl0czo6VHJhaXRUeXBl
IEtleVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6VHJhaXRU
eXBlIE1hcHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpU
cmFpdFR5cGUgVmFsdWVUeXBlOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgdHlwZWRlZiBI
YXNoQXJnIEhhc2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hL
ZXlTdG9yYWdlVHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46Okhhc2ggU3RvcmFnZUhh
c2hGdW5jdGlvbnM7DQorDQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hLZXlTdG9yYWdl
VHJhaXRzPEhhc2hGdW5jdGlvbnMsIEtleVRyYWl0cz46OlRyYWl0cyBLZXlTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6OlN0b3JhZ2VUcmFpdHMg
TWFwcGVkU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8S2V5
U3RvcmFnZVRyYWl0cywgTWFwcGVkU3RvcmFnZVRyYWl0cz4gVmFsdWVTdG9yYWdlVHJhaXRzOw0K
Kw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBLZXlTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUg
S2V5U3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFN0b3JhZ2VU
cmFpdHM6OlRyYWl0VHlwZSBNYXBwZWRTdG9yYWdlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleVN0b3JhZ2VUeXBlLCBWYWx1ZVN0b3JhZ2VU
eXBlLCBQYWlyRmlyc3RFeHRyYWN0b3I8VmFsdWVTdG9yYWdlVHlwZT4sDQorICAgICAgICAgICAg
U3RvcmFnZUhhc2hGdW5jdGlvbnMsIFZhbHVlU3RvcmFnZVRyYWl0cywgS2V5U3RvcmFnZVRyYWl0
cz4gSGFzaFRhYmxlVHlwZTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsN
CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxl
VHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsNCisNCisgICAgICAgIEhhc2hNYXAoKTsN
CisgICAgICAgIEhhc2hNYXAoY29uc3QgSGFzaE1hcCYpOw0KKyAgICAgICAgSGFzaE1hcCYgb3Bl
cmF0b3I9KGNvbnN0IEhhc2hNYXAmKTsNCisgICAgICAgIH5IYXNoTWFwKCk7DQorDQorICAgICAg
ICBpbnQgc2l6ZSgpIGNvbnN0Ow0KKyAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7DQorICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsNCisNCisgICAgICAgIC8vIGl0ZXJhdG9ycyBpdGVy
YXRlIG92ZXIgcGFpcnMgb2Yga2V5cyBhbmQgdmFsdWVzDQorICAgICAgICBpdGVyYXRvciBiZWdp
bigpOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCk7DQorICAgICAgICBjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0Ow0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQorDQor
ICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KKyAgICAgICAgYm9vbCBjb250YWlu
cyhjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAgICAgICBNYXBwZWRUeXBlIGdldChjb25zdCBL
ZXlUeXBlJikgY29uc3Q7DQorDQorICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtl
eSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50DQorICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMg
YSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCANCisgICAgICAgIC8v
IGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFk
ZGVkDQorICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIGNv
bnN0IE1hcHBlZFR5cGUmKTsgDQorDQorICAgICAgICAvLyBkb2VzIG5vdGhpbmcgaWYga2V5IGlz
IGFscmVhZHkgcHJlc2VudA0KKyAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0
aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgDQorICAgICAgICAvLyBhbmQgYSBib29s
ZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZA0KKyAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRU
eXBlJik7IA0KKw0KKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOw0KKyAgICAg
ICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpOw0KKyAgICAgICAgdm9pZCBjbGVhcigpOw0KKw0K
KyAgICBwcml2YXRlOg0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNv
bnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7DQorICAgICAgICB2b2lkIHJlZkFsbCgp
Ow0KKyAgICAgICAgdm9pZCBkZXJlZkFsbCgpOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlVHlwZSBt
X2ltcGw7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhaXJUeXBlPiBzdHJ1
Y3QgUGFpckZpcnN0RXh0cmFjdG9yIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSBQ
YWlyVHlwZTo6Zmlyc3RfdHlwZSYgZXh0cmFjdChjb25zdCBQYWlyVHlwZSYgcCkgeyByZXR1cm4g
cC5maXJzdDsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTxib29sIGNhblJlcGxhY2VEZWxl
dGVkS2V5LCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0cywg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yOw0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3RydWN0IEhhc2hNYXBUcmFu
c2xhdG9yPHRydWUsIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHlwZTo6Zmlyc3RfdHlwZSBLZXlU
eXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1h
cHBlZFR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6
VHJhaXRUeXBlIFZhbHVlU3RvcmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZh
bHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgS2V5U3RvcmFnZVRyYWl0czsNCisgICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgS2V5U3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIEtleVN0b3JhZ2VU
eXBlOw0KKw0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5VHlwZSYga2V5
KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0NCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IEtleVN0b3JhZ2VUeXBlJiBhLCBjb25zdCBLZXlUeXBlJiBiKSB7IHJl
dHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbCgqKEtleVR5cGUqKSZhLCBiKTsgfQ0KKyAgICAgICAg
c3RhdGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlU3RvcmFnZVR5cGUmIGxvY2F0aW9uLCBjb25zdCBL
ZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCwgdW5zaWduZWQpDQorICAgICAg
ICB7DQorICAgICAgICAgICAgKihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAg
ICAgICAgICAgKihNYXBwZWRUeXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAg
ICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIFZhbHVlU3RvcmFnZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCisgICAgc3Ry
dWN0IEhhc2hNYXBUcmFuc2xhdG9yPGZhbHNlLCBWYWx1ZVR5cGUsIFZhbHVlU3RvcmFnZVRyYWl0
cywgSGFzaEZ1bmN0aW9ucz4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6
OmZpcnN0X3R5cGUgS2V5VHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUeXBl
OjpzZWNvbmRfdHlwZSBNYXBwZWRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1
ZVN0b3JhZ2VUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVN0b3JhZ2VUeXBlOw0KKyAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEtleVN0b3JhZ2VU
cmFpdHM7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVN0b3JhZ2VUcmFpdHM6OlRyYWl0
VHlwZSBLZXlTdG9yYWdlVHlwZTsNCisNCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9DQor
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXlTdG9yYWdlVHlwZSYgYSwgY29uc3Qg
S2V5VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoKihLZXlUeXBlKikmYSwg
Yik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZVN0b3JhZ2VUeXBlJiBs
b2NhdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiBtYXBwZWQsIHVu
c2lnbmVkKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChsb2NhdGlvbi5maXJzdCA9PSBL
ZXlTdG9yYWdlVHJhaXRzOjpkZWxldGVkVmFsdWUoKSkNCisgICAgICAgICAgICAgICAgbG9jYXRp
b24uZmlyc3QgPSBLZXlTdG9yYWdlVHJhaXRzOjplbXB0eVZhbHVlKCk7DQorICAgICAgICAgICAg
KihLZXlUeXBlKikmbG9jYXRpb24uZmlyc3QgPSBrZXk7DQorICAgICAgICAgICAgKihNYXBwZWRU
eXBlKikmbG9jYXRpb24uc2Vjb25kID0gbWFwcGVkOw0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZWZBbGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJs
ZVR5cGUsIFZhbHVlVHJhaXRzPjo6cmVmQWxsKG1faW1wbCk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZGVyZWZB
bGwoKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGVSZWZDb3VudGVyPEhhc2hUYWJsZVR5cGUs
IFZhbHVlVHJhaXRzPjo6ZGVyZWZBbGwobV9pbXBsKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6SGFzaE1hcCgpDQorICAg
IHsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6SGFzaE1hcChjb25zdCBIYXNoTWFwJiBvdGhlcikNCisgICAgICAgIDogbV9p
bXBsKG90aGVyLm1faW1wbCkNCisgICAgew0KKyAgICAgICAgcmVmQWxsKCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46Om9wZXJhdG9yPShjb25zdCBIYXNoTWFwJiBvdGhlcikNCisg
ICAgew0KKyAgICAgICAgSGFzaE1hcCB0bXAob3RoZXIpOw0KKyAgICAgICAgbV9pbXBsLnN3YXAo
dG1wLm1faW1wbCk7IA0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+DQorICAgIGlubGluZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp+SGFzaE1hcCgp
DQorICAgIHsNCisgICAgICAgIGRlcmVmQWxsKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4NCisgICAgaW5saW5lIGludCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QN
CisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+DQorICAgIGlubGluZSBpbnQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2Fw
YWNpdHkoKSBjb25zdA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgp
OyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IG1faW1wbC5pc0VtcHR5KCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmJlZ2luKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5iZWdp
bigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpl
bmQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+Ojpjb25zdF9pdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0
DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsNCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkgY29uc3QNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBl
Kikma2V5KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAg
IHJldHVybiBtX2ltcGwuZmluZCgqKGNvbnN0IEtleVN0b3JhZ2VUeXBlKikma2V5KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIHJldHVybiBtX2ltcGwuY29udGFpbnMoKihjb25zdCBLZXlTdG9yYWdlVHlwZSopJmtleSk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHBhaXI8dHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+DQorICAgIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5
cGUmIG1hcHBlZCkgDQorICAgIHsgDQorI2lmbmRlZiBfX0FSTUNDX18NCisgICAgICAgIGNvbnN0
IGJvb2wgY2FuUmVwbGFjZURlbGV0ZWRLZXkgPSAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9u
IHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb247DQorICAgICAgICB0eXBlZGVm
IEhhc2hNYXBUcmFuc2xhdG9yPGNhblJlcGxhY2VEZWxldGVkS2V5LCBWYWx1ZVR5cGUsIFZhbHVl
U3RvcmFnZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7DQorI2Vsc2UNCisg
ICAgICAgIC8vIGdldCBhcm91bmQgDQorICAgICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xhdG9y
PCAhS2V5VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uIHx8IEtleVN0b3JhZ2VUcmFpdHM6Om5lZWRz
RGVzdHJ1Y3Rpb24sIFZhbHVlVHlwZSwgVmFsdWVTdG9yYWdlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiBUcmFuc2xhdG9yVHlwZTsNCisjZW5kaWYNCisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgYWRkPEtleVR5cGUsIE1hcHBlZFR5cGUsIFRyYW5zbGF0b3JUeXBlPihrZXksIG1hcHBlZCk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4NCisgICAgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKSAN
CisgICAgew0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsNCisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAg
ICAvLyBhZGQgY2FsbCBhYm92ZSBkaWRuJ3QgY2hhbmdlIGFueXRoaW5nLCBzbyBzZXQgdGhlIG1h
cHBlZCB2YWx1ZQ0KKyAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbWFwcGVkOw0K
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAg
ICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPg0K
KyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBjb25z
dCBNYXBwZWRUeXBlJiBtYXBwZWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBtYXBwZWQpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4NCisg
ICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFw
cGVkVHlwZQ0KKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0
ID0gZmluZChrZXkpOw0KKyAgICAgICAgaWYgKGl0ID09IGVuZCgpKQ0KKyAgICAgICAgICAgIHJl
dHVybiBNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKTsNCisgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkNCisgICAgew0KKyAgICAgICAg
aWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKyAg
ICAgICAgUmVmQ291bnRlcjxWYWx1ZVRyYWl0cywgVmFsdWVTdG9yYWdlVHJhaXRzPjo6ZGVyZWYo
Kml0Lm1faW1wbCk7DQorICAgICAgICBtX2ltcGwucmVtb3ZlKGl0Lm1faW1wbCk7DQorICAgIH0N
CisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkNCisgICAgew0KKyAgICAgICAgcmVtb3Zl
KGZpbmQoa2V5KSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHZv
aWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBkZXJl
ZkFsbCgpOw0KKyAgICAgICAgbV9pbXBsLmNsZWFyKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWFwcGVkVHlwZSwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZT4NCisgICAgdm9p
ZCBkZWxldGVBbGxQYWlyU2Vjb25kcyhIYXNoVGFibGVUeXBlJiBjb2xsZWN0aW9uKQ0KKyAgICB7
DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXJhdG9yOw0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsNCisg
ICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkNCisgICAgICAgICAgICBkZWxldGUgKihNYXBwZWRUeXBlKikmaXQtPnNlY29uZDsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBkZWxldGVBbGxWYWx1
ZXMoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbikNCisgICAgew0KKyAg
ICAgICAgZGVsZXRlQWxsUGFpclNlY29uZHM8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6TWFwcGVkVHlwZT4oY29sbGVjdGlvbik7DQorICAgIH0NCisNCit9IC8vIG5hbWVzcGFjZSBX
VEYNCisNCit1c2luZyBXVEY6Okhhc2hNYXA7DQorDQorI2VuZGlmIC8qIEtYTUxDT1JFX0hBU0hf
TUFQX0ggKi8NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVGFibGUuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lv
biAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hUYWJsZS5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw5MzUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0K
KyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RBQkxFX0gNCisjZGVmaW5lIEtY
TUxDT1JFX0hBU0hfVEFCTEVfSA0KKw0KKyNpbmNsdWRlICJGYXN0X01hbGxvYy5oIg0KKyNpbmNs
dWRlICJIYXNoVHJhaXRzLmgiDQorI2luY2x1ZGUgPGFzc2VydC5oPg0KKw0KK25hbWVzcGFjZSBX
VEYgew0KKw0KKyNkZWZpbmUgRFVNUF9IQVNIVEFCTEVfU1RBVFMgMA0KKyNkZWZpbmUgQ0hFQ0tf
SEFTSFRBQkxFX0NPTlNJU1RFTkNZIDANCisNCisjaWZkZWYgTkRFQlVHDQorI2RlZmluZSBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTIDANCisjZWxzZQ0KKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUyAxDQorI2VuZGlmDQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorDQor
ICAgIHN0cnVjdCBIYXNoVGFibGVTdGF0cyB7DQorICAgICAgICB+SGFzaFRhYmxlU3RhdHMoKTsN
CisgICAgICAgIHN0YXRpYyBpbnQgbnVtQWNjZXNzZXM7DQorICAgICAgICBzdGF0aWMgaW50IG51
bUNvbGxpc2lvbnM7DQorICAgICAgICBzdGF0aWMgaW50IGNvbGxpc2lvbkdyYXBoWzQwOTZdOw0K
KyAgICAgICAgc3RhdGljIGludCBtYXhDb2xsaXNpb25zOw0KKyAgICAgICAgc3RhdGljIGludCBu
dW1SZWhhc2hlczsNCisgICAgICAgIHN0YXRpYyBpbnQgbnVtUmVtb3ZlczsNCisgICAgICAgIHN0
YXRpYyBpbnQgbnVtUmVpbnNlcnRzOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVjb3JkQ29sbGlz
aW9uQXRDb3VudChpbnQgY291bnQpOw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGU7DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJs
ZUl0ZXJhdG9yOw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNo
VGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+Kik7DQorI2Vsc2UNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qKSB7IH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRl
cmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopIHsgfQ0KKyNlbmRpZg0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yIHsNCisgICAgcHJpdmF0ZToNCisg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAgICB0eXBlZGVm
IEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1
ZVR5cGU7DQorICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlwZTsN
CisgICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsNCisNCisgICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47DQorICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz47DQorDQorICAgICAgICB2b2lkIHNraXBFbXB0eUJ1Y2tldHMoKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgICAgIHdoaWxlIChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24gJiYg
SGFzaFRhYmxlVHlwZTo6aXNFbXB0eU9yRGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlvbikpDQorICAg
ICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgICAgIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBl
IHBvc2l0aW9uLCBQb2ludGVyVHlwZSBlbmRQb3NpdGlvbikNCisgICAgICAgICAgICA6IG1fcG9z
aXRpb24ocG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKQ0KKyAgICAgICAgew0K
KyAgICAgICAgICAgIGFkZEl0ZXJhdG9yKHRhYmxlLCB0aGlzKTsNCisgICAgICAgICAgICBza2lw
RW1wdHlCdWNrZXRzKCk7DQorICAgICAgICB9DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGFkZEl0ZXJh
dG9yKDAsIHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gZGVmYXVsdCBjb3B5LCBh
c3NpZ25tZW50IGFuZCBkZXN0cnVjdG9yIGFyZSBPSyBpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTIGlzIDANCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAgICAgICAgfkhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJlbW92ZUl0
ZXJhdG9yKHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvcihjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpDQorICAgICAgICAgICAgOiBtX3Bvc2l0
aW9uKG90aGVyLm1fcG9zaXRpb24pLCBtX2VuZFBvc2l0aW9uKG90aGVyLm1fZW5kUG9zaXRpb24p
DQorICAgICAgICB7DQorICAgICAgICAgICAgYWRkSXRlcmF0b3Iob3RoZXIubV90YWJsZSwgdGhp
cyk7DQorICAgICAgICB9DQorDQorICAgICAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3I9KGNv
bnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikNCisgICAgICAgIHsNCisgICAgICAgICAgICBtX3Bv
c2l0aW9uID0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgICAgICBtX2VuZFBvc2l0aW9uID0g
b3RoZXIubV9lbmRQb3NpdGlvbjsNCisNCisgICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0aGlz
KTsNCisgICAgICAgICAgICBhZGRJdGVyYXRvcihvdGhlci5tX3RhYmxlLCB0aGlzKTsNCisNCisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgICAgICB9DQorI2VuZGlmDQorDQorICAgICAg
ICBQb2ludGVyVHlwZSBnZXQoKSBjb25zdA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNoZWNr
VmFsaWRpdHkoKTsNCisgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbjsNCisgICAgICAgIH0N
CisgICAgICAgIFJlZmVyZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9DQorICAgICAgICBQb2ludGVyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0NCisNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkNCisgICAgICAg
IHsNCisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7DQorICAgICAgICAgICAgYXNzZXJ0KG1f
cG9zaXRpb24gIT0gbV9lbmRQb3NpdGlvbik7DQorICAgICAgICAgICAgKyttX3Bvc2l0aW9uOw0K
KyAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsNCisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkg
b21pdHRlZA0KKw0KKyAgICAgICAgLy8gQ29tcGFyaXNvbi4NCisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQorICAg
ICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1fcG9z
aXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisgICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQorICAgICAgICB7DQor
ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQorICAgICAgICAgICAgcmV0dXJuIG1f
cG9zaXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsNCisgICAgICAgIH0NCisNCisgICAgcHJpdmF0
ZToNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0DQorICAgICAgICB7DQorI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAgICAgICBhc3NlcnQobV90YWJsZSk7
DQorI2VuZGlmDQorICAgICAgICB9DQorDQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRP
UlMNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25zdF9pdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0DQorICAgICAgICB7DQorICAgICAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAg
ICAgICAgICAgIGFzc2VydChvdGhlci5tX3RhYmxlKTsNCisgICAgICAgICAgICBhc3NlcnQobV90
YWJsZSA9PSBvdGhlci5tX3RhYmxlKTsNCisgICAgICAgIH0NCisjZWxzZQ0KKyAgICAgICAgdm9p
ZCBjaGVja1ZhbGlkaXR5KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJikgY29uc3QgeyB9DQorI2VuZGlm
DQorDQorICAgICAgICBQb2ludGVyVHlwZSBtX3Bvc2l0aW9uOw0KKyAgICAgICAgUG9pbnRlclR5
cGUgbV9lbmRQb3NpdGlvbjsNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAg
ICBwdWJsaWM6DQorICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hUYWJsZVR5cGUqIG1fdGFibGU7
DQorICAgICAgICBtdXRhYmxlIGNvbnN0X2l0ZXJhdG9yKiBtX25leHQ7DQorICAgICAgICBtdXRh
YmxlIGNvbnN0X2l0ZXJhdG9yKiBtX3ByZXZpb3VzOw0KKyNlbmRpZg0KKyAgICB9Ow0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciB7DQorICAgIHByaXZhdGU6DQor
ICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBIYXNoVGFibGVUeXBlOw0KKyAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsNCisgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFs
dWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7DQorICAg
ICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7DQorDQorICAgICAgICBmcmllbmQg
Y2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+Ow0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3IoSGFzaFRhYmxl
VHlwZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvcywgUG9pbnRlclR5cGUgZW5kKSA6IG1faXRlcmF0
b3IodGFibGUsIHBvcywgZW5kKSB7IH0NCisNCisgICAgcHVibGljOg0KKyAgICAgICAgSGFzaFRh
YmxlSXRlcmF0b3IoKSB7IH0NCisNCisgICAgICAgIC8vIGRlZmF1bHQgY29weSwgYXNzaWdubWVu
dCBhbmQgZGVzdHJ1Y3RvciBhcmUgT0sNCisNCisgICAgICAgIFBvaW50ZXJUeXBlIGdldCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KG1faXRlcmF0b3IuZ2V0KCkpOyB9
DQorICAgICAgICBSZWZlcmVuY2VUeXBlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQo
KTsgfQ0KKyAgICAgICAgUG9pbnRlclR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9DQorDQorICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2l0ZXJhdG9y
OyByZXR1cm4gKnRoaXM7IH0NCisNCisgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxs
eSBvbWl0dGVkDQorDQorICAgICAgICAvLyBDb21wYXJpc29uLg0KKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9
PSBvdGhlci5tX2l0ZXJhdG9yOyB9DQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0
b3I7IH0NCisNCisgICAgICAgIG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvcjsgfQ0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgY29uc3RfaXRlcmF0
b3IgbV9pdGVyYXRvcjsNCisgICAgfTsNCisNCisgICAgdXNpbmcgc3RkOjpzd2FwOw0KKw0KKy8v
I2lmICFDT01QSUxFUihNU1ZDKQ0KKyAgICAvLyBWaXN1YWwgQysrIGhhcyBhIHN3YXAgZm9yIHBh
aXJzIGRlZmluZWQuDQorDQorICAgIC8vIHN3YXAgcGFpcnMgYnkgY29tcG9uZW50LCBpbiBjYXNl
IG9mIHBhaXIgbWVtYmVycyB0aGF0IHNwZWNpYWxpemUgc3dhcA0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBzd2FwKHBhaXI8VCwgVT4mIGEsIHBhaXI8
VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAgIHN3YXAoYS5maXJzdCwgYi5maXJzdCk7DQorICAg
ICAgICBzd2FwKGEuc2Vjb25kLCBiLnNlY29uZCk7DQorICAgIH0NCisvLyNlbmRpZg0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIHVzZVN3YXA+IHN0cnVjdCBNb3ZlcjsNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1vdmVyPFQsIHRydWU+IHsgc3RhdGljIHZvaWQg
bW92ZShUJiBmcm9tLCBUJiB0bykgeyBzd2FwKGZyb20sIHRvKTsgfSB9Ow0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTW92ZXI8VCwgZmFsc2U+IHsgc3RhdGljIHZvaWQgbW92ZShU
JiBmcm9tLCBUJiB0bykgeyB0byA9IGZyb207IH0gfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgSWRl
bnRpdHlIYXNoVHJhbnNsYXRvciB7DQorICAgIHB1YmxpYzoNCisgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IEtleSYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtl
eSk7IH0NCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5
JiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQ0KKyAgICAgICAgc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlJiBsb2NhdGlvbiwgY29uc3QgS2V5JiwgY29uc3QgVmFs
dWUmIHZhbHVlLCB1bnNpZ25lZCkgeyBsb2NhdGlvbiA9IHZhbHVlOyB9DQorICAgIH07DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIGNsYXNzIEhhc2hUYWJsZSB7DQorICAgIHB1YmxpYzoNCisgICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFRy
YWl0cyBWYWx1ZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNo
VHJhbnNsYXRvcjxLZXksIFZhbHVlLCBIYXNoRnVuY3Rpb25zPiBJZGVudGl0eVRyYW5zbGF0b3JU
eXBlOw0KKw0KKyAgICAgICAgSGFzaFRhYmxlKCk7DQorICAgICAgICB+SGFzaFRhYmxlKCkgeyBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6
ZSk7IH0NCisNCisgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsNCisgICAgICAg
IHZvaWQgc3dhcChIYXNoVGFibGUmKTsNCisgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNv
bnN0IEhhc2hUYWJsZSYpOw0KKw0KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBt
YWtlSXRlcmF0b3IobV90YWJsZSk7IH0NCisgICAgICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJu
IG1ha2VJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorICAgICAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKG1fdGFibGUp
OyB9DQorICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlQ29u
c3RJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorDQorICAgICAgICBpbnQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0NCisgICAgICAgIGludCBjYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9DQorICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhbV9rZXlDb3VudDsgfQ0KKw0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxLZXlUeXBlLCBW
YWx1ZVR5cGUsIElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1
ZSksIHZhbHVlKTsgfQ0KKw0KKyAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRkKCkg
dGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZw0KKyAgICAgICAg
Ly8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVy
c2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkNCisgICAgICAgIC8vIGluIHRoZSB0YWJsZS4N
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29u
c3QgRXh0cmEmKTsNCisNCisgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOw0K
KyAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7DQorICAg
ICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmKSBjb25zdDsNCisNCisgICAgICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9y
KTsNCisgICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1w
dHlCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRXh0cmFjdG9yOjpleHRy
YWN0KHZhbHVlKSA9PSBLZXlUcmFpdHM6OmVtcHR5VmFsdWUoKTsgfQ0KKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEV4
dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkgPT0gS2V5VHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0K
KyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5QnVja2V0KHZhbHVlKSB8fCBpc0RlbGV0ZWRCdWNr
ZXQodmFsdWUpOyB9DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBzdGF0aWMgVmFsdWVUeXBl
KiBhbGxvY2F0ZVRhYmxlKGludCBzaXplKTsNCisgICAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2Nh
dGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCBpbnQgc2l6ZSk7DQorDQorICAgICAgICB0eXBlZGVm
IHBhaXI8VmFsdWVUeXBlKiwgYm9vbD4gTG9va3VwVHlwZTsNCisgICAgICAgIHR5cGVkZWYgcGFp
cjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExvb2t1cFR5cGU7DQorDQorICAgICAgICBMb29r
dXBUeXBlIGxvb2t1cChjb25zdCBLZXkmIGtleSkgeyByZXR1cm4gbG9va3VwPEtleSwgSWRlbnRp
dHlUcmFuc2xhdG9yVHlwZT4oa2V5KS5maXJzdDsgfQ0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEZ1bGxMb29rdXBUeXBlIGxvb2t1cChjb25z
dCBUJik7DQorDQorICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsNCisNCisgICAgICAg
IGJvb2wgc2hvdWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0
ZWRDb3VudCkgKiBtX21heExvYWQgPj0gbV90YWJsZVNpemU7IH0NCisgICAgICAgIGJvb2wgbXVz
dFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwg
bV90YWJsZVNpemUgKiAyOyB9DQorICAgICAgICBib29sIHNob3VsZFNocmluaygpIGNvbnN0IHsg
cmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3RhYmxlU2l6ZSAmJiBtX3RhYmxlU2l6
ZSA+IG1fbWluVGFibGVTaXplOyB9DQorICAgICAgICB2b2lkIGV4cGFuZCgpOw0KKyAgICAgICAg
dm9pZCBzaHJpbmsoKSB7IHJlaGFzaChtX3RhYmxlU2l6ZSAvIDIpOyB9DQorDQorICAgICAgICB2
b2lkIHJlaGFzaChpbnQgbmV3VGFibGVTaXplKTsNCisgICAgICAgIHZvaWQgcmVpbnNlcnQoVmFs
dWVUeXBlJik7DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQnVja2V0KFZhbHVl
VHlwZSYgYnVja2V0KSB7IC8qbmV3ICgmYnVja2V0KSBWYWx1ZVR5cGUoVHJhaXRzOjplbXB0eVZh
bHVlKCkpOyovIH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUJ1Y2tldChWYWx1ZVR5cGUm
IGJ1Y2tldCkgeyBhc3NpZ25EZWxldGVkPFZhbHVlVHlwZSwgVHJhaXRzPihidWNrZXQpOyB9DQor
DQorICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZhbHVlVHlwZSogcG9z
aXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpDQorICAgICAgICAgICAgeyByZXR1cm4g
RnVsbExvb2t1cFR5cGUoTG9va3VwVHlwZShwb3NpdGlvbiwgZm91bmQpLCBoYXNoKTsgfQ0KKw0K
KyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBp
dGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0NCisgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7IHJl
dHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0N
CisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZDQorICAgICAgICB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0Ow0KKyAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lz
dGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7DQorI2Vsc2UNCisgICAgICAgIHN0YXRpYyB2b2lkIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJs
ZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQ0KKyNlbmRpZg0KKw0KKyNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTDQorICAgICAgICB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisj
ZWxzZQ0KKyAgICAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUl0ZXJhdG9ycygpIHsgfQ0KKyNl
bmRpZg0KKw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21pblRhYmxlU2l6ZSA9IDY0Ow0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBtX21heExvYWQgPSAyOw0KKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBtX21pbkxvYWQgPSA2Ow0KKw0KKyAgICAgICAgVmFsdWVUeXBlKiBtX3RhYmxl
Ow0KKyAgICAgICAgaW50IG1fdGFibGVTaXplOw0KKyAgICAgICAgaW50IG1fdGFibGVTaXplTWFz
azsNCisgICAgICAgIGludCBtX2tleUNvdW50Ow0KKyAgICAgICAgaW50IG1fZGVsZXRlZENvdW50
Ow0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgIHB1YmxpYzoNCisgICAg
ICAgIG11dGFibGUgY29uc3RfaXRlcmF0b3IqIG1faXRlcmF0b3JzOw0KKyNlbmRpZg0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQ0KKyAg
ICAgICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAs
IG1fdGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAs
IG1fZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAg
ICAgICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPg0K
KyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpGdWxsTG9va3VwVHlwZSBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Omxvb2t1cChjb25zdCBUJiBrZXkpDQorICAgIHsNCisgICAgICAgIGFzc2VydChtX3RhYmxlKTsN
CisNCisgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOw0KKyAg
ICAgICAgaW50IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOw0KKyAgICAgICAgaW50IGkgPSBo
ICYgc2l6ZU1hc2s7DQorICAgICAgICBpbnQgayA9IDA7DQorDQorI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTDQorICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nlc3NlczsNCisgICAgICAg
IGludCBwcm9iZUNvdW50ID0gMDsNCisjZW5kaWYNCisNCisgICAgICAgIFZhbHVlVHlwZSAqdGFi
bGUgPSBtX3RhYmxlOw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeTsNCisgICAgICAgIFZhbHVl
VHlwZSAqZGVsZXRlZEVudHJ5ID0gMDsNCisgICAgICAgIHdoaWxlICghaXNFbXB0eUJ1Y2tldCgq
KGVudHJ5ID0gdGFibGUgKyBpKSkpIHsNCisgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0
KCplbnRyeSkpDQorICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Ow0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3Qo
KmVudHJ5KSwga2V5KSkNCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQo
ZW50cnksIHRydWUsIGgpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgICAg
ICsrcHJvYmVDb3VudDsNCisgICAgICAgICAgICBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlz
aW9uQXRDb3VudChwcm9iZUNvdW50KTsNCisjZW5kaWYNCisgICAgICAgICAgICBpZiAoayA9PSAw
KQ0KKyAgICAgICAgICAgICAgICBrID0gMSB8IChoICUgc2l6ZU1hc2spOw0KKyAgICAgICAgICAg
IGkgPSAoaSArIGspICYgc2l6ZU1hc2s7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4g
bWFrZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFs
c2UsIGgpOw0KKyAgICB9DQorDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4NCisgICAgaW5saW5l
IHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQo
Y29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSAmZXh0cmEpDQorICAgIHsNCisgICAgICAgIGludmFs
aWRhdGVJdGVyYXRvcnMoKTsNCisNCisgICAgICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAg
ICBleHBhbmQoKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAg
ICAgICAgRnVsbExvb2t1cFR5cGUgbG9va3VwUmVzdWx0ID0gbG9va3VwPFQsIEhhc2hUcmFuc2xh
dG9yPihrZXkpOw0KKw0KKyAgICAgICAgVmFsdWVUeXBlICplbnRyeSA9IGxvb2t1cFJlc3VsdC5m
aXJzdC5maXJzdDsNCisgICAgICAgIGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vj
b25kOw0KKyAgICAgICAgdW5zaWduZWQgaCA9IGxvb2t1cFJlc3VsdC5zZWNvbmQ7DQorDQorICAg
ICAgICBpZiAoZm91bmQpDQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJ
dGVyYXRvcihlbnRyeSksIGZhbHNlKTsNCisNCisgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50Ow0KKw0KKyAgICAgICAgSGFz
aFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIGtleSwgZXh0cmEsIGgpOw0KKyAgICAgICAg
KyttX2tleUNvdW50Ow0KKw0KKyAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKSB7DQorICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgbWFrZXMgYW4gZXh0cmEgY29weSBvbiBleHBhbmQuIFByb2Jh
Ymx5IG5vdCB0aGF0IGJhZCBzaW5jZQ0KKyAgICAgICAgICAgIC8vIGV4cGFuZCBpcyByYXJlLCBi
dXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYSB2ZXJzaW9uIG9mIGV4cGFuZCB0aGF0IGNhbg0K
KyAgICAgICAgICAgIC8vIGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBw
b3NpdGlvbg0KKyAgICAgICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0
cmFjdCgqZW50cnkpOw0KKyAgICAgICAgICAgIGV4cGFuZCgpOw0KKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsNCisgICAgICAgIH0NCisN
CisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcihlbnRyeSksIHRydWUpOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiBl
bnRyeSkNCisgICAgew0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyAgICAgICAgYXNzZXJ0
KCFsb29rdXAoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuc2Vjb25kKTsNCisgICAgICAgIGFz
c2VydCghaXNEZWxldGVkQnVja2V0KCoobG9va3VwKEV4dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkp
LmZpcnN0KSkpOw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgKytIYXNoVGFi
bGVTdGF0czo6bnVtUmVpbnNlcnRzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgTW92ZXI8VmFsdWVU
eXBlLCBUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24+Ojptb3ZlKGVudHJ5LCAqKGxvb2t1cChFeHRy
YWN0b3I6OmV4dHJhY3QoZW50cnkpKS5maXJzdCkpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQor
ICAgIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IEtl
eSYga2V5KQ0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAgICAgICAgcmV0
dXJuIGVuZCgpOw0KKw0KKyAgICAgICAgTG9va3VwVHlwZSByZXN1bHQgPSBsb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKHJlc3VsdC5maXJzdCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4NCisgICAgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OmZpbmQoY29uc3QgS2V5JiBrZXkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICgh
bV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7DQorDQorICAgICAgICBMb29rdXBU
eXBlIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KTsN
CisgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkNCisgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQorICAgICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IocmVzdWx0LmZpcnN0KTsNCisgICAg
fQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KKw0KKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SGFzaFRh
YmxlICo+KHRoaXMpLT5sb29rdXAoa2V5KS5zZWNvbmQ7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4N
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykNCisgICAgew0KKyAg
ICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3Rl
bmN5KCk7DQorDQorI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTDQorICAgICAgICArK0hhc2hUYWJs
ZVN0YXRzOjpudW1SZW1vdmVzOw0KKyNlbmRpZg0KKw0KKyAgICAgICAgZGVsZXRlQnVja2V0KCpw
b3MpOw0KKyAgICAgICAgKyttX2RlbGV0ZWRDb3VudDsNCisgICAgICAgIC0tbV9rZXlDb3VudDsN
CisNCisgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkNCisgICAgICAgICAgICBzaHJpbmsoKTsN
CisNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0KKyAg
ICB7DQorICAgICAgICBpZiAoaXQgPT0gZW5kKCkpDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0K
KyAgICAgICAgcmVtb3ZlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bv
c2l0aW9uKSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5saW5lIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQ0KKyAgICB7DQorICAgICAgICByZW1vdmUo
ZmluZChrZXkpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBWYWx1ZSAqSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjphbGxvY2F0ZVRhYmxlKGludCBzaXplKQ0KKyAgICB7DQorICAgICAgICAvLyB3b3VsZCB1c2Ug
YSB0ZW1wbGF0ZSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMg
aGVyZSwgYnV0DQorICAgICAgICAvLyBnY2MgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCB0aGF0
DQorICAgICAgICBpZiAoVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvKQ0KKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWYWx1ZVR5cGUgKj4oS0pTOjpranNfZmFzdF9jYWxsb2Moc2l6ZSwg
c2l6ZW9mKFZhbHVlVHlwZSkpKTsNCisgICAgICAgIFZhbHVlVHlwZSogcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VmFsdWVUeXBlKj4oS0pTOjpranNfZmFzdF9tYWxsb2Moc2l6ZSAqIHNpemVvZihWYWx1
ZVR5cGUpKSk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykNCisgICAg
ICAgICAgICBpbml0aWFsaXplQnVja2V0KHJlc3VsdFtpXSk7DQorICAgICAgICByZXR1cm4gcmVz
dWx0Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9j
YXRlVGFibGUoVmFsdWVUeXBlICp0YWJsZSwgaW50IHNpemUpDQorICAgIHsNCisgICAgICAgIGlm
IChUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24pDQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyArK2kpDQorICAgICAgICAgICAgICAgIHRhYmxlW2ldLn5WYWx1ZVR5cGUoKTsN
CisgICAgICAgIEtKUzo6a2pzX2Zhc3RfZnJlZSh0YWJsZSk7DQorICAgIH0NCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZCgpDQorICAgIHsNCisgICAgICAgIGludCBu
ZXdTaXplOw0KKyAgICAgICAgaWYgKG1fdGFibGVTaXplID09IDApDQorICAgICAgICAgICAgbmV3
U2l6ZSA9IG1fbWluVGFibGVTaXplOw0KKyAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxh
Y2UoKSkNCisgICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemU7DQorICAgICAgICBlbHNl
DQorICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVTaXplICogMjsNCisNCisgICAgICAgIHJl
aGFzaChuZXdTaXplKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6cmVoYXNoKGludCBuZXdUYWJsZVNpemUpDQorICAgIHsNCisgICAgICAgIGNoZWNrVGFibGVD
b25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsNCisNCisgICAgICAgIGludCBvbGRUYWJsZVNpemUgPSBt
X3RhYmxlU2l6ZTsNCisgICAgICAgIFZhbHVlVHlwZSAqb2xkVGFibGUgPSBtX3RhYmxlOw0KKw0K
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgaWYgKG9sZFRhYmxlU2l6ZSAhPSAw
KQ0KKyAgICAgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaGFzaGVzOw0KKyNlbmRpZg0K
Kw0KKyAgICAgICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7DQorICAgICAgICBtX3RhYmxl
U2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAxOw0KKyAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRl
VGFibGUobmV3VGFibGVTaXplKTsNCisNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICE9IG9s
ZFRhYmxlU2l6ZTsgKytpKQ0KKyAgICAgICAgICAgIGlmICghaXNFbXB0eU9yRGVsZXRlZEJ1Y2tl
dChvbGRUYWJsZVtpXSkpDQorICAgICAgICAgICAgICAgIHJlaW5zZXJ0KG9sZFRhYmxlW2ldKTsN
CisNCisgICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsNCisNCisgICAgICAgIGRlYWxsb2NhdGVU
YWJsZShvbGRUYWJsZSwgb2xkVGFibGVTaXplKTsNCisNCisgICAgICAgIGNoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpj
bGVhcigpDQorICAgIHsNCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCisgICAgICAg
IGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxlU2l6ZSk7DQorICAgICAgICBtX3RhYmxl
ID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplID0gMDsNCisgICAgICAgIG1fdGFibGVTaXplTWFz
ayA9IDA7DQorICAgICAgICBtX2tleUNvdW50ID0gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0K
KyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQ0KKyAgICAg
ICAgOiBtX3RhYmxlKDApDQorICAgICAgICAsIG1fdGFibGVTaXplKDApDQorICAgICAgICAsIG1f
dGFibGVTaXplTWFzaygwKQ0KKyAgICAgICAgLCBtX2tleUNvdW50KDApDQorICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApDQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAg
ICwgbV9pdGVyYXRvcnMoMCkNCisjZW5kaWYNCisgICAgew0KKyAgICAgICAgLy8gQ29weSB0aGUg
aGFzaCB0YWJsZSB0aGUgZHVtYiB3YXksIGJ5IGFkZGluZyBlYWNoIGVsZW1lbnQgdG8gdGhlIG5l
dyB0YWJsZS4NCisgICAgICAgIC8vIEl0IG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IHRvIGNvcHkg
dGhlIHRhYmxlIHNsb3RzLCBidXQgaXQncyBub3QgY2xlYXIgdGhhdCBlZmZpY2llbmN5IGlzIG5l
ZWRlZC4NCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCA9IG90aGVyLmVuZCgpOw0KKyAgICAg
ICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkNCisgICAgICAgICAgICBhZGQoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQ0KKyAgICB7DQorICAgICAgICBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3Jz
KCk7DQorDQorICAgICAgICBWYWx1ZVR5cGUgKnRtcF90YWJsZSA9IG1fdGFibGU7DQorICAgICAg
ICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsNCisgICAgICAgIG90aGVyLm1fdGFibGUgPSB0bXBf
dGFibGU7DQorDQorICAgICAgICBpbnQgdG1wX3RhYmxlU2l6ZSA9IG1fdGFibGVTaXplOw0KKyAg
ICAgICAgbV90YWJsZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsNCisgICAgICAgIG90aGVyLm1f
dGFibGVTaXplID0gdG1wX3RhYmxlU2l6ZTsNCisNCisgICAgICAgIGludCB0bXBfdGFibGVTaXpl
TWFzayA9IG1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG1fdGFibGVTaXplTWFzayA9IG90aGVy
Lm1fdGFibGVTaXplTWFzazsNCisgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IHRtcF90
YWJsZVNpemVNYXNrOw0KKw0KKyAgICAgICAgaW50IHRtcF9rZXlDb3VudCA9IG1fa2V5Q291bnQ7
DQorICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsNCisgICAgICAgIG90aGVy
Lm1fa2V5Q291bnQgPSB0bXBfa2V5Q291bnQ7DQorDQorICAgICAgICBpbnQgdG1wX2RlbGV0ZWRD
b3VudCA9IG1fZGVsZXRlZENvdW50Ow0KKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5t
X2RlbGV0ZWRDb3VudDsNCisgICAgICAgIG90aGVyLm1fZGVsZXRlZENvdW50ID0gdG1wX2RlbGV0
ZWRDb3VudDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4mIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpDQorICAgIHsNCisgICAgICAgIEhh
c2hUYWJsZSB0bXAob3RoZXIpOw0KKyAgICAgICAgc3dhcCh0bXApOw0KKyAgICAgICAgcmV0dXJu
ICp0aGlzOw0KKyAgICB9DQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkg
Y29uc3QNCisgICAgew0KKyAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgp
Ow0KKyAgICAgICAgYXNzZXJ0KCFzaG91bGRFeHBhbmQoKSk7DQorICAgICAgICBhc3NlcnQoIXNo
b3VsZFNocmluaygpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAg
ICAgIGlmICghbV90YWJsZSkNCisgICAgICAgICAgICByZXR1cm47DQorDQorICAgICAgICBpbnQg
Y291bnQgPSAwOw0KKyAgICAgICAgaW50IGRlbGV0ZWRDb3VudCA9IDA7DQorICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG1fdGFibGVTaXplOyArK2opIHsNCisgICAgICAgICAgICBWYWx1ZVR5
cGUgKmVudHJ5ID0gbV90YWJsZSArIGo7DQorICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQo
KmVudHJ5KSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAgICAgICAgaWYg
KGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7DQorICAgICAgICAgICAgICAgICsrZGVsZXRlZENv
dW50Ow0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorDQorICAg
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50
cnkpKTsNCisgICAgICAgICAgICBhc3NlcnQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7DQorICAg
ICAgICAgICAgKytjb3VudDsNCisgICAgICAgIH0NCisNCisgICAgICAgIGFzc2VydChjb3VudCA9
PSBtX2tleUNvdW50KTsNCisgICAgICAgIGFzc2VydChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVk
Q291bnQpOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFibGVTaXplID49IG1fbWluVGFibGVTaXplKTsN
CisgICAgICAgIGFzc2VydChtX3RhYmxlU2l6ZU1hc2spOw0KKyAgICAgICAgYXNzZXJ0KG1fdGFi
bGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOw0KKyAgICB9DQorDQorI2VuZGlmIC8vIENI
RUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWQ0KKw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0
b3JzKCkNCisgICAgew0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5leHQ7DQorICAgICAgICBm
b3IgKGNvbnN0X2l0ZXJhdG9yKiBwID0gbV9pdGVyYXRvcnM7IHA7IHAgPSBuZXh0KSB7DQorICAg
ICAgICAgICAgbmV4dCA9IHAtPm1fbmV4dDsNCisgICAgICAgICAgICBwLT5tX3RhYmxlID0gMDsN
CisgICAgICAgICAgICBwLT5tX25leHQgPSAwOw0KKyAgICAgICAgICAgIHAtPm1fcHJldmlvdXMg
PSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pdGVyYXRvcnMgPSAwOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQorICAgIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiB0YWJsZSwN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQ0KKyAgICB7DQorICAgICAgICBp
dC0+bV90YWJsZSA9IHRhYmxlOw0KKyAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOw0KKw0KKyAg
ICAgICAgLy8gSW5zZXJ0IGl0ZXJhdG9yIGF0IGhlYWQgb2YgZG91Ymx5LWxpbmtlZCBsaXN0IG9m
IGl0ZXJhdG9ycy4NCisgICAgICAgIGlmICghdGFibGUpIHsNCisgICAgICAgICAgICBpdC0+bV9u
ZXh0ID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYXNzZXJ0KHRhYmxlLT5t
X2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAgaXQtPm1fbmV4dCA9IHRhYmxlLT5tX2l0
ZXJhdG9yczsNCisgICAgICAgICAgICB0YWJsZS0+bV9pdGVyYXRvcnMgPSBpdDsNCisgICAgICAg
ICAgICBpZiAoaXQtPm1fbmV4dCkgew0KKyAgICAgICAgICAgICAgICBhc3NlcnQoIWl0LT5tX25l
eHQtPm1fcHJldmlvdXMpOw0KKyAgICAgICAgICAgICAgICBpdC0+bV9uZXh0LT5tX3ByZXZpb3Vz
ID0gaXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
DQorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpDQor
ICAgIHsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7DQorDQorICAg
ICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJvbSBkb3VibHktbGlua2VkIGxpc3Qgb2YgaXRlcmF0
b3JzLg0KKyAgICAgICAgaWYgKCFpdC0+bV90YWJsZSkgew0KKyAgICAgICAgICAgIGFzc2VydCgh
aXQtPm1fbmV4dCk7DQorICAgICAgICAgICAgYXNzZXJ0KCFpdC0+bV9wcmV2aW91cyk7DQorICAg
ICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpdC0+bV9uZXh0KSB7DQorICAgICAgICAg
ICAgICAgIGFzc2VydChpdC0+bV9uZXh0LT5tX3ByZXZpb3VzID09IGl0KTsNCisgICAgICAgICAg
ICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9IGl0LT5tX3ByZXZpb3VzOw0KKyAgICAgICAg
ICAgIH0NCisgICAgICAgICAgICBpZiAoaXQtPm1fcHJldmlvdXMpIHsNCisgICAgICAgICAgICAg
ICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyAhPSBpdCk7DQorICAgICAgICAgICAg
ICAgIGFzc2VydChpdC0+bV9wcmV2aW91cy0+bV9uZXh0ID09IGl0KTsNCisgICAgICAgICAgICAg
ICAgaXQtPm1fcHJldmlvdXMtPm1fbmV4dCA9IGl0LT5tX25leHQ7DQorICAgICAgICAgICAgfSBl
bHNlIHsNCisgICAgICAgICAgICAgICAgYXNzZXJ0KGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9
PSBpdCk7DQorICAgICAgICAgICAgICAgIGl0LT5tX3RhYmxlLT5tX2l0ZXJhdG9ycyA9IGl0LT5t
X25leHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaXQtPm1fdGFi
bGUgPSAwOw0KKyAgICAgICAgaXQtPm1fbmV4dCA9IDA7DQorICAgICAgICBpdC0+bV9wcmV2aW91
cyA9IDA7DQorICAgIH0NCisNCisjZW5kaWYgLy8gQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0K
Kw0KKyAgICAvLyBpdGVyYXRvciBhZGFwdGVycw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlciB7DQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcihj
b25zdCB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciYgaW1wbCkgOiBtX2lt
cGwoaW1wbCkge30NCisNCisgICAgICAgIGNvbnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gKGNvbnN0IFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9DQorICAgICAgICBjb25zdCBW
YWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KKyAgICAgICAg
Y29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0NCisN
CisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyAr
K21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlv
bmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFk
YXB0ZXIgew0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1l
IEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KKw0KKyAg
ICAgICAgVmFsdWVUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAoVmFsdWVUeXBlKiltX2ltcGwu
Z2V0KCk7IH0NCisgICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KmdldCgpOyB9DQorICAgICAgICBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVy
biBnZXQoKTsgfQ0KKw0KKyAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRv
cisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQorICAgICAgICAvLyBwb3N0Zml4ICsr
IGludGVudGlvbmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIHsNCisgICAgICAg
ICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOw0K
KyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdHlwZW5hbWUg
SGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikNCisgICAgew0KKyAgICAgICAgcmV0dXJu
IGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5tX2ltcGwg
IT0gYi5tX2ltcGw7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4NCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYg
YikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KKyAgICB9
DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBj
b25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAg
IHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsNCisgICAgfQ0KKw0KKyAgICAvLyByZWZlcmVu
Y2UgY291bnQgbWFuYWdlcg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzPiBzdHJ1Y3QgTmVlZHNSZWYgew0KKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBWYWx1ZVRyYWl0czo6bmVlZHNSZWYgJiYgIVZhbHVl
U3RvcmFnZVRyYWl0czo6bmVlZHNSZWY7DQorICAgIH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZpcnN0VHJhaXRzLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHMsIHR5cGVuYW1lIFZhbHVlU3RvcmFn
ZVRyYWl0cz4NCisgICAgc3RydWN0IE5lZWRzUmVmPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRy
YWl0cywgU2Vjb25kVHJhaXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6Rmlyc3RUcmFpdHMgRmlyc3RTdG9yYWdl
VHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OlNl
Y29uZFRyYWl0cyBTZWNvbmRTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgZmlyc3ROZWVkc1JlZiA9IE5lZWRzUmVmPEZpcnN0VHJhaXRzLCBGaXJzdFN0b3JhZ2VUcmFp
dHM+Ojp2YWx1ZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNlY29uZE5lZWRzUmVmID0g
TmVlZHNSZWY8U2Vjb25kVHJhaXRzLCBTZWNvbmRTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZpcnN0TmVlZHNSZWYgfHwgc2Vjb25kTmVl
ZHNSZWY7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPGJvb2wgbmVlZHNSZWYsIHR5cGVuYW1l
IFZhbHVlVHJhaXRzPiBzdHJ1Y3QgUmVmQ291bnRlckJhc2U7DQorDQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUmVmQ291bnRlckJhc2U8ZmFsc2UsIFZh
bHVlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFp
dFR5cGUgVmFsdWVUeXBlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlVHlw
ZSYpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3QgVmFsdWVUeXBlJikgeyB9
DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzPg0KKyAgICBz
dHJ1Y3QgUmVmQ291bnRlckJhc2U8dHJ1ZSwgVmFsdWVUcmFpdHM+IHsNCisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAgICBz
dGF0aWMgdm9pZCByZWYoY29uc3QgVmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpyZWYoKihj
b25zdCBWYWx1ZVR5cGUqKSZ2KTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWYoY29uc3Qg
VmFsdWVUeXBlJiB2KSB7IFZhbHVlVHJhaXRzOjpkZXJlZigqKGNvbnN0IFZhbHVlVHlwZSopJnYp
OyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBl
bmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+IHN0cnVjdCBSZWZDb3VudGVyIHsNCisgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQorICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlU3Rv
cmFnZVR5cGU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc1JlZiA9IE5lZWRzUmVm
PFZhbHVlVHJhaXRzLCBWYWx1ZVN0b3JhZ2VUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5cGVk
ZWYgUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIFZhbHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAg
c3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6cmVmKCoo
Y29uc3QgVmFsdWVUeXBlKikmdik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmKGNvbnN0
IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsgQmFzZTo6ZGVyZWYoKihjb25zdCBWYWx1ZVR5cGUqKSZ2
KTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlw
ZW5hbWUgU2Vjb25kVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+DQorICAgIHN0
cnVjdCBSZWZDb3VudGVyPFBhaXJCYXNlSGFzaFRyYWl0czxGaXJzdFRyYWl0cywgU2Vjb25kVHJh
aXRzPiwgVmFsdWVTdG9yYWdlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEZp
cnN0VHJhaXRzOjpUcmFpdFR5cGUgRmlyc3RUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZSBTZWNvbmRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJhaXRzIEZpcnN0U3RvcmFnZVRyYWl0
czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpTZWNvbmRU
cmFpdHMgU2Vjb25kU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFs
dWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVTdG9yYWdlVHlwZTsNCisgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGZpcnN0TmVlZHNSZWYgPSBOZWVkc1JlZjxGaXJzdFRyYWl0cywgRmly
c3RTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzZWNv
bmROZWVkc1JlZiA9IE5lZWRzUmVmPFNlY29uZFRyYWl0cywgU2Vjb25kU3RvcmFnZVRyYWl0cz46
OnZhbHVlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxmaXJzdE5lZWRzUmVmLCBG
aXJzdFRyYWl0cz4gRmlyc3RCYXNlOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyQmFzZTxz
ZWNvbmROZWVkc1JlZiwgU2Vjb25kVHJhaXRzPiBTZWNvbmRCYXNlOw0KKyAgICAgICAgc3RhdGlj
IHZvaWQgcmVmKGNvbnN0IFZhbHVlU3RvcmFnZVR5cGUmIHYpIHsNCisgICAgICAgICAgICBGaXJz
dEJhc2U6OnJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmlyc3QpOw0KKyAgICAgICAgICAgIFNl
Y29uZEJhc2U6OnJlZigqKGNvbnN0IFNlY29uZFR5cGUqKSZ2LnNlY29uZCk7DQorICAgICAgICB9
DQorICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZihjb25zdCBWYWx1ZVN0b3JhZ2VUeXBlJiB2KSB7
DQorICAgICAgICAgICAgRmlyc3RCYXNlOjpkZXJlZigqKGNvbnN0IEZpcnN0VHlwZSopJnYuZmly
c3QpOw0KKyAgICAgICAgICAgIFNlY29uZEJhc2U6OmRlcmVmKCooY29uc3QgU2Vjb25kVHlwZSop
JnYuc2Vjb25kKTsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBu
ZWVkc1JlZiwgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+IHN0
cnVjdCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHN0cnVjdCBIYXNoVGFi
bGVSZWZDb3VudGVyQmFzZTxmYWxzZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+DQorICAg
IHsNCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAg
ICAgICBzdGF0aWMgdm9pZCBkZXJlZkFsbChIYXNoVGFibGVUeXBlJikgeyB9DQorICAgIH07DQor
DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJh
aXRzPg0KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxl
VHlwZSwgVmFsdWVUcmFpdHM+DQorICAgIHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aFRhYmxlVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIFJlZkNvdW50
ZXI8VmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHJhaXRzPiBWYWx1
ZVJlZkNvdW50ZXI7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWZBbGwoSGFzaFRhYmxlVHlwZSYp
Ow0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZBbGwoSGFzaFRhYmxlVHlwZSYpOw0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1
ZVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGVSZWZDb3VudGVyQmFzZTx0cnVlLCBIYXNoVGFi
bGVUeXBlLCBWYWx1ZVRyYWl0cz46OnJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAg
ew0KKyAgICAgICAgaXRlcmF0b3IgZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAg
IFZhbHVlUmVmQ291bnRlcjo6cmVmKCppdCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHZvaWQgSGFz
aFRhYmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+Ojpk
ZXJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkNCisgICAgew0KKyAgICAgICAgaXRlcmF0b3Ig
ZW5kID0gdGFibGUuZW5kKCk7DQorICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gdGFibGUuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQ0KKyAgICAgICAgICAgIFZhbHVlUmVmQ291bnRlcjo6ZGVy
ZWYoKml0KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
LCB0eXBlbmFtZSBWYWx1ZVRyYWl0cz4gc3RydWN0IEhhc2hUYWJsZVJlZkNvdW50ZXIgew0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYgPSBOZWVkc1JlZjxWYWx1ZVRyYWl0cywg
dHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8bmVlZHNSZWYsIEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHJhaXRzPiBCYXNlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmQWxsKEhhc2hUYWJsZVR5
cGUmIHRhYmxlKSB7IEJhc2U6OnJlZkFsbCh0YWJsZSk7IH0NCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlcmVmQWxsKEhhc2hUYWJsZVR5cGUmIHRhYmxlKSB7IEJhc2U6OmRlcmVmQWxsKHRhYmxlKTsg
fQ0KKyAgICB9Ow0KKw0KK30gLy8gbmFtZXNwYWNlIFdURg0KKw0KKyNlbmRpZiAvLyBLWE1MQ09S
RV9IQVNIX1RBQkxFX0gNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRz
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9IYXNoVHJhaXRzLmgJ
KHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaFRyYWl0cy5oCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxOTUgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2lj
LW9mZnNldDogNCAtKi0NCisvKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGli
cmFyaWVzDQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
DQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLg0KKyAqDQorICovDQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQor
I2RlZmluZSBLWE1MQ09SRV9IQVNIX1RSQUlUU19IDQorDQorI2luY2x1ZGUgIkhhc2hGdW5jdGlv
bnMuaCINCisjaW5jbHVkZSA8dXRpbGl0eT4NCisNCituYW1lc3BhY2UgV1RGIHsNCisNCisgICAg
dXNpbmcgc3RkOjpwYWlyOw0KKyAgICB1c2luZyBzdGQ6Om1ha2VfcGFpcjsNCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElzSW50ZWdlciAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVn
ZXI8Ym9vbD4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGNoYXI+ICAgICAgICAgICAgICAg
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IElzSW50ZWdlcjxzaWduZWQgY2hhcj4gICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQg
Y2hhcj4gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNob3J0PiAgICAgICAgICAgICAgeyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdl
cjx1bnNpZ25lZCBzaG9ydD4gICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8aW50PiAgICAgICAgICAgICAgICB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGludD4gICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxsb25nPiAgICAg
ICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgbG9uZz4gICAgICB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2Vy
PGxvbmcgbG9uZz4gICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+IHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCisNCisgICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVn
ZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U7DQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8dHJ1ZSwgVD4gew0K
KyAgICAgICAgdHlwZWRlZiBUIFRyYWl0VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRyYWl0
czx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRz
Ow0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQor
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7DQorICAg
IH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8ZmFsc2UsIFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUcmFpdFR5cGU7DQorICAgICAgICB0
eXBlZGVmIEhhc2hUcmFpdHM8VD4gU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCisgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jh
c2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4gew0KKyAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIFQoKTsgfQ0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYg
PSBmYWxzZTsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhh
c2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7IH07DQorDQorICAgIC8vIHNpZ25lZCBp
bnRlZ2VyIHRyYWl0cyBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBhbGwgdXNlcyBzaW5jZSB0
aGV5IGRpc2FsbG93IDAgYW5kIC0xIGFzIGtleXMNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxzaWduZWQgY2hhcj4gOiBHZW5lcmljSGFzaFRyYWl0czxpbnQ+IHsNCisgICAgICAg
IHN0YXRpYyBzaWduZWQgY2hhciBkZWxldGVkVmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPHNob3J0PiA6IEdlbmVyaWNIYXNo
VHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIHNob3J0IGRlbGV0ZWRWYWx1ZSgpIHsgcmV0
dXJuIC0xOyB9DQorICAgIH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8aW50
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPGludD4gew0KKyAgICAgICAgc3RhdGljIGludCBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8bG9uZz4gew0KKyAgICAgICAgc3Rh
dGljIGxvbmcgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisgICAgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxsb25nIGxvbmc+IDogR2VuZXJpY0hhc2hUcmFpdHM8
bG9uZyBsb25nPiB7DQorICAgICAgICBzdGF0aWMgbG9uZyBkZWxldGVkVmFsdWUoKSB7IHJldHVy
biAtMTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxQKj4gOiBHZW5lcmljSGFzaFRyYWl0czxQKj4gew0KKyAgICAgICAgdHlwZWRlZiBI
YXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9y
YWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7DQorICAgICAgICBzdGF0aWMgUCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxQKj4oLTEpOyB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBIYXNoVHJhaXRzPFJlZlB0cjxQPiA+IDogR2VuZXJpY0hhc2hUcmFpdHM8UmVmUHRy
PFA+ID4gew0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPHR5cGVuYW1lIEludFR5cGVzPHNp
emVvZihQKik+OjpTaWduZWRUeXBlPiBTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc1JlZiA9IHRydWU7DQorICAgICAgICBzdGF0aWMgdm9pZCByZWYoY29uc3QgUmVm
UHRyPFA+JiBwKSB7IGlmIChwKSBwLT5yZWYoKTsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVy
ZWYoY29uc3QgUmVmUHRyPFA+JiBwKSB7IGlmIChwKSBwLT5kZXJlZigpOyB9DQorICAgIH07DQor
DQorICAgIC8vIHRlbXBsYXRlIHRvIHNldCBkZWxldGVkIHZhbHVlcw0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBEZWxldGVkVmFsdWVBc3NpZ25lciB7DQorICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUodHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5
cGUmIGxvY2F0aW9uKSB7IGxvY2F0aW9uID0gVHJhaXRzOjpkZWxldGVkVmFsdWUoKTsgfQ0KKyAg
ICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGlubGlu
ZSB2b2lkIGFzc2lnbkRlbGV0ZWQoVCYgbG9jYXRpb24pDQorICAgIHsNCisgICAgICAgIERlbGV0
ZWRWYWx1ZUFzc2lnbmVyPFRyYWl0cz46OmFzc2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQor
ICAgIH0NCisNCisgICAgLy8gc3BlY2lhbCB0cmFpdHMgZm9yIHBhaXJzLCBoZWxwZnVsIGZvciB0
aGVpciB1c2UgaW4gSGFzaE1hcCBpbXBsZW1lbnRhdGlvbg0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGaXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPiBzdHJ1Y3QgUGFpckhhc2hU
cmFpdHM7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnLCB0eXBlbmFt
ZSBTZWNvbmRUcmFpdHNBcmc+DQorICAgIHN0cnVjdCBQYWlyQmFzZUhhc2hUcmFpdHMgOiBHZW5l
cmljSGFzaFRyYWl0czxwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5
cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPiA+IHsNCisgICAgICAgIHR5cGVkZWYg
Rmlyc3RUcmFpdHNBcmcgRmlyc3RUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIFNlY29uZFRyYWl0
c0FyZyBTZWNvbmRUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIHBhaXI8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlRyYWl0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+IFRyYWl0
VHlwZTsNCisNCisgICAgICAgIHR5cGVkZWYgUGFpckhhc2hUcmFpdHM8dHlwZW5hbWUgRmlyc3RU
cmFpdHM6OlN0b3JhZ2VUcmFpdHMsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6U3RvcmFnZVRyYWl0
cz4gU3RvcmFnZVRyYWl0czsNCisNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6
OmVtcHR5VmFsdWVJc1plcm87DQorDQorICAgICAgICBzdGF0aWMgVHJhaXRUeXBlIGVtcHR5VmFs
dWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoRmlyc3RUcmFp
dHM6OmVtcHR5VmFsdWUoKSwgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlKCkpOw0KKyAgICAgICAg
fQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlwZW5h
bWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUGFpckhhc2hUcmFpdHMgOiBQYWlyQmFzZUhh
c2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gew0KKyAgICAgICAgdHlwZWRlZiBw
YWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0
czo6VHJhaXRUeXBlPiBUcmFpdFR5cGU7DQorDQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gRmlyc3RUcmFpdHM6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgU2Vjb25k
VHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uOw0KKw0KKyAgICAgICAgc3RhdGljIFRyYWl0VHlwZSBk
ZWxldGVkVmFsdWUoKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBUcmFpdFR5cGUo
Rmlyc3RUcmFpdHM6OmRlbGV0ZWRWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7
DQorICAgICAgICB9DQorDQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUo
VHJhaXRUeXBlJiBsb2NhdGlvbikNCisgICAgICAgIHsNCisgICAgICAgICAgICBhc3NpZ25EZWxl
dGVkPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIEZpcnN0VHJhaXRzPihsb2NhdGlv
bi5maXJzdCk7DQorICAgICAgICAgICAgbG9jYXRpb24uc2Vjb25kID0gU2Vjb25kVHJhaXRzOjpl
bXB0eVZhbHVlKCk7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZpcnN0LCB0eXBlbmFtZSBTZWNvbmQ+DQorICAgIHN0cnVjdCBIYXNoVHJhaXRzPHBhaXI8
Rmlyc3QsIFNlY29uZD4gPiA6IHB1YmxpYyBQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEZpcnN0
PiwgSGFzaFRyYWl0czxTZWNvbmQ+ID4geyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
aXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZh
bHVlQXNzaWduZXI8UGFpckhhc2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4gPg0K
KyAgICB7DQorICAgICAgICBzdGF0aWMgdm9pZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjx0eXBl
bmFtZSBGaXJzdFRyYWl0czo6VHJhaXRUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OlRyYWl0
VHlwZT4mIGxvY2F0aW9uKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIFBhaXJIYXNoVHJhaXRz
PEZpcnN0VHJhaXRzLCBTZWNvbmRUcmFpdHM+Ojphc3NpZ25EZWxldGVkVmFsdWUobG9jYXRpb24p
Ow0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwg
dHlwZW5hbWUgU2Vjb25kPg0KKyAgICBzdHJ1Y3QgRGVsZXRlZFZhbHVlQXNzaWduZXI8SGFzaFRy
YWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID4gPg0KKyAgICB7DQorICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NpZ25EZWxldGVkVmFsdWUocGFpcjxGaXJzdCwgU2Vjb25kPiYgbG9jYXRpb24pDQorICAg
ICAgICB7DQorICAgICAgICAgICAgSGFzaFRyYWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID46OmFz
c2lnbkRlbGV0ZWRWYWx1ZShsb2NhdGlvbik7DQorICAgICAgICB9DQorICAgIH07DQorDQorICAg
IC8vIGhhc3NoIGZ1bmN0aW9ucyBhbmQgdHJhaXRzIHRoYXQgYXJlIGVxdWl2YWxlbnQgKGZvciBj
b2RlIHNoYXJpbmcpDQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IFRyYWl0c0FyZz4gc3RydWN0IEhhc2hLZXlTdG9yYWdlVHJhaXRzIHsNCisgICAgICAgIHR5cGVk
ZWYgSGFzaEFyZyBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBUcmFpdHNBcmcgVHJhaXRzOw0KKyAg
ICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFp
dHM8UHRySGFzaDxQKj4sIEhhc2hUcmFpdHM8UCo+ID4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBJbnRUeXBlczxzaXplb2YoUCopPjo6U2lnbmVkVHlwZSBJbnRUeXBlOw0KKyAgICAgICAg
dHlwZWRlZiBJbnRIYXNoPEludFR5cGU+IEhhc2g7DQorICAgICAgICB0eXBlZGVmIEhhc2hUcmFp
dHM8SW50VHlwZT4gVHJhaXRzOw0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBz
dHJ1Y3QgSGFzaEtleVN0b3JhZ2VUcmFpdHM8UHRySGFzaDxSZWZQdHI8UD4gPiwgSGFzaFRyYWl0
czxSZWZQdHI8UD4gPiA+IHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW50VHlwZXM8c2l6
ZW9mKFAqKT46OlNpZ25lZFR5cGUgSW50VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSW50SGFzaDxJ
bnRUeXBlPiBIYXNoOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPEludFR5cGU+IFRyYWl0
czsNCisgICAgfTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCit1c2luZyBXVEY6Okhhc2hU
cmFpdHM7DQordXNpbmcgV1RGOjpQYWlySGFzaFRyYWl0czsNCisNCisjZW5kaWYgLy8gS1hNTENP
UkVfSEFTSF9UUkFJVFNfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2l0ZXJhdG9y
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlz
aW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvaXRlcmF0b3IJKHJldmlzaW9uIDAp
DQpAQCAtMCwwICsxLDE3MCBAQA0KKy8vIFR5cGVzIHVzZWQgaW4gaXRlcmF0b3IgaW1wbGVtZW50
YXRpb24gLSotIEMrKyAtKi0NCisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8g
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg
dGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u
IDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhj
ZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUN
CisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVy
IGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5l
IGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUg
YW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRo
aXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1
dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBv
dGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkN
CisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENv
cHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQ
ZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMg
c29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhl
cmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRo
YXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisg
KiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBt
YWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhp
cyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIg
d2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHly
aWdodCAoYykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1z
LCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29u
IEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJp
bGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlk
ZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisN
CisvKiogQGZpbGUgc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaA0KKyAqICBUaGlzIGlzIGFuIGlu
dGVybmFsIGhlYWRlciBmaWxlLCBpbmNsdWRlZCBieSBvdGhlciBsaWJyYXJ5IGhlYWRlcnMuDQor
ICogIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gdXNlIGl0IGRpcmVjdGx5Lg0KKyAqDQorICog
IFRoaXMgZmlsZSBjb250YWlucyBhbGwgb2YgdGhlIGdlbmVyYWwgaXRlcmF0b3ItcmVsYXRlZCB1
dGlsaXR5IHR5cGVzLA0KKyAqICBzdWNoIGFzIGl0ZXJhdG9yX3RyYWl0cyBhbmQgc3RydWN0IGl0
ZXJhdG9yLg0KKyAqLw0KKw0KKyNpZm5kZWYgX0lURVJBVE9SX0JBU0VfVFlQRVNfSA0KKyNkZWZp
bmUgX0lURVJBVE9SX0JBU0VfVFlQRVNfSCAxDQorDQorLy8jcHJhZ21hIEdDQyBzeXN0ZW1faGVh
ZGVyDQorDQorbmFtZXNwYWNlIHN0ZA0KK3sNCisgIC8vQHsNCisgIC8qKg0KKyAgICogIEBkZWZn
cm91cCBpdGVyYXRvcl90YWdzIEl0ZXJhdG9yIFRhZ3MNCisgICAqICBUaGVzZSBhcmUgZW1wdHkg
dHlwZXMsIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGl0ZXJhdG9ycy4gIFRoZQ0KKyAg
ICogIGRpc3RpbmN0aW9uIGlzIG5vdCBtYWRlIGJ5IHdoYXQgdGhleSBjb250YWluLCBidXQgc2lt
cGx5IGJ5IHdoYXQgdGhleQ0KKyAgICogIGFyZS4gIERpZmZlcmVudCB1bmRlcmx5aW5nIGFsZ29y
aXRobXMgY2FuIHRoZW4gYmUgdXNlZCBiYXNlZCBvbiB0aGUNCisgICAqICBkaWZmZXJlbnQgb3Bl
cmF0aW9ucyBzdXBwb3JldGQgYnkgZGlmZmVyZW50IGl0ZXJhdG9yIHR5cGVzLg0KKyAgKi8NCisg
IC8vLyAgTWFya2luZyBpbnB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9Ow0KKyAgLy8vICBNYXJraW5nIG91dHB1dCBpdGVyYXRvcnMuDQorICBzdHJ1Y3Qgb3V0
cHV0X2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vLyBGb3J3YXJkIGl0ZXJhdG9ycyBzdXBwb3J0IGEg
c3VwZXJzZXQgb2YgaW5wdXQgaXRlcmF0b3Igb3BlcmF0aW9ucy4NCisgIHN0cnVjdCBmb3J3YXJk
X2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcge307DQorICAvLy8gQmlk
aXJlY3Rpb25hbCBpdGVyYXRvcnMgc3VwcG9ydCBhIHN1cGVyc2V0IG9mIGZvcndhcmQgaXRlcmF0
b3INCisgIC8vLyBvcGVyYXRpb25zLg0KKyAgc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9Ow0KKyAgLy8vIFJhbmRvbS1hY2Nl
c3MgaXRlcmF0b3JzIHN1cHBvcnQgYSBzdXBlcnNldCBvZiBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9y
DQorICAvLy8gb3BlcmF0aW9ucy4NCisgIHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vQH0NCisNCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgQ29tbW9uICVpdGVyYXRvciBjbGFzcy4NCisgICAqDQor
ICAgKiAgVGhpcyBjbGFzcyBkb2VzIG5vdGhpbmcgYnV0IGRlZmluZSBuZXN0ZWQgdHlwZWRlZnMu
ICAlSXRlcmF0b3IgY2xhc3Nlcw0KKyAgICogIGNhbiBpbmhlcml0IGZyb20gdGhpcyBjbGFzcyB0
byBzYXZlIHNvbWUgd29yay4gIFRoZSB0eXBlZGVmcyBhcmUgdGhlbg0KKyAgICogIHVzZWQgaW4g
c3BlY2lhbGl6YXRpb25zIGFuZCBvdmVybG9hZGluZy4NCisgICAqDQorICAgKiAgSW4gcGFydGlj
dWxhciwgdGhlcmUgYXJlIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHJlcXVpcmVtZW50
cw0KKyAgICogIHN1Y2ggYXMgQGMgb3BlcmF0b3IrKyBhbmQgdGhlIGxpa2UuICAoSG93IGNvdWxk
IHRoZXJlIGJlPykNCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2F0ZWdvcnksIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0gcHRyZGlmZl90LA0KKyAgICAgICAgICAgdHlw
ZW5hbWUgX1BvaW50ZXIgPSBfVHAqLCB0eXBlbmFtZSBfUmVmZXJlbmNlID0gX1RwJj4NCisgICAg
c3RydWN0IGl0ZXJhdG9yDQorICAgIHsNCisgICAgICAvLy8gT25lIG9mIHRoZSBAbGluayBpdGVy
YXRvcl90YWdzIHRhZyB0eXBlc0BlbmRsaW5rLg0KKyAgICAgIHR5cGVkZWYgX0NhdGVnb3J5ICBp
dGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICAvLy8gVGhlIHR5cGUgInBvaW50ZWQgdG8iIGJ5IHRo
ZSBpdGVyYXRvci4NCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlwZTsNCisgICAg
ICAvLy8gRGlzdGFuY2UgYmV0d2VlbiBpdGVyYXRvcnMgaXMgcmVwcmVzZW50ZWQgYXMgdGhpcyB0
eXBlLg0KKyAgICAgIHR5cGVkZWYgX0Rpc3RhbmNlICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAg
Ly8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgcG9pbnRlci10by12YWx1ZV90eXBlLg0KKyAgICAg
IHR5cGVkZWYgX1BvaW50ZXIgICBwb2ludGVyOw0KKyAgICAgIC8vLyBUaGlzIHR5cGUgcmVwcmVz
ZW50cyBhIHJlZmVyZW5jZS10by12YWx1ZV90eXBlLg0KKyAgICAgIHR5cGVkZWYgX1JlZmVyZW5j
ZSByZWZlcmVuY2U7DQorICAgIH07DQorDQorICAvKioNCisgICAqICBUaGlzIGNsYXNzIGRvZXMg
bm90aGluZyBidXQgZGVmaW5lIG5lc3RlZCB0eXBlZGVmcy4gIFRoZSBnZW5lcmFsDQorICAgKiAg
dmVyc2lvbiBzaW1wbHkgImZvcndhcmRzIiB0aGUgbmVzdGVkIHR5cGVkZWZzIGZyb20gdGhlIEl0
ZXJhdG9yDQorICAgKiAgYXJndW1lbnQuICBTcGVjaWFsaXplZCB2ZXJzaW9ucyBmb3IgcG9pbnRl
cnMgYW5kIHBvaW50ZXJzLXRvLWNvbnN0DQorICAgKiAgcHJvdmlkZSB0aWdodGVyLCBtb3JlIGNv
cnJlY3Qgc2VtYW50aWNzLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4N
CisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0cw0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5Ow0KKyAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUg
ICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBv
aW50ZXIgICAgICAgICAgIHBvaW50ZXI7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0
b3I6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPg0KKyAgICB7
DQorICAgICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsNCisgICAgICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsNCisgICAgICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyOw0KKyAgICAgIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsNCisgICAgfTsNCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxjb25zdCBfVHAqPg0KKyAgICB7DQorICAgICAgdHlwZWRlZiByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICB0eXBlZGVmIF9U
cCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOw0KKyAgICAgIHR5cGVkZWYgcHRy
ZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsNCisgICAgICB0eXBlZGVm
IGNvbnN0IF9UcCogICAgICAgICAgICAgICAgICBwb2ludGVyOw0KKyAgICAgIHR5cGVkZWYgY29u
c3QgX1RwJiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsNCisgICAgfTsNCisNCisgIC8qKg0K
KyAgICogIEBpZiBtYWludA0KKyAgICogIFRoaXMgZnVuY3Rpb24gaXMgbm90IGEgcGFydCBvZiB0
aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyBzeW50YWN0aWMNCisgICAqICBzdWdhciBmb3IgaW50ZXJu
YWwgbGlicmFyeSB1c2Ugb25seS4NCisgICAqICBAZW5kaWYNCisgICovDQorICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcj4NCisgICAgaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRl
cj46Oml0ZXJhdG9yX2NhdGVnb3J5DQorICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0
ZXImKQ0KKyAgICB7IHJldHVybiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVy
YXRvcl9jYXRlZ29yeSgpOyB9DQorDQorfSAvLyBuYW1lc3BhY2Ugc3RkDQorDQorI2VuZGlmIC8q
IF9JVEVSQVRPUl9CQVNFX1RZUEVTX0ggKi8NCisNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9uZXcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9uZXcJKHJl
dmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbmV3CShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSBAQA0KKyNpbmNsdWRlIDxlMzJjbW4uaD4NClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNvYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsNyArMjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KICNpbmNsdWRlIDxOUF9qc29iamVjdC5oPgogCkBAIC0zNSwxNSArMzUsMTUgQEANCiAKIHN0
YXRpYyBLSlM6Okxpc3QgbGlzdEZyb21WYXJpYW50QXJncyhLSlM6OkV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgTlBWYXJpYW50ICphcmdzLCB1bnNpZ25lZCBhcmdDb3VudCkKIHsKLSAgICBLSlM6Okxp
c3QgYUxpc3Q7IAorICAgIEtKUzo6TGlzdCBhTGlzdDsKICAgICB1bnNpZ25lZCBpOwogICAgIGNv
bnN0IE5QVmFyaWFudCAqdiA9IGFyZ3M7Ci0gICAgCisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJn
Q291bnQ7IGkrKykgewogICAgICAgICBhTGlzdC5hcHBlbmQgKGNvbnZlcnROUFZhcmlhbnRUb1Zh
bHVlIChleGVjLCB2KSk7CiAgICAgICAgIHYrKzsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
YUxpc3Q7CiB9CiAKQEAgLTU3LDEwICs1NywxMCBAQA0KICAgICBmcmVlIChvYmopOwogfQogCi1z
dGF0aWMgTlBDbGFzcyBfamF2YXNjcmlwdENsYXNzID0geyAKK3N0YXRpYyBOUENsYXNzIF9qYXZh
c2NyaXB0Q2xhc3MgPSB7CiAgICAgMSwKLSAgICBqc0FsbG9jYXRlLCAKLSAgICAoTlBEZWFsbG9j
YXRlRnVuY3Rpb25QdHIpanNEZWFsbG9jYXRlLCAKKyAgICBqc0FsbG9jYXRlLAorICAgIChOUERl
YWxsb2NhdGVGdW5jdGlvblB0cilqc0RlYWxsb2NhdGUsCiAgICAgMCwKICAgICAwLAogICAgIDAs
CkBAIC03MywxMjcgKzczLDEzMCBAQA0KIAogTlBDbGFzcyAqTlBTY3JpcHRPYmplY3RDbGFzcyA9
ICZfamF2YXNjcmlwdENsYXNzOwogCi1zdGF0aWMgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5Q
SWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpCi17Ci0gICAgTlBVVEYxNiAqbWV0aG9kTmFt
ZTsKLSAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7Ci0gICAgCi0gICAgY29udmVydFVURjhU
b1VURjE2IChuYW1lLCAtMSwgJm1ldGhvZE5hbWUsICZVVEYxNkxlbmd0aCk7IC8vIHJlcXVpcmVz
IGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCi0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyICgo
Y29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOwotICAgIGZyZWUgKCh2
b2lkICopbWV0aG9kTmFtZSk7Ci0gICAgCi0gICAgcmV0dXJuIGlkZW50aWZpZXI7Ci19CiAKIHN0
YXRpYyBib29sIF9pc1NhZmVTY3JpcHQoSmF2YVNjcmlwdE9iamVjdCAqb2JqKQogewogICAgIGlm
IChvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQpIHsKLQlJbnRlcnByZXRlciAqb3JpZ2luSW50
ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCk7Ci0J
aWYgKG9yaWdpbkludGVycHJldGVyKSB7Ci0JICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+
aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwotCX0K
KyAgICBJbnRlcnByZXRlciAqb3JpZ2luSW50ZXJwcmV0ZXIgPSBvYmotPm9yaWdpbkV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCk7CisgICAgaWYgKG9yaWdpbkludGVycHJldGVyKSB7Cisg
ICAgICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCkpOwogICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK0VYUE9SVF9DCiBOUE9iamVjdCAqX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKE5Q
UCBucHAsIEtKUzo6T2JqZWN0SW1wICppbXAsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKmV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEph
dmFTY3JpcHRPYmplY3QgKilfTlBOX0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xh
c3MpOworICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopTlBO
X0NyZWF0ZU9iamVjdChucHAsIE5QU2NyaXB0T2JqZWN0Q2xhc3MpOwogCiAgICAgb2JqLT5pbXAg
PSBpbXA7Ci0gICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsgICAgCi0gICAgb2JqLT5leGVjdXRpb25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4
dDsgICAgCisgICAgb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0ID0gb3JpZ2luRXhlY3V0aW9u
Q29udGV4dDsKKyAgICBvYmotPmV4ZWN1dGlvbkNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0Owog
CiAgICAgYWRkTmF0aXZlUmVmZXJlbmNlIChleGVjdXRpb25Db250ZXh0LCBpbXApOwotICAgIAor
CiAgICAgcmV0dXJuIChOUE9iamVjdCAqKW9iajsKIH0KIAotYm9vbCBfTlBOX0ludm9rZURlZmF1
bHQgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90
IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKK0VYUE9SVF9DCitib29sIE5QTl9JbnZva2VE
ZWZhdWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50
MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9
PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAgIC8vIE5vIG5vdGlvbiBvZiBhIGRlZmF1
bHQgZnVuY3Rpb24gb24gSlMgb2JqZWN0cy4gIEp1c3QgcmV0dXJuIGZhbHNlLCBjYW4ndCBoYW5k
bGUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2Jq
ID0gKEphdmFTY3JpcHRPYmplY3QgKilvOworICAgICAgICBPYmplY3RJbXAgKmZ1bmNJbXAgPSBv
YmotPmltcDsKKyAgICAgICAgaWYgKCFmdW5jSW1wLT5pbXBsZW1lbnRzQ2FsbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1
dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgT2JqZWN0
IHRoaXNPYmogPSBPYmplY3QoY29uc3RfY2FzdDxPYmplY3RJbXAqPihvYmotPmltcCkpOworICAg
ICAgICBMaXN0IGFyZ0xpc3QgPSBsaXN0RnJvbVZhcmlhbnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0Nv
dW50KTsKKyAgICAgICAgVmFsdWUgcmVzdWx0ViA9IE9iamVjdChmdW5jSW1wKS5jYWxsIChleGVj
LCB0aGlzT2JqLCBhcmdMaXN0KTsKKworICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhl
IHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgY29udmVydFZhbHVlVG9OUFZh
cmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGVsc2UgewogICAgICAgICBpZiAoby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KSB7CiAg
ICAgICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5pbnZva2VEZWZhdWx0IChvLCBhcmdzLCBhcmdD
b3VudCwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIF9OUE5fSW52b2tlIChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQs
IE5QVmFyaWFudCAqcmVzdWx0KQorRVhQT1JUX0MKK2Jvb2wgTlBOX0ludm9rZSAoTlBQIG5wcCwg
TlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFy
Z3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKIHsKICAgICBpZiAoby0+
X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVj
dCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAgCi0JaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKLQkgICAgCisgICAgICAgIEphdmFTY3Jp
cHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKKworICAgIGlmICghX2lzU2Fm
ZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgUHJpdmF0ZUlk
ZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKiltZXRob2ROYW1lOwogICAgICAgICBp
ZiAoIWktPmlzU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Ci0JLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgotCWlmIChtZXRob2ROYW1lID09
IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcigiZXZhbCIpKSB7Ci0JICAgIGlmIChhcmdDb3VudCAh
PSAxKQotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIGlmIChhcmdzWzBdLnR5cGUgIT0gTlBWYXJpYW50
VHlwZV9TdHJpbmcpCi0JCXJldHVybiBmYWxzZTsKLQkgICAgCi0JICAgIHJldHVybiBfTlBOX0V2
YWx1YXRlIChucHAsIG8sIChOUFN0cmluZyAqKSZhcmdzWzBdLnZhbHVlLnN0cmluZ1ZhbHVlLCBy
ZXN1bHQpOwotCX0KLQllbHNlIHsKLQkgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBvYmplY3Qu
Ci0JICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0
ZXIoKS0+Z2xvYmFsRXhlYygpOwotCSAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKLQkgICAgVmFs
dWUgZnVuYyA9IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZykpOwogCi0JICAgIGlmIChmdW5jLmlzTnVsbCgpKSB7Ci0JCU5QTl9J
bml0aWFsaXplVmFyaWFudEFzTnVsbChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0g
ZWxzZSBpZiAoZnVuYy50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkgewotCQlOUE5fSW5pdGlhbGl6
ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOwotCQlyZXR1cm4gZmFsc2U7Ci0JICAgIH0gZWxz
ZSB7Ci0JCS8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KLQkJT2JqZWN0SW1wICpmdW5jSW1w
ID0gc3RhdGljX2Nhc3Q8T2JqZWN0SW1wKj4oZnVuYy5pbXAoKSk7Ci0JCU9iamVjdCB0aGlzT2Jq
ID0gT2JqZWN0KGNvbnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKLQkJTGlzdCBhcmdM
aXN0ID0gbGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCk7Ci0JCVZhbHVl
IHJlc3VsdFYgPSBPYmplY3QoZnVuY0ltcCkuY2FsbCAoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7
CisgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLgorICAgIGlmIChtZXRob2RO
YW1lID09IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKCJldmFsIikpIHsKKyAgICAgICAgaWYgKGFy
Z0NvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3NbMF0u
dHlwZSAhPSBOUFZhcmlhbnRUeXBlX1N0cmluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0J
CS8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgot
CQljb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwotCQlyZXR1
cm4gdHJ1ZTsKLQkgICAgfQotCX0KKyAgICAgICAgcmV0dXJuIE5QTl9FdmFsdWF0ZSAobnBwLCBv
LCAoTlBTdHJpbmcgKikmYXJnc1swXS52YWx1ZS5zdHJpbmdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICAgIC8vIExvb2t1cCB0aGUgZnVuY3Rpb24gb2JqZWN0LgorICAg
ICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVy
KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CisgICAgICAg
IFZhbHVlIGZ1bmMgPSBvYmotPmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRp
ZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKKworICAgICAgICBpZiAoZnVuYy5pc051bGwoKSkgewor
ICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc051bGwocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGZ1bmMudHlwZSgpID09IFVuZGVmaW5lZFR5
cGUpIHsKKyAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNVbmRlZmluZWQocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAvLyBDYWxs
IHRoZSBmdW5jdGlvbiBvYmplY3QuCisgICAgICAgIE9iamVjdEltcCAqZnVuY0ltcCA9IHN0YXRp
Y19jYXN0PE9iamVjdEltcCo+KGZ1bmMuaW1wKCkpOworICAgICAgICBPYmplY3QgdGhpc09iaiA9
IE9iamVjdChjb25zdF9jYXN0PE9iamVjdEltcCo+KG9iai0+aW1wKSk7CisgICAgICAgIExpc3Qg
YXJnTGlzdCA9IGxpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQpOworICAg
ICAgICBWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXApLmNhbGwgKGV4ZWMsIHRoaXNPYmos
IGFyZ0xpc3QpOworCisgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9m
IHRoZSBmdW5jdGlvbiBjYWxsLgorICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCByZXN1bHRWLCByZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KICAgICB9IGVsc2UgaWYgKG8tPl9jbGFzcy0+aW52b2tlKQogICAgICAgICByZXR1cm4gby0+
X2NsYXNzLT5pbnZva2UgKG8sIG1ldGhvZE5hbWUsIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOwot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgX05QTl9FdmFsdWF0ZSAoTlBQIG5w
cCwgTlBPYmplY3QgKm8sIE5QU3RyaW5nICpzLCBOUFZhcmlhbnQgKnZhcmlhbnQpCitFWFBPUlRf
QworYm9vbCBOUE5fRXZhbHVhdGUgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUFN0cmluZyAqcywg
TlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmpl
Y3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9i
amVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnBy
ZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIE9iamVjdCB0aGlzT2JqID0gT2JqZWN0KGNv
bnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKICAgICAgICAgVmFsdWUgcmVzdWx0Owot
ICAgICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgTlBVVEYx
NiAqc2NyaXB0U3RyaW5nOwogICAgICAgICB1bnNpZ25lZCBpbnQgVVRGMTZMZW5ndGg7CiAgICAg
ICAgIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYgKHMsICZzY3JpcHRTdHJpbmcsICZVVEYxNkxlbmd0
aCk7ICAgIC8vIHJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuCiAgICAgICAgIENv
bXBsZXRpb24gY29tcGxldGlvbiA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+ZXZhbHVhdGUoVVN0cmluZygpLCAwLCBVU3RyaW5nKChjb25zdCBVQ2hhciAqKXNjcmlwdFN0
cmluZyxVVEYxNkxlbmd0aCkpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24u
Y29tcGxUeXBlKCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0eXBlID09IE5vcm1hbCkgewog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcGxldGlvbi52YWx1ZSgpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkgewpAQCAtMjAyLDIzICsyMDUsMjQgQEANCiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gVW5kZWZpbmVkKCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBmcmVlICgodm9pZCAqKXNjcmlwdFN0cmluZyk7Ci0gICAgICAgIAorCiAg
ICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdCwgdmFyaWFudCk7Ci0g
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBfTlBOX0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MKK2Jvb2wgTlBO
X0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3Jp
cHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNj
cmlwdE9iamVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5p
bnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAKQEAgLTIzNSwxNCArMjM5LDE0IEBADQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgVmFsdWUgcmVz
dWx0OwogICAgICAgICBpZiAoaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBvYmot
PmltcC0+Z2V0IChleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJp
bmcpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5pbXAtPmdldCAo
ZXhlYywgaS0+dmFsdWUubnVtYmVyKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHJlc3VsdC5p
c051bGwoKSkgewogICAgICAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50QXNOdWxsKHZhcmlh
bnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY4LDEzICsyNzIsMTQgQEANCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIF9OUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5Q
T2JqZWN0ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZh
cmlhbnQpCitFWFBPUlRfQworYm9vbCBOUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0
ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKICAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxvY2s7CkBAIC0yODMsNyArMjg4LDcgQEANCiAg
ICAgICAgICAgICBvYmotPmltcC0+cHV0KGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGktPnZhbHVlLnN0cmluZyksIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPnB1dChleGVjLCBpLT52YWx1
ZS5udW1iZXIsIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQpKTsKLSAgICAg
ICAgCisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPnNl
dFByb3BlcnR5KQogICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAobywgcHJv
cGVydHlOYW1lLCB2YXJpYW50KTsKQEAgLTI5MSwxMyArMjk2LDE0IEBADQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAq
bywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9DCitib29sIE5QTl9SZW1vdmVQ
cm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAg
IEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICgh
X2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsKIApAQCAtMzE4LDE5ICszMjQsMjAgQEANCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRl
UHJvcGVydHkgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmlu
ZykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+ZGVsZXRlUHJvcGVydHkg
KGV4ZWMsIGktPnZhbHVlLm51bWJlcik7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgX05QTl9IYXNQcm9wZXJ0eShO
UFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK0VYUE9SVF9D
Citib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xh
c3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOyAKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3Qg
KilvOwogCi0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIo
KS0+Z2xvYmFsRXhlYygpOwogCkBAIC0zMzksMjYgKzM0NiwyNyBAQA0KIAogICAgICAgICBpZiAo
aS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4
ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmluZykpOwotICAgICAg
ICAKKwogICAgICAgICByZXR1cm4gb2JqLT5pbXAtPmhhc1Byb3BlcnR5KGV4ZWMsIGktPnZhbHVl
Lm51bWJlcik7CiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPmhhc1Byb3BlcnR5KQogICAgICAg
ICByZXR1cm4gby0+X2NsYXNzLT5oYXNQcm9wZXJ0eSAobywgcHJvcGVydHlOYW1lKTsKLSAgICAK
KwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBfTlBOX0hhc01ldGhvZChOUFAgbnBwLCBO
UE9iamVjdCAqbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCitFWFBPUlRfQworYm9vbCBOUE5f
SGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
IHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKLSAgICAgICAg
Ci0JaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOwogCisgICAgaWYg
KCFfaXNTYWZlU2NyaXB0KG9iaikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKW1ldGhvZE5hbWU7CiAg
ICAgICAgIGlmICghaS0+aXNTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAvLyBMb29rdXAgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAg
ICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigp
LT5nbG9iYWxFeGVjKCk7CiAKQEAgLTM2OCwyMSArMzc2LDIyIEBADQogICAgICAgICBpZiAoZnVu
Yy5pc051bGwoKSB8fCBmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAorCiAgICAgZWxzZSBpZiAoby0+X2NsYXNzLT5oYXNNZXRob2QpIHsK
ICAgICAgICAgcmV0dXJuIG8tPl9jbGFzcy0+aGFzTWV0aG9kIChvLCBtZXRob2ROYW1lKTsKICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRp
b24gKE5QT2JqZWN0ICpvLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpCitFWFBPUlRfQwordm9pZCBO
UE5fU2V0RXhjZXB0aW9uIChOUE9iamVjdCAqbywgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogewog
ICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZh
U2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87CiAgICAgICAgIEV4ZWNT
dGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFs
RXhlYygpOwogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgT2JqZWN0IGVy
ciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDUsNiArNDUsNyBAQA0KICAgICBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVj
dXRpb25Db250ZXh0OwogfSBKYXZhU2NyaXB0T2JqZWN0OwogCitJTVBPUlRfQwogTlBPYmplY3Qg
Kl9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IChOUFAgbnBwLCBLSlM6Ok9iamVjdEltcCAqaW1wLCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW5FeGVjdXRpb25Db250ZXh0LCBj
b25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0KTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucGFwaS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkocmV2aXNpb24g
MTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTEsMTAgKzEsMTEgQEANCisvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRl
bnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwogLyogKioqKiogQkVH
SU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwg
Mi4xCisgKiBWZXJzaW9uOiBOUEwgMS4xL0dQTCAyLjAvTEdQTCAyLjEKICAqCi0gKiBUaGUgY29u
dGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNl
bnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAotICogdGhlIExpY2Vuc2UuIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9NUEwvCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBO
ZXRzY2FwZSBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvTlBMLwogICoKICAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCiAgKiBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBT
ZWUgdGhlIExpY2Vuc2UKQEAgLTE5LDExMSArMjAsMjEwIEBADQogICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIENvbnRyaWJ1dG9yKHMpOgorICog
ICAgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIE5va2lhIENvcnBvcmF0aW9uCiAg
KgorICoKICAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJl
IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKICAqIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAi
TEdQTCIpLAogICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRo
ZSBMR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKICAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ug
d2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CiAgKiB1
bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8g
YWxsb3cgb3RoZXJzIHRvCi0gKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogdXNlIHlvdXIgdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBOUEwsIGluZGljYXRlIHlvdXIKICAq
IGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRo
ZW0gd2l0aCB0aGUgbm90aWNlCiAgKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0
aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQogICogdGhlIHByb3Zpc2lv
bnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1
bmRlcgotICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUg
TEdQTC4KKyAqIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZSBOUEwsIHRoZSBHUEwgb3IgdGhl
IExHUEwuCiAgKgogICogKioqKiogRU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8KLSAKLSAKLSAv
KgotICAqICBOZXRzY2FwZSBjbGllbnQgcGx1Zy1pbiBBUEkgc3BlYwotICAqLwotIAogCisvKiBO
T1RFUzoKKyAqIE5va2lhIG1vZGlmaWVkIHRoaXMgZmlsZSwgYnkgY2hhbmdpbmcgY2VydGFpbiB2
YXJpYWJsZXMgZm9yIHRoZSBwdXJwb3NlIG9mCisgKiBwb3J0aW5nIHRoZSBmaWxlIHRvIHRoZSBT
eW1iaWFuIHBsYXRmb3JtIG9uIE1heSAxc3QsIDIwMDQuCisgKi8KKworCisvKgorICogIG5wYXBp
LmggJFJldmlzaW9uJAorICogIE5ldHNjYXBlIGNsaWVudCBwbHVnLWluIEFQSSBzcGVjCisgKi8K
KwogI2lmbmRlZiBfTlBBUElfSF8KICNkZWZpbmUgX05QQVBJX0hfCiAKLSNpZmRlZiBJTkNMVURF
X0pBVkEKKyNpZmRlZiBfX09TMl9fCisjcHJhZ21hIHBhY2soMSkKKyNlbmRpZgorCisjaW5jbHVk
ZSAicHJ0eXBlcy5oIgorLyogQ29waWVkIGZyb20geHBfY29yZS5oICovCisvKiByZW1vdmVkICNp
ZmRlZiBmb3IgaHB1eCBkZWZpbmVkIGluIC91c3IvaW5jbHVkZS9tb2RlbC5oICovCisjaWZuZGVm
IFhQX01BQworI2lmbmRlZiBfSU5UMTYKKyNkZWZpbmUgX0lOVDE2CisjZW5kaWYKKyNpZm5kZWYg
X0lOVDMyCisjZGVmaW5lIF9JTlQzMgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMTYKKyNkZWZpbmUg
X1VJTlQxNgorI2VuZGlmCisjaWZuZGVmIF9VSU5UMzIKKyNkZWZpbmUgX1VJTlQzMgorI2VuZGlm
CisjZW5kaWYKKworLyoKKyAqIE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVz
aW9uCisgKiBvZiBvYnNvbGV0ZS9wcm90eXBlcy5oLCB3aG9zZSBpbnQxNiwgdWludDE2LAorICog
aW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0aCB0aG9zZQorICogaW4gdGhp
cyBmaWxlLgorICovCisjaWZuZGVmIE5PX05TUFJfMTBfU1VQUE9SVAorI2RlZmluZSBOT19OU1BS
XzEwX1NVUFBPUlQKKyNlbmRpZgorI2lmZGVmIE9KSQogI2luY2x1ZGUgImpyaS5oIiAgICAgICAg
ICAgICAgICAvKiBKYXZhIFJ1bnRpbWUgSW50ZXJmYWNlICovCi0jZWxzZQotI2RlZmluZSBqcmVm
ICAgIHZvaWQgKgotI2RlZmluZSBKUklFbnYgIHZvaWQKICNlbmRpZgogCisjaWYgZGVmaW5lZCAo
X19PUzJfXyApIHx8IGRlZmluZWQgKE9TMikKKyMgaWZuZGVmIFhQX09TMgorIyAgIGRlZmluZSBY
UF9PUzIgMQorIyBlbmRpZiAvKiBYUF9PUzIgKi8KKyNlbmRpZiAvKiBfX09TMl9fICovCisKICNp
ZmRlZiBfV0lORE9XUwotIyAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICBkZWZpbmUgWFBfV0lO
IDEKLSMgICAgZW5kaWYgLyogWFBfV0lOICovCisjIGluY2x1ZGUgPHdpbmRlZi5oPgorIyBpZm5k
ZWYgWFBfV0lOCisjICAgZGVmaW5lIFhQX1dJTiAxCisjIGVuZGlmIC8qIFhQX1dJTiAqLwogI2Vu
ZGlmIC8qIF9XSU5ET1dTICovCiAKICNpZmRlZiBfX01XRVJLU19fCi0jICAgIGRlZmluZSBfZGVj
bHNwZWMgX19kZWNsc3BlYwotIyAgICBpZmRlZiBtYWNpbnRvc2gKLSMgICAgICAgIGlmbmRlZiBY
UF9NQUMKLSMgICAgICAgICAgICBkZWZpbmUgWFBfTUFDIDEKLSMgICAgICAgIGVuZGlmIC8qIFhQ
X01BQyAqLwotIyAgICBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KLSMgICAgaWZkZWYgX19JTlRFTF9f
Ci0jICAgICAgICB1bmRlZiBOVUxMCi0jICAgICAgICBpZm5kZWYgWFBfV0lOCi0jICAgICAgICAg
ICAgZGVmaW5lIFhQX1dJTiAxCi0jICAgICAgICBlbmRpZiAvKiBfX0lOVEVMX18gKi8KLSMgICAg
ZW5kaWYgLyogWFBfUEMgKi8KKyMgZGVmaW5lIF9kZWNsc3BlYyBfX2RlY2xzcGVjCisjIGlmZGVm
IG1hY2ludG9zaAorIyAgIGlmbmRlZiBYUF9NQUMKKyMgICAgIGRlZmluZSBYUF9NQUMgMQorIyAg
IGVuZGlmIC8qIFhQX01BQyAqLworIyBlbmRpZiAvKiBtYWNpbnRvc2ggKi8KKyMgaWZkZWYgX19J
TlRFTF9fCisjICAgdW5kZWYgTlVMTAorIyAgIGlmbmRlZiBYUF9XSU4KKyMgICAgIGRlZmluZSBY
UF9XSU4gMQorIyAgIGVuZGlmIC8qIFhQX1dJTiAqLworIyBlbmRpZiAvKiBfX0lOVEVMX18gKi8K
ICNlbmRpZiAvKiBfX01XRVJLU19fICovCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYg
IWRlZmluZWQoX19NQUNPU19DTEFTU0lDX18pCi0jICAgZGVmaW5lIFhQX01BQ09TWAorI2lmbmRl
ZiBfX1NZTUJJQU4zMl9fCisjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NY
KQorICAjaW5jbHVkZSA8UXVpY2tkcmF3Lmg+CisgICNpbmNsdWRlIDxFdmVudHMuaD4KICNlbmRp
ZgogCi0jaWZkZWYgWFBfTUFDCi0gICAgI2luY2x1ZGUgPFF1aWNrZHJhdy5oPgotICAgICNpbmNs
dWRlIDxFdmVudHMuaD4KKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjIGluY2x1ZGUgPHN0ZGlvLmg+
CisjIGlmIGRlZmluZWQoTU9aX1gxMSkKKyMgICBpbmNsdWRlIDxYMTEvWGxpYi5oPgorIyAgIGlu
Y2x1ZGUgPFgxMS9YdXRpbC5oPgorIyBlbmRpZgogI2VuZGlmCi0KLSNpZmRlZiBYUF9NQUNPU1gK
LSAgICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotICAgICNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNlbHNlCitjbGFzcyBURGVzQzg7Citj
bGFzcyBURGVzQzE2OworY2xhc3MgSEJ1ZkMxNjsKK2NsYXNzIENEZXNDQXJyYXk7CisjaW5jbHVk
ZSA8ZTMyZGVmLmg+CiAjZW5kaWYKIAotI2lmZGVmIFhQX1VOSVgKLSAgICAjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KLSAgICAjaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jZW5kaWYKLQotCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwotLyogICAgICAgICAgICAgUGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
UGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwogCiAjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMAotI2RlZmluZSBOUF9WRVJT
SU9OX01JTk9SIDE0CisjZGVmaW5lIE5QX1ZFUlNJT05fTUlOT1IgMTMKIAogCisvKiBUaGUgT1Mv
MiB2ZXJzaW9uIG9mIE5ldHNjYXBlIHVzZXMgUkNfREFUQSB0byBkZWZpbmUgdGhlCisgICBtaW1l
IHR5cGVzLCBmaWxlIGV4dGVudGlvbnMsIGV0YyB0aGF0IGFyZSByZXF1aXJlZC4KKyAgIFVzZSBh
IHZlcnRpY2FsIGJhciB0byBzZXBhcmF0ZSB0eXBlcywgZW5kIHR5cGVzIHdpdGggXDAuCisgICBG
aWxlVmVyc2lvbiBhbmQgUHJvZHVjdFZlcnNpb24gYXJlIDMyYml0IGludHMsIGFsbCBvdGhlcgor
ICAgZW50cmllcyBhcmUgc3RyaW5ncyB0aGUgTVVTVCBiZSB0ZXJtaW5hdGVkIHd3aXRoIGEgXDAu
CiAKK0FOIEVYQU1QTEU6CisKK1JDREFUQSBOUF9JTkZPX1Byb2R1Y3RWZXJzaW9uIHsgMSwwLDAs
MSx9CisKK1JDREFUQSBOUF9JTkZPX01JTUVUeXBlICAgIHsgInZpZGVvL3gtdmlkZW98IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpZGVvL3gtZmxpY2tcMCIgfQorUkNEQVRBIE5Q
X0lORk9fRmlsZUV4dGVudHMgeyAiYXZpfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmbGNcMCIgfQorUkNEQVRBIE5QX0lORk9fRmlsZU9wZW5OYW1leyAiTU1PUzIgdmlkZW8gcGxh
eWVyKCouYXZpKXwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTU1PUzIgRmxjL0Zs
aSBwbGF5ZXIoKi5mbGMpXDAiIH0KKworUkNEQVRBIE5QX0lORk9fRmlsZVZlcnNpb24gICAgICAg
eyAxLDAsMCwxIH0KK1JDREFUQSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgIHsgIk5ldHNjYXBl
IENvbW11bmljYXRpb25zXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVEZXNjcmlwdGlvbiAgIHsg
Ik5QQVZJMzIgRXh0ZW5zaW9uIERMTFwwIgorUkNEQVRBIE5QX0lORk9fSW50ZXJuYWxOYW1lICAg
ICAgeyAiTlBBVkkzMlwwIiApCitSQ0RBVEEgTlBfSU5GT19MZWdhbENvcHlyaWdodCAgICB7ICJD
b3B5cmlnaHQgTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgXDI1MSAxOTk2XDAiCitSQ0RBVEEgTlBf
SU5GT19PcmlnaW5hbEZpbGVuYW1lICB7ICJOVkFQSTMyLkRMTCIgfQorUkNEQVRBIE5QX0lORk9f
UHJvZHVjdE5hbWUgICAgICAgeyAiTlBBVkkzMiBEeW5hbWljIExpbmsgTGlicmFyeVwwIiB9CisK
KyovCisKKworLyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gcmVxdWlyZWQgKi8K
KyNkZWZpbmUgTlBfSU5GT19Qcm9kdWN0VmVyc2lvbiAgICAgIDEKKyNkZWZpbmUgTlBfSU5GT19N
SU1FVHlwZSAgICAgICAgICAgIDIKKyNkZWZpbmUgTlBfSU5GT19GaWxlT3Blbk5hbWUgICAgICAg
IDMKKyNkZWZpbmUgTlBfSU5GT19GaWxlRXh0ZW50cyAgICAgICAgIDQKKworLyogUkNfREFUQSB0
eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLworI2RlZmluZSBOUF9JTkZP
X0ZpbGVEZXNjcmlwdGlvbiAgICAgNQorI2RlZmluZSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAg
ICAgNgorCisvKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSBvcHRpb25hbCAqLwor
I2RlZmluZSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgICAgNworI2RlZmluZSBOUF9JTkZPX0Zp
bGVWZXJzaW9uICAgICAgICAgOAorI2RlZmluZSBOUF9JTkZPX0ludGVybmFsTmFtZSAgICAgICAg
OQorI2RlZmluZSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgICAgMTAKKyNkZWZpbmUgTlBfSU5G
T19PcmlnaW5hbEZpbGVuYW1lICAgIDExCisKKyNpZm5kZWYgUkNfSU5WT0tFRAorCisKKwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KLS8qICAgICAgICAgICAgIERlZmluaXRpb24gb2YgQmFzaWMgVHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgRGVmaW5pdGlvbiBvZiBCYXNpYyBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAqLwogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KIAogI2lmbmRlZiBfVUlOVDE2CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHVpbnQxNjsKICNlbmRpZgorCiAjaWZuZGVmIF9VSU5UMzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEp
CisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsK
LSNlbHNlIC8qIF9fYWxwaGEgKi8KKyMgICAgZWxzZSAgLyogX19hbHBoYSAqLwogdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHVpbnQzMjsKLSNlbmRpZiAvKiBfX2FscGhhICovCisjICAgIGVuZGlmIC8q
IF9fYWxwaGEgKi8KICNlbmRpZgorCisvKgorICogQUlYIGRlZmluZXMgdGhlc2UgaW4gc3lzL2lu
dHR5cGVzLmggaW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAorICovCisjaWZuZGVmIEFJWAogI2lm
bmRlZiBfSU5UMTYKIHR5cGVkZWYgc2hvcnQgaW50MTY7CiAjZW5kaWYKKwogI2lmbmRlZiBfSU5U
MzIKLSNpZiBkZWZpbmVkKF9fYWxwaGEpCisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkKIHR5cGVk
ZWYgaW50IGludDMyOwotI2Vsc2UgLyogX19hbHBoYSAqLworIyAgICBlbHNlICAvKiBfX2FscGhh
ICovCiB0eXBlZGVmIGxvbmcgaW50MzI7Ci0jZW5kaWYgLyogX19hbHBoYSAqLworIyAgICBlbmRp
ZiAvKiBfX2FscGhhICovCiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIEZBTFNFCiAjZGVmaW5l
IEZBTFNFICgwKQpAQCAtMTM1LDE1ICsyMzUsMTkgQEANCiAjZGVmaW5lIE5VTEwgKDBMKQogI2Vu
ZGlmCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBOUEJvb2w7Ci10eXBlZGVmIGludDE2ICAg
ICAgICAgICAgTlBFcnJvcjsKLXR5cGVkZWYgaW50MTYgICAgICAgICAgICBOUFJlYXNvbjsKLXR5
cGVkZWYgY2hhciogICAgICAgICAgICBOUE1JTUVUeXBlOwordHlwZWRlZiB1bnNpZ25lZCBjaGFy
IE5QQm9vbDsKK3R5cGVkZWYgaW50MTYgICAgIE5QRXJyb3I7Cit0eXBlZGVmIGludDE2ICAgICBO
UFJlYXNvbjsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordHlwZWRlZiBjaGFyKiAgICAgTlBNSU1F
VHlwZTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordHlwZWRlZiBjb25zdCBURGVzQzgmIE5Q
TUlNRVR5cGU7CisjZW5kaWYKIAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucyAgICAgICAgICAgICAqLworLyogICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAg
ICAgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZmRlZiBYUF9NQUMKQEAgLTE1NSw0NyArMjU5
LDU2IEBADQogICovCiB0eXBlZGVmIHN0cnVjdCBfTlBQCiB7Ci0gICAgdm9pZCogICAgcGRhdGE7
ICAgICAgICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KLSAgICB2b2lkKiAgICBuZGF0
YTsgICAgICAgICAgICAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogcGRhdGE7
ICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogbmRhdGE7ICAgICAgLyog
bmV0c2NhcGUgcHJpdmF0ZSBkYXRhICovCiB9IE5QUF90OwogCi10eXBlZGVmIE5QUF90KiAgICBO
UFA7Cit0eXBlZGVmIE5QUF90KiAgTlBQOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUFN0cmVhbQog
ewotICAgIHZvaWQqICAgICAgICBwZGF0YTsgICAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRh
ICovCi0gICAgdm9pZCogICAgICAgIG5kYXRhOyAgICAgICAgLyogbmV0c2NhcGUgcHJpdmF0ZSBk
YXRhICovCi0gICAgY29uc3QgY2hhciogIHVybDsKLSAgICB1aW50MzIgICAgICAgZW5kOwotICAg
IHVpbnQzMiAgICAgICBsYXN0bW9kaWZpZWQ7Ci0gICAgdm9pZCogICAgICAgIG5vdGlmeURhdGE7
CisgIHZvaWQqICBwZGF0YTsgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8KKyAgdm9pZCogIG5k
YXRhOyAvKiBuZXRzY2FwZSBwcml2YXRlIGRhdGEgKi8KKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
ICBjb25zdCAgY2hhciogdXJsOworI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovCisgIEhCdWZDMTYq
ICB1cmw7CisjZW5kaWYKKyAgdWludDMyIGVuZDsKKyAgdWludDMyIGxhc3Rtb2RpZmllZDsKKyAg
dm9pZCogIG5vdGlmeURhdGE7CiB9IE5QU3RyZWFtOwogCiAKIHR5cGVkZWYgc3RydWN0IF9OUEJ5
dGVSYW5nZQogewotICAgIGludDMyICAgICAgb2Zmc2V0OyAgICAgICAgIC8qIG5lZ2F0aXZlIG9m
ZnNldCBtZWFucyBmcm9tIHRoZSBlbmQgKi8KLSAgICB1aW50MzIgICAgIGxlbmd0aDsKLSAgICBz
dHJ1Y3QgX05QQnl0ZVJhbmdlKiBuZXh0OworICBpbnQzMiAgb2Zmc2V0OyAvKiBuZWdhdGl2ZSBv
ZmZzZXQgbWVhbnMgZnJvbSB0aGUgZW5kICovCisgIHVpbnQzMiBsZW5ndGg7CisgIHN0cnVjdCBf
TlBCeXRlUmFuZ2UqIG5leHQ7CiB9IE5QQnl0ZVJhbmdlOwogCiAKIHR5cGVkZWYgc3RydWN0IF9O
UFNhdmVkRGF0YQogewotICAgIGludDMyICAgIGxlbjsKLSAgICB2b2lkKiAgICBidWY7CisgIGlu
dDMyIGxlbjsKKyAgdm9pZCogYnVmOwogfSBOUFNhdmVkRGF0YTsKIAogCiB0eXBlZGVmIHN0cnVj
dCBfTlBSZWN0CiB7Ci0gICAgdWludDE2ICAgIHRvcDsKLSAgICB1aW50MTYgICAgbGVmdDsKLSAg
ICB1aW50MTYgICAgYm90dG9tOwotICAgIHVpbnQxNiAgICByaWdodDsKKyAgdWludDE2IHRvcDsK
KyAgdWludDE2IGxlZnQ7CisgIHVpbnQxNiBib3R0b207CisgIHVpbnQxNiByaWdodDsKIH0gTlBS
ZWN0OwogCit0eXBlZGVmIHN0cnVjdCBfTlBTaXplCit7CisgIGludDMyIHdpZHRoOworICBpbnQz
MiBoZWlnaHQ7Cit9IE5QU2l6ZTsKIAogI2lmZGVmIFhQX1VOSVgKIC8qCkBAIC0yMDgsNDggKzMy
MSw1MSBAQA0KICAqIFRoZXNlIGFyZSB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBwbGF0Zm9ybSBz
cGVjaWZpYyBpbmZvcm1hdGlvbi4KICAqLwogZW51bSB7Ci0gICAgTlBfU0VUV0lORE9XID0gMSwK
LSAgICBOUF9QUklOVAorICBOUF9TRVRXSU5ET1cgPSAxLAorICBOUF9QUklOVAogfTsKIAogdHlw
ZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAgICAgdHlwZTsKKyAgaW50MzIgdHlwZTsKIH0g
TlBBbnlDYWxsYmFja1N0cnVjdDsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgICBpbnQzMiAgICAg
ICAgICAgdHlwZTsKLSAgICBEaXNwbGF5KiAgICAgICAgZGlzcGxheTsKLSAgICBWaXN1YWwqICAg
ICAgICAgdmlzdWFsOwotICAgIENvbG9ybWFwICAgICAgICBjb2xvcm1hcDsKLSAgICB1bnNpZ25l
ZCBpbnQgICAgZGVwdGg7CisgIGludDMyICAgICAgICB0eXBlOworI2lmZGVmIE1PWl9YMTEKKyAg
RGlzcGxheSogICAgIGRpc3BsYXk7CisgIFZpc3VhbCogICAgICB2aXN1YWw7CisgIENvbG9ybWFw
ICAgICBjb2xvcm1hcDsKKyAgdW5zaWduZWQgaW50IGRlcHRoOworI2VuZGlmCiB9IE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3Q7CiAKIHR5cGVkZWYgc3RydWN0CiB7Ci0gICAgaW50MzIgICAgICAg
ICAgICB0eXBlOwotICAgIEZJTEUqICAgICAgICAgICAgZnA7CisgIGludDMyIHR5cGU7CisgIEZJ
TEUqIGZwOwogfSBOUFByaW50Q2FsbGJhY2tTdHJ1Y3Q7CiAKICNlbmRpZiAvKiBYUF9VTklYICov
CiAKKwogLyoKLSAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWlu
IHBsYXRmb3JtcyB0byBOUE5WIGFuZCAKLSAqICAgTlBQViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFy
b3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4gTmV3ZXIgCi0gKiAgIGNvbXBpbGVycyBv
biBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QgCi0gKiAg
IGNvbXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lu
cyBmcm9tIAotICogICBub3QgdW5kZXJzdGFuZGluZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0aGVz
ZSBtYXNrcyBjaGFuZ2UgdGhlIAorICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVk
IG9uIGNlcnRhaW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRo
YXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyCisgKiAgIGNv
bXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBu
b3QKKyAqICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRl
ciBwbHVnaW5zIGZyb20KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFC
SSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZQogICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3Jz
IG9uIHRob3NlIHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcwotICogICBjb21wYXRpYmxl
IHdpdGggZGlmZmVyZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4gCisg
KiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBw
bHVnaW5zIGNhbgogICogICB1c2UgdGhlc2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5l
IGFuZCB1c2UgdGhlIGNvcnJlY3QgQysrCi0gKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4
cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBXaW5kb3dzIAorICogICBBQkkgdGhhdCB0
aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cwog
ICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuCiAgKi8K
IAogI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAwCiAvKgotICogICBnY2MgMy54
IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgg
CisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBpbmNv
bXBhdGlibGUgd2l0aAogICogICBwcmV2aW91cyBjb21waWxlcnMuCiAgKi8KICNpZiAoZGVmaW5l
ZCAoWFBfVU5JWCkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQpAQCAt
MjU4LDEzICszNzQsMTQgQEANCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX0dDQzMgMAogI2Vu
ZGlmCiAKKwogI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwCiAvKgogICogICBP
biBPU1gsIHRoZSBNYWNoLU8gZXhlY3V0YWJsZSBmb3JtYXQgaXMgc2lnbmlmaWNhbnRseQogICog
ICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGRpZmZlcmVudAog
ICogICBDKysgQUJJLCBpdCBhbHNvIGhhcyBoYXMgZGlmZmVyZW50IEMgY2FsbGluZyBjb252ZW50
aW9uLgogICogICBZb3UgbXVzdCB1c2UgZ2x1ZSBjb2RlIHdoZW4gY2FsbGluZyBiZXR3ZWVuIENG
TSBhbmQKLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiAKKyAqICAgTWFjaC1PIEMgZnVuY3Rpb25z
LgogICovCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JUX01BQ19NQUNITykpCiAjZGVmaW5lIF9OUF9B
QklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLCkBAIC0yNzksNTAgKzM5Niw0OCBA
QA0KICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QUF9HZXRWYWx1ZSBzaGFs
bCBiZSBpbXBsZW1lbnRlZAogICovCiB0eXBlZGVmIGVudW0gewotICAgIE5QUFZwbHVnaW5OYW1l
U3RyaW5nID0gMSwKLSAgICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCi0gICAgTlBQVnBs
dWdpbldpbmRvd0Jvb2wsCi0gICAgTlBQVnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVnBs
dWdpbk5hbWVTdHJpbmcgPSAxLAorICBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsCisgIE5Q
UFZwbHVnaW5XaW5kb3dCb29sLAorICBOUFBWcGx1Z2luVHJhbnNwYXJlbnRCb29sLAorICBOUFBW
amF2YUNsYXNzLCAgICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gTW96aWxsYSAx
LjAgKi8KKyAgTlBQVnBsdWdpbldpbmRvd1NpemUsCisgIE5QUFZwbHVnaW5UaW1lckludGVydmFs
LAogCi0gICAgTlBQVmphdmFDbGFzcywgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5XaW5kb3dTaXplLCAgICAgICAgIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1Z2luVGltZXJJbnRlcnZhbCwgICAg
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxl
SW5zdGFuY2UgPSAoMTAgfCBOUF9BQklfTUFTSyksCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlSUlE
ID0gMTEsCiAKLSAgICBOUFBWcGx1Z2luU2NyaXB0YWJsZUluc3RhbmNlID0gKDEwIHwgTlBfQUJJ
X01BU0spLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBQVnBsdWdpblNj
cmlwdGFibGVJSUQgPSAxMSwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotCi0gICAg
LyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3
aXRoIDAuOS45ICovCi0gICAgTlBQVmphdmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLCAgLyog
Tm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5LZWVwTGlicmFyeUlu
TWVtb3J5ID0gMTMsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1
Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovCi0KKyAgLyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBz
dGFydGluZyB3aXRoIDAuOS45ICovCisgIE5QUFZqYXZhc2NyaXB0UHVzaENhbGxlckJvb2wgPSAx
MiwKKyAgTlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUg
aW4gTW96aWxsYSAxLjAgKi8KKyAgTlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAxNCwg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwogICAgIC8qIEdldCB0aGUgTlBPYmplY3Qg
Zm9yIHNjcmlwdGluZyB0aGUgcGx1Z2luLiAqLwotICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QgID0gMTUKKyAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVjdCAgPSAxNQogfSBOUFBW
YXJpYWJsZTsKIAogLyoKICAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QTl9H
ZXRWYWx1ZSBpcyBpbXBsZW1lbnRlZCBieSBNb3ppbGxhCiAgKi8KIHR5cGVkZWYgZW51bSB7Ci0g
ICAgTlBOVnhEaXNwbGF5ID0gMSwKLSAgICBOUE5WeHRBcHBDb250ZXh0LAotICAgIE5QTlZuZXRz
Y2FwZVdpbmRvdywKLSAgICBOUE5WamF2YXNjcmlwdEVuYWJsZWRCb29sLAotICAgIE5QTlZhc2RF
bmFibGVkQm9vbCwKLSAgICBOUE5WaXNPZmZsaW5lQm9vbCwKKyAgTlBOVnhEaXNwbGF5ID0gMSwK
KyAgTlBOVnh0QXBwQ29udGV4dCwKKyAgTlBOVm5ldHNjYXBlV2luZG93LAorICBOUE5WamF2YXNj
cmlwdEVuYWJsZWRCb29sLAorICBOUE5WYXNkRW5hYmxlZEJvb2wsCisgIE5QTlZpc09mZmxpbmVC
b29sLAogCi0gICAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxk
cyBzdGFydGluZyB3aXRoIDAuOS40ICovCi0gICAgTlBOVnNlcnZpY2VNYW5hZ2VyID0gKDEwIHwg
TlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICAgIE5QTlZE
T01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBp
biBXZWJLaXQgKi8KLSAgICBOUE5WRE9NV2luZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyks
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBOVlRvb2xraXQgICAgICAg
ID0gKDEzIHwgTlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwot
ICAgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBN
b3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3aXRoIDAuOS40ICovCisgIE5QTlZzZXJ2aWNlTWFuYWdl
ciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwKKyAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBf
QUJJX01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLworICBOUE5WRE9NV2lu
ZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSyksCisgIE5QTlZUb29sa2l0ICAgICAgICA9ICgx
MyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgTlBO
VlN1cHBvcnRzWEVtYmVkQm9vbCA9IDE0LCAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwogCi0gICAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUg
YnJvd3NlciB3aW5kb3cuICovCi0gICAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCisgIC8qIEdl
dCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLworICBOUE5W
V2luZG93TlBPYmplY3QgPSAxNSwKIAotICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBm
b3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovCi0gICAgTlBOVlBsdWdpbkVsZW1lbnROUE9i
amVjdCAgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICAv
KiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50LiAq
LworICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ICAgICAgICAgICAgICAgICAvKiBOb3QgaW1w
bGVtZW50ZWQgaW4gV2ViS2l0ICovCiB9IE5QTlZhcmlhYmxlOwogCiAvKgpAQCAtMzMwLDcxICs0
NDUsNzggQEANCiAgKiByZXR1cm5lZCBpbiB0aGUgd2luZG93IGZpZWxkLgogICovCiB0eXBlZGVm
IGVudW0gewotICAgIE5QV2luZG93VHlwZVdpbmRvdyA9IDEsCi0gICAgTlBXaW5kb3dUeXBlRHJh
d2FibGUKKyAgTlBXaW5kb3dUeXBlV2luZG93ID0gMSwKKyAgTlBXaW5kb3dUeXBlRHJhd2FibGUK
IH0gTlBXaW5kb3dUeXBlOwogCiB0eXBlZGVmIHN0cnVjdCBfTlBXaW5kb3cKIHsKLSAgICB2b2lk
KiAgICB3aW5kb3c7ICAgICAvKiBQbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlICovCi0g
ICAgaW50MzIgICAgeDsgICAgICAgICAgICAvKiBQb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIg
cmVsYXRpdmUgKi8KLSAgICBpbnQzMiAgICB5OyAgICAgICAgICAgIC8qICAgIHRvIGEgbmV0c2Nh
cGUgcGFnZS4gICAgICAgICAgICAgICAgICAgICovCi0gICAgdWludDMyICAgIHdpZHRoOyAgICAg
ICAgLyogTWF4aW11bSB3aW5kb3cgc2l6ZSAqLwotICAgIHVpbnQzMiAgICBoZWlnaHQ7Ci0gICAg
TlBSZWN0ICAgIGNsaXBSZWN0OyAgICAvKiBDbGlwcGluZyByZWN0YW5nbGUgaW4gcG9ydCBjb29y
ZGluYXRlcyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVXNlZCBieSBNQUMgb25seS4g
ICAgICAgICAgICAgICovCi0jaWZkZWYgWFBfVU5JWAotICAgIHZvaWQgKiAgICB3c19pbmZvOyAg
ICAvKiBQbGF0Zm9ybS1kZXBlbmRlbnQgYWRkaXRvbmFsIGRhdGEgKi8KKyAgdm9pZCogd2luZG93
OyAgLyogUGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSAqLworICAgICAgICAgICAgICAg
ICAvKiBPUy8yOiB4IC0gUG9zaXRpb24gb2YgYm90dG9tIGxlZnQgY29ybmVyICAqLworICAgICAg
ICAgICAgICAgICAvKiBPUy8yOiB5IC0gcmVsYXRpdmUgdG8gdmlzaWJsZSBuZXRzY2FwZSB3aW5k
b3cgKi8KKyAgaW50MzIgeDsgICAgICAgLyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJl
bGF0aXZlICovCisgIGludDMyIHk7ICAgICAgIC8qIHRvIGEgbmV0c2NhcGUgcGFnZS4gICAgICAg
ICAqLworICB1aW50MzIgd2lkdGg7ICAvKiBNYXhpbXVtIHdpbmRvdyBzaXplICovCisgIHVpbnQz
MiBoZWlnaHQ7CisgIE5QUmVjdCBjbGlwUmVjdDsgLyogQ2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBv
cnQgY29vcmRpbmF0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAvKiBVc2VkIGJ5IE1BQyBvbmx5
LiAgICAgICAqLworI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgIWRlZmluZWQoWFBfTUFDT1NYKQor
ICB2b2lkICogd3NfaW5mbzsgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFkZGl0b25hbCBkYXRhICov
CiAjZW5kaWYgLyogWFBfVU5JWCAqLwotICAgIE5QV2luZG93VHlwZSB0eXBlOyAgICAvKiBJcyB0
aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCisgIE5QV2luZG93VHlwZSB0eXBlOyAvKiBJ
cyB0aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCiB9IE5QV2luZG93OwogCiAKIHR5cGVk
ZWYgc3RydWN0IF9OUEZ1bGxQcmludAogewotICAgIE5QQm9vbCAgICBwbHVnaW5QcmludGVkOyAg
ICAvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBmdWxsc2NyZWVuICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogICAgcHJpbnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCi0gICAgTlBCb29sICAgIHByaW50T25lOyAgICAgICAgLyogVFJVRSBpZiBwbHVnaW4g
c2hvdWxkIHByaW50IG9uZSBjb3B5ICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
ICAgIHRvIGRlZmF1bHQgcHJpbnRlciAgICAgICAgICAgICAgICAgICAgICovCi0gICAgdm9pZCog
ICAgcGxhdGZvcm1QcmludDsgICAgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAq
LworICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBwbHVnaW4gaGFuZGxlZCBm
dWxsc2NyZWVuIHByaW50aW5nICovCisgIE5QQm9vbCBwcmludE9uZTsgICAgIC8qIFRSVUUgaWYg
cGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSB0byBkZWZhdWx0IHByaW50ZXIgKi8KKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEZ1bGxQcmludDsKIAogdHlwZWRlZiBzdHJ1Y3QgX05QRW1iZWRQcmludAogewotICAgIE5Q
V2luZG93ICAgIHdpbmRvdzsKLSAgICB2b2lkKiAgICBwbGF0Zm9ybVByaW50OyAgICAvKiBQbGF0
Zm9ybS1zcGVjaWZpYyBwcmludGluZyBpbmZvICovCisgIE5QV2luZG93IHdpbmRvdzsKKyAgdm9p
ZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwog
fSBOUEVtYmVkUHJpbnQ7CiAKIHR5cGVkZWYgc3RydWN0IF9OUFByaW50CiB7Ci0gICAgdWludDE2
ICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogTlBfRlVMTCBvciBOUF9FTUJFRCAq
LwotICAgIHVuaW9uCi0gICAgewotICAgICAgICBOUEZ1bGxQcmludCAgICAgZnVsbFByaW50OyAg
ICAgICAgLyogaWYgbW9kZSBpcyBOUF9GVUxMICovCi0gICAgICAgIE5QRW1iZWRQcmludCAgICBl
bWJlZFByaW50OyAgICAgICAgLyogaWYgbW9kZSBpcyBOUF9FTUJFRCAqLwotICAgIH0gcHJpbnQ7
CisgIHVpbnQxNiBtb2RlOyAgICAgICAgICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8K
KyAgdW5pb24KKyAgeworICAgIE5QRnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlz
IE5QX0ZVTEwgKi8KKyAgICBOUEVtYmVkUHJpbnQgZW1iZWRQcmludDsgLyogaWYgbW9kZSBpcyBO
UF9FTUJFRCAqLworICB9IHByaW50OwogfSBOUFByaW50OwogCiAjaWYgZGVmaW5lZChYUF9NQUMp
IHx8IGRlZmluZWQoWFBfTUFDT1NYKQotdHlwZWRlZiBFdmVudFJlY29yZCAgICBOUEV2ZW50Owor
dHlwZWRlZiBFdmVudFJlY29yZCBOUEV2ZW50OwogI2VsaWYgZGVmaW5lZChYUF9XSU4pCiB0eXBl
ZGVmIHN0cnVjdCBfTlBFdmVudAogewotICAgIHVpbnQxNiAgIGV2ZW50OwotICAgIHVpbnQzMiAg
IHdQYXJhbTsKLSAgICB1aW50MzIgICBsUGFyYW07CisgIHVpbnQxNiBldmVudDsKKyAgdWludDMy
IHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKIH0gTlBFdmVudDsKLSNlbGlmIGRlZmluZWQgKFhQ
X1VOSVgpCisjZWxpZiBkZWZpbmVkKFhQX09TMikKK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50Cit7
CisgIHVpbnQzMiBldmVudDsKKyAgdWludDMyIHdQYXJhbTsKKyAgdWludDMyIGxQYXJhbTsKK30g
TlBFdmVudDsKKyNlbGlmIGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoTU9aX1gxMSkKIHR5
cGVkZWYgWEV2ZW50IE5QRXZlbnQ7CiAjZWxzZQotdHlwZWRlZiB2b2lkKiAgICAgICAgICAgIE5Q
RXZlbnQ7Cit0eXBlZGVmIHZvaWQqICAgICBOUEV2ZW50OwogI2VuZGlmIC8qIFhQX01BQyAqLwog
CiAjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NYKQogdHlwZWRlZiBSZ25I
YW5kbGUgTlBSZWdpb247CiAjZWxpZiBkZWZpbmVkKFhQX1dJTikKIHR5cGVkZWYgSFJHTiBOUFJl
Z2lvbjsKLSNlbGlmIGRlZmluZWQoWFBfVU5JWCkKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkgJiYg
ZGVmaW5lZChNT1pfWDExKQogdHlwZWRlZiBSZWdpb24gTlBSZWdpb247CiAjZWxzZQogdHlwZWRl
ZiB2b2lkICpOUFJlZ2lvbjsKQEAgLTQwNywzNiArNTI5LDQ3IEBADQogCiB0eXBlZGVmIHN0cnVj
dCBOUF9Qb3J0CiB7Ci0gICAgQ0dyYWZQdHIgICAgIHBvcnQ7ICAgICAgICAvKiBHcmFmcG9ydCAq
LwotICAgIGludDMyICAgICAgICBwb3J0eDsgICAgICAgIC8qIHBvc2l0aW9uIGluc2lkZSB0aGUg
dG9wbW9zdCB3aW5kb3cgKi8KLSAgICBpbnQzMiAgICAgICAgcG9ydHk7CisgIENHcmFmUHRyIHBv
cnQ7IC8qIEdyYWZwb3J0ICovCisgIGludDMyIHBvcnR4OyAgIC8qIHBvc2l0aW9uIGluc2lkZSB0
aGUgdG9wbW9zdCB3aW5kb3cgKi8KKyAgaW50MzIgcG9ydHk7CiB9IE5QX1BvcnQ7CiAKIC8qCiAg
KiAgTm9uLXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVF
dmVudAogICovCi0jZGVmaW5lIGdldEZvY3VzRXZlbnQgICAgICAgIChvc0V2dCArIDE2KQotI2Rl
ZmluZSBsb3NlRm9jdXNFdmVudCAgICAgICAgKG9zRXZ0ICsgMTcpCi0jZGVmaW5lIGFkanVzdEN1
cnNvckV2ZW50ICAgKG9zRXZ0ICsgMTgpCiAKK2VudW0gTlBFdmVudFR5cGUgeworICBOUEV2ZW50
VHlwZV9HZXRGb2N1c0V2ZW50ID0gKG9zRXZ0ICsgMTYpLAorICBOUEV2ZW50VHlwZV9Mb3NlRm9j
dXNFdmVudCwKKyAgTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZlbnQsCisgIE5QRXZlbnRUeXBl
X01lbnVDb21tYW5kRXZlbnQsCisgIE5QRXZlbnRUeXBlX0NsaXBwaW5nQ2hhbmdlZEV2ZW50LAor
ICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdCZWdpbnNFdmVudCA9IDEwMDAsCisgIE5QRXZlbnRUeXBl
X1Njcm9sbGluZ0VuZHNFdmVudAorfTsKKworI2lmZGVmIE9CU09MRVRFCisjZGVmaW5lIGdldEZv
Y3VzRXZlbnQgICAgIChvc0V2dCArIDE2KQorI2RlZmluZSBsb3NlRm9jdXNFdmVudCAgICAob3NF
dnQgKyAxNykKKyNkZWZpbmUgYWRqdXN0Q3Vyc29yRXZlbnQgKG9zRXZ0ICsgMTgpCisjZW5kaWYK
ICNlbmRpZiAvKiBYUF9NQUMgKi8KIAotCiAvKgogICogVmFsdWVzIGZvciBtb2RlIHBhc3NlZCB0
byBOUFBfTmV3OgogICovCi0jZGVmaW5lIE5QX0VNQkVEICAgICAgICAxCi0jZGVmaW5lIE5QX0ZV
TEwgICAgICAgICAyCisjZGVmaW5lIE5QX0VNQkVEIDEKKyNkZWZpbmUgTlBfRlVMTCAgMgogCiAv
KgogICogVmFsdWVzIGZvciBzdHJlYW0gdHlwZSBwYXNzZWQgdG8gTlBQX05ld1N0cmVhbToKICAq
LwotI2RlZmluZSBOUF9OT1JNQUwgICAgICAgIDEKLSNkZWZpbmUgTlBfU0VFSyAgICAgICAgIDIK
LSNkZWZpbmUgTlBfQVNGSUxFICAgICAgICAzCi0jZGVmaW5lIE5QX0FTRklMRU9OTFkgICAgICAg
IDQKKyNkZWZpbmUgTlBfTk9STUFMICAgICAxCisjZGVmaW5lIE5QX1NFRUsgICAgICAgMgorI2Rl
ZmluZSBOUF9BU0ZJTEUgICAgIDMKKyNkZWZpbmUgTlBfQVNGSUxFT05MWSA0CiAKLSNkZWZpbmUg
TlBfTUFYUkVBRFkgICAgKCgodW5zaWduZWQpKH4wKTw8MSk+PjEpCisjZGVmaW5lIE5QX01BWFJF
QURZICgoKHVuc2lnbmVkKSh+MCk8PDEpPj4xKQogCiAjaWZkZWYgWFBfTUFDCiAjcHJhZ21hIG9w
dGlvbnMgYWxpZ249cmVzZXQKQEAgLTQ0NCwzOCArNTc3LDM4IEBADQogCiAKIC8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCi0vKiAgICAgICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlvbnMg
ICAgICAgICAgICAqLworLyogICAgICAgICBFcnJvciBhbmQgUmVhc29uIENvZGUgZGVmaW5pdGlv
bnMgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqICAgIFZhbHVlcyBvZiB0eXBl
IE5QRXJyb3I6CisgKiBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgogICovCi0jZGVmaW5lIE5QRVJS
X0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotI2RlZmluZSBOUEVSUl9OT19FUlJP
UiAgICAgICAgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMCkKLSNkZWZpbmUgTlBFUlJf
R0VORVJJQ19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQotI2RlZmlu
ZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDIpCi0j
ZGVmaW5lIE5QRVJSX0lOVkFMSURfRlVOQ1RBQkxFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSAr
IDMpCi0jZGVmaW5lIE5QRVJSX01PRFVMRV9MT0FEX0ZBSUxFRF9FUlJPUiAgICAgICAgKE5QRVJS
X0JBU0UgKyA0KQotI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQotI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgICAgIChOUEVSUl9CQVNFICsgNikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVHSU5fRElS
X0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDcpCi0jZGVmaW5lIE5QRVJSX0lOQ09NUEFUSUJM
RV9WRVJTSU9OX0VSUk9SICAgIChOUEVSUl9CQVNFICsgOCkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJ
RF9QQVJBTSAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDkpCi0jZGVmaW5lIE5QRVJSX0lO
VkFMSURfVVJMICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEwKQotI2RlZmluZSBO
UEVSUl9GSUxFX05PVF9GT1VORCAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQotI2Rl
ZmluZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAx
MikKLSNkZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAgICAgIChOUEVSUl9C
QVNFICsgMTMpCisjZGVmaW5lIE5QRVJSX0JBU0UgICAgICAgICAgICAgICAgICAgICAgICAgMAor
I2RlZmluZSBOUEVSUl9OT19FUlJPUiAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAw
KQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VSUk9SICAgICAgICAgICAgICAgKE5QRVJSX0JBU0Ug
KyAxKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgKE5QRVJSX0JB
U0UgKyAyKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0ZVTkNUQUJMRV9FUlJPUiAgICAgKE5QRVJS
X0JBU0UgKyAzKQorI2RlZmluZSBOUEVSUl9NT0RVTEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5Q
RVJSX0JBU0UgKyA0KQorI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAg
KE5QRVJSX0JBU0UgKyA1KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAg
ICAgKE5QRVJSX0JBU0UgKyA2KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJS
T1IgICAgKE5QRVJSX0JBU0UgKyA3KQorI2RlZmluZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lP
Tl9FUlJPUiAgKE5QRVJSX0JBU0UgKyA4KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1BBUkFNICAg
ICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAg
ICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMCkKKyNkZWZpbmUgTlBFUlJfRklMRV9OT1Rf
Rk9VTkQgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTEpCisjZGVmaW5lIE5QRVJSX05PX0RB
VEEgICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEyKQorI2RlZmluZSBOUEVSUl9T
VFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMykKIAogLyoKLSAqICAg
IFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgorICogVmFsdWVzIG9mIHR5cGUgTlBSZWFzb246CiAg
Ki8KLSNkZWZpbmUgTlBSRVNfQkFTRSAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIE5QUkVTX0RP
TkUgICAgICAgICAgICAgICAgICAgIChOUFJFU19CQVNFICsgMCkKLSNkZWZpbmUgTlBSRVNfTkVU
V09SS19FUlIgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDEpCi0jZGVmaW5lIE5QUkVTX1VTRVJf
QlJFQUsgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDIpCisjZGVmaW5lIE5QUkVTX0JBU0UgICAg
ICAgICAgMAorI2RlZmluZSBOUFJFU19ET05FICAgICAgICAgKE5QUkVTX0JBU0UgKyAwKQorI2Rl
ZmluZSBOUFJFU19ORVRXT1JLX0VSUiAgKE5QUkVTX0JBU0UgKyAxKQorI2RlZmluZSBOUFJFU19V
U0VSX0JSRUFLICAgKE5QUkVTX0JBU0UgKyAyKQogCiAvKgotICogICAgICBEb24ndCB1c2UgdGhl
c2Ugb2Jzb2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCisgKiBEb24ndCB1c2UgdGhlc2Ugb2Jz
b2xldGUgZXJyb3IgY29kZXMgYW55IG1vcmUuCiAgKi8KICNkZWZpbmUgTlBfTk9FUlIgIE5QX05P
RVJSX2lzX29ic29sZXRlX3VzZV9OUEVSUl9OT19FUlJPUgogI2RlZmluZSBOUF9FSU5WQUwgTlBf
RUlOVkFMX2lzX29ic29sZXRlX3VzZV9OUEVSUl9HRU5FUklDX0VSUk9SCkBAIC00ODQsMjYgKzYx
NywzMiBAQA0KIC8qCiAgKiBWZXJzaW9uIGZlYXR1cmUgaW5mb3JtYXRpb24KICAqLwotI2RlZmlu
ZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgOAotI2RlZmluZSBOUFZFUlNfSEFTX05PVElG
SUNBVElPTiAgICAgOQotI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVDT05ORUNUICAgICAgICA5Ci0j
ZGVmaW5lIE5QVkVSU19XSU4xNl9IQVNfTElWRUNPTk5FQ1QgICAgOQotI2RlZmluZSBOUFZFUlNf
NjhLX0hBU19MSVZFQ09OTkVDVCAgICAxMQotI2RlZmluZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1Mg
ICAgICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hBU19TVFJFQU1PVVRQVVQgICAgICA4CisjZGVmaW5l
IE5QVkVSU19IQVNfTk9USUZJQ0FUSU9OICAgICAgOQorI2RlZmluZSBOUFZFUlNfSEFTX0xJVkVD
T05ORUNUICAgICAgIDkKKyNkZWZpbmUgTlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCA5Cisj
ZGVmaW5lIE5QVkVSU182OEtfSEFTX0xJVkVDT05ORUNUICAgMTEKKyNkZWZpbmUgTlBWRVJTX0hB
U19XSU5ET1dMRVNTICAgICAgICAxMQorI2RlZmluZSBOUFZFUlNfSEFTX1hQQ09OTkVDVF9TQ1JJ
UFRJTkcgMTMKIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgRnVuY3Rpb24g
UHJvdG90eXBlcyAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICBG
dW5jdGlvbiBQcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCiAKICNpZiBkZWZpbmVkKF9XSU5ET1dTKSAmJiAhZGVmaW5lZChXSU4zMikKICNk
ZWZpbmUgTlBfTE9BRERTICBfbG9hZGRzCiAjZWxzZQorI2lmIGRlZmluZWQoX19PUzJfXykKKyNk
ZWZpbmUgTlBfTE9BRERTIF9TeXN0ZW0KKyNlbHNlCiAjZGVmaW5lIE5QX0xPQUREUwogI2VuZGlm
CisjZW5kaWYKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKKyNpZm5kZWYgX19T
WU1CSUFOMzJfXworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgog
I2VuZGlmCiAKIC8qCkBAIC01MTEsNzggKzY1MCwxNTAgQEANCiAgKi8KIAogI2lmZGVmIFhQX1VO
SVgKLWNoYXIqICAgICAgICAgICAgICAgICAgICBOUFBfR2V0TUlNRURlc2NyaXB0aW9uKHZvaWQp
OworY2hhciogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lkKTsKICNlbmRpZiAvKiBYUF9VTklY
ICovCiAKLU5QRXJyb3IgICAgIE5QUF9Jbml0aWFsaXplKHZvaWQpOwotdm9pZCAgICAgICAgTlBQ
X1NodXRkb3duKHZvaWQpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAgIE5QUF9OZXcoTlBNSU1F
VHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsK
LU5QRXJyb3IgICAgIE5QX0xPQUREUyAgICBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2
ZWREYXRhKiogc2F2ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX1NldFdpbmRvdyhO
UFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cpOwotTlBFcnJvciAgICAgTlBfTE9BRERTICAg
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVr
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlw
ZSk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlBSZWFzb24gcmVhc29uKTsKLWludDMyICAgICAgICBOUF9MT0FERFMgICAgTlBQ
X1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtKTsKLWludDMyICAgICAg
ICBOUF9MT0FERFMgICAgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwg
aW50MzIgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyIGxl
biwgdm9pZCogYnVmZmVyKTsKLXZvaWQgICAgICAgIE5QX0xPQUREUyAgICBOUFBfU3RyZWFtQXNG
aWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCAgICAgICAgTlBf
TE9BRERTICAgIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQp
OwotaW50MTYgICAgICAgICAgICBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBl
dmVudCk7Ci12b2lkICAgICAgICBOUF9MT0FERFMgICAgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFu
Y2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsKLWpyZWYgICAgICAgIE5QX0xP
QUREUyAgICAgICAgICAgIE5QUF9HZXRKYXZhQ2xhc3Modm9pZCk7Ci1OUEVycm9yICAgICBOUFBf
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yICAgICBOUFBf
U2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7CisjaWZkZWYgX19TWU1CSUFO
MzJfXworSU1QT1JUX0MgY29uc3QgVERlc0MxNiogTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lk
KTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCiAKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9J
bml0aWFsaXplKHZvaWQpOworI2lmZGVmIF9fU1lNQklBTjMyX18KK0lNUE9SVF9DCisjZW5kaWYg
LyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQp
OworCisjaWZuZGVmIF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXcoTlBN
SU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbHNlCitO
UEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAorICAgICAgICAgICAgICB1aW50MTYgbW9kZSwgQ0Rlc0NBcnJheSogYXJnbiwKKyAgICAg
ICAgICAgICAgQ0Rlc0NBcnJheSogYXJndiwgTlBTYXZlZERhdGEqIHNhdmVkKTsKKyNlbmRpZiAv
KiBfX1NZTUJJQU4zMl9fICovCisKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95KE5QUCBp
bnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRX
aW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKK05QRXJyb3IgTlBfTE9BRERT
IE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2KiBzdHlwZSk7CitOUEVycm9y
IE5QX0xPQUREUyBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24p
OworaW50MzIgICBOUF9MT0FERFMgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVh
bSogc3RyZWFtKTsKK2ludDMyICAgTlBfTE9BRERTIE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5Q
U3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7CisKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwordm9p
ZCAgICBOUF9MT0FERFMgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZu
YW1lKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLwordm9pZCAgICBOUF9MT0FERFMgTlBQX1N0
cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGZuYW1lKTsKKyNlbmRpZiAvKiBf
X1NZTUJJQU4zMl9fICovCisKK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9QcmludChOUFAgaW5zdGFu
Y2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOworaW50MTYgICBOUF9MT0FERFMgTlBQX0hhbmRs
ZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpOworCisjaWZuZGVmIF9fU1lNQklBTjMy
X18KK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBj
aGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNv
biwgdm9pZCogbm90aWZ5RGF0YSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK3ZvaWQgICAg
TlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCisjaWZkZWYgT0pJCitq
cmVmICAgIE5QX0xPQUREUyBOUFBfR2V0SmF2YUNsYXNzKHZvaWQpOworI2VuZGlmCisKKyNpZmRl
ZiBfX1NZTUJJQU4zMl9fCitJTVBPUlRfQworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KK05Q
RXJyb3IgTlBfTE9BRERTIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7CitOUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOworCiAvKgogICog
TlBOXyogZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBieSB0aGUgbmF2aWdhdG9yIGFuZCBjYWxsZWQg
YnkgdGhlIHBsdWdpbi4KICAqLwordm9pZCAgICBOUF9MT0FERFMgTlBOX1ZlcnNpb24oaW50KiBw
bHVnaW5fbWFqb3IsIGludCogcGx1Z2luX21pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBuZXRzY2FwZV9tYWpvciwgaW50KiBuZXRzY2FwZV9taW5vcik7CiAKLXZvaWQg
ICAgICAgIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQqIG5l
dHNjYXBlX21pbm9yKTsKLU5QRXJyb3IgICAgIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGlmeURhdGEpOwotTlBFcnJvciAgICAgTlBOX0dldFVS
TChOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7Ci1OUEVycm9yICAgICBOUE5fUG9zdFVSTE5vdGlmeShO
UFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsKLU5QRXJyb3IgICAg
IE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlKTsKLU5QRXJy
b3IgICAgIE5QTl9SZXF1ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFu
Z2VMaXN0KTsKLU5QRXJyb3IgICAgIE5QTl9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVU
eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJn
ZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKLWludDMyICAgICAgICBOUE5fV3JpdGUoTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQqIGJ1ZmZlcik7Ci1OUEVycm9yICAgICBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlBSZWFzb24gcmVhc29uKTsKLXZvaWQgICAgICAgIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLWNvbnN0IGNoYXIqICAgIE5QTl9Vc2VyQWdlbnQoTlBQ
IGluc3RhbmNlKTsKLXZvaWQqICAgICAgICBOUE5fTWVtQWxsb2ModWludDMyIHNpemUpOwotdm9p
ZCAgICAgICAgTlBOX01lbUZyZWUodm9pZCogcHRyKTsKLXVpbnQzMiAgICAgICAgTlBOX01lbUZs
dXNoKHVpbnQzMiBzaXplKTsKLXZvaWQgICAgICAgIE5QTl9SZWxvYWRQbHVnaW5zKE5QQm9vbCBy
ZWxvYWRQYWdlcyk7Ci1KUklFbnYqICAgICBOUE5fR2V0SmF2YUVudih2b2lkKTsKLWpyZWYgICAg
ICAgIE5QTl9HZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwotTlBFcnJvciAgICAgTlBOX0dldFZh
bHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnZhbHVlKTsKLU5QRXJyb3IgICAgIE5QTl9TZXRWYWx1ZShOUFAg
aW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICp2YWx1ZSk7Ci12b2lkICAgICAgICBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGlu
c3RhbmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsKLXZvaWQgICAgICAgIE5QTl9JbnZhbGlkYXRl
UmVnaW9uKE5QUCBpbnN0YW5jZSwgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Ci12b2lkICAgICAg
ICBOUE5fRm9yY2VSZWRyYXcoTlBQIGluc3RhbmNlKTsKKyNpZm5kZWYgX19TWU1CSUFOMzJfXwor
TlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFVSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNo
YXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
dGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRVUkwo
TlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTE5v
dGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBub3RpZnlEYXRhKTsK
K05QRXJyb3IgTlBfTE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB1
aW50MzIgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVm
LCBOUEJvb2wgZmlsZSk7CisjZWxzZS8qIF9fU1lNQklBTjMyX18gKi8KK05QRXJyb3IgTlBfTE9B
RERTIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwg
dm9pZCogbm90aWZ5RGF0YSk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0
YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBURGVzQzE2KiB0YXJnZXQpOworTlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkxOb3Rp
ZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7CitOUEVy
cm9yIE5QX0xPQUREUyBOUE5fUG9zdFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIHVy
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYmIGJ1ZiwgTlBCb29s
IGZpbGUpOworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVz
Ci19ICAvKiBlbmQgZXh0ZXJuICJDIiAqLworTlBFcnJvciBOUF9MT0FERFMgTlBOX1JlcXVlc3RS
ZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiByYW5nZUxpc3QpOworCisjaWZuZGVm
IF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9OZXdTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRhcmdldCwgTlBTdHJlYW0qKiBzdHJlYW0pOworI2Vsc2UvKiBfX1NZTUJJQU4z
Ml9fICovCitOUEVycm9yIE5QX0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBN
SU1FVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVz
QzE2KiB0YXJnZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9f
ICovCisKK2ludDMyICAgTlBfTE9BRERTIE5QTl9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sIGludDMyIGxlbiwgdm9pZCogYnVmZmVyKTsKK05QRXJyb3IgTlBfTE9BRERTIE5Q
Tl9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24g
cmVhc29uKTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9fCit2b2lkICAgIE5QX0xPQUREUyBOUE5f
U3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogbWVzc2FnZSk7CisjZWxzZS8qIF9fU1lN
QklBTjMyX18gKi8KK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9TdGF0dXMoTlBQIGluc3RhbmNlLCBj
b25zdCBURGVzQzE2JiBtZXNzYWdlKTsKKyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCisKKyNp
Zm5kZWYgX19TWU1CSUFOMzJfXworY29uc3QgY2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQo
TlBQIGluc3RhbmNlKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLworY29uc3QgVERlc0MxNiog
TlBfTE9BRERTICBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7CisjZW5kaWYgLyogX19TWU1C
SUFOMzJfXyAqLworCisKK3ZvaWQqICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1aW50MzIgc2l6
ZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fTWVtRnJlZSh2b2lkKiBwdHIpOwordWludDMyICBO
UF9MT0FERFMgTlBOX01lbUZsdXNoKHVpbnQzMiBzaXplKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5Q
Tl9SZWxvYWRQbHVnaW5zKE5QQm9vbCByZWxvYWRQYWdlcyk7CisjaWZkZWYgT0pJCitKUklFbnYq
IE5QX0xPQUREUyBOUE5fR2V0SmF2YUVudih2b2lkKTsKK2pyZWYgICAgTlBfTE9BRERTIE5QTl9H
ZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOwogI2VuZGlmCitOUEVycm9yIE5QX0xPQUREUyBOUE5f
R2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUp
OworTlBFcnJvciBOUF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9JbnZhbGlk
YXRlUmVjdChOUFAgaW5zdGFuY2UsIE5QUmVjdCAqaW52YWxpZFJlY3QpOwordm9pZCAgICBOUF9M
T0FERFMgTlBOX0ludmFsaWRhdGVSZWdpb24oTlBQIGluc3RhbmNlLCBOUFJlZ2lvbiBpbnZhbGlk
UmVnaW9uKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9Gb3JjZVJlZHJhdyhOUFAgaW5zdGFuY2Up
OwogCisjaWZuZGVmIF9fU1lNQklBTjMyX18KKyAjaWZkZWYgX19jcGx1c3BsdXMKKyB9ICAvKiBl
bmQgZXh0ZXJuICJDIiAqLworICNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBSQ19JTlZPS0VE
ICovCisjaWZkZWYgX19PUzJfXworI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorCiAjZW5kaWYgLyog
X05QQVBJX0hfICovCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNwcAko
cmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTIwLDE1ICsyMCwxNiBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCisjaW5jbHVk
ZSA8SGFzaE1hcC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZV9pbXBsLmg+
CisjaW5jbHVkZSA8aWRlbnRpZmllci5oPgogI2luY2x1ZGUgPG5wcnVudGltZS5oPgogI2luY2x1
ZGUgPGNfdXRpbGl0eS5oPgogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lX2lt
cGwuaD4KLQorLyoKIHN0YXRpYyBCb29sZWFuIHN0cmluZ0lkZW50aWZpZXJFcXVhbChjb25zdCB2
b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVlMikKIHsKICAgICByZXR1cm4gc3RyY21wKChj
b25zdCBjaGFyICopdmFsdWUxLCAoY29uc3QgY2hhciAqKXZhbHVlMikgPT0gMDsKQEAgLTEwMCwx
NCArMTAxLDE0IEBADQogICAgIHJldHVybiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeTsKIH0KIAot
TlBJZGVudGlmaWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoY29uc3QgTlBVVEY4ICpuYW1l
KQorTlBJZGVudGlmaWVyIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChjb25zdCBOUFVURjggKm5h
bWUpCiB7CiAgICAgYXNzZXJ0IChuYW1lKTsKLSAgICAKKwogICAgIGlmIChuYW1lKSB7CiAgICAg
ICAgIFByaXZhdGVJZGVudGlmaWVyICppZGVudGlmaWVyID0gMDsKLSAgICAgICAgCi0gICAgICAg
IGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAo
Z2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKiluYW1lKTsKKwor
ICAgICAgICAvL2lkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilu
YW1lKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgewogICAgICAgICAgICAgaWRlbnRp
ZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKW1hbGxvYyAoc2l6ZW9mKFByaXZhdGVJZGVudGlm
aWVyKSk7CiAgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMs
IHNvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwKQEAgLTExNiw2MCArMTE3LDEz
OCBAQA0KICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlkZW50aWZpZXJOYW1lID0gc3RyZHVwIChu
YW1lKTsKICAgICAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9IGlkZW50aWZpZXJO
YW1lOwogCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRp
ZmllckRpY3Rpb25hcnkoKSwgaWRlbnRpZmllck5hbWUsIChjb25zdCB2b2lkICopaWRlbnRpZmll
cik7CisgICAgICAgICAgICAvL0NGRGljdGlvbmFyeUFkZFZhbHVlIChnZXRTdHJpbmdJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCBpZGVudGlmaWVyTmFtZSwgKGNvbnN0IHZvaWQgKilpZGVudGlmaWVy
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCi12b2lkIF9OUE5fR2V0U3RyaW5nSWRl
bnRpZmllcnMgKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwgTlBJZGVu
dGlmaWVyICppZGVudGlmaWVycykKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIChjb25z
dCBOUFVURjggKipuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciAqaWRlbnRp
ZmllcnMpCiB7CiAgICAgYXNzZXJ0IChuYW1lcyk7CiAgICAgYXNzZXJ0IChpZGVudGlmaWVycyk7
Ci0gICAgCisKICAgICBpZiAobmFtZXMgJiYgaWRlbnRpZmllcnMpIHsKICAgICAgICAgaW50IGk7
Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykgewot
ICAgICAgICAgICAgaWRlbnRpZmllcnNbaV0gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG5h
bWVzW2ldKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIgKG5hbWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotTlBJZGVudGlmaWVyIF9O
UE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludGlkKQorTlBJZGVudGlmaWVyIE5QTl9HZXRJ
bnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCiB7CisvL2ZvcmNlIGFzc2VydAorCisKICAgICBQ
cml2YXRlSWRlbnRpZmllciAqaWRlbnRpZmllciA9IDA7Ci0gICAgCi0gICAgaWRlbnRpZmllciA9
IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFyeUdldFZhbHVlIChnZXRJbnRJZGVudGlm
aWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWludGlkKTsKK2Fzc2VydCggaWRlbnRpZmll
ciApOworICAgIC8vaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciAqKUNGRGljdGlvbmFy
eUdldFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9pZCAqKWlu
dGlkKTsKICAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7CiAgICAgICAgIGlkZW50aWZpZXIgPSAo
UHJpdmF0ZUlkZW50aWZpZXIgKiltYWxsb2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOwog
ICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMsIHNvIHRoaXMgZGlj
dGlvbmFyeSB3aWxsIGdyb3cuCiAgICAgICAgIGlkZW50aWZpZXItPmlzU3RyaW5nID0gZmFsc2U7
CiAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLm51bWJlciA9IGludGlkOwogCi0gICAgICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qg
dm9pZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOworICAgICAgICAvL0NGRGlj
dGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qgdm9p
ZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4g
KE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworfSovCisKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
S0pTOjpVU3RyaW5nOjpSZXA+LCBQcml2YXRlSWRlbnRpZmllcio+IFN0cmluZ0lkZW50aWZpZXJN
YXA7CisKK3N0YXRpYyBTdHJpbmdJZGVudGlmaWVyTWFwKiBnZXRTdHJpbmdJZGVudGlmaWVyTWFw
KCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nSWRlbnRpZmllck1hcCogc3RyaW5nSWRlbnRpZmllck1h
cCA9IDA7CisgICAgaWYgKCFzdHJpbmdJZGVudGlmaWVyTWFwKQorICAgICAgICBzdHJpbmdJZGVu
dGlmaWVyTWFwID0gbmV3IFN0cmluZ0lkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIHN0cmluZ0lk
ZW50aWZpZXJNYXA7CiB9CiAKLWJvb2wgX05QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit0eXBlZGVmIEhhc2hNYXA8aW50LCBQcml2YXRlSWRlbnRpZmllcio+
IEludElkZW50aWZpZXJNYXA7CisKK3N0YXRpYyBJbnRJZGVudGlmaWVyTWFwKiBnZXRJbnRJZGVu
dGlmaWVyTWFwKCkKIHsKKyAgICBzdGF0aWMgSW50SWRlbnRpZmllck1hcCogaW50SWRlbnRpZmll
ck1hcCA9IDA7CisgICAgaWYgKCFpbnRJZGVudGlmaWVyTWFwKQorICAgICAgICBpbnRJZGVudGlm
aWVyTWFwID0gbmV3IEludElkZW50aWZpZXJNYXA7CisgICAgcmV0dXJuIGludElkZW50aWZpZXJN
YXA7Cit9CisKK0VYUE9SVF9DCitOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
Y29uc3QgTlBVVEY4KiBuYW1lKQoreworICAgIGFzc2VydChuYW1lKTsKKworICAgIGlmIChuYW1l
KSB7CisgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsKKworICAgICAg
ICBpZGVudGlmaWVyID0gZ2V0U3RyaW5nSWRlbnRpZmllck1hcCgpLT5nZXQoaWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIobmFtZSkudXN0cmluZygpLmFyZXAoKSk7CisgICAgICAgIGlmIChpZGVu
dGlmaWVyID09IDApIHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZp
ZXIqKW1hbGxvYyhzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIC8vIFdl
IG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwg
Z3JvdywgYXMgd2lsbAorICAgICAgICAgICAgLy8gdGhlIG1lbW9yeSBmb3IgdGhlIGlkZW50aWZp
ZXIgbmFtZSBzdHJpbmdzLgorICAgICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSB0cnVl
OworICAgICAgICAgICAgaWRlbnRpZmllci0+dmFsdWUuc3RyaW5nID0gc3RyZHVwKG5hbWUpOwor
CisgICAgICAgICAgICBnZXRTdHJpbmdJZGVudGlmaWVyTWFwKCktPnNldChpZGVudGlmaWVyRnJv
bU5QSWRlbnRpZmllcihuYW1lKS51c3RyaW5nKCkuYXJlcCgpLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitFWFBPUlRfQwordm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
cnMoY29uc3QgTlBVVEY4KiogbmFtZXMsIGludDMyX3QgbmFtZUNvdW50LCBOUElkZW50aWZpZXIq
IGlkZW50aWZpZXJzKQoreworICAgIGFzc2VydChuYW1lcyk7CisgICAgYXNzZXJ0KGlkZW50aWZp
ZXJzKTsKKworICAgIGlmIChuYW1lcyAmJiBpZGVudGlmaWVycykKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0g
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZXNbaV0pOworfQorCitFWFBPUlRfQworTlBJZGVu
dGlmaWVyIE5QTl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpCit7CisgICAgUHJpdmF0
ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSAwOworCisgICAgaWRlbnRpZmllciA9IGdldEludElk
ZW50aWZpZXJNYXAoKS0+Z2V0KGludGlkKTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7Cisg
ICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKW1hbGxvYyhzaXplb2YoUHJp
dmF0ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgLy8gV2UgbmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVy
IG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBncm93LgorICAgICAgICBpZGVudGlmaWVy
LT5pc1N0cmluZyA9IGZhbHNlOworICAgICAgICBpZGVudGlmaWVyLT52YWx1ZS5udW1iZXIgPSBp
bnRpZDsKKworICAgICAgICBnZXRJbnRJZGVudGlmaWVyTWFwKCktPnNldChpbnRpZCwgaWRlbnRp
Zmllcik7CisgICAgfQorICAgIHJldHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7Cit9CisK
K0VYUE9SVF9DCitib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIg
KilpZGVudGlmaWVyOwogICAgIHJldHVybiBpLT5pc1N0cmluZzsKIH0KIAotTlBVVEY4ICpfTlBO
X1VURjhGcm9tSWRlbnRpZmllciAoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQwor
TlBVVEY4ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyIChOUElkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBQcml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2YXRlSWRlbnRpZmllciAqKWlkZW50
aWZpZXI7CiAgICAgaWYgKCFpLT5pc1N0cmluZyB8fCAhaS0+dmFsdWUuc3RyaW5nKQogICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICAgICAgCisKICAgICByZXR1cm4gKE5QVVRGOCAqKXN0cmR1cChp
LT52YWx1ZS5zdHJpbmcpOwogfQogCi1pbnQzMl90IF9OUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitFWFBPUlRfQworaW50MzJfdCBOUE5fSW50RnJvbUlkZW50
aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIg
KmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilpZGVudGlmaWVyOwogICAgIGlmICghaS0+aXNTdHJp
bmcpCkBAIC0yMjEsOSArMzAwLDkgQEANCiB7CiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgIT0gTlBW
YXJpYW50VHlwZV9Cb29sKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAg
KnJlc3VsdCA9IHZhcmlhbnQtPnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzMsNyArMzEyLDcgQEANCiAgICAgICAgIE5QU3RyaW5nIGVtcHR5U3Ry
aW5nID0geyAwLCAwIH07CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZzsKICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgIHJldHVybiB2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZTsKIH0KIApA
QCAtMjQ1LDcgKzMyNCw3IEBADQogICAgICAgICAqcmVzdWx0ID0gKGludDMyX3QpdmFyaWFudC0+
dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU3LDcgKzMzNiw3IEBADQogICAgICAgICAq
cmVzdWx0ID0gdmFyaWFudC0+dmFsdWUuZG91YmxlVmFsdWU7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY1LDkgKzM0
NCw5IEBADQogewogICAgIGlmICh2YXJpYW50LT50eXBlICE9IE5QVmFyaWFudFR5cGVfT2JqZWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKKwogICAgICpyZXN1bHQgPSB2
YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zMjEsNyArNDAwLDcgQEANCiB2b2lkIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmpl
Y3QgKE5QVmFyaWFudCAqdmFyaWFudCwgTlBPYmplY3QgKnZhbHVlKQogewogICAgIHZhcmlhbnQt
PnR5cGUgPSBOUFZhcmlhbnRUeXBlX09iamVjdDsKLSAgICB2YXJpYW50LT52YWx1ZS5vYmplY3RW
YWx1ZSA9IF9OUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CisgICAgdmFyaWFudC0+dmFsdWUub2Jq
ZWN0VmFsdWUgPSBOUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7CiB9CiAKIHZvaWQgTlBOX0luaXRp
YWxpemVWYXJpYW50V2l0aFZhcmlhbnQgKE5QVmFyaWFudCAqZGVzdGluYXRpb24sIGNvbnN0IE5Q
VmFyaWFudCAqc291cmNlKQpAQCAtMzYyLDEyICs0NDEsMTMgQEANCiAgICAgfQogfQogCi12b2lk
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MK
K3ZvaWQgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKE5QVmFyaWFudCAqdmFyaWFudCkKIHsKICAg
ICBhc3NlcnQgKHZhcmlhbnQpOwotICAgIAorCiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgPT0gTlBW
YXJpYW50VHlwZV9PYmplY3QpIHsKLSAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CisgICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0ICh2YXJpYW50
LT52YWx1ZS5vYmplY3RWYWx1ZSk7CiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVl
ID0gMDsKICAgICB9CiAgICAgZWxzZSBpZiAodmFyaWFudC0+dHlwZSA9PSBOUFZhcmlhbnRUeXBl
X1N0cmluZykgewpAQCAtMzc1LDM0ICs0NTUsMzYgQEANCiAgICAgICAgIHZhcmlhbnQtPnZhbHVl
LnN0cmluZ1ZhbHVlLlVURjhDaGFyYWN0ZXJzID0gMDsKICAgICAgICAgdmFyaWFudC0+dmFsdWUu
c3RyaW5nVmFsdWUuVVRGOExlbmd0aCA9IDA7CiAgICAgfQotICAgIAorCiAgICAgdmFyaWFudC0+
dHlwZSA9IE5QVmFyaWFudFR5cGVfVm9pZDsKIH0KIAogCi1OUE9iamVjdCAqX05QTl9DcmVhdGVP
YmplY3QgKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcykKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBO
X0NyZWF0ZU9iamVjdCAoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKQogewogICAgIGFzc2VydCAo
YUNsYXNzKTsKIAogICAgIGlmIChhQ2xhc3MpIHsKICAgICAgICAgTlBPYmplY3QgKm9iajsKLSAg
ICAgICAgCisKICAgICAgICAgaWYgKGFDbGFzcy0+YWxsb2NhdGUgIT0gTlVMTCkKICAgICAgICAg
ICAgIG9iaiA9IGFDbGFzcy0+YWxsb2NhdGUgKG5wcCwgYUNsYXNzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgb2JqID0gKE5QT2JqZWN0ICopbWFsbG9jIChzaXplb2YoTlBPYmplY3QpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgIG9iai0+X2NsYXNzID0gYUNsYXNzOwogICAgICAgICBv
YmotPnJlZmVyZW5jZUNvdW50ID0gMTsKIAogICAgICAgICByZXR1cm4gb2JqOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiAwOwogfQogCiAKLU5QT2JqZWN0ICpfTlBOX1JldGFpbk9iamVjdCAo
TlBPYmplY3QgKm9iaikKK0VYUE9SVF9DCitOUE9iamVjdCAqTlBOX1JldGFpbk9iamVjdCAoTlBP
YmplY3QgKm9iaikKIHsKICAgICBhc3NlcnQgKG9iaik7CiAKQEAgLTQxMywxNCArNDk1LDE1IEBA
DQogfQogCiAKLXZvaWQgX05QTl9SZWxlYXNlT2JqZWN0IChOUE9iamVjdCAqb2JqKQorRVhQT1JU
X0MKK3ZvaWQgTlBOX1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpvYmopCiB7CiAgICAgYXNzZXJ0
IChvYmopOwogICAgIGFzc2VydCAob2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKTsKIAogICAgIGlm
IChvYmogJiYgb2JqLT5yZWZlcmVuY2VDb3VudCA+PSAxKSB7CiAgICAgICAgIG9iai0+cmVmZXJl
bmNlQ291bnQtLTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICBpZiAob2JqLT5yZWZlcmVu
Y2VDb3VudCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUp
CiAgICAgICAgICAgICAgICAgb2JqLT5fY2xhc3MtPmRlYWxsb2NhdGUgKG9iaik7CkBAIC00MzAs
MTIgKzUxMywxMyBAQA0KICAgICB9CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb25XaXRoVVRG
OCAoTlBPYmplY3QgKm9iaiwgY29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkK
K0VYUE9SVF9DCit2b2lkIE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOCAoTlBPYmplY3QgKm9iaiwg
Y29uc3QgTlBVVEY4ICptZXNzYWdlLCBpbnQzMl90IGxlbmd0aCkKIHsKICAgICBhc3NlcnQgKG9i
aik7CiAgICAgYXNzZXJ0IChtZXNzYWdlKTsKLSAKKwogICAgIGlmIChvYmogJiYgbWVzc2FnZSkg
ewotICAgICAgICBfTlBOX1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKKyAgICAgICAgTlBO
X1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdlKTsKICAgICB9CiB9CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL25wcnVudGltZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTczLDYgKzczLDcgQEAN
CiAjZW5kaWYKIAogI2luY2x1ZGUgIm5wYXBpLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
c3RkaW50Lmg+CiAKIC8qCiAgICAgVGhpcyBBUEkgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGJpbmRp
bmcgY29kZSB3cml0dGVuIGluIEMgdG8gc2NyaXB0CkBAIC0xNTEsNiArMTUyLDcgQEANCiAgICAg
QWZ0ZXIgY2FsbGluZyBOUFJlbGVhc2VWYXJpYW50VmFsdWUsIHRoZSB0eXBlIG9mIHRoZSB2YXJp
YW50IHdpbGwKICAgICBiZSBzZXQgdG8gTlBWYXJpYW50VW5kZWZpbmVkVHlwZS4KICovCitJTVBP
UlRfQwogdm9pZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KTsK
IAogI2RlZmluZSBOUFZBUklBTlRfSVNfVk9JRChfdikgICAgKChfdikudHlwZSA9PSBOUFZhcmlh
bnRUeXBlX1ZvaWQpCkBAIC0yMTIsMjAgKzIxNCwyNiBAQA0KICAgICBjb21wYXJlZCB1c2luZyA9
PS4gIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhlIHJlcXVlc3RlZAogICAgIE5QSWRlbnRpZmll
cihzKSB3aWxsIGJlIE5VTEwuCiAqLworSU1QT1JUX0MKIE5QSWRlbnRpZmllciBOUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpOworSU1QT1JUX0MKIHZvaWQgTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3Vu
dCwgTlBJZGVudGlmaWVyICppZGVudGlmaWVycyk7CitJTVBPUlRfQwogTlBJZGVudGlmaWVyIE5Q
Tl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0lk
ZW50aWZpZXJJc1N0cmluZyhOUElkZW50aWZpZXIgaWRlbnRpZmllcik7CiAKIC8qCiAgICAgVGhl
IE5QVVRGOCByZXR1cm5lZCBmcm9tIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgU0hPVUxEIGJlIGZy
ZWVkLgogKi8KK0lNUE9SVF9DCiBOUFVURjggKk5QTl9VVEY4RnJvbUlkZW50aWZpZXIoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpOwogCiAvKgogICAgIEdldCB0aGUgaW50ZWdlciByZXByZXNlbnRl
ZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlzIG5vdCBhbgogICAgIGludGVnZXIgaWRl
bnRpZmllciwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCiAqLworSU1QT1JUX0MKIGludDMy
X3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKIAogLyoK
QEAgLTI5MSwxMSArMjk5LDEzIEBADQogICAgIGZ1bmN0aW9uIGl0IGlzIHRoZSByZXNwb25zaWJp
bGl0eSBvZiB0aGF0IGltcGxlbWVudGF0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCByZXRhaW4KICAg
ICBjb3VudCB0byAxLgogKi8KK0lNUE9SVF9DCiBOUE9iamVjdCAqTlBOX0NyZWF0ZU9iamVjdChO
UFAgbnBwLCBOUENsYXNzICphQ2xhc3MpOwogCiAvKgogICAgIEluY3JlbWVudCB0aGUgTlBPYmpl
Y3QncyByZWZlcmVuY2UgY291bnQuCiAqLworSU1QT1JUX0MKIE5QT2JqZWN0ICpOUE5fUmV0YWlu
T2JqZWN0IChOUE9iamVjdCAqb2JqKTsKIAogLyoKQEAgLTMwMyw2ICszMTMsNyBAQA0KICAgICBj
b3VudCBnb2VzIHRvIHplcm8sIHRoZSBjbGFzcydzIGRlc3Ryb3kgZnVuY3Rpb24gaXMgaW52b2tl
IGlmCiAgICAgc3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIG9iamVjdCBpcyBmcmVlZCBkaXJlY3Rs
eS4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fUmVsZWFzZU9iamVjdCAoTlBPYmplY3QgKm9iaik7
CiAKIC8qCkBAIC0zMTYsMTkgKzMyNywyOCBAQA0KICAgICBDYWxscyBtYWRlIGZyb20gcGx1Z2lu
IGNvZGUgdG8gc2NyaXB0IG11c3QgYmUgbWFkZSBmcm9tIHRoZSB0aHJlYWQKICAgICBvbiB3aGlj
aCB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZC4KICovCitJTVBPUlRfQwogYm9vbCBOUE5fSW52
b2tlKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNv
bnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0
KTsKK0lNUE9SVF9DCiBib29sIE5QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpu
cG9iaiwgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50
ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBOX0V2YWx1YXRlKE5QUCBucHAsIE5QT2JqZWN0
ICpucG9iaiwgTlBTdHJpbmcgKnNjcmlwdCwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MK
IGJvb2wgTlBOX0dldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICpyZXN1bHQpOworSU1QT1JUX0MKIGJvb2wgTlBO
X1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSwgY29uc3QgTlBWYXJpYW50ICp2YWx1ZSk7CitJTVBPUlRfQwogYm9vbCBOUE5fUmVt
b3ZlUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKTsKK0lNUE9SVF9DCiBib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVj
dCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOworSU1QT1JUX0MKIGJvb2wgTlBO
X0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKTsKIAogLyoKICAgICBOUE5fU2V0RXhjZXB0aW9uIG1heSBiZSBjYWxsZWQgdG8gdHJpZ2dl
ciBhIHNjcmlwdCBleGNlcHRpb24gdXBvbiByZXR1cm4KICAgICBmcm9tIGVudHJ5IHBvaW50cyBp
bnRvIE5QT2JqZWN0cy4KICovCitJTVBPUlRfQwogdm9pZCBOUE5fU2V0RXhjZXB0aW9uIChOUE9i
amVjdCAqb2JqLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Bhc3NSZWZQdHIuaAkocmV2aXNpb24gMCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDApDQpAQCAt
MCwwICsxLDE4OCBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQ0K
Ky8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICogIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUEFTU19SRUZfUFRSX0gNCisj
ZGVmaW5lIEtYTUxDT1JFX1BBU1NfUkVGX1BUUl9IDQorDQorbmFtZXNwYWNlIFdURiB7DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFBh
c3NSZWZQdHI8VD4gYWRvcHRSZWYoVCAqcCk7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IA0KKyAgICBjbGFzcyBQYXNzUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAg
UGFzc1JlZlB0cigpIDogbV9wdHIoMCkge30NCisgICAgICAgIFBhc3NSZWZQdHIoVCAqcHRyKSA6
IG1fcHRyKHB0cikgeyBpZiAocHRyKSBwdHItPnJlZigpOyB9DQorICAgICAgICAvLyBJdCBzb21l
d2hhdCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFsbG93IHRyYW5zZmVyIG9mIG93bmVyc2hp
cCBvdXQgb2YNCisgICAgICAgIC8vIGEgY29uc3QgUGFzc1JlZlB0ci4gSG93ZXZlciwgaXQgbWFr
ZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NSZWZQdHINCisgICAgICAgIC8vIHRl
bXBvcmFyaWVzLCBhbmQgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYSBuZWVkIHRvIHVzZSByZWFsIGNv
bnN0IFBhc3NSZWZQdHJzIA0KKyAgICAgICAgLy8gYW55d2F5Lg0KKyAgICAgICAgUGFzc1JlZlB0
cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZSgpKSB7fQ0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykg
OiBtX3B0cihvLnJlbGVhc2UoKSkgeyB9DQorDQorICAgICAgICB+UGFzc1JlZlB0cigpIHsgaWYg
KFQgKnB0ciA9IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFU+IA0KKyAgICAgICAgUGFzc1JlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8p
IDogbV9wdHIoby5nZXQoKSkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisg
ICAgICAgIA0KKyAgICAgICAgVCAqZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisNCisg
ICAgICAgIFQgKnJlbGVhc2UoKSBjb25zdCB7IFQgKnRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7IHJl
dHVybiB0bXA7IH0NCisNCisgICAgICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpt
X3B0cjsgfQ0KKyAgICAgICAgVCAqb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9
DQorICAgICAgICANCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
cHRyOyB9DQorDQorICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGlt
cGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMu
DQorICAgICAgICB0eXBlZGVmIFQqIChQYXNzUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSko
KSBjb25zdDsNCisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3B0ciA/ICZQYXNzUmVmUHRyOjpnZXQgOiAwOyB9DQorICAgICAgICANCisgICAg
ICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShUICopOw0KKyAgICAgICAgUGFzc1JlZlB0ciYgb3Bl
cmF0b3I9KGNvbnN0IFBhc3NSZWZQdHImKTsNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBQYXNzUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8
VT4mKTsNCisNCisgICAgICAgIGZyaWVuZCBQYXNzUmVmUHRyIGFkb3B0UmVmPFQ+KFQgKik7DQor
ICAgIHByaXZhdGU6DQorICAgICAgICAvLyBhZG9wdGluZyBjb25zdHJ1Y3Rvcg0KKyAgICAgICAg
UGFzc1JlZlB0cihUICpwdHIsIGJvb2wpIDogbV9wdHIocHRyKSB7fQ0KKyAgICAgICAgbXV0YWJs
ZSBUICptX3B0cjsNCisgICAgfTsNCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46
Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mIG8pIA0KKyAgICB7DQorICAgICAgICBUKiBvcHRy
ID0gby5nZXQoKTsNCisgICAgICAgIGlmIChvcHRyKQ0KKyAgICAgICAgICAgIG9wdHItPnJlZigp
Ow0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG9wdHI7DQorICAg
ICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJldHVy
biAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikNCisgICAg
ew0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQorICAgICAg
ICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAgIGlmIChw
dHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0K
KyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxU
PiYgUGFzc1JlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIHJlZikNCisg
ICAgew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxl
YXNlKCk7DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisg
ICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiYgUGFzc1Jl
ZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mIHJlZikNCisgICAgew0KKyAg
ICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IHJlZi5yZWxlYXNlKCk7DQor
ICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAgIHJl
dHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwg
Y29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQo
KSA9PSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBj
b25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0g
Yi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNz
UmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0
KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpIA0KKyAg
ICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgDQorICAgIH0NCisgICAgDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
YSA9PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYg
YSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBh
LCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQ
YXNzUmVmUHRyPFU+JiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGIu
Z2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpDQor
ICAgIHsNCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQq
IGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgDQorICAgIH0NCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUICpwKQ0KKyAgICB7DQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxUPihwLCB0cnVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJf
Y2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihzdGF0aWNfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiBj
b25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgDQorICAgIHsgDQorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoY29uc3RfY2FzdDxUICo+KHAucmVsZWFzZSgpKSk7IA0KKyAg
ICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpQYXNzUmVmUHRyOw0K
K3VzaW5nIFdURjo6YWRvcHRSZWY7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0K
K3VzaW5nIFdURjo6Y29uc3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9Q
QVNTX1JFRl9QVFJfSA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1JlZlB0ci5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9u
IDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvUmVmUHRyLmgJKHJldmlzaW9uIDApDQpA
QCAtMCwwICsxLDE4NSBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQ0KKy8qDQorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzDQorICog
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3INCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YNCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bw0KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfUkVGX1BUUl9IDQorI2Rl
ZmluZSBLWE1MQ09SRV9SRUZfUFRSX0gNCisNCisjaW5jbHVkZSA8YWxnb3JpdGhtPg0KKyNpbmNs
dWRlIDxQYXNzUmVmUHRyLmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUmVmUHRyDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAgUmVmUHRy
KCkgOiBtX3B0cigwKSB7fQ0KKyAgICAgICAgUmVmUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsg
aWYgKHB0cikgcHRyLT5yZWYoKTsgfQ0KKyAgICAgICAgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5yZWYoKTsgfQ0KKyAg
ICAgICAgLy8gc2VlIGNvbW1lbnQgaW4gUGFzc1JlZlB0ci5oIGZvciB3aHkgdGhpcyB0YWtlcyBj
b25zdCByZWZlcmVuY2UNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29u
c3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAgICAgflJlZlB0cigpIHsgaWYgKFQgKnB0ciA9
IG1fcHRyKSBwdHItPmRlcmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyBp
ZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisgICAgICAgIA0KKyAgICAgICAgVCAq
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisgICAgICAgIA0KKyAgICAgICAgUGFzc1Jl
ZlB0cjxUPiByZWxlYXNlKCkgeyBQYXNzUmVmUHRyPFQ+IHRtcCA9IGFkb3B0UmVmKG1fcHRyKTsg
bV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9DQorDQorICAgICAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqbV9wdHI7IH0NCisgICAgICAgIFQgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQ0KKyAgICAgICAgDQorICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3B0cjsgfQ0KKyAgICANCisgICAgICAgIC8vIFRoaXMgY29udmVyc2lvbiBv
cGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3Ro
ZXIgaW50ZWdlciB0eXBlcy4NCisgICAgICAgIHR5cGVkZWYgVCAqIChSZWZQdHI6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKSgpIGNvbnN0Ow0KKyAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlJlZlB0cjo6Z2V0IDogMDsgfQ0KKyAgICAg
ICAgDQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsNCisgICAgICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFQgKik7DQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFQ+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOw0KKw0KKyAgICAg
ICAgdm9pZCBzd2FwKFJlZlB0ciYpOw0KKw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVCAqbV9w
dHI7DQorICAgIH07DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+
JiBvKQ0KKyAgICAgICAgOiBtX3B0cihvLnJlbGVhc2UoKSkNCisgICAgew0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9w
ZXJhdG9yPShjb25zdCBSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIG9wdHIgPSBv
LmdldCgpOw0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQor
ICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAg
IGlmIChwdHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0
aGlzOw0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxVPiYgbykNCisgICAgew0KKyAgICAgICAgVCogb3B0ciA9IG8uZ2V0KCk7DQorICAg
ICAgICBpZiAob3B0cikNCisgICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0
ciA9IG1fcHRyOw0KKyAgICAgICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisg
ICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0N
CisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQ0KKyAgICB7DQorICAgICAgICBpZiAob3B0cikNCisg
ICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAgICAg
ICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRl
cmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0
IFBhc3NSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAg
ICAgICAgbV9wdHIgPSBvLnJlbGVhc2UoKTsNCisgICAgICAgIGlmIChwdHIpDQorICAgICAgICAg
ICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0
cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYgbykNCisgICAg
ew0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgp
Ow0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAg
ICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4mIG8pDQorICAgIHsNCisgICAgICAgIHN0
ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGlubGluZSB2b2lkIHN3YXAoUmVmUHRyPFQ+JiBhLCBSZWZQdHI8VD4mIGIpDQorICAgIHsN
CisgICAgICAgIGEuc3dhcChiKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEs
IGNvbnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09
IGIuZ2V0KCk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYgYSwgVSogYikNCisg
ICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IA0KKyAgICB9DQorICAgIA0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpIA0KKyAgICB7DQorICAgICAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25z
dCBSZWZQdHI8VT4mIGIpDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdl
dCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpDQorICAgIHsN
CisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGI7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IFJlZlB0cjxVPiYgYikNCisgICAgeyANCisgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IA0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIFJlZlB0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFJlZlB0cjxVPiYgcCkN
CisgICAgeyANCisgICAgICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgUmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHAp
DQorICAgIHsgDQorICAgICAgICByZXR1cm4gUmVmUHRyPFQ+KGNvbnN0X2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IA0KKyAgICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpS
ZWZQdHI7DQordXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0Ow0KK3VzaW5nIFdURjo6Y29u
c3RfcG9pbnRlcl9jYXN0Ow0KKw0KKyNlbmRpZiAvLyBLWE1MQ09SRV9SRUZfUFRSX0gNCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI2
LDExICsyNiwxMSBAQA0KICNpbmNsdWRlIDxpbnRlcnByZXRlci5oPgogCiAjaW5jbHVkZSA8cnVu
dGltZV9vYmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KLSNpbmNsdWRlIDxvYmpj
X2luc3RhbmNlLmg+CisvLyNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KKy8vI2luY2x1ZGUgPG9i
amNfaW5zdGFuY2UuaD4KICNpbmNsdWRlIDxjX2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8TlBfanNv
YmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPGpuaV9qc29i
amVjdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIEtKUzo6Qmlu
ZGluZ3M7CkBAIC05OSwzMyArOTksMzUgQEANCiAgICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFu
Y2UgKGV4ZWMsIHRoaXMsIGFWYWx1ZSk7CiB9CiAKK0VYUE9SVF9DCiBJbnN0YW5jZSAqSW5zdGFu
Y2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChCaW5kaW5nTGFuZ3VhZ2UgbGFu
Z3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0ICpleGVjdXRpb25D
b250ZXh0KQogewogICAgIEluc3RhbmNlICpuZXdJbnN0YW5jZSA9IDA7CiAgICAgCiAgICAgc3dp
dGNoIChsYW5ndWFnZSkgewotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICBu
ZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJ
bnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4dCk7Ci0JICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3Rh
bmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGlu
Z3M6Ok9iamNJbnN0YW5jZSAoKHN0cnVjdCBvYmpjX29iamVjdCAqKW5hdGl2ZUluc3RhbmNlKTsK
LQkgICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogewotCSAgICBuZXdJ
bnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6Q0luc3RhbmNlICgoTlBPYmplY3QgKiluYXRpdmVJbnN0
YW5jZSk7Ci0JICAgIGJyZWFrOwotCX0KLQlkZWZhdWx0OgotCSAgICBicmVhazsKKyAgICBjYXNl
IEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBC
aW5kaW5nczo6SmF2YUluc3RhbmNlICgoam9iamVjdCluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEluc3RhbmNlOjpPYmpl
Y3RpdmVDTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy9uZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6
T2JqY0luc3RhbmNlICgoc3RydWN0IG9iamNfb2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAg
ICAgIG5ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpDSW5zdGFuY2UgKChOUE9iamVjdCAqKW5h
dGl2ZUluc3RhbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGlmIChuZXdJbnN0YW5jZSkKLQluZXdJbnN0YW5jZS0+
c2V0RXhlY3V0aW9uQ29udGV4dCAoZXhlY3V0aW9uQ29udGV4dCk7Ci0JCisgICAgbmV3SW5zdGFu
Y2UtPnNldEV4ZWN1dGlvbkNvbnRleHQgKGV4ZWN1dGlvbkNvbnRleHQpOworICAgIAogICAgIHJl
dHVybiBuZXdJbnN0YW5jZTsKIH0KIAorRVhQT1JUX0MKIE9iamVjdCBJbnN0YW5jZTo6Y3JlYXRl
UnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0
YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBJbnN0YW5j
ZSAqaW50ZXJmYWNlT2JqZWN0ID0gSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUlu
c3RhbmNlIChsYW5ndWFnZSwgKHZvaWQgKiluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4
dCk7CkBAIC0xMzQsMzIgKzEzNiwzMyBAQA0KICAgICByZXR1cm4gT2JqZWN0KG5ldyBSdW50aW1l
T2JqZWN0SW1wKGludGVyZmFjZU9iamVjdCx0cnVlKSk7CiB9CiAKK0VYUE9SVF9DCiB2b2lkICpJ
bnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChFeGVjU3RhdGUgKmV4ZWMs
IEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgUm9v
dE9iamVjdCAqb3JpZ2luLCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KQogewogICAgIHZvaWQg
KnJlc3VsdCA9IDA7CiAgICAgCiAgICAgaWYgKHZhbHVlLnR5cGUoKSAhPSBPYmplY3RUeXBlKQot
CXJldHVybiAwOworICAgIHJldHVybiAwOwogCiAgICAgT2JqZWN0SW1wICppbXAgPSBzdGF0aWNf
Y2FzdDxPYmplY3RJbXAqPih2YWx1ZS5pbXAoKSk7CiAgICAgCiAgICAgc3dpdGNoIChsYW5ndWFn
ZSkgewotCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewotCSAgICByZXN1bHQg
PSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAodmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Ci0J
ICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3RhbmNlOjpDTGFuZ3VhZ2U6IHsKLQkgICAgcmVzdWx0
ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKDAsIGltcCwgb3JpZ2luLCBjdXJyZW50KTsKLQkg
ICAgYnJlYWs7Ci0JfQotCWNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFnZTogewotCSAgICAvLyBG
SVhNRTogIGZhY3RvciBjcmVhdGlvbiBvZiBqbmlfanNvYmplY3RzLCBhbHNvIHJlbW92ZSB1bm5l
Y2Vzc2FyeSB0aHJlYWQKLQkgICAgLy8gaW52b2NhdGlvbiBjb2RlLgotCSAgICBicmVhazsKLQl9
Ci0JZGVmYXVsdDoKLQkgICAgYnJlYWs7CisgICAgY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xh
bmd1YWdlOiB7CisgICAgICAgIC8vcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFsdWUg
KHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOworICAgICAgICBicmVhazsKICAgICB9CisgICAgY2Fz
ZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7CisgICAgICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2Ny
aXB0T2JqZWN0ICgwLCBpbXAsIG9yaWdpbiwgY3VycmVudCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKKyAgICAgICAgLy8gRklYTUU6
ICBmYWN0b3IgY3JlYXRpb24gb2Ygam5pX2pzb2JqZWN0cywgYWxzbyByZW1vdmUgdW5uZWNlc3Nh
cnkgdGhyZWFkCisgICAgICAgIC8vIGludm9jYXRpb24gY29kZS4KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2luY2x1ZGUgImxpc3QuaCIKICNpbmNsdWRlICJv
YmplY3QuaCIKICNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImhhc2htYXAuaCIKIAogbmFt
ZXNwYWNlIEtKUyAKIHsKQEAgLTEzNiw5ICsxMzcsOSBAQA0KICAgICBzdGF0aWMgdm9pZCBzZXRE
aWRFeGVjdXRlRnVuY3Rpb24gKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKICAgICBz
dGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbiAoKTsKICAg
ICAKLSAgICBzdGF0aWMgSW5zdGFuY2UgKmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNl
IChCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBS
b290T2JqZWN0ICpyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFu
Y2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNv
bnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgUm9vdE9i
amVjdCAqY3VycmVudCk7Ci0gICAgc3RhdGljIE9iamVjdCBjcmVhdGVSdW50aW1lT2JqZWN0IChC
aW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290
T2JqZWN0ICpyID0gMCk7CisgICAgSU1QT1JUX0Mgc3RhdGljIEluc3RhbmNlICpjcmVhdGVCaW5k
aW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpu
YXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOworICAgIElNUE9SVF9DIHN0
YXRpYyB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhl
YywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBjb25zdCBPYmplY3QgJnZhbHVlLCBjb25zdCBS
b290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QgKmN1cnJlbnQpOworICAgIElNUE9S
VF9DIHN0YXRpYyBPYmplY3QgY3JlYXRlUnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxh
bmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOwog
CiAgICAgSW5zdGFuY2UgKCkgOiBfZXhlY3V0aW9uQ29udGV4dCgwKSB7fTsKICAgICAKQEAgLTE4
Nyw2ICsxODgsOSBAQA0KIAogY29uc3QgY2hhciAqc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25z
dCBLSlM6Okxpc3QgJmFMaXN0KTsKIAordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpS
ZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOwordHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVU3RyaW5nOjpSZXA+LCBGaWVsZCo+IEZpZWxkTWFwOwogfSAvLyBuYW1lc3BhY2UgQmluZGlu
Z3MKIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9y
dW50aW1lX29iamVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0LDcgKzU0
LDcgQEANCiAgICAgfQogfQogCi1SdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKEJp
bmRpbmdzOjpJbnN0YW5jZSAqaSwgYm9vbCBvaSkgOiBPYmplY3RJbXAgKChPYmplY3RJbXAgKikw
KQorRVhQT1JUX0MgUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChCaW5kaW5nczo6
SW5zdGFuY2UgKmksIGJvb2wgb2kpIDogT2JqZWN0SW1wICgoT2JqZWN0SW1wICopMCkKIHsKICAg
ICBvd25zSW5zdGFuY2UgPSBvaTsKICAgICBpbnN0YW5jZSA9IGk7CkBAIC04Myw3ICs4Myw3IEBA
DQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdCAobmV3IFJ1bnRpbWVNZXRob2RJbXAo
ZXhlYywgcHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQkKKyAgICAKICAgICAgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gVW5kZWZpbmVkVHlwZSkg
ewogICAgICAgICAgICAgLy8gVHJ5IGEgZmFsbGJhY2sgb2JqZWN0LgogICAgICAgICAgICAgcmVz
dWx0ID0gYUNsYXNzLT5mYWxsYmFja09iamVjdCAoZXhlYywgaW5zdGFuY2UsIHByb3BlcnR5TmFt
ZSk7CkBAIC0xMDcsMTAgKzEwNywxMCBAQA0KICAgICAgICAgZ2V0SW50ZXJuYWxJbnN0YW5jZSgp
LT5zZXRWYWx1ZU9mRmllbGQoZXhlYywgYUZpZWxkLCB2YWx1ZSk7CiAgICAgfQogICAgIGVsc2Ug
ewotCWlmIChnZXRJbnRlcm5hbEluc3RhbmNlKCktPnN1cHBvcnRzU2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKCkpewotCSAgICBnZXRJbnRlcm5hbEluc3RhbmNlKCktPnNldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLQl9CisgICAgaWYgKGdldEludGVy
bmFsSW5zdGFuY2UoKS0+c3VwcG9ydHNTZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoKSl7CisgICAg
ICAgIGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0KKyAgICB9CiAKICAgICBpbnN0YW5jZS0+ZW5k
KCk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEANCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogCiAgICAg
aWYgKGFGaWVsZCkKLQlyZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9v
YmplY3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVf
b2JqZWN0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1
bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNyw3ICszNyw3IEBADQogICAgIAog
ICAgIH5SdW50aW1lT2JqZWN0SW1wKCk7CiAgICAgCi0gICAgUnVudGltZU9iamVjdEltcChCaW5k
aW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3RhbmNlID0gdHJ1ZSk7CisgICAgSU1QT1JU
X0MgUnVudGltZU9iamVjdEltcChCaW5kaW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb3duc0luc3Rh
bmNlID0gdHJ1ZSk7CiAKICAgICBjb25zdCBDbGFzc0luZm8gKmNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CiAKQEAgLTQ5LDcgKzQ5LDcgQEANCiAgICAgdmlydHVhbCBib29sIGNh
blB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLAot
CQkJICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC0yMCw5ICsyMCw5IEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2luY2x1ZGUgPGpuaV9q
c29iamVjdC5oPgorLy8jaW5jbHVkZSA8am5pX2pzb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZV9yb290Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CkBAIC00Miw2ICs0Miw3IEBADQogLy8g
MSBPUiB0aGUgYXBwbGV0IGlzIHNodXRkb3duIHdlIGRlcmVmIHRoZSBKYXZhU2NyaXB0IGluc3Rh
bmNlLiAgQXBwbGV0IGluc3RhbmNlcwogLy8gYXJlIHJlcHJlc2VudGVkIGJ5IGEgamxvbmcuCiAK
Ky8qCiBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzQnlSb290RGljdGlv
bmFyeSA9IDA7CiAKIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGdldFJlZmVyZW5jZXNC
eVJvb3REaWN0aW9uYXJ5KCkKQEAgLTU1LDcgKzU2LDcgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkoKTsK
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gMDsKLSAg
ICAKKwogICAgIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKHJlZnNCeVJvb3QsIChjb25zdCB2b2lkICopcm9vdCk7CiAg
ICAgaWYgKCFyZWZlcmVuY2VzRGljdGlvbmFyeSkgewogICAgICAgICByZWZlcmVuY2VzRGljdGlv
bmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwgTlVMTCk7CkBA
IC02NSw3ICs2Niw3IEBADQogICAgIHJldHVybiByZWZlcmVuY2VzRGljdGlvbmFyeTsKIH0KIAot
Ly8gU2NhbiBhbGwgdGhlIGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9vdHMgdG8gc2VlIGlmIGFu
eSBoYXZlIGEgCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFyeSBmb3IgYWxsIHRoZSByb290cyB0
byBzZWUgaWYgYW55IGhhdmUgYQogLy8gcmVmZXJlbmNlIHRvIHRoZSBpbXAsIGFuZCBpZiBzbywg
cmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CiAvLyBkaWN0aW9uYXJ5LgogLy8gRklYTUU6ICBU
aGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxl
dHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKQEAgLTc0LDExICs3NSwxMSBAQA0KIHsKICAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290
RGljdGlvbmFyeSAoKTsKICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZvdW5kRGljdGlvbmFy
eSA9IDA7Ci0gICAgCisKICAgICBpZiAocmVmc0J5Um9vdCkgewogICAgICAgICBjb25zdCB2b2lk
ICoqYWxsVmFsdWVzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisK
ICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAg
ICAgYWxsVmFsdWVzID0gKGNvbnN0IHZvaWQgKiopbWFsbG9jIChzaXplb2Yodm9pZCAqKSAqIGNv
dW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyAocmVmc0J5Um9vdCwg
TlVMTCwgYWxsVmFsdWVzKTsKQEAgLTg5LDcgKzkwLDcgQEANCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAo
KHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KICAgICByZXR1cm4gZm91bmREaWN0aW9uYXJ5OwpA
QCAtMTAxLDEyICsxMDIsMTIgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZz
QnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgKCk7CiAgICAgY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKnJvb3RPYmplY3QgPSAwOwotICAgIAorCiAgICAgaWYgKHJlZnNC
eVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFsbFZhbHVlcyA9IDA7CiAgICAgICAgIGNv
bnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsKLSAgICAg
ICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsK
ICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikg
KiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6
ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xMTgsNyArMTE5LDcgQEANCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMp
OwogICAgIH0KQEAgLTEyOSwxMiArMTMwLDEyIEBADQogewogICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3REaWN0aW9uYXJ5ICgpOwogICAg
IGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICphUm9vdE9iamVjdCA9IDAsICpyZXN1bHQgPSAw
OwotICAgIAorCiAgICAgaWYgKHJlZnNCeVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFs
bFZhbHVlcyA9IDA7CiAgICAgICAgIGNvbnN0IHZvaWQgKiphbGxLZXlzID0gMDsKICAgICAgICAg
Q0ZJbmRleCBjb3VudCwgaTsKLSAgICAgICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25h
cnlHZXRDb3VudChyZWZzQnlSb290KTsKICAgICAgICAgYWxsS2V5cyA9IChjb25zdCB2b2lkICoq
KW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChj
b25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CkBAIC0xNDYsNyAr
MTQ3LDcgQEANCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgCisKICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxLZXlzKTsKICAgICAgICAg
ZnJlZSAoKHZvaWQgKilhbGxWYWx1ZXMpOwogICAgIH0KQEAgLTE1Nyw3ICsxNTgsNyBAQA0KIHsK
ICAgICBpZiAocm9vdCkgewogICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5j
ZXNEaWN0aW9uYXJ5ID0gZ2V0UmVmZXJlbmNlc0RpY3Rpb25hcnkgKHJvb3QpOwotICAgICAgICAK
KwogICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUmVmZXJlbmNlcyA9ICh1bnNpZ25lZCBpbnQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCBpbXApOwogICAgICAgICBp
ZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7CiAjaWYgIVVTRV9DT05TRVJWQVRJVkVfR0MKQEAgLTE2
Niw3ICsxNjcsNyBAQA0KICNpZiBVU0VfQ09OU0VSVkFUSVZFX0dDIHwgVEVTVF9DT05TRVJWQVRJ
VkVfR0MKICAgICAgICAgICAgIEludGVycHJldGVyTG9jayBsb2NrOwogICAgICAgICAgICAgZ2NQ
cm90ZWN0KGltcCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlIChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wLCAgKGNvbnN0IHZvaWQgKikxKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE3OCw4ICsxNzksOCBAQA0KIHZvaWQgS0pTOjpC
aW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJbXAgKmltcCkKIHsKICAgICBp
ZiAoIWltcCkKLQlyZXR1cm47Ci0JCisgICAgcmV0dXJuOworCiAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5IChp
bXApOwogCiAgICAgaWYgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5KSB7CkBAIC0xOTEsNyArMTkyLDcg
QEANCiAjaWYgVVNFX0NPTlNFUlZBVElWRV9HQyB8IFRFU1RfQ09OU0VSVkFUSVZFX0dDCiAgICAg
ICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICAgICAgICAgIGdjVW5wcm90ZWN0KGlt
cCk7Ci0jZW5kaWYgCisjZW5kaWYKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVl
IChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsK
QEAgLTIyMywxMCArMjI0LDEwIEBADQogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUphdmFTY3JpcHRB
Y2Nlc3NMb2NrKCkKIHsKICAgICBwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7Ci0gICAgCisKICAg
ICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZhdHRyKTsKICAgICBwdGhyZWFkX211dGV4YXR0cl9z
ZXR0eXBlICgmYXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUpOwotICAgIAorCiAgICAgcHRo
cmVhZF9tdXRleF9pbml0KCZqYXZhU2NyaXB0QWNjZXNzTG9jaywgJmF0dHIpOwogfQogCkBAIC0y
NjAsNyArMjYxLDcgQEANCiAgICAgLy8gY2FsbCBjb21wbGV0ZXMuCiAgICAgLy8KICAgICAvLyBG
SVhNRTogIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaXNzdWUuICBDcmVh
dGluZyBhbmQKLSAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNlcyBpcyBleHBlbnNpdmUuICBX
ZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZSAKKyAgICAvLyBhZGRpbmcgcnVuIGxvb3Agc291cmNl
cyBpcyBleHBlbnNpdmUuICBXZSBjb3VsZCBjcmVhdGUgb25lIHNvdXJjZQogICAgIC8vIHBlciB0
aHJlYWQsIGFzIG5lZWRlZCwgaW5zdGVhZC4KICAgICBjb250ZXh0LT5vcmlnaW5hdGluZ0xvb3Ag
PSBjdXJyZW50UnVuTG9vcDsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHNvdXJjZUNvbnRl
eHQgPSB7MCwgY29udGV4dCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgY29tcGxldGVkSmF2YVNjcmlwdEFjY2Vzc307CkBAIC0yNzIsNyArMjczLDcgQEANCiAgICAg
aWYgKENGUnVuTG9vcElzV2FpdGluZyhSb290T2JqZWN0OjpydW5Mb29wKCkpKSB7CiAgICAgICAg
IENGUnVuTG9vcFdha2VVcChSb290T2JqZWN0OjpydW5Mb29wKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIC8vIFdhaXQgdW50aWwgdGhlIEphdmFTY3JpcHQgYWNjZXNzIHRocmVhZCBpcyBkb25lLgog
ICAgIENGUnVuTG9vcFJ1biAoKTsKIApAQCAtMjg2LDE1ICsyODcsMTUgQEANCiBzdGF0aWMgdm9p
ZCBwZXJmb3JtSmF2YVNjcmlwdEFjY2Vzcyh2b2lkICppKQogewogICAgIGFzc2VydCAoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpID09IFJvb3RPYmplY3Q6OnJ1bkxvb3AoKSk7Ci0gICAgCisKICAgICAv
LyBEaXNwYXRjaCBKYXZhU2NyaXB0IGNhbGxzIGhlcmUuCiAgICAgQ0ZSdW5Mb29wU291cmNlQ29u
dGV4dCBzb3VyY2VDb250ZXh0OwogICAgIENGUnVuTG9vcFNvdXJjZUdldENvbnRleHQgKGNvbXBs
ZXRpb25Tb3VyY2UsICZzb3VyY2VDb250ZXh0KTsKLSAgICBKU09iamVjdENhbGxDb250ZXh0ICpj
YWxsQ29udGV4dCA9IChKU09iamVjdENhbGxDb250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOyAg
ICAKKyAgICBKU09iamVjdENhbGxDb250ZXh0ICpjYWxsQ29udGV4dCA9IChKU09iamVjdENhbGxD
b250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOwogICAgIENGUnVuTG9vcFJlZiBvcmlnaW5hdGlu
Z0xvb3AgPSBjYWxsQ29udGV4dC0+b3JpZ2luYXRpbmdMb29wOwogCiAgICAgSlNPYmplY3Q6Omlu
dm9rZSAoY2FsbENvbnRleHQpOwotICAgIAorCiAgICAgLy8gU2lnbmFsIHRoZSBvcmlnaW5hdGlu
ZyB0aHJlYWQgdGhhdCB3ZSdyZSBkb25lLgogICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCAoY29t
cGxldGlvblNvdXJjZSk7CiAgICAgaWYgKENGUnVuTG9vcElzV2FpdGluZyhvcmlnaW5hdGluZ0xv
b3ApKSB7CkBAIC0zMTIsOCArMzEzLDggQEANCiAgICAgYXNzZXJ0IChfZmluZFJvb3RPYmplY3RG
b3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciA9PSAwKTsKIAogICAgIF9maW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyID0gYUZ1bmM7Ci0gICAgCi0gICAgLy8gQXNzdW1lIHRo
YXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJdCdsbCBtb3N0IAorCisg
ICAgLy8gQXNzdW1lIHRoYXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJ
dCdsbCBtb3N0CiAgICAgLy8gbGlrZWx5IChhbHdheXM/KSBiZSB0aGUgbWFpbiBsb29wLgogICAg
IF9ydW5Mb29wID0gKENGUnVuTG9vcFJlZilDRlJldGFpbiAoQ0ZSdW5Mb29wR2V0Q3VycmVudCAo
KSk7CiAKQEAgLTMyNCwxNSArMzI1LDE3IEBADQogICAgIENGUnVuTG9vcEFkZFNvdXJjZShCaW5k
aW5nczo6Um9vdE9iamVjdDo6X3J1bkxvb3AsIEJpbmRpbmdzOjpSb290T2JqZWN0OjpfcGVyZm9y
bUphdmFTY3JpcHRTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKKyovCiAvLyBN
dXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsZXQgaXMgc2h1dGRvd24uCitFWFBPUlRfQwogdm9p
ZCBSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpCiB7Ci0gICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGdldFJlZmVyZW5jZXNEaWN0
aW9uYXJ5ICh0aGlzKTsKLSAgICAKKy8qICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJl
bmNlc0RpY3Rpb25hcnkgPSBnZXRSZWZlcmVuY2VzRGljdGlvbmFyeSAodGhpcyk7CisKICAgICBp
ZiAocmVmZXJlbmNlc0RpY3Rpb25hcnkpIHsKICAgICAgICAgdm9pZCAqKmFsbEltcHMgPSAwOwog
ICAgICAgICBDRkluZGV4IGNvdW50LCBpOwotICAgICAgICAKKwogICAgICAgICBjb3VudCA9IENG
RGljdGlvbmFyeUdldENvdW50KHJlZmVyZW5jZXNEaWN0aW9uYXJ5KTsKICAgICAgICAgYWxsSW1w
cyA9ICh2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCAoY29uc3Qg
dm9pZCAqKilhbGxJbXBzLCBOVUxMKTsKQEAgLTM1NCwxMSArMzU3LDEyNyBAQA0KICAgICAgICAg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERp
Y3Rpb25hcnkoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUgKHJlZnNCeVJvb3Qs
IChjb25zdCB2b2lkICopdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0qLworfQor
CisKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCosIFJlZmVyZW5j
ZXNTZXQqPiBSZWZlcmVuY2VzQnlSb290TWFwOworCitzdGF0aWMgUmVmZXJlbmNlc0J5Um9vdE1h
cCogZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCgpCit7CisgICAgc3RhdGljIFJlZmVyZW5jZXNCeVJv
b3RNYXAqIHJlZmVyZW5jZXNCeVJvb3RNYXAgPSAwOworCisgICAgaWYgKCFyZWZlcmVuY2VzQnlS
b290TWFwKQorICAgICAgICByZWZlcmVuY2VzQnlSb290TWFwID0gbmV3IFJlZmVyZW5jZXNCeVJv
b3RNYXA7CisKKyAgICByZXR1cm4gcmVmZXJlbmNlc0J5Um9vdE1hcDsKK30KKworc3RhdGljIFJl
ZmVyZW5jZXNTZXQqIGdldFJlZmVyZW5jZXNTZXQoY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3QpCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdldFJlZmVy
ZW5jZXNCeVJvb3RNYXAoKTsKKyAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VzU2V0ID0gMDsK
KworICAgIHJlZmVyZW5jZXNTZXQgPSByZWZzQnlSb290LT5nZXQocm9vdCk7CisgICAgaWYgKCFy
ZWZlcmVuY2VzU2V0KSB7CisgICAgICAgIHJlZmVyZW5jZXNTZXQgID0gbmV3IFJlZmVyZW5jZXNT
ZXQ7CisgICAgICAgIHJlZnNCeVJvb3QtPmFkZChyb290LCByZWZlcmVuY2VzU2V0KTsKICAgICB9
CisgICAgcmV0dXJuIHJlZmVyZW5jZXNTZXQ7CiB9CiAKLXZvaWQgUm9vdE9iamVjdDo6c2V0SW50
ZXJwcmV0ZXIgKEtKUzo6SW50ZXJwcmV0ZXIgKmkpCisvLyBTY2FuIGFsbCB0aGUgZGljdGlvbmFy
eSBmb3IgYWxsIHRoZSByb290cyB0byBzZWUgaWYgYW55IGhhdmUgYQorLy8gcmVmZXJlbmNlIHRv
IHRoZSBpbXAsIGFuZCBpZiBzbywgcmV0dXJuIGl0J3MgcmVmZXJlbmNlIGNvdW50CisvLyBkaWN0
aW9uYXJ5LgorLy8gRklYTUU6ICBUaGlzIGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRs
ZW5lY2sgd2l0aCBtYW55IGFwcGxldHMuICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGlt
cCB0byByb290IGRpY3Rpb25hcnkuCitSZWZlcmVuY2VzU2V0KiBLSlM6OkJpbmRpbmdzOjpmaW5k
UmVmZXJlbmNlU2V0KE9iamVjdEltcCAqaW1wKQogeworICAgIFJlZmVyZW5jZXNCeVJvb3RNYXAq
IHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290TWFwICgpOworICAgIGlmIChyZWZzQnlS
b290KSB7CisgICAgICAgIFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHJlZnNCeVJvb3QtPmVuZCgpOworICAgICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBSZWZlcmVuY2VzU2V0KiBzZXQgPSBpdC0+c2Vjb25kOworCisgICAgICAg
ICAgICBpZiAoc2V0LT5jb250YWlucyhpbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBzZXQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gRklYTUU6ICBUaGlz
IGlzIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxldHMu
ICBXZSBjb3VsZCBmaXggYmUgYWRkaW5nIGEKKy8vIGltcCB0byByb290IGRpY3Rpb25hcnkuCitj
b25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nczo6cm9vdEZvckltcCAoT2Jq
ZWN0SW1wICppbXApCit7CisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9vdCA9IGdl
dFJlZmVyZW5jZXNCeVJvb3RNYXAgKCk7CisgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KnJvb3RPYmplY3QgPSAwOworCisgICAgaWYgKHJlZnNCeVJvb3QpIHsKKyAgICAgICAgUmVmZXJl
bmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVmc0J5Um9vdC0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoUmVmZXJlbmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWZz
QnlSb290LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlZmVyZW5j
ZXNTZXQqIHNldCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBpZiAoc2V0LT5jb250YWlucyhp
bXApKSB7CisgICAgICAgICAgICAgICAgcm9vdE9iamVjdCA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiByb290T2JqZWN0OworfQorCitjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpC
aW5kaW5nczo6cm9vdEZvckludGVycHJldGVyIChLSlM6OkludGVycHJldGVyICppbnRlcnByZXRl
cikKK3sKKyAgICBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNl
c0J5Um9vdE1hcCAoKTsKKworICAgIGlmIChyZWZzQnlSb290KSB7CisgICAgICAgIFJlZmVyZW5j
ZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlZnNCeVJvb3QtPmVuZCgpOworICAg
ICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5
Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjb25zdCBCaW5k
aW5nczo6Um9vdE9iamVjdCogYVJvb3RPYmplY3QgPSBpdC0+Zmlyc3Q7CisKKyAgICAgICAgICAg
IGlmIChhUm9vdE9iamVjdC0+aW50ZXJwcmV0ZXIoKSA9PSBpbnRlcnByZXRlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYVJvb3RPYmplY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVuY2UgKGNvbnN0
IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCkKK3sKKyAgICBpZiAo
cm9vdCkgeworICAgICAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VNYXAgPSBnZXRSZWZlcmVu
Y2VzU2V0IChyb290KTsKKworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlTWFwLT5jb3VudChpbXApOworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7Cisv
LyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NQcm90ZWN0KGltcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVmZXJlbmNlTWFwLT5hZGQoaW1wKTsKKyAgICB9Cit9CisKK0VY
UE9SVF9DIHZvaWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlIChPYmplY3RJ
bXAgKmltcCkKK3sKKyAgICBpZiAoIWltcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmZXJl
bmNlc1NldCAqcmVmZXJlbmNlc1NldCA9IGZpbmRSZWZlcmVuY2VTZXQoaW1wKTsKKyAgICBpZiAo
cmVmZXJlbmNlc1NldCkgeworICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0gcmVmZXJl
bmNlc1NldC0+Y291bnQoaW1wKTsKKworICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAxKSB7
CisvLyAgICAgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICAgICAgZ2NVbnByb3RlY3QoaW1w
KTsKKyAgICAgICAgfQorICAgICAgICByZWZlcmVuY2VzU2V0LT5yZW1vdmUoaW1wKTsKKyAgICB9
Cit9CisKK0VYUE9SVF9DIHZvaWQgUm9vdE9iamVjdDo6c2V0SW50ZXJwcmV0ZXIgKEtKUzo6SW50
ZXJwcmV0ZXIgKmkpCit7CiAgICAgX2ludGVycHJldGVyID0gaTsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9yb290LmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Nyw4ICsyNyw5IEBADQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9vYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9qbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL2puaV9qc29i
amVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDxI
YXNoQ291bnRlZFNldC5oPgogCiBuYW1lc3BhY2UgS0pTIHsKIApAQCAtMzYsOSArMzcsMTEgQEAN
CiAKIGNsYXNzIFJvb3RPYmplY3Q7CiAKK3R5cGVkZWYgSGFzaENvdW50ZWRTZXQ8T2JqZWN0SW1w
Kj4gUmVmZXJlbmNlc1NldDsKIHR5cGVkZWYgUm9vdE9iamVjdCAqKCpGaW5kUm9vdE9iamVjdEZv
ck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyKSh2b2lkICopOwogCi1leHRlcm4gQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJbXAgKmltcCk7CisvL2V4
dGVybiBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZpbmRSZWZlcmVuY2VEaWN0aW9uYXJ5KE9iamVj
dEltcCAqaW1wKTsKK2V4dGVybiBSZWZlcmVuY2VzU2V0KiBmaW5kUmVmZXJlbmNlU2V0KE9iamVj
dEltcCAqaW1wKTsKIGV4dGVybiBjb25zdCBSb290T2JqZWN0ICpyb290Rm9ySW1wIChPYmplY3RJ
bXAgKmltcCk7CiBleHRlcm4gY29uc3QgUm9vdE9iamVjdCAqcm9vdEZvckludGVycHJldGVyIChJ
bnRlcnByZXRlciAqaW50ZXJwcmV0ZXIpOwogZXh0ZXJuIHZvaWQgYWRkTmF0aXZlUmVmZXJlbmNl
IChjb25zdCBSb290T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCk7CkBAIC03NCwxMCArNzcs
MTAgQEANCiAgICAgCiAgICAgT2JqZWN0SW1wICpyb290T2JqZWN0SW1wKCkgY29uc3QgeyByZXR1
cm4gX2ltcDsgfQogICAgIAotICAgIHZvaWQgc2V0SW50ZXJwcmV0ZXIgKEludGVycHJldGVyICpp
KTsKKyAgICBJTVBPUlRfQyB2b2lkIHNldEludGVycHJldGVyIChJbnRlcnByZXRlciAqaSk7CiAg
ICAgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyKCkgY29uc3QgeyByZXR1cm4gX2ludGVycHJldGVy
OyB9CiAKLSAgICB2b2lkIHJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CisgICAgSU1QT1JU
X0Mgdm9pZCByZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpOwogCiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSB0aHJlYWQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWNjZXNzIEphdmFT
Y3JpcHQuCkBAIC04NiwxMSArODksMTEgQEANCiAgICAgICAgIHJldHVybiBfZmluZFJvb3RPYmpl
Y3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0cjsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENG
UnVuTG9vcFJlZiBydW5Mb29wKCkgeyByZXR1cm4gX3J1bkxvb3A7IH0KLSAgICBzdGF0aWMgQ0ZS
dW5Mb29wU291cmNlUmVmIHBlcmZvcm1KYXZhU2NyaXB0U291cmNlKCkgeyByZXR1cm4gX3BlcmZv
cm1KYXZhU2NyaXB0U291cmNlOyB9CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3Ao
KSB7IHJldHVybiBfcnVuTG9vcDsgfQorICAgIC8vc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBw
ZXJmb3JtSmF2YVNjcmlwdFNvdXJjZSgpIHsgcmV0dXJuIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJj
ZTsgfQorCisgICAgLy9zdGF0aWMgdm9pZCBkaXNwYXRjaFRvSmF2YVNjcmlwdFRocmVhZChKU09i
amVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRj
aFRvSmF2YVNjcmlwdFRocmVhZChKU09iamVjdENhbGxDb250ZXh0ICpjb250ZXh0KTsKLSAgICAK
ICAgICBjb25zdCB2b2lkICpuYXRpdmVIYW5kbGUoKSBjb25zdCB7IHJldHVybiBfbmF0aXZlSGFu
ZGxlOyB9CiAKIHByaXZhdGU6CkBAIC05OSw4ICsxMDIsOCBAQA0KICAgICBJbnRlcnByZXRlciAq
X2ludGVycHJldGVyOwogCiAgICAgc3RhdGljIEZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxl
RnVuY3Rpb25QdHIgX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25QdHI7Ci0g
ICAgc3RhdGljIENGUnVuTG9vcFJlZiBfcnVuTG9vcDsKLSAgICBzdGF0aWMgQ0ZSdW5Mb29wU291
cmNlUmVmIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJjZTsKKyAgICAvL3N0YXRpYyBDRlJ1bkxvb3BS
ZWYgX3J1bkxvb3A7CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIF9wZXJmb3JtSmF2
YVNjcmlwdFNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy91dGlsaXR5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvdXRpbGl0eQkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy91dGlsaXR5CShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw1NDkgQEANCisvLyBDb3B5cmln
aHQgKEMpIDIwMDEsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisv
LyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGli
cmFyeSBpcyBmcmVlDQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkgaXQgdW5kZXIgdGhlDQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIg
dmVyc2lvbi4NCisNCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs
b25nDQorLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisv
LyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBv
ZiBhIGZyZWUgc29mdHdhcmUNCisvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVj
aWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVz
ZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBp
bGUNCisvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNl
IGFuIGV4ZWN1dGFibGUsIHRoaXMNCisvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0
aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisv
LyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1p
Z2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQor
DQorLyoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBD
b21wYW55DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmli
dXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y
IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVk
IHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5k
DQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0
LVBhY2thcmQgQ29tcGFueSBtYWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUg
c3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlz
IHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQor
ICoNCisgKg0KKyAqIENvcHlyaWdodCAoYykgMTk5NiwxOTk3DQorICogU2lsaWNvbiBHcmFwaGlj
cyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuDQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRz
IGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQg
ZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFy
IGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3Vt
ZW50YXRpb24uICBTaWxpY29uIEdyYXBoaWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25z
IGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJw
b3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3
YXJyYW50eS4NCisgKi8NCisNCisvLyBoYWNrZWQgdG9nZXRoZXIgZnJvbSB2YXJpb3VzIHN0bCBw
YXJ0IHRvIG1ha2UgSlNDLCBXQyBjb21waWxlDQorDQorI2lmbmRlZiBfVVRJTElUWV9IDQorI2Rl
ZmluZSBfVVRJTElUWV9IIDENCisNCisjaW5jbHVkZSA8aXRlcmF0b3I+DQorDQorI2RlZmluZSBf
X2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoYSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9mdW5jdGlv
bl9yZXF1aXJlcyhhKQ0KKyNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlkX3JhbmdlKGEs
YikNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKGEsYikNCisNCituYW1lc3BhY2Ug
c3RkDQorew0KKyAgLy8vIHBhaXIgaG9sZHMgdHdvIG9iamVjdHMgb2YgYXJiaXRyYXJ5IHR5cGUu
DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgc3RydWN0IHBhaXINCisg
ICAgew0KKyAgICAgIHR5cGVkZWYgX1QxIGZpcnN0X3R5cGU7ICAgIC8vLzwgIEBjIGZpcnN0X3R5
cGUgaXMgdGhlIGZpcnN0IGJvdW5kIHR5cGUNCisgICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlw
ZTsgICAvLy88ICBAYyBzZWNvbmRfdHlwZSBpcyB0aGUgc2Vjb25kIGJvdW5kIHR5cGUNCisNCisg
ICAgICBfVDEgZmlyc3Q7ICAgICAgICAgICAgICAgICAvLy88IEBjIGZpcnN0IGlzIGEgY29weSBv
ZiB0aGUgZmlyc3Qgb2JqZWN0DQorICAgICAgX1QyIHNlY29uZDsgICAgICAgICAgICAgICAgLy8v
PCBAYyBzZWNvbmQgaXMgYSBjb3B5IG9mIHRoZSBzZWNvbmQgb2JqZWN0DQorDQorICAgICAgLy8g
X0dMSUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUw0KKyAgICAgIC8vIDI2NS4gIHN0ZDo6cGFpcjo6
cGFpcigpIGVmZmVjdHMgb3Zlcmx5IHJlc3RyaWN0aXZlDQorICAgICAgLyoqIFRoZSBkZWZhdWx0
IGNvbnN0cnVjdG9yIGNyZWF0ZXMgQGMgZmlyc3QgYW5kIEBjIHNlY29uZCB1c2luZyB0aGVpcg0K
KyAgICAgICAqICByZXNwZWN0aXZlIGRlZmF1bHQgY29uc3RydWN0b3JzLiAgKi8NCisgICAgICBw
YWlyKCkNCisgICAgICA6IGZpcnN0KCksIHNlY29uZCgpIHsgfQ0KKw0KKyAgICAgIC8qKiBUd28g
b2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGEgQGMgcGFpciBjb25zdHJ1Y3RvciB0byBiZSBjb3Bp
ZWQuICAqLw0KKyAgICAgIHBhaXIoY29uc3QgX1QxJiBfX2EsIGNvbnN0IF9UMiYgX19iKQ0KKyAg
ICAgIDogZmlyc3QoX19hKSwgc2Vjb25kKF9fYikgeyB9DQorDQorICAgICAgLyoqIFRoZXJlIGlz
IGFsc28gYSB0ZW1wbGF0ZWQgY29weSBjdG9yIGZvciB0aGUgQGMgcGFpciBjbGFzcyBpdHNlbGYu
ICAqLw0KKyAgICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyPg0KKyAgICAgICAgcGFp
cihjb25zdCBwYWlyPF9VMSwgX1UyPiYgX19wKQ0KKwk6IGZpcnN0KF9fcC5maXJzdCksIHNlY29u
ZChfX3Auc2Vjb25kKSB7IH0NCisgICAgfTsNCisNCisgIC8vLyBUd28gcGFpcnMgb2YgdGhlIHNh
bWUgdHlwZSBhcmUgZXF1YWwgaWZmIHRoZWlyIG1lbWJlcnMgYXJlIGVxdWFsLg0KKyAgdGVtcGxh
dGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQorICAgIGlubGluZSBib29sDQorICAgIG9wZXJhdG9y
PT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkN
CisgICAgeyByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9f
eS5zZWNvbmQ7IH0NCisNCisgIC8vLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli
c3RkYysrLzIwX3V0aWwvaG93dG8uaHRtbCNwYWlybHQ+DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEs
IGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wNCisgICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
IF9feC5maXJzdCA8IF9feS5maXJzdA0KKwkgICAgIHx8ICghKF9feS5maXJzdCA8IF9feC5maXJz
dCkgJiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyB9DQorDQorICAvLy8gVXNlcyBAYyBvcGVy
YXRvcj09IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3Mg
X1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1QxLCBf
VDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194
ID09IF9feSk7IH0NCisNCisgIC8vLyBVc2VzIEBjIG9wZXJhdG9yPCB0byBmaW5kIHRoZSByZXN1
bHQuDQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wN
CisgICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1Qx
LCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuIF9feSA8IF9feDsgfQ0KKw0KKyAgLy8vIFVzZXMg
QGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhlIHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvcjw9KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJu
ICEoX195IDwgX194KTsgfQ0KKw0KKyAgLy8vIFVzZXMgQGMgb3BlcmF0b3I8IHRvIGZpbmQgdGhl
IHJlc3VsdC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUg
Ym9vbA0KKyAgICBvcGVyYXRvcj49KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBh
aXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQ0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIEEgY29udmVuaWVuY2Ugd3JhcHBlciBmb3IgY3JlYXRpbmcgYSBw
YWlyIGZyb20gdHdvIG9iamVjdHMuDQorICAgKiAgQHBhcmFtICB4ICBUaGUgZmlyc3Qgb2JqZWN0
Lg0KKyAgICogIEBwYXJhbSAgeSAgVGhlIHNlY29uZCBvYmplY3QuDQorICAgKiAgQHJldHVybiAg
IEEgbmV3bHktY29uc3RydWN0ZWQgcGFpcjw+IG9iamVjdCBvZiB0aGUgYXBwcm9wcmlhdGUgdHlw
ZS4NCisgICAqDQorICAgKiAgVGhlIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgdGhlIG9iamVjdHMg
YmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS10by1jb25zdCwNCisgICAqICBidXQgTFdHIGlzc3VlICMx
ODEgc2F5cyB0aGV5IHNob3VsZCBiZSBwYXNzZWQgYnkgY29uc3QgdmFsdWUuICBXZSBmb2xsb3cN
CisgICAqICB0aGUgTFdHIGJ5IGRlZmF1bHQuDQorICAgKi8NCisgIC8vIF9HTElCQ1hYX1JFU09M
VkVfTElCX0RFRkVDVFMNCisgIC8vIDE4MS4gIG1ha2VfcGFpcigpIHVuaW50ZW5kZWQgYmVoYXZp
b3INCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KKyAgICBpbmxpbmUgcGFpcjxf
VDEsIF9UMj4NCisgICAgbWFrZV9wYWlyKF9UMSBfX3gsIF9UMiBfX3kpDQorICAgIHsgcmV0dXJu
IHBhaXI8X1QxLCBfVDI+KF9feCwgX195KTsgfQ0KKw0KKw0KKw0KKyAgLy8gaXNfaGVhcCwgYSBw
cmVkaWNhdGUgdGVzdGluZyB3aGV0aGVyIG9yIG5vdCBhIHJhbmdlIGlzDQorICAvLyBhIGhlYXAu
ICBUaGlzIGZ1bmN0aW9uIGlzIGFuIGV4dGVuc2lvbiwgbm90IHBhcnQgb2YgdGhlIEMrKw0KKyAg
Ly8gc3RhbmRhcmQuDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9EaXN0YW5jZT4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX24pDQorICAgIHsNCisgICAgICBfRGlz
dGFuY2UgX19wYXJlbnQgPSAwOw0KKyAgICAgIGZvciAoX0Rpc3RhbmNlIF9fY2hpbGQgPSAxOyBf
X2NoaWxkIDwgX19uOyArK19fY2hpbGQpDQorCXsNCisJICBpZiAoX19maXJzdFtfX3BhcmVudF0g
PCBfX2ZpcnN0W19fY2hpbGRdKQ0KKwkgICAgcmV0dXJuIGZhbHNlOw0KKwkgIGlmICgoX19jaGls
ZCAmIDEpID09IDApDQorCSAgICArK19fcGFyZW50Ow0KKwl9DQorICAgICAgcmV0dXJuIHRydWU7
DQorICAgIH0NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLA0KKyAgICAgICAgICAgdHlwZW5hbWUgX1N0cmljdFdlYWtPcmRl
cmluZz4NCisgICAgYm9vbA0KKyAgICBfX2lzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
Zmlyc3QsIF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wLA0KKwkgICAgICBfRGlzdGFuY2UgX19u
KQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsNCisgICAgICBmb3IgKF9E
aXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKQ0KKwl7DQorCSAg
aWYgKF9fY29tcChfX2ZpcnN0W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpDQorCSAgICBy
ZXR1cm4gZmFsc2U7DQorCSAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkNCisJICAgICsrX19wYXJl
bnQ7DQorCX0NCisgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKw0KKyAgLyp0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQorICAgIGJvb2wNCisgICAgX19pc19oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0KQ0KKyAgICB7IHJldHVybiBzdGQ6Ol9faXNfaGVhcChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCkpOyB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9TdHJpY3RXZWFrT3JkZXJpbmc+DQorICAgIGJvb2wNCisg
ICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0LA0KKwkgICAgX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApDQorICAg
IHsgcmV0dXJuIHN0ZDo6X19pc19oZWFwKF9fZmlyc3QsIF9fY29tcCwgc3RkOjpkaXN0YW5jZShf
X2ZpcnN0LCBfX2xhc3QpKTsgfSovDQorDQorICAvLyBIZWFwLW1hbmlwdWxhdGlvbiBmdW5jdGlv
bnM6IHB1c2hfaGVhcCwgcG9wX2hlYXAsIG1ha2VfaGVhcCwgc29ydF9oZWFwLg0KKw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2Us
IHR5cGVuYW1lIF9UcD4NCisgICAgdm9pZA0KKyAgICBfX3B1c2hfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwNCisJCV9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9f
dG9wSW5kZXgsIF9UcCBfX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50
ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9f
dG9wSW5kZXggJiYgKihfX2ZpcnN0ICsgX19wYXJlbnQpIDwgX192YWx1ZSkNCisJew0KKwkgICoo
X19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hv
bGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAy
Ow0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAg
fQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQdXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAu
DQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxh
c3QgICBFbmQgb2YgaGVhcCArIGVsZW1lbnQuDQorICAgKiAgQGluZ3JvdXAgaGVhcA0KKyAgICoN
CisgICAqICBUaGlzIG9wZXJhdGlvbiBwdXNoZXMgdGhlIGVsZW1lbnQgYXQgbGFzdC0xIG9udG8g
dGhlIHZhbGlkIGhlYXAgb3ZlciB0aGUNCisgICAqICByYW5nZSBbZmlyc3QsbGFzdC0xKS4gIEFm
dGVyIGNvbXBsZXRpb24sIFtmaXJzdCxsYXN0KSBpcyBhIHZhbGlkIGhlYXAuDQorICAqLw0KKyAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPg0KKyAgICBpbmxpbmUgdm9p
ZA0KKyAgICBwdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QpDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlDQorCSAgX1Zh
bHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VUeXBlOw0KKw0K
KyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9u
X3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVz
KF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4
eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIC8vICAgICAg
X19nbGliY3h4X3JlcXVpcmVzX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSk7DQorDQorICAgICAg
c3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0
KSAtIDEpLA0KKwkJICAgICAgIF9EaXN0YW5jZVR5cGUoMCksIF9WYWx1ZVR5cGUoKihfX2xhc3Qg
LSAxKSkpOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwLA0KKwkgICAgdHlwZW5hbWUg
X0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwNCisJCV9EaXN0YW5jZSBfX3RvcElu
ZGV4LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAgICAgX0Rpc3Rh
bmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKyAgICAgIHdoaWxlIChfX2hv
bGVJbmRleCA+IF9fdG9wSW5kZXgNCisJICAgICAmJiBfX2NvbXAoKihfX2ZpcnN0ICsgX19wYXJl
bnQpLCBfX3ZhbHVlKSkNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19m
aXJzdCArIF9fcGFyZW50KTsNCisJICBfX2hvbGVJbmRleCA9IF9fcGFyZW50Ow0KKwkgIF9fcGFy
ZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KKwl9DQorICAgICAgKihfX2ZpcnN0ICsgX19o
b2xlSW5kZXgpID0gX192YWx1ZTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQ
dXNoIGFuIGVsZW1lbnQgb250byBhIGhlYXAgdXNpbmcgY29tcGFyaXNvbiBmdW5jdG9yLg0KKyAg
ICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAg
RW5kIG9mIGhlYXAgKyBlbGVtZW50Lg0KKyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24g
ZnVuY3Rvci4NCisgICAqICBAaW5ncm91cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3BlcmF0
aW9uIHB1c2hlcyB0aGUgZWxlbWVudCBhdCBsYXN0LTEgb250byB0aGUgdmFsaWQgaGVhcCBvdmVy
IHRoZQ0KKyAgICogIHJhbmdlIFtmaXJzdCxsYXN0LTEpLiAgQWZ0ZXIgY29tcGxldGlvbiwgW2Zp
cnN0LGxhc3QpIGlzIGEgdmFsaWQgaGVhcC4NCisgICAqICBDb21wYXJlIG9wZXJhdGlvbnMgYXJl
IHBlcmZvcm1lZCB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGluZSB2b2lkDQor
ICAgIHB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQor
CSAgX0Rpc3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAg
ICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVy
YXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xp
YmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0IC0gMSwgX19jb21wKTsNCisN
CisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZVR5cGUoKF9fbGFzdCAt
IF9fZmlyc3QpIC0gMSksDQorCQkgICAgICAgX0Rpc3RhbmNlVHlwZSgwKSwgX1ZhbHVlVHlwZSgq
KF9fbGFzdCAtIDEpKSwgX19jb21wKTsNCisgICAgfQ0KKw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsIHR5cGVuYW1lIF9UcD4N
CisgICAgdm9pZA0KKyAgICBfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsDQorCQkgIF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9f
dmFsdWUpDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRleCA9IF9faG9s
ZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4
ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7DQorCSAgaWYg
KCooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQpIDwgKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQg
LSAxKSkpDQorCSAgICBfX3NlY29uZENoaWxkLS07DQorCSAgKihfX2ZpcnN0ICsgX19ob2xlSW5k
ZXgpID0gKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7DQorCSAgX19ob2xlSW5kZXggPSBfX3Nl
Y29uZENoaWxkOw0KKwkgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsN
CisJfQ0KKyAgICAgIGlmIChfX3NlY29uZENoaWxkID09IF9fbGVuKQ0KKwl7DQorCSAgKihfX2Zp
cnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSk7DQor
CSAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsNCisJfQ0KKyAgICAgIHN0ZDo6X19w
dXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUpOw0KKyAg
ICB9DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVu
YW1lIF9UcD4NCisgICAgaW5saW5lIHZvaWQNCisgICAgX19wb3BfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdCwgX1RwIF9fdmFsdWUpDQorICAgIHsNCisg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2UoMCks
IF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSk7DQorICAgIH0NCisN
CisgIC8qKg0KKyAgICogIEBicmllZiAgUG9wIGFuIGVsZW1lbnQgb2ZmIGEgaGVhcC4NCisgICAq
ICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVu
ZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhpcyBvcGVy
YXRpb24gcG9wcyB0aGUgdG9wIG9mIHRoZSBoZWFwLiAgVGhlIGVsZW1lbnRzIGZpcnN0IGFuZCBs
YXN0LTENCisgICAqICBhcmUgc3dhcHBlZCBhbmQgW2ZpcnN0LGxhc3QtMSkgaXMgbWFkZSBpbnRv
IGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+DQorICAgIGlubGluZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
dmFsdWVfdHlwZQ0KKwlfVmFsdWVUeXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1l
bnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAg
ICAgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9MZXNzVGhhbkNvbXBhcmFibGVDb25jZXB0
PF9WYWx1ZVR5cGU+KQ0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2Zp
cnN0LCBfX2xhc3QpOw0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9f
bGFzdCk7DQorDQorICAgICAgc3RkOjpfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9f
bGFzdCAtIDEsDQorCQkgICAgICBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpKTsNCisgICAgfQ0K
Kw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
RGlzdGFuY2UsDQorCSAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZv
aWQNCisgICAgX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rp
c3RhbmNlIF9faG9sZUluZGV4LA0KKwkJICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlLCBf
Q29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRl
eCA9IF9faG9sZUluZGV4Ow0KKyAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9f
aG9sZUluZGV4ICsgMjsNCisgICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKQ0KKwl7
DQorCSAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwNCisJCSAgICAgKihf
X2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQ0KKwkgICAgX19zZWNvbmRDaGlsZC0tOw0K
KwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQp
Ow0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsNCisJICBfX3NlY29uZENoaWxkID0g
MiAqIChfX3NlY29uZENoaWxkICsgMSk7DQorCX0NCisgICAgICBpZiAoX19zZWNvbmRDaGlsZCA9
PSBfX2xlbikNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCAr
IChfX3NlY29uZENoaWxkIC0gMSkpOw0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZCAt
IDE7DQorCX0NCisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBf
X3RvcEluZGV4LCBfX3ZhbHVlLCBfX2NvbXApOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBh
cmU+DQorICAgIGlubGluZSB2b2lkDQorICAgIF9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsDQorCSAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXAp
DQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJX0Rpc3RhbmNlOw0KKyAgICAgICpf
X3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KKyAgICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBf
RGlzdGFuY2UoMCksIF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwNCisJCQkgX192YWx1ZSwg
X19jb21wKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBQb3AgYW4gZWxlbWVu
dCBvZmYgYSBoZWFwIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZp
cnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0K
KyAgICogIEBwYXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAg
QGluZ3JvdXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBwb3BzIHRoZSB0b3Ag
b2YgdGhlIGhlYXAuICBUaGUgZWxlbWVudHMgZmlyc3QgYW5kIGxhc3QtMQ0KKyAgICogIGFyZSBz
d2FwcGVkIGFuZCBbZmlyc3QsbGFzdC0xKSBpcyBtYWRlIGludG8gYSBoZWFwLiAgQ29tcGFyaXNv
bnMgYXJlDQorICAgKiAgbWFkZSB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIGlubGlu
ZSB2b2lkDQorICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LA0KKwkg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkNCisgICAg
ew0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4X2Z1bmN0
aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwNCisJICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlk
X3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX2hlYXBf
cHJlZChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7DQorDQorICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQ0KKwlf
VmFsdWVUeXBlOw0KKyAgICAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBf
X2xhc3QgLSAxLA0KKwkJICAgICAgX1ZhbHVlVHlwZSgqKF9fbGFzdCAtIDEpKSwgX19jb21wKTsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBDb25zdHJ1Y3QgYSBoZWFwIG92ZXIg
YSByYW5nZS4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQor
ICAgKiAgVGhpcyBvcGVyYXRpb24gbWFrZXMgdGhlIGVsZW1lbnRzIGluIFtmaXJzdCxsYXN0KSBp
bnRvIGEgaGVhcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+DQorICAgIHZvaWQNCisgICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFs
dWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQorCSAgX0Rp
c3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9f
Z2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNv
bmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDxfVmFsdWVUeXBlPikN
CisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsN
CisNCisgICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIpDQorCXJldHVybjsNCisNCisgICAg
ICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsNCisgICAgICBf
RGlzdGFuY2VUeXBlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikgLyAyOw0KKyAgICAgIHdoaWxlICh0
cnVlKQ0KKwl7DQorCSAgc3RkOjpfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xl
biwNCisJCQkgICAgIF9WYWx1ZVR5cGUoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7DQorCSAgaWYg
KF9fcGFyZW50ID09IDApDQorCSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAg
ICB9DQorDQorICAvKioNCisgICAqICBAYnJpZWYgIENvbnN0cnVjdCBhIGhlYXAgb3ZlciBhIHJh
bmdlIHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFy
dCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBw
YXJhbSAgY29tcCAgIENvbXBhcmlzb24gZnVuY3RvciB0byB1c2UuDQorICAgKiAgQGluZ3JvdXAg
aGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBtYWtlcyB0aGUgZWxlbWVudHMgaW4g
W2ZpcnN0LGxhc3QpIGludG8gYSBoZWFwLg0KKyAgICogIENvbXBhcmlzb25zIGFyZSBtYWRlIHVz
aW5nIGNvbXAuDQorICAqLw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4NCisgICAgaW5saW5lIHZvaWQNCisgICAgbWFrZV9oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LA0KKwkgICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
DQorCSAgX1ZhbHVlVHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUNCisJICBfRGlzdGFuY2VU
eXBlOw0KKw0KKyAgICAgIC8vIGNvbmNlcHQgcmVxdWlyZW1lbnRzDQorICAgICAgX19nbGliY3h4
X2Z1bmN0aW9uX3JlcXVpcmVzKF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDwN
CisJICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVz
X3ZhbGlkX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAgICAgaWYgKF9fbGFzdCAtIF9f
Zmlyc3QgPCAyKQ0KKwlyZXR1cm47DQorDQorICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xl
biA9IF9fbGFzdCAtIF9fZmlyc3Q7DQorICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChf
X2xlbiAtIDIpIC8gMjsNCisgICAgICB3aGlsZSAodHJ1ZSkNCisJew0KKwkgIHN0ZDo6X19hZGp1
c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sDQorCQkJICAgICBfVmFsdWVUeXBlKCoo
X19maXJzdCArIF9fcGFyZW50KSksIF9fY29tcCk7DQorCSAgaWYgKF9fcGFyZW50ID09IDApDQor
CSAgICByZXR1cm47DQorCSAgX19wYXJlbnQtLTsNCisJfQ0KKyAgICB9DQorDQorICAvKioNCisg
ICAqICBAYnJpZWYgIFNvcnQgYSBoZWFwLg0KKyAgICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9m
IGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAgRW5kIG9mIGhlYXAuDQorICAgKiAgQGluZ3Jv
dXAgaGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBzb3J0cyB0aGUgdmFsaWQgaGVh
cCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4NCisgICAgdm9pZA0KKyAgICBzb3J0X2hlYXAoX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpDQor
ICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9m
dW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQor
CSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9y
ZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDwNCisJICAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPikNCisgICAgICBf
X2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsNCisgICAgICAv
LyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAg
ICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQ0KKwlzdGQ6OnBvcF9oZWFwKF9fZmlyc3Qs
IF9fbGFzdC0tKTsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBTb3J0IGEgaGVh
cCB1c2luZyBjb21wYXJpc29uIGZ1bmN0b3IuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQg
b2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAcGFy
YW0gIGNvbXAgICBDb21wYXJpc29uIGZ1bmN0b3IgdG8gdXNlLg0KKyAgICogIEBpbmdyb3VwIGhl
YXANCisgICAqDQorICAgKiAgVGhpcyBvcGVyYXRpb24gc29ydHMgdGhlIHZhbGlkIGhlYXAgaW4g
dGhlIHJhbmdlIFtmaXJzdCxsYXN0KS4NCisgICAqICBDb21wYXJpc29ucyBhcmUgbWFkZSB1c2lu
ZyBjb21wLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbXBhcmU+DQorICAgIHZvaWQNCisgICAgc29ydF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LA0KKwkg
ICAgICBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVt
ZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21B
Y2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0KKyAg
ICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0LCBfX2NvbXAp
Ow0KKw0KKyAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkNCisJc3RkOjpwb3BfaGVh
cChfX2ZpcnN0LCBfX2xhc3QtLSwgX19jb21wKTsNCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNl
IHN0ZA0KKw0KKw0KKw0KKyNlbmRpZiANClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTIpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEwOSBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2
YWxsICA8c3JpcmFtLnlhZGF2YWxsaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WmFsYW4gQnVqdGFzICh6YnVqdGFzQGdtYWlsLmNvbSkuCisgICAgICAgIERFU0M6IFNjcmlwdGFi
bGUgcGx1Z2luICYgd2lkZ2V0IG9iamVjdCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNworCisgICAgICAgICogYmluZGlu
Z3MvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAobGlzdEZyb21WYXJpYW50QXJncyk6CisgICAg
ICAgIChfaXNTYWZlU2NyaXB0KToKKyAgICAgICAgKF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0KToK
KyAgICAgICAgKE5QTl9JbnZva2VEZWZhdWx0KToKKyAgICAgICAgKE5QTl9JbnZva2UpOgorICAg
ICAgICAoTlBOX0V2YWx1YXRlKToKKyAgICAgICAgKE5QTl9HZXRQcm9wZXJ0eSk6CisgICAgICAg
IChOUE5fU2V0UHJvcGVydHkpOgorICAgICAgICAoTlBOX1JlbW92ZVByb3BlcnR5KToKKyAgICAg
ICAgKE5QTl9IYXNQcm9wZXJ0eSk6CisgICAgICAgIChOUE5fSGFzTWV0aG9kKToKKyAgICAgICAg
KE5QTl9TZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL05QX2pzb2JqZWN0Lmg6Cisg
ICAgICAgICogYmluZGluZ3MvYy9jX2NsYXNzLmNwcDoKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6
OkNDbGFzczo6Q0NsYXNzKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6fkNDbGFz
cyk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6OmNsYXNzRm9ySXNBKToKKyAgICAg
ICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6bmFtZSk6CisgICAgICAgIChLSlM6OkJpbmRpbmdz
OjpDQ2xhc3M6Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6
OmZpZWxkTmFtZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2MvY19jbGFzcy5oOgorICAgICAgICAo
S0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpjb25zdHJ1Y3RvckF0KToKKyAgICAgICAgKEtKUzo6Qmlu
ZGluZ3M6OkNDbGFzczo6bnVtQ29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2Nf
aW5zdGFuY2UuY3BwOgorICAgICAgICAoQ0luc3RhbmNlOjpDSW5zdGFuY2UpOgorICAgICAgICAo
Q0luc3RhbmNlOjp+Q0luc3RhbmNlKToKKyAgICAgICAgKENJbnN0YW5jZTo6b3BlcmF0b3I9KToK
KyAgICAgICAgKENJbnN0YW5jZTo6Z2V0Q2xhc3MpOgorICAgICAgICAoQ0luc3RhbmNlOjppbnZv
a2VNZXRob2QpOgorICAgICAgICAoQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKToKKyAg
ICAgICAgKENJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKENJbnN0YW5jZTo6c3Ry
aW5nVmFsdWUpOgorICAgICAgICAoQ0luc3RhbmNlOjp2YWx1ZU9mKToKKyAgICAgICAgKiBiaW5k
aW5ncy9jL2NfcnVudGltZS5oOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0ZpZWxkOjpuYW1l
KToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNNZXRob2Q6Om5hbWUpOgorICAgICAgICAqIGJp
bmRpbmdzL2MvY191dGlsaXR5LmNwcDoKKyAgICAgICAgKGNvbnZlcnRVVEY4VG9VVEYxNik6Cisg
ICAgICAgIChjb252ZXJ0VmFsdWVUb05QVmFyaWFudCk6CisgICAgICAgIChjb252ZXJ0TlBWYXJp
YW50VG9WYWx1ZSk6CisgICAgICAgIChpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcik6CisgICAg
ICAgICogYmluZGluZ3MvYy9jX3V0aWxpdHkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9ucGFwaS5o
OgorICAgICAgICAoX05QUHJpbnQ6Oik6CisgICAgICAgICogYmluZGluZ3MvbnBydW50aW1lLmNw
cDoKKyAgICAgICAgKGdldFN0cmluZ0lkZW50aWZpZXJNYXApOgorICAgICAgICAoZ2V0SW50SWRl
bnRpZmllck1hcCk6CisgICAgICAgIChOUE5fR2V0U3RyaW5nSWRlbnRpZmllcik6CisgICAgICAg
IChOUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMpOgorICAgICAgICAoTlBOX0dldEludElkZW50aWZp
ZXIpOgorICAgICAgICAoTlBOX0lkZW50aWZpZXJJc1N0cmluZyk6CisgICAgICAgIChOUE5fVVRG
OEZyb21JZGVudGlmaWVyKToKKyAgICAgICAgKE5QTl9JbnRGcm9tSWRlbnRpZmllcik6CisgICAg
ICAgIChOUE5fVmFyaWFudFRvQm9vbCk6CisgICAgICAgIChOUE5fVmFyaWFudFRvU3RyaW5nKToK
KyAgICAgICAgKE5QTl9WYXJpYW50VG9JbnQzMik6CisgICAgICAgIChOUE5fVmFyaWFudFRvRG91
YmxlKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9PYmplY3QpOgorICAgICAgICAoTlBOX0luaXRp
YWxpemVWYXJpYW50V2l0aE9iamVjdCk6CisgICAgICAgIChOUE5fUmVsZWFzZVZhcmlhbnRWYWx1
ZSk6CisgICAgICAgIChOUE5fQ3JlYXRlT2JqZWN0KToKKyAgICAgICAgKE5QTl9SZXRhaW5PYmpl
Y3QpOgorICAgICAgICAoTlBOX1JlbGVhc2VPYmplY3QpOgorICAgICAgICAoTlBOX1NldEV4Y2Vw
dGlvbldpdGhVVEY4KToKKyAgICAgICAgKiBiaW5kaW5ncy9ucHJ1bnRpbWUuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9ydW50aW1lLmNwcDoKKyAgICAgICAgKEluc3RhbmNlOjpjcmVhdGVCaW5kaW5n
Rm9yTGFuZ3VhZ2VJbnN0YW5jZSk6CisgICAgICAgIChJbnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJ
bnN0YW5jZUZvclZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lLmg6CisgICAgICAg
ICogYmluZGluZ3MvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoUnVudGltZU9iamVjdElt
cDo6UnVudGltZU9iamVjdEltcCk6CisgICAgICAgIChSdW50aW1lT2JqZWN0SW1wOjpnZXQpOgor
ICAgICAgICAoUnVudGltZU9iamVjdEltcDo6cHV0KToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJ
bXA6OmNhblB1dCk6CisgICAgICAgICogYmluZGluZ3MvcnVudGltZV9vYmplY3QuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9ydW50aW1lX3Jvb3QuY3BwOgorICAgICAgICAoUm9vdE9iamVjdDo6cmVt
b3ZlQWxsTmF0aXZlUmVmZXJlbmNlcyk6CisgICAgICAgIChnZXRSZWZlcmVuY2VzQnlSb290TWFw
KToKKyAgICAgICAgKGdldFJlZmVyZW5jZXNTZXQpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6
ZmluZFJlZmVyZW5jZVNldCk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpyb290Rm9ySW1wKToK
KyAgICAgICAgKEtKUzo6QmluZGluZ3M6OnJvb3RGb3JJbnRlcnByZXRlcik6CisgICAgICAgIChL
SlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVuY2UpOgorICAgICAgICAoS0pTOjpCaW5kaW5n
czo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlKToKKyAgICAgICAgKFJvb3RPYmplY3Q6OnNldEludGVy
cHJldGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBn
cm91cC9Cd2luc2N3L0pBVkFTQ1JJUFRDT1JFVS5ERUY6CisgICAgICAgICogZ3JvdXAvRUFCSS9K
YXZhc2NyaXB0Q29yZVUuZGVmOgorICAgICAgICAqIGdyb3VwL0phdmFTY3JpcHRDb3JlLm1tcDoK
KyAgICAgICAgKiBncm91cC9ibGQuaW5mOgorICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChJbnRlcnByZXRlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoSW50ZXJwcmV0ZXI6
OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSk6CisgICAgICAgIChTYXZlZEJ1aWx0aW5z
OjpTYXZlZEJ1aWx0aW5zKToKKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuaDoKKyAgICAgICAg
KiBranMvc3RkaW50Lmg6CisgICAgICAgICoga2pzL3VzdHJpbmcuaDoKKyAgICAgICAgKEtKUzo6
VVN0cmluZzo6YXJlcCk6CisKIDIwMDYtMTAtMDQgIHNhcmVlbiAgPHNoeWFtLnNhcmVlbkBub2tp
YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgpJbmRleDogSmF2YVNj
cmlwdENvcmUvZ3JvdXAvYmxkLmluZg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dy
b3VwL2JsZC5pbmYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2dyb3VwL2Js
ZC5pbmYJKHdvcmtpbmcgY29weSkNCkBAIC0yMSw2ICsyMSwyMSBAQA0KIFBSSl9QTEFURk9STVMN
CiBERUZBVUxUDQogDQorUFJKX0VYUE9SVFMNCisuLlxranNcaW50ZXJuYWwuaCAgICAgICAgIFxl
cG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcaW50ZXJuYWwuaA0KKy4uXGtqc1xpbnRl
cnByZXRlci5oICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxpbnRlcnBy
ZXRlci5oDQorLi5ca2pzXG9iamVjdC5oICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGph
dmFzY3JpcHRjb3JlXG9iamVjdC5oDQorLi5ca2pzXHByb3RlY3QuaCAgICAgICAgICBcZXBvYzMy
XGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHByb3RlY3QuaA0KKy4uXGtqc1xzdGRpbnQuaCAg
ICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxzdGRpbnQuaA0KKw0K
Ky4uXGJpbmRpbmdzXG5wcnVudGltZS5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxq
YXZhc2NyaXB0Y29yZVxucHJ1bnRpbWUuaA0KKy4uXGJpbmRpbmdzXG5wcnVudGltZV9pbXBsLmgg
ICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXG5wcnVudGltZV9p
bXBsLmgNCisuLlxiaW5kaW5nc1xucHJ1bnRpbWVfcHJpdi5oICAgICAgICAgICAgXGVwb2MzMlxp
bmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxucHJ1bnRpbWVfcHJpdi5oDQorLi5cYmluZGluZ3Nc
cnVudGltZS5oICAgICAgICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxy
dW50aW1lLmgNCisuLlxiaW5kaW5nc1xydW50aW1lX29iamVjdC5oICAgICAgICAgICAgXGVwb2Mz
MlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxydW50aW1lX29iamVjdC5oDQorLi5cYmluZGlu
Z3NccnVudGltZV9yb290LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3Jp
cHRjb3JlXHJ1bnRpbWVfcm9vdC5oDQorLi5cYmluZGluZ3NcTlBfanNvYmplY3QuaCAgICAgICAg
ICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcTlBfanNvYmplY3QuaA0KKy4u
XGJpbmRpbmdzXGNcY191dGlsaXR5LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGph
dmFzY3JpcHRjb3JlXGNfdXRpbGl0eS5oDQogUFJKX01NUEZJTEVTDQogcGNyZS5tbXANCiBKYXZh
U2NyaXB0Q29yZS5tbXANCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ncm91cC9Cd2luc2N3L0pBVkFT
Q1JJUFRDT1JFVS5ERUYNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ncm91cC9Cd2lu
c2N3L0pBVkFTQ1JJUFRDT1JFVS5ERUYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRD
b3JlL2dyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRgkod29ya2luZyBjb3B5KQ0KQEAg
LTEsMTM5ICsxLDE2OCBAQA0KIEVYUE9SVFMNCi0JPz8wQm9vbGVhbkBLSlNAQFFBRUBfTkBaIEAg
MSBOT05BTUUgOyBLSlM6OkJvb2xlYW46OkJvb2xlYW4oYm9vbCkNCi0JPz8wSW50ZXJwcmV0ZXJA
S0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAyIE5PTkFNRSA7IEtKUzo6SW50ZXJwcmV0ZXI6Oklu
dGVycHJldGVyKGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYpDQotCT8/MExpc3RAS0pTQEBRQUVA
WFogQCAzIE5PTkFNRSA7IEtKUzo6TGlzdDo6TGlzdCh2b2lkKQ0KLQk/PzBOdWxsQEtKU0BAUUFF
QFhaIEAgNCBOT05BTUUgOyBLSlM6Ok51bGw6Ok51bGwodm9pZCkNCi0JPz8wTnVtYmVyQEtKU0BA
UUFFQEhAWiBAIDUgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihpbnQpDQotCT8/ME51bWJl
ckBLSlNAQFFBRUBJQFogQCA2IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQg
aW50KQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVASkBaIEAgNyBOT05BTUUgOyBLSlM6Ok51bWJlcjo6
TnVtYmVyKGxvbmcpDQotCT8/ME51bWJlckBLSlNAQFFBRUBLQFogQCA4IE5PTkFNRSA7IEtKUzo6
TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgbG9uZykNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQE5AWiBA
IDkgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihkb3VibGUpDQotCT8/ME9iamVjdEltcEBL
SlNAQFFBRUBBQlZPYmplY3RAMUBAWiBAIDEwIE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjpPYmpl
Y3RJbXAoY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJikNCi0JPz8wT2JqZWN0SW1wQEtKU0BAUUFF
QFhaIEAgMTEgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6Ok9iamVjdEltcCh2b2lkKQ0KLQk/PzBT
dHJpbmdAS0pTQEBRQUVAQUJWVVN0cmluZ0AxQEBaIEAgMTIgTk9OQU1FIDsgS0pTOjpTdHJpbmc6
OlN0cmluZyhjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0JPz8wVVN0cmluZ0BLSlNAQFFB
RUBBQlYwMUAwQFogQCAxMyBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2xhc3MgS0pT
OjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KLQk/PzBVU3Ry
aW5nQEtKU0BAUUFFQERAWiBAIDE0IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjaGFy
KQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBBVVVDaGFyQDFASF9OQFogQCAxNSBOT05BTUUgOyBL
SlM6OlVTdHJpbmc6OlVTdHJpbmcoc3RydWN0IEtKUzo6VUNoYXIgKiwgaW50LCBib29sKQ0KLQk/
PzBVU3RyaW5nQEtKU0BAUUFFQFBCREBaIEAgMTYgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3Ry
aW5nKGNoYXIgY29uc3QgKikNCi0JPz8wVVN0cmluZ0BLSlNAQFFBRUBQQlVVQ2hhckAxQEhAWiBA
IDE3IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25z
dCAqLCBpbnQpDQotCT8/MFVTdHJpbmdAS0pTQEBRQUVAWFogQCAxOCBOT05BTUUgOyBLSlM6OlVT
dHJpbmc6OlVTdHJpbmcodm9pZCkNCi0JPz8wVW5kZWZpbmVkQEtKU0BAUUFFQFhaIEAgMTkgTk9O
QU1FIDsgS0pTOjpVbmRlZmluZWQ6OlVuZGVmaW5lZCh2b2lkKQ0KLQk/PzBWYWx1ZUBLSlNAQFFB
RUBBQlYwMUBAWiBAIDIwIE5PTkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFs
dWUgY29uc3QgJikNCi0JPz8wVmFsdWVAS0pTQEBRQUVAUEFWVmFsdWVJbXBAMUBAWiBAIDIxIE5P
TkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWVJbXAgKikNCi0JPz8xSW50
ZXJwcmV0ZXJAS0pTQEBVQUVAWFogQCAyMiBOT05BTUUgOyBLSlM6OkludGVycHJldGVyOjp+SW50
ZXJwcmV0ZXIodm9pZCkNCi0JPz8xT2JqZWN0SW1wQEtKU0BAVUFFQFhaIEAgMjMgTk9OQU1FIDsg
S0pTOjpPYmplY3RJbXA6On5PYmplY3RJbXAodm9pZCkNCi0JPz8xVmFsdWVAS0pTQEBRQUVAWFog
QCAyNCBOT05BTUUgOyBLSlM6OlZhbHVlOjp+VmFsdWUodm9pZCkNCi0JPz8yVmFsdWVJbXBAS0pT
QEBTQVBBWElAWiBAIDI1IE5PTkFNRSA7IHZvaWQgKiBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBu
ZXcodW5zaWduZWQgaW50KQ0KLQk/PzNWYWx1ZUltcEBLSlNAQFNBWFBBWEBaIEAgMjYgTk9OQU1F
IDsgdm9pZCBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBkZWxldGUodm9pZCAqKQ0KLQk/PzRDU3Ry
aW5nQEtKU0BAUUFFQUFWMDFAUEJEQFogQCAyNyBOT05BTUUgOyBjbGFzcyBLSlM6OkNTdHJpbmcg
JiBLSlM6OkNTdHJpbmc6Om9wZXJhdG9yPShjaGFyIGNvbnN0ICopDQotCT8/NExpc3RAS0pTQEBR
QUVBQVYwMUBBQlYwMUBAWiBAIDI4IE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCAmIEtKUzo6TGlz
dDo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KLQk/PzRTY29wZUNoYWluQEtK
U0BAUUFFQUFWMDFAQUJWMDFAQFogQCAyOSBOT05BTUUgOyBjbGFzcyBLSlM6OlNjb3BlQ2hhaW4g
JiBLSlM6OlNjb3BlQ2hhaW46Om9wZXJhdG9yPShjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3Qg
JikNCi0JPz80VVN0cmluZ0BLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAgMzAgTk9OQU1FIDsgY2xh
c3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpVU3Ry
aW5nIGNvbnN0ICYpDQotCT8/NFZhbHVlQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMSBOT05B
TUUgOyBjbGFzcyBLSlM6OlZhbHVlICYgS0pTOjpWYWx1ZTo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6
VmFsdWUgY29uc3QgJikNCi0JPz84S0pTQEBZQV9OQUJWVVN0cmluZ0AwQFBCREBaIEAgMzIgTk9O
QU1FIDsgYm9vbCBLSlM6Om9wZXJhdG9yPT0oY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNo
YXIgY29uc3QgKikNCi0JP2FkZEBJZGVudGlmaWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBB
VTM0MkBAWiBAIDMzIE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6SWRl
bnRpZmllcjo6YWRkKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqKQ0KLQk/YWRkQElkZW50aWZp
ZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJAUEJEQFogQCAzNCBOT05BTUUgOyBzdHJ1Y3QgS0pT
OjpVU3RyaW5nOjpSZXAgKiBLSlM6OklkZW50aWZpZXI6OmFkZChjaGFyIGNvbnN0ICopDQotCT9h
cHBlbmRATGlzdEBLSlNAQFFBRVhQQVZWYWx1ZUltcEAyQEBaIEAgMzUgTk9OQU1FIDsgdm9pZCBL
SlM6Okxpc3Q6OmFwcGVuZChjbGFzcyBLSlM6OlZhbHVlSW1wICopDQotCT9hcHBlbmRAVVN0cmlu
Z0BLSlNAQFFBRUFBVjEyQEFCVjEyQEBaIEAgMzYgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5n
ICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQotCT9h
cHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQFBCREBaIEAgMzcgTk9OQU1FIDsgY2xhc3MgS0pT
OjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2hhciBjb25zdCAqKQ0KLQk/YXNjaWlA
VVN0cmluZ0BLSlNAQFFCRVBBRFhaIEAgMzggTk9OQU1FIDsgY2hhciAqIEtKUzo6VVN0cmluZzo6
YXNjaWkodm9pZCkgY29uc3QNCi0JP2F0dGFjaE51bGxAVVN0cmluZ0BLSlNAQEFBRVhYWiBAIDM5
IE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjphdHRhY2hOdWxsKHZvaWQpDQotCT9idWlsdGlu
QXJyYXlASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQwIE5PTkFNRSA7IGNs
YXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5BcnJheSh2b2lkKSBjb25z
dA0KLQk/YnVpbHRpbkZ1bmN0aW9uQEludGVycHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFog
QCA0MSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGlu
RnVuY3Rpb24odm9pZCkgY29uc3QNCi0JP2J1aWx0aW5PYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBR
QkU/QVZPYmplY3RAMkBYWiBAIDQyIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50
ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3Qodm9pZCkgY29uc3QNCi0JP2J1aWx0aW5PYmplY3RQcm90
b3R5cGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQzIE5PTkFNRSA7IGNs
YXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3RQcm90b3R5cGUo
dm9pZCkgY29uc3QNCi0JP2NhbGxAT2JqZWN0QEtKU0BAUUFFP0FWVmFsdWVAMkBQQVZFeGVjU3Rh
dGVAMkBBQVYxMkBBQlZMaXN0QDJAQFogQCA0NCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtK
Uzo6T2JqZWN0OjpjYWxsKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6T2JqZWN0
ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KLQk/Y2FsbEBPYmplY3RJbXBAS0pTQEBVQUU/
QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFBVk9iamVjdEAyQEFCVkxpc3RAMkBAWiBAIDQ1IE5P
TkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmNhbGwoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmplY3QgJiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYp
DQotCT9jYW5QdXRAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlm
aWVyQDJAQFogQCA0NiBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpjYW5QdXQoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQot
CT9jbGFzc0luZm9AT2JqZWN0SW1wQEtKU0BAVUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA0NyBOT05B
TUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdEltcDo6Y2xhc3NJ
bmZvKHZvaWQpIGNvbnN0DQotCT9jbGFzc05hbWVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmlu
Z0AyQFhaIEAgNDggTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6T2JqZWN0SW1wOjpj
bGFzc05hbWUodm9pZCkgY29uc3QNCi0JP2NvbGxlY3RAQ29sbGVjdG9yQEtKU0BAU0FfTlhaIEAg
NDkgTk9OQU1FIDsgYm9vbCBLSlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCh2b2lkKQ0KLQk/Y29tcGF0
TW9kZUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVzRDb21wYXRNb2RlQDEyQFhaIEAgNTAgTk9OQU1F
IDsgZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2RlIEtKUzo6SW50ZXJwcmV0ZXI6OmNv
bXBhdE1vZGUodm9pZCkgY29uc3QNCi0JP2NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZP
YmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZMaXN0QDJAQFogQCA1MSBOT05BTUUgOyBjbGFzcyBL
SlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3RydWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KLQk/Y29uc3RydWN0QE9iamVjdEltcEBLSlNA
QFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxpc3RAMkBBQlZVU3RyaW5nQDJASEBa
IEAgNTIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJbXA6OmNvbnN0cnVj
dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJiwgY2xhc3Mg
S0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCkNCi0JP2NvcHlUYWlsQExpc3RAS0pTQEBRQkU/QVYx
MkBYWiBAIDUzIE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCBLSlM6Okxpc3Q6OmNvcHlUYWlsKHZv
aWQpIGNvbnN0DQotCT9jcmVhdGVARXJyb3JAS0pTQEBTQT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0
ZUAyQFc0RXJyb3JUeXBlQDJAUEJESEhQQlZVU3RyaW5nQDJAQFogQCA1NCBOT05BTUUgOyBjbGFz
cyBLSlM6Ok9iamVjdCBLSlM6OkVycm9yOjpjcmVhdGUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
ZW51bSBLSlM6OkVycm9yVHlwZSwgY2hhciBjb25zdCAqLCBpbnQsIGludCwgY2xhc3MgS0pTOjpV
U3RyaW5nIGNvbnN0ICopDQotCT9jcmVhdGVAUmVwQFVTdHJpbmdAS0pTQEBTQVBBVTEyM0BQQVVV
Q2hhckAzQEhAWiBAIDU1IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6
VVN0cmluZzo6UmVwOjpjcmVhdGUoc3RydWN0IEtKUzo6VUNoYXIgKiwgaW50KQ0KLQk/Y3JlYXRl
Q29weWluZ0BSZXBAVVN0cmluZ0BLSlNAQFNBUEFVMTIzQFBCVVVDaGFyQDNASEBaIEAgNTYgTk9O
QU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpVU3RyaW5nOjpSZXA6OmNyZWF0
ZUNvcHlpbmcoc3RydWN0IEtKUzo6VUNoYXIgY29uc3QgKiwgaW50KQ0KLQk/ZGVmYXVsdFZhbHVl
QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFog
QCA1NyBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpkZWZhdWx0VmFs
dWUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OlR5cGUpIGNvbnN0DQotCT9kZWxl
dGVBbGxQcm9wZXJ0aWVzQE9iamVjdEltcEBLSlNAQFFBRVhQQVZFeGVjU3RhdGVAMkBAWiBAIDU4
IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZUFsbFByb3BlcnRpZXMoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKikNCi0JP2RlbGV0ZVByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVBRV9O
UEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNTkgTk9OQU1FIDsgYm9vbCBLSlM6
Ok9iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3Mg
S0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpDQotCT9kZWxldGVQcm9wZXJ0eUBPYmplY3RJbXBAS0pT
QEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDYwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJ
bXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkN
Ci0JP2RlcmVmVmFsdWVzQExpc3RAS0pTQEBBQUVYWFogQCA2MSBOT05BTUUgOyB2b2lkIEtKUzo6
TGlzdDo6ZGVyZWZWYWx1ZXModm9pZCkNCi0JP2Rlc3Ryb3lAUmVwQFVTdHJpbmdAS0pTQEBRQUVY
WFogQCA2MiBOT05BTUUgOyB2b2lkIEtKUzo6VVN0cmluZzo6UmVwOjpkZXN0cm95KHZvaWQpDQot
CT9kaXNwYXRjaFRvT2JqZWN0QFZhbHVlSW1wQEtKU0BAUUJFP0FWT2JqZWN0QDJAUEFWRXhlY1N0
YXRlQDJAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OlZhbHVlSW1wOjpk
aXNwYXRjaFRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT9keW5hbWlj
Q2FzdEBPYmplY3RAS0pTQEBTQT9BVjEyQEFCVlZhbHVlQDJAQFogQCA2NCBOT05BTUUgOyBjbGFz
cyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdDo6ZHluYW1pY0Nhc3QoY2xhc3MgS0pTOjpWYWx1ZSBj
b25zdCAmKQ0KLQk/ZXF1YWxASWRlbnRpZmllckBLSlNAQENBX05QQVVSZXBAVVN0cmluZ0AyQFBC
REBaIEAgNjUgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZpZXI6OmVxdWFsKHN0cnVjdCBLSlM6
OlVTdHJpbmc6OlJlcCAqLCBjaGFyIGNvbnN0ICopDQotCT9lcXVhbEBJZGVudGlmaWVyQEtKU0BA
Q0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJVVUNoYXJAMkBIQFogQCA2NiBOT05BTUUgOyBib29sIEtK
Uzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICosIHN0cnVjdCBL
SlM6OlVDaGFyIGNvbnN0ICosIGludCkNCi0JP2V2YWx1YXRlQEludGVycHJldGVyQEtKU0BAUUFF
P0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBBQlZWYWx1ZUAyQDBAWiBAIDY3IE5PTkFNRSA7
IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6OkludGVycHJldGVyOjpldmFsdWF0ZShjbGFzcyBL
SlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmLCBjbGFzcyBLSlM6
OlVTdHJpbmcgY29uc3QgJikNCi0JP2V2YWx1YXRlQEludGVycHJldGVyQEtKU0BAUUFFP0FWQ29t
cGxldGlvbkAyQEFCVlVTdHJpbmdAMkBIMEFCVlZhbHVlQDJAQFogQCA2OCBOT05BTUUgOyBjbGFz
cyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJbnRlcnByZXRlcjo6ZXZhbHVhdGUoY2xhc3MgS0pTOjpV
U3RyaW5nIGNvbnN0ICYsIGludCwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtK
Uzo6VmFsdWUgY29uc3QgJikNCi0JP2ZpbmRFbnRyeUBMb29rdXBAS0pTQEBTQVBCVkhhc2hFbnRy
eUAyQFBCVkhhc2hUYWJsZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDY5IE5PTkFNRSA7IGNsYXNz
IEtKUzo6SGFzaEVudHJ5IGNvbnN0ICogS0pTOjpMb29rdXA6OmZpbmRFbnRyeShjbGFzcyBLSlM6
Okhhc2hUYWJsZSBjb25zdCAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikNCi0JP2Zy
b21AVVN0cmluZ0BLSlNAQFNBP0FWMTJASkBaIEAgNzAgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3Ry
aW5nIEtKUzo6VVN0cmluZzo6ZnJvbShsb25nKQ0KLQk/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9B
VlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzEgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/Z2V0QE9iamVjdElt
cEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJASUBaIEAgNzIgTk9OQU1FIDsgY2xh
c3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2dldEBQcm9wZXJ0eU1hcEBLSlNAQFFCRVBBVlZhbHVl
SW1wQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNzMgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZUlt
cCAqIEtKUzo6UHJvcGVydHlNYXA6OmdldChjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikg
Y29uc3QNCi0JP2dsb2JhbEV4ZWNASW50ZXJwcmV0ZXJAS0pTQEBRQUVQQVZFeGVjU3RhdGVAMkBY
WiBAIDc0IE5PTkFNRSA7IGNsYXNzIEtKUzo6RXhlY1N0YXRlICogS0pTOjpJbnRlcnByZXRlcjo6
Z2xvYmFsRXhlYyh2b2lkKQ0KLQk/Z2xvYmFsT2JqZWN0QEludGVycHJldGVyQEtKU0BAUUJFQUFW
T2JqZWN0QDJAWFogQCA3NSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCAmIEtKUzo6SW50ZXJw
cmV0ZXI6Omdsb2JhbE9iamVjdCh2b2lkKSBjb25zdA0KLQk/aGFzSW5zdGFuY2VAT2JqZWN0SW1w
QEtKU0BAVUFFP0FWQm9vbGVhbkAyQFBBVkV4ZWNTdGF0ZUAyQEFCVlZhbHVlQDJAQFogQCA3NiBO
T05BTUUgOyBjbGFzcyBLSlM6OkJvb2xlYW4gS0pTOjpPYmplY3RJbXA6Omhhc0luc3RhbmNlKGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JP2hhc093
blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAy
QEBaIEAgNzcgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQot
CT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklk
ZW50aWZpZXJAMkBAWiBAIDc4IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blBy
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmKSBjb25zdA0KLQk/aGFzT3duUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVj
U3RhdGVAMkBJQFogQCA3OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpoYXNPd25Qcm9w
ZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQotCT9oYXNQ
cm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBA
WiBAIDgwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/aGFz
UHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4MSBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0OjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1
bnNpZ25lZCBpbnQpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBB
VkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDgyIE5PTkFNRSA7IGJvb2wgS0pTOjpP
YmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6
SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/aGFzUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BA
VUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4MyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1w
OjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0
DQotCT9pbXBBdEBMaXN0QEtKU0BAUUJFUEFWVmFsdWVJbXBAMkBIQFogQCA4NCBOT05BTUUgOyBj
bGFzcyBLSlM6OlZhbHVlSW1wICogS0pTOjpMaXN0OjppbXBBdChpbnQpIGNvbnN0DQotCT9pbXBs
ZW1lbnRzQ2FsbEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgODUgTk9OQU1FIDsgYm9vbCBLSlM6
Ok9iamVjdEltcDo6aW1wbGVtZW50c0NhbGwodm9pZCkgY29uc3QNCi0JP2ltcGxlbWVudHNDb25z
dHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUJFX05YWiBAIDg2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmpl
Y3RJbXA6OmltcGxlbWVudHNDb25zdHJ1Y3Qodm9pZCkgY29uc3QNCi0JP2ltcGxlbWVudHNIYXNJ
bnN0YW5jZUBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgODcgTk9OQU1FIDsgYm9vbCBLSlM6Ok9i
amVjdEltcDo6aW1wbGVtZW50c0hhc0luc3RhbmNlKHZvaWQpIGNvbnN0DQotCT9pbmNTdGF0ZW1l
bnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDg4IE5PTkFNRSA7IHZvaWQgS0pTOjpJ
bnRlcnByZXRlcjo6aW5jU3RhdGVtZW50Q291bnQodm9pZCkNCi0JP2luaGVyaXRzQE9iamVjdElt
cEBLSlNAQFFCRV9OUEJVQ2xhc3NJbmZvQDJAQFogQCA4OSBOT05BTUUgOyBib29sIEtKUzo6T2Jq
ZWN0SW1wOjppbmhlcml0cyhzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKikgY29uc3QNCi0J
P2luaXRHbG9iYWxPYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQUVYWFogQCA5MCBOT05BTUUgOyB2
b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmluaXRHbG9iYWxPYmplY3Qodm9pZCkNCi0JP2lzTnVsbEBV
U3RyaW5nQEtKU0BAUUJFX05YWiBAIDkxIE5PTkFNRSA7IGJvb2wgS0pTOjpVU3RyaW5nOjppc051
bGwodm9pZCkgY29uc3QNCi0JP2xlbmd0aFByb3BlcnR5QEtKU0BAWUFBQlZJZGVudGlmaWVyQDFA
WFogQCA5MiBOT05BTUUgOyBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiBLSlM6Omxlbmd0
aFByb3BlcnR5KHZvaWQpDQotCT9sZXhpY2FsSW50ZXJwcmV0ZXJARXhlY1N0YXRlQEtKU0BAUUJF
UEFWSW50ZXJwcmV0ZXJAMkBYWiBAIDkzIE5PTkFNRSA7IGNsYXNzIEtKUzo6SW50ZXJwcmV0ZXIg
KiBLSlM6OkV4ZWNTdGF0ZTo6bGV4aWNhbEludGVycHJldGVyKHZvaWQpIGNvbnN0DQotCT9sb2Nr
QEludGVycHJldGVyQEtKU0BAU0FYWFogQCA5NCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0
ZXI6OmxvY2sodm9pZCkNCi0JP21hcmtAT2JqZWN0SW1wQEtKU0BAVUFFWFhaIEAgOTUgTk9OQU1F
IDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6bWFyayh2b2lkKQ0KLQk/bWFya2VkQFZhbHVlSW1wQEtK
U0BAUUJFX05YWiBAIDk2IE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6bWFya2VkKHZvaWQp
IGNvbnN0DQotCT9tZXNzYWdlUHJvcGVydHlAS0pTQEBZQUFCVklkZW50aWZpZXJAMUBYWiBAIDk3
IE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmIEtKUzo6bWVzc2FnZVByb3Bl
cnR5KHZvaWQpDQotCT9wcm9wTGlzdEBPYmplY3RAS0pTQEBRQUU/QVZSZWZlcmVuY2VMaXN0QDJA
UEFWRXhlY1N0YXRlQDJAX05AWiBAIDk4IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlz
dCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCi0J
P3Byb3BMaXN0QE9iamVjdEltcEBLSlNAQFVBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3Rh
dGVAMkBfTkBaIEAgOTkgTk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6T2Jq
ZWN0SW1wOjpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KLQk/cHJvdG90
eXBlQE9iamVjdEltcEBLSlNAQFFCRT9BVlZhbHVlQDJAWFogQCAxMDAgTk9OQU1FIDsgY2xhc3Mg
S0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6cHJvdG90eXBlKHZvaWQpIGNvbnN0DQotCT9wdXNo
QFNjb3BlQ2hhaW5AS0pTQEBRQUVYQUJWMTJAQFogQCAxMDEgTk9OQU1FIDsgdm9pZCBLSlM6OlNj
b3BlQ2hhaW46OnB1c2goY2xhc3MgS0pTOjpTY29wZUNoYWluIGNvbnN0ICYpDQotCT9wdXNoQFNj
b3BlQ2hhaW5AS0pTQEBRQUVYUEFWT2JqZWN0SW1wQDJAQFogQCAxMDIgTk9OQU1FIDsgdm9pZCBL
SlM6OlNjb3BlQ2hhaW46OnB1c2goY2xhc3MgS0pTOjpPYmplY3RJbXAgKikNCi0JP3B1dEBPYmpl
Y3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEFCVlZhbHVlQDJA
SEBaIEAgMTAzIE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dChjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1
ZSBjb25zdCAmLCBpbnQpDQotCT9wdXRAT2JqZWN0SW1wQEtKU0BAVUFFWFBBVkV4ZWNTdGF0ZUAy
QElBQlZWYWx1ZUAyQEhAWiBAIDEwNCBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXQo
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50LCBjbGFzcyBLSlM6OlZhbHVlIGNv
bnN0ICYsIGludCkNCi0JP3B1dERpcmVjdEBPYmplY3RJbXBAS0pTQEBRQUVYQUJWSWRlbnRpZmll
ckAyQEhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0RGlyZWN0KGNs
YXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBpbnQsIGludCkNCi0JP3B1dERpcmVjdEBPYmpl
Y3RJbXBAS0pTQEBRQUVYQUJWSWRlbnRpZmllckAyQFBBVlZhbHVlSW1wQDJASEBaIEAgMTA2IE5P
TkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dERpcmVjdChjbGFzcyBLSlM6OklkZW50aWZp
ZXIgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1ZUltcCAqLCBpbnQpDQotCT9yZWZWYWx1ZXNATGlz
dEBLSlNAQEFBRVhYWiBAIDEwNyBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6cmVmVmFsdWVzKHZv
aWQpDQotCT9yZWxlYXNlQExpc3RAS0pTQEBBQUVYWFogQCAxMDggTk9OQU1FIDsgdm9pZCBLSlM6
Okxpc3Q6OnJlbGVhc2Uodm9pZCkNCi0JP3JlbGVhc2VAU2NvcGVDaGFpbkBLSlNAQEFBRVhYWiBA
IDEwOSBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFpbjo6cmVsZWFzZSh2b2lkKQ0KLQk/cmVz
ZXRTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDExMCBOT05BTUUgOyB2
b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnJlc2V0U3RhdGVtZW50Q291bnQodm9pZCkNCi0JP3Jlc3Rv
cmVAUHJvcGVydHlNYXBAS0pTQEBRQUVYQUJWU2F2ZWRQcm9wZXJ0aWVzQDJAQFogQCAxMTEgTk9O
QU1FIDsgdm9pZCBLSlM6OlByb3BlcnR5TWFwOjpyZXN0b3JlKGNsYXNzIEtKUzo6U2F2ZWRQcm9w
ZXJ0aWVzIGNvbnN0ICYpDQotCT9yZXN0b3JlQnVpbHRpbnNASW50ZXJwcmV0ZXJAS0pTQEBRQUVY
QUJWU2F2ZWRCdWlsdGluc0AyQEBaIEAgMTEyIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRl
cjo6cmVzdG9yZUJ1aWx0aW5zKGNsYXNzIEtKUzo6U2F2ZWRCdWlsdGlucyBjb25zdCAmKQ0KLQk/
c2F2ZUBQcm9wZXJ0eU1hcEBLSlNAQFFCRVhBQVZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDExMyBO
T05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnNhdmUoY2xhc3MgS0pTOjpTYXZlZFByb3Bl
cnRpZXMgJikgY29uc3QNCi0JP3NhdmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFCRVhBQVZT
YXZlZEJ1aWx0aW5zQDJAQFogQCAxMTQgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpz
YXZlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zICYpIGNvbnN0DQotCT9zZXRDb21w
YXRNb2RlQEludGVycHJldGVyQEtKU0BAUUFFWFc0Q29tcGF0TW9kZUAxMkBAWiBAIDExNSBOT05B
TUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNldENvbXBhdE1vZGUoZW51bSBLSlM6OkludGVy
cHJldGVyOjpDb21wYXRNb2RlKQ0KLQk/c2V0UHJvdG90eXBlQE9iamVjdEltcEBLSlNAQFFBRVhB
QlZWYWx1ZUAyQEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnNldFByb3Rv
dHlwZShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQotCT9zZXRTaG91bGRQcmludEV4Y2VwdGlv
bnNASW50ZXJwcmV0ZXJAS0pTQEBTQVhfTkBaIEAgMTE3IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRl
cnByZXRlcjo6c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJvb2wpDQotCT9zaG91bGRQcmludEV4
Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQV9OWFogQCAxMTggTk9OQU1FIDsgYm9vbCBLSlM6
OkludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnModm9pZCkNCi0JP3RvQXJyYXlJbmRl
eEBVU3RyaW5nQEtKU0BAUUJFSVBBX05AWiBAIDExOSBOT05BTUUgOyB1bnNpZ25lZCBpbnQgS0pT
OjpVU3RyaW5nOjp0b0FycmF5SW5kZXgoYm9vbCAqKSBjb25zdA0KLQk/dG9Cb29sZWFuQE9iamVj
dEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQFogQCAxMjAgTk9OQU1FIDsgYm9vbCBLSlM6
Ok9iamVjdEltcDo6dG9Cb29sZWFuKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90
b0ludDMyQFZhbHVlSW1wQEtKU0BAUUJFSlBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTIxIE5PTkFNRSA7
IGxvbmcgS0pTOjpWYWx1ZUltcDo6dG9JbnQzMihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25z
dA0KLQk/dG9JbnRlZ2VyQFZhbHVlSW1wQEtKU0BAUUJFTlBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTIy
IE5PTkFNRSA7IGRvdWJsZSBLSlM6OlZhbHVlSW1wOjp0b0ludGVnZXIoY2xhc3MgS0pTOjpFeGVj
U3RhdGUgKikgY29uc3QNCi0JP3RvTnVtYmVyQE9iamVjdEltcEBLSlNAQFVCRU5QQVZFeGVjU3Rh
dGVAMkBAWiBAIDEyMyBOT05BTUUgOyBkb3VibGUgS0pTOjpPYmplY3RJbXA6OnRvTnVtYmVyKGNs
YXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b09iamVjdEBPYmplY3RJbXBAS0pTQEBV
QkU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWiBAIDEyNCBOT05BTUUgOyBjbGFzcyBLSlM6
Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6dG9PYmplY3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikg
Y29uc3QNCi0JP3RvUHJpbWl0aXZlQE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhl
Y1N0YXRlQDJAVzRUeXBlQDJAQFogQCAxMjUgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6
Ok9iamVjdEltcDo6dG9QcmltaXRpdmUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6
OlR5cGUpIGNvbnN0DQotCT90b1N0cmluZ0BPYmplY3RJbXBAS0pTQEBVQkU/QVZVU3RyaW5nQDJA
UEFWRXhlY1N0YXRlQDJAQFogQCAxMjYgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6
T2JqZWN0SW1wOjp0b1N0cmluZyhjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9V
SW50MTZAVmFsdWVJbXBAS0pTQEBRQkVHUEFWRXhlY1N0YXRlQDJAQFogQCAxMjcgTk9OQU1FIDsg
dW5zaWduZWQgc2hvcnQgS0pTOjpWYWx1ZUltcDo6dG9VSW50MTYoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKikgY29uc3QNCi0JP3RvVUludDMyQFZhbHVlSW1wQEtKU0BARUJFX05BQUlAWiBAIDEyOCBO
T05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6OnRvVUludDMyKHVuc2lnbmVkIGludCAmKSBjb25z
dA0KLQk/dG9VSW50MzJAVmFsdWVJbXBAS0pTQEBRQkVLUEFWRXhlY1N0YXRlQDJAQFogQCAxMjkg
Tk9OQU1FIDsgdW5zaWduZWQgbG9uZyBLSlM6OlZhbHVlSW1wOjp0b1VJbnQzMihjbGFzcyBLSlM6
OkV4ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9VTG9uZ0BVU3RyaW5nQEtKU0BAUUJFS1BBX05AWiBA
IDEzMCBOT05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6VVN0cmluZzo6dG9VTG9uZyhib29sICop
IGNvbnN0DQotCT90eXBlQE9iamVjdEltcEBLSlNAQFVCRT9BVzRUeXBlQDJAWFogQCAxMzEgTk9O
QU1FIDsgZW51bSBLSlM6OlR5cGUgS0pTOjpPYmplY3RJbXA6OnR5cGUodm9pZCkgY29uc3QNCi0J
P3VubG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTMyIE5PTkFNRSA7IHZvaWQgS0pTOjpJ
bnRlcnByZXRlcjo6dW5sb2NrKHZvaWQpDQotCT92YWx1ZUBTdHJpbmdAS0pTQEBRQkU/QVZVU3Ry
aW5nQDJAWFogQCAxMzMgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6U3RyaW5nOjp2
YWx1ZSh2b2lkKSBjb25zdA0KLQk/dmlydHVhbF9ob29rQEludGVycHJldGVyQEtKU0BATUFFWEhQ
QVhAWiBAIDEzNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnZpcnR1YWxfaG9vayhp
bnQsIHZvaWQgKikNCi0Ja2pzX3N0cnRvZCBAIDEzNSBOT05BTUUNCi0JP2NsYXNzSW5mb0BPYmpl
Y3RAS0pTQEBRQkVQQlVDbGFzc0luZm9AMkBYWiBAIDEzNiBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpD
bGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQotCT9o
YXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDEzNyBO
T05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID8/MEJvb2xlYW5AS0pTQEBRQUVAX05A
WiBAIDEgTk9OQU1FIDsgS0pTOjpCb29sZWFuOjpCb29sZWFuKGJvb2wpDQorICAgID8/MEludGVy
cHJldGVyQEtKU0BAUUFFQEFCVk9iamVjdEAxQEBaIEAgMiBOT05BTUUgOyBLSlM6OkludGVycHJl
dGVyOjpJbnRlcnByZXRlcihjbGFzcyBLSlM6Ok9iamVjdCBjb25zdCAmKQ0KKyAgICA/PzBMaXN0
QEtKU0BAUUFFQFhaIEAgMyBOT05BTUUgOyBLSlM6Okxpc3Q6Okxpc3Qodm9pZCkNCisgICAgPz8w
TnVsbEBLSlNAQFFBRUBYWiBAIDQgTk9OQU1FIDsgS0pTOjpOdWxsOjpOdWxsKHZvaWQpDQorICAg
ID8/ME51bWJlckBLSlNAQFFBRUBIQFogQCA1IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIo
aW50KQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBRQUVASUBaIEAgNiBOT05BTUUgOyBLSlM6Ok51bWJl
cjo6TnVtYmVyKHVuc2lnbmVkIGludCkNCisgICAgPz8wTnVtYmVyQEtKU0BAUUFFQEpAWiBAIDcg
Tk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihsb25nKQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBR
QUVAS0BaIEAgOCBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKHVuc2lnbmVkIGxvbmcpDQor
ICAgID8/ME51bWJlckBLSlNAQFFBRUBOQFogQCA5IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1i
ZXIoZG91YmxlKQ0KKyAgICA/PzBPYmplY3RJbXBAS0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAx
MCBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6T2JqZWN0SW1wKGNsYXNzIEtKUzo6T2JqZWN0IGNv
bnN0ICYpDQorICAgID8/ME9iamVjdEltcEBLSlNAQFFBRUBYWiBAIDExIE5PTkFNRSA7IEtKUzo6
T2JqZWN0SW1wOjpPYmplY3RJbXAodm9pZCkNCisgICAgPz8wUnVudGltZU9iamVjdEltcEBLSlNA
QFFBRUBQQVZJbnN0YW5jZUBCaW5kaW5nc0AxQF9OQFogQCAxMiBOT05BTUUgOyBLSlM6OlJ1bnRp
bWVPYmplY3RJbXA6OlJ1bnRpbWVPYmplY3RJbXAoY2xhc3MgS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2UgKiwgYm9vbCkNCisgICAgPz8wU3RyaW5nQEtKU0BAUUFFQEFCVlVTdHJpbmdAMUBAWiBAIDEz
IE5PTkFNRSA7IEtKUzo6U3RyaW5nOjpTdHJpbmcoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYp
DQorICAgID8/MFVTdHJpbmdAS0pTQEBRQUVAQUJWMDFAMEBaIEAgMTQgTk9OQU1FIDsgS0pTOjpV
U3RyaW5nOjpVU3RyaW5nKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlVT
dHJpbmcgY29uc3QgJikNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBEQFogQCAxNSBOT05BTUUg
OyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2hhcikNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBQ
QVVVQ2hhckAxQEhfTkBaIEAgMTYgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKHN0cnVj
dCBLSlM6OlVDaGFyICosIGludCwgYm9vbCkNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBQQkRA
WiBAIDE3IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjaGFyIGNvbnN0ICopDQorICAg
ID8/MFVTdHJpbmdAS0pTQEBRQUVAUEJVVUNoYXJAMUBIQFogQCAxOCBOT05BTUUgOyBLSlM6OlVT
dHJpbmc6OlVTdHJpbmcoc3RydWN0IEtKUzo6VUNoYXIgY29uc3QgKiwgaW50KQ0KKyAgICA/PzBV
U3RyaW5nQEtKU0BAUUFFQFhaIEAgMTkgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKHZv
aWQpDQorICAgID8/MFVuZGVmaW5lZEBLSlNAQFFBRUBYWiBAIDIwIE5PTkFNRSA7IEtKUzo6VW5k
ZWZpbmVkOjpVbmRlZmluZWQodm9pZCkNCisgICAgPz8wVmFsdWVAS0pTQEBRQUVAQUJWMDFAQFog
QCAyMSBOT05BTUUgOyBLSlM6OlZhbHVlOjpWYWx1ZShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYp
DQorICAgID8/MFZhbHVlQEtKU0BAUUFFQFBBVlZhbHVlSW1wQDFAQFogQCAyMiBOT05BTUUgOyBL
SlM6OlZhbHVlOjpWYWx1ZShjbGFzcyBLSlM6OlZhbHVlSW1wICopDQorICAgID8/MUludGVycHJl
dGVyQEtKU0BAVUFFQFhaIEAgMjMgTk9OQU1FIDsgS0pTOjpJbnRlcnByZXRlcjo6fkludGVycHJl
dGVyKHZvaWQpDQorICAgID8/MU9iamVjdEltcEBLSlNAQFVBRUBYWiBAIDI0IE5PTkFNRSA7IEtK
Uzo6T2JqZWN0SW1wOjp+T2JqZWN0SW1wKHZvaWQpDQorICAgID8/MVZhbHVlQEtKU0BAUUFFQFha
IEAgMjUgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6flZhbHVlKHZvaWQpDQorICAgID8/MlZhbHVlSW1w
QEtKU0BAU0FQQVhJQFogQCAyNiBOT05BTUUgOyB2b2lkICogS0pTOjpWYWx1ZUltcDo6b3BlcmF0
b3IgbmV3KHVuc2lnbmVkIGludCkNCisgICAgPz8zVmFsdWVJbXBAS0pTQEBTQVhQQVhAWiBAIDI3
IE5PTkFNRSA7IHZvaWQgS0pTOjpWYWx1ZUltcDo6b3BlcmF0b3IgZGVsZXRlKHZvaWQgKikNCisg
ICAgPz80Q1N0cmluZ0BLSlNAQFFBRUFBVjAxQFBCREBaIEAgMjggTk9OQU1FIDsgY2xhc3MgS0pT
OjpDU3RyaW5nICYgS0pTOjpDU3RyaW5nOjpvcGVyYXRvcj0oY2hhciBjb25zdCAqKQ0KKyAgICA/
PzRMaXN0QEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAyOSBOT05BTUUgOyBjbGFzcyBLSlM6Okxp
c3QgJiBLSlM6Okxpc3Q6Om9wZXJhdG9yPShjbGFzcyBLSlM6Okxpc3QgY29uc3QgJikNCisgICAg
Pz80U2NvcGVDaGFpbkBLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAgMzAgTk9OQU1FIDsgY2xhc3Mg
S0pTOjpTY29wZUNoYWluICYgS0pTOjpTY29wZUNoYWluOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpT
Y29wZUNoYWluIGNvbnN0ICYpDQorICAgID8/NFVTdHJpbmdAS0pTQEBRQUVBQVYwMUBBQlYwMUBA
WiBAIDMxIE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyAmIEtKUzo6VVN0cmluZzo6b3BlcmF0
b3I9KGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KKyAgICA/PzRWYWx1ZUBLSlNAQFFBRUFB
VjAxQEFCVjAxQEBaIEAgMzIgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSAmIEtKUzo6VmFsdWU6
Om9wZXJhdG9yPShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQorICAgID8/OEtKU0BAWUFfTkFC
VlVTdHJpbmdAMEBQQkRAWiBAIDMzIE5PTkFNRSA7IGJvb2wgS0pTOjpvcGVyYXRvcj09KGNsYXNz
IEtKUzo6VVN0cmluZyBjb25zdCAmLCBjaGFyIGNvbnN0ICopDQorICAgID9OUE5fU2V0RXhjZXB0
aW9uV2l0aFVURjhAQFlBWFBBVU5QT2JqZWN0QEBQQkRIQFogQCAzNCBOT05BTUUgOyB2b2lkIE5Q
Tl9TZXRFeGNlcHRpb25XaXRoVVRGOChzdHJ1Y3QgTlBPYmplY3QgKiwgY2hhciBjb25zdCAqLCBp
bnQpDQorICAgID9hZGRASWRlbnRpZmllckBLSlNAQENBUEFVUmVwQFVTdHJpbmdAMkBQQVUzNDJA
QFogQCAzNSBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OklkZW50aWZp
ZXI6OmFkZChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKikNCisgICAgP2FkZEBJZGVudGlmaWVy
QEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBCREBaIEAgMzYgTk9OQU1FIDsgc3RydWN0IEtKUzo6
VVN0cmluZzo6UmVwICogS0pTOjpJZGVudGlmaWVyOjphZGQoY2hhciBjb25zdCAqKQ0KKyAgICA/
YXBwZW5kQExpc3RAS0pTQEBRQUVYUEFWVmFsdWVJbXBAMkBAWiBAIDM3IE5PTkFNRSA7IHZvaWQg
S0pTOjpMaXN0OjphcHBlbmQoY2xhc3MgS0pTOjpWYWx1ZUltcCAqKQ0KKyAgICA/YXBwZW5kQFVT
dHJpbmdAS0pTQEBRQUVBQVYxMkBBQlYxMkBAWiBAIDM4IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0
cmluZyAmIEtKUzo6VVN0cmluZzo6YXBwZW5kKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0K
KyAgICA/YXBwZW5kQFVTdHJpbmdAS0pTQEBRQUVBQVYxMkBQQkRAWiBAIDM5IE5PTkFNRSA7IGNs
YXNzIEtKUzo6VVN0cmluZyAmIEtKUzo6VVN0cmluZzo6YXBwZW5kKGNoYXIgY29uc3QgKikNCisg
ICAgP2FzY2lpQFVTdHJpbmdAS0pTQEBRQkVQQURYWiBAIDQwIE5PTkFNRSA7IGNoYXIgKiBLSlM6
OlVTdHJpbmc6OmFzY2lpKHZvaWQpIGNvbnN0DQorICAgID9hdHRhY2hOdWxsQFVTdHJpbmdAS0pT
QEBBQUVYWFogQCA0MSBOT05BTUUgOyB2b2lkIEtKUzo6VVN0cmluZzo6YXR0YWNoTnVsbCh2b2lk
KQ0KKyAgICA/YnVpbHRpbkFycmF5QEludGVycHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFog
QCA0MiBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGlu
QXJyYXkodm9pZCkgY29uc3QNCisgICAgP2J1aWx0aW5GdW5jdGlvbkBJbnRlcnByZXRlckBLSlNA
QFFCRT9BVk9iamVjdEAyQFhaIEAgNDMgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJ
bnRlcnByZXRlcjo6YnVpbHRpbkZ1bmN0aW9uKHZvaWQpIGNvbnN0DQorICAgID9idWlsdGluT2Jq
ZWN0QEludGVycHJldGVyQEtKU0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0NCBOT05BTUUgOyBjbGFz
cyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJldGVyOjpidWlsdGluT2JqZWN0KHZvaWQpIGNvbnN0
DQorICAgID9idWlsdGluT2JqZWN0UHJvdG90eXBlQEludGVycHJldGVyQEtKU0BAUUJFP0FWT2Jq
ZWN0QDJAWFogQCA0NSBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJldGVy
OjpidWlsdGluT2JqZWN0UHJvdG90eXBlKHZvaWQpIGNvbnN0DQorICAgID9jYWxsQE9iamVjdEBL
SlNAQFFBRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUFWMTJAQUJWTGlzdEAyQEBaIEAgNDYg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdDo6Y2FsbChjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Ok9iamVjdCAmLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJikN
CisgICAgP2NhbGxAT2JqZWN0SW1wQEtKU0BAVUFFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBB
QVZPYmplY3RAMkBBQlZMaXN0QDJAQFogQCA0NyBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtK
Uzo6T2JqZWN0SW1wOjpjYWxsKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6T2Jq
ZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/Y2FuUHV0QE9iamVjdEltcEBL
SlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNDggTk9OQU1FIDsg
Ym9vbCBLSlM6Ok9iamVjdEltcDo6Y2FuUHV0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNz
IEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/Y2xhc3NJbmZvQE9iamVjdEBL
SlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgNDkgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xhc3NJ
bmZvIGNvbnN0ICogS0pTOjpPYmplY3Q6OmNsYXNzSW5mbyh2b2lkKSBjb25zdA0KKyAgICA/Y2xh
c3NJbmZvQE9iamVjdEltcEBLSlNAQFVCRVBCVUNsYXNzSW5mb0AyQFhaIEAgNTAgTk9OQU1FIDsg
c3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pTOjpPYmplY3RJbXA6OmNsYXNzSW5mbyh2
b2lkKSBjb25zdA0KKyAgICA/Y2xhc3NOYW1lQE9iamVjdEltcEBLSlNAQFVCRT9BVlVTdHJpbmdA
MkBYWiBAIDUxIE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBLSlM6Ok9iamVjdEltcDo6Y2xh
c3NOYW1lKHZvaWQpIGNvbnN0DQorICAgID9jb2xsZWN0QENvbGxlY3RvckBLSlNAQFNBX05YWiBA
IDUyIE5PTkFNRSA7IGJvb2wgS0pTOjpDb2xsZWN0b3I6OmNvbGxlY3Qodm9pZCkNCisgICAgP2Nv
bXBhdE1vZGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVc0Q29tcGF0TW9kZUAxMkBYWiBAIDUzIE5P
TkFNRSA7IGVudW0gS0pTOjpJbnRlcnByZXRlcjo6Q29tcGF0TW9kZSBLSlM6OkludGVycHJldGVy
Ojpjb21wYXRNb2RlKHZvaWQpIGNvbnN0DQorICAgID9jb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BA
VUFFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWTGlzdEAyQEBaIEAgNTQgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJbXA6OmNvbnN0cnVjdChjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJikNCisgICAgP2NvbnN0cnVjdEBPYmpl
Y3RJbXBAS0pTQEBVQUU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZMaXN0QDJAQUJWVVN0
cmluZ0AyQEhAWiBAIDU1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1w
Ojpjb25zdHJ1Y3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0
ICYsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBpbnQpDQorICAgID9jb3B5VGFpbEBMaXN0
QEtKU0BAUUJFP0FWMTJAWFogQCA1NiBOT05BTUUgOyBjbGFzcyBLSlM6Okxpc3QgS0pTOjpMaXN0
Ojpjb3B5VGFpbCh2b2lkKSBjb25zdA0KKyAgICA/Y3JlYXRlQEVycm9yQEtKU0BAU0E/QVZPYmpl
Y3RAMkBQQVZFeGVjU3RhdGVAMkBXNEVycm9yVHlwZUAyQFBCREhIUEJWVVN0cmluZ0AyQEBaIEAg
NTcgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpFcnJvcjo6Y3JlYXRlKGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpFcnJvclR5cGUsIGNoYXIgY29uc3QgKiwgaW50LCBp
bnQsIGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlQFJlcEBVU3RyaW5n
QEtKU0BAU0FQQVUxMjNAUEFVVUNoYXJAM0BIQFogQCA1OCBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpV
U3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3JlYXRlKHN0cnVjdCBLSlM6OlVDaGFy
ICosIGludCkNCisgICAgP2NyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlQEluc3RhbmNl
QEJpbmRpbmdzQEtKU0BAU0FQQVYxMjNAVzRCaW5kaW5nTGFuZ3VhZ2VAMTIzQFBBWFBCVlJvb3RP
YmplY3RAMjNAQFogQCA1OSBOT05BTUUgOyBjbGFzcyBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAq
IEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5j
ZShlbnVtIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIHZvaWQgKiwg
Y2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlQ29w
eWluZ0BSZXBAVVN0cmluZ0BLSlNAQFNBUEFVMTIzQFBCVVVDaGFyQDNASEBaIEAgNjAgTk9OQU1F
IDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpVU3RyaW5nOjpSZXA6OmNyZWF0ZUNv
cHlpbmcoc3RydWN0IEtKUzo6VUNoYXIgY29uc3QgKiwgaW50KQ0KKyAgICA/Y3JlYXRlTGFuZ3Vh
Z2VJbnN0YW5jZUZvclZhbHVlQEluc3RhbmNlQEJpbmRpbmdzQEtKU0BAU0FQQVhQQVZFeGVjU3Rh
dGVAM0BXNEJpbmRpbmdMYW5ndWFnZUAxMjNAQUJWT2JqZWN0QDNAUEJWUm9vdE9iamVjdEAyM0Az
QFogQCA2MSBOT05BTUUgOyB2b2lkICogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUxh
bmd1YWdlSW5zdGFuY2VGb3JWYWx1ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6
QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIGNsYXNzIEtKUzo6T2JqZWN0IGNv
bnN0ICYsIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKiwgY2xhc3MgS0pT
OjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlQEludGVycHJldGVyQEtKU0BAVUFFUEFYUEFWRXhlY1N0YXRlQDJAVzRCaW5k
aW5nTGFuZ3VhZ2VASW5zdGFuY2VAQmluZGluZ3NAMkBBQlZPYmplY3RAMkBQQlZSb290T2JqZWN0
QDYyQDNAWiBAIDYyIE5PTkFNRSA7IHZvaWQgKiBLSlM6OkludGVycHJldGVyOjpjcmVhdGVMYW5n
dWFnZUluc3RhbmNlRm9yVmFsdWUoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OkJp
bmRpbmdzOjpJbnN0YW5jZTo6QmluZGluZ0xhbmd1YWdlLCBjbGFzcyBLSlM6Ok9iamVjdCBjb25z
dCAmLCBjbGFzcyBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0IGNvbnN0ICosIGNsYXNzIEtKUzo6
QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKikNCisgICAgP2NyZWF0ZVJ1bnRpbWVPYmplY3RA
SW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQT9BVk9iamVjdEAzQFc0QmluZGluZ0xhbmd1YWdlQDEy
M0BQQVhQQlZSb290T2JqZWN0QDIzQEBaIEAgNjMgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3Qg
S0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoZW51bSBLSlM6OkJp
bmRpbmdzOjpJbnN0YW5jZTo6QmluZGluZ0xhbmd1YWdlLCB2b2lkICosIGNsYXNzIEtKUzo6Qmlu
ZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKikNCisgICAgP2RlZmF1bHRWYWx1ZUBPYmplY3RJbXBA
S0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQFc0VHlwZUAyQEBaIEAgNjQgTk9OQU1F
IDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpUeXBlKSBjb25zdA0KKyAgICA/ZGVsZXRlQWxsUHJv
cGVydGllc0BPYmplY3RJbXBAS0pTQEBRQUVYUEFWRXhlY1N0YXRlQDJAQFogQCA2NSBOT05BTUUg
OyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpkZWxldGVBbGxQcm9wZXJ0aWVzKGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICopDQorICAgID9kZWxldGVQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQUVfTlBBVkV4
ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDY2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmpl
Y3RJbXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6
SWRlbnRpZmllciBjb25zdCAmKQ0KKyAgICA/ZGVsZXRlUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BA
VUFFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA2NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1w
OjpkZWxldGVQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpDQor
ICAgID9kZXJlZlZhbHVlc0BMaXN0QEtKU0BAQUFFWFhaIEAgNjggTk9OQU1FIDsgdm9pZCBLSlM6
Okxpc3Q6OmRlcmVmVmFsdWVzKHZvaWQpDQorICAgID9kZXN0cm95QFJlcEBVU3RyaW5nQEtKU0BA
UUFFWFhaIEAgNjkgTk9OQU1FIDsgdm9pZCBLSlM6OlVTdHJpbmc6OlJlcDo6ZGVzdHJveSh2b2lk
KQ0KKyAgICA/ZGlzcGF0Y2hUb09iamVjdEBWYWx1ZUltcEBLSlNAQFFCRT9BVk9iamVjdEAyQFBB
VkV4ZWNTdGF0ZUAyQEBaIEAgNzAgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpWYWx1
ZUltcDo6ZGlzcGF0Y2hUb09iamVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAg
ICA/ZHluYW1pY0Nhc3RAT2JqZWN0QEtKU0BAU0E/QVYxMkBBQlZWYWx1ZUAyQEBaIEAgNzEgTk9O
QU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3Q6OmR5bmFtaWNDYXN0KGNsYXNzIEtK
Uzo6VmFsdWUgY29uc3QgJikNCisgICAgP2VxdWFsQElkZW50aWZpZXJAS0pTQEBDQV9OUEFVUmVw
QFVTdHJpbmdAMkBQQkRAWiBAIDcyIE5PTkFNRSA7IGJvb2wgS0pTOjpJZGVudGlmaWVyOjplcXVh
bChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiwgY2hhciBjb25zdCAqKQ0KKyAgICA/ZXF1YWxA
SWRlbnRpZmllckBLSlNAQENBX05QQVVSZXBAVVN0cmluZ0AyQFBCVVVDaGFyQDJASEBaIEAgNzMg
Tk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZpZXI6OmVxdWFsKHN0cnVjdCBLSlM6OlVTdHJpbmc6
OlJlcCAqLCBzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQorICAgID9ldmFsdWF0ZUBJ
bnRlcnByZXRlckBLSlNAQFFBRT9BVkNvbXBsZXRpb25AMkBBQlZVU3RyaW5nQDJAQUJWVmFsdWVA
MkAwQFogQCA3NCBOT05BTUUgOyBjbGFzcyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJbnRlcnByZXRl
cjo6ZXZhbHVhdGUoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUg
Y29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID9ldmFsdWF0ZUBJbnRl
cnByZXRlckBLSlNAQFFBRT9BVkNvbXBsZXRpb25AMkBBQlZVU3RyaW5nQDJASDBBQlZWYWx1ZUAy
QEBaIEAgNzUgTk9OQU1FIDsgY2xhc3MgS0pTOjpDb21wbGV0aW9uIEtKUzo6SW50ZXJwcmV0ZXI6
OmV2YWx1YXRlKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmLCBpbnQsIGNsYXNzIEtKUzo6VVN0
cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQorICAgID9maW5kRW50cnlA
TG9va3VwQEtKU0BAU0FQQlZIYXNoRW50cnlAMkBQQlZIYXNoVGFibGVAMkBBQlZJZGVudGlmaWVy
QDJAQFogQCA3NiBOT05BTUUgOyBjbGFzcyBLSlM6Okhhc2hFbnRyeSBjb25zdCAqIEtKUzo6TG9v
a3VwOjpmaW5kRW50cnkoY2xhc3MgS0pTOjpIYXNoVGFibGUgY29uc3QgKiwgY2xhc3MgS0pTOjpJ
ZGVudGlmaWVyIGNvbnN0ICYpDQorICAgID9mcm9tQFVTdHJpbmdAS0pTQEBTQT9BVjEyQEpAWiBA
IDc3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBLSlM6OlVTdHJpbmc6OmZyb20obG9uZykN
CisgICAgP2dldEBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBAWiBAIDc4IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmpl
Y3RJbXA6OmdldChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIg
Y29uc3QgJikgY29uc3QNCisgICAgP2dldEBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBB
VkV4ZWNTdGF0ZUAyQElAWiBAIDc5IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmpl
Y3RJbXA6OmdldChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQor
ICAgID9nZXRAUHJvcGVydHlNYXBAS0pTQEBRQkVQQVZWYWx1ZUltcEAyQEFCVklkZW50aWZpZXJA
MkBAWiBAIDgwIE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWVJbXAgKiBLSlM6OlByb3BlcnR5TWFw
OjpnZXQoY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9nbG9iYWxF
eGVjQEludGVycHJldGVyQEtKU0BAUUFFUEFWRXhlY1N0YXRlQDJAWFogQCA4MSBOT05BTUUgOyBj
bGFzcyBLSlM6OkV4ZWNTdGF0ZSAqIEtKUzo6SW50ZXJwcmV0ZXI6Omdsb2JhbEV4ZWModm9pZCkN
CisgICAgP2dsb2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFCRUFBVk9iamVjdEAyQFhaIEAg
ODIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgJiBLSlM6OkludGVycHJldGVyOjpnbG9iYWxP
YmplY3Qodm9pZCkgY29uc3QNCisgICAgP2hhc0luc3RhbmNlQE9iamVjdEltcEBLSlNAQFVBRT9B
VkJvb2xlYW5AMkBQQVZFeGVjU3RhdGVAMkBBQlZWYWx1ZUAyQEBaIEAgODMgTk9OQU1FIDsgY2xh
c3MgS0pTOjpCb29sZWFuIEtKUzo6T2JqZWN0SW1wOjpoYXNJbnN0YW5jZShjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYpDQorICAgID9oYXNPd25Qcm9wZXJ0
eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDg0
IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFz
T3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4NSBOT05B
TUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBA
S0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDg2IE5PTkFNRSA7
IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFzT3duUHJv
cGVydHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4NyBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0SW1wOjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBR
QkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDg4IE5PTkFNRSA7IGJvb2wg
S0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtK
Uzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0QEtK
U0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCA4OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0
OjpoYXNQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0
DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFC
VklkZW50aWZpZXJAMkBAWiBAIDkwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1By
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmKSBjb25zdA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVj
U3RhdGVAMkBJQFogQCA5MSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpoYXNQcm9wZXJ0
eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQorICAgID9pbXBB
dEBMaXN0QEtKU0BAUUJFUEFWVmFsdWVJbXBAMkBIQFogQCA5MiBOT05BTUUgOyBjbGFzcyBLSlM6
OlZhbHVlSW1wICogS0pTOjpMaXN0OjppbXBBdChpbnQpIGNvbnN0DQorICAgID9pbXBsZW1lbnRz
Q2FsbEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgOTMgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVj
dEltcDo6aW1wbGVtZW50c0NhbGwodm9pZCkgY29uc3QNCisgICAgP2ltcGxlbWVudHNDb25zdHJ1
Y3RAT2JqZWN0SW1wQEtKU0BAVUJFX05YWiBAIDk0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJ
bXA6OmltcGxlbWVudHNDb25zdHJ1Y3Qodm9pZCkgY29uc3QNCisgICAgP2ltcGxlbWVudHNIYXNJ
bnN0YW5jZUBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgOTUgTk9OQU1FIDsgYm9vbCBLSlM6Ok9i
amVjdEltcDo6aW1wbGVtZW50c0hhc0luc3RhbmNlKHZvaWQpIGNvbnN0DQorICAgID9pbmNTdGF0
ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDk2IE5PTkFNRSA7IHZvaWQgS0pT
OjpJbnRlcnByZXRlcjo6aW5jU3RhdGVtZW50Q291bnQodm9pZCkNCisgICAgP2luaGVyaXRzQE9i
amVjdEltcEBLSlNAQFFCRV9OUEJVQ2xhc3NJbmZvQDJAQFogQCA5NyBOT05BTUUgOyBib29sIEtK
Uzo6T2JqZWN0SW1wOjppbmhlcml0cyhzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKikgY29u
c3QNCisgICAgP2luaXRHbG9iYWxPYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQUVYWFogQCA5OCBO
T05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmluaXRHbG9iYWxPYmplY3Qodm9pZCkNCisg
ICAgP2lzTnVsbEBVU3RyaW5nQEtKU0BAUUJFX05YWiBAIDk5IE5PTkFNRSA7IGJvb2wgS0pTOjpV
U3RyaW5nOjppc051bGwodm9pZCkgY29uc3QNCisgICAgP2xlbmd0aFByb3BlcnR5QEtKU0BAWUFB
QlZJZGVudGlmaWVyQDFAWFogQCAxMDAgTk9OQU1FIDsgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNv
bnN0ICYgS0pTOjpsZW5ndGhQcm9wZXJ0eSh2b2lkKQ0KKyAgICA/bGV4aWNhbEludGVycHJldGVy
QEV4ZWNTdGF0ZUBLSlNAQFFCRVBBVkludGVycHJldGVyQDJAWFogQCAxMDEgTk9OQU1FIDsgY2xh
c3MgS0pTOjpJbnRlcnByZXRlciAqIEtKUzo6RXhlY1N0YXRlOjpsZXhpY2FsSW50ZXJwcmV0ZXIo
dm9pZCkgY29uc3QNCisgICAgP2xvY2tASW50ZXJwcmV0ZXJAS0pTQEBTQVhYWiBAIDEwMiBOT05B
TUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OmxvY2sodm9pZCkNCisgICAgP21hcmtAT2JqZWN0
SW1wQEtKU0BAVUFFWFhaIEAgMTAzIE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6Om1hcmso
dm9pZCkNCisgICAgP21hcmtlZEBWYWx1ZUltcEBLSlNAQFFCRV9OWFogQCAxMDQgTk9OQU1FIDsg
Ym9vbCBLSlM6OlZhbHVlSW1wOjptYXJrZWQodm9pZCkgY29uc3QNCisgICAgP21lc3NhZ2VQcm9w
ZXJ0eUBLSlNAQFlBQUJWSWRlbnRpZmllckAxQFhaIEAgMTA1IE5PTkFNRSA7IGNsYXNzIEtKUzo6
SWRlbnRpZmllciBjb25zdCAmIEtKUzo6bWVzc2FnZVByb3BlcnR5KHZvaWQpDQorICAgID9wcm9w
TGlzdEBPYmplY3RAS0pTQEBRQUU/QVZSZWZlcmVuY2VMaXN0QDJAUEFWRXhlY1N0YXRlQDJAX05A
WiBAIDEwNiBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5jZUxpc3QgS0pTOjpPYmplY3Q6OnBy
b3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wpDQorICAgID9wcm9wTGlzdEBPYmpl
Y3RJbXBAS0pTQEBVQUU/QVZSZWZlcmVuY2VMaXN0QDJAUEFWRXhlY1N0YXRlQDJAX05AWiBAIDEw
NyBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5jZUxpc3QgS0pTOjpPYmplY3RJbXA6OnByb3BM
aXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wpDQorICAgID9wcm90b3R5cGVAT2JqZWN0
SW1wQEtKU0BAUUJFP0FWVmFsdWVAMkBYWiBAIDEwOCBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVl
IEtKUzo6T2JqZWN0SW1wOjpwcm90b3R5cGUodm9pZCkgY29uc3QNCisgICAgP3B1c2hAU2NvcGVD
aGFpbkBLSlNAQFFBRVhBQlYxMkBAWiBAIDEwOSBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFp
bjo6cHVzaChjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikNCisgICAgP3B1c2hAU2NvcGVD
aGFpbkBLSlNAQFFBRVhQQVZPYmplY3RJbXBAMkBAWiBAIDExMCBOT05BTUUgOyB2b2lkIEtKUzo6
U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6Ok9iamVjdEltcCAqKQ0KKyAgICA/cHV0QE9iamVj
dEltcEBLSlNAQFVBRVhQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUJWVmFsdWVAMkBI
QFogQCAxMTEgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVl
IGNvbnN0ICYsIGludCkNCisgICAgP3B1dEBPYmplY3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRl
QDJASUFCVlZhbHVlQDJASEBaIEAgMTEyIE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1
dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQsIGNsYXNzIEtKUzo6VmFsdWUg
Y29uc3QgJiwgaW50KQ0KKyAgICA/cHV0RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVu
dGlmaWVyQDJASEhAWiBAIDExMyBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJl
Y3QoY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGludCwgaW50KQ0KKyAgICA/cHV0RGly
ZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVyQDJAUEFWVmFsdWVJbXBAMkBIQFog
QCAxMTQgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtKUzo6
SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlSW1wICosIGludCkNCisgICAgP3Jl
ZlZhbHVlc0BMaXN0QEtKU0BAQUFFWFhaIEAgMTE1IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0Ojpy
ZWZWYWx1ZXModm9pZCkNCisgICAgP3JlbGVhc2VATGlzdEBLSlNAQEFBRVhYWiBAIDExNiBOT05B
TUUgOyB2b2lkIEtKUzo6TGlzdDo6cmVsZWFzZSh2b2lkKQ0KKyAgICA/cmVsZWFzZUBTY29wZUNo
YWluQEtKU0BAQUFFWFhaIEAgMTE3IE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpyZWxl
YXNlKHZvaWQpDQorICAgID9yZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzQFJvb3RPYmplY3RAQmlu
ZGluZ3NAS0pTQEBRQUVYWFogQCAxMTggTk9OQU1FIDsgdm9pZCBLSlM6OkJpbmRpbmdzOjpSb290
T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzKHZvaWQpDQorICAgID9yZW1vdmVOYXRp
dmVSZWZlcmVuY2VAQmluZGluZ3NAS0pTQEBZQVhQQVZPYmplY3RJbXBAMkBAWiBAIDExOSBOT05B
TUUgOyB2b2lkIEtKUzo6QmluZGluZ3M6OnJlbW92ZU5hdGl2ZVJlZmVyZW5jZShjbGFzcyBLSlM6
Ok9iamVjdEltcCAqKQ0KKyAgICA/cmVzZXRTdGF0ZW1lbnRDb3VudEBJbnRlcnByZXRlckBLSlNA
QFFBRVhYWiBAIDEyMCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnJlc2V0U3RhdGVt
ZW50Q291bnQodm9pZCkNCisgICAgP3Jlc3RvcmVAUHJvcGVydHlNYXBAS0pTQEBRQUVYQUJWU2F2
ZWRQcm9wZXJ0aWVzQDJAQFogQCAxMjEgTk9OQU1FIDsgdm9pZCBLSlM6OlByb3BlcnR5TWFwOjpy
ZXN0b3JlKGNsYXNzIEtKUzo6U2F2ZWRQcm9wZXJ0aWVzIGNvbnN0ICYpDQorICAgID9yZXN0b3Jl
QnVpbHRpbnNASW50ZXJwcmV0ZXJAS0pTQEBRQUVYQUJWU2F2ZWRCdWlsdGluc0AyQEBaIEAgMTIy
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzdG9yZUJ1aWx0aW5zKGNsYXNzIEtK
Uzo6U2F2ZWRCdWlsdGlucyBjb25zdCAmKQ0KKyAgICA/c2F2ZUBQcm9wZXJ0eU1hcEBLSlNAQFFC
RVhBQVZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDEyMyBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVy
dHlNYXA6OnNhdmUoY2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMgJikgY29uc3QNCisgICAgP3Nh
dmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFCRVhBQVZTYXZlZEJ1aWx0aW5zQDJAQFogQCAx
MjQgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpzYXZlQnVpbHRpbnMoY2xhc3MgS0pT
OjpTYXZlZEJ1aWx0aW5zICYpIGNvbnN0DQorICAgID9zZXRDb21wYXRNb2RlQEludGVycHJldGVy
QEtKU0BAUUFFWFc0Q29tcGF0TW9kZUAxMkBAWiBAIDEyNSBOT05BTUUgOyB2b2lkIEtKUzo6SW50
ZXJwcmV0ZXI6OnNldENvbXBhdE1vZGUoZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2Rl
KQ0KKyAgICA/c2V0SW50ZXJwcmV0ZXJAUm9vdE9iamVjdEBCaW5kaW5nc0BLSlNAQFFBRVhQQVZJ
bnRlcnByZXRlckAzQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgS0pTOjpCaW5kaW5nczo6Um9vdE9i
amVjdDo6c2V0SW50ZXJwcmV0ZXIoY2xhc3MgS0pTOjpJbnRlcnByZXRlciAqKQ0KKyAgICA/c2V0
UHJvdG90eXBlQE9iamVjdEltcEBLSlNAQFFBRVhBQlZWYWx1ZUAyQEBaIEAgMTI3IE5PTkFNRSA7
IHZvaWQgS0pTOjpPYmplY3RJbXA6OnNldFByb3RvdHlwZShjbGFzcyBLSlM6OlZhbHVlIGNvbnN0
ICYpDQorICAgID9zZXRTaG91bGRQcmludEV4Y2VwdGlvbnNASW50ZXJwcmV0ZXJAS0pTQEBTQVhf
TkBaIEAgMTI4IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0U2hvdWxkUHJpbnRF
eGNlcHRpb25zKGJvb2wpDQorICAgID9zaG91bGRQcmludEV4Y2VwdGlvbnNASW50ZXJwcmV0ZXJA
S0pTQEBTQV9OWFogQCAxMjkgTk9OQU1FIDsgYm9vbCBLSlM6OkludGVycHJldGVyOjpzaG91bGRQ
cmludEV4Y2VwdGlvbnModm9pZCkNCisgICAgP3RvQXJyYXlJbmRleEBVU3RyaW5nQEtKU0BAUUJF
SVBBX05AWiBAIDEzMCBOT05BTUUgOyB1bnNpZ25lZCBpbnQgS0pTOjpVU3RyaW5nOjp0b0FycmF5
SW5kZXgoYm9vbCAqKSBjb25zdA0KKyAgICA/dG9Cb29sZWFuQE9iamVjdEltcEBLSlNAQFVCRV9O
UEFWRXhlY1N0YXRlQDJAQFogQCAxMzEgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6dG9C
b29sZWFuKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b0ludDMyQFZhbHVl
SW1wQEtKU0BAUUJFSFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTMyIE5PTkFNRSA7IGludCBLSlM6OlZh
bHVlSW1wOjp0b0ludDMyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b0lu
dGVnZXJAVmFsdWVJbXBAS0pTQEBRQkVOUEFWRXhlY1N0YXRlQDJAQFogQCAxMzMgTk9OQU1FIDsg
ZG91YmxlIEtKUzo6VmFsdWVJbXA6OnRvSW50ZWdlcihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBj
b25zdA0KKyAgICA/dG9OdW1iZXJAT2JqZWN0SW1wQEtKU0BAVUJFTlBBVkV4ZWNTdGF0ZUAyQEBa
IEAgMTM0IE5PTkFNRSA7IGRvdWJsZSBLSlM6Ok9iamVjdEltcDo6dG9OdW1iZXIoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvT2JqZWN0QE9iamVjdEltcEBLSlNAQFVCRT9B
Vk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2Jq
ZWN0IEtKUzo6T2JqZWN0SW1wOjp0b09iamVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25z
dA0KKyAgICA/dG9QcmltaXRpdmVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVj
U3RhdGVAMkBXNFR5cGVAMkBAWiBAIDEzNiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6
T2JqZWN0SW1wOjp0b1ByaW1pdGl2ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6
VHlwZSkgY29uc3QNCisgICAgP3RvU3RyaW5nQE9iamVjdEltcEBLSlNAQFVCRT9BVlVTdHJpbmdA
MkBQQVZFeGVjU3RhdGVAMkBAWiBAIDEzNyBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pT
OjpPYmplY3RJbXA6OnRvU3RyaW5nKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAg
ID90b1VJbnQxNkBWYWx1ZUltcEBLSlNAQFFCRUdQQVZFeGVjU3RhdGVAMkBAWiBAIDEzOCBOT05B
TUUgOyB1bnNpZ25lZCBzaG9ydCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQxNihjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9VSW50MzJAVmFsdWVJbXBAS0pTQEBFQkVfTkFBSUBa
IEAgMTM5IE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6dG9VSW50MzIodW5zaWduZWQgaW50
ICYpIGNvbnN0DQorICAgID90b1VJbnQzMkBWYWx1ZUltcEBLSlNAQFFCRUlQQVZFeGVjU3RhdGVA
MkBAWiBAIDE0MCBOT05BTUUgOyB1bnNpZ25lZCBpbnQgS0pTOjpWYWx1ZUltcDo6dG9VSW50MzIo
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvVUxvbmdAVVN0cmluZ0BLSlNA
QFFCRUtQQV9OQFogQCAxNDEgTk9OQU1FIDsgdW5zaWduZWQgbG9uZyBLSlM6OlVTdHJpbmc6OnRv
VUxvbmcoYm9vbCAqKSBjb25zdA0KKyAgICA/dHlwZUBPYmplY3RJbXBAS0pTQEBVQkU/QVc0VHlw
ZUAyQFhaIEAgMTQyIE5PTkFNRSA7IGVudW0gS0pTOjpUeXBlIEtKUzo6T2JqZWN0SW1wOjp0eXBl
KHZvaWQpIGNvbnN0DQorICAgID91bmxvY2tASW50ZXJwcmV0ZXJAS0pTQEBTQVhYWiBAIDE0MyBO
T05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnVubG9jayh2b2lkKQ0KKyAgICA/dmFsdWVA
U3RyaW5nQEtKU0BAUUJFP0FWVVN0cmluZ0AyQFhaIEAgMTQ0IE5PTkFNRSA7IGNsYXNzIEtKUzo6
VVN0cmluZyBLSlM6OlN0cmluZzo6dmFsdWUodm9pZCkgY29uc3QNCisgICAgP3ZpcnR1YWxfaG9v
a0BJbnRlcnByZXRlckBLSlNAQE1BRVhIUEFYQFogQCAxNDUgTk9OQU1FIDsgdm9pZCBLSlM6Oklu
dGVycHJldGVyOjp2aXJ0dWFsX2hvb2soaW50LCB2b2lkICopDQorICAgIE5QTl9DcmVhdGVPYmpl
Y3QgQCAxNDYgTk9OQU1FDQorICAgIE5QTl9FdmFsdWF0ZSBAIDE0NyBOT05BTUUNCisgICAgTlBO
X0dldEludElkZW50aWZpZXIgQCAxNDggTk9OQU1FDQorICAgIE5QTl9HZXRQcm9wZXJ0eSBAIDE0
OSBOT05BTUUNCisgICAgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgQCAxNTAgTk9OQU1FDQorICAg
IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyBAIDE1MSBOT05BTUUNCisgICAgTlBOX0hhc01ldGhv
ZCBAIDE1MiBOT05BTUUNCisgICAgTlBOX0hhc1Byb3BlcnR5IEAgMTUzIE5PTkFNRQ0KKyAgICBO
UE5fSWRlbnRpZmllcklzU3RyaW5nIEAgMTU0IE5PTkFNRQ0KKyAgICBOUE5fSW50RnJvbUlkZW50
aWZpZXIgQCAxNTUgTk9OQU1FDQorICAgIE5QTl9JbnZva2UgQCAxNTYgTk9OQU1FDQorICAgIE5Q
Tl9JbnZva2VEZWZhdWx0IEAgMTU3IE5PTkFNRQ0KKyAgICBOUE5fUmVsZWFzZU9iamVjdCBAIDE1
OCBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgQCAxNTkgTk9OQU1FDQorICAg
IE5QTl9SZW1vdmVQcm9wZXJ0eSBAIDE2MCBOT05BTUUNCisgICAgTlBOX1JldGFpbk9iamVjdCBA
IDE2MSBOT05BTUUNCisgICAgTlBOX1NldEV4Y2VwdGlvbiBAIDE2MiBOT05BTUUNCisgICAgTlBO
X1NldFByb3BlcnR5IEAgMTYzIE5PTkFNRQ0KKyAgICBOUE5fVVRGOEZyb21JZGVudGlmaWVyIEAg
MTY0IE5PTkFNRQ0KKyAgICBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCBAIDE2NSBOT05BTUUNCisg
ICAga2pzX3N0cnRvZCBAIDE2NiBOT05BTUUNCiANCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ncm91
cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWYNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29y
ZS9ncm91cC9FQUJJL0phdmFzY3JpcHRDb3JlVS5kZWYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEph
dmFTY3JpcHRDb3JlL2dyb3VwL0VBQkkvSmF2YXNjcmlwdENvcmVVLmRlZgkod29ya2luZyBjb3B5
KQ0KQEAgLTEsMzkwICsxLDQzNCBAQA0KIEVYUE9SVFMNCi0JX1pOM0tKUzEwSWRlbnRpZmllcjNh
ZGRFUEtjIEAgMSBOT05BTUUNCi0JX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUE5TXzdVU3RyaW5n
M1JlcEUgQCAyIE5PTkFNRQ0KLQlfWk4zS0pTMTBJZGVudGlmaWVyNWVxdWFsRVBOU183VVN0cmlu
ZzNSZXBFUEtOU181VUNoYXJFaSBAIDMgTk9OQU1FDQotCV9aTjNLSlMxMElkZW50aWZpZXI1ZXF1
YWxFUE5TXzdVU3RyaW5nM1JlcEVQS2MgQCA0IE5PTkFNRQ0KLQlfWk4zS0pTMTBTY29wZUNoYWlu
NHB1c2hFUE5TXzlPYmplY3RJbXBFIEAgNSBOT05BTUUNCi0JX1pOM0tKUzEwU2NvcGVDaGFpbjdy
ZWxlYXNlRXYgQCA2IE5PTkFNRQ0KLQlfWk4zS0pTMTBTY29wZUNoYWluYVNFUktTMF8gQCA3IE5P
TkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjEwZ2xvYmFsRXhlY0V2IEAgOCBOT05BTUUNCi0J
X1pOM0tKUzExSW50ZXJwcmV0ZXIxMnZpcnR1YWxfaG9va0VpUHYgQCA5IE5PTkFNRQ0KLQlfWk4z
S0pTMTFJbnRlcnByZXRlcjEzc2V0Q29tcGF0TW9kZUVOUzBfMTBDb21wYXRNb2RlRSBAIDEwIE5P
TkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjE1cmVzdG9yZUJ1aWx0aW5zRVJLTlNfMTNTYXZl
ZEJ1aWx0aW5zRSBAIDExIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjE2aW5pdEdsb2Jh
bE9iamVjdEV2IEAgMTIgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTdpbmNTdGF0ZW1l
bnRDb3VudEV2IEAgMTMgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTlyZXNldFN0YXRl
bWVudENvdW50RXYgQCAxNCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIyMXNob3VsZFBy
aW50RXhjZXB0aW9uc0V2IEAgMTUgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMjRzZXRT
aG91bGRQcmludEV4Y2VwdGlvbnNFYiBAIDE2IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRl
cjRsb2NrRXYgQCAxNyBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXI2dW5sb2NrRXYgQCAx
OCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VS
S05TXzVWYWx1ZUVTM18gQCAxOSBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVh
dGVFUktOU183VVN0cmluZ0VpUzNfUktOU181VmFsdWVFIEAgMjAgTk9OQU1FDQotCV9aTjNLSlMx
MUludGVycHJldGVyQzFFUktOU182T2JqZWN0RSBAIDIxIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRl
cnByZXRlckMyRVJLTlNfNk9iamVjdEUgQCAyMiBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0
ZXJEMEV2IEAgMjMgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyRDFFdiBAIDI0IE5PTkFN
RQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlckQyRXYgQCAyNSBOT05BTUUNCi0JX1pOM0tKUzExUHJv
cGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQcm9wZXJ0aWVzRSBAIDI2IE5PTkFNRQ0KLQlf
Wk4zS0pTMTRsZW5ndGhQcm9wZXJ0eUV2IEAgMjcgTk9OQU1FDQotCV9aTjNLSlMxNW1lc3NhZ2VQ
cm9wZXJ0eUV2IEAgMjggTk9OQU1FDQotCV9aTjNLSlM0TGlzdDExZGVyZWZWYWx1ZXNFdiBAIDI5
IE5PTkFNRQ0KLQlfWk4zS0pTNExpc3Q2YXBwZW5kRVBOU184VmFsdWVJbXBFIEAgMzAgTk9OQU1F
DQotCV9aTjNLSlM0TGlzdDdyZWxlYXNlRXYgQCAzMSBOT05BTUUNCi0JX1pOM0tKUzRMaXN0OXJl
ZlZhbHVlc0V2IEAgMzIgTk9OQU1FDQotCV9aTjNLSlM0TGlzdEMxRXYgQCAzMyBOT05BTUUNCi0J
X1pOM0tKUzRMaXN0QzJFdiBAIDM0IE5PTkFNRQ0KLQlfWk4zS0pTNExpc3RhU0VSS1MwXyBAIDM1
IE5PTkFNRQ0KLQlfWk4zS0pTNE51bGxDMUV2IEAgMzYgTk9OQU1FDQotCV9aTjNLSlM0TnVsbEMy
RXYgQCAzNyBOT05BTUUNCi0JX1pOM0tKUzVFcnJvcjZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFTlNf
OUVycm9yVHlwZUVQS2NpaVBLTlNfN1VTdHJpbmdFIEAgMzggTk9OQU1FDQotCV9aTjNLSlM1VmFs
dWVDMUVQTlNfOFZhbHVlSW1wRSBAIDM5IE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlQzFFUktTMF8g
QCA0MCBOT05BTUUNCi0JX1pOM0tKUzVWYWx1ZUMyRVBOU184VmFsdWVJbXBFIEAgNDEgTk9OQU1F
DQotCV9aTjNLSlM1VmFsdWVDMkVSS1MwXyBAIDQyIE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlRDFF
diBAIDQzIE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlRDJFdiBAIDQ0IE5PTkFNRQ0KLQlfWk4zS0pT
NVZhbHVlYVNFUktTMF8gQCA0NSBOT05BTUUNCi0JX1pOM0tKUzZMb29rdXA5ZmluZEVudHJ5RVBL
TlNfOUhhc2hUYWJsZUVSS05TXzEwSWRlbnRpZmllckUgQCA0NiBOT05BTUUNCi0JX1pOM0tKUzZO
dW1iZXJDMUVkIEAgNDcgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzFFaSBAIDQ4IE5PTkFNRQ0K
LQlfWk4zS0pTNk51bWJlckMxRWogQCA0OSBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVsIEAg
NTAgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzFFbSBAIDUxIE5PTkFNRQ0KLQlfWk4zS0pTNk51
bWJlckMyRWQgQCA1MiBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMkVpIEAgNTMgTk9OQU1FDQot
CV9aTjNLSlM2TnVtYmVyQzJFaiBAIDU0IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRWwgQCA1
NSBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMkVtIEAgNTYgTk9OQU1FDQotCV9aTjNLSlM2T2Jq
ZWN0MTFkeW5hbWljQ2FzdEVSS05TXzVWYWx1ZUUgQCA1NyBOT05BTUUNCi0JX1pOM0tKUzZPYmpl
Y3Q0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSUzBfUktOU180TGlzdEUgQCA1OCBOT05BTUUNCi0JX1pO
M0tKUzZTdHJpbmdDMUVSS05TXzdVU3RyaW5nRSBAIDU5IE5PTkFNRQ0KLQlfWk4zS0pTNlN0cmlu
Z0MyRVJLTlNfN1VTdHJpbmdFIEAgNjAgTk9OQU1FDQotCV9aTjNLSlM3Qm9vbGVhbkMxRWIgQCA2
MSBOT05BTUUNCi0JX1pOM0tKUzdCb29sZWFuQzJFYiBAIDYyIE5PTkFNRQ0KLQlfWk4zS0pTN0NT
dHJpbmdhU0VQS2MgQCA2MyBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nMTBhdHRhY2hOdWxsRXYg
QCA2NCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nM1JlcDEzY3JlYXRlQ29weWluZ0VQS05TXzVV
Q2hhckVpIEAgNjUgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzNSZXA2Y3JlYXRlRVBOU181VUNo
YXJFaSBAIDY2IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmczUmVwN2Rlc3Ryb3lFdiBAIDY3IE5P
TkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmc0ZnJvbUVsIEAgNjggTk9OQU1FDQotCV9aTjNLSlM3VVN0
cmluZzZhcHBlbmRFUEtjIEAgNjkgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUktT
MF8gQCA3MCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzFFUEtOU181VUNoYXJFaSBAIDcxIE5P
TkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQS2MgQCA3MiBOT05BTUUNCi0JX1pOM0tKUzdVU3Ry
aW5nQzFFUE5TXzVVQ2hhckVpYiBAIDczIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVSS1Mw
X1MyXyBAIDc0IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVjIEAgNzUgTk9OQU1FDQotCV9a
TjNLSlM3VVN0cmluZ0MxRXYgQCA3NiBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzJFUEtOU181
VUNoYXJFaSBAIDc3IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVQS2MgQCA3OCBOT05BTUUN
Ci0JX1pOM0tKUzdVU3RyaW5nQzJFUE5TXzVVQ2hhckVpYiBAIDc5IE5PTkFNRQ0KLQlfWk4zS0pT
N1VTdHJpbmdDMkVSS1MwX1MyXyBAIDgwIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVjIEAg
ODEgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRXYgQCA4MiBOT05BTUUNCi0JX1pOM0tKUzdV
U3RyaW5nYVNFUktTMF8gQCA4MyBOT05BTUUNCi0JX1pOM0tKUzhWYWx1ZUltcGRsRVB2IEAgODQg
Tk9OQU1FDQotCV9aTjNLSlM4VmFsdWVJbXBud0VqIEAgODUgTk9OQU1FDQotCV9aTjNLSlM5Q29s
bGVjdG9yN2NvbGxlY3RFdiBAIDg2IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDExaGFzSW5z
dGFuY2VFUE5TXzlFeGVjU3RhdGVFUktOU181VmFsdWVFIEAgODcgTk9OQU1FDQotCV9aTjNLSlM5
T2JqZWN0SW1wMTJzZXRQcm90b3R5cGVFUktOU181VmFsdWVFIEAgODggTk9OQU1FDQotCV9aTjNL
SlM5T2JqZWN0SW1wMTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckUgQCA4OSBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBO
U185RXhlY1N0YXRlRWogQCA5MCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAxOWRlbGV0ZUFs
bFByb3BlcnRpZXNFUE5TXzlFeGVjU3RhdGVFIEAgOTEgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0
SW1wM3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSS05TXzVWYWx1ZUVpIEAg
OTIgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wM3B1dEVQTlNfOUV4ZWNTdGF0ZUVqUktOU181
VmFsdWVFaSBAIDkzIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDRjYWxsRVBOU185RXhlY1N0
YXRlRVJOU182T2JqZWN0RVJLTlNfNExpc3RFIEAgOTQgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0
SW1wNG1hcmtFdiBAIDk1IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDhwcm9wTGlzdEVQTlNf
OUV4ZWNTdGF0ZUViIEAgOTYgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RSBAIDk3IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdElt
cDljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVFUktOU180TGlzdEVSS05TXzdVU3RyaW5nRWkgQCA5
OCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA5cHV0RGlyZWN0RVJLTlNfMTBJZGVudGlmaWVy
RVBOU184VmFsdWVJbXBFaSBAIDk5IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDlwdXREaXJl
Y3RFUktOU18xMElkZW50aWZpZXJFaWkgQCAxMDAgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1w
QzFFUktOU182T2JqZWN0RSBAIDEwMSBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBDMUV2IEAg
MTAyIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEMyRVJLTlNfNk9iamVjdEUgQCAxMDMgTk9O
QU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wQzJFdiBAIDEwNCBOT05BTUUNCi0JX1pOM0tKUzlPYmpl
Y3RJbXBEMEV2IEAgMTA1IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEQxRXYgQCAxMDYgTk9O
QU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wRDJFdiBAIDEwNyBOT05BTUUNCi0JX1pOM0tKUzlVbmRl
ZmluZWRDMUV2IEAgMTA4IE5PTkFNRQ0KLQlfWk4zS0pTOVVuZGVmaW5lZEMyRXYgQCAxMDkgTk9O
QU1FDQotCV9aTjNLSlNlcUVSS05TXzdVU3RyaW5nRVBLYyBAIDExMCBOT05BTUUNCi0JX1pOSzNL
SlMxMUludGVycHJldGVyMTBjb21wYXRNb2RlRXYgQCAxMTEgTk9OQU1FDQotCV9aTkszS0pTMTFJ
bnRlcnByZXRlcjEyYnVpbHRpbkFycmF5RXYgQCAxMTIgTk9OQU1FDQotCV9aTkszS0pTMTFJbnRl
cnByZXRlcjEyZ2xvYmFsT2JqZWN0RXYgQCAxMTMgTk9OQU1FDQotCV9aTkszS0pTMTFJbnRlcnBy
ZXRlcjEyc2F2ZUJ1aWx0aW5zRVJOU18xM1NhdmVkQnVpbHRpbnNFIEAgMTE0IE5PTkFNRQ0KLQlf
Wk5LM0tKUzExSW50ZXJwcmV0ZXIxM2J1aWx0aW5PYmplY3RFdiBAIDExNSBOT05BTUUNCi0JX1pO
SzNLSlMxMUludGVycHJldGVyMTVidWlsdGluRnVuY3Rpb25FdiBAIDExNiBOT05BTUUNCi0JX1pO
SzNLSlMxMUludGVycHJldGVyMjJidWlsdGluT2JqZWN0UHJvdG90eXBlRXYgQCAxMTcgTk9OQU1F
DQotCV9aTkszS0pTMTFQcm9wZXJ0eU1hcDNnZXRFUktOU18xMElkZW50aWZpZXJFIEAgMTE4IE5P
TkFNRQ0KLQlfWk5LM0tKUzExUHJvcGVydHlNYXA0c2F2ZUVSTlNfMTVTYXZlZFByb3BlcnRpZXNF
IEAgMTE5IE5PTkFNRQ0KLQlfWk5LM0tKUzRMaXN0NWltcEF0RWkgQCAxMjAgTk9OQU1FDQotCV9a
TkszS0pTNExpc3Q4Y29weVRhaWxFdiBAIDEyMSBOT05BTUUNCi0JX1pOSzNLSlM2T2JqZWN0MTFo
YXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxMjIgTk9OQU1F
DQotCV9aTkszS0pTNk9iamVjdDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDEyMyBO
T05BTUUNCi0JX1pOSzNLSlM2T2JqZWN0MTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckUgQCAxMjQgTk9OQU1FDQotCV9aTkszS0pTNlN0cmluZzV2YWx1ZUV2
IEAgMTI1IE5PTkFNRQ0KLQlfWk5LM0tKUzdVU3RyaW5nMTJ0b0FycmF5SW5kZXhFUGIgQCAxMjYg
Tk9OQU1FDQotCV9aTkszS0pTN1VTdHJpbmc1YXNjaWlFdiBAIDEyNyBOT05BTUUNCi0JX1pOSzNL
SlM3VVN0cmluZzZpc051bGxFdiBAIDEyOCBOT05BTUUNCi0JX1pOSzNLSlM3VVN0cmluZzd0b1VM
b25nRVBiIEAgMTI5IE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDE2ZGlzcGF0Y2hUb09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzAgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wNm1hcmtl
ZEV2IEAgMTMxIE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDd0b0ludDMyRVBOU185RXhlY1N0
YXRlRSBAIDEzMiBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MTZFUE5TXzlFeGVj
U3RhdGVFIEAgMTMzIE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQzMkVQTlNfOUV4
ZWNTdGF0ZUUgQCAxMzQgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wOHRvVUludDMyRVJqIEAg
MTM1IE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDl0b0ludGVnZXJFUE5TXzlFeGVjU3RhdGVF
IEAgMTM2IE5PTkFNRQ0KLQlfWk5LM0tKUzlFeGVjU3RhdGUxOGxleGljYWxJbnRlcnByZXRlckV2
IEAgMTM3IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxMWhhc1Byb3BlcnR5RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDEzOCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0
SW1wMTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTM5IE5PTkFNRQ0KLQlfWk5LM0tK
UzlPYmplY3RJbXAxMXRvUHJpbWl0aXZlRVBOU185RXhlY1N0YXRlRU5TXzRUeXBlRSBAIDE0MCBO
T05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTJkZWZhdWx0VmFsdWVFUE5TXzlFeGVjU3RhdGVF
TlNfNFR5cGVFIEAgMTQxIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxNGhhc093blByb3Bl
cnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE0MiBOT05BTUUNCi0JX1pO
SzNLSlM5T2JqZWN0SW1wMTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTQzIE5P
TkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxNGltcGxlbWVudHNDYWxsRXYgQCAxNDQgTk9OQU1F
DQotCV9aTkszS0pTOU9iamVjdEltcDE5aW1wbGVtZW50c0NvbnN0cnVjdEV2IEAgMTQ1IE5PTkFN
RQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2IEAgMTQ2IE5P
TkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRSBAIDE0NyBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wM2dldEVQTlNfOUV4ZWNT
dGF0ZUVqIEAgMTQ4IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA0dHlwZUV2IEAgMTQ5IE5P
TkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA2Y2FuUHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRSBAIDE1MCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOGluaGVyaXRzRVBL
TlNfOUNsYXNzSW5mb0UgQCAxNTEgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDh0b051bWJl
ckVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTIgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDh0b09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTMgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDh0
b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUgQCAxNTQgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdElt
cDljbGFzc0luZm9FdiBAIDE1NSBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOWNsYXNzTmFt
ZUV2IEAgMTU2IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA5cHJvdG90eXBlRXYgQCAxNTcg
Tk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDl0b0Jvb2xlYW5FUE5TXzlFeGVjU3RhdGVFIEAg
MTU4IE5PTkFNRQ0KLQlfWlRJTjNLSlMxMEFzc2lnbk5vZGVFIEAgMTU5IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzEwQm9vbGVhbkltcEUgQCAxNjAgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBEZWxldGVOb2RlRSBAIDE2MSBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlMxME5lZ2F0ZU5vZGVFIEAgMTYyIE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzEwTnVtYmVyTm9kZUUgQCAxNjMgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTBQcmVmaXhOb2RlRSBAIDE2NCBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxMFJlZ0V4cE5vZGVFIEAgMTY1IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzEwUmV0dXJuTm9kZUUgQCAxNjYgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTBTdHJpbmdOb2RlRSBAIDE2NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMFN3aXRjaE5vZGVFIEAgMTY4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzEwVHlwZU9mTm9kZUUgQCAxNjkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTFCaXRPcGVyTm9kZUUgQCAxNzAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTFCb29sZWFuTm9kZUUgQCAxNzEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTFEb1doaWxlTm9kZUUgQCAxNzIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTFFbGVtZW50Tm9kZUUgQCAxNzMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTFGaW5hbGx5Tm9kZUUgQCAxNzQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTFGdW5jdGlvbkltcEUgQCAxNzUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTFJbnRlcnByZXRlckUgQCAxNzYgTk9OQU1FIERBVEEgOCA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxMU1hdGhGdW5jSW1wRSBAIDE3NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDE3OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxMVBvc3RmaXhOb2RlRSBAIDE3OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxMVJlc29sdmVOb2RlRSBAIDE4MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxMVZhckRlY2xOb2RlRSBAIDE4MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxMkNvbnRpbnVlTm9kZUUgQCAxODIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTJGdW5jRGVjbE5vZGVFIEAgMTgzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDE4NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMlByb3BlcnR5Tm9kZUUgQCAxODUgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTJTdGF0TGlzdE5vZGVFIEAgMTg2IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzEyVW5kZWZpbmVkSW1wRSBAIDE4NyBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAgMTg4IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzEzQWNjZXNzb3JOb2RlMkUgQCAxODkgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNBY3RpdmF0aW9uSW1wRSBAIDE5MCBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0FyZ3VtZW50c05vZGVFIEAgMTkxIE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzQ2FzZUJsb2NrTm9kZUUgQCAxOTIgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDE5MyBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0dsb2JhbEZ1bmNJbXBFIEAgMTk0IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzTWF0aE9iamVjdEltcEUgQCAxOTUgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDE5NiBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMTk3
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzVW5hcnlQbHVzTm9kZUUgQCAx
OTggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRBcnJheU9iamVjdEltcEUg
QCAxOTkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRBc3NpZ25FeHByTm9k
ZUUgQCAyMDAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRCaXR3aXNlTm90
Tm9kZUUgQCAyMDEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRDYXNlQ2xh
dXNlTm9kZUUgQCAyMDIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRDbGF1
c2VMaXN0Tm9kZUUgQCAyMDMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTRF
cnJvck9iamVjdEltcEUgQCAyMDQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTRMb2dpY2FsTm90Tm9kZUUgQCAyMDUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4z
S0pTMTROYXRpdmVFcnJvckltcEUgQCAyMDYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTRSZWxhdGlvbmFsTm9kZUUgQCAyMDcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMjA4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzE1TnVtYmVyT2JqZWN0SW1wRSBAIDIwOSBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxNU9iamVjdE9iamVjdEltcEUgQCAyMTAgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVSZWdFeHBPYmplY3RJbXBFIEAgMjExIE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1U3RyaW5nT2JqZWN0SW1wRSBAIDIxMiBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNVZhckRlY2xMaXN0Tm9kZUUgQCAyMTMgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZBcmd1bWVudExpc3ROb2RlRSBAIDIx
NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkFycmF5SW5zdGFuY2VJbXBF
IEAgMjE1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2Qm9vbGVhbk9iamVj
dEltcEUgQCAyMTYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZEYXRlUHJv
dG9GdW5jSW1wRSBAIDIxNyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkRh
dGVQcm90b3R5cGVJbXBFIEAgMjE4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAyMTkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBAIDIyMCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxNlZhclN0YXRlbWVudE5vZGVFIEAgMjIxIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBFIEAgMjIyIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzE3QXJyYXlQcm90b3R5cGVJbXBFIEAgMjIzIE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3QmluYXJ5TG9naWNhbE5vZGVFIEAgMjI0IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3RGF0ZU9iamVjdEZ1bmNJbXBFIEAg
MjI1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3RXJyb3JQcm90b0Z1bmNJ
bXBFIEAgMjI2IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3RXhwclN0YXRl
bWVudE5vZGVFIEAgMjI3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE3RnVu
Y3Rpb25PYmplY3RJbXBFIEAgMjI4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzE3T2JqZWN0TGl0ZXJhbE5vZGVFIEAgMjI5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzE3UHJvcGVydHlWYWx1ZU5vZGVFIEAgMjMwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzE3U3RyaW5nSW5zdGFuY2VJbXBFIEAgMjMxIE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzE4RW1wdHlTdGF0ZW1lbnROb2RlRSBAIDIzMiBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUgQCAyMzMgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThPYmplY3RQcm90b0Z1bmNJbXBFIEAg
MjM0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4UmVnRXhwUHJvdG9GdW5j
SW1wRSBAIDIzNSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOFNvdXJjZUVs
ZW1lbnRzTm9kZUUgQCAyMzYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThT
dHJpbmdQcm90b0Z1bmNJbXBFIEAgMjM3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzE4U3RyaW5nUHJvdG90eXBlSW1wRSBAIDIzOCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBFIEAgMjM5IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzE5RGVjbGFyZWRGdW5jdGlvbkltcEUgQCAyNDAgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTlJbnRlcm5hbEZ1bmN0aW9uSW1wRSBAIDI0MSBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOVN0cmluZ09iamVjdEZ1bmNJbXBF
IEAgMjQyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzIwRnVuY3Rpb25Qcm90
b0Z1bmNJbXBFIEAgMjQzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzIwRnVu
Y3Rpb25Qcm90b3R5cGVJbXBFIEAgMjQ0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzROb2RlRSBAIDI0NSBOT05BTUUgREFUQSA4IDsgIzxUST4jDQotCV9aVElOM0tKUzZJZk5v
ZGVFIEAgMjQ2IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzdBZGROb2RlRSBA
IDI0NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM3Rm9yTm9kZUUgQCAyNDgg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTN051bGxJbXBFIEAgMjQ5IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzdUcnlOb2RlRSBAIDI1MCBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4RGVidWdnZXJFIEAgMjUxIE5PTkFNRSBEQVRBIDgg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTOE11bHROb2RlRSBAIDI1MiBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlM4TnVsbE5vZGVFIEAgMjUzIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzhUaGlzTm9kZUUgQCAyNTQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTOFZhbHVlSW1wRSBAIDI1NSBOT05BTUUgREFUQSA4IDsgIzxUST4jDQotCV9aVElO
M0tKUzhWb2lkTm9kZUUgQCAyNTYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
OFdpdGhOb2RlRSBAIDI1NyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5QXJy
YXlOb2RlRSBAIDI1OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5QmxvY2tO
b2RlRSBAIDI1OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5QnJlYWtOb2Rl
RSBAIDI2MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5Q2F0Y2hOb2RlRSBA
IDI2MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5Q29tbWFOb2RlRSBAIDI2
MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5RXF1YWxOb2RlRSBAIDI2MyBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5Rm9ySW5Ob2RlRSBAIDI2NCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5R3JvdXBOb2RlRSBAIDI2NSBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5TGFiZWxOb2RlRSBAIDI2NiBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5TnVtYmVySW1wRSBAIDI2NyBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM5T2JqZWN0SW1wRSBAIDI2OCBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlM5UmVnRXhwSW1wRSBAIDI2OSBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlM5U2hpZnROb2RlRSBAIDI3MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlM5U3RyaW5nSW1wRSBAIDI3MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlM5VGhyb3dOb2RlRSBAIDI3MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlM5V2hpbGVOb2RlRSBAIDI3MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRW
TjNLSlMxMEFzc2lnbk5vZGVFIEAgMjc0IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzEwQm9vbGVhbkltcEUgQCAyNzUgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTBEZWxldGVOb2RlRSBAIDI3NiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxME5lZ2F0ZU5vZGVFIEAgMjc3IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzEwTnVtYmVyTm9kZUUgQCAyNzggTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTBQcmVmaXhOb2RlRSBAIDI3OSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
MFJlZ0V4cE5vZGVFIEAgMjgwIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEw
UmV0dXJuTm9kZUUgQCAyODEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBT
dHJpbmdOb2RlRSBAIDI4MiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFN3
aXRjaE5vZGVFIEAgMjgzIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwVHlw
ZU9mTm9kZUUgQCAyODQgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFCaXRP
cGVyTm9kZUUgQCAyODUgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFCb29s
ZWFuTm9kZUUgQCAyODYgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFEb1do
aWxlTm9kZUUgQCAyODcgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFFbGVt
ZW50Tm9kZUUgQCAyODggTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFGaW5h
bGx5Tm9kZUUgQCAyODkgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFGdW5j
dGlvbkltcEUgQCAyOTAgTk9OQU1FIERBVEEgMTQ4IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExSW50
ZXJwcmV0ZXJFIEAgMjkxIE5PTkFNRSBEQVRBIDQwIDsgIzxWVD4jDQotCV9aVFZOM0tKUzExTWF0
aEZ1bmNJbXBFIEAgMjkyIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMU5l
d0V4cHJOb2RlRSBAIDI5MyBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMVBv
c3RmaXhOb2RlRSBAIDI5NCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMVJl
c29sdmVOb2RlRSBAIDI5NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMVZh
ckRlY2xOb2RlRSBAIDI5NiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMkNv
bnRpbnVlTm9kZUUgQCAyOTcgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJG
dW5jRGVjbE5vZGVFIEAgMjk4IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEy
RnVuY0V4cHJOb2RlRSBAIDI5OSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
MlByb3BlcnR5Tm9kZUUgQCAzMDAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTJTdGF0TGlzdE5vZGVFIEAgMzAxIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzEyVW5kZWZpbmVkSW1wRSBAIDMwMiBOT05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxM0FjY2Vzc29yTm9kZTFFIEAgMzAzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzEzQWNjZXNzb3JOb2RlMkUgQCAzMDQgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTNBY3RpdmF0aW9uSW1wRSBAIDMwNSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTNBcmd1bWVudHNOb2RlRSBAIDMwNiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxM0Nhc2VCbG9ja05vZGVFIEAgMzA3IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzEzRGF0ZU9iamVjdEltcEUgQCAzMDggTk9OQU1FIERBVEEgMTM2IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzEzR2xvYmFsRnVuY0ltcEUgQCAzMDkgTk9OQU1FIERBVEEgMTQwIDsg
IzxWVD4jDQotCV9aVFZOM0tKUzEzTWF0aE9iamVjdEltcEUgQCAzMTAgTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzUGFyYW1ldGVyTm9kZUUgQCAzMTEgTk9OQU1FIERBVEEg
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNTdGF0ZW1lbnROb2RlRSBAIDMxMiBOT05BTUUgREFU
QSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM1VuYXJ5UGx1c05vZGVFIEAgMzEzIE5PTkFNRSBE
QVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0QXJyYXlPYmplY3RJbXBFIEAgMzE0IE5PTkFN
RSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNEFzc2lnbkV4cHJOb2RlRSBAIDMxNSBO
T05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDMx
NiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNENhc2VDbGF1c2VOb2RlRSBA
IDMxNyBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNENsYXVzZUxpc3ROb2Rl
RSBAIDMxOCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNEVycm9yT2JqZWN0
SW1wRSBAIDMxOSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTRMb2dpY2Fs
Tm90Tm9kZUUgQCAzMjAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTROYXRp
dmVFcnJvckltcEUgQCAzMjEgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0
UmVsYXRpb25hbE5vZGVFIEAgMzIyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzE1Q29uZGl0aW9uYWxOb2RlRSBAIDMyMyBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxNU51bWJlck9iamVjdEltcEUgQCAzMjQgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDMyNSBOT05BTUUgREFUQSAxMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTVSZWdFeHBPYmplY3RJbXBFIEAgMzI2IE5PTkFNRSBEQVRBIDEzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNVN0cmluZ09iamVjdEltcEUgQCAzMjcgTk9OQU1FIERBVEEg
MTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1VmFyRGVjbExpc3ROb2RlRSBAIDMyOCBOT05BTUUg
REFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAgMzI5IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAz
MzAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2Qm9vbGVhbk9iamVjdElt
cEUgQCAzMzEgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2RGF0ZVByb3Rv
RnVuY0ltcEUgQCAzMzIgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2RGF0
ZVByb3RvdHlwZUltcEUgQCAzMzMgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAzMzQgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTZGdW5jdGlvbkNhbGxOb2RlRSBAIDMzNSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxNlZhclN0YXRlbWVudE5vZGVFIEAgMzM2IE5PTkFNRSBEQVRBIDQ0IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBFIEAgMzM3IE5PTkFNRSBEQVRBIDEz
NiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0FycmF5UHJvdG90eXBlSW1wRSBAIDMzOCBOT05BTUUg
REFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAzMzkg
Tk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUg
QCAzNDAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3RXJyb3JQcm90b0Z1
bmNJbXBFIEAgMzQxIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0V4cHJT
dGF0ZW1lbnROb2RlRSBAIDM0MiBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
N0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDM0MyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAzNDQgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAzNDUgTk9OQU1FIERBVEEgMzYgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTMTdTdHJpbmdJbnN0YW5jZUltcEUgQCAzNDYgTk9OQU1FIERBVEEg
MTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4RW1wdHlTdGF0ZW1lbnROb2RlRSBAIDM0NyBOT05B
TUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUgQCAz
NDggTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4T2JqZWN0UHJvdG9GdW5j
SW1wRSBAIDM0OSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThSZWdFeHBQ
cm90b0Z1bmNJbXBFIEAgMzUwIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
OFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAzNTEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMThTdHJpbmdQcm90b0Z1bmNJbXBFIEAgMzUyIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlMxOFN0cmluZ1Byb3RvdHlwZUltcEUgQCAzNTMgTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5Qm9vbGVhblByb3RvRnVuY0ltcEUgQCAzNTQgTk9OQU1F
IERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5RGVjbGFyZWRGdW5jdGlvbkltcEUgQCAz
NTUgTk9OQU1FIERBVEEgMTQ4IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5SW50ZXJuYWxGdW5jdGlv
bkltcEUgQCAzNTYgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE5U3RyaW5n
T2JqZWN0RnVuY0ltcEUgQCAzNTcgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzIwRnVuY3Rpb25Qcm90b0Z1bmNJbXBFIEAgMzU4IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMyMEZ1bmN0aW9uUHJvdG90eXBlSW1wRSBAIDM1OSBOT05BTUUgREFUQSAxMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTNE5vZGVFIEAgMzYwIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzZJZk5vZGVFIEAgMzYxIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzdBZGROb2RlRSBAIDM2MiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlM3Rm9yTm9kZUUgQCAzNjMgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTN051
bGxJbXBFIEAgMzY0IE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4jDQotCV9aVFZOM0tKUzdUcnlOb2Rl
RSBAIDM2NSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4RGVidWdnZXJFIEAg
MzY2IE5PTkFNRSBEQVRBIDQwIDsgIzxWVD4jDQotCV9aVFZOM0tKUzhNdWx0Tm9kZUUgQCAzNjcg
Tk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOE51bGxOb2RlRSBAIDM2OCBOT05B
TUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4VGhpc05vZGVFIEAgMzY5IE5PTkFNRSBE
QVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhWYWx1ZUltcEUgQCAzNzAgTk9OQU1FIERBVEEg
NDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOFZvaWROb2RlRSBAIDM3MSBOT05BTUUgREFUQSAzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4V2l0aE5vZGVFIEAgMzcyIE5PTkFNRSBEQVRBIDQ0IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzlBcnJheU5vZGVFIEAgMzczIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzlCbG9ja05vZGVFIEAgMzc0IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQot
CV9aVFZOM0tKUzlCcmVha05vZGVFIEAgMzc1IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzlDYXRjaE5vZGVFIEAgMzc2IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzlDb21tYU5vZGVFIEAgMzc3IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzlFcXVhbE5vZGVFIEAgMzc4IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlG
b3JJbk5vZGVFIEAgMzc5IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlHcm91
cE5vZGVFIEAgMzgwIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlMYWJlbE5v
ZGVFIEAgMzgxIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlOdW1iZXJJbXBF
IEAgMzgyIE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlPYmplY3RJbXBFIEAg
MzgzIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5UmVnRXhwSW1wRSBAIDM4
NCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOVNoaWZ0Tm9kZUUgQCAzODUg
Tk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOVN0cmluZ0ltcEUgQCAzODYgTk9O
QU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOVRocm93Tm9kZUUgQCAzODcgTk9OQU1F
IERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOVdoaWxlTm9kZUUgQCAzODggTk9OQU1FIERB
VEEgNDQgOyAjPFZUPiMNCisgICAgTlBOX0NyZWF0ZU9iamVjdCBAIDEgTk9OQU1FDQorICAgIE5Q
Tl9FdmFsdWF0ZSBAIDIgTk9OQU1FDQorICAgIE5QTl9HZXRJbnRJZGVudGlmaWVyIEAgMyBOT05B
TUUNCisgICAgTlBOX0dldFByb3BlcnR5IEAgNCBOT05BTUUNCisgICAgTlBOX0dldFN0cmluZ0lk
ZW50aWZpZXIgQCA1IE5PTkFNRQ0KKyAgICBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMgQCA2IE5P
TkFNRQ0KKyAgICBOUE5fSGFzTWV0aG9kIEAgNyBOT05BTUUNCisgICAgTlBOX0hhc1Byb3BlcnR5
IEAgOCBOT05BTUUNCisgICAgTlBOX0lkZW50aWZpZXJJc1N0cmluZyBAIDkgTk9OQU1FDQorICAg
IE5QTl9JbnRGcm9tSWRlbnRpZmllciBAIDEwIE5PTkFNRQ0KKyAgICBOUE5fSW52b2tlIEAgMTEg
Tk9OQU1FDQorICAgIE5QTl9JbnZva2VEZWZhdWx0IEAgMTIgTk9OQU1FDQorICAgIE5QTl9SZWxl
YXNlT2JqZWN0IEAgMTMgTk9OQU1FDQorICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlIEAgMTQg
Tk9OQU1FDQorICAgIE5QTl9SZW1vdmVQcm9wZXJ0eSBAIDE1IE5PTkFNRQ0KKyAgICBOUE5fUmV0
YWluT2JqZWN0IEAgMTYgTk9OQU1FDQorICAgIE5QTl9TZXRFeGNlcHRpb24gQCAxNyBOT05BTUUN
CisgICAgTlBOX1NldFByb3BlcnR5IEAgMTggTk9OQU1FDQorICAgIE5QTl9VVEY4RnJvbUlkZW50
aWZpZXIgQCAxOSBOT05BTUUNCisgICAgX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgQCAyMCBOT05B
TUUNCisgICAgX1oyNE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOFA4TlBPYmplY3RQS2NpIEAgMjEg
Tk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZpZXIzYWRkRVBLYyBAIDIyIE5PTkFNRQ0KKyAg
ICBfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQTlNfN1VTdHJpbmczUmVwRSBAIDIzIE5PTkFNRQ0K
KyAgICBfWk4zS0pTMTBJZGVudGlmaWVyNWVxdWFsRVBOU183VVN0cmluZzNSZXBFUEtOU181VUNo
YXJFaSBAIDI0IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBJZGVudGlmaWVyNWVxdWFsRVBOU183VVN0
cmluZzNSZXBFUEtjIEAgMjUgTk9OQU1FDQorICAgIF9aTjNLSlMxMFNjb3BlQ2hhaW40cHVzaEVQ
TlNfOU9iamVjdEltcEUgQCAyNiBOT05BTUUNCisgICAgX1pOM0tKUzEwU2NvcGVDaGFpbjdyZWxl
YXNlRXYgQCAyNyBOT05BTUUNCisgICAgX1pOM0tKUzEwU2NvcGVDaGFpbmFTRVJLUzBfIEAgMjgg
Tk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMTBnbG9iYWxFeGVjRXYgQCAyOSBOT05B
TUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxMnZpcnR1YWxfaG9va0VpUHYgQCAzMCBOT05B
TUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxM3NldENvbXBhdE1vZGVFTlMwXzEwQ29tcGF0
TW9kZUUgQCAzMSBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxNXJlc3RvcmVCdWls
dGluc0VSS05TXzEzU2F2ZWRCdWlsdGluc0UgQCAzMiBOT05BTUUNCisgICAgX1pOM0tKUzExSW50
ZXJwcmV0ZXIxNmluaXRHbG9iYWxPYmplY3RFdiBAIDMzIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJ
bnRlcnByZXRlcjE3aW5jU3RhdGVtZW50Q291bnRFdiBAIDM0IE5PTkFNRQ0KKyAgICBfWk4zS0pT
MTFJbnRlcnByZXRlcjE5cmVzZXRTdGF0ZW1lbnRDb3VudEV2IEAgMzUgTk9OQU1FDQorICAgIF9a
TjNLSlMxMUludGVycHJldGVyMjFzaG91bGRQcmludEV4Y2VwdGlvbnNFdiBAIDM2IE5PTkFNRQ0K
KyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjI0c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zRWIgQCAz
NyBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIzMGNyZWF0ZUxhbmd1YWdlSW5zdGFu
Y2VGb3JWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU184QmluZGluZ3M4SW5zdGFuY2UxNUJpbmRpbmdM
YW5ndWFnZUVSS05TXzZPYmplY3RFUEtOUzNfMTBSb290T2JqZWN0RVNCXyBAIDM4IE5PTkFNRQ0K
KyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjRsb2NrRXYgQCAzOSBOT05BTUUNCisgICAgX1pOM0tK
UzExSW50ZXJwcmV0ZXI2dW5sb2NrRXYgQCA0MCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJw
cmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VSS05TXzVWYWx1ZUVTM18gQCA0MSBOT05BTUUN
CisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUktOU183VVN0cmluZ0VpUzNfUktO
U181VmFsdWVFIEAgNDIgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyQzFFUktOU182
T2JqZWN0RSBAIDQzIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlckMyRVJLTlNfNk9i
amVjdEUgQCA0NCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXJEMEV2IEAgNDUgTk9O
QU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyRDFFdiBAIDQ2IE5PTkFNRQ0KKyAgICBfWk4z
S0pTMTFJbnRlcnByZXRlckQyRXYgQCA0NyBOT05BTUUNCisgICAgX1pOM0tKUzExUHJvcGVydHlN
YXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQcm9wZXJ0aWVzRSBAIDQ4IE5PTkFNRQ0KKyAgICBfWk4z
S0pTMTRsZW5ndGhQcm9wZXJ0eUV2IEAgNDkgTk9OQU1FDQorICAgIF9aTjNLSlMxNW1lc3NhZ2VQ
cm9wZXJ0eUV2IEAgNTAgTk9OQU1FDQorICAgIF9aTjNLSlMxNlJ1bnRpbWVPYmplY3RJbXBDMUVQ
TlNfOEJpbmRpbmdzOEluc3RhbmNlRWIgQCA1MSBOT05BTUUNCisgICAgX1pOM0tKUzE2UnVudGlt
ZU9iamVjdEltcEMyRVBOU184QmluZGluZ3M4SW5zdGFuY2VFYiBAIDUyIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTNExpc3QxMWRlcmVmVmFsdWVzRXYgQCA1MyBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0
NmFwcGVuZEVQTlNfOFZhbHVlSW1wRSBAIDU0IE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3Q3cmVs
ZWFzZUV2IEAgNTUgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdDlyZWZWYWx1ZXNFdiBAIDU2IE5P
TkFNRQ0KKyAgICBfWk4zS0pTNExpc3RDMUV2IEAgNTcgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlz
dEMyRXYgQCA1OCBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0YVNFUktTMF8gQCA1OSBOT05BTUUN
CisgICAgX1pOM0tKUzROdWxsQzFFdiBAIDYwIE5PTkFNRQ0KKyAgICBfWk4zS0pTNE51bGxDMkV2
IEAgNjEgTk9OQU1FDQorICAgIF9aTjNLSlM1RXJyb3I2Y3JlYXRlRVBOU185RXhlY1N0YXRlRU5T
XzlFcnJvclR5cGVFUEtjaWlQS05TXzdVU3RyaW5nRSBAIDYyIE5PTkFNRQ0KKyAgICBfWk4zS0pT
NVZhbHVlQzFFUE5TXzhWYWx1ZUltcEUgQCA2MyBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUMx
RVJLUzBfIEAgNjQgTk9OQU1FDQorICAgIF9aTjNLSlM1VmFsdWVDMkVQTlNfOFZhbHVlSW1wRSBA
IDY1IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlQzJFUktTMF8gQCA2NiBOT05BTUUNCisgICAg
X1pOM0tKUzVWYWx1ZUQxRXYgQCA2NyBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUQyRXYgQCA2
OCBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZWFTRVJLUzBfIEAgNjkgTk9OQU1FDQorICAgIF9a
TjNLSlM2TG9va3VwOWZpbmRFbnRyeUVQS05TXzlIYXNoVGFibGVFUktOU18xMElkZW50aWZpZXJF
IEAgNzAgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzFFZCBAIDcxIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTNk51bWJlckMxRWkgQCA3MiBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVqIEAg
NzMgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzFFbCBAIDc0IE5PTkFNRQ0KKyAgICBfWk4z
S0pTNk51bWJlckMxRW0gQCA3NSBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMkVkIEAgNzYg
Tk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzJFaSBAIDc3IE5PTkFNRQ0KKyAgICBfWk4zS0pT
Nk51bWJlckMyRWogQCA3OCBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMkVsIEAgNzkgTk9O
QU1FDQorICAgIF9aTjNLSlM2TnVtYmVyQzJFbSBAIDgwIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk9i
amVjdDExZHluYW1pY0Nhc3RFUktOU181VmFsdWVFIEAgODEgTk9OQU1FDQorICAgIF9aTjNLSlM2
T2JqZWN0NGNhbGxFUE5TXzlFeGVjU3RhdGVFUlMwX1JLTlNfNExpc3RFIEAgODIgTk9OQU1FDQor
ICAgIF9aTjNLSlM2U3RyaW5nQzFFUktOU183VVN0cmluZ0UgQCA4MyBOT05BTUUNCisgICAgX1pO
M0tKUzZTdHJpbmdDMkVSS05TXzdVU3RyaW5nRSBAIDg0IE5PTkFNRQ0KKyAgICBfWk4zS0pTN0Jv
b2xlYW5DMUViIEAgODUgTk9OQU1FDQorICAgIF9aTjNLSlM3Qm9vbGVhbkMyRWIgQCA4NiBOT05B
TUUNCisgICAgX1pOM0tKUzdDU3RyaW5nYVNFUEtjIEAgODcgTk9OQU1FDQorICAgIF9aTjNLSlM3
VVN0cmluZzEwYXR0YWNoTnVsbEV2IEAgODggTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzNS
ZXAxM2NyZWF0ZUNvcHlpbmdFUEtOU181VUNoYXJFaSBAIDg5IE5PTkFNRQ0KKyAgICBfWk4zS0pT
N1VTdHJpbmczUmVwNmNyZWF0ZUVQTlNfNVVDaGFyRWkgQCA5MCBOT05BTUUNCisgICAgX1pOM0tK
UzdVU3RyaW5nM1JlcDdkZXN0cm95RXYgQCA5MSBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5n
NGZyb21FbCBAIDkyIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmc2YXBwZW5kRVBLYyBAIDkz
IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmc2YXBwZW5kRVJLUzBfIEAgOTQgTk9OQU1FDQor
ICAgIF9aTjNLSlM3VVN0cmluZ0MxRVBLTlNfNVVDaGFyRWkgQCA5NSBOT05BTUUNCisgICAgX1pO
M0tKUzdVU3RyaW5nQzFFUEtjIEAgOTYgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MxRVBO
U181VUNoYXJFaWIgQCA5NyBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFFUktTMF9TMl8g
QCA5OCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFFYyBAIDk5IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTN1VTdHJpbmdDMUV2IEAgMTAwIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMkVQ
S05TXzVVQ2hhckVpIEAgMTAxIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMkVQS2MgQCAx
MDIgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVBOU181VUNoYXJFaWIgQCAxMDMgTk9O
QU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVJLUzBfUzJfIEAgMTA0IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTN1VTdHJpbmdDMkVjIEAgMTA1IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMkV2
IEAgMTA2IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdhU0VSS1MwXyBAIDEwNyBOT05BTUUN
CisgICAgX1pOM0tKUzhCaW5kaW5nczEwUm9vdE9iamVjdDE0c2V0SW50ZXJwcmV0ZXJFUE5TXzEx
SW50ZXJwcmV0ZXJFIEAgMTA4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJpbmRpbmdzMTBSb290T2Jq
ZWN0MjVyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzRXYgQCAxMDkgTk9OQU1FDQorICAgIF9aTjNL
SlM4QmluZGluZ3MyMXJlbW92ZU5hdGl2ZVJlZmVyZW5jZUVQTlNfOU9iamVjdEltcEUgQCAxMTAg
Tk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGluZ3M4SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVPYmpl
Y3RFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVB2UEtOUzBfMTBSb290T2JqZWN0RSBAIDExMSBOT05B
TUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczhJbnN0YW5jZTMwY3JlYXRlTGFuZ3VhZ2VJbnN0YW5j
ZUZvclZhbHVlRVBOU185RXhlY1N0YXRlRU5TMV8xNUJpbmRpbmdMYW5ndWFnZUVSS05TXzZPYmpl
Y3RFUEtOUzBfMTBSb290T2JqZWN0RVNBXyBAIDExMiBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5k
aW5nczhJbnN0YW5jZTMyY3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2VFTlMxXzE1Qmlu
ZGluZ0xhbmd1YWdlRVB2UEtOUzBfMTBSb290T2JqZWN0RSBAIDExMyBOT05BTUUNCisgICAgX1pO
M0tKUzhWYWx1ZUltcGRsRVB2IEAgMTE0IE5PTkFNRQ0KKyAgICBfWk4zS0pTOFZhbHVlSW1wbndF
aiBAIDExNSBOT05BTUUNCisgICAgX1pOM0tKUzlDb2xsZWN0b3I3Y29sbGVjdEV2IEAgMTE2IE5P
TkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDExaGFzSW5zdGFuY2VFUE5TXzlFeGVjU3RhdGVF
UktOU181VmFsdWVFIEAgMTE3IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDEyc2V0UHJv
dG90eXBlRVJLTlNfNVZhbHVlRSBAIDExOCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAx
NGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDExOSBO
T05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0
YXRlRWogQCAxMjAgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wMTlkZWxldGVBbGxQcm9w
ZXJ0aWVzRVBOU185RXhlY1N0YXRlRSBAIDEyMSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJ
bXAzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfNVZhbHVlRWkgQCAx
MjIgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wM3B1dEVQTlNfOUV4ZWNTdGF0ZUVqUktO
U181VmFsdWVFaSBAIDEyMyBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA0Y2FsbEVQTlNf
OUV4ZWNTdGF0ZUVSTlNfNk9iamVjdEVSS05TXzRMaXN0RSBAIDEyNCBOT05BTUUNCisgICAgX1pO
M0tKUzlPYmplY3RJbXA0bWFya0V2IEAgMTI1IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdElt
cDhwcm9wTGlzdEVQTlNfOUV4ZWNTdGF0ZUViIEAgMTI2IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9i
amVjdEltcDljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVFUktOU180TGlzdEUgQCAxMjcgTk9OQU1F
DQorICAgIF9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRM
aXN0RVJLTlNfN1VTdHJpbmdFaSBAIDEyOCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA5
cHV0RGlyZWN0RVJLTlNfMTBJZGVudGlmaWVyRVBOU184VmFsdWVJbXBFaSBAIDEyOSBOT05BTUUN
CisgICAgX1pOM0tKUzlPYmplY3RJbXA5cHV0RGlyZWN0RVJLTlNfMTBJZGVudGlmaWVyRWlpIEAg
MTMwIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEMxRVJLTlNfNk9iamVjdEUgQCAxMzEg
Tk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wQzFFdiBAIDEzMiBOT05BTUUNCisgICAgX1pO
M0tKUzlPYmplY3RJbXBDMkVSS05TXzZPYmplY3RFIEAgMTMzIE5PTkFNRQ0KKyAgICBfWk4zS0pT
OU9iamVjdEltcEMyRXYgQCAxMzQgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wRDBFdiBA
IDEzNSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBEMUV2IEAgMTM2IE5PTkFNRQ0KKyAg
ICBfWk4zS0pTOU9iamVjdEltcEQyRXYgQCAxMzcgTk9OQU1FDQorICAgIF9aTjNLSlM5VW5kZWZp
bmVkQzFFdiBAIDEzOCBOT05BTUUNCisgICAgX1pOM0tKUzlVbmRlZmluZWRDMkV2IEAgMTM5IE5P
TkFNRQ0KKyAgICBfWk4zS0pTZXFFUktOU183VVN0cmluZ0VQS2MgQCAxNDAgTk9OQU1FDQorICAg
IF9aTkszS0pTMTFJbnRlcnByZXRlcjEwY29tcGF0TW9kZUV2IEAgMTQxIE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzExSW50ZXJwcmV0ZXIxMmJ1aWx0aW5BcnJheUV2IEAgMTQyIE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzExSW50ZXJwcmV0ZXIxMmdsb2JhbE9iamVjdEV2IEAgMTQzIE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzExSW50ZXJwcmV0ZXIxMnNhdmVCdWlsdGluc0VSTlNfMTNTYXZlZEJ1aWx0aW5zRSBA
IDE0NCBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMTNidWlsdGluT2JqZWN0RXYg
QCAxNDUgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRlcjE1YnVpbHRpbkZ1bmN0aW9u
RXYgQCAxNDYgTk9OQU1FDQorICAgIF9aTkszS0pTMTFJbnRlcnByZXRlcjIyYnVpbHRpbk9iamVj
dFByb3RvdHlwZUV2IEAgMTQ3IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExUHJvcGVydHlNYXAzZ2V0
RVJLTlNfMTBJZGVudGlmaWVyRSBAIDE0OCBOT05BTUUNCisgICAgX1pOSzNLSlMxMVByb3BlcnR5
TWFwNHNhdmVFUk5TXzE1U2F2ZWRQcm9wZXJ0aWVzRSBAIDE0OSBOT05BTUUNCisgICAgX1pOSzNL
SlM0TGlzdDVpbXBBdEVpIEAgMTUwIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzRMaXN0OGNvcHlUYWls
RXYgQCAxNTEgTk9OQU1FDQorICAgIF9aTkszS0pTNk9iamVjdDExaGFzUHJvcGVydHlFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTUyIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzZP
YmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxNTMgTk9OQU1FDQorICAgIF9a
TkszS0pTNk9iamVjdDE0aGFzT3duUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50
aWZpZXJFIEAgMTU0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzZTdHJpbmc1dmFsdWVFdiBAIDE1NSBO
T05BTUUNCisgICAgX1pOSzNLSlM3VVN0cmluZzEydG9BcnJheUluZGV4RVBiIEAgMTU2IE5PTkFN
RQ0KKyAgICBfWk5LM0tKUzdVU3RyaW5nNWFzY2lpRXYgQCAxNTcgTk9OQU1FDQorICAgIF9aTksz
S0pTN1VTdHJpbmc2aXNOdWxsRXYgQCAxNTggTk9OQU1FDQorICAgIF9aTkszS0pTN1VTdHJpbmc3
dG9VTG9uZ0VQYiBAIDE1OSBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXAxNmRpc3BhdGNo
VG9PYmplY3RFUE5TXzlFeGVjU3RhdGVFIEAgMTYwIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1
ZUltcDZtYXJrZWRFdiBAIDE2MSBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXA3dG9JbnQz
MkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjIgTk9OQU1FDQorICAgIF9aTkszS0pTOFZhbHVlSW1wOHRv
VUludDE2RVBOU185RXhlY1N0YXRlRSBAIDE2MyBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJ
bXA4dG9VSW50MzJFUE5TXzlFeGVjU3RhdGVFIEAgMTY0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhW
YWx1ZUltcDh0b1VJbnQzMkVSaiBAIDE2NSBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXA5
dG9JbnRlZ2VyRVBOU185RXhlY1N0YXRlRSBAIDE2NiBOT05BTUUNCisgICAgX1pOSzNLSlM5RXhl
Y1N0YXRlMThsZXhpY2FsSW50ZXJwcmV0ZXJFdiBAIDE2NyBOT05BTUUNCisgICAgX1pOSzNLSlM5
T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUg
QCAxNjggTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDExaGFzUHJvcGVydHlFUE5TXzlF
eGVjU3RhdGVFaiBAIDE2OSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTF0b1ByaW1p
dGl2ZUVQTlNfOUV4ZWNTdGF0ZUVOU180VHlwZUUgQCAxNzAgTk9OQU1FDQorICAgIF9aTkszS0pT
OU9iamVjdEltcDEyZGVmYXVsdFZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzRUeXBlRSBAIDE3MSBO
T05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNzIgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVj
dEltcDE0aGFzT3duUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDE3MyBOT05BTUUNCisgICAg
X1pOSzNLSlM5T2JqZWN0SW1wMTRpbXBsZW1lbnRzQ2FsbEV2IEAgMTc0IE5PTkFNRQ0KKyAgICBf
Wk5LM0tKUzlPYmplY3RJbXAxOWltcGxlbWVudHNDb25zdHJ1Y3RFdiBAIDE3NSBOT05BTUUNCisg
ICAgX1pOSzNLSlM5T2JqZWN0SW1wMjFpbXBsZW1lbnRzSGFzSW5zdGFuY2VFdiBAIDE3NiBOT05B
TUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wM2dldEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUgQCAxNzcgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDNnZXRFUE5TXzlF
eGVjU3RhdGVFaiBAIDE3OCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wNHR5cGVFdiBA
IDE3OSBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wNmNhblB1dEVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxODAgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdElt
cDhpbmhlcml0c0VQS05TXzlDbGFzc0luZm9FIEAgMTgxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlP
YmplY3RJbXA4dG9OdW1iZXJFUE5TXzlFeGVjU3RhdGVFIEAgMTgyIE5PTkFNRQ0KKyAgICBfWk5L
M0tKUzlPYmplY3RJbXA4dG9PYmplY3RFUE5TXzlFeGVjU3RhdGVFIEAgMTgzIE5PTkFNRQ0KKyAg
ICBfWk5LM0tKUzlPYmplY3RJbXA4dG9TdHJpbmdFUE5TXzlFeGVjU3RhdGVFIEAgMTg0IE5PTkFN
RQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA5Y2xhc3NJbmZvRXYgQCAxODUgTk9OQU1FDQorICAg
IF9aTkszS0pTOU9iamVjdEltcDljbGFzc05hbWVFdiBAIDE4NiBOT05BTUUNCisgICAgX1pOSzNL
SlM5T2JqZWN0SW1wOXByb3RvdHlwZUV2IEAgMTg3IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmpl
Y3RJbXA5dG9Cb29sZWFuRVBOU185RXhlY1N0YXRlRSBAIDE4OCBOT05BTUUNCisgICAgX1pUSU4z
S0pTMTBBc3NpZ25Ob2RlRSBAIDE4OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBC
b29sZWFuSW1wRSBAIDE5MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBEZWxldGVO
b2RlRSBAIDE5MSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBOZWdhdGVOb2RlRSBA
IDE5MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBOdW1iZXJOb2RlRSBAIDE5MyBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBQcmVmaXhOb2RlRSBAIDE5NCBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTBSZWdFeHBOb2RlRSBAIDE5NSBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMTBSZXR1cm5Ob2RlRSBAIDE5NiBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTBTdHJpbmdOb2RlRSBAIDE5NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMTBTd2l0Y2hOb2RlRSBAIDE5OCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTBUeXBlT2ZOb2RlRSBAIDE5OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFCaXRP
cGVyTm9kZUUgQCAyMDAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExQm9vbGVhbk5v
ZGVFIEAgMjAxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMURvV2hpbGVOb2RlRSBA
IDIwMiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFFbGVtZW50Tm9kZUUgQCAyMDMg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExRmluYWxseU5vZGVFIEAgMjA0IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDIwNSBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTFJbnRlcnByZXRlckUgQCAyMDYgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzExTWF0aEZ1bmNJbXBFIEAgMjA3IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDIwOCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMTFQb3N0Zml4Tm9kZUUgQCAyMDkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzExUmVzb2x2ZU5vZGVFIEAgMjEwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMVZh
ckRlY2xOb2RlRSBAIDIxMSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTJDb250aW51
ZU5vZGVFIEAgMjEyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMkZ1bmNEZWNsTm9k
ZUUgQCAyMTMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyRnVuY0V4cHJOb2RlRSBA
IDIxNCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTJQcm9wZXJ0eU5vZGVFIEAgMjE1
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAyMTYgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyVW5kZWZpbmVkSW1wRSBAIDIxNyBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNBY2Nlc3Nvck5vZGUxRSBAIDIxOCBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDIxOSBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMTNBY3RpdmF0aW9uSW1wRSBAIDIyMCBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTMTNBcmd1bWVudHNOb2RlRSBAIDIyMSBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTMTNDYXNlQmxvY2tOb2RlRSBAIDIyMiBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDIyMyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDIyNCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTMTNNYXRoT2JqZWN0SW1wRSBAIDIyNSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
MTNQYXJhbWV0ZXJOb2RlRSBAIDIyNiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNT
dGF0ZW1lbnROb2RlRSBAIDIyNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTNVbmFy
eVBsdXNOb2RlRSBAIDIyOCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRBcnJheU9i
amVjdEltcEUgQCAyMjkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0QXNzaWduRXhw
ck5vZGVFIEAgMjMwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNEJpdHdpc2VOb3RO
b2RlRSBAIDIzMSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRDYXNlQ2xhdXNlTm9k
ZUUgQCAyMzIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0Q2xhdXNlTGlzdE5vZGVF
IEAgMjMzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBA
IDIzNCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAy
MzUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0TmF0aXZlRXJyb3JJbXBFIEAgMjM2
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNFJlbGF0aW9uYWxOb2RlRSBAIDIzNyBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMjM4IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNU51bWJlck9iamVjdEltcEUgQCAyMzkgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDI0MCBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVSZWdFeHBPYmplY3RJbXBFIEAgMjQxIE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNVJ1bnRpbWVBcnJheUltcEUgQCAyNDIgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1U3RyaW5nT2JqZWN0SW1wRSBAIDI0MyBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVWYXJEZWNsTGlzdE5vZGVFIEAgMjQ0IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAgMjQ1IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkFycmF5SW5zdGFuY2VJbXBFIEAgMjQ2IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkJvb2xlYW5PYmplY3RJbXBFIEAgMjQ3IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkRhdGVQcm90b0Z1bmNJbXBFIEAgMjQ4IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkRhdGVQcm90b3R5cGVJbXBFIEAgMjQ5IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkZ1bmN0aW9uQm9keU5vZGVFIEAgMjUwIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMjUxIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlJ1bnRpbWVNZXRob2RJbXBFIEAgMjUyIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlJ1bnRpbWVPYmplY3RJbXBFIEAgMjUzIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNlZhclN0YXRlbWVudE5vZGVFIEAgMjU0IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0FycmF5UHJvdG9GdW5jSW1wRSBAIDI1NSBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdBcnJheVByb3RvdHlwZUltcEUgQCAyNTYgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3QmluYXJ5TG9naWNhbE5vZGVFIEAgMjU3IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0RhdGVPYmplY3RGdW5jSW1wRSBAIDI1OCBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdFcnJvclByb3RvRnVuY0ltcEUgQCAyNTkgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMjYwIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDI2MSBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAyNjIg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3UHJvcGVydHlWYWx1ZU5vZGVFIEAgMjYz
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDI2
NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAg
MjY1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUg
QCAyNjYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4T2JqZWN0UHJvdG9GdW5jSW1w
RSBAIDI2NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThSZWdFeHBQcm90b0Z1bmNJ
bXBFIEAgMjY4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFNvdXJjZUVsZW1lbnRz
Tm9kZUUgQCAyNjkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4U3RyaW5nUHJvdG9G
dW5jSW1wRSBAIDI3MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThTdHJpbmdQcm90
b3R5cGVJbXBFIEAgMjcxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOUJvb2xlYW5Q
cm90b0Z1bmNJbXBFIEAgMjcyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOURlY2xh
cmVkRnVuY3Rpb25JbXBFIEAgMjczIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOUlu
dGVybmFsRnVuY3Rpb25JbXBFIEAgMjc0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
OVN0cmluZ09iamVjdEZ1bmNJbXBFIEAgMjc1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMyMEZ1bmN0aW9uUHJvdG9GdW5jSW1wRSBAIDI3NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTMjBGdW5jdGlvblByb3RvdHlwZUltcEUgQCAyNzcgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVElOM0tKUzROb2RlRSBAIDI3OCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTNklm
Tm9kZUUgQCAyNzkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzdBZGROb2RlRSBAIDI4
MCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN0Zvck5vZGVFIEAgMjgxIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM3TnVsbEltcEUgQCAyODIgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzdUcnlOb2RlRSBAIDI4MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTOEJpbmRpbmdzNkNDbGFzc0UgQCAyODQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzhCaW5kaW5nczZDRmllbGRFIEAgMjg1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4
QmluZGluZ3M4SW5zdGFuY2VFIEAgMjg2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4
QmluZGluZ3M5Q0luc3RhbmNlRSBAIDI4NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pT
OERlYnVnZ2VyRSBAIDI4OCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOE11bHROb2Rl
RSBAIDI4OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOE51bGxOb2RlRSBAIDI5MCBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOFRoaXNOb2RlRSBAIDI5MSBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTOFZhbHVlSW1wRSBAIDI5MiBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTOFZvaWROb2RlRSBAIDI5MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTOFdpdGhOb2RlRSBAIDI5NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUFycmF5
Tm9kZUUgQCAyOTUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlCbG9ja05vZGVFIEAg
Mjk2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5QnJlYWtOb2RlRSBAIDI5NyBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUNhdGNoTm9kZUUgQCAyOTggTk9OQU1FIDsgIzxU
ST4jDQorICAgIF9aVElOM0tKUzlDb21tYU5vZGVFIEAgMjk5IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlM5RXF1YWxOb2RlRSBAIDMwMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTOUZvckluTm9kZUUgQCAzMDEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlHcm91
cE5vZGVFIEAgMzAyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5TGFiZWxOb2RlRSBA
IDMwMyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOU51bWJlckltcEUgQCAzMDQgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlPYmplY3RJbXBFIEAgMzA1IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlM5UmVnRXhwSW1wRSBAIDMwNiBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTOVNoaWZ0Tm9kZUUgQCAzMDcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzlTdHJpbmdJbXBFIEAgMzA4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5VGhy
b3dOb2RlRSBAIDMwOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOVdoaWxlTm9kZUUg
QCAzMTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVFZOM0tKUzEwQXNzaWduTm9kZUUgQCAzMTEg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwQm9vbGVhbkltcEUgQCAzMTIgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwRGVsZXRlTm9kZUUgQCAzMTMgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzEwTmVnYXRlTm9kZUUgQCAzMTQgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzEwTnVtYmVyTm9kZUUgQCAzMTUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzEwUHJlZml4Tm9kZUUgQCAzMTYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzEwUmVnRXhwTm9kZUUgQCAzMTcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwUmV0
dXJuTm9kZUUgQCAzMTggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwU3RyaW5nTm9k
ZUUgQCAzMTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwU3dpdGNoTm9kZUUgQCAz
MjAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEwVHlwZU9mTm9kZUUgQCAzMjEgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExQml0T3Blck5vZGVFIEAgMzIyIE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMUJvb2xlYW5Ob2RlRSBAIDMyMyBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTFEb1doaWxlTm9kZUUgQCAzMjQgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzExRWxlbWVudE5vZGVFIEAgMzI1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlMxMUZpbmFsbHlOb2RlRSBAIDMyNiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTFGdW5jdGlvbkltcEUgQCAzMjcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEx
SW50ZXJwcmV0ZXJFIEAgMzI4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMU1hdGhG
dW5jSW1wRSBAIDMyOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFOZXdFeHByTm9k
ZUUgQCAzMzAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExUG9zdGZpeE5vZGVFIEAg
MzMxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMVJlc29sdmVOb2RlRSBAIDMzMiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFWYXJEZWNsTm9kZUUgQCAzMzMgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEyQ29udGludWVOb2RlRSBAIDMzNCBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTJGdW5jRGVjbE5vZGVFIEAgMzM1IE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlMxMkZ1bmNFeHByTm9kZUUgQCAzMzYgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzEyUHJvcGVydHlOb2RlRSBAIDMzNyBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTJTdGF0TGlzdE5vZGVFIEAgMzM4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxMlVuZGVmaW5lZEltcEUgQCAzMzkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzEzQWNjZXNzb3JOb2RlMUUgQCAzNDAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEz
QWNjZXNzb3JOb2RlMkUgQCAzNDEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQWN0
aXZhdGlvbkltcEUgQCAzNDIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQXJndW1l
bnRzTm9kZUUgQCAzNDMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzQ2FzZUJsb2Nr
Tm9kZUUgQCAzNDQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzRGF0ZU9iamVjdElt
cEUgQCAzNDUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzR2xvYmFsRnVuY0ltcEUg
QCAzNDYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzTWF0aE9iamVjdEltcEUgQCAz
NDcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzUGFyYW1ldGVyTm9kZUUgQCAzNDgg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzU3RhdGVtZW50Tm9kZUUgQCAzNDkgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEzVW5hcnlQbHVzTm9kZUUgQCAzNTAgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0QXJyYXlPYmplY3RJbXBFIEAgMzUxIE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNEFzc2lnbkV4cHJOb2RlRSBAIDM1MiBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTRCaXR3aXNlTm90Tm9kZUUgQCAzNTMgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzE0Q2FzZUNsYXVzZU5vZGVFIEAgMzU0IE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlMxNENsYXVzZUxpc3ROb2RlRSBAIDM1NSBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTRFcnJvck9iamVjdEltcEUgQCAzNTYgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzE0TG9naWNhbE5vdE5vZGVFIEAgMzU3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNE5hdGl2ZUVycm9ySW1wRSBAIDM1OCBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTRSZWxhdGlvbmFsTm9kZUUgQCAzNTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzE1Q29uZGl0aW9uYWxOb2RlRSBAIDM2MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTVOdW1iZXJPYmplY3RJbXBFIEAgMzYxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxNU9iamVjdE9iamVjdEltcEUgQCAzNjIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzE1UmVnRXhwT2JqZWN0SW1wRSBAIDM2MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTVSdW50aW1lQXJyYXlJbXBFIEAgMzY0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNVN0cmluZ09iamVjdEltcEUgQCAzNjUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzE1VmFyRGVjbExpc3ROb2RlRSBAIDM2NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZBcmd1bWVudExpc3ROb2RlRSBAIDM2NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZBcnJheUluc3RhbmNlSW1wRSBAIDM2OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZCb29sZWFuT2JqZWN0SW1wRSBAIDM2OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZEYXRlUHJvdG9GdW5jSW1wRSBAIDM3MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZEYXRlUHJvdG90eXBlSW1wRSBAIDM3MSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZGdW5jdGlvbkJvZHlOb2RlRSBAIDM3MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZGdW5jdGlvbkNhbGxOb2RlRSBAIDM3MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZSdW50aW1lTWV0aG9kSW1wRSBAIDM3NCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZSdW50aW1lT2JqZWN0SW1wRSBAIDM3NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTZWYXJTdGF0ZW1lbnROb2RlRSBAIDM3NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTdBcnJheVByb3RvRnVuY0ltcEUgQCAzNzcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzE3QXJyYXlQcm90b3R5cGVJbXBFIEAgMzc4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxN0JpbmFyeUxvZ2ljYWxOb2RlRSBAIDM3OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUgQCAzODAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzE3RXJyb3JQcm90b0Z1bmNJbXBFIEAgMzgxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxN0V4cHJTdGF0ZW1lbnROb2RlRSBAIDM4MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTdGdW5jdGlvbk9iamVjdEltcEUgQCAzODMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzE3T2JqZWN0TGl0ZXJhbE5vZGVFIEAgMzg0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlMxN1Byb3BlcnR5VmFsdWVOb2RlRSBAIDM4NSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTdTdHJpbmdJbnN0YW5jZUltcEUgQCAzODYgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzE4RW1wdHlTdGF0ZW1lbnROb2RlRSBAIDM4NyBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMThOdW1iZXJQcm90b0Z1bmNJbXBFIEAgMzg4IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxOE9iamVjdFByb3RvRnVuY0ltcEUgQCAzODkgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzE4UmVnRXhwUHJvdG9GdW5jSW1wRSBAIDM5MCBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMThTb3VyY2VFbGVtZW50c05vZGVFIEAgMzkxIE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOFN0cmluZ1Byb3RvRnVuY0ltcEUgQCAzOTIgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzE4U3RyaW5nUHJvdG90eXBlSW1wRSBAIDM5MyBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlCb29sZWFuUHJvdG9GdW5jSW1wRSBAIDM5NCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDM5NSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlJbnRlcm5hbEZ1bmN0aW9uSW1wRSBAIDM5
NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTlTdHJpbmdPYmplY3RGdW5jSW1wRSBA
IDM5NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMjBGdW5jdGlvblByb3RvRnVuY0lt
cEUgQCAzOTggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzIwRnVuY3Rpb25Qcm90b3R5
cGVJbXBFIEAgMzk5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM0Tm9kZUUgQCA0MDAg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzZJZk5vZGVFIEAgNDAxIE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlM3QWRkTm9kZUUgQCA0MDIgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzdGb3JOb2RlRSBAIDQwMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
N051bGxJbXBFIEAgNDA0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM3VHJ5Tm9kZUUg
QCA0MDUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhCaW5kaW5nczZDQ2xhc3NFIEAg
NDA2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4QmluZGluZ3M2Q0ZpZWxkRSBAIDQw
NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOEJpbmRpbmdzOEluc3RhbmNlRSBAIDQw
OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOEJpbmRpbmdzOUNJbnN0YW5jZUUgQCA0
MDkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhEZWJ1Z2dlckUgQCA0MTAgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhNdWx0Tm9kZUUgQCA0MTEgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzhOdWxsTm9kZUUgQCA0MTIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzhUaGlzTm9kZUUgQCA0MTMgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhW
YWx1ZUltcEUgQCA0MTQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhWb2lkTm9kZUUg
QCA0MTUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhXaXRoTm9kZUUgQCA0MTYgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlBcnJheU5vZGVFIEAgNDE3IE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlM5QmxvY2tOb2RlRSBAIDQxOCBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTOUJyZWFrTm9kZUUgQCA0MTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzlDYXRjaE5vZGVFIEAgNDIwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5Q29t
bWFOb2RlRSBAIDQyMSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUVxdWFsTm9kZUUg
QCA0MjIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlGb3JJbk5vZGVFIEAgNDIzIE5P
TkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5R3JvdXBOb2RlRSBAIDQyNCBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTOUxhYmVsTm9kZUUgQCA0MjUgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzlOdW1iZXJJbXBFIEAgNDI2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlM5T2JqZWN0SW1wRSBAIDQyNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVJl
Z0V4cEltcEUgQCA0MjggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlTaGlmdE5vZGVF
IEAgNDI5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5U3RyaW5nSW1wRSBAIDQzMCBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVRocm93Tm9kZUUgQCA0MzEgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzlXaGlsZU5vZGVFIEAgNDMyIE5PTkFNRSA7ICM8VlQ+Iw0K
IA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0phdmFTY3JpcHRDb3JlLm1tcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3VwL0phdmFTY3JpcHRDb3JlLm1tcAkocmV2aXNp
b24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wCSh3
b3JraW5nIGNvcHkpDQpAQCAtNDgsMTIgKzQ4LDE1IEBADQogDQogDQogU1lTVEVNSU5DTFVERSAu
LlxranMNCitVU0VSSU5DTFVERSAuLlxiaW5kaW5ncw0KK1NZU1RFTUlOQ0xVREUgLi5cYmluZGlu
Z3MNCitTWVNURU1JTkNMVURFIC4uXGJpbmRpbmdzXGMNCiBTWVNURU1JTkNMVURFIC4uXHBjcmUN
CiBTWVNURU1JTkNMVURFIC4uXC4uXE1lbW9yeU1hbmFnZXJcaW5jDQogI2lmbmRlZiBfX0JST1dT
RVJfU0RLDQogTVdfTEFZRVJfU1lTVEVNSU5DTFVERQ0KICNlbHNlDQotU1lTVEVNSU5DTFVERSBc
RVBPQzMyXElOQ0xVREUNCitTWVNURU1JTkNMVURFIFxFUE9DMzJcSU5DTFVERSBcZXBvYzMyXGlu
Y2x1ZGVcb2VtDQogI2VuZGlmDQogU1lTVEVNSU5DTFVERSBcRVBPQzMyXElOQ0xVREVcTElCQw0K
IA0KQEAgLTEwMiw2ICsxMDUsMjQgQEANCiBTT1VSQ0UgdmFsdWUuY3BwDQogLy9TT1VSQ0UgV3J0
U3RhdGljcy5jcHANCiANCitTT1VSQ0VQQVRIICAuLlxiaW5kaW5ncw0KKw0KK1NPVVJDRSBucHJ1
bnRpbWUuY3BwDQorU09VUkNFIE5QX2pzb2JqZWN0LmNwcCANCitTT1VSQ0UgcnVudGltZS5jcHAg
DQorU09VUkNFIHJ1bnRpbWVfYXJyYXkuY3BwIA0KK1NPVVJDRSBydW50aW1lX21ldGhvZC5jcHAg
DQorU09VUkNFIHJ1bnRpbWVfb2JqZWN0LmNwcCANCitTT1VSQ0UgcnVudGltZV9yb290LmNwcCAN
CisvL1NPVVJDRSBzb2Z0bGlua2luZy5jIA0KKw0KK1NPVVJDRVBBVEggIC4uXGJpbmRpbmdzXGMN
CisNCitTT1VSQ0UgY19jbGFzcy5jcHANCitTT1VSQ0UgY19pbnN0YW5jZS5jcHANCitTT1VSQ0Ug
Y19ydW50aW1lLmNwcA0KK1NPVVJDRSBjX3V0aWxpdHkuY3BwDQorDQogTElCUkFSWSAgICAgICAg
IGVzdGxpYi5saWINCiBMSUJSQVJZICAgICAgICAgZXVzZXIubGliDQogDQpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xMzUsMTIgKzEzNSwx
MiBAQA0KICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsKICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBy
ZXAtPmdsb2JhbEV4ZWMoKTsKICNpZm5kZWYgX19PT01fXwotCS8vRklYTUU6IG1ha2UgYSBtZW1v
cnltYW5hZ2VyIHZlcnNpb24gZm9yIHN0cmR1cAorICAgIC8vRklYTUU6IG1ha2UgYSBtZW1vcnlt
YW5hZ2VyIHZlcnNpb24gZm9yIHN0cmR1cAogICAgIGNoYXIgKmYgPSBzdHJkdXAoc291cmNlVVJM
LmFzY2lpKCkpOwogI2Vsc2UKLQljb25zdCBjaGFyKiBzcyA9IHNvdXJjZVVSTC5hc2NpaSgpOwor
ICAgIGNvbnN0IGNoYXIqIHNzID0gc291cmNlVVJMLmFzY2lpKCk7CiAgICAgY2hhciAqZiA9IChj
aGFyKilNZW1vcnlNYW5hZ2VyOjpDYWxsb2MoIHN0cmxlbihzcykgKyAxLCBzaXplb2YoIGNoYXIg
KSApOwotCW1lbWNweSggZiwgc3MsIHN0cmxlbiggc3MgKSApOworICAgIG1lbWNweSggZiwgc3Ms
IHN0cmxlbiggc3MgKSApOwogI2VuZGlmCiAgICAgY29uc3QgY2hhciAqbWVzc2FnZSA9IGNvbXAu
dmFsdWUoKS50b09iamVjdChleGVjKS50b1N0cmluZyhleGVjKS5hc2NpaSgpOwogI2lmbmRlZiBO
T0tJQV9DSEFOR0VTCkBAIC0zNjIsMTIgKzM2MiwxMSBAQA0KICAgcHJpbnRFeGNlcHRpb25zID0g
cHJpbnQ7CiB9CiAKLSNpZm5kZWYgTk9LSUFfQ0hBTkdFUworRVhQT1JUX0MKIHZvaWQgKkludGVy
cHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywg
QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVj
dCAmdmFsdWUsIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IEJpbmRp
bmdzOjpSb290T2JqZWN0ICpjdXJyZW50KQogewogICAgIHJldHVybiBCaW5kaW5nczo6SW5zdGFu
Y2U6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgbGFuZ3VhZ2UsIHZhbHVl
LCBvcmlnaW4sIGN1cnJlbnQpOwogfQotI2VuZGlmCiAKICNlbmRpZgogCkBAIC0zODEsNyArMzgw
LDcgQEANCiAgIHJlcC0+cmVzdG9yZUJ1aWx0aW5zKGJ1aWx0aW5zKTsKIH0KIAotU2F2ZWRCdWls
dGluczo6U2F2ZWRCdWlsdGlucygpIDogCitTYXZlZEJ1aWx0aW5zOjpTYXZlZEJ1aWx0aW5zKCkg
OgogICBfaW50ZXJuYWwoMCkKIHsKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnBy
ZXRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmgJ
KHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjgsNyArMjgsNyBAQA0KICNpbmNsdWRlICJvYmplY3QuaCIKICNp
bmNsdWRlICJ0eXBlcy5oIgogCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUwor
I2lmIEFQUExFX0NIQU5HRVMKIAogI2luY2x1ZGUgInJ1bnRpbWUuaCIKIApAQCAtMTE0LDcgKzEx
NCw3IEBADQogICBjbGFzcyBTYXZlZEJ1aWx0aW5zSW50ZXJuYWw7CiAKICAgY2xhc3MgU2F2ZWRC
dWlsdGlucyB7Ci0JT09NX05FV19ERUxFVEUKKyAgICBPT01fTkVXX0RFTEVURQogICAgIGZyaWVu
ZCBjbGFzcyBJbnRlcnByZXRlckltcDsKICAgcHVibGljOgogICAgIFNhdmVkQnVpbHRpbnMoKTsK
QEAgLTIwNSw4ICsyMDUsOCBAQA0KICAgICAgKi8KICAgICBJTVBPUlRfQyBDb21wbGV0aW9uIGV2
YWx1YXRlKGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwg
Y29uc3QgVVN0cmluZyAmY29kZSwgY29uc3QgVmFsdWUgJnRoaXNWID0gVmFsdWUoKSk7CiAKLQkv
LyBPdmVybG9hZCBvZiBldmFsdWF0ZSB0byBrZWVwIEphdmFTY3JpcHRHbHVlIGJvdGggc291cmNl
IGFuZCBiaW5hcnkgY29tcGF0aWJsZS4KLQlJTVBPUlRfQyBDb21wbGV0aW9uIGV2YWx1YXRlKGNv
bnN0IFVTdHJpbmcgJmNvZGUsIGNvbnN0IFZhbHVlICZ0aGlzViA9IFZhbHVlKCksIGNvbnN0IFVT
dHJpbmcgJnNvdXJjZUZpbGVuYW1lID0gVVN0cmluZygpKTsKKyAgICAvLyBPdmVybG9hZCBvZiBl
dmFsdWF0ZSB0byBrZWVwIEphdmFTY3JpcHRHbHVlIGJvdGggc291cmNlIGFuZCBiaW5hcnkgY29t
cGF0aWJsZS4KKyAgICBJTVBPUlRfQyBDb21wbGV0aW9uIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcg
JmNvZGUsIGNvbnN0IFZhbHVlICZ0aGlzViA9IFZhbHVlKCksIGNvbnN0IFVTdHJpbmcgJnNvdXJj
ZUZpbGVuYW1lID0gVVN0cmluZygpKTsKIAogICAgIC8qKgogICAgICAqIEBpbnRlcm5hbApAQCAt
MzQwLDcgKzM0MCw3IEBADQogCiAjaWZkZWYgTk9LSUFfQ0hBTkdFUwogICAgIElNUE9SVF9DIHZv
aWQgaW5jU3RhdGVtZW50Q291bnQoKTsKLQlJTVBPUlRfQyB2b2lkIHJlc2V0U3RhdGVtZW50Q291
bnQoKTsKKyAgICBJTVBPUlRfQyB2b2lkIHJlc2V0U3RhdGVtZW50Q291bnQoKTsKICAgICBpbnQg
c3RhdGVtZW50Q291bnQoKSBjb25zdDsKICNlbmRpZgogCkBAIC0zODMsOCArMzgzLDggQEANCiAg
ICAgICogc2VjdXJpdHkgY2hlY2tzLgogICAgICAqLwogICAgIHZpcnR1YWwgYm9vbCBpc0dsb2Jh
bE9iamVjdChjb25zdCBWYWx1ZSAmdikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICAvKiog
CisKKyAgICAvKioKICAgICAgKiBGaW5kIHRoZSBpbnRlcnByZXRlciBmb3IgYSBwYXJ0aWN1bGFy
IGdsb2JhbCBvYmplY3QuICBUaGlzIHNob3VsZCByZWFsbHkKICAgICAgKiBiZSBhIHN0YXRpYyBt
ZXRob2QsIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0IGlzIEMrKy4gIEFnYWluLCBhcyB3aXRoIGlzR2xv
YmFsT2JqZWN0KCkKICAgICAgKiBpbXBsZW1lbnRhdGlvbiByZWFsbHkgbmVlZCB0byBrbm93IGFi
b3V0IGFsbCBpbnN0YW5jZXMgb2YgSW50ZXJwcmV0ZXIKQEAgLTM5Miw3ICszOTIsNyBAQA0KICAg
ICAgKiBvdmVycmlkZSBvZiB0aGlzIG1ldGhvZCBpcyBjdXJyZW50bHkgaW4gV2ViQ29yZS4KICAg
ICAgKi8KICAgICB2aXJ0dWFsIEludGVycHJldGVyICppbnRlcnByZXRlckZvckdsb2JhbE9iamVj
dCAoY29uc3QgVmFsdWVJbXAgKmltcCkgeyByZXR1cm4gMDsgfQotICAgIAorCiAgICAgLyoqCiAg
ICAgICogRGV0ZXJtaW5lIGlmIHRoZSBpdCBpcyAnc2FmZScgdG8gZXhlY3V0ZSBjb2RlIGluIHRo
ZSB0YXJnZXQgaW50ZXJwcmV0ZXIgZnJvbSBhbgogICAgICAqIG9iamVjdCB0aGF0IG9yaWdpbmF0
ZWQgaW4gdGhpcyBpbnRlcnByZXRlci4gIFRoaXMgY2hlY2sgaXMgdXNlZCB0byBlbmZvcmNlIFdl
YkNvcmUKQEAgLTQwMSwxMSArNDAxLDEwIEBADQogICAgICAqLwogICAgIHZpcnR1YWwgYm9vbCBp
c1NhZmVTY3JpcHQgKGNvbnN0IEludGVycHJldGVyICp0YXJnZXQpIHsgcmV0dXJuIHRydWU7IH0K
IAotI2lmbmRlZiBOT0tJQV9DSEFOR0VTICAgIAorICAgIElNUE9SVF9DCiAgICAgdmlydHVhbCB2
b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmlu
ZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAm
dmFsdWUsIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IEJpbmRpbmdz
OjpSb290T2JqZWN0ICpjdXJyZW50KTsKICNlbmRpZgotI2VuZGlmCi0gICAgCisKICAgcHJpdmF0
ZToKICAgICBJbnRlcnByZXRlckltcCAqcmVwOwogCkBAIC00MzIsNyArNDMxLDcgQEANCiAgICAq
IGFuZCBhbHNvIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZSBjb250ZXh0LgogICAgKi8KICAg
Y2xhc3MgRXhlY1N0YXRlIHsKLQlPT01fTkVXX0RFTEVURQorICAgIE9PTV9ORVdfREVMRVRFCiAg
ICAgZnJpZW5kIGNsYXNzIEludGVycHJldGVySW1wOwogICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlv
bkltcDsKICNpZiBBUFBMRV9DSEFOR0VTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvc3RkaW50
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvc3RkaW50LmgJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy9zdGRpbnQuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTI1LDM2ICsyNSwzMyBAQA0KIA0KICNpbmNsdWRlIDxlMzJkZWYuaD4NCiANCi0jaWZuZGVm
IHVpbnQzMl90DQotI2RlZmluZSB1aW50MzJfdCBUVWludDMyDQotI2RlZmluZSBpbnQzMl90CVRJ
bnQzMg0KLSNlbmRpZg0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90Ow0KK3R5cGVkZWYg
c2lnbmVkIGNoYXIgaW50OF90Ow0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7DQor
dHlwZWRlZiBzaG9ydCBpbnQxNl90Ow0KK3R5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90Ow0K
K3R5cGVkZWYgaW50IGludDMyX3Q7DQordHlwZWRlZiBsb25nIGxvbmcgaW50NjRfdDsNCit0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50NjRfdDsNCiANCi0jaWZuZGVmIHVpbnQxNl90DQot
I2RlZmluZSB1aW50MTZfdCBUVWludDE2DQotI2RlZmluZSBpbnQxNl90CVRJbnQxNg0KLSNlbmRp
Zg0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRyX3Q7DQordHlwZWRlZiB1bnNpZ25lZCBs
b25nIGludHB0cl90Ow0KIA0KLSNpZm5kZWYgdWludDhfdA0KLSNkZWZpbmUgdWludDhfdCBUVWlu
dDgNCi0jZGVmaW5lIGludDhfdAlUSW50OA0KLSNlbmRpZg0KLQ0KICNlbHNlDQogDQogI2lmbmRl
ZiB1aW50MzJfdA0KICNkZWZpbmUgdWludDMyX3QgdW5zaWduZWQgaW50DQotI2RlZmluZSBpbnQz
Ml90CWludA0KKyNkZWZpbmUgaW50MzJfdCAgICBpbnQNCiAjZW5kaWYNCiANCiAjaWZuZGVmIHVp
bnQxNl90DQogI2RlZmluZSB1aW50MTZfdCB1bnNpZ25lZCBzaG9ydCBpbnQNCi0jZGVmaW5lIGlu
dDE2X3QJIHNob3J0IGludA0KKyNkZWZpbmUgaW50MTZfdCAgICAgc2hvcnQgaW50DQogI2VuZGlm
DQogDQogI2lmbmRlZiB1aW50OF90DQogI2RlZmluZSB1aW50OF90IHVuc2lnbmVkIGNoYXINCi0j
ZGVmaW5lIGludDhfdAljaGFyDQorI2RlZmluZSBpbnQ4X3QgICAgY2hhcg0KICNlbmRpZg0KIA0K
IA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvdXN0cmluZy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNDc3LDYgKzQ3Nyw3IEBA
DQogICAgICAqLwogICAgIHN0YXRpYyB2b2lkIGdsb2JhbENsZWFyKCk7CiAjZW5kaWYKKyAgICBS
ZXAgKmFyZXAoKSBjb25zdCB7IHJldHVybiByZXA7IH0KICAgcHJpdmF0ZToKICAgICBVU3RyaW5n
KFJlcCAqcikgeyBhdHRhY2gocik7IH0KICAgICB2b2lkIGF0dGFjaChSZXAgKnIpIHsgcmVwID0g
cjsgci0+cmVmKCk7IH0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHAJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtMTY1LDcgKzE2NSw3IEBADQogICAgIH0NCiAgICAgaVBhcnQtPnNldEJyaWRnZSgw
KTsNCiAgICAgaVBhcnQtPmRlcmVmKCk7DQotICAgIA0KKw0KICAgICBkZWxldGUgaVNtYXJ0VGV4
dEJ1ZmZlcjsNCiAgICAgfQ0KIA0KQEAgLTI5MSw3ICsyOTEsNyBAQA0KIEVYUE9SVF9DDQogdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmcoY29uc3QgVERlc0Mm
IGFFbmNvZGluZywgVEJvb2wgYVVzZXJDaG9zZW4pDQogew0KLSAgICBpU21hcnRMaW5rTm9kZSA9
IE5VTEw7ICAgIA0KKyAgICBpU21hcnRMaW5rTm9kZSA9IE5VTEw7DQogICAgIGlQYXJ0LT5zZXRF
bmNvZGluZyhRU3RyaW5nOjpGcm9tRGVzKGFFbmNvZGluZyksIGFVc2VyQ2hvc2VuKTsNCiAgICAg
Q2xpZW50KCkuRG9jdW1lbnRTdGFydGVkKCk7DQogfQ0KQEAgLTEzMjYsNiArMTMyNiwxMiBAQA0K
IA0KICovDQogRVhQT1JUX0MNCitOUE9iamVjdCogQ1dlYkNvcmVCcmlkZ2U6OldpbmRvd1Njcmlw
dE5QT2JqZWN0KCkNCit7DQorICAgIHJldHVybiBpUGFydC0+d2luZG93U2NyaXB0TlBPYmplY3Qo
KTsNCit9DQorDQorRVhQT1JUX0MNCiB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROYW1lKGNvbnN0
IFREZXNDJiBhTmFtZSkNCiB7DQogICAgIGlQYXJ0LT5LSFRNTFBhcnQ6OnNldE5hbWUoUVN0cmlu
Zzo6RnJvbURlcyhhTmFtZSkpOw0KQEAgLTE0MjYsMTIgKzE0MzIsMTIgQEANCiBUUHRyQyBDV2Vi
Q29yZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTChUQm9vbCYgYUNvbnRp
bnVlKQ0KIHsNCiANCi0gICAgaWYoKCFpUGFydCkgfHwgKCFpUGFydC0+eG1sRG9jSW1wbCgpKSkg
DQorICAgIGlmKCghaVBhcnQpIHx8ICghaVBhcnQtPnhtbERvY0ltcGwoKSkpDQogICAgICAgICB7
DQogICAgICAgICBhQ29udGludWUgPSBFRmFsc2U7DQogICAgICAgICByZXR1cm4gVFB0ckMoKTsN
CiAgICAgICAgIH0NCi0gIA0KKw0KICAgICBpZiAoaVNtYXJ0TGlua05vZGUgPT0gTlVMTCkNCiAg
ICAgICAgIHsNCiAgICAgICAgIGlTbWFydExpbmtOb2RlID0gaVBhcnQtPnhtbERvY0ltcGwoKTsN
CkBAIC0xNDQxLDEwICsxNDQ3LDEwIEBADQogICAgICAgICAgICAgfQ0KICAgICAgICAgLy9hZGQg
cmVmDQogICAgICAgICB9DQotICAgIGVsc2UgDQotICAgICAgICB7ICAgDQorICAgIGVsc2UNCisg
ICAgICAgIHsNCiAgICAgICAgIERPTTo6Tm9kZUltcGwqIG5vZGVUZW1wID0gaVNtYXJ0TGlua05v
ZGU7DQotICAgICAgICBpU21hcnRMaW5rTm9kZSA9IGlTbWFydExpbmtOb2RlLT50cmF2ZXJzZU5l
eHROb2RlKCk7ICANCisgICAgICAgIGlTbWFydExpbmtOb2RlID0gaVNtYXJ0TGlua05vZGUtPnRy
YXZlcnNlTmV4dE5vZGUoKTsNCiAgICAgICAgIGlmKGlTbWFydExpbmtOb2RlKQ0KICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICBpU21hcnRMaW5rTm9kZS0+cmVmKCk7DQpAQCAtMTQ2MCwxNiAr
MTQ2NiwxNiBAQA0KICAgICAgICAgaWYoaVNtYXJ0TGlua05vZGUtPnJlbmRlcmVyKCktPmlzVGV4
dCgpKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICBhQ29udGludWUgPSBFVHJ1ZTsNCi0g
ICAgICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJU
ZXh0ICo+KGlTbWFydExpbmtOb2RlLT5yZW5kZXJlcigpKTsgICAgICAgICAgIA0KKyAgICAgICAg
ICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4o
aVNtYXJ0TGlua05vZGUtPnJlbmRlcmVyKCkpOw0KICAgICAgICAgICAgIGRlbGV0ZSBpU21hcnRU
ZXh0QnVmZmVyOw0KICAgICAgICAgICAgIGlTbWFydFRleHRCdWZmZXIgPSBOVUxMOw0KLSAgICAg
ICAgICAgIGlTbWFydFRleHRCdWZmZXIgPSB0ZXh0UmVuZGVyZXItPmRhdGEoKS5zdHJpbmcoKS5E
ZXMoKS5BbGxvY0woKTsgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgaVNtYXJ0VGV4dEJ1
ZmZlciA9IHRleHRSZW5kZXJlci0+ZGF0YSgpLnN0cmluZygpLkRlcygpLkFsbG9jTCgpOw0KICAg
ICAgICAgICAgIHJldHVybiBpU21hcnRUZXh0QnVmZmVyLT5QdHIoKTsNCiAgICAgICAgICAgICB9
DQogICAgICAgICB9DQogDQogICAgIERPTTo6Tm9kZUltcGwqIG5vZGVUZW1wID0gaVNtYXJ0TGlu
a05vZGU7DQotICAgIGlTbWFydExpbmtOb2RlID0gaVNtYXJ0TGlua05vZGUtPnRyYXZlcnNlTmV4
dE5vZGUoKTsgICANCisgICAgaVNtYXJ0TGlua05vZGUgPSBpU21hcnRMaW5rTm9kZS0+dHJhdmVy
c2VOZXh0Tm9kZSgpOw0KICAgICBpZihpU21hcnRMaW5rTm9kZSkNCiAgICAgICAgIHsNCiAgICAg
ICAgIGlTbWFydExpbmtOb2RlLT5yZWYoKTsNCkBAIC0xNDc5LDEzICsxNDg1LDEzIEBADQogICAg
IH0NCiANCiAgICAgYUNvbnRpbnVlID0gRUZhbHNlOw0KLSAgICByZXR1cm4gVFB0ckMoKTsgICAg
DQorICAgIHJldHVybiBUUHRyQygpOw0KIH0NCiANCiBFWFBPUlRfQw0KIHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKGNvbnN0IFREZXNDJiBhVGV4dCwgUkFycmF5PFRSZWN0
PiYgYVJlY3QpDQogew0KLSAgaVBhcnQtPmdldFJlbmRlclRleHRSZWN0QXJyYXkoYVRleHQsIE5v
ZGUoaVNtYXJ0TGlua05vZGUpLCBhUmVjdCk7ICAgDQorICBpUGFydC0+Z2V0UmVuZGVyVGV4dFJl
Y3RBcnJheShhVGV4dCwgTm9kZShpU21hcnRMaW5rTm9kZSksIGFSZWN0KTsNCiB9DQogDQogDQpA
QCAtMjA5Myw3ICsyMDk5LDcgQEANCiAgICAgICAgIG5ldyhFTGVhdmUpIENBcnJheVB0ckZsYXQ8
Q1dlYkNvcmVQYWdlRGF0YUl0ZW0+KDEwKTsNCiAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggaXRl
bUFycmF5ICk7DQogICAgIENXZWJDb3JlUGFnZURhdGFJdGVtKiBkYXRhSXRlbSA9IE5VTEw7DQot
ICAgIA0KKw0KICAgICAvLyBnZXQgcGFnZSBtYXJrdXAgZG9jdW1lbnQgaWYgcmVxdWVzdGVkDQog
ICAgIGlmKGFUeXBlTWFzayAmIENXZWJDb3JlUGFnZURhdGFJdGVtOjpFTWFya3VwKQ0KICAgICAg
ICAgew0KQEAgLTIxMDEsOCArMjEwNyw4IEBADQogICAgICAgICBkYXRhSXRlbSA9IENXZWJDb3Jl
UGFnZURhdGFJdGVtOjpOZXdMKENXZWJDb3JlUGFnZURhdGFJdGVtOjpFTWFya3VwKTsNCiAgICAg
ICAgIENsZWFudXBTdGFjazo6UHVzaEwoIGRhdGFJdGVtICk7DQogICAgICAgICBkYXRhSXRlbS0+
U2V0VXJsTChpUGFydC0+cmVxdWVzdGVkVVJMU3RyaW5nKCkuRGVzKCkpOw0KLSAgICAgICAgZGF0
YUl0ZW0tPlNldENvbnRlbnRUeXBlTChfTCgidGV4dC9odG1sIikpOyAgICAgICAgICAgICAgICAg
ICAgICAgIA0KLSAgICAgICAgZGF0YUl0ZW0tPlNldENoYXJzZXRMKF9MKCJ1Y3MtMiIpKTsgDQor
ICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVudFR5cGVMKF9MKCJ0ZXh0L2h0bWwiKSk7DQorICAg
ICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVjcy0yIikpOw0KICAgICAgICAgZGF0YUl0
ZW0tPlNldERhdGFMKCBwYWdlTWFya3VwUS5EZXMoKSApOw0KICAgICAgICAgaXRlbUFycmF5LT5B
cHBlbmRMKGRhdGFJdGVtKTsNCiAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCBkYXRhSXRlbSAp
Ow0KQEAgLTIxMjQsOSArMjEzMCw5IEBADQogICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6
UHVzaEwoIGRhdGFJdGVtICk7DQogICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXRVcmxMKHNo
ZWV0VXJsLnN0cmluZygpLkRlcygpKTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldENv
bnRlbnRUeXBlTChkU3R5bGVzaGVldC50eXBlKCkuc3RyaW5nKCkuRGVzKCkpOw0KLSAgICAgICAg
ICAgICAgICAvL0NoYXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLiAgIA0KKyAgICAg
ICAgICAgICAgICAvL0NoYXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLg0KICAgICAg
ICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVjcy0yIikpOw0KLSAgICAgICAg
ICAgICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoa1N0eWxlU2hlZXQtPnNoZWV0KCkuc3RyaW5nKCku
RGVzKCkpOyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldERh
dGFMKGtTdHlsZVNoZWV0LT5zaGVldCgpLnN0cmluZygpLkRlcygpKTsNCiAgICAgICAgICAgICAg
ICAgaXRlbUFycmF5LT5BcHBlbmRMKGRhdGFJdGVtICk7DQogICAgICAgICAgICAgICAgIENsZWFu
dXBTdGFjazo6UG9wKCBkYXRhSXRlbSApOw0KICAgICAgICAgICAgICAgICB9DQpAQCAtMjE1Myw3
ICsyMTU5LDcgQEANCiAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZGF0YUl0
ZW0gKTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldFVybEwoc2NyaXB0VXJsLnN0cmlu
ZygpLkRlcygpKTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldENvbnRlbnRUeXBlTChf
TCgiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IikpOw0KLSAgICAgICAgICAgICAgICAvLyBDaGFy
c2V0IGlzIHJlcXVpcmVkIGZvciBzYXZlZCBwYWdlcy4gDQorICAgICAgICAgICAgICAgIC8vIENo
YXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLg0KICAgICAgICAgICAgICAgICBkYXRh
SXRlbS0+U2V0Q2hhcnNldEwoX0woInVjcy0yIikpOw0KICAgICAgICAgICAgICAgICBkYXRhSXRl
bS0+U2V0RGF0YUwoa1NjcmlwdC0+c2NyaXB0KCkuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAgICAg
ICAgICAgICBpdGVtQXJyYXktPkFwcGVuZEwoZGF0YUl0ZW0pOw0KQEAgLTI4NTksMTQgKzI4NjUs
MTQgQEANCiB7DQogICAgIGlmKCFpUGFydCB8fCAhaVBhcnQtPnhtbERvY0ltcGwoKSkgcmV0dXJu
IEVGYWxzZTsNCiAgICAgaWYoYUluaXRpYWxpemUpIHsNCi0gICAgICAgIA0KKw0KICAgICAgICAg
aWYgKGlQYXJ0LT54bWxEb2NJbXBsKCkgJiYgaVBhcnQtPnhtbERvY0ltcGwoKS0+Zm9jdXNOb2Rl
KCkpew0KICAgICAgICAgICAgIFFQb2ludCBjcChpUGFydC0+eG1sRG9jSW1wbCgpLT5mb2N1c05v
ZGUoKS0+Z2V0UmVjdCgpLmNlbnRlcigpKTsNCiAgICAgICAgICAgICBpUGFydC0+c2V0Q3Vyc29y
UG9zaXRpb24oY3ApOw0KICAgICAgICAgICAgIGlQYXJ0LT52aWV3KCktPkdldERvY3VtZW50Vmll
dygpLlNldEZvY3VzKEVUcnVlKTsNCiAgICAgICAgICAgICByZXR1cm4gRVRydWU7DQogICAgICAg
ICB9DQotICAgICAgICANCisNCiAgICAgICAgIFFQdHJMaXN0PEtQYXJ0czo6UmVhZE9ubHlQYXJ0
PiBjaGlsZFBhcnRMaXN0ID0gaVBhcnQtPmZyYW1lcygpOw0KICAgICAgICAgZm9yKEtQYXJ0czo6
UmVhZE9ubHlQYXJ0KiBjaGlsZFBhcnQgPSBjaGlsZFBhcnRMaXN0LmZpcnN0KCk7Y2hpbGRQYXJ0
O2NoaWxkUGFydCA9IGNoaWxkUGFydExpc3QubmV4dCgpKXsNCiAgICAgICAgICAgICBLSFRNTFBh
cnQgKmtodG1sX3BhcnQgPSBzdGF0aWNfY2FzdDxLSFRNTFBhcnQgKj4oY2hpbGRQYXJ0KTsNCkBA
IC0yODg0LDcgKzI4OTAsNyBAQA0KICAgICAgICAgaVBhcnQtPnRhYmJlZE5hdmlnYXRpb24oMCwx
LGFFbFR5cGUsIGFJbml0aWFsaXplKTsNCiAgICAgICAgIHJldHVybiBFVHJ1ZTsNCiAgICAgfQ0K
LSAgICANCisNCiAgICAgaW50IGxyID0gKGFEaXJlY3Rpb24gPT0gRVdlYk5hdkxlZnQpID8gLTEg
OiAoYURpcmVjdGlvbiA9PSBFV2ViTmF2UmlnaHQpID8gMSA6IDAgOw0KICAgICBpbnQgdGIgPSAo
bHIgIT0gMCkgPyAwOiAoYURpcmVjdGlvbiA9PSBFV2ViTmF2VXApID8gLTEgOiAxIDsNCiAgICAg
Ym9vbCBmb3VuZCA9IGlQYXJ0LT50YWJiZWROYXZpZ2F0aW9uKGxyLHRiLGFFbFR5cGUsYUluaXRp
YWxpemUpOw0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaAkocmV2aXNpb24gMTcwNjkpDQor
KysgV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTMz
LDYgKzEzMywxMyBAQA0KIGNsYXNzIEtIVE1MVmlldzsNCiBjbGFzcyBSZW5kZXJBcmVuYTsNCiAN
CisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK25hbWVzcGFjZSBLSlMgew0KKyAgICBjbGFz
cyBFeGVjU3RhdGU7DQorICAgIGNsYXNzIE9iamVjdEltcDsNCisgICAgY2xhc3MgUHJvdGVjdGVk
VmFsdWU7DQorfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIG5hbWVzcGFjZSBraHRt
bCB7DQogICAgIGNsYXNzIFJlbmRlclBhcnQ7DQogICAgIGNsYXNzIFJlbmRlck9iamVjdDsNCkBA
IC0xNTksNiArMTY2LDcgQEANCiANCiBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dDsNCiBj
bGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbTsNCitjbGFzcyBOUE9iamVjdDsNCiANCiB0eXBlZGVm
IGtodG1sOjpSZW5kZXJQYXJ0IEtIVE1MUmVuZGVyUGFydDsNCiANCkBAIC0yNDUsOCArMjUzLDgg
QEANCiAgICAgICAgIElNUE9SVF9DIFRQdHJDIFJlZmVycmVyKCkgY29uc3Q7DQogICAgICAgICBJ
TVBPUlRfQyBUUHRyQyBEb21haW4oKSBjb25zdDsNCiAgICAgICAgIElNUE9SVF9DIEhCdWZDKiBH
ZXRUZXh0Q29udGVudEwoKTsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICBJTVBPUlRfQyBU
UHRyQyBHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKFRCb29sJiBhS2VlcEdvaW5nKTsg
ICAgDQorDQorICAgICAgICBJTVBPUlRfQyBUUHRyQyBHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0
TGlua3NMKFRCb29sJiBhS2VlcEdvaW5nKTsNCiAgICAgICAgIElNUE9SVF9DIHZvaWQgR2V0UmVu
ZGVyVGV4dEFyZWEoY29uc3QgVERlc0MmIGFUZXh0LCBSQXJyYXk8VFJlY3Q+JiBhUmVjdCk7DQog
DQogICAgICAgICBJTVBPUlRfQyB2b2lkIEluc3RhbGxJbkZyYW1lKE1XZWJDb3JlU2Nyb2xsVmll
dyYgYVZpZXcpOw0KQEAgLTQ0Miw2ICs0NTAsNyBAQA0KICAgICAgICAgLy92b2lkIGVuc3VyZUNh
cmV0VmlzaWJsZTsNCiANCiAgICAgICAgIC8vLSAoV2ViU2NyaXB0T2JqZWN0ICopd2luZG93U2Ny
aXB0T2JqZWN0Ow0KKyAgICAgICAgSU1QT1JUX0MgTlBPYmplY3QqIFdpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCk7DQogDQogICAgICAgICAvLy0gKE5TRHJhZ09wZXJhdGlvbilkcmFnT3BlcmF0aW9uRm9y
RHJhZ2dpbmdJbmZvKGlkIDxOU0RyYWdnaW5nSW5mbz4paW5mbzsNCiAgICAgICAgIC8vdm9pZCBk
cmFnRXhpdGVkV2l0aERyYWdnaW5nSW5mbyhpZCA8TlNEcmFnZ2luZ0luZm8+KWluZm87DQpAQCAt
NTEyLDExICs1MjEsMTEgQEANCiAgICAgICAgIFRCb29sIGlTaG91bGRDcmVhdGVSZW5kZXJlcnM7
DQogICAgICAgICAvLyBwb2ludGVyIHRvIHRoZSBjbGllbnQgc2lkZSBicmlkZ2UgaW50ZXJmYWNl
DQogICAgICAgICBNV2ViQ2xpZW50QnJpZGdlKiBpQ2xpZW50QnJpZGdlOw0KLSAgICAgICAgLy9w
b2ludGVyIGZvciByZW5kZXIgdGV4dCBvYmplY3QgZm9yIHNtYXJ0IGxpbmsgcGFyc2luZyANCisg
ICAgICAgIC8vcG9pbnRlciBmb3IgcmVuZGVyIHRleHQgb2JqZWN0IGZvciBzbWFydCBsaW5rIHBh
cnNpbmcNCiAgICAgICAgIERPTTo6Tm9kZUltcGwqIGlTbWFydExpbmtOb2RlOw0KICAgICAgICAg
Ly9wb2ludGVyIGZvciBzbWFydCB0ZXh0IGJ1ZmZlcg0KICAgICAgICAgSEJ1ZkMqIGlTbWFydFRl
eHRCdWZmZXI7DQotICAgICAgICANCisNCiAgICAgfTsNCiANCiANCkBAIC02MTQsNyArNjIzLDcg
QEANCiAgICAgdmlydHVhbCBUQm9vbCBEZWZlcnNMb2FkaW5nKCkgPSAwOw0KICAgICB2aXJ0dWFs
IHZvaWQgU2V0RGVmZXJzTG9hZGluZyhUQm9vbCBhTG9hZGluZykgPSAwOw0KIA0KLSAgICB2aXJ0
dWFsIHZvaWQgU2F2ZUZvcm1EYXRhKGNvbnN0IENBcnJheVB0ckZsYXQ8Q1dlYkNvcmVGb3JtRGF0
YUVsZW1lbnQ+JiBhRm9ybURhdGEpID0gMDsgDQorICAgIHZpcnR1YWwgdm9pZCBTYXZlRm9ybURh
dGEoY29uc3QgQ0FycmF5UHRyRmxhdDxDV2ViQ29yZUZvcm1EYXRhRWxlbWVudD4mIGFGb3JtRGF0
YSkgPSAwOw0KIA0KICAgICB2aXJ0dWFsIHZvaWQgU2F2ZURvY3VtZW50U3RhdGUoY29uc3QgVEFy
cmF5PFRQdHJDPiYgYURvY3VtZW50U3RhdGUpID0gMDsNCiAgICAgdmlydHVhbCBUQXJyYXk8VFB0
ckM+KiBEb2N1bWVudFN0YXRlKCkgY29uc3QgPSAwOw0KQEAgLTcxNyw2ICs3MjYsMTAgQEANCiAg
ICAgdmlydHVhbCB2b2lkIFNldEZvcm1Db250cm9sVGV4dEJ5TmFtZShjb25zdCBURGVzQyYgYU5h
bWUsIGNvbnN0IFREZXNDJiBhVmFsdWUpID0gMDsNCiANCiAgICAgdmlydHVhbCBUQm9vbCBDYW5j
ZWxJblByb2dyZXNzKCkgPSAwOw0KKw0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAg
IHZpcnR1YWwgdm9pZCogY3JlYXRlV2lkZ2V0T2JqZWN0KHZvaWQqIGV4ZWMpID0gMDsNCisjZW5k
aWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiB9Ow0KIA0KICNlbmRpZiAgICAgIC8vIFdFQkNPUkVC
UklER0VfSA0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVXaWRnZXQuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVXaWRnZXQuaAkocmV2aXNpb24gMTcwNjkpDQor
KysgV2ViQ29yZS9icmlkZ2UvV2ViQ29yZVdpZGdldC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTYs
NyArNTYsNyBAQA0KIA0KIA0KIC8qKg0KLSogIGludGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xh
c3NlcyANCisqICBpbnRlcmZhY2UsIHVzZWQgYnkgd2lkZ2V0IGNsYXNzZXMNCiAqICBAbGliIHdl
YmNvcmUubGliDQogKiAgQHNpbmNlIDMuMQ0KICovDQpAQCAtNjQsOSArNjQsOSBAQA0KICAgew0K
ICAgcHVibGljOg0KIA0KLSAgICB2aXJ0dWFsIHZvaWQgRHJhdyhDV2ViQ29yZUdyYXBoaWNzQ29u
dGV4dCYgLyphR2MqLywgDQorICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJDb3JlR3JhcGhpY3ND
b250ZXh0JiAvKmFHYyovLA0KICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUmVjdCYgLyph
UmVjdCovKSA9IDA7DQotICAgIA0KKw0KICAgICB2aXJ0dWFsIFRCb29sIElzVmlzaWJsZSgpIGNv
bnN0ID0gMDsNCiANCiAgICAgdmlydHVhbCBUUmVjdCBSZWN0KCkgY29uc3QgPSAwOw0KQEAgLTgx
LDEyICs4MSwxMiBAQA0KIA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0UmVjdChjb25zdCBUUmVjdCYg
YVJlY3QpID0gMDsNCiANCi0gICAgdmlydHVhbCB2b2lkIEFjdGl2YXRlKCkgPSAwOyAgICANCi0g
ICAgDQorICAgIHZpcnR1YWwgdm9pZCBBY3RpdmF0ZSgpID0gMDsNCisNCiAgICAgdmlydHVhbCB2
b2lkIFNldFBhcmVudCggTVdlYkNvcmVTY3JvbGxWaWV3KiBhUGFyZW50ICkgPSAgMDsNCiANCiAg
ICAgdmlydHVhbCB2b2lkIENsb3NlKCkgPSAwOw0KLSAgICANCisNCiAgICAgdmlydHVhbCBUQm9v
bCBJc1Njcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBFRmFsc2U7IH0NCiANCiAgICAgdmlydHVh
bCB2b2lkIFNldFBhbGV0dGUoVFdlYkNvcmVQYWxldHRlKSB7fQ0KQEAgLTk0LDMyICs5NCwzNCBA
QA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0T3V0bGluZVdpZHRoKFRVaW50OCApIHt9DQogDQogICAg
IHZpcnR1YWwgdm9pZCBTZXRXcml0aW5nRGlyZWN0aW9uUnRsKFRCb29sKSB7fQ0KKw0KKyAgICB2
aXJ0dWFsIHZvaWQqIFBsdWdpblNjcmlwdGFibGVPYmplY3QoKSB7IHJldHVybiAwOyB9DQogICB9
Ow0KIA0KIA0KIC8qKg0KLSogIGludGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3NlcyANCisq
ICBpbnRlcmZhY2UsIHVzZWQgYnkgd2lkZ2V0IGNsYXNzZXMNCiAqICBAbGliIHdlYmNvcmUubGli
DQogKiAgQHNpbmNlIDMuMQ0KICovDQogY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3OiBwdWJsaWMg
TVdlYkNvcmVXaWRnZXQNCiAgIHsNCi0gIHB1YmxpYzogICAgICANCi0gIA0KKyAgcHVibGljOg0K
Kw0KICAgICBUQm9vbCBJc1Njcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBFVHJ1ZTsgfQ0KLSAg
ICANCi0gICAgdmlydHVhbCBUU2l6ZSBTaXplSGludCgpIGNvbnN0IHsgcmV0dXJuIFRTaXplKCk7
IH0gICAgDQotICAgIA0KLSAgICB2aXJ0dWFsIHZvaWQgRHJhdyhDV2ViQ29yZUdyYXBoaWNzQ29u
dGV4dCYgLyphR2MqLywgDQotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRSZWN0JiAvKmFS
ZWN0Ki8pIHsgfSAgICANCi0gICAgDQotICAgIHZpcnR1YWwgdm9pZCBJbnZhbGlkYXRlUmVjdChj
b25zdCBUUmVjdCYgLyphUmVjdCovLCANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRCb29sIC8qYURyYXdOb3cqLykgPSAwOyAgDQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorICAgIHZpcnR1YWwgVFNp
emUgU2l6ZUhpbnQoKSBjb25zdCB7IHJldHVybiBUU2l6ZSgpOyB9DQorDQorICAgIHZpcnR1YWwg
dm9pZCBEcmF3KENXZWJDb3JlR3JhcGhpY3NDb250ZXh0JiAvKmFHYyovLA0KKyAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUUmVjdCYgLyphUmVjdCovKSB7IH0NCisNCisgICAgdmlydHVhbCB2
b2lkIEludmFsaWRhdGVSZWN0KGNvbnN0IFRSZWN0JiAvKmFSZWN0Ki8sDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUQm9vbCAvKmFEcmF3Tm93Ki8pID0gMDsNCisNCiAgICAgdmly
dHVhbCB2b2lkIFNjcm9sbFRvKFRQb2ludCAvKmFQb2ludCovKSA9IDA7DQotICAgIA0KKw0KICAg
ICB2aXJ0dWFsIFRSZWN0IFZpc2libGVSZWN0KCkgY29uc3QgPSAwOw0KLSAgICANCisNCiAgICAg
dmlydHVhbCBUU2l6ZSBDb250ZW50U2l6ZSgpIGNvbnN0ID0gMDsNCiANCiAgICAgdmlydHVhbCB2
b2lkIFJlc2l6ZUNvbnRlbnQoVFNpemUgLyphU2l6ZSovKSA9IDA7DQpAQCAtMTQ3LDcgKzE0OSw3
IEBADQogICAgIHZpcnR1YWwgdm9pZCBTZXRTY3JvbGxCYXJzU3VwcHJlc3NlZChUQm9vbCAvKmFT
dXBwcmVzc2VkKi8sIFRCb29sIC8qYVJlcGFpbnRPblVuc3VwcHJlc3MqLykgPSAwOw0KIA0KICAg
ICB2aXJ0dWFsIHZvaWQgQWRkQ2hpbGQoTVdlYkNvcmVXaWRnZXQqIC8qYUNoaWxkKi8sIFRJbnQg
LyphWCovICwgVEludCAvKmFZKi8gKSA9IDA7DQotICAgIA0KKw0KICAgICB2aXJ0dWFsIFRJbnQg
U2NhbGluZ0ZhY3RvcigpIGNvbnN0ID0gMDsNCiANCiAgICAgaW5saW5lIFRQb2ludCBUb0RvY0Nv
b3Jkcyhjb25zdCBUUG9pbnQmIGFGcm9tKSBjb25zdA0KQEAgLTE1NSwxMyArMTU3LDEzIEBADQog
ICAgICAgICBUSW50IHogPSBTY2FsaW5nRmFjdG9yKCk7DQogICAgICAgICByZXR1cm4gVFBvaW50
KGFGcm9tLmlYKjEwMC96LGFGcm9tLmlZKjEwMC96KTsNCiAgICAgICAgIH0NCi0gICAgDQorDQog
ICAgIGlubGluZSBUU2l6ZSBUb0RvY0Nvb3Jkcyhjb25zdCBUU2l6ZSYgYUZyb20pIGNvbnN0DQog
ICAgICAgICB7DQogICAgICAgICBUSW50IHogPSBTY2FsaW5nRmFjdG9yKCk7DQogICAgICAgICBy
ZXR1cm4gVFNpemUoYUZyb20uaVdpZHRoKjEwMC96LGFGcm9tLmlIZWlnaHQqMTAwL3opOw0KLSAg
ICAgICAgfSAgICANCi0gICAgICAgIA0KKyAgICAgICAgfQ0KKw0KICAgICBpbmxpbmUgVFJlY3Qg
VG9Eb2NDb29yZHMoY29uc3QgVFJlY3QmIGFGcm9tKSBjb25zdA0KICAgICAgICAgew0KICAgICAg
ICAgcmV0dXJuIFRSZWN0KFRvRG9jQ29vcmRzKGFGcm9tLmlUbCksVG9Eb2NDb29yZHMoYUZyb20u
aUJyKSk7DQpAQCAtMTcyLDE4ICsxNzQsMTggQEANCiAgICAgICAgIFRJbnQgeiA9IFNjYWxpbmdG
YWN0b3IoKTsNCiAgICAgICAgIHJldHVybiBUUG9pbnQoYUZyb20uaVgqei8xMDAsYUZyb20uaVkq
ei8xMDApOw0KICAgICAgICAgfQ0KLSAgICANCisNCiAgICAgaW5saW5lIFRTaXplIFRvVmlld0Nv
b3Jkcyhjb25zdCBUU2l6ZSYgYUZyb20pIGNvbnN0DQogICAgICAgICB7DQogICAgICAgICBUSW50
IHogPSBTY2FsaW5nRmFjdG9yKCk7DQogICAgICAgICByZXR1cm4gVFNpemUoYUZyb20uaVdpZHRo
KnovMTAwLGFGcm9tLmlIZWlnaHQqei8xMDApOw0KLSAgICAgICAgfSAgICANCi0gICAgICAgIA0K
KyAgICAgICAgfQ0KKw0KICAgICBpbmxpbmUgVFJlY3QgVG9WaWV3Q29vcmRzKGNvbnN0IFRSZWN0
JiBhRnJvbSkgY29uc3QNCiAgICAgICAgIHsNCiAgICAgICAgIHJldHVybiBUUmVjdChUb1ZpZXdD
b29yZHMoYUZyb20uaVRsKSxUb1ZpZXdDb29yZHMoYUZyb20uaUJyKSk7DQotICAgICAgICB9ICAg
IA0KLSAgICANCisgICAgICAgIH0NCisNCiAgICAgaW5saW5lIFRCb29sIElzU2NhbGVkKCkgY29u
c3QgeyByZXR1cm4gU2NhbGluZ0ZhY3RvcigpIT0xMDA7IH0NCiAgIH07DQogDQpAQCAtMTk4LDMy
ICsyMDAsMzIgQEANCiBjbGFzcyBNV2ViQ29yZU9iamVjdFdpZGdldDogcHVibGljIE1XZWJDb3Jl
V2lkZ2V0DQogICAgIHsNCiAgICAgcHVibGljOiAvLyBDb25zdHJ1Y3RvciBhbmQgRGVjb25zdHJ1
dG9yDQotICAgIA0KKw0KICAgICAgICAgdmlydHVhbCB+TVdlYkNvcmVPYmplY3RXaWRnZXQoKSB7
fTsNCi0gICAgDQorDQogICAgIHB1YmxpYzogLy8gQ2xhc3MgTWV0aG9kcw0KLSAgICANCisNCiAg
ICAgICAgIC8vIE9iamVjdC9FbWJlZCByZWxhdGVkIG1ldGhvZHMNCiAgICAgLy8gUmV0dXJucyBF
VHJ1ZSBpZiB0aGUgd2lkZ2V0IGlzIGFjdGl2ZQ0KICAgICB2aXJ0dWFsIFRCb29sIElzQWN0aXZl
KCkgY29uc3QgPSAwOw0KLSAgICANCisNCiAgICAgLy8gRGVhY3RpdmF0ZXMgdGhlIHBsdWdpbg0K
ICAgICB2aXJ0dWFsIHZvaWQgRGVBY3RpdmF0ZSgpID0gMDsNCi0gICAgDQorDQogICAgIC8vIFNl
dHMgdGhlIGZvbnQNCiAgICAgdmlydHVhbCB2b2lkIFNldEZvbnQoQ0ZvbnQqIGFGb250KSA9IDA7
DQotICAgIA0KKw0KICAgICAvLyBTb3VuZHN0YXJ0IHJlbGF0ZWQgbWV0aG9kcw0KICAgICAvLyBQ
bGF5cyB0aGUgY29udGVudA0KICAgICB2aXJ0dWFsIHZvaWQgUGxheVBsdWdpbkNvbnRlbnQoY29u
c3QgVERlc0MmIGFSZXF1ZXN0VXJsKSA9IDA7DQotICAgIA0KLSAgICAvLyBTdG9wcyBwbGF5aW5n
IHRoZSBjb250ZW50ICAgICAgICANCisNCisgICAgLy8gU3RvcHMgcGxheWluZyB0aGUgY29udGVu
dA0KICAgICB2aXJ0dWFsIHZvaWQgU3RvcFBsdWdpbkNvbnRlbnQoY29uc3QgVERlc0MmIGFSZXF1
ZXN0VXJsKSA9IDA7DQotICAgIA0KLSAgICANCi0gICAgLy8gcmV0dXJuIEVUcnVlIGlmIHRoZSBw
bHVnaW4gaGFzIHJlc2l6ZWQgDQorDQorDQorICAgIC8vIHJldHVybiBFVHJ1ZSBpZiB0aGUgcGx1
Z2luIGhhcyByZXNpemVkDQogICAgIHZpcnR1YWwgVEJvb2wgSGFzUmVzaXplZCgpID0gMDsNCi0g
ICAgDQorDQogICAgIC8vIGNoZWNrIGlmIHRoZSBwbHVnaW4gaXMgYWJsZSB0byBhY2NlcHQgZm9j
dXMgZXZlbnQNCiAgICAgdmlydHVhbCBUQm9vbCBJc0ZvY3VzYWJsZSgpIGNvbnN0ID0gMDsNCiAN
CkluZGV4OiBXZWJDb3JlL0JXSU5TL1dFQkNPUkVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvQldJTlMvV0VCQ09SRVUuREVGCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL0JXSU5T
L1dFQkNPUkVVLkRFRgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMTU5ICsxLDE2MCBAQA0KIEVYUE9S
VFMNCi0JPz8xQ1dlYkNvcmVTZXR0aW5nc0BAVUFFQFhaIEAgMSBOT05BTUUgOyBDV2ViQ29yZVNl
dHRpbmdzOjp+Q1dlYkNvcmVTZXR0aW5ncyh2b2lkKQ0KLQk/QWN0aXZhdGVBY2Nlc3NLZXlzQENX
ZWJDb3JlQnJpZGdlQEBRQUVYVVRLZXlFdmVudEBAQFogQCAyIE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OkFjdGl2YXRlQWNjZXNzS2V5cyhzdHJ1Y3QgVEtleUV2ZW50KQ0KLQk/QWN0aXZh
dGVFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVlRQb2ludEBAQFogQCAzIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OkFjdGl2YXRlRXZlbnQoY2xhc3MgVFBvaW50ICYpDQotCT9BZGRE
YXRhQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZUJyaWRnZTo6QWRkRGF0YShjbGFzcyBURGVzQzggY29uc3QgJikNCi0JP0FkZEl0ZW1U
b0NhY2hlTEBUV2ViQ29yZUNhY2hlQEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5m
b0BAQUFWVERlc0M4QEBIQFogQCA1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6QWRkSXRl
bVRvQ2FjaGVMKGNsYXNzIE1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNsYXNzIFRE
ZXNDOCAmLCBpbnQpDQotCT9BZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBv
aW50QEBAWiBAIDYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250YWN0cyhj
bGFzcyBUUG9pbnQgJikNCi0JP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBRQUVYWFog
QCA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZvaWQpDQot
CT9BbHRUZXh0QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDggTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRUZXh0KHZvaWQp
DQotCT9BdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgOSBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVkKHZvaWQpIGNvbnN0
DQotCT9Cb2R5QmFja2dyb3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdiQEBYWiBA
IDEwIE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJvZHlCYWNrZ3JvdW5kQ29s
b3Iodm9pZCkNCi0JP0NhbkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgMTEgTk9O
QU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uodm9pZCkgY29uc3QNCi0JP0Ns
ZWFyRmluZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMTIgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6Q2xlYXJGaW5kKHZvaWQpDQotCT9DbGllbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUFB
Vk1XZWJDbGllbnRCcmlkZ2VAQFhaIEAgMTMgTk9OQU1FIDsgY2xhc3MgTVdlYkNsaWVudEJyaWRn
ZSAmIENXZWJDb3JlQnJpZGdlOjpDbGllbnQodm9pZCkNCi0JP0Nsb3NlVVJMQENXZWJDb3JlQnJp
ZGdlQEBRQUVYWFogQCAxNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbG9zZVVSTCh2
b2lkKQ0KLQk/Q29va2llQWRhcHRlckBUV2ViQ29yZUNvb2tpZUZhY3RvcnlAQFNBUEFWTVdlYkNv
cmVDb29raWVBZGFwdGVyQEBYWiBAIDE1IE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlQ29va2llQWRh
cHRlciAqIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6Q29va2llQWRhcHRlcih2b2lkKQ0KLQk/Q3Jl
YXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBI
QFogQCAxNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhF
bmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCkNCi0JP0NyZWF0ZUtIVE1MVmlld0BD
V2ViQ29yZUJyaWRnZUBAUUFFWEFBVk1XZWJDb3JlU2Nyb2xsVmlld0BASEhAWiBAIDE3IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZUtIVE1MVmlldyhjbGFzcyBNV2ViQ29yZVNj
cm9sbFZpZXcgJiwgaW50LCBpbnQpDQotCT9DdXJzaXZlRm9udEZhbWlseUBDV2ViQ29yZVNldHRp
bmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE4IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNv
cmVTZXR0aW5nczo6Q3Vyc2l2ZUZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0RlQWN0aXZhdGVF
dmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OkRlQWN0aXZhdGVFdmVudChpbnQpDQotCT9EZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2Vi
Q29yZVNldHRpbmdzQEBRQkVIWFogQCAyMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6
RGVmYXVsdEZpeGVkRm9udFNpemUodm9pZCkgY29uc3QNCi0JP0RlZmF1bHRGb250U2l6ZUBDV2Vi
Q29yZVNldHRpbmdzQEBRQkVIWFogQCAyMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6
RGVmYXVsdEZvbnRTaXplKHZvaWQpIGNvbnN0DQotCT9EZWZhdWx0VGV4dEVuY29kaW5nQENXZWJD
b3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMjIgTk9OQU1FIDsgY2xhc3MgVFB0ckMx
NiBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQotCT9E
ZWZlcnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50IENXZWJD
b3JlQnJpZGdlOjpEZWZlcnNUaW1lcnModm9pZCkNCi0JP0RldGVybWluZUN1cnNvclBvc2l0aW9u
QENXZWJDb3JlQnJpZGdlQEBRQUVIQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZU
UmVjdEBAMUFBVlRQb2ludEBASEBaIEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpE
ZXRlcm1pbmVDdXJzb3JQb3NpdGlvbihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYs
IGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQpDQotCT9E
aWROb3RPcGVuVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAyNSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29u
c3QgJikNCi0JP0RvbWFpbkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCAyNiBO
T05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkgY29uc3QN
Ci0JP0RyYXdSZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNXZWJDb3JlR3Jh
cGhpY3NDb250ZXh0QEBAWiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRyYXdS
ZWN0KGNsYXNzIFRSZWN0IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICYp
DQotCT9EdW1wUmVuZGVyVHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjggTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCi0JP0VuZEBDV2ViQ29y
ZUJyaWRnZUBAUUFFWFhaIEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RW5kKHZv
aWQpDQotCT9FeGVjdXRlU2NyaXB0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFog
QCAzMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVjdXRlU2NyaXB0KGNsYXNzIFRE
ZXNDMTYgY29uc3QgJikNCi0JP0ZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNB
UEFWTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFhaIEAgMzEgTk9OQU1FIDsgY2xhc3MgTVdl
YkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgKiBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6RmFj
dG9yeSh2b2lkKQ0KLQk/RmFjdG9yeUBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QEBTQVBB
Vk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFhaIEAgMzIgTk9OQU1FIDsgY2xhc3MgTVdl
YkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk6
OkZhY3Rvcnkodm9pZCkNCi0JP0ZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBT
QVBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMyBOT05BTUUgOyBjbGFzcyBN
V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKiBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6
OkZhY3Rvcnkodm9pZCkNCi0JP0ZhbnRhc3lGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFC
RT9BVlRQdHJDMTZAQFhaIEAgMzQgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRp
bmdzOjpGYW50YXN5Rm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/RmFzdEZpcnN0RGlzcGxheU1v
ZGVAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDM1IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRn
ZTo6RmFzdEZpcnN0RGlzcGxheU1vZGUodm9pZCkgY29uc3QNCi0JP0ZpbmRMaW5rc09mVHlwZUBD
V2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFVUV2ViQ29yZUxpbmtJ
dGVtQEBAQEBaIEAgMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RmluZExpbmtzT2ZU
eXBlKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PHN0cnVjdCBUV2ViQ29yZUxp
bmtJdGVtPiAmKQ0KLQk/Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQ
dHJDMTZAQFhaIEAgMzcgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpG
aXhlZEZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1Np
emVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAzOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpGb3JjZUxheW91dEFkanVzdGluZ1ZpZXdTaXplKGludCkNCi0JP0dldFBhZ2VEYXRhTEBD
V2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlQdHJAVkNXZWJDb3JlUGFnZURhdGFJdGVtQEBA
QEhAWiBAIDM5IE5PTkFNRSA7IGNsYXNzIENBcnJheVB0cjxjbGFzcyBDV2ViQ29yZVBhZ2VEYXRh
SXRlbT4gKiBDV2ViQ29yZUJyaWRnZTo6R2V0UGFnZURhdGFMKGludCkNCi0JP0dldFRleHRDb250
ZW50TEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAWFogQCA0MCBOT05BTUUgOyBjbGFz
cyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KLQk/R2V0
VXJsT2ZOb2RlSW5Gb2N1c0xAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFBVlRQb2lu
dEBAQFogQCA0MSBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFVy
bE9mTm9kZUluRm9jdXNMKGNsYXNzIFRQb2ludCAmKSBjb25zdA0KLQk/SGFzUGVuZGluZ0xheW91
dEBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdl
OjpIYXNQZW5kaW5nTGF5b3V0KHZvaWQpIGNvbnN0DQotCT9IaXN0b3J5UHJvdmlkZXJAVFdlYkNv
cmVIaXN0b3J5QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5PTkFNRSA7
IGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpIaXN0b3J5
UHJvdmlkZXIodm9pZCkNCi0JP0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhIQFogQCA0
NCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KLQk/SW1hZ2VU
eXBlQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5PTkFNRSA7
IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZvaWQpDQot
CT9JbWFnZXNJblJlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4RmxhdEBWVFdl
YkNvcmVJbWFnZUNhcnJpZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0FycmF5Rml4Rmxh
dDxjbGFzcyBUV2ViQ29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VzSW5S
ZWN0KGludCkNCi0JP0luaXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVkNX
ZWJDb3JlU2V0dGluZ3NAQEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5p
dGlhbGl6ZVNldHRpbmdzKGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3QgJikNCi0JP0luc3Rh
bGxJbkZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBA
IDQ4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJbkZyYW1lKGNsYXNzIE1X
ZWJDb3JlU2Nyb2xsVmlldyAmKQ0KLQk/SXNGcmFtZVNldEBDV2ViQ29yZUJyaWRnZUBAUUJFSFha
IEAgNDkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpJc0ZyYW1lU2V0KHZvaWQpIGNvbnN0
DQotCT9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1MCBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QNCi0JP0phdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAg
NTEgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRFbmFibGVkQENXZWJDb3Jl
U2V0dGluZ3NAQFFCRUhYWiBAIDUyIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZh
U2NyaXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KLQk/SnVtcFRvU2VsZWN0aW9uQENXZWJDb3JlQnJp
ZGdlQEBRQUVYWFogQCA1MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpKdW1wVG9TZWxl
Y3Rpb24odm9pZCkNCi0JP0tleUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVIVVRLZXlFdmVudEBA
SEBaIEAgNTQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpLZXlFdmVudChzdHJ1Y3QgVEtl
eUV2ZW50LCBpbnQpDQotCT9Mb2FkSW1hZ2VzQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1NSBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpMb2FkSW1hZ2VzKHZvaWQpDQotCT9Mb2FkZXJD
b250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBUEFWTVdlYkNvcmVMb2FkZXJDb250
YWluZXJAQFhaIEAgNTYgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKiBU
V2ViQ29yZUxvYWRlckNvbnRhaW5lcjo6TG9hZGVyQ29udGFpbmVyKHZvaWQpDQotCT9NaW5pbXVt
Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTcgTk9OQU1FIDsgaW50IENXZWJD
b3JlU2V0dGluZ3M6Ok1pbmltdW1Gb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/TWluaW11bUxvZ2lj
YWxGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1OCBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVTZXR0aW5nczo6TWluaW11bUxvZ2ljYWxGb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/TmFt
ZUBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA1OSBOT05BTUUgOyBjbGFzcyBU
UHRyQzE2IENXZWJDb3JlQnJpZGdlOjpOYW1lKHZvaWQpIGNvbnN0DQotCT9OYXZpZ2FibGVOb2Rl
VW5kZXJDdXJzb3JAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhBQVZUUG9pbnRAQEFBVzRUV2ViQ29yZUZv
Y3VzZWRFbGVtZW50VHlwZUBAQUFWVFJlY3RAQEBaIEAgNjAgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpOYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdl
YkNvcmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCi0JP05lZWRz
TGF5b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVC
cmlkZ2U6Ok5lZWRzTGF5b3V0KHZvaWQpIGNvbnN0DQotCT9OZXdMQENXZWJDb3JlQnJpZGdlQEBT
QVBBVjFAQUFWTVdlYkNsaWVudEJyaWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBDV2ViQ29y
ZUJyaWRnZSAqIENXZWJDb3JlQnJpZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlkZ2UgJikN
Ci0JP05ld0xAQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0R2NAQFBB
VkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUgOyBjbGFz
cyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpOZXdM
KGNsYXNzIENGYnNCaXRHYyAmLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Ny
b2xsVmlldyAqKQ0KLQk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQFBBVkNG
YnNCaXRtYXBEZXZpY2VAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFog
QCA2NCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3Jh
cGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3MgQ0Zic0Jp
dG1hcCAqLCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgKikNCi0JP05ld0xAQ1dlYkNvcmVTZXR0
aW5nc0BAU0FQQVYxQFhaIEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyAqIENX
ZWJDb3JlU2V0dGluZ3M6Ok5ld0wodm9pZCkNCi0JP05vdGlmeURlY29kaW5nRXJyb3JAQ1dlYkNv
cmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZvaWQpDQotCT9Ob3Rp
ZnlGaW5pc2hlZEBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NyBOT05B
TUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeUZpbmlzaGVkKHZv
aWQpDQotCT9Ob3RpZnlVcGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFha
IEAgNjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlV
cGRhdGUodm9pZCkNCi0JP051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0BDV2ViQ29yZUJyaWRn
ZUBAUUFFSFhaIEAgNjkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOdW1QZW5kaW5nT3JM
b2FkaW5nUmVxdWVzdHModm9pZCkNCi0JP09wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZU
RGVzQzE2QEBIMDBBQlZURGF0ZVRpbWVAQEBaIEAgNzAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJy
aWRnZTo6T3BlblVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgY2xhc3MgVERlc0MxNiBj
b25zdCAmLCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRlVGltZSBjb25zdCAmKQ0K
LQk/UGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBUEFWTVdlYkNvcmVQbHVn
aW5IYW5kbGVyQEBYWiBAIDcxIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAq
IFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2luSGFuZGxlcih2b2lkKQ0KLQk/UGx1Z2luc0Vu
YWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNzIgTk9OQU1FIDsgaW50IENXZWJDb3Jl
U2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9Qb2ludGVyRXZlbnRAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhVVFBvaW50ZXJFdmVudEBAQFogQCA3MyBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoc3RydWN0IFRQb2ludGVyRXZlbnQpDQotCT9Qb2lu
dGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhXNFRUeXBlQFRQb2ludGVyRXZlbnRAQEFCVlRQ
b2ludEBAQFogQCA3NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQo
ZW51bSBUUG9pbnRlckV2ZW50OjpUVHlwZSwgY2xhc3MgVFBvaW50IGNvbnN0ICYpDQotCT9QcmVw
YXJlRm9yRXhpdEBDV2ViQ29yZUJyaWRnZUBAU0FYWFogQCA3NSBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpQcmVwYXJlRm9yRXhpdCh2b2lkKQ0KLQk/UHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2b2lkKQ0KLQk/UmF3RGF0YUBUV2ViQ29yZUltYWdl
Q2FycmllckBAUUFFQUFWVFB0ckM4QEBYWiBAIDc3IE5PTkFNRSA7IGNsYXNzIFRQdHJDOCAmIFRX
ZWJDb3JlSW1hZ2VDYXJyaWVyOjpSYXdEYXRhKHZvaWQpDQotCT9SZWFwcGx5U3R5bGVzRm9yRGV2
aWNlVHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDc4
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBl
KGVudW0gVFdlYkNvcmVEZXZpY2VUeXBlKQ0KLQk/UmVmZXJyZXJAQ1dlYkNvcmVCcmlkZ2VAQFFC
RT9BVlRQdHJDMTZAQFhaIEAgNzkgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRn
ZTo6UmVmZXJyZXIodm9pZCkgY29uc3QNCi0JP1JlbW92ZUZpbGVOYW1lQENXZWJDb3JlQnJpZGdl
QEBRQUVYQUFWVFBvaW50QEBAWiBAIDgwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJl
bW92ZUZpbGVOYW1lKGNsYXNzIFRQb2ludCAmKQ0KLQk/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3Jl
QnJpZGdlQEBRQUVYWFogQCA4MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZW1vdmVG
cm9tRnJhbWUodm9pZCkNCi0JP1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVjBraHRt
bEBAWFogQCA4MiBOT05BTUUgOyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJDb3JlQnJp
ZGdlOjpSZW5kZXJQYXJ0KHZvaWQpIGNvbnN0DQotCT9SZW5kZXJlckBUV2ViQ29yZUltYWdlQ2Fy
cmllckBAUUFFUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7IGNsYXNz
IE1XZWJDb3JlSW1hZ2VSZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5kZXJlcih2
b2lkKQ0KLQk/UmVzb2x2ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMxNkBAQUJWVERl
c0MxNkBAMEBaIEAgODQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpS
ZXNvbHZlVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikN
Ci0JP1Jlc3RvcmVEb2N1bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4NSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0ZSh2b2lkKQ0KLQk/
U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBA
IDg2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2Fuc1NlcmlmRm9u
dEZhbWlseSh2b2lkKSBjb25zdA0KLQk/U2F2ZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhYWiBAIDg3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNhdmVEb2N1bWVudFN0
YXRlKHZvaWQpDQotCT9TYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFha
IEAgODggTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlNhdmVSYXdEYXRhRW5hYmxlZCh2
b2lkKSBjb25zdA0KLQk/U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhI
QFogQCA4OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY2FsaW5nRmFjdG9yQ2hhbmdl
ZChpbnQpDQotCT9TY3JvbGxUb0FuY2hvckBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZA
QEBaIEAgOTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2Nyb2xsVG9BbmNob3IoY2xh
c3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2Nyb2xsVG9BbmNob3JXaXRoVVJMQENXZWJDb3JlQnJp
ZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpTY3JvbGxUb0FuY2hvcldpdGhVUkwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2VhcmNo
QWdhaW5AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkyIE5PTkFNRSA7
IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoQWdhaW4oY2xhc3MgVERlc0MxNiBjb25zdCAmLCBp
bnQsIGludCwgaW50KQ0KLQk/U2VhcmNoRm9yQENXZWJDb3JlQnJpZGdlQEBRQUVIQUJWVERlc0Mx
NkBASEhIQFogQCA5MyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlNlYXJjaEZvcihjbGFz
cyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQotCT9TZWxlY3Rpb25Db2xvckBDV2Vi
Q29yZUJyaWRnZUBAUUFFP0FWVFJnYkBAWFogQCA5NCBOT05BTUUgOyBjbGFzcyBUUmdiIENXZWJD
b3JlQnJpZGdlOjpTZWxlY3Rpb25Db2xvcih2b2lkKQ0KLQk/U2VuZFJlc2l6ZUV2ZW50QENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCA5NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5k
UmVzaXplRXZlbnQodm9pZCkNCi0JP1NlbmRTY3JvbGxFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFF
WFhaIEAgOTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2VuZFNjcm9sbEV2ZW50KHZv
aWQpDQotCT9TZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBA
WFogQCA5NyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9u
dEZhbWlseSh2b2lkKSBjb25zdA0KLQk/U2V0QXV0b1JlZnJlc2hFbmFibGVkQENXZWJDb3JlU2V0
dGluZ3NAQFFBRVhIQFogQCA5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEF1
dG9SZWZyZXNoRW5hYmxlZChpbnQpDQotCT9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdlQ2FsbGJh
Y2tXcmFwcGVyQEBRQUVYUEFWQ2FjaGVkSW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5OSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNrKGNsYXNz
IGtodG1sOjpDYWNoZWRJbWFnZUNhbGxiYWNrICopDQotCT9TZXRDb29raWVBZGFwdGVyQFRXZWJD
b3JlQ29va2llRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDEwMCBO
T05BTUUgOyB2b2lkIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRlcihjbGFz
cyBNV2ViQ29yZUNvb2tpZUFkYXB0ZXIgKikNCi0JP1NldEN1cnNpdmVGb250RmFtaWx5QENXZWJD
b3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIENXZWJD
b3JlU2V0dGluZ3M6OlNldEN1cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikN
Ci0JP1NldERlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAx
MDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRGb250U2l6
ZShpbnQpDQotCT9TZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDEwMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGb250U2l6ZShp
bnQpDQotCT9TZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZU
RGVzQzE2QEBAWiBAIDEwNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1
bHRUZXh0RW5jb2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RGVmZXJzVGltZXJz
QENXZWJDb3JlQnJpZGdlQEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6U2V0RGVmZXJzVGltZXJzKGludCkNCi0JP1NldERyYXdzQmFja2dyb3VuZEBDV2ViQ29yZUJy
aWRnZUBAUUFFWEhAWiBAIDEwNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXREcmF3
c0JhY2tncm91bmQoaW50KQ0KLQk/U2V0RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0RmFudGFzeUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RmFz
dEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMDggTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0RmFzdEZpcnN0RGlzcGxheU1vZGUoaW50KQ0KLQk/U2V0
Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEw
OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEZpeGVkRm9udEZhbWlseShjbGFz
cyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRGb250U2l6ZUxldmVsQENXZWJDb3JlQnJpZGdlQEBR
QUVYSEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvbnRTaXplTGV2
ZWwoaW50KQ0KLQk/U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVY
QUJWVERlc0MxNkBAMEBaIEAgMTExIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZv
cm1Db250cm9sVGV4dEJ5TmFtZShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYg
Y29uc3QgJikNCi0JP1NldEhpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBWFBBVk1X
ZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBAWiBAIDExMiBOT05BTUUgOyB2b2lkIFRXZWJDb3JlSGlz
dG9yeTo6U2V0SGlzdG9yeVByb3ZpZGVyKGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICop
DQotCT9TZXRKYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTEzIE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YUVuYWJsZWQoaW50KQ0KLQk/U2V0SmF2
YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVY
SEBaIEAgMTE0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShpbnQpDQotCT9TZXRKYXZhU2NyaXB0RW5hYmxlZEBD
V2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0
aW5nczo6U2V0SmF2YVNjcmlwdEVuYWJsZWQoaW50KQ0KLQk/U2V0TWF4QmlkaVdpZHRoQENXZWJD
b3JlQnJpZGdlQEBRQUVYSEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNl
dE1heEJpZGlXaWR0aChpbnQpDQotCT9TZXRNaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEhAWiBAIDExNyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmlt
dW1Gb250U2l6ZShpbnQpDQotCT9TZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0
dGluZ3NAQFFBRVhIQFogQCAxMTggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRN
aW5pbXVtTG9naWNhbEZvbnRTaXplKGludCkNCi0JP1NldE5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhBQlZURGVzQzE2QEBAWiBAIDExOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRO
YW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldE5lZWRzTGF5b3V0QENXZWJDb3JlQnJp
ZGdlQEBRQUVYWFogQCAxMjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TmVlZHNM
YXlvdXQodm9pZCkNCi0JP1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAx
MjEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENXZWJDb3Jl
QnJpZGdlICopDQotCT9TZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBa
IEAgMTIyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQo
aW50KQ0KLQk/U2V0UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVlJlbmRlclBhcnRA
a2h0bWxAQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFJlbmRlclBh
cnQoY2xhc3Mga2h0bWw6OlJlbmRlclBhcnQgKikNCi0JP1NldFNhbnNTZXJpZkZvbnRGYW1pbHlA
Q1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVTZXR0aW5nczo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNv
bnN0ICYpDQotCT9TZXRTYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhA
WiBAIDEyNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFNhdmVSYXdEYXRhRW5h
YmxlZChpbnQpDQotCT9TZXRTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFC
VlREZXNDMTZAQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2Vy
aWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFNob3VsZENyZWF0ZVJl
bmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEyNyBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoaW50KQ0KLQk/U2V0U2hvdWxkUHJp
bnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTI4IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhpbnQpDQotCT9T
ZXRTdGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBa
IEAgMTI5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U3RhbmRhcmRGb250RmFt
aWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25A
Q1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTMwIE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVTZXR0aW5nczo6U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjbGFzcyBURGVzQzE2
IGNvbnN0ICYpDQotCT9TZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QFRXZWJDb3JlRm9ybUNv
bnRyb2xGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAQFogQCAxMzEg
Tk9OQU1FIDsgdm9pZCBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6U2V0V2ViQ29yZUZvcm1D
b250cm9sRmFjdG9yeShjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqKQ0KLQk/U2V0
V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlA
QFNBWFBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTMyIE5PTkFNRSA7IHZv
aWQgVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTo6U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJG
YWN0b3J5KGNsYXNzIE1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgKikNCi0JP1NldFdlYkNv
cmVMb2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBWFBBVk1XZWJDb3Jl
TG9hZGVyQ29udGFpbmVyQEBAWiBAIDEzMyBOT05BTUUgOyB2b2lkIFRXZWJDb3JlTG9hZGVyQ29u
dGFpbmVyOjpTZXRXZWJDb3JlTG9hZGVyQ29udGFpbmVyKGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29u
dGFpbmVyICopDQotCT9TZXRXZWJDb3JlUGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRs
ZXJAQFNBWFBBVk1XZWJDb3JlUGx1Z2luSGFuZGxlckBAQFogQCAxMzQgTk9OQU1FIDsgdm9pZCBU
V2ViQ29yZVBsdWdpbkhhbmRsZXI6OlNldFdlYkNvcmVQbHVnaW5IYW5kbGVyKGNsYXNzIE1XZWJD
b3JlUGx1Z2luSGFuZGxlciAqKQ0KLQk/U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAVFdl
YkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rv
cnlAQEBaIEAgMTM1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5OjpT
ZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeShjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZh
Y3RvcnkgKikNCi0JP1NldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYSEBaIEAgMTM2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0V2ls
bExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KGludCkNCi0JP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BD
V2ViQ29yZUJyaWRnZUBAUUFFSFhaIEAgMTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6
U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKHZvaWQpDQotCT9TaG91bGRQcmludEJhY2tncm91bmRzQENX
ZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5n
czo6U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyh2b2lkKSBjb25zdA0KLQk/U2hvd2luZ0Zhc3RQcmV2
aWV3QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpTaG93aW5nRmFzdFByZXZpZXcodm9pZCkgY29uc3QNCi0JP1N0YW5kYXJkRm9udEZhbWls
eUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUgOyBjbGFz
cyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lkKSBjb25z
dA0KLQk/VGFiYmVkTmF2aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdlYk5hdkRpcmVj
dGlvbkBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEgTk9OQU1FIDsg
aW50IENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5hdkRpcmVjdGlv
biwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQotCT9UZXh0RW5jb2Rp
bmdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNpZ25lZCBpbnQgQ1dl
YkNvcmVCcmlkZ2U6OlRleHRFbmNvZGluZyh2b2lkKSBjb25zdA0KLQk/VVJMQENXZWJDb3JlQnJp
ZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJD
b3JlQnJpZGdlOjpVUkwodm9pZCkgY29uc3QNCi0JP1VSTFdpdGhSZWxhdGl2ZVN0cmluZ0BDV2Vi
Q29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAQFogQCAxNDQgTk9OQU1FIDsg
Y2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpVUkxXaXRoUmVsYXRpdmVTdHJpbmcoY2xh
c3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/VXBkYXRlQWxsVmlld3NAQ1dlYkNvcmVCcmlkZ2VAQFNB
WFhaIEAgMTQ1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlVwZGF0ZUFsbFZpZXdzKHZv
aWQpDQotCT9VcmxAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgMTQ2
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6VXJsKHZvaWQp
DQotCT9Vc2VyU3R5bGVTaGVldExvY2F0aW9uQENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJD
MTZAQFhaIEAgMTQ3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6VXNl
clN0eWxlU2hlZXRMb2NhdGlvbih2b2lkKSBjb25zdA0KLQk/V2lsbExvYWRJbWFnZXNBdXRvbWF0
aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDE0OCBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVTZXR0aW5nczo6V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KHZvaWQpIGNvbnN0DQotCT9o
YXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZp
ZXJAMkBAWiBAIDE0OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShj
bGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29u
c3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRl
bnRpZmllckAyQEBaIEAgMTUwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBj
b25zdA0KLQk/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDE1MSBOT05BTUUgOyBib29s
IEtKUzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lkKSBjb25zdA0KLQk/Y2xhc3NJbmZvQE9iamVjdEBL
SlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgMTUyIE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNz
SW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0JP2hhc093
blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTUzIE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9O
UEFWRXhlY1N0YXRlQDJASUBaIEAgMTU0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1By
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP3By
b3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBf
TkBaIEAgMTU1IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6
cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCi0JP0dldE5leHRSZW5kZXJU
ZXh0Rm9yU21hcnRMaW5rc0xAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFBSEBaIEAg
MTU2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRSZW5kZXJU
ZXh0Rm9yU21hcnRMaW5rc0woaW50ICYpDQotCT9HZXRSZW5kZXJUZXh0QXJlYUBDV2ViQ29yZUJy
aWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1NyBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBURGVzQzE2
IGNvbnN0ICYsIGNsYXNzIFJBcnJheTxjbGFzcyBUUmVjdD4gJikNCisgICAgPz8xQ1dlYkNvcmVT
ZXR0aW5nc0BAVUFFQFhaIEAgMSBOT05BTUUgOyBDV2ViQ29yZVNldHRpbmdzOjp+Q1dlYkNvcmVT
ZXR0aW5ncyh2b2lkKQ0KKyAgICA/QWN0aXZhdGVBY2Nlc3NLZXlzQENXZWJDb3JlQnJpZGdlQEBR
QUVYVVRLZXlFdmVudEBAQFogQCAyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFjdGl2
YXRlQWNjZXNzS2V5cyhzdHJ1Y3QgVEtleUV2ZW50KQ0KKyAgICA/QWN0aXZhdGVFdmVudEBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFBVlRQb2ludEBAQFogQCAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OkFjdGl2YXRlRXZlbnQoY2xhc3MgVFBvaW50ICYpDQorICAgID9BZGREYXRhQENXZWJD
b3JlQnJpZGdlQEBRQUVYQUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJy
aWRnZTo6QWRkRGF0YShjbGFzcyBURGVzQzggY29uc3QgJikNCisgICAgP0FkZEl0ZW1Ub0NhY2hl
TEBUV2ViQ29yZUNhY2hlQEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5mb0BAQUFW
VERlc0M4QEBIQFogQCA1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6QWRkSXRlbVRvQ2Fj
aGVMKGNsYXNzIE1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNsYXNzIFREZXNDOCAm
LCBpbnQpDQorICAgID9BZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50
QEBAWiBAIDYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250YWN0cyhjbGFz
cyBUUG9pbnQgJikNCisgICAgP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBRQUVYWFog
QCA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZvaWQpDQor
ICAgID9BbHRUZXh0QFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDgg
Tk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRUZXh0KHZv
aWQpDQorICAgID9BdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAg
OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVkKHZvaWQp
IGNvbnN0DQorICAgID9Cb2R5QmFja2dyb3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZU
UmdiQEBYWiBAIDEwIE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJvZHlCYWNr
Z3JvdW5kQ29sb3Iodm9pZCkNCisgICAgP0NhbkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRnZUBAUUJF
SFhaIEAgMTEgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uodm9pZCkg
Y29uc3QNCisgICAgP0NsZWFyRmluZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMTIgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q2xlYXJGaW5kKHZvaWQpDQorICAgID9DbGllbnRAQ1dl
YkNvcmVCcmlkZ2VAQFFBRUFBVk1XZWJDbGllbnRCcmlkZ2VAQFhaIEAgMTMgTk9OQU1FIDsgY2xh
c3MgTVdlYkNsaWVudEJyaWRnZSAmIENXZWJDb3JlQnJpZGdlOjpDbGllbnQodm9pZCkNCisgICAg
P0Nsb3NlVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxNCBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpDbG9zZVVSTCh2b2lkKQ0KKyAgICA/Q29va2llQWRhcHRlckBUV2ViQ29yZUNv
b2tpZUZhY3RvcnlAQFNBUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBYWiBAIDE1IE5PTkFNRSA7
IGNsYXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6Q29v
a2llQWRhcHRlcih2b2lkKQ0KKyAgICA/Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIQFogQCAxNiBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYs
IGludCkNCisgICAgP0NyZWF0ZUtIVE1MVmlld0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVk1XZWJD
b3JlU2Nyb2xsVmlld0BASEhAWiBAIDE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNy
ZWF0ZUtIVE1MVmlldyhjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgJiwgaW50LCBpbnQpDQorICAg
ID9DdXJzaXZlRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBA
IDE4IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6Q3Vyc2l2ZUZvbnRG
YW1pbHkodm9pZCkgY29uc3QNCisgICAgP0RlQWN0aXZhdGVFdmVudEBDV2ViQ29yZUJyaWRnZUBA
UUFFWEhAWiBAIDE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRlQWN0aXZhdGVFdmVu
dChpbnQpDQorICAgID9EZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVI
WFogQCAyMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZpeGVkRm9udFNp
emUodm9pZCkgY29uc3QNCisgICAgP0RlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBR
QkVIWFogQCAyMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXpl
KHZvaWQpIGNvbnN0DQorICAgID9EZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NA
QFFCRT9BVlRQdHJDMTZAQFhaIEAgMjIgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNl
dHRpbmdzOjpEZWZhdWx0VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQorICAgID9EZWZlcnNUaW1l
cnNAQ1dlYkNvcmVCcmlkZ2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdl
OjpEZWZlcnNUaW1lcnModm9pZCkNCisgICAgP0RldGVybWluZUN1cnNvclBvc2l0aW9uQENXZWJD
b3JlQnJpZGdlQEBRQUVIQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBA
MUFBVlRQb2ludEBASEBaIEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpEZXRlcm1p
bmVDdXJzb3JQb3NpdGlvbihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGNsYXNz
IFRSZWN0ICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQpDQorICAgID9EaWRO
b3RPcGVuVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAyNSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3Qg
JikNCisgICAgP0RvbWFpbkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCAyNiBO
T05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkgY29uc3QN
CisgICAgP0RyYXdSZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0QEBAWiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRy
YXdSZWN0KGNsYXNzIFRSZWN0IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0
ICYpDQorICAgID9EdW1wUmVuZGVyVHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjggTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCisgICAgP0Vu
ZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6RW5kKHZvaWQpDQorICAgID9FeGVjdXRlU2NyaXB0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJW
VERlc0MxNkBAQFogQCAzMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVjdXRlU2Ny
aXB0KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP0ZhY3RvcnlAVFdlYkNvcmVGb3JtQ29u
dHJvbEZhY3RvcnlAQFNBUEFWTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFhaIEAgMzEgTk9O
QU1FIDsgY2xhc3MgTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgKiBUV2ViQ29yZUZvcm1Db250
cm9sRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFhaIEAgMzIg
Tk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlSW1h
Z2VSZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhY3RvcnlAVFdlYkNvcmVU
ZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAWFog
QCAzMyBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKiBUV2ViQ29y
ZVRleHRSZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhbnRhc3lGb250RmFt
aWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzQgTk9OQU1FIDsgY2xh
c3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGYW50YXN5Rm9udEZhbWlseSh2b2lkKSBjb25z
dA0KKyAgICA/RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDM1
IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6RmFzdEZpcnN0RGlzcGxheU1vZGUodm9pZCkg
Y29uc3QNCisgICAgP0ZpbmRMaW5rc09mVHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXND
MTZAQEFBVj8kUkFycmF5QFVUV2ViQ29yZUxpbmtJdGVtQEBAQEBaIEAgMzYgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6RmluZExpbmtzT2ZUeXBlKGNsYXNzIFREZXNDMTYgY29uc3QgJiwg
Y2xhc3MgUkFycmF5PHN0cnVjdCBUV2ViQ29yZUxpbmtJdGVtPiAmKQ0KKyAgICA/Rml4ZWRGb250
RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzcgTk9OQU1FIDsg
Y2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGaXhlZEZvbnRGYW1pbHkodm9pZCkgY29u
c3QNCisgICAgP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhIQFogQCAzOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGb3JjZUxheW91dEFkanVz
dGluZ1ZpZXdTaXplKGludCkNCisgICAgP0dldFBhZ2VEYXRhTEBDV2ViQ29yZUJyaWRnZUBAUUFF
UEFWPyRDQXJyYXlQdHJAVkNXZWJDb3JlUGFnZURhdGFJdGVtQEBAQEhAWiBAIDM5IE5PTkFNRSA7
IGNsYXNzIENBcnJheVB0cjxjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbT4gKiBDV2ViQ29yZUJy
aWRnZTo6R2V0UGFnZURhdGFMKGludCkNCisgICAgP0dldFRleHRDb250ZW50TEBDV2ViQ29yZUJy
aWRnZUBAUUFFUEFWSEJ1ZkMxNkBAWFogQCA0MCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dl
YkNvcmVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KKyAgICA/R2V0VXJsT2ZOb2RlSW5G
b2N1c0xAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFBVlRQb2ludEBAQFogQCA0MSBO
T05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFVybE9mTm9kZUluRm9j
dXNMKGNsYXNzIFRQb2ludCAmKSBjb25zdA0KKyAgICA/SGFzUGVuZGluZ0xheW91dEBDV2ViQ29y
ZUJyaWRnZUBAUUJFSFhaIEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpIYXNQZW5k
aW5nTGF5b3V0KHZvaWQpIGNvbnN0DQorICAgID9IaXN0b3J5UHJvdmlkZXJAVFdlYkNvcmVIaXN0
b3J5QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5PTkFNRSA7IGNsYXNz
IE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpIaXN0b3J5UHJvdmlk
ZXIodm9pZCkNCisgICAgP0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhIQFogQCA0NCBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KKyAgICA/SW1hZ2VU
eXBlQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5PTkFNRSA7
IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZvaWQpDQor
ICAgID9JbWFnZXNJblJlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4RmxhdEBW
VFdlYkNvcmVJbWFnZUNhcnJpZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0FycmF5Rml4
RmxhdDxjbGFzcyBUV2ViQ29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6SW1hZ2Vz
SW5SZWN0KGludCkNCisgICAgP0luaXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRnZUBAUUFF
WEFCVkNXZWJDb3JlU2V0dGluZ3NAQEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6SW5pdGlhbGl6ZVNldHRpbmdzKGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3QgJikNCisg
ICAgP0luc3RhbGxJbkZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxW
aWV3QEBAWiBAIDQ4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJbkZyYW1l
KGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmKQ0KKyAgICA/SXNGcmFtZVNldEBDV2ViQ29yZUJy
aWRnZUBAUUJFSFhaIEAgNDkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpJc0ZyYW1lU2V0
KHZvaWQpIGNvbnN0DQorICAgID9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFog
QCA1MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29u
c3QNCisgICAgP0phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUJFSFhaIEAgNTEgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCisgICAgP0phdmFT
Y3JpcHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUyIE5PTkFNRSA7IGludCBD
V2ViQ29yZVNldHRpbmdzOjpKYXZhU2NyaXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KKyAgICA/SnVt
cFRvU2VsZWN0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1MyBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpKdW1wVG9TZWxlY3Rpb24odm9pZCkNCisgICAgP0tleUV2ZW50QENXZWJD
b3JlQnJpZGdlQEBRQUVIVVRLZXlFdmVudEBASEBaIEAgNTQgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpLZXlFdmVudChzdHJ1Y3QgVEtleUV2ZW50LCBpbnQpDQorICAgID9Mb2FkSW1hZ2Vz
QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpMb2FkSW1hZ2VzKHZvaWQpDQorICAgID9Mb2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJD
b250YWluZXJAQFNBUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJAQFhaIEAgNTYgTk9OQU1FIDsg
Y2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKiBUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjo6
TG9hZGVyQ29udGFpbmVyKHZvaWQpDQorICAgID9NaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0
aW5nc0BAUUJFSFhaIEAgNTcgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Ok1pbmltdW1G
b250U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/TWluaW11bUxvZ2ljYWxGb250U2l6ZUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkVIWFogQCA1OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6TWlu
aW11bUxvZ2ljYWxGb250U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/TmFtZUBDV2ViQ29yZUJyaWRn
ZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA1OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3Jl
QnJpZGdlOjpOYW1lKHZvaWQpIGNvbnN0DQorICAgID9OYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JA
Q1dlYkNvcmVCcmlkZ2VAQFFCRUhBQVZUUG9pbnRAQEFBVzRUV2ViQ29yZUZvY3VzZWRFbGVtZW50
VHlwZUBAQUFWVFJlY3RAQEBaIEAgNjAgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOYXZp
Z2FibGVOb2RlVW5kZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdlYkNvcmVGb2N1c2Vk
RWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCisgICAgP05lZWRzTGF5b3V0QENX
ZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5l
ZWRzTGF5b3V0KHZvaWQpIGNvbnN0DQorICAgID9OZXdMQENXZWJDb3JlQnJpZGdlQEBTQVBBVjFA
QUFWTVdlYkNsaWVudEJyaWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUJyaWRn
ZSAqIENXZWJDb3JlQnJpZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlkZ2UgJikNCisgICAg
P05ld0xAQ1dlYkNvcmVHcmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0R2NAQFBBVkNG
YnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBD
V2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpOZXdMKGNs
YXNzIENGYnNCaXRHYyAmLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xs
VmlldyAqKQ0KKyAgICA/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQFBBVkNG
YnNCaXRtYXBEZXZpY2VAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFog
QCA2NCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3Jh
cGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3MgQ0Zic0Jp
dG1hcCAqLCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgKikNCisgICAgP05ld0xAQ1dlYkNvcmVT
ZXR0aW5nc0BAU0FQQVYxQFhaIEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyAq
IENXZWJDb3JlU2V0dGluZ3M6Ok5ld0wodm9pZCkNCisgICAgP05vdGlmeURlY29kaW5nRXJyb3JA
Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZvaWQpDQor
ICAgID9Ob3RpZnlGaW5pc2hlZEBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFog
QCA2NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeUZp
bmlzaGVkKHZvaWQpDQorICAgID9Ob3RpZnlVcGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3Jh
cHBlckBAUUFFWFhaIEAgNjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFw
cGVyOjpOb3RpZnlVcGRhdGUodm9pZCkNCisgICAgP051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0
c0BDV2ViQ29yZUJyaWRnZUBAUUFFSFhaIEAgNjkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdl
OjpOdW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHModm9pZCkNCisgICAgP09wZW5VUkxAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIMDBBQlZURGF0ZVRpbWVAQEBaIEAgNzAgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6T3BlblVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGlu
dCwgY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFRE
YXRlVGltZSBjb25zdCAmKQ0KKyAgICA/UGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRs
ZXJAQFNBUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBYWiBAIDcxIE5PTkFNRSA7IGNsYXNzIE1X
ZWJDb3JlUGx1Z2luSGFuZGxlciAqIFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2luSGFuZGxl
cih2b2lkKQ0KKyAgICA/UGx1Z2luc0VuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAg
NzIgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZvaWQpIGNv
bnN0DQorICAgID9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhVVFBvaW50ZXJFdmVu
dEBAQFogQCA3MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoc3Ry
dWN0IFRQb2ludGVyRXZlbnQpDQorICAgID9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhXNFRUeXBlQFRQb2ludGVyRXZlbnRAQEFCVlRQb2ludEBAQFogQCA3NCBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoZW51bSBUUG9pbnRlckV2ZW50OjpUVHlwZSwg
Y2xhc3MgVFBvaW50IGNvbnN0ICYpDQorICAgID9QcmVwYXJlRm9yRXhpdEBDV2ViQ29yZUJyaWRn
ZUBAU0FYWFogQCA3NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcmVwYXJlRm9yRXhp
dCh2b2lkKQ0KKyAgICA/UHJvdmlzaW9uYWxMb2FkU3RhcnRlZEBDV2ViQ29yZUJyaWRnZUBAUUFF
WFhaIEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCh2b2lkKQ0KKyAgICA/UmF3RGF0YUBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFQUFWVFB0
ckM4QEBYWiBAIDc3IE5PTkFNRSA7IGNsYXNzIFRQdHJDOCAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVy
OjpSYXdEYXRhKHZvaWQpDQorICAgID9SZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUBDV2ViQ29y
ZUJyaWRnZUBAUUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDc4IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlKGVudW0gVFdlYkNvcmVE
ZXZpY2VUeXBlKQ0KKyAgICA/UmVmZXJyZXJAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZA
QFhaIEAgNzkgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6UmVmZXJyZXIo
dm9pZCkgY29uc3QNCisgICAgP1JlbW92ZUZpbGVOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFW
VFBvaW50QEBAWiBAIDgwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92ZUZpbGVO
YW1lKGNsYXNzIFRQb2ludCAmKQ0KKyAgICA/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCA4MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZW1vdmVGcm9tRnJh
bWUodm9pZCkNCisgICAgP1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVjBraHRtbEBA
WFogQCA4MiBOT05BTUUgOyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJDb3JlQnJpZGdl
OjpSZW5kZXJQYXJ0KHZvaWQpIGNvbnN0DQorICAgID9SZW5kZXJlckBUV2ViQ29yZUltYWdlQ2Fy
cmllckBAUUFFUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7IGNsYXNz
IE1XZWJDb3JlSW1hZ2VSZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5kZXJlcih2
b2lkKQ0KKyAgICA/UmVzb2x2ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMxNkBAQUJW
VERlc0MxNkBAMEBaIEAgODQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdl
OjpSZXNvbHZlVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3Qg
JikNCisgICAgP1Jlc3RvcmVEb2N1bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4
NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0ZSh2b2lk
KQ0KKyAgICA/U2Fuc1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRy
QzE2QEBYWiBAIDg2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2Fu
c1NlcmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/U2F2ZURvY3VtZW50U3RhdGVAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDg3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNh
dmVEb2N1bWVudFN0YXRlKHZvaWQpDQorICAgID9TYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUJFSFhaIEAgODggTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlNhdmVS
YXdEYXRhRW5hYmxlZCh2b2lkKSBjb25zdA0KKyAgICA/U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhIQFogQCA4OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpT
Y2FsaW5nRmFjdG9yQ2hhbmdlZChpbnQpDQorICAgID9TY3JvbGxUb0FuY2hvckBDV2ViQ29yZUJy
aWRnZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgOTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6U2Nyb2xsVG9BbmNob3IoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2Nyb2xsVG9B
bmNob3JXaXRoVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hvcldpdGhVUkwoY2xhc3MgVERl
c0MxNiBjb25zdCAmKQ0KKyAgICA/U2VhcmNoQWdhaW5AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZU
RGVzQzE2QEBISEhAWiBAIDkyIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoQWdh
aW4oY2xhc3MgVERlc0MxNiBjb25zdCAmLCBpbnQsIGludCwgaW50KQ0KKyAgICA/U2VhcmNoRm9y
QENXZWJDb3JlQnJpZGdlQEBRQUVIQUJWVERlc0MxNkBASEhIQFogQCA5MyBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVCcmlkZ2U6OlNlYXJjaEZvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50
LCBpbnQpDQorICAgID9TZWxlY3Rpb25Db2xvckBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFJnYkBA
WFogQCA5NCBOT05BTUUgOyBjbGFzcyBUUmdiIENXZWJDb3JlQnJpZGdlOjpTZWxlY3Rpb25Db2xv
cih2b2lkKQ0KKyAgICA/U2VuZFJlc2l6ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA5
NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kUmVzaXplRXZlbnQodm9pZCkNCisg
ICAgP1NlbmRTY3JvbGxFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgOTYgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6U2VuZFNjcm9sbEV2ZW50KHZvaWQpDQorICAgID9TZXJpZkZv
bnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCA5NyBOT05BTUUg
OyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9udEZhbWlseSh2b2lkKSBj
b25zdA0KKyAgICA/U2V0QXV0b1JlZnJlc2hFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhI
QFogQCA5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEF1dG9SZWZyZXNoRW5h
YmxlZChpbnQpDQorICAgID9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVy
QEBRQUVYUEFWQ2FjaGVkSW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5OSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNrKGNsYXNzIGtodG1sOjpD
YWNoZWRJbWFnZUNhbGxiYWNrICopDQorICAgID9TZXRDb29raWVBZGFwdGVyQFRXZWJDb3JlQ29v
a2llRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDEwMCBOT05BTUUg
OyB2b2lkIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRlcihjbGFzcyBNV2Vi
Q29yZUNvb2tpZUFkYXB0ZXIgKikNCisgICAgP1NldEN1cnNpdmVGb250RmFtaWx5QENXZWJDb3Jl
U2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
U2V0dGluZ3M6OlNldEN1cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisg
ICAgP1NldERlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAx
MDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRGb250U2l6
ZShpbnQpDQorICAgID9TZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhA
WiBAIDEwMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGb250U2l6
ZShpbnQpDQorICAgID9TZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhBQlZURGVzQzE2QEBAWiBAIDEwNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNl
dERlZmF1bHRUZXh0RW5jb2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0RGVm
ZXJzVGltZXJzQENXZWJDb3JlQnJpZGdlQEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6U2V0RGVmZXJzVGltZXJzKGludCkNCisgICAgP1NldERyYXdzQmFja2dyb3Vu
ZEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEwNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpTZXREcmF3c0JhY2tncm91bmQoaW50KQ0KKyAgICA/U2V0RmFudGFzeUZvbnRGYW1pbHlA
Q1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA3IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVTZXR0aW5nczo6U2V0RmFudGFzeUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25z
dCAmKQ0KKyAgICA/U2V0RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhI
QFogQCAxMDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0RmFzdEZpcnN0RGlzcGxh
eU1vZGUoaW50KQ0KKyAgICA/U2V0Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhBQlZURGVzQzE2QEBAWiBAIDEwOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNl
dEZpeGVkRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRGb250U2l6
ZUxldmVsQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OlNldEZvbnRTaXplTGV2ZWwoaW50KQ0KKyAgICA/U2V0Rm9ybUNvbnRyb2xUZXh0
QnlOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAMEBaIEAgMTExIE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvcm1Db250cm9sVGV4dEJ5TmFtZShjbGFzcyBURGVz
QzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldEhpc3RvcnlQcm92
aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBWFBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBAWiBA
IDExMiBOT05BTUUgOyB2b2lkIFRXZWJDb3JlSGlzdG9yeTo6U2V0SGlzdG9yeVByb3ZpZGVyKGNs
YXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICopDQorICAgID9TZXRKYXZhRW5hYmxlZEBDV2Vi
Q29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0SmF2YUVuYWJsZWQoaW50KQ0KKyAgICA/U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE0IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGlj
YWxseShpbnQpDQorICAgID9TZXRKYXZhU2NyaXB0RW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBR
QUVYSEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlw
dEVuYWJsZWQoaW50KQ0KKyAgICA/U2V0TWF4QmlkaVdpZHRoQENXZWJDb3JlQnJpZGdlQEBRQUVY
SEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE1heEJpZGlXaWR0aChp
bnQpDQorICAgID9TZXRNaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDExNyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Gb250U2l6ZShp
bnQpDQorICAgID9TZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhIQFogQCAxMTggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRNaW5pbXVtTG9n
aWNhbEZvbnRTaXplKGludCkNCisgICAgP1NldE5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZU
RGVzQzE2QEBAWiBAIDExOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROYW1lKGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldE5lZWRzTGF5b3V0QENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCAxMjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TmVlZHNMYXlv
dXQodm9pZCkNCisgICAgP1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAx
MjEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENXZWJDb3Jl
QnJpZGdlICopDQorICAgID9TZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVY
SEBaIEAgMTIyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJs
ZWQoaW50KQ0KKyAgICA/U2V0UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVlJlbmRl
clBhcnRAa2h0bWxAQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFJl
bmRlclBhcnQoY2xhc3Mga2h0bWw6OlJlbmRlclBhcnQgKikNCisgICAgP1NldFNhbnNTZXJpZkZv
bnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShjbGFzcyBU
RGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRTYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0
aW5nc0BAUUFFWEhAWiBAIDEyNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFNh
dmVSYXdEYXRhRW5hYmxlZChpbnQpDQorICAgID9TZXRTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVT
ZXR0aW5nczo6U2V0U2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAg
P1NldFNob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEyNyBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoaW50
KQ0KKyAgICA/U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdzQEBRQUVY
SEBaIEAgMTI4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcyhpbnQpDQorICAgID9TZXRTdGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0
aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0
aW5nczo6U2V0U3RhbmRhcmRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAg
P1NldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXND
MTZAQEBaIEAgMTMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRXZWJDb3JlRm9y
bUNvbnRyb2xGYWN0b3J5QFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBTQVhQQVZNV2ViQ29y
ZUZvcm1Db250cm9sRmFjdG9yeUBAQFogQCAxMzEgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUZvcm1D
b250cm9sRmFjdG9yeTo6U2V0V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeShjbGFzcyBNV2ViQ29y
ZUZvcm1Db250cm9sRmFjdG9yeSAqKQ0KKyAgICA/U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0
b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlSW1hZ2VSZW5k
ZXJlckZhY3RvcnlAQEBaIEAgMTMyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVJbWFnZVJlbmRlcmVy
RmFjdG9yeTo6U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlSW1h
Z2VSZW5kZXJlckZhY3RvcnkgKikNCisgICAgP1NldFdlYkNvcmVMb2FkZXJDb250YWluZXJAVFdl
YkNvcmVMb2FkZXJDb250YWluZXJAQFNBWFBBVk1XZWJDb3JlTG9hZGVyQ29udGFpbmVyQEBAWiBA
IDEzMyBOT05BTUUgOyB2b2lkIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpTZXRXZWJDb3JlTG9h
ZGVyQ29udGFpbmVyKGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29udGFpbmVyICopDQorICAgID9TZXRX
ZWJDb3JlUGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBWFBBVk1XZWJDb3Jl
UGx1Z2luSGFuZGxlckBAQFogQCAxMzQgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVBsdWdpbkhhbmRs
ZXI6OlNldFdlYkNvcmVQbHVnaW5IYW5kbGVyKGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAq
KQ0KKyAgICA/U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVy
ZXJGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTM1IE5P
TkFNRSA7IHZvaWQgVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3JlVGV4dFJl
bmRlcmVyRmFjdG9yeShjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKikNCisgICAg
P1NldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBa
IEAgMTM2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0V2lsbExvYWRJbWFnZXNB
dXRvbWF0aWNhbGx5KGludCkNCisgICAgP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJy
aWRnZUBAUUFFSFhaIEAgMTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2hvdWxkQ3Jl
YXRlUmVuZGVyZXJzKHZvaWQpDQorICAgID9TaG91bGRQcmludEJhY2tncm91bmRzQENXZWJDb3Jl
U2V0dGluZ3NAQFFCRUhYWiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2hv
dWxkUHJpbnRCYWNrZ3JvdW5kcyh2b2lkKSBjb25zdA0KKyAgICA/U2hvd2luZ0Zhc3RQcmV2aWV3
QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdl
OjpTaG93aW5nRmFzdFByZXZpZXcodm9pZCkgY29uc3QNCisgICAgP1N0YW5kYXJkRm9udEZhbWls
eUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUgOyBjbGFz
cyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lkKSBjb25z
dA0KKyAgICA/VGFiYmVkTmF2aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdlYk5hdkRp
cmVjdGlvbkBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEgTk9OQU1F
IDsgaW50IENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5hdkRpcmVj
dGlvbiwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQorICAgID9UZXh0
RW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNpZ25lZCBp
bnQgQ1dlYkNvcmVCcmlkZ2U6OlRleHRFbmNvZGluZyh2b2lkKSBjb25zdA0KKyAgICA/VVJMQENX
ZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFzcyBUUHRy
QzE2IENXZWJDb3JlQnJpZGdlOjpVUkwodm9pZCkgY29uc3QNCisgICAgP1VSTFdpdGhSZWxhdGl2
ZVN0cmluZ0BDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAQFogQCAx
NDQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpVUkxXaXRoUmVsYXRp
dmVTdHJpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/VXBkYXRlQWxsVmlld3NAQ1dl
YkNvcmVCcmlkZ2VAQFNBWFhaIEAgMTQ1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlVw
ZGF0ZUFsbFZpZXdzKHZvaWQpDQorICAgID9VcmxAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFB
VlRQdHJDMTZAQFhaIEAgMTQ2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdl
Q2Fycmllcjo6VXJsKHZvaWQpDQorICAgID9Vc2VyU3R5bGVTaGVldExvY2F0aW9uQENXZWJDb3Jl
U2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQ3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYg
Q1dlYkNvcmVTZXR0aW5nczo6VXNlclN0eWxlU2hlZXRMb2NhdGlvbih2b2lkKSBjb25zdA0KKyAg
ICA/V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBA
IDE0OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6V2lsbExvYWRJbWFnZXNBdXRvbWF0
aWNhbGx5KHZvaWQpIGNvbnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVf
TlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDE0OSBOT05BTUUgOyBib29sIEtK
Uzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBL
SlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBL
SlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTUwIE5PTkFNRSA7
IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNs
YXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/bWFya2VkQFZhbHVlSW1w
QEtKU0BAUUJFX05YWiBAIDE1MSBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6Om1hcmtlZCh2
b2lkKSBjb25zdA0KKyAgICA/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0Ay
QFhaIEAgMTUyIE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2Jq
ZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEBL
SlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTUzIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmpl
Y3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkg
Y29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJA
SUBaIEAgMTU0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP3Byb3BMaXN0QE9iamVj
dEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTU1IE5P
TkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP0dldE5leHRSZW5kZXJUZXh0Rm9yU21h
cnRMaW5rc0xAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFBSEBaIEAgMTU2IE5PTkFN
RSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRSZW5kZXJUZXh0Rm9yU21h
cnRMaW5rc0woaW50ICYpDQorICAgID9HZXRSZW5kZXJUZXh0QXJlYUBDV2ViQ29yZUJyaWRnZUBA
UUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1NyBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBURGVzQzE2IGNvbnN0
ICYsIGNsYXNzIFJBcnJheTxjbGFzcyBUUmVjdD4gJikNCisgICAgICAgID9XaW5kb3dTY3JpcHRO
UE9iamVjdEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWTlBPYmplY3RAQFhaIEAgMTU4IE5PTkFNRSA7
IGNsYXNzIE5QT2JqZWN0ICogQ1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KHZv
aWQpDQogDQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTIpDQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkNCkBAIC0xLDMgKzEsODEgQEANCisyMDA2LTEwLTI1ICB5YWRhdmFsbCAgPHNyaXJh
bS55YWRhdmFsbGlAbm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVq
dGFzICh6YnVqdGFzQGdtYWlsLmNvbSkuDQorICAgICAgICBERVNDOiBTY3JpcHRhYmxlIHBsdWdp
biAmIHdpZGdldCBvYmplY3QgaW1wbGVtZW50YXRpb24NCisgICAgICAgIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDA3DQorDQorICAgICAgICBXQVJOSU5HOiBOTyBU
RVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQNCisNCisgICAgICAgICogQldJTlMvV0VCQ09SRVUu
REVGOg0KKyAgICAgICAgKiBFQUJJL1dlYkNvcmVVLkRFRjoNCisgICAgICAgICogYnJpZGdlL1dl
YkNvcmVCcmlkZ2UuY3BwOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjp+Q1dlYkNvcmVCcmlk
Z2UpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGlu
Zyk6DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KToNCisg
ICAgICAgIChDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTCk6
DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKToNCisgICAgICAg
IChDV2ViQ29yZUJyaWRnZTo6R2V0UGFnZURhdGFMKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRn
ZTo6VGFiYmVkTmF2aWdhdGlvbik6DQorICAgICAgICAqIGJyaWRnZS9XZWJDb3JlQnJpZGdlLmg6
DQorICAgICAgICAqIGJyaWRnZS9XZWJDb3JlV2lkZ2V0Lmg6DQorICAgICAgICAoTVdlYkNvcmVX
aWRnZXQ6OlBsdWdpblNjcmlwdGFibGVPYmplY3QpOg0KKyAgICAgICAgKiBncm91cC9LSFRNTC5t
bXA6DQorICAgICAgICAqIGdyb3VwL0tXUS5tbXA6DQorICAgICAgICAqIGdyb3VwL1dlYkNvcmUu
bW1wOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcDoNCisgICAgICAgIChL
SlM6OlNjcmlwdEludGVycHJldGVyOjppc0dsb2JhbE9iamVjdCk6DQorICAgICAgICAoS0pTOjpT
Y3JpcHRJbnRlcnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToNCisgICAg
ICAgICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5oOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tq
c19kb20uY3BwOg0KKyAgICAgICAgKERPTU5vZGU6Om1hcmspOg0KKyAgICAgICAgKERPTU5vZGU6
OmdldFZhbHVlUHJvcGVydHkpOg0KKyAgICAgICAgKERPTU5vZGU6OmdldExpc3RlbmVyKToNCisg
ICAgICAgIChET01Ob2RlUHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01Ob2RlTGlz
dDo6Y2FsbCk6DQorICAgICAgICAoRE9NRG9jdW1lbnQ6OkRPTURvY3VtZW50KToNCisgICAgICAg
IChET01Eb2N1bWVudFByb3RvRnVuYzo6dHJ5Q2FsbCk6DQorICAgICAgICAoRE9NRWxlbWVudDo6
RE9NRWxlbWVudCk6DQorICAgICAgICAoRE9NRWxlbWVudFByb3RvRnVuYzo6dHJ5Q2FsbCk6DQor
ICAgICAgICAoRE9NRE9NSW1wbGVtZW50YXRpb246OkRPTURPTUltcGxlbWVudGF0aW9uKToNCisg
ICAgICAgIChET01OYW1lZE5vZGVNYXA6OkRPTU5hbWVkTm9kZU1hcCk6DQorICAgICAgICAoS0pT
OjpnZXRET01Eb2N1bWVudE5vZGUpOg0KKyAgICAgICAgKEtKUzo6Y2hlY2tOb2RlU2VjdXJpdHkp
Og0KKyAgICAgICAgKEtKUzo6Z2V0UnVudGltZU9iamVjdCk6DQorICAgICAgICAoRE9NTmFtZWRO
b2Rlc0NvbGxlY3Rpb246OnRyeUdldCk6DQorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6RE9N
Q2hhcmFjdGVyRGF0YSk6DQorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YVByb3RvRnVuYzo6dHJ5
Q2FsbCk6DQorICAgICAgICAoRE9NVGV4dDo6RE9NVGV4dCk6DQorICAgICAgICAqIGtodG1sL2Vj
bWEva2pzX3dpbmRvdy5jcHA6DQorICAgICAgICAoV2luZG93OjpXaW5kb3cpOg0KKyAgICAgICAg
KFdpbmRvdzo6bWFyayk6DQorICAgICAgICAoV2luZG93OjpnZXQpOg0KKyAgICAgICAgKiBraHRt
bC9lY21hL2tqc193aW5kb3cuaDoNCisgICAgICAgIChLSlM6OldpbmRvdzo6KToNCisgICAgICAg
IChLSlM6OlNlbGVjdGlvbjo6KToNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93Lmx1
dC5oOg0KKyAgICAgICAgKEtKUzo6KToNCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX29iamVj
dGltcGwuY3BwOg0KKyAgICAgICAgKEhUTUxBcHBsZXRFbGVtZW50SW1wbDo6Z2V0QXBwbGV0SW5z
dGFuY2UpOg0KKyAgICAgICAgKEhUTUxFbWJlZEVsZW1lbnRJbXBsOjpIVE1MRW1iZWRFbGVtZW50
SW1wbCk6DQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudEltcGw6OmdldEVtYmVkSW5zdGFuY2Up
Og0KKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5oOg0KKyAgICAgICAgKiBr
d3EvS1dRS0hUTUxQYXJ0LmNwcDoNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OktXUUtIVE1MUGFy
dCk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpzdWJtaXRGb3JtKToNCisgICAgICAgIChLV1FL
SFRNTFBhcnQ6OmJpbmRpbmdSb290T2JqZWN0KToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6Omdl
dFJlbmRlclRleHRSZWN0QXJyYXkpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6YWRkUGx1Z2lu
Um9vdE9iamVjdCk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpjbGVhbnVwUGx1Z2luUm9vdE9i
amVjdHMpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0TmV3VGFiYmVkQ3Vyc29yUG9zaXRp
b24pOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6dGFiYmVkTmF2aWdhdGlvbik6DQorICAgICAg
ICAoS1dRS0hUTUxQYXJ0OjpwcmVwYXJlRm9yVXNlckFjdGlvbik6DQorICAgICAgICAoS1dRS0hU
TUxQYXJ0OjpjcmVhdGVXaWRnZXRPYmplY3QpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0
RW1iZWRJbnN0YW5jZUZvclZpZXcpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0T2JqZWN0
SW5zdGFuY2VGb3JWaWV3KToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OndpbmRvd1NjcmlwdE5Q
T2JqZWN0KToNCisgICAgICAgICoga3dxL0tXUUtIVE1MUGFydC5oOg0KKyAgICAgICAgKEtXUUtI
VE1MUGFydDo6Z2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3KToNCisNCiAyMDA2LTEwLTIzICBuYWd1
byAgPGdlb3JnZS5ndW9Abm9raWEuY29tPg0KIA0KICAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4u
DQpJbmRleDogV2ViQ29yZS9FQUJJL1dlYkNvcmVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvRUFCSS9XZWJDb3JlVS5ERUYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvRUFCSS9X
ZWJDb3JlVS5ERUYJKHdvcmtpbmcgY29weSkNCkBAIC0xLDE2MiArMSwxNjMgQEANCiBFWFBPUlRT
DQotCV9aTjEzVFdlYkNvcmVDYWNoZTE1QWRkSXRlbVRvQ2FjaGVMRVIyOU1XZWJDb3JlVXJsUmVz
cG9uc2VIZWFkZXJJbmZvUjZURGVzQzhpIEAgMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTEwSW1hZ2VDb3VudEVpIEAgMiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEwTG9hZElt
YWdlc0V2IEAgMyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTExUmVzb2x2ZVVybExFUks3
VERlc0MxNlMyXyBAIDQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMVNlYXJjaEFnYWlu
RVJLN1REZXNDMTZpaWkgQCA1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTJEZWZlcnNU
aW1lcnNFdiBAIDYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkdldFBhZ2VEYXRhTEVp
IEAgNyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEySW1hZ2VzSW5SZWN0RWkgQCA4IE5P
TkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTJQb2ludGVyRXZlbnRFMTNUUG9pbnRlckV2ZW50
IEAgOSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEyUG9pbnRlckV2ZW50RU4xM1RQb2lu
dGVyRXZlbnQ1VFR5cGVFUks2VFBvaW50IEAgMTAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UxM0FjdGl2YXRlRXZlbnRFUjZUUG9pbnQgQCAxMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJy
aWRnZTEzQWRkVG9Db250YWN0c0VSNlRQb2ludCBAIDEyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3Jl
QnJpZGdlMTNEaWROb3RPcGVuVVJMRVJLN1REZXNDMTYgQCAxMyBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTEzRXhlY3V0ZVNjcmlwdEVSSzdURGVzQzE2IEAgMTQgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UxM1NldFJlbmRlclBhcnRFUE41a2h0bWwxMFJlbmRlclBhcnRFIEAgMTUg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNEFkanVzdFZpZXdTaXplRXYgQCAxNiBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0RHVtcFJlbmRlclRyZWVFdiBAIDE3IE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlMTRJbnN0YWxsSW5GcmFtZUVSMThNV2ViQ29yZVNjcm9sbFZp
ZXcgQCAxOCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0UHJlcGFyZUZvckV4aXRFdiBA
IDE5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRSZW1vdmVGaWxlTmFtZUVSNlRQb2lu
dCBAIDIwIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRTY3JvbGxUb0FuY2hvckVSSzdU
RGVzQzE2IEAgMjEgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNlbGVjdGlvbkNvbG9y
RXYgQCAyMiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2V0TmVlZHNMYXlvdXRFdiBA
IDIzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRVcGRhdGVBbGxWaWV3c0V2IEAgMjQg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUNyZWF0ZUtIVE1MVmlld0VSMThNV2ViQ29y
ZVNjcm9sbFZpZXdpaSBAIDI1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVEZUFjdGl2
YXRlRXZlbnRFaSBAIDI2IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVGaW5kTGlua3NP
ZlR5cGVFUks3VERlc0MxNlI2UkFycmF5STE2VFdlYkNvcmVMaW5rSXRlbUUgQCAyNyBOT05BTUUN
Ci0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1R2V0VGV4dENvbnRlbnRMRXYgQCAyOCBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTE1SnVtcFRvU2VsZWN0aW9uRXYgQCAyOSBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTE1UmVtb3ZlRnJvbUZyYW1lRXYgQCAzMCBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTE1U2VuZFJlc2l6ZUV2ZW50RXYgQCAzMSBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTE1U2VuZFNjcm9sbEV2ZW50RXYgQCAzMiBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTE1U2V0RGVmZXJzVGltZXJzRWkgQCAzMyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJy
aWRnZTE1U2V0TWF4QmlkaVdpZHRoRWkgQCAzNCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTE2U2V0Rm9udFNpemVMZXZlbEVpIEAgMzUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
NlRhYmJlZE5hdmlnYXRpb25FMTZUV2ViTmF2RGlyZWN0aW9uUjI2VFdlYkNvcmVGb2N1c2VkRWxl
bWVudFR5cGVpIEAgMzYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxN1NhdmVEb2N1bWVu
dFN0YXRlRXYgQCAzNyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4QWN0aXZhdGVBY2Nl
c3NLZXlzRTlUS2V5RXZlbnQgQCAzOCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4SW5p
dGlhbGl6ZVNldHRpbmdzRVJLMTZDV2ViQ29yZVNldHRpbmdzIEAgMzkgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UxOFNldERyYXdzQmFja2dyb3VuZEVpIEAgNDAgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UxOUJvZHlCYWNrZ3JvdW5kQ29sb3JFdiBAIDQxIE5PTkFNRQ0KLQlfWk4x
NENXZWJDb3JlQnJpZGdlMjBSZXN0b3JlRG9jdW1lbnRTdGF0ZUV2IEAgNDIgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2UyMFNjYWxpbmdGYWN0b3JDaGFuZ2VkRWkgQCA0MyBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTIxU2Nyb2xsVG9BbmNob3JXaXRoVVJMRVJLN1REZXNDMTYgQCA0
NCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIxU2hvdWxkQ3JlYXRlUmVuZGVyZXJzRXYg
QCA0NSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIxVVJMV2l0aFJlbGF0aXZlU3RyaW5n
RVJLN1REZXNDMTYgQCA0NiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIyUHJvdmlzaW9u
YWxMb2FkU3RhcnRlZEV2IEAgNDcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyM0RldGVy
bWluZUN1cnNvclBvc2l0aW9uRVIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlUjVUUmVjdFMz
X1I2VFBvaW50aSBAIDQ4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjNTZXRGYXN0Rmly
c3REaXNwbGF5TW9kZUVpIEAgNDkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyNFNldEZv
cm1Db250cm9sVGV4dEJ5TmFtZUVSSzdURGVzQzE2UzJfIEAgNTAgTk9OQU1FDQotCV9aTjE0Q1dl
YkNvcmVCcmlkZ2UyNFNldFNob3VsZENyZWF0ZVJlbmRlcmVyc0VpIEAgNTEgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2UyNkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nRVJLN1REZXNDMTZp
IEAgNTIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyNlJlYXBwbHlTdHlsZXNGb3JEZXZp
Y2VUeXBlRTE4VFdlYkNvcmVEZXZpY2VUeXBlIEAgNTMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UyN051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0V2IEAgNTQgTk9OQU1FDQotCV9aTjE0
Q1dlYkNvcmVCcmlkZ2UyOEZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVFaSBAIDU1IE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlM0VuZEV2IEAgNTYgTk9OQU1FDQotCV9aTjE0Q1dlYkNv
cmVCcmlkZ2U0TmV3TEVSMTZNV2ViQ2xpZW50QnJpZGdlIEAgNTcgTk9OQU1FDQotCV9aTjE0Q1dl
YkNvcmVCcmlkZ2U2Q2xpZW50RXYgQCA1OCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTdB
ZGREYXRhRVJLNlREZXNDOCBAIDU5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlN09wZW5V
UkxFUks3VERlc0MxNmlTMl9TMl9SSzlURGF0ZVRpbWUgQCA2MCBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTdTZXROYW1lRVJLN1REZXNDMTYgQCA2MSBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZThDbG9zZVVSTEV2IEAgNjIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U4RHJh
d1JlY3RFUks1VFJlY3RSMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDYzIE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlOEtleUV2ZW50RTlUS2V5RXZlbnRpIEAgNjQgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2U5Q2xlYXJGaW5kRXYgQCA2NSBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTlTZWFyY2hGb3JFUks3VERlc0MxNmlpaSBAIDY2IE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlOVNldFBhcmVudEVQU18gQCA2NyBOT05BTUUNCi0JX1pOMTVUV2ViQ29yZUhpc3Rv
cnkxNUhpc3RvcnlQcm92aWRlckV2IEAgNjggTk9OQU1FDQotCV9aTjE1VFdlYkNvcmVIaXN0b3J5
MThTZXRIaXN0b3J5UHJvdmlkZXJFUDIzTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgQCA2OSBOT05B
TUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMTRTZXRKYXZhRW5hYmxlZEVpIEAgNzAgTk9OQU1F
DQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczE3U2V0UGx1Z2luc0VuYWJsZWRFaSBAIDcxIE5PTkFN
RQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldERlZmF1bHRGb250U2l6ZUVpIEAgNzIgTk9O
QU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0Rml4ZWRGb250RmFtaWx5RVJLN1REZXND
MTYgQCA3MyBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRNaW5pbXVtRm9udFNp
emVFaSBAIDc0IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldFNlcmlmRm9udEZh
bWlseUVSSzdURGVzQzE2IEAgNzUgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0
Q3Vyc2l2ZUZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc2IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3Jl
U2V0dGluZ3MyMFNldEZhbnRhc3lGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3NyBOT05BTUUNCi0J
X1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRKYXZhU2NyaXB0RW5hYmxlZEVpIEAgNzggTk9OQU1F
DQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0QXV0b1JlZnJlc2hFbmFibGVkRWkgQCA3OSBO
T05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRTYXZlUmF3RGF0YUVuYWJsZWRFaSBA
IDgwIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldFN0YW5kYXJkRm9udEZhbWls
eUVSSzdURGVzQzE2IEAgODEgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIyU2V0RGVm
YXVsdFRleHRFbmNvZGluZ0VSSzdURGVzQzE2IEAgODIgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVT
ZXR0aW5nczIyU2V0U2Fuc1NlcmlmRm9udEZhbWlseUVSSzdURGVzQzE2IEAgODMgTk9OQU1FDQot
CV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIzU2V0RGVmYXVsdEZpeGVkRm9udFNpemVFaSBAIDg0IE5P
TkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldE1pbmltdW1Mb2dpY2FsRm9udFNpemVF
aSBAIDg1IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFNob3VsZFByaW50QmFj
a2dyb3VuZHNFaSBAIDg2IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb25FUks3VERlc0MxNiBAIDg3IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3Jl
U2V0dGluZ3MzMFNldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUVpIEAgODggTk9OQU1FDQot
CV9aTjE2Q1dlYkNvcmVTZXR0aW5nczQwU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseUVpIEAgODkgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczROZXdMRXYgQCA5
MCBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzRDBFdiBAIDkxIE5PTkFNRQ0KLQlfWk4x
NkNXZWJDb3JlU2V0dGluZ3NEMUV2IEAgOTIgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5n
c0QyRXYgQCA5MyBOT05BTUUNCi0JX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjNVcmxFdiBAIDk0
IE5PTkFNRQ0KLQlfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyN0FsdFRleHRFdiBAIDk1IE5PTkFN
RQ0KLQlfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyN1Jhd0RhdGFFdiBAIDk2IE5PTkFNRQ0KLQlf
Wk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyOFJlbmRlcmVyRXYgQCA5NyBOT05BTUUNCi0JX1pOMjBU
V2ViQ29yZUltYWdlQ2FycmllcjlJbWFnZVR5cGVFdiBAIDk4IE5PTkFNRQ0KLQlfWk4yMVRXZWJD
b3JlQ29va2llRmFjdG9yeTEzQ29va2llQWRhcHRlckV2IEAgOTkgTk9OQU1FDQotCV9aTjIxVFdl
YkNvcmVDb29raWVGYWN0b3J5MTZTZXRDb29raWVBZGFwdGVyRVAyMU1XZWJDb3JlQ29va2llQWRh
cHRlciBAIDEwMCBOT05BTUUNCi0JX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIxM1BsdWdpbkhh
bmRsZXJFdiBAIDEwMSBOT05BTUUNCi0JX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIyM1NldFdl
YkNvcmVQbHVnaW5IYW5kbGVyRVAyMU1XZWJDb3JlUGx1Z2luSGFuZGxlciBAIDEwMiBOT05BTUUN
Ci0JX1pOMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dDROZXdMRVAxNkNGYnNCaXRtYXBEZXZpY2VQ
MTBDRmJzQml0bWFwUDE4TVdlYkNvcmVTY3JvbGxWaWV3IEAgMTAzIE5PTkFNRQ0KLQlfWk4yM0NX
ZWJDb3JlR3JhcGhpY3NDb250ZXh0NE5ld0xFUjlDRmJzQml0R2NQMTBDRmJzQml0bWFwUDE4TVdl
YkNvcmVTY3JvbGxWaWV3IEAgMTA0IE5PTkFNRQ0KLQlfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFp
bmVyMTVMb2FkZXJDb250YWluZXJFdiBAIDEwNSBOT05BTUUNCi0JX1pOMjNUV2ViQ29yZUxvYWRl
ckNvbnRhaW5lcjI1U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5lckVQMjNNV2ViQ29yZUxvYWRlckNv
bnRhaW5lciBAIDEwNiBOT05BTUUNCi0JX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTI4
U2V0V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUVQMjZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9y
eSBAIDEwNyBOT05BTUUNCi0JX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTdGYWN0b3J5
RXYgQCAxMDggTk9OQU1FDQotCV9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5MjlTZXRX
ZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUVQMjdNV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnkg
QCAxMDkgTk9OQU1FDQotCV9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5N0ZhY3RvcnlF
diBAIDExMCBOT05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTFTZXRD
YWxsYmFja0VQTjVraHRtbDE5Q2FjaGVkSW1hZ2VDYWxsYmFja0UgQCAxMTEgTk9OQU1FDQotCV9a
TjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjEyTm90aWZ5VXBkYXRlRXYgQCAxMTIgTk9O
QU1FDQotCV9aTjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjE0Tm90aWZ5RmluaXNoZWRF
diBAIDExMyBOT05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTlOb3Rp
ZnlEZWNvZGluZ0Vycm9yRXYgQCAxMTQgTk9OQU1FDQotCV9aTjI4VFdlYkNvcmVJbWFnZVJlbmRl
cmVyRmFjdG9yeTMwU2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5RVAyOE1XZWJDb3JlSW1h
Z2VSZW5kZXJlckZhY3RvcnkgQCAxMTUgTk9OQU1FDQotCV9aTjI4VFdlYkNvcmVJbWFnZVJlbmRl
cmVyRmFjdG9yeTdGYWN0b3J5RXYgQCAxMTYgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdl
MTBJc0ZyYW1lU2V0RXYgQCAxMTcgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTBSZW5k
ZXJQYXJ0RXYgQCAxMTggTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTFOZWVkc0xheW91
dEV2IEAgMTE5IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTEyQ2FuQ2FjaGVQYWdlRXYg
QCAxMjAgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTJUZXh0RW5jb2RpbmdFdiBAIDEy
MSBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxNkhhc1BlbmRpbmdMYXlvdXRFdiBAIDEy
MiBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxOFNob3dpbmdGYXN0UHJldmlld0V2IEAg
MTIzIE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTIwRmFzdEZpcnN0RGlzcGxheU1vZGVF
diBAIDEyNCBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyMEdldFVybE9mTm9kZUluRm9j
dXNMRVI2VFBvaW50IEAgMTI1IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTI0TmF2aWdh
YmxlTm9kZVVuZGVyQ3Vyc29yRVI2VFBvaW50UjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVS
NVRSZWN0IEAgMTI2IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTNVUkxFdiBAIDEyNyBO
T05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2U0TmFtZUV2IEAgMTI4IE5PTkFNRQ0KLQlfWk5L
MTRDV2ViQ29yZUJyaWRnZTZEb21haW5FdiBAIDEyOSBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVC
cmlkZ2U4UmVmZXJyZXJFdiBAIDEzMCBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczEx
SmF2YUVuYWJsZWRFdiBAIDEzMSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE0UGx1
Z2luc0VuYWJsZWRFdiBAIDEzMiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1RGVm
YXVsdEZvbnRTaXplRXYgQCAxMzMgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNUZp
eGVkRm9udEZhbWlseUV2IEAgMTM0IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVN
aW5pbXVtRm9udFNpemVFdiBAIDEzNSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1
U2VyaWZGb250RmFtaWx5RXYgQCAxMzYgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3Mx
N0N1cnNpdmVGb250RmFtaWx5RXYgQCAxMzcgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGlu
Z3MxN0ZhbnRhc3lGb250RmFtaWx5RXYgQCAxMzggTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0
dGluZ3MxN0phdmFTY3JpcHRFbmFibGVkRXYgQCAxMzkgTk9OQU1FDQotCV9aTksxNkNXZWJDb3Jl
U2V0dGluZ3MxOEF1dG9SZWZyZXNoRW5hYmxlZEV2IEAgMTQwIE5PTkFNRQ0KLQlfWk5LMTZDV2Vi
Q29yZVNldHRpbmdzMThTYXZlUmF3RGF0YUVuYWJsZWRFdiBAIDE0MSBOT05BTUUNCi0JX1pOSzE2
Q1dlYkNvcmVTZXR0aW5nczE4U3RhbmRhcmRGb250RmFtaWx5RXYgQCAxNDIgTk9OQU1FDQotCV9a
TksxNkNXZWJDb3JlU2V0dGluZ3MxOURlZmF1bHRUZXh0RW5jb2RpbmdFdiBAIDE0MyBOT05BTUUN
Ci0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE5U2Fuc1NlcmlmRm9udEZhbWlseUV2IEAgMTQ0IE5P
TkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjBEZWZhdWx0Rml4ZWRGb250U2l6ZUV2IEAg
MTQ1IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJNaW5pbXVtTG9naWNhbEZvbnRT
aXplRXYgQCAxNDYgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMlNob3VsZFByaW50
QmFja2dyb3VuZHNFdiBAIDE0NyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIyVXNl
clN0eWxlU2hlZXRMb2NhdGlvbkV2IEAgMTQ4IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRp
bmdzMjdXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHlFdiBAIDE0OSBOT05BTUUNCi0JX1pOSzE2
Q1dlYkNvcmVTZXR0aW5nczM3SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUV2
IEAgMTUwIE5PTkFNRQ0KLQlfWlRJMTRDV2ViQ29yZUJyaWRnZSBAIDE1MSBOT05BTUUgOyAjPFRJ
PiMNCi0JX1pUSTE2Q1dlYkNvcmVTZXR0aW5ncyBAIDE1MiBOT05BTUUgOyAjPFRJPiMNCi0JX1pU
STIwQ1dlYkNvcmVQYWdlRGF0YUl0ZW0gQCAxNTMgTk9OQU1FIDsgIzxUST4jDQotCV9aVEkyM0NX
ZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgMTU0IE5PTkFNRSA7ICM8VEk+Iw0KLQlfWlRWMTRDV2Vi
Q29yZUJyaWRnZSBAIDE1NSBOT05BTUUgOyAjPFZUPiMNCi0JX1pUVjE2Q1dlYkNvcmVTZXR0aW5n
cyBAIDE1NiBOT05BTUUgOyAjPFZUPiMNCi0JX1pUVjIwQ1dlYkNvcmVQYWdlRGF0YUl0ZW0gQCAx
NTcgTk9OQU1FIDsgIzxWVD4jDQotCV9aVFYyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgMTU4
IE5PTkFNRSA7ICM8VlQ+Iw0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTdHZXRSZW5kZXJUZXh0QXJl
YUVSSzdURGVzQzE2UjZSQXJyYXlJNVRSZWN0RSBAIDE1OSBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTMxR2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTEVSaSBAIDE2MCBOT05BTUUN
CisgICAgX1pOMTNUV2ViQ29yZUNhY2hlMTVBZGRJdGVtVG9DYWNoZUxFUjI5TVdlYkNvcmVVcmxS
ZXNwb25zZUhlYWRlckluZm9SNlREZXNDOGkgQCAxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMTBJbWFnZUNvdW50RWkgQCAyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdl
MTBMb2FkSW1hZ2VzRXYgQCAzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTFSZXNv
bHZlVXJsTEVSSzdURGVzQzE2UzJfIEAgNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRn
ZTExU2VhcmNoQWdhaW5FUks3VERlc0MxNmlpaSBAIDUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2UxMkRlZmVyc1RpbWVyc0V2IEAgNiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTEyR2V0UGFnZURhdGFMRWkgQCA3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdl
MTJJbWFnZXNJblJlY3RFaSBAIDggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMlBv
aW50ZXJFdmVudEUxM1RQb2ludGVyRXZlbnQgQCA5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMTJQb2ludGVyRXZlbnRFTjEzVFBvaW50ZXJFdmVudDVUVHlwZUVSSzZUUG9pbnQgQCAx
MCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEzQWN0aXZhdGVFdmVudEVSNlRQb2lu
dCBAIDExIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNBZGRUb0NvbnRhY3RzRVI2
VFBvaW50IEAgMTIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0RpZE5vdE9wZW5V
UkxFUks3VERlc0MxNiBAIDEzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNFeGVj
dXRlU2NyaXB0RVJLN1REZXNDMTYgQCAxNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRn
ZTEzU2V0UmVuZGVyUGFydEVQTjVraHRtbDEwUmVuZGVyUGFydEUgQCAxNSBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTE0QWRqdXN0Vmlld1NpemVFdiBAIDE2IE5PTkFNRQ0KKyAgICBf
Wk4xNENXZWJDb3JlQnJpZGdlMTREdW1wUmVuZGVyVHJlZUV2IEAgMTcgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UxNEluc3RhbGxJbkZyYW1lRVIxOE1XZWJDb3JlU2Nyb2xsVmlldyBA
IDE4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRQcmVwYXJlRm9yRXhpdEV2IEAg
MTkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFJlbW92ZUZpbGVOYW1lRVI2VFBv
aW50IEAgMjAgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNjcm9sbFRvQW5jaG9y
RVJLN1REZXNDMTYgQCAyMSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2VsZWN0
aW9uQ29sb3JFdiBAIDIyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRTZXROZWVk
c0xheW91dEV2IEAgMjMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFVwZGF0ZUFs
bFZpZXdzRXYgQCAyNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE1Q3JlYXRlS0hU
TUxWaWV3RVIxOE1XZWJDb3JlU2Nyb2xsVmlld2lpIEAgMjUgTk9OQU1FDQorICAgIF9aTjE0Q1dl
YkNvcmVCcmlkZ2UxNURlQWN0aXZhdGVFdmVudEVpIEAgMjYgTk9OQU1FDQorICAgIF9aTjE0Q1dl
YkNvcmVCcmlkZ2UxNUZpbmRMaW5rc09mVHlwZUVSSzdURGVzQzE2UjZSQXJyYXlJMTZUV2ViQ29y
ZUxpbmtJdGVtRSBAIDI3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVHZXRUZXh0
Q29udGVudExFdiBAIDI4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVKdW1wVG9T
ZWxlY3Rpb25FdiBAIDI5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVSZW1vdmVG
cm9tRnJhbWVFdiBAIDMwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kUmVz
aXplRXZlbnRFdiBAIDMxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kU2Ny
b2xsRXZlbnRFdiBAIDMyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXREZWZl
cnNUaW1lcnNFaSBAIDMzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXRNYXhC
aWRpV2lkdGhFaSBAIDM0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTZTZXRGb250
U2l6ZUxldmVsRWkgQCAzNSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE2VGFiYmVk
TmF2aWdhdGlvbkUxNlRXZWJOYXZEaXJlY3Rpb25SMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlw
ZWkgQCAzNiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE3U2F2ZURvY3VtZW50U3Rh
dGVFdiBAIDM3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMThBY3RpdmF0ZUFjY2Vz
c0tleXNFOVRLZXlFdmVudCBAIDM4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMThJ
bml0aWFsaXplU2V0dGluZ3NFUksxNkNXZWJDb3JlU2V0dGluZ3MgQCAzOSBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTE4U2V0RHJhd3NCYWNrZ3JvdW5kRWkgQCA0MCBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE5Qm9keUJhY2tncm91bmRDb2xvckV2IEAgNDEgTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMFJlc3RvcmVEb2N1bWVudFN0YXRlRXYgQCA0MiBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIwU2NhbGluZ0ZhY3RvckNoYW5nZWRFaSBA
IDQzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjFTY3JvbGxUb0FuY2hvcldpdGhV
UkxFUks3VERlc0MxNiBAIDQ0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjFTaG91
bGRDcmVhdGVSZW5kZXJlcnNFdiBAIDQ1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdl
MjFVUkxXaXRoUmVsYXRpdmVTdHJpbmdFUks3VERlc0MxNiBAIDQ2IE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlMjJQcm92aXNpb25hbExvYWRTdGFydGVkRXYgQCA0NyBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIzRGV0ZXJtaW5lQ3Vyc29yUG9zaXRpb25FUjI2VFdlYkNv
cmVGb2N1c2VkRWxlbWVudFR5cGVSNVRSZWN0UzNfUjZUUG9pbnRpIEAgNDggTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UyM1NldEZhc3RGaXJzdERpc3BsYXlNb2RlRWkgQCA0OSBOT05B
TUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lRVJL
N1REZXNDMTZTMl8gQCA1MCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0U2hv
dWxkQ3JlYXRlUmVuZGVyZXJzRWkgQCA1MSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRn
ZTI2Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdFUks3VERlc0MxNmkgQCA1MiBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI2UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGVFMThUV2Vi
Q29yZURldmljZVR5cGUgQCA1MyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI3TnVt
UGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzRXYgQCA1NCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTI4Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUVpIEAgNTUgTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UzRW5kRXYgQCA1NiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTROZXdMRVIxNk1XZWJDbGllbnRCcmlkZ2UgQCA1NyBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTZDbGllbnRFdiBAIDU4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlN0FkZERhdGFFUks2VERlc0M4IEAgNTkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2U3T3BlblVSTEVSSzdURGVzQzE2aVMyX1MyX1JLOVREYXRlVGltZSBAIDYwIE5PTkFNRQ0KKyAg
ICBfWk4xNENXZWJDb3JlQnJpZGdlN1NldE5hbWVFUks3VERlc0MxNiBAIDYxIE5PTkFNRQ0KKyAg
ICBfWk4xNENXZWJDb3JlQnJpZGdlOENsb3NlVVJMRXYgQCA2MiBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZThEcmF3UmVjdEVSSzVUUmVjdFIyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0
IEAgNjMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U4S2V5RXZlbnRFOVRLZXlFdmVu
dGkgQCA2NCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTlDbGVhckZpbmRFdiBAIDY1
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlOVNlYXJjaEZvckVSSzdURGVzQzE2aWlp
IEAgNjYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U5U2V0UGFyZW50RVBTXyBAIDY3
IE5PTkFNRQ0KKyAgICBfWk4xNVRXZWJDb3JlSGlzdG9yeTE1SGlzdG9yeVByb3ZpZGVyRXYgQCA2
OCBOT05BTUUNCisgICAgX1pOMTVUV2ViQ29yZUhpc3RvcnkxOFNldEhpc3RvcnlQcm92aWRlckVQ
MjNNV2ViQ29yZUhpc3RvcnlQcm92aWRlciBAIDY5IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3Jl
U2V0dGluZ3MxNFNldEphdmFFbmFibGVkRWkgQCA3MCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMTdTZXRQbHVnaW5zRW5hYmxlZEVpIEAgNzEgTk9OQU1FDQorICAgIF9aTjE2Q1dl
YkNvcmVTZXR0aW5nczE4U2V0RGVmYXVsdEZvbnRTaXplRWkgQCA3MiBOT05BTUUNCisgICAgX1pO
MTZDV2ViQ29yZVNldHRpbmdzMThTZXRGaXhlZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDczIE5P
TkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldE1pbmltdW1Gb250U2l6ZUVpIEAg
NzQgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0U2VyaWZGb250RmFtaWx5
RVJLN1REZXNDMTYgQCA3NSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRD
dXJzaXZlRm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzYgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNv
cmVTZXR0aW5nczIwU2V0RmFudGFzeUZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc3IE5PTkFNRQ0K
KyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNldEphdmFTY3JpcHRFbmFibGVkRWkgQCA3OCBO
T05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRBdXRvUmVmcmVzaEVuYWJsZWRF
aSBAIDc5IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldFNhdmVSYXdEYXRh
RW5hYmxlZEVpIEAgODAgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0U3Rh
bmRhcmRGb250RmFtaWx5RVJLN1REZXNDMTYgQCA4MSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMjJTZXREZWZhdWx0VGV4dEVuY29kaW5nRVJLN1REZXNDMTYgQCA4MiBOT05BTUUN
CisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjJTZXRTYW5zU2VyaWZGb250RmFtaWx5RVJLN1RE
ZXNDMTYgQCA4MyBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjNTZXREZWZhdWx0
Rml4ZWRGb250U2l6ZUVpIEAgODQgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1
U2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZUVpIEAgODUgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNv
cmVTZXR0aW5nczI1U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0VpIEAgODYgTk9OQU1FDQorICAg
IF9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSSzdURGVz
QzE2IEAgODcgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczMwU2V0V2lsbExvYWRJ
bWFnZXNBdXRvbWF0aWNhbGx5RWkgQCA4OCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRp
bmdzNDBTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RWkgQCA4OSBOT05B
TUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzNE5ld0xFdiBAIDkwIE5PTkFNRQ0KKyAgICBf
Wk4xNkNXZWJDb3JlU2V0dGluZ3NEMEV2IEAgOTEgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVT
ZXR0aW5nc0QxRXYgQCA5MiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzRDJFdiBA
IDkzIE5PTkFNRQ0KKyAgICBfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyM1VybEV2IEAgOTQgTk9O
QU1FDQorICAgIF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI3QWx0VGV4dEV2IEAgOTUgTk9OQU1F
DQorICAgIF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI3UmF3RGF0YUV2IEAgOTYgTk9OQU1FDQor
ICAgIF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI4UmVuZGVyZXJFdiBAIDk3IE5PTkFNRQ0KKyAg
ICBfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyOUltYWdlVHlwZUV2IEAgOTggTk9OQU1FDQorICAg
IF9aTjIxVFdlYkNvcmVDb29raWVGYWN0b3J5MTNDb29raWVBZGFwdGVyRXYgQCA5OSBOT05BTUUN
CisgICAgX1pOMjFUV2ViQ29yZUNvb2tpZUZhY3RvcnkxNlNldENvb2tpZUFkYXB0ZXJFUDIxTVdl
YkNvcmVDb29raWVBZGFwdGVyIEAgMTAwIE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3JlUGx1Z2lu
SGFuZGxlcjEzUGx1Z2luSGFuZGxlckV2IEAgMTAxIE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3Jl
UGx1Z2luSGFuZGxlcjIzU2V0V2ViQ29yZVBsdWdpbkhhbmRsZXJFUDIxTVdlYkNvcmVQbHVnaW5I
YW5kbGVyIEAgMTAyIE5PTkFNRQ0KKyAgICBfWk4yM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0NE5l
d0xFUDE2Q0Zic0JpdG1hcERldmljZVAxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcg
QCAxMDMgTk9OQU1FDQorICAgIF9aTjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0TmV3TEVSOUNG
YnNCaXRHY1AxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxMDQgTk9OQU1FDQor
ICAgIF9aTjIzVFdlYkNvcmVMb2FkZXJDb250YWluZXIxNUxvYWRlckNvbnRhaW5lckV2IEAgMTA1
IE5PTkFNRQ0KKyAgICBfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVyMjVTZXRXZWJDb3JlTG9h
ZGVyQ29udGFpbmVyRVAyM01XZWJDb3JlTG9hZGVyQ29udGFpbmVyIEAgMTA2IE5PTkFNRQ0KKyAg
ICBfWk4yNlRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5MjhTZXRXZWJDb3JlRm9ybUNvbnRyb2xG
YWN0b3J5RVAyNk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5IEAgMTA3IE5PTkFNRQ0KKyAgICBf
Wk4yNlRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5N0ZhY3RvcnlFdiBAIDEwOCBOT05BTUUNCisg
ICAgX1pOMjdUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkyOVNldFdlYkNvcmVUZXh0UmVuZGVy
ZXJGYWN0b3J5RVAyN01XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSBAIDEwOSBOT05BTUUNCisg
ICAgX1pOMjdUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTEwIE5PTkFN
RQ0KKyAgICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxMVNldENhbGxiYWNrRVBO
NWtodG1sMTlDYWNoZWRJbWFnZUNhbGxiYWNrRSBAIDExMSBOT05BTUUNCisgICAgX1pOMjhDV2Vi
Q29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTJOb3RpZnlVcGRhdGVFdiBAIDExMiBOT05BTUUNCisg
ICAgX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTROb3RpZnlGaW5pc2hlZEV2IEAg
MTEzIE5PTkFNRQ0KKyAgICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxOU5vdGlm
eURlY29kaW5nRXJyb3JFdiBAIDExNCBOT05BTUUNCisgICAgX1pOMjhUV2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5MzBTZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlFUDI4TVdlYkNvcmVJ
bWFnZVJlbmRlcmVyRmFjdG9yeSBAIDExNSBOT05BTUUNCisgICAgX1pOMjhUV2ViQ29yZUltYWdl
UmVuZGVyZXJGYWN0b3J5N0ZhY3RvcnlFdiBAIDExNiBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNv
cmVCcmlkZ2UxMElzRnJhbWVTZXRFdiBAIDExNyBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVC
cmlkZ2UxMFJlbmRlclBhcnRFdiBAIDExOCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlk
Z2UxMU5lZWRzTGF5b3V0RXYgQCAxMTkgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdl
MTJDYW5DYWNoZVBhZ2VFdiBAIDEyMCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2Ux
MlRleHRFbmNvZGluZ0V2IEAgMTIxIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTE2
SGFzUGVuZGluZ0xheW91dEV2IEAgMTIyIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRn
ZTE4U2hvd2luZ0Zhc3RQcmV2aWV3RXYgQCAxMjMgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3Jl
QnJpZGdlMjBGYXN0Rmlyc3REaXNwbGF5TW9kZUV2IEAgMTI0IE5PTkFNRQ0KKyAgICBfWk5LMTRD
V2ViQ29yZUJyaWRnZTIwR2V0VXJsT2ZOb2RlSW5Gb2N1c0xFUjZUUG9pbnQgQCAxMjUgTk9OQU1F
DQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMjROYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JFUjZU
UG9pbnRSMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZVI1VFJlY3QgQCAxMjYgTk9OQU1FDQor
ICAgIF9aTksxNENXZWJDb3JlQnJpZGdlM1VSTEV2IEAgMTI3IE5PTkFNRQ0KKyAgICBfWk5LMTRD
V2ViQ29yZUJyaWRnZTROYW1lRXYgQCAxMjggTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJp
ZGdlNkRvbWFpbkV2IEAgMTI5IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZThSZWZl
cnJlckV2IEAgMTMwIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTFKYXZhRW5h
YmxlZEV2IEAgMTMxIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTRQbHVnaW5z
RW5hYmxlZEV2IEAgMTMyIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVEZWZh
dWx0Rm9udFNpemVFdiBAIDEzMyBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1
Rml4ZWRGb250RmFtaWx5RXYgQCAxMzQgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGlu
Z3MxNU1pbmltdW1Gb250U2l6ZUV2IEAgMTM1IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNl
dHRpbmdzMTVTZXJpZkZvbnRGYW1pbHlFdiBAIDEzNiBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNv
cmVTZXR0aW5nczE3Q3Vyc2l2ZUZvbnRGYW1pbHlFdiBAIDEzNyBOT05BTUUNCisgICAgX1pOSzE2
Q1dlYkNvcmVTZXR0aW5nczE3RmFudGFzeUZvbnRGYW1pbHlFdiBAIDEzOCBOT05BTUUNCisgICAg
X1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE3SmF2YVNjcmlwdEVuYWJsZWRFdiBAIDEzOSBOT05BTUUN
CisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE4QXV0b1JlZnJlc2hFbmFibGVkRXYgQCAxNDAg
Tk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOFNhdmVSYXdEYXRhRW5hYmxlZEV2
IEAgMTQxIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThTdGFuZGFyZEZvbnRG
YW1pbHlFdiBAIDE0MiBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE5RGVmYXVs
dFRleHRFbmNvZGluZ0V2IEAgMTQzIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MTlTYW5zU2VyaWZGb250RmFtaWx5RXYgQCAxNDQgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3Jl
U2V0dGluZ3MyMERlZmF1bHRGaXhlZEZvbnRTaXplRXYgQCAxNDUgTk9OQU1FDQorICAgIF9aTksx
NkNXZWJDb3JlU2V0dGluZ3MyMk1pbmltdW1Mb2dpY2FsRm9udFNpemVFdiBAIDE0NiBOT05BTUUN
CisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIyU2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0V2IEAg
MTQ3IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJVc2VyU3R5bGVTaGVldExv
Y2F0aW9uRXYgQCAxNDggTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MyN1dpbGxM
b2FkSW1hZ2VzQXV0b21hdGljYWxseUV2IEAgMTQ5IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29y
ZVNldHRpbmdzMzdKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RXYgQCAxNTAg
Tk9OQU1FDQorICAgIF9aVEkxNENXZWJDb3JlQnJpZGdlIEAgMTUxIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJMTZDV2ViQ29yZVNldHRpbmdzIEAgMTUyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJMjBDV2ViQ29yZVBhZ2VEYXRhSXRlbSBAIDE1MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
STIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCAxNTQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9a
VFYxNENXZWJDb3JlQnJpZGdlIEAgMTU1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWMTZDV2Vi
Q29yZVNldHRpbmdzIEAgMTU2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWMjBDV2ViQ29yZVBh
Z2VEYXRhSXRlbSBAIDE1NyBOT05BTUUgOyAjPFZUPiMNCisgICAgICAgIF9aVFYyM0NXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0IEAgMTU4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICAgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTE3R2V0UmVuZGVyVGV4dEFyZWFFUks3VERlc0MxNlI2UkFycmF5STVUUmVjdEUg
QCAxNTkgTk9OQU1FDQorICAgICAgICBfWk4xNENXZWJDb3JlQnJpZGdlMzFHZXROZXh0UmVuZGVy
VGV4dEZvclNtYXJ0TGlua3NMRVJpIEAgMTYwIE5PTkFNRQ0KKyAgICAgICAgX1pOMTRDV2ViQ29y
ZUJyaWRnZTIwV2luZG93U2NyaXB0TlBPYmplY3RFdiBAIDE2MSBOT05BTUUNCiANCkluZGV4OiBX
ZWJDb3JlL2dyb3VwL0tIVE1MLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZ3JvdXAvS0hU
TUwubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2dyb3VwL0tIVE1MLm1tcAkod29y
a2luZyBjb3B5KQ0KQEAgLTU5LDYgKzU5LDcgQEANCiBTWVNURU1JTkNMVURFICAgICAgIC4uXC4u
XC4NCiBTWVNURU1JTkNMVURFICAgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGtqcw0KIFNZU1RF
TUlOQ0xVREUgICAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVccGNyZQ0KK1NZU1RFTUlOQ0xVREUg
ICAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVcYmluZGluZ3MNCiBTWVNURU1JTkNMVURFICAgICAg
IC4uXC4uXE1lbW9yeU1hbmFnZXJcSW5jDQogI2lmbmRlZiBfX0JST1dTRVJfU0RLDQogU1lTVEVN
SU5DTFVERSAgICAgICBcUzYwXGxpYnhtbDJwYXJzZXJceG1sZW5naW5lXGluY1xsaWJ4bWwNCklu
ZGV4OiBXZWJDb3JlL2dyb3VwL0tXUS5tbXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2dyb3Vw
L0tXUS5tbXAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvZ3JvdXAvS1dRLm1tcAkod29y
a2luZyBjb3B5KQ0KQEAgLTYyLDYgKzYyLDcgQEANCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxK
YXZhU2NyaXB0Q29yZQ0KIFNZU1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGtq
cw0KIFNZU1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXHBjcmUNCitTWVNURU1J
TkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxiaW5kaW5ncw0KIFNZU1RFTUlOQ0xVREUg
ICAgIC4uXC4uXE1lbW9yeU1hbmFnZXJcSW5jDQogDQogT1BUSU9OIENXIC1wcmVmaXggcHJhZ21h
cy5wcmVmDQpJbmRleDogV2ViQ29yZS9ncm91cC9XZWJDb3JlLm1tcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvZ3JvdXAvV2ViQ29yZS5tbXAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUv
Z3JvdXAvV2ViQ29yZS5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC02Myw2ICs2Myw3IEBADQogU1lT
VEVNSU5DTFVERSAgICAgICAuLlxraHRtbFxlZGl0aW5nDQogU1lTVEVNSU5DTFVERSAgICAgLi5c
Li5cSmF2YVNjcmlwdENvcmVca2pzDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlw
dENvcmVccGNyZQ0KK1NZU1RFTUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGJpbmRp
bmdzDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cTWVtb3J5TWFuYWdlclxJbmMNCiANCiANCklu
ZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysg
V2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM2
MSwxMyArMzYxLDEzIEBADQogICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBBUFBMRV9DSEFOR0VT
ICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogYm9vbCBTY3JpcHRJbnRlcnBy
ZXRlcjo6aXNHbG9iYWxPYmplY3QoY29uc3QgVmFsdWUgJnYpCiB7CiAgICAgaWYgKHYudHlwZSgp
ID09IE9iamVjdFR5cGUpIHsKLQlPYmplY3QgbyA9IHYudG9PYmplY3QgKGdsb2JhbEV4ZWMoKSk7
Ci0JaWYgKG8uY2xhc3NJbmZvKCkgPT0gJldpbmRvdzo6aW5mbykKLQkgICAgcmV0dXJuIHRydWU7
CisgICAgT2JqZWN0IG8gPSB2LnRvT2JqZWN0IChnbG9iYWxFeGVjKCkpOworICAgIGlmIChvLmNs
YXNzSW5mbygpID09ICZXaW5kb3c6OmluZm8pCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zODksMTEgKzM4OSwxMiBAQA0KIHsKICAgICB2b2lk
ICpyZXN1bHQgPSAwOwogCisjaWYgIU5PS0lBX0NIQU5HRVMKICAgICBpZiAobGFuZ3VhZ2UgPT0g
QmluZGluZ3M6Okluc3RhbmNlOjpPYmplY3RpdmVDTGFuZ3VhZ2UpCi0JcmVzdWx0ID0gY3JlYXRl
T2JqY0luc3RhbmNlRm9yVmFsdWUgKGV4ZWMsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwotCisg
ICAgcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFsdWUgKGV4ZWMsIHZhbHVlLCBvcmln
aW4sIGN1cnJlbnQpOworI2VuZGlmCiAgICAgaWYgKCFyZXN1bHQpCi0JcmVzdWx0ID0gSW50ZXJw
cmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgbGFuZ3VhZ2UsIHZh
bHVlLCBvcmlnaW4sIGN1cnJlbnQpOworICAgIHJlc3VsdCA9IEludGVycHJldGVyOjpjcmVhdGVM
YW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKGV4ZWMsIGxhbmd1YWdlLCB2YWx1ZSwgb3JpZ2luLCBj
dXJyZW50KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX2JpbmRpbmcuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNf
YmluZGluZy5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2Jp
bmRpbmcuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDcgKzMxLDcgQEANCiAjaW5jbHVkZSA8a2pz
L2xvb2t1cC5oPgogI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CiAKLSNpZiBBUFBMRV9DSEFOR0VT
ICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUuaD4KICNlbmRpZgogCkBAIC0xNDAsNyArMTQwLDcgQEANCiAKICAgICBE
T006OkV2ZW50ICpnZXRDdXJyZW50RXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2V2dDsgfQogCi0j
aWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICAg
ICB2aXJ0dWFsIGJvb2wgaXNHbG9iYWxPYmplY3QoY29uc3QgVmFsdWUgJnYpOwogICAgIHZpcnR1
YWwgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0IChjb25zdCBWYWx1ZUlt
cCAqaW1wKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlU2NyaXB0IChjb25zdCBJbnRlcnByZXRl
ciAqdGFyZ2V0KTsKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcAkocmV2aXNpb24gMTcwNjkp
DQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDMsNyArNDMsNyBAQA0KIAogI2luY2x1ZGUgIm1pc2MvaHRtbHRhZ3MuaCIKIAotI2lmIEFQUExF
X0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvcnVudGltZV9vYmplY3QuaD4KICNlbmRpZgogCkBAIC01OCwyMSArNTgs
MjEgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvKiBTb3VyY2UgZm9yIERPTU5vZGVQcm90b1Rh
YmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Ob2Rl
UHJvdG9UYWJsZSAxMwotICBpbnNlcnRCZWZvcmUJRE9NTm9kZTo6SW5zZXJ0QmVmb3JlCURvbnRE
ZWxldGV8RnVuY3Rpb24gMgotICByZXBsYWNlQ2hpbGQJRE9NTm9kZTo6UmVwbGFjZUNoaWxkCURv
bnREZWxldGV8RnVuY3Rpb24gMgotICByZW1vdmVDaGlsZAlET01Ob2RlOjpSZW1vdmVDaGlsZAlE
b250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgYXBwZW5kQ2hpbGQJRE9NTm9kZTo6QXBwZW5kQ2hpbGQJ
RG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGhhc0F0dHJpYnV0ZXMJRE9NTm9kZTo6SGFzQXR0cmli
dXRlcwlEb250RGVsZXRlfEZ1bmN0aW9uIDAKLSAgaGFzQ2hpbGROb2RlcwlET01Ob2RlOjpIYXND
aGlsZE5vZGVzCURvbnREZWxldGV8RnVuY3Rpb24gMAotICBjbG9uZU5vZGUJRE9NTm9kZTo6Q2xv
bmVOb2RlCURvbnREZWxldGV8RnVuY3Rpb24gMQorICBpbnNlcnRCZWZvcmUgIERPTU5vZGU6Oklu
c2VydEJlZm9yZSAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZXBsYWNlQ2hpbGQgIERPTU5v
ZGU6OlJlcGxhY2VDaGlsZCAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZW1vdmVDaGlsZCAg
IERPTU5vZGU6OlJlbW92ZUNoaWxkICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBhcHBlbmRD
aGlsZCAgIERPTU5vZGU6OkFwcGVuZENoaWxkICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBo
YXNBdHRyaWJ1dGVzIERPTU5vZGU6Okhhc0F0dHJpYnV0ZXMgIERvbnREZWxldGV8RnVuY3Rpb24g
MAorICBoYXNDaGlsZE5vZGVzIERPTU5vZGU6Okhhc0NoaWxkTm9kZXMgIERvbnREZWxldGV8RnVu
Y3Rpb24gMAorICBjbG9uZU5vZGUgRE9NTm9kZTo6Q2xvbmVOb2RlICBEb250RGVsZXRlfEZ1bmN0
aW9uIDEKICMgRE9NMgotICBub3JtYWxpemUJRE9NTm9kZTo6Tm9ybWFsaXplCURvbnREZWxldGV8
RnVuY3Rpb24gMAotICBpc1N1cHBvcnRlZCAgIERPTU5vZGU6OklzU3VwcG9ydGVkCURvbnREZWxl
dGV8RnVuY3Rpb24gMgorICBub3JtYWxpemUgRE9NTm9kZTo6Tm9ybWFsaXplICBEb250RGVsZXRl
fEZ1bmN0aW9uIDAKKyAgaXNTdXBwb3J0ZWQgICBET01Ob2RlOjpJc1N1cHBvcnRlZCAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDIKICMgZnJvbSB0aGUgRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gIGFk
ZEV2ZW50TGlzdGVuZXIJRE9NTm9kZTo6QWRkRXZlbnRMaXN0ZW5lcglEb250RGVsZXRlfEZ1bmN0
aW9uIDMKLSAgcmVtb3ZlRXZlbnRMaXN0ZW5lcglET01Ob2RlOjpSZW1vdmVFdmVudExpc3RlbmVy
CURvbnREZWxldGV8RnVuY3Rpb24gMwotICBkaXNwYXRjaEV2ZW50CQlET01Ob2RlOjpEaXNwYXRj
aEV2ZW50CURvbnREZWxldGV8RnVuY3Rpb24gMQotICBjb250YWlucwlET01Ob2RlOjpDb250YWlu
cwkJRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGFkZEV2ZW50TGlzdGVuZXIgIERPTU5vZGU6OkFk
ZEV2ZW50TGlzdGVuZXIgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgcmVtb3ZlRXZlbnRMaXN0
ZW5lciAgIERPTU5vZGU6OlJlbW92ZUV2ZW50TGlzdGVuZXIgICAgRG9udERlbGV0ZXxGdW5jdGlv
biAzCisgIGRpc3BhdGNoRXZlbnQgICAgIERPTU5vZGU6OkRpc3BhdGNoRXZlbnQgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQorICBjb250YWlucyAgRE9NTm9kZTo6Q29udGFpbnMgICAgICAgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCiAjICJET00gbGV2ZWwgMCIgKGZyb20gR2Vja28gRE9NIHJlZmVyZW5j
ZTsgYWxzbyBpbiBXaW5JRSkKICAgaXRlbSAgICAgICAgICBET01Ob2RlOjpJdGVtICAgICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKIEBlbmQKQEAgLTExMyw3ICsxMTMsNyBAQA0KICAgICBE
T01PYmplY3Q6Om1hcmsoKTsKICAgICByZXR1cm47CiAgIH0KLSAgCisKICAgLy8gVGhpcyBpcyBh
IG5vZGUgb3V0c2lkZSB0aGUgZG9jdW1lbnQsIHNvIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUg
aXQgaXMgaW4sCiAgIC8vIGFuZCBzdGFydCBtYXJraW5nIGZyb20gdGhlcmUuCiAgIE5vZGVJbXBs
ICpyb290ID0gbm9kZS5oYW5kbGUoKTsKQEAgLTE2Myw3NSArMTYzLDc1IEBADQogCiAvKiBTb3Vy
Y2UgZm9yIERPTU5vZGVUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUu
CiBAYmVnaW4gRE9NTm9kZVRhYmxlIDY3Ci0gIG5vZGVOYW1lCURPTU5vZGU6Ok5vZGVOYW1lCURv
bnREZWxldGV8UmVhZE9ubHkKLSAgbm9kZVZhbHVlCURPTU5vZGU6Ok5vZGVWYWx1ZQlEb250RGVs
ZXRlCi0gIG5vZGVUeXBlCURPTU5vZGU6Ok5vZGVUeXBlCURvbnREZWxldGV8UmVhZE9ubHkKLSAg
cGFyZW50Tm9kZQlET01Ob2RlOjpQYXJlbnROb2RlCURvbnREZWxldGV8UmVhZE9ubHkKLSAgcGFy
ZW50RWxlbWVudAlET01Ob2RlOjpQYXJlbnRFbGVtZW50CURvbnREZWxldGV8UmVhZE9ubHkKLSAg
Y2hpbGROb2RlcwlET01Ob2RlOjpDaGlsZE5vZGVzCURvbnREZWxldGV8UmVhZE9ubHkKLSAgZmly
c3RDaGlsZAlET01Ob2RlOjpGaXJzdENoaWxkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgbGFzdENo
aWxkCURPTU5vZGU6Okxhc3RDaGlsZAlEb250RGVsZXRlfFJlYWRPbmx5CisgIG5vZGVOYW1lICBE
T01Ob2RlOjpOb2RlTmFtZSAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgbm9kZVZhbHVlIERPTU5v
ZGU6Ok5vZGVWYWx1ZSAgRG9udERlbGV0ZQorICBub2RlVHlwZSAgRE9NTm9kZTo6Tm9kZVR5cGUg
ICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHBhcmVudE5vZGUgICAgRE9NTm9kZTo6UGFyZW50Tm9k
ZSBEb250RGVsZXRlfFJlYWRPbmx5CisgIHBhcmVudEVsZW1lbnQgRE9NTm9kZTo6UGFyZW50RWxl
bWVudCAgRG9udERlbGV0ZXxSZWFkT25seQorICBjaGlsZE5vZGVzICAgIERPTU5vZGU6OkNoaWxk
Tm9kZXMgRG9udERlbGV0ZXxSZWFkT25seQorICBmaXJzdENoaWxkICAgIERPTU5vZGU6OkZpcnN0
Q2hpbGQgRG9udERlbGV0ZXxSZWFkT25seQorICBsYXN0Q2hpbGQgRE9NTm9kZTo6TGFzdENoaWxk
ICBEb250RGVsZXRlfFJlYWRPbmx5CiAgIHByZXZpb3VzU2libGluZyAgRE9NTm9kZTo6UHJldmlv
dXNTaWJsaW5nIERvbnREZWxldGV8UmVhZE9ubHkKLSAgbmV4dFNpYmxpbmcJRE9NTm9kZTo6TmV4
dFNpYmxpbmcJRG9udERlbGV0ZXxSZWFkT25seQotICBhdHRyaWJ1dGVzCURPTU5vZGU6OkF0dHJp
YnV0ZXMJRG9udERlbGV0ZXxSZWFkT25seQotICBuYW1lc3BhY2VVUkkJRE9NTm9kZTo6TmFtZXNw
YWNlVVJJCURvbnREZWxldGV8UmVhZE9ubHkKKyAgbmV4dFNpYmxpbmcgICBET01Ob2RlOjpOZXh0
U2libGluZyAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGF0dHJpYnV0ZXMgICAgRE9NTm9kZTo6
QXR0cmlidXRlcyBEb250RGVsZXRlfFJlYWRPbmx5CisgIG5hbWVzcGFjZVVSSSAgRE9NTm9kZTo6
TmFtZXNwYWNlVVJJICAgRG9udERlbGV0ZXxSZWFkT25seQogIyBET00yCi0gIHByZWZpeAlET01O
b2RlOjpQcmVmaXgJCURvbnREZWxldGUKLSAgbG9jYWxOYW1lCURPTU5vZGU6OkxvY2FsTmFtZQlE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIG93bmVyRG9jdW1lbnQJRE9NTm9kZTo6T3duZXJEb2N1bWVu
dAlEb250RGVsZXRlfFJlYWRPbmx5CisgIHByZWZpeCAgICBET01Ob2RlOjpQcmVmaXggICAgIERv
bnREZWxldGUKKyAgbG9jYWxOYW1lIERPTU5vZGU6OkxvY2FsTmFtZSAgRG9udERlbGV0ZXxSZWFk
T25seQorICBvd25lckRvY3VtZW50IERPTU5vZGU6Ok93bmVyRG9jdW1lbnQgIERvbnREZWxldGV8
UmVhZE9ubHkKICMKLSAgb25hYm9ydAlET01Ob2RlOjpPbkFib3J0CQlEb250RGVsZXRlCi0gIG9u
Ymx1cglET01Ob2RlOjpPbkJsdXIJCQlEb250RGVsZXRlCi0gIG9uY2hhbmdlCURPTU5vZGU6Ok9u
Q2hhbmdlCQlEb250RGVsZXRlCi0gIG9uY2xpY2sJRE9NTm9kZTo6T25DbGljawkJRG9udERlbGV0
ZQotICBvbmNvbnRleHRtZW51CURPTU5vZGU6Ok9uQ29udGV4dE1lbnUJCURvbnREZWxldGUKLSAg
b25kYmxjbGljawlET01Ob2RlOjpPbkRibENsaWNrCQlEb250RGVsZXRlCi0gIG9uYmVmb3JlY3V0
CURPTU5vZGU6Ok9uQmVmb3JlQ3V0CQlEb250RGVsZXRlCisgIG9uYWJvcnQgICBET01Ob2RlOjpP
bkFib3J0ICAgICAgICBEb250RGVsZXRlCisgIG9uYmx1ciAgICBET01Ob2RlOjpPbkJsdXIgICAg
ICAgICBEb250RGVsZXRlCisgIG9uY2hhbmdlICBET01Ob2RlOjpPbkNoYW5nZSAgICAgICBEb250
RGVsZXRlCisgIG9uY2xpY2sgICBET01Ob2RlOjpPbkNsaWNrICAgICAgICBEb250RGVsZXRlCisg
IG9uY29udGV4dG1lbnUgRE9NTm9kZTo6T25Db250ZXh0TWVudSAgICAgIERvbnREZWxldGUKKyAg
b25kYmxjbGljayAgICBET01Ob2RlOjpPbkRibENsaWNrICAgICBEb250RGVsZXRlCisgIG9uYmVm
b3JlY3V0ICAgRE9NTm9kZTo6T25CZWZvcmVDdXQgICAgICAgIERvbnREZWxldGUKICAgb25jdXQg
ICAgICAgICBET01Ob2RlOjpPbkN1dCAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25i
ZWZvcmVjb3B5CURPTU5vZGU6Ok9uQmVmb3JlQ29weQkJRG9udERlbGV0ZQotICBvbmNvcHkJRE9N
Tm9kZTo6T25Db3B5ICAgICAgICAgICAgICAgICBEb250RGVsZXRlCi0gIG9uYmVmb3JlcGFzdGUJ
RE9NTm9kZTo6T25CZWZvcmVQYXN0ZQkJRG9udERlbGV0ZQotICBvbnBhc3RlCURPTU5vZGU6Ok9u
UGFzdGUJCURvbnREZWxldGUKLSAgb25kcmFnCURPTU5vZGU6Ok9uRHJhZwkJCURvbnREZWxldGUK
LSAgb25kcmFnZHJvcAlET01Ob2RlOjpPbkRyYWdEcm9wCQlEb250RGVsZXRlCi0gIG9uZHJhZ2Vu
ZAlET01Ob2RlOjpPbkRyYWdFbmQJCURvbnREZWxldGUKLSAgb25kcmFnZW50ZXIJRE9NTm9kZTo6
T25EcmFnRW50ZXIJCURvbnREZWxldGUKLSAgb25kcmFnbGVhdmUJRE9NTm9kZTo6T25EcmFnTGVh
dmUJCURvbnREZWxldGUKLSAgb25kcmFnb3ZlcglET01Ob2RlOjpPbkRyYWdPdmVyCQlEb250RGVs
ZXRlCi0gIG9uZHJhZ3N0YXJ0CURPTU5vZGU6Ok9uRHJhZ1N0YXJ0CQlEb250RGVsZXRlCi0gIG9u
ZHJvcAlET01Ob2RlOjpPbkRyb3AgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25lcnJv
cglET01Ob2RlOjpPbkVycm9yCQlEb250RGVsZXRlCi0gIG9uZm9jdXMJRE9NTm9kZTo6T25Gb2N1
cyAgICAgICAJCURvbnREZWxldGUKKyAgb25iZWZvcmVjb3B5ICBET01Ob2RlOjpPbkJlZm9yZUNv
cHkgICAgICAgRG9udERlbGV0ZQorICBvbmNvcHkgICAgRE9NTm9kZTo6T25Db3B5ICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlCisgIG9uYmVmb3JlcGFzdGUgRE9NTm9kZTo6T25CZWZvcmVQYXN0
ZSAgICAgIERvbnREZWxldGUKKyAgb25wYXN0ZSAgIERPTU5vZGU6Ok9uUGFzdGUgICAgICAgIERv
bnREZWxldGUKKyAgb25kcmFnICAgIERPTU5vZGU6Ok9uRHJhZyAgICAgICAgIERvbnREZWxldGUK
KyAgb25kcmFnZHJvcCAgICBET01Ob2RlOjpPbkRyYWdEcm9wICAgICBEb250RGVsZXRlCisgIG9u
ZHJhZ2VuZCBET01Ob2RlOjpPbkRyYWdFbmQgICAgICBEb250RGVsZXRlCisgIG9uZHJhZ2VudGVy
ICAgRE9NTm9kZTo6T25EcmFnRW50ZXIgICAgICAgIERvbnREZWxldGUKKyAgb25kcmFnbGVhdmUg
ICBET01Ob2RlOjpPbkRyYWdMZWF2ZSAgICAgICAgRG9udERlbGV0ZQorICBvbmRyYWdvdmVyICAg
IERPTU5vZGU6Ok9uRHJhZ092ZXIgICAgIERvbnREZWxldGUKKyAgb25kcmFnc3RhcnQgICBET01O
b2RlOjpPbkRyYWdTdGFydCAgICAgICAgRG9udERlbGV0ZQorICBvbmRyb3AgICAgRE9NTm9kZTo6
T25Ecm9wICAgICAgICAgICAgICAgICBEb250RGVsZXRlCisgIG9uZXJyb3IgICBET01Ob2RlOjpP
bkVycm9yICAgICAgICBEb250RGVsZXRlCisgIG9uZm9jdXMgICBET01Ob2RlOjpPbkZvY3VzICAg
ICAgICAgICAgRG9udERlbGV0ZQogICBvbmlucHV0ICAgICAgIERPTU5vZGU6Ok9uSW5wdXQgICAg
ICAgICAgICAgICAgRG9udERlbGV0ZQotICBvbmtleWRvd24JRE9NTm9kZTo6T25LZXlEb3duCQlE
b250RGVsZXRlCi0gIG9ua2V5cHJlc3MJRE9NTm9kZTo6T25LZXlQcmVzcwkJRG9udERlbGV0ZQot
ICBvbmtleXVwCURPTU5vZGU6Ok9uS2V5VXAJCURvbnREZWxldGUKLSAgb25sb2FkCURPTU5vZGU6
Ok9uTG9hZAkJCURvbnREZWxldGUKLSAgb25tb3VzZWRvd24JRE9NTm9kZTo6T25Nb3VzZURvd24J
CURvbnREZWxldGUKLSAgb25tb3VzZW1vdmUJRE9NTm9kZTo6T25Nb3VzZU1vdmUJCURvbnREZWxl
dGUKLSAgb25tb3VzZW91dAlET01Ob2RlOjpPbk1vdXNlT3V0CQlEb250RGVsZXRlCi0gIG9ubW91
c2VvdmVyCURPTU5vZGU6Ok9uTW91c2VPdmVyCQlEb250RGVsZXRlCi0gIG9ubW91c2V1cAlET01O
b2RlOjpPbk1vdXNlVXAJCURvbnREZWxldGUKLSAgb25tb3VzZXdoZWVsCURPTU5vZGU6Ok9uTW91
c2VXaGVlbAkJRG9udERlbGV0ZQotICBvbm1vdmUJRE9NTm9kZTo6T25Nb3ZlCQkJRG9udERlbGV0
ZQotICBvbnJlc2V0CURPTU5vZGU6Ok9uUmVzZXQJCURvbnREZWxldGUKLSAgb25yZXNpemUJRE9N
Tm9kZTo6T25SZXNpemUJCURvbnREZWxldGUKKyAgb25rZXlkb3duIERPTU5vZGU6Ok9uS2V5RG93
biAgICAgIERvbnREZWxldGUKKyAgb25rZXlwcmVzcyAgICBET01Ob2RlOjpPbktleVByZXNzICAg
ICBEb250RGVsZXRlCisgIG9ua2V5dXAgICBET01Ob2RlOjpPbktleVVwICAgICAgICBEb250RGVs
ZXRlCisgIG9ubG9hZCAgICBET01Ob2RlOjpPbkxvYWQgICAgICAgICBEb250RGVsZXRlCisgIG9u
bW91c2Vkb3duICAgRE9NTm9kZTo6T25Nb3VzZURvd24gICAgICAgIERvbnREZWxldGUKKyAgb25t
b3VzZW1vdmUgICBET01Ob2RlOjpPbk1vdXNlTW92ZSAgICAgICAgRG9udERlbGV0ZQorICBvbm1v
dXNlb3V0ICAgIERPTU5vZGU6Ok9uTW91c2VPdXQgICAgIERvbnREZWxldGUKKyAgb25tb3VzZW92
ZXIgICBET01Ob2RlOjpPbk1vdXNlT3ZlciAgICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNldXAg
RE9NTm9kZTo6T25Nb3VzZVVwICAgICAgRG9udERlbGV0ZQorICBvbm1vdXNld2hlZWwgIERPTU5v
ZGU6Ok9uTW91c2VXaGVlbCAgICAgICBEb250RGVsZXRlCisgIG9ubW92ZSAgICBET01Ob2RlOjpP
bk1vdmUgICAgICAgICBEb250RGVsZXRlCisgIG9ucmVzZXQgICBET01Ob2RlOjpPblJlc2V0ICAg
ICAgICBEb250RGVsZXRlCisgIG9ucmVzaXplICBET01Ob2RlOjpPblJlc2l6ZSAgICAgICBEb250
RGVsZXRlCiAgIG9uc2Nyb2xsICAgICAgRE9NTm9kZTo6T25TY3JvbGwgICAgICAgICAgICAgICBE
b250RGVsZXRlCiAgIG9uc2VhcmNoICAgICAgRE9NTm9kZTo6T25TZWFyY2ggICAgICAgICAgICAg
ICBEb250RGVsZXRlCi0gIG9uc2VsZWN0CURPTU5vZGU6Ok9uU2VsZWN0CQlEb250RGVsZXRlCi0g
IG9uc2VsZWN0c3RhcnQJRE9NTm9kZTo6T25TZWxlY3RTdGFydAkJRG9udERlbGV0ZQotICBvbnN1
Ym1pdAlET01Ob2RlOjpPblN1Ym1pdAkJRG9udERlbGV0ZQotICBvbnVubG9hZAlET01Ob2RlOjpP
blVubG9hZAkJRG9udERlbGV0ZQorICBvbnNlbGVjdCAgRE9NTm9kZTo6T25TZWxlY3QgICAgICAg
RG9udERlbGV0ZQorICBvbnNlbGVjdHN0YXJ0IERPTU5vZGU6Ok9uU2VsZWN0U3RhcnQgICAgICBE
b250RGVsZXRlCisgIG9uc3VibWl0ICBET01Ob2RlOjpPblN1Ym1pdCAgICAgICBEb250RGVsZXRl
CisgIG9udW5sb2FkICBET01Ob2RlOjpPblVubG9hZCAgICAgICBEb250RGVsZXRlCiAjIElFIGV4
dGVuc2lvbnMKLSAgb2Zmc2V0TGVmdAlET01Ob2RlOjpPZmZzZXRMZWZ0CQlEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIG9mZnNldFRvcAlET01Ob2RlOjpPZmZzZXRUb3AJCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgb2Zmc2V0V2lkdGgJRE9NTm9kZTo6T2Zmc2V0V2lkdGgJCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgb2Zmc2V0SGVpZ2h0CURPTU5vZGU6Ok9mZnNldEhlaWdodAkJRG9udERlbGV0ZXxSZWFk
T25seQotICBvZmZzZXRQYXJlbnQJRE9NTm9kZTo6T2Zmc2V0UGFyZW50CQlEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIGNsaWVudFdpZHRoCURPTU5vZGU6OkNsaWVudFdpZHRoCQlEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIGNsaWVudEhlaWdodAlET01Ob2RlOjpDbGllbnRIZWlnaHQJCURvbnREZWxldGV8
UmVhZE9ubHkKLSAgc2Nyb2xsTGVmdAlET01Ob2RlOjpTY3JvbGxMZWZ0CQlEb250RGVsZXRlCi0g
IHNjcm9sbFRvcAlET01Ob2RlOjpTY3JvbGxUb3AJCURvbnREZWxldGUKKyAgb2Zmc2V0TGVmdCAg
ICBET01Ob2RlOjpPZmZzZXRMZWZ0ICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9mZnNldFRv
cCBET01Ob2RlOjpPZmZzZXRUb3AgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9mZnNldFdp
ZHRoICAgRE9NTm9kZTo6T2Zmc2V0V2lkdGggICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAg
b2Zmc2V0SGVpZ2h0ICBET01Ob2RlOjpPZmZzZXRIZWlnaHQgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBvZmZzZXRQYXJlbnQgIERPTU5vZGU6Ok9mZnNldFBhcmVudCAgICAgICBEb250RGVs
ZXRlfFJlYWRPbmx5CisgIGNsaWVudFdpZHRoICAgRE9NTm9kZTo6Q2xpZW50V2lkdGggICAgICAg
IERvbnREZWxldGV8UmVhZE9ubHkKKyAgY2xpZW50SGVpZ2h0ICBET01Ob2RlOjpDbGllbnRIZWln
aHQgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBzY3JvbGxMZWZ0ICAgIERPTU5vZGU6OlNj
cm9sbExlZnQgICAgIERvbnREZWxldGUKKyAgc2Nyb2xsVG9wIERPTU5vZGU6OlNjcm9sbFRvcCAg
ICAgIERvbnREZWxldGUKICAgc2Nyb2xsV2lkdGggICBET01Ob2RlOjpTY3JvbGxXaWR0aCAgICAg
ICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKICAgc2Nyb2xsSGVpZ2h0ICBET01Ob2RlOjpTY3Jv
bGxIZWlnaHQgICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKQEAgLTMxNCw5ICsz
MTQsOSBAQA0KICAgY2FzZSBPbk1vdXNlT3ZlcjoKICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9N
OjpFdmVudEltcGw6Ok1PVVNFT1ZFUl9FVkVOVCk7CiAgIGNhc2UgT25Nb3VzZVVwOgotICAgIHJl
dHVybiBnZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6TU9VU0VVUF9FVkVOVCk7ICAgICAgCisg
ICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpNT1VTRVVQX0VWRU5UKTsKICAg
Y2FzZSBPbk1vdXNlV2hlZWw6Ci0gICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBs
OjpNT1VTRVdIRUVMX0VWRU5UKTsgICAgICAKKyAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpF
dmVudEltcGw6Ok1PVVNFV0hFRUxfRVZFTlQpOwogICBjYXNlIE9uQmVmb3JlQ3V0OgogICAgIHJl
dHVybiBnZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6QkVGT1JFQ1VUX0VWRU5UKTsKICAgY2Fz
ZSBPbkN1dDoKQEAgLTYwMyw5ICs2MDMsOSBAQA0KICAgICBET006OkV2ZW50TGlzdGVuZXIgKmxp
c3RlbmVyID0gbm9kZS5oYW5kbGUoKS0+Z2V0SFRNTEV2ZW50TGlzdGVuZXIoZXZlbnRJZCk7CiAg
ICAgSlNFdmVudExpc3RlbmVyICpqc0xpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNFdmVudExpc3Rl
bmVyKj4obGlzdGVuZXIpOwogICAgIGlmICgganNMaXN0ZW5lciAmJiBqc0xpc3RlbmVyLT5saXN0
ZW5lck9iakltcCgpICkKLQlyZXR1cm4ganNMaXN0ZW5lci0+bGlzdGVuZXJPYmooKTsKKyAgICBy
ZXR1cm4ganNMaXN0ZW5lci0+bGlzdGVuZXJPYmooKTsKICAgICBlbHNlCi0JcmV0dXJuIE51bGwo
KTsKKyAgICByZXR1cm4gTnVsbCgpOwogfQogCiB2b2lkIERPTU5vZGU6OnB1c2hFdmVudEhhbmRs
ZXJTY29wZShFeGVjU3RhdGUgKiwgU2NvcGVDaGFpbiAmKSBjb25zdApAQCAtNjU4LDEzICs2NTgs
MTMgQEANCiAgICAgY2FzZSBET01Ob2RlOjpDb250YWluczoKICAgICB7CiAgICAgICAgIGludCBl
eGNlcHRpb25jb2RlPTA7Ci0JRE9NOjpOb2RlIG90aGVyID0gdG9Ob2RlKGFyZ3NbMF0pOwotCWlm
ICghb3RoZXIuaXNOdWxsKCkgJiYgbm9kZS5ub2RlVHlwZSgpPT1ET006Ok5vZGU6OkVMRU1FTlRf
Tk9ERSkKLQl7Ci0JICAgIERPTTo6Tm9kZUJhc2VJbXBsICppbXBsID0gc3RhdGljX2Nhc3Q8RE9N
OjpOb2RlQmFzZUltcGwgKj4obm9kZS5oYW5kbGUoKSk7Ci0JICAgIGJvb2wgcmV0dmFsID0gIWlt
cGwtPmNoZWNrTm9Pd25lcihvdGhlci5oYW5kbGUoKSxleGNlcHRpb25jb2RlKTsKLQkgICAgcmV0
dXJuIEJvb2xlYW4ocmV0dmFsICYmIGV4Y2VwdGlvbmNvZGUgPT0gMCk7Ci0JfQorICAgIERPTTo6
Tm9kZSBvdGhlciA9IHRvTm9kZShhcmdzWzBdKTsKKyAgICBpZiAoIW90aGVyLmlzTnVsbCgpICYm
IG5vZGUubm9kZVR5cGUoKT09RE9NOjpOb2RlOjpFTEVNRU5UX05PREUpCisgICAgeworICAgICAg
ICBET006Ok5vZGVCYXNlSW1wbCAqaW1wbCA9IHN0YXRpY19jYXN0PERPTTo6Tm9kZUJhc2VJbXBs
ICo+KG5vZGUuaGFuZGxlKCkpOworICAgICAgICBib29sIHJldHZhbCA9ICFpbXBsLT5jaGVja05v
T3duZXIob3RoZXIuaGFuZGxlKCksZXhjZXB0aW9uY29kZSk7CisgICAgICAgIHJldHVybiBCb29s
ZWFuKHJldHZhbCAmJiBleGNlcHRpb25jb2RlID09IDApOworICAgIH0KICAgICAgICAgcmV0dXJu
IFVuZGVmaW5lZCgpOwogICAgIH0KICAgICBjYXNlIERPTU5vZGU6Okl0ZW06CkBAIC03NDksOCAr
NzQ5LDggQEANCiAgICAgT2JqZWN0IGVyciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVy
cm9yLCAiRXhjZXB0aW9uIGZyb20gRE9NTm9kZUxpc3QiKTsKICAgICBleGVjLT5zZXRFeGNlcHRp
b24oZXJyKTsKICAgICBET006Ol9leGNlcHRpb25jb2RlID0gMDsKLSAgfSAgCi0jZWxzZSAgICAg
CisgIH0KKyNlbHNlCiAgIHRyeSB7CiAgICAgdmFsID0gdHJ5Q2FsbChleGVjLCB0aGlzT2JqLCBh
cmdzKTsKICAgfQpAQCAtNzU5LDcgKzc1OSw3IEBADQogICAgIE9iamVjdCBlcnIgPSBFcnJvcjo6
Y3JlYXRlKGV4ZWMsIEdlbmVyYWxFcnJvciwgIkV4Y2VwdGlvbiBmcm9tIERPTU5vZGVMaXN0Iik7
CiAgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGVycik7CiAgIH0KLSNlbmRpZiAgCisjZW5kaWYKICAg
cmV0dXJuIHZhbDsKIH0KIApAQCAtODA1LDEwICs4MDUsMTAgQEANCiAKIC8qIFNvdXJjZSBmb3Ig
RE9NQXR0clRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdp
biBET01BdHRyVGFibGUgNQotICBuYW1lCQlET01BdHRyOjpOYW1lCQlEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIHNwZWNpZmllZAlET01BdHRyOjpTcGVjaWZpZWQJRG9udERlbGV0ZXxSZWFkT25seQot
ICB2YWx1ZQkJRE9NQXR0cjo6VmFsdWVQcm9wZXJ0eQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG93
bmVyRWxlbWVudAlET01BdHRyOjpPd25lckVsZW1lbnQJRG9udERlbGV0ZXxSZWFkT25seQorICBu
YW1lICAgICAgRE9NQXR0cjo6TmFtZSAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHNwZWNp
ZmllZCBET01BdHRyOjpTcGVjaWZpZWQgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgdmFsdWUgICAg
IERPTUF0dHI6OlZhbHVlUHJvcGVydHkgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb3duZXJFbGVt
ZW50ICBET01BdHRyOjpPd25lckVsZW1lbnQgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAq
LwogVmFsdWUgRE9NQXR0cjo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmll
ciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAtOTA3LDE0ICs5MDcsMTQgQEANCiAqLwogCiBET01E
b2N1bWVudDo6RE9NRG9jdW1lbnQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006OkRvY3VtZW50
ICZkKQotICA6IERPTU5vZGUoZCkgCi17IAorICA6IERPTU5vZGUoZCkKK3sKICAgc2V0UHJvdG90
eXBlKERPTURvY3VtZW50UHJvdG86OnNlbGYoZXhlYykpOwogfQogCiBET01Eb2N1bWVudDo6RE9N
RG9jdW1lbnQoY29uc3QgRE9NOjpEb2N1bWVudCAmZCkKLSAgOiBET01Ob2RlKGQpIAoteyAKKyAg
OiBET01Ob2RlKGQpCit7CiB9CiAKIERPTURvY3VtZW50Ojp+RE9NRG9jdW1lbnQoKQpAQCAtMTA4
OCw3ICsxMDg4LDcgQEANCiAgICAgLy8gIklmIG5vdCBzdXBwb3J0ZWQgW2ZvciBhIGNvbW1hbmQg
aWRlbnRpZmllcl0sIHRoaXMgbWV0aG9kIHJldHVybnMgYSBCb29sZWFuIHNldCB0byBmYWxzZS4i
CiAgICAgaWYgKGNvbW1hbmRWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEJvb2xlYW4o
ZmFsc2UpOwotICAgIGVsc2UgCisgICAgZWxzZQogICAgICAgICByZXR1cm4gU3RyaW5nKGNvbW1h
bmRWYWx1ZSk7CiAgIH0KICAgZGVmYXVsdDoKQEAgLTExMDIsMjEgKzExMDIsMjEgQEANCiAKIC8q
IFNvdXJjZSBmb3IgRE9NRWxlbWVudFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0
byByZWdlbmVyYXRlLgogQGJlZ2luIERPTUVsZW1lbnRQcm90b1RhYmxlIDE3Ci0gIGdldEF0dHJp
YnV0ZQkJRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBz
ZXRBdHRyaWJ1dGUJCURPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZQlEb250RGVsZXRlfEZ1bmN0aW9u
IDIKLSAgcmVtb3ZlQXR0cmlidXRlCURPTUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZQlEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKLSAgZ2V0QXR0cmlidXRlTm9kZQlET01FbGVtZW50OjpHZXRBdHRyaWJ1
dGVOb2RlCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBzZXRBdHRyaWJ1dGVOb2RlCURPTUVsZW1l
bnQ6OlNldEF0dHJpYnV0ZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlbW92ZUF0dHJp
YnV0ZU5vZGUJRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlTm9kZQlEb250RGVsZXRlfEZ1bmN0
aW9uIDEKLSAgZ2V0RWxlbWVudHNCeVRhZ05hbWUJRE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRh
Z05hbWUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGhhc0F0dHJpYnV0ZQkJRE9NRWxlbWVudDo6
SGFzQXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRBdHRyaWJ1dGVOUwlET01F
bGVtZW50OjpHZXRBdHRyaWJ1dGVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgc2V0QXR0cmli
dXRlTlMJRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0g
IHJlbW92ZUF0dHJpYnV0ZU5TCURPTUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZU5TCURvbnREZWxl
dGV8RnVuY3Rpb24gMgotICBnZXRBdHRyaWJ1dGVOb2RlTlMJRE9NRWxlbWVudDo6R2V0QXR0cmli
dXRlTm9kZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBzZXRBdHRyaWJ1dGVOb2RlTlMJRE9N
RWxlbWVudDo6U2V0QXR0cmlidXRlTm9kZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRF
bGVtZW50c0J5VGFnTmFtZU5TIERPTUVsZW1lbnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1lTlMJRG9u
dERlbGV0ZXxGdW5jdGlvbiAyCi0gIGhhc0F0dHJpYnV0ZU5TCURPTUVsZW1lbnQ6Okhhc0F0dHJp
YnV0ZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMgorICBnZXRBdHRyaWJ1dGUgICAgICBET01FbGVt
ZW50OjpHZXRBdHRyaWJ1dGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHNldEF0dHJpYnV0
ZSAgICAgIERPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIK
KyAgcmVtb3ZlQXR0cmlidXRlICAgRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlIERvbnREZWxl
dGV8RnVuY3Rpb24gMQorICBnZXRBdHRyaWJ1dGVOb2RlICBET01FbGVtZW50OjpHZXRBdHRyaWJ1
dGVOb2RlICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBzZXRBdHRyaWJ1dGVOb2RlICBET01F
bGVtZW50OjpTZXRBdHRyaWJ1dGVOb2RlICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZW1v
dmVBdHRyaWJ1dGVOb2RlICAgRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlTm9kZSBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0RWxlbWVudHNCeVRhZ05hbWUgIERPTUVsZW1lbnQ6OkdldEVs
ZW1lbnRzQnlUYWdOYW1lICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBoYXNBdHRyaWJ1dGUg
ICAgICBET01FbGVtZW50OjpIYXNBdHRyaWJ1dGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisg
IGdldEF0dHJpYnV0ZU5TICAgIERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5TICBEb250RGVsZXRl
fEZ1bmN0aW9uIDIKKyAgc2V0QXR0cmlidXRlTlMgICAgRE9NRWxlbWVudDo6U2V0QXR0cmlidXRl
TlMgIERvbnREZWxldGV8RnVuY3Rpb24gMworICByZW1vdmVBdHRyaWJ1dGVOUyBET01FbGVtZW50
OjpSZW1vdmVBdHRyaWJ1dGVOUyAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBnZXRBdHRyaWJ1
dGVOb2RlTlMgICAgRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTm9kZU5TICBEb250RGVsZXRlfEZ1
bmN0aW9uIDIKKyAgc2V0QXR0cmlidXRlTm9kZU5TICAgIERPTUVsZW1lbnQ6OlNldEF0dHJpYnV0
ZU5vZGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMg
RE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWVOUyBEb250RGVsZXRlfEZ1bmN0aW9uIDIK
KyAgaGFzQXR0cmlidXRlTlMgICAgRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlTlMgIERvbnREZWxl
dGV8RnVuY3Rpb24gMgogICBzY3JvbGxJbnRvVmlldyAgICAgICAgRE9NRWxlbWVudDo6U2Nyb2xs
SW50b1ZpZXcgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICAgZm9jdXMgICAgICAgICAgICAg
ICAgIERPTUVsZW1lbnQ6OkVsZW1lbnRGb2N1cyAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAw
CiAgIGJsdXIgICAgICAgICAgICAgICAgICBET01FbGVtZW50OjpFbGVtZW50Qmx1ciAgICAgICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMApAQCAtMTEzNCwxOSArMTEzNCwxOSBAQA0KIGNvbnN0IENs
YXNzSW5mbyBET01FbGVtZW50OjppbmZvID0geyAiRWxlbWVudCIsICZET01Ob2RlOjppbmZvLCAm
RE9NRWxlbWVudFRhYmxlLCAwIH07CiAvKiBTb3VyY2UgZm9yIERPTUVsZW1lbnRUYWJsZS4gVXNl
ICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRWxlbWVudFRhYmxl
IDMKLSAgdGFnTmFtZQlET01FbGVtZW50OjpUYWdOYW1lICAgICAgICAgICAgICAgICAgICAgICAg
IERvbnREZWxldGV8UmVhZE9ubHkKLSAgc3R5bGUJCURPTUVsZW1lbnQ6OlN0eWxlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICB0YWdOYW1lICAgRE9NRWxl
bWVudDo6VGFnTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5
CisgIHN0eWxlICAgICBET01FbGVtZW50OjpTdHlsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
IERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBET01FbGVtZW50OjpET01FbGVtZW50KEV4
ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpFbGVtZW50ICZlKQotICA6IERPTU5vZGUoZSkgCisg
IDogRE9NTm9kZShlKQogewogICBzZXRQcm90b3R5cGUoRE9NRWxlbWVudFByb3RvOjpzZWxmKGV4
ZWMpKTsKIH0KIAogRE9NRWxlbWVudDo6RE9NRWxlbWVudChjb25zdCBET006OkVsZW1lbnQgJmUp
Ci0gIDogRE9NTm9kZShlKSAKLXsgCisgIDogRE9NTm9kZShlKQorewogfQogCiBWYWx1ZSBET01F
bGVtZW50Ojp0cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0
eU5hbWUpIGNvbnN0CkBAIC0xMjMxLDcgKzEyMzEsNyBAQA0KICAgICAgIHJldHVybiBnZXRET01O
b2RlTGlzdChleGVjLGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhhcmdzWzBdLnRvU3Ry
aW5nKGV4ZWMpLnN0cmluZygpLGFyZ3NbMV0udG9TdHJpbmcoZXhlYykuc3RyaW5nKCkpKTsKICAg
ICBjYXNlIERPTUVsZW1lbnQ6Okhhc0F0dHJpYnV0ZU5TOiAvLyBET00yCiAgICAgICByZXR1cm4g
Qm9vbGVhbihlbGVtZW50Lmhhc0F0dHJpYnV0ZU5TKGFyZ3NbMF0udG9TdHJpbmcoZXhlYykuc3Ry
aW5nKCksYXJnc1sxXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSkpOwotICAgIGNhc2UgRE9NRWxl
bWVudDo6U2Nyb2xsSW50b1ZpZXc6IAorICAgIGNhc2UgRE9NRWxlbWVudDo6U2Nyb2xsSW50b1Zp
ZXc6CiAgICAgICAoYXJnc1swXS50eXBlKCkgIT0gVW5kZWZpbmVkVHlwZSAmJiBhcmdzWzBdLnR5
cGUoKSAhPSBOdWxsVHlwZSkgPyBlbGVtZW50LnNjcm9sbEludG9WaWV3KGFyZ3NbMF0udG9Cb29s
ZWFuKGV4ZWMpKSA6IGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7CiAgICAgICByZXR1cm4g
VW5kZWZpbmVkKCk7CiAgICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxCeUxpbmVzOgpAQCAtMTI0
MCw3ICsxMjQwLDcgQEANCiAgICAgICAgIERPTTo6RG9jdW1lbnRJbXBsKiBkb2NpbXBsID0gbm9k
ZS5oYW5kbGUoKS0+Z2V0RG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGRvY2ltcGwpIHsKICAgICAg
ICAgICAgIGRvY2ltcGwtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwot
ICAgICAgICB9ICAgICAgICAgICAgCisgICAgICAgIH0KICAgICAgICAga2h0bWw6OlJlbmRlck9i
amVjdCAqcmVuZCA9IG5vZGUuaGFuZGxlKCkgPyBub2RlLmhhbmRsZSgpLT5yZW5kZXJlcigpIDog
MEw7CiAgICAgICAgIGlmIChyZW5kICYmIHJlbmQtPmhhc092ZXJmbG93Q2xpcCgpKSB7CiAgICAg
ICAgICAgICBLV1FTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uID0gS1dRU2Nyb2xsRG93bjsKQEAg
LTEyNTMsNyArMTI1Myw3IEBADQogICAgICAgICAgICAgcmVuZC0+bGF5ZXIoKS0+c2Nyb2xsKGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBVbmRlZmluZWQoKTsKLSAgICAgICAgCisKICAgICB9CiAgICAgY2FzZSBET01FbGVtZW50
OjpFbGVtZW50Rm9jdXM6CiAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKQEAgLTEyNzAsMTEgKzEy
NzAsMTEgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NRE9NSW1wbGVtZW50YXRpb25Qcm90b1RhYmxl
LiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01ET01JbXBs
ZW1lbnRhdGlvblByb3RvVGFibGUgNQotICBoYXNGZWF0dXJlCQlET01ET01JbXBsZW1lbnRhdGlv
bjo6SGFzRmVhdHVyZQkJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGhhc0ZlYXR1cmUgICAgICAg
IERPTURPTUltcGxlbWVudGF0aW9uOjpIYXNGZWF0dXJlICAgICAgICBEb250RGVsZXRlfEZ1bmN0
aW9uIDIKICMgRE9NMgotICBjcmVhdGVDU1NTdHlsZVNoZWV0CURPTURPTUltcGxlbWVudGF0aW9u
OjpDcmVhdGVDU1NTdHlsZVNoZWV0CURvbnREZWxldGV8RnVuY3Rpb24gMgotICBjcmVhdGVEb2N1
bWVudFR5cGUJRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZURvY3VtZW50VHlwZQlEb250RGVs
ZXRlfEZ1bmN0aW9uIDMKLSAgY3JlYXRlRG9jdW1lbnQJRE9NRE9NSW1wbGVtZW50YXRpb246OkNy
ZWF0ZURvY3VtZW50CQlEb250RGVsZXRlfEZ1bmN0aW9uIDMKKyAgY3JlYXRlQ1NTU3R5bGVTaGVl
dCAgIERPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVDU1NTdHlsZVNoZWV0ICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAyCisgIGNyZWF0ZURvY3VtZW50VHlwZSAgICBET01ET01JbXBsZW1lbnRhdGlv
bjo6Q3JlYXRlRG9jdW1lbnRUeXBlICAgIERvbnREZWxldGV8RnVuY3Rpb24gMworICBjcmVhdGVE
b2N1bWVudCAgICBET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1lbnQgICAgICAgIERv
bnREZWxldGV8RnVuY3Rpb24gMwogICBjcmVhdGVIVE1MRG9jdW1lbnQgICAgRE9NRE9NSW1wbGVt
ZW50YXRpb246OkNyZWF0ZUhUTUxEb2N1bWVudCAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAx
CiBAZW5kCiAqLwpAQCAtMTI4NSw4ICsxMjg1LDggQEANCiBjb25zdCBDbGFzc0luZm8gRE9NRE9N
SW1wbGVtZW50YXRpb246OmluZm8gPSB7ICJET01JbXBsZW1lbnRhdGlvbiIsIDAsIDAsIDAgfTsK
IAogRE9NRE9NSW1wbGVtZW50YXRpb246OkRPTURPTUltcGxlbWVudGF0aW9uKEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgRE9NOjpET01JbXBsZW1lbnRhdGlvbiAmaSkKLSAgOiBpbXBsZW1lbnRhdGlv
bihpKSAKLXsgCisgIDogaW1wbGVtZW50YXRpb24oaSkKK3sKICAgc2V0UHJvdG90eXBlKERPTURP
TUltcGxlbWVudGF0aW9uUHJvdG86OnNlbGYoZXhlYykpOwogfQogCkBAIC0xMzI4LDEzICsxMzI4
LDEzIEBADQogCiAvKiBTb3VyY2UgZm9yIERPTURvY3VtZW50VHlwZVRhYmxlLiBVc2UgIm1ha2Ug
aGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Eb2N1bWVudFR5cGVUYWJsZSA2
Ci0gIG5hbWUJCQlET01Eb2N1bWVudFR5cGU6Ok5hbWUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAg
ZW50aXRpZXMJCURPTURvY3VtZW50VHlwZTo6RW50aXRpZXMJRG9udERlbGV0ZXxSZWFkT25seQot
ICBub3RhdGlvbnMJCURPTURvY3VtZW50VHlwZTo6Tm90YXRpb25zCURvbnREZWxldGV8UmVhZE9u
bHkKKyAgbmFtZSAgICAgICAgICBET01Eb2N1bWVudFR5cGU6Ok5hbWUgICAgICAgRG9udERlbGV0
ZXxSZWFkT25seQorICBlbnRpdGllcyAgICAgIERPTURvY3VtZW50VHlwZTo6RW50aXRpZXMgICBE
b250RGVsZXRlfFJlYWRPbmx5CisgIG5vdGF0aW9ucyAgICAgRE9NRG9jdW1lbnRUeXBlOjpOb3Rh
dGlvbnMgIERvbnREZWxldGV8UmVhZE9ubHkKICMgRE9NMgotICBwdWJsaWNJZAkJRE9NRG9jdW1l
bnRUeXBlOjpQdWJsaWNJZAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHN5c3RlbUlkCQlET01Eb2N1
bWVudFR5cGU6OlN5c3RlbUlkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgaW50ZXJuYWxTdWJzZXQJ
RE9NRG9jdW1lbnRUeXBlOjpJbnRlcm5hbFN1YnNldAlEb250RGVsZXRlfFJlYWRPbmx5CisgIHB1
YmxpY0lkICAgICAgRE9NRG9jdW1lbnRUeXBlOjpQdWJsaWNJZCAgIERvbnREZWxldGV8UmVhZE9u
bHkKKyAgc3lzdGVtSWQgICAgICBET01Eb2N1bWVudFR5cGU6OlN5c3RlbUlkICAgRG9udERlbGV0
ZXxSZWFkT25seQorICBpbnRlcm5hbFN1YnNldCAgICBET01Eb2N1bWVudFR5cGU6OkludGVybmFs
U3Vic2V0IERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBET01Eb2N1bWVudFR5cGU6OkRP
TURvY3VtZW50VHlwZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6RG9jdW1lbnRUeXBlICZk
dCkKQEAgLTEzNzEsMTQgKzEzNzEsMTQgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NTmFtZWROb2Rl
TWFwUHJvdG9UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVn
aW4gRE9NTmFtZWROb2RlTWFwUHJvdG9UYWJsZSA3Ci0gIGdldE5hbWVkSXRlbQkJRE9NTmFtZWRO
b2RlTWFwOjpHZXROYW1lZEl0ZW0JCURvbnREZWxldGV8RnVuY3Rpb24gMQotICBzZXROYW1lZEl0
ZW0JCURPTU5hbWVkTm9kZU1hcDo6U2V0TmFtZWRJdGVtCQlEb250RGVsZXRlfEZ1bmN0aW9uIDEK
LSAgcmVtb3ZlTmFtZWRJdGVtCURPTU5hbWVkTm9kZU1hcDo6UmVtb3ZlTmFtZWRJdGVtCURvbnRE
ZWxldGV8RnVuY3Rpb24gMQotICBpdGVtCQkJRE9NTmFtZWROb2RlTWFwOjpJdGVtCQkJRG9udERl
bGV0ZXxGdW5jdGlvbiAxCisgIGdldE5hbWVkSXRlbSAgICAgIERPTU5hbWVkTm9kZU1hcDo6R2V0
TmFtZWRJdGVtICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICBzZXROYW1lZEl0ZW0gICAg
ICBET01OYW1lZE5vZGVNYXA6OlNldE5hbWVkSXRlbSAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDEKKyAgcmVtb3ZlTmFtZWRJdGVtICAgRE9NTmFtZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0ZW0g
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGl0ZW0gICAgICAgICAgRE9NTmFtZWROb2RlTWFw
OjpJdGVtICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICMgRE9NMgotICBnZXROYW1l
ZEl0ZW1OUwlET01OYW1lZE5vZGVNYXA6OkdldE5hbWVkSXRlbU5TCQlEb250RGVsZXRlfEZ1bmN0
aW9uIDIKLSAgc2V0TmFtZWRJdGVtTlMJRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW1OUwkJ
RG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHJlbW92ZU5hbWVkSXRlbU5TCURPTU5hbWVkTm9kZU1h
cDo6UmVtb3ZlTmFtZWRJdGVtTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGdldE5hbWVkSXRl
bU5TICAgIERPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJdGVtTlMgICAgIERvbnREZWxldGV8RnVu
Y3Rpb24gMgorICBzZXROYW1lZEl0ZW1OUyAgICBET01OYW1lZE5vZGVNYXA6OlNldE5hbWVkSXRl
bU5TICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgcmVtb3ZlTmFtZWRJdGVtTlMgRE9NTmFt
ZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0ZW1OUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiBAZW5k
CiAqLwogREVGSU5FX1BST1RPVFlQRSgiTmFtZWROb2RlTWFwIiwgRE9NTmFtZWROb2RlTWFwUHJv
dG8pCkBAIC0xMzg4LDggKzEzODgsOCBAQA0KIGNvbnN0IENsYXNzSW5mbyBET01OYW1lZE5vZGVN
YXA6OmluZm8gPSB7ICJOYW1lZE5vZGVNYXAiLCAwLCAwLCAwIH07CiAKIERPTU5hbWVkTm9kZU1h
cDo6RE9NTmFtZWROb2RlTWFwKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpOYW1lZE5vZGVN
YXAgJm0pCi0gIDogbWFwKG0pIAoteyAKKyAgOiBtYXAobSkKK3sKICAgc2V0UHJvdG90eXBlKERP
TU5hbWVkTm9kZU1hcFByb3RvOjpzZWxmKGV4ZWMpKTsKIH0KIApAQCAtMTQ1OSw5ICsxNDU5LDkg
QEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFibGUuIFVzZSAi
bWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTVByb2Nlc3NpbmdJbnN0
cnVjdGlvblRhYmxlIDMKLSAgdGFyZ2V0CURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6VGFyZ2V0
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgZGF0YQkJRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpE
YXRhCQlEb250RGVsZXRlCi0gIHNoZWV0CQlET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlNoZWV0
CQlEb250RGVsZXRlfFJlYWRPbmx5CisgIHRhcmdldCAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246OlRhcmdldCAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGRhdGEgICAgICBET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OkRhdGEgICAgICBEb250RGVsZXRlCisgIHNoZWV0ICAgICBET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OlNoZWV0ICAgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAq
LwogVmFsdWUgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjp0cnlHZXQoRXhlY1N0YXRlICpleGVj
LCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0xNDk5LDggKzE0OTks
OCBAQA0KIAogLyogU291cmNlIGZvciBET01Ob3RhdGlvblRhYmxlLiBVc2UgIm1ha2UgaGFzaHRh
YmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Ob3RhdGlvblRhYmxlIDIKLSAgcHVibGlj
SWQJCURPTU5vdGF0aW9uOjpQdWJsaWNJZAlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHN5c3RlbUlk
CQlET01Ob3RhdGlvbjo6U3lzdGVtSWQJRG9udERlbGV0ZXxSZWFkT25seQorICBwdWJsaWNJZCAg
ICAgIERPTU5vdGF0aW9uOjpQdWJsaWNJZCAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3lzdGVt
SWQgICAgICBET01Ob3RhdGlvbjo6U3lzdGVtSWQgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5k
CiAqLwogVmFsdWUgRE9NTm90YXRpb246OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElk
ZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTE1MjcsOSArMTUyNyw5IEBADQogCiAv
KiBTb3VyY2UgZm9yIERPTUVudGl0eVRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVn
ZW5lcmF0ZS4KIEBiZWdpbiBET01FbnRpdHlUYWJsZSAyCi0gIHB1YmxpY0lkCQlET01FbnRpdHk6
OlB1YmxpY0lkCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHN5c3RlbUlkCQlET01FbnRpdHk6OlN5
c3RlbUlkCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5vdGF0aW9uTmFtZQkJRE9NRW50aXR5OjpO
b3RhdGlvbk5hbWUJRG9udERlbGV0ZXxSZWFkT25seQorICBwdWJsaWNJZCAgICAgIERPTUVudGl0
eTo6UHVibGljSWQgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3lzdGVtSWQgICAgICBET01F
bnRpdHk6OlN5c3RlbUlkICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG5vdGF0aW9uTmFtZSAg
ICAgIERPTUVudGl0eTo6Tm90YXRpb25OYW1lIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICov
CiBWYWx1ZSBET01FbnRpdHk6OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZp
ZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTE1NjgsNyArMTU2OCw3IEBADQogICAgIHJldCA9
IG5ldyBET01Eb2N1bWVudChleGVjLCBuKTsKIAogICBWYWx1ZSB2YWwocmV0KTsKLSAgCisKICAg
Ly8gTWFrZSBzdXJlIHRoZSBkb2N1bWVudCBpcyBrZXB0IGFyb3VuZCBieSB0aGUgd2luZG93IG9i
amVjdCwgYW5kIHdvcmtzIHJpZ2h0IHdpdGggdGhlCiAgIC8vIGJhY2svZm9yd2FyZCBjYWNoZS4K
ICAgaWYgKG4udmlldygpKSB7CkBAIC0xNTgzLDcgKzE1ODMsNyBAQA0KIAogYm9vbCBLSlM6OmNo
ZWNrTm9kZVNlY3VyaXR5KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpOb2RlJiBuKQogewot
ICBpZiAoIW4uaGFuZGxlKCkpIAorICBpZiAoIW4uaGFuZGxlKCkpCiAgICAgcmV0dXJuIGZhbHNl
OwogCiAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBpbnRlcnBy
ZXRlciBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgc3BlY2lmaWVkIG5vZGUKQEAgLTE2NjAsMTMg
KzE2NjAsMTIgQEANCiAKIFZhbHVlIEtKUzo6Z2V0UnVudGltZU9iamVjdChFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IERPTTo6Tm9kZSAmbm9kZSkKIHsKLSNpZiAhTk9LSUFfQ0hBTkdFUyAgCiAgICAg
RE9NOjpIVE1MRWxlbWVudCBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NOjpIVE1MRWxlbWVudD4o
bm9kZSk7CiAKICAgICBpZiAoIW5vZGUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKG5vZGUuaGFu
ZGxlKCktPmlkKCkgPT0gSURfQVBQTEVUKSB7CiAgICAgICAgICAgICBET006OkhUTUxBcHBsZXRF
bGVtZW50SW1wbCAqYXBwbGV0RWxlbWVudCA9IHN0YXRpY19jYXN0PERPTTo6SFRNTEFwcGxldEVs
ZW1lbnRJbXBsICo+KGVsZW1lbnQuaGFuZGxlKCkpOwotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGlmIChhcHBsZXRFbGVtZW50LT5nZXRBcHBsZXRJbnN0YW5jZSgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGluc3RhbmNlIGlzIG93bmVkIGJ5IHRoZSBhcHBsZXQgZWxlbWVudC4KICAg
ICAgICAgICAgICAgICBSdW50aW1lT2JqZWN0SW1wICphcHBsZXRJbXAgPSBuZXcgUnVudGltZU9i
amVjdEltcChhcHBsZXRFbGVtZW50LT5nZXRBcHBsZXRJbnN0YW5jZSgpLCBmYWxzZSk7CkBAIC0x
Njc1LDcgKzE2NzQsNyBAQA0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChub2RlLmhhbmRs
ZSgpLT5pZCgpID09IElEX0VNQkVEKSB7CiAgICAgICAgICAgICBET006OkhUTUxFbWJlZEVsZW1l
bnRJbXBsICplbWJlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhUTUxFbWJlZEVsZW1lbnRJ
bXBsICo+KGVsZW1lbnQuaGFuZGxlKCkpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlm
IChlbWJlZEVsZW1lbnQtPmdldEVtYmVkSW5zdGFuY2UoKSkgewogICAgICAgICAgICAgICAgIFJ1
bnRpbWVPYmplY3RJbXAgKnJ1bnRpbWVJbXAgPSBuZXcgUnVudGltZU9iamVjdEltcChlbWJlZEVs
ZW1lbnQtPmdldEVtYmVkSW5zdGFuY2UoKSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVy
biBWYWx1ZShydW50aW1lSW1wKTsKQEAgLTE2ODMsMTQgKzE2ODIsMTMgQEANCiAgICAgICAgIH0K
ICAgICAgICAgZWxzZSBpZiAobm9kZS5oYW5kbGUoKS0+aWQoKSA9PSBJRF9PQkpFQ1QpIHsKICAg
ICAgICAgICAgIERPTTo6SFRNTE9iamVjdEVsZW1lbnRJbXBsICpvYmplY3RFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RE9NOjpIVE1MT2JqZWN0RWxlbWVudEltcGwgKj4oZWxlbWVudC5oYW5kbGUoKSk7
Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKG9iamVjdEVsZW1lbnQtPmdldE9iamVj
dEluc3RhbmNlKCkpIHsKICAgICAgICAgICAgICAgICBSdW50aW1lT2JqZWN0SW1wICpydW50aW1l
SW1wID0gbmV3IFJ1bnRpbWVPYmplY3RJbXAob2JqZWN0RWxlbWVudC0+Z2V0T2JqZWN0SW5zdGFu
Y2UoKSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBWYWx1ZShydW50aW1lSW1wKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSNlbmRpZiAgICAKICAgICAvLyBJZiB3
ZSBkb24ndCBoYXZlIGEgcnVudGltZSBvYmplY3QgcmV0dXJuIHRoZSBhIFZhbHVlIHRoYXQgcmVw
b3J0cyBpc051bGwoKSA9PSB0cnVlLgogICAgIHJldHVybiBWYWx1ZSgpOwogfQpAQCAtMTcxMCwx
OCArMTcwOCwxOCBAQA0KIGNvbnN0IENsYXNzSW5mbyBOb2RlQ29uc3RydWN0b3I6OmluZm8gPSB7
ICJOb2RlQ29uc3RydWN0b3IiLCAwLCAmTm9kZUNvbnN0cnVjdG9yVGFibGUsIDAgfTsKIC8qIFNv
dXJjZSBmb3IgTm9kZUNvbnN0cnVjdG9yVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byBy
ZWdlbmVyYXRlLgogQGJlZ2luIE5vZGVDb25zdHJ1Y3RvclRhYmxlIDExCi0gIEVMRU1FTlRfTk9E
RQkJRE9NOjpOb2RlOjpFTEVNRU5UX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgQVRUUklC
VVRFX05PREUJRE9NOjpOb2RlOjpBVFRSSUJVVEVfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQot
ICBURVhUX05PREUJCURPTTo6Tm9kZTo6VEVYVF9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IENEQVRBX1NFQ1RJT05fTk9ERQlET006Ok5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERQlEb250RGVs
ZXRlfFJlYWRPbmx5Ci0gIEVOVElUWV9SRUZFUkVOQ0VfTk9ERQlET006Ok5vZGU6OkVOVElUWV9S
RUZFUkVOQ0VfTk9ERQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIEVOVElUWV9OT0RFCQlET006Ok5v
ZGU6OkVOVElUWV9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5CisgIEVMRU1FTlRfTk9ERSAgICAg
IERPTTo6Tm9kZTo6RUxFTUVOVF9OT0RFICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIEFUVFJJ
QlVURV9OT0RFICAgIERPTTo6Tm9kZTo6QVRUUklCVVRFX05PREUgICAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQorICBURVhUX05PREUgICAgIERPTTo6Tm9kZTo6VEVYVF9OT0RFICAgICAgICBEb250
RGVsZXRlfFJlYWRPbmx5CisgIENEQVRBX1NFQ1RJT05fTk9ERSAgICBET006Ok5vZGU6OkNEQVRB
X1NFQ1RJT05fTk9ERSAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgRU5USVRZX1JFRkVSRU5DRV9O
T0RFIERPTTo6Tm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFICAgIERvbnREZWxldGV8UmVhZE9u
bHkKKyAgRU5USVRZX05PREUgICAgICAgRE9NOjpOb2RlOjpFTlRJVFlfTk9ERSAgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKICAgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFIERPTTo6Tm9kZTo6
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFIERvbnREZWxldGV8UmVhZE9ubHkKLSAgQ09NTUVO
VF9OT0RFCQlET006Ok5vZGU6OkNPTU1FTlRfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQotICBE
T0NVTUVOVF9OT0RFCQlET006Ok5vZGU6OkRPQ1VNRU5UX05PREUJCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgRE9DVU1FTlRfVFlQRV9OT0RFCURPTTo6Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFCURv
bnREZWxldGV8UmVhZE9ubHkKLSAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSBET006Ok5vZGU6OkRP
Q1VNRU5UX0ZSQUdNRU5UX05PREUJRG9udERlbGV0ZXxSZWFkT25seQotICBOT1RBVElPTl9OT0RF
CQlET006Ok5vZGU6Ok5PVEFUSU9OX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkKKyAgQ09NTUVO
VF9OT0RFICAgICAgRE9NOjpOb2RlOjpDT01NRU5UX05PREUgICAgIERvbnREZWxldGV8UmVhZE9u
bHkKKyAgRE9DVU1FTlRfTk9ERSAgICAgRE9NOjpOb2RlOjpET0NVTUVOVF9OT0RFICAgICAgICBE
b250RGVsZXRlfFJlYWRPbmx5CisgIERPQ1VNRU5UX1RZUEVfTk9ERSAgICBET006Ok5vZGU6OkRP
Q1VNRU5UX1RZUEVfTk9ERSAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgRE9DVU1FTlRfRlJBR01F
TlRfTk9ERSBET006Ok5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgIERvbnREZWxldGV8UmVh
ZE9ubHkKKyAgTk9UQVRJT05fTk9ERSAgICAgRE9NOjpOb2RlOjpOT1RBVElPTl9OT0RFICAgICAg
ICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwogVmFsdWUgTm9kZUNvbnN0cnVjdG9yOjp0
cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNv
bnN0CkBAIC0xNzc3LDIxICsxNzc1LDIxIEBADQogCiAvKiBTb3VyY2UgZm9yIERPTUV4Y2VwdGlv
bkNvbnN0cnVjdG9yVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgog
QGJlZ2luIERPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yVGFibGUgMTUKLSAgSU5ERVhfU0laRV9FUlIJ
CURPTTo6RE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQot
ICBET01TVFJJTkdfU0laRV9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpET01TVFJJTkdfU0laRV9F
UlIJRG9udERlbGV0ZXxSZWFkT25seQotICBISUVSQVJDSFlfUkVRVUVTVF9FUlIJCURPTTo6RE9N
RXhjZXB0aW9uOjpISUVSQVJDSFlfUkVRVUVTVF9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBX
Uk9OR19ET0NVTUVOVF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpXUk9OR19ET0NVTUVOVF9FUlIJ
RG9udERlbGV0ZXxSZWFkT25seQotICBJTlZBTElEX0NIQVJBQ1RFUl9FUlIJCURPTTo6RE9NRXhj
ZXB0aW9uOjpJTlZBTElEX0NIQVJBQ1RFUl9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBOT19E
QVRBX0FMTE9XRURfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6Tk9fREFUQV9BTExPV0VEX0VSUglE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUglET006OkRP
TUV4Y2VwdGlvbjo6Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSCURvbnREZWxldGV8UmVhZE9u
bHkKLSAgTk9UX0ZPVU5EX0VSUgkJCURPTTo6RE9NRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSCQlE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIE5PVF9TVVBQT1JURURfRVJSCQlET006OkRPTUV4Y2VwdGlv
bjo6Tk9UX1NVUFBPUlRFRF9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBJTlVTRV9BVFRSSUJV
VEVfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6SU5VU0VfQVRUUklCVVRFX0VSUglEb250RGVsZXRl
fFJlYWRPbmx5Ci0gIElOVkFMSURfU1RBVEVfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJ
RF9TVEFURV9FUlIJRG9udERlbGV0ZXxSZWFkT25seQotICBTWU5UQVhfRVJSCQkJRE9NOjpET01F
eGNlcHRpb246OlNZTlRBWF9FUlIJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9NT0RJ
RklDQVRJT05fRVJSCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIJ
RG9udERlbGV0ZXxSZWFkT25seQotICBOQU1FU1BBQ0VfRVJSCQkJRE9NOjpET01FeGNlcHRpb246
Ok5BTUVTUEFDRV9FUlIJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9BQ0NFU1NfRVJS
CQlET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9BQ0NFU1NfRVJSCURvbnREZWxldGV8UmVhZE9u
bHkKKyAgSU5ERVhfU0laRV9FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpF
X0VSUiAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIERPTVNUUklOR19TSVpFX0VSUiAgICAg
ICAgRE9NOjpET01FeGNlcHRpb246OkRPTVNUUklOR19TSVpFX0VSUiAgIERvbnREZWxldGV8UmVh
ZE9ubHkKKyAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICBET006OkRPTUV4Y2VwdGlvbjo6SElF
UkFSQ0hZX1JFUVVFU1RfRVJSICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgV1JPTkdfRE9DVU1F
TlRfRVJSICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6V1JPTkdfRE9DVU1FTlRfRVJSICAgRG9u
dERlbGV0ZXxSZWFkT25seQorICBJTlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgIERPTTo6RE9NRXhj
ZXB0aW9uOjpJTlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBO
T19EQVRBX0FMTE9XRURfRVJSICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT19EQVRBX0FMTE9X
RURfRVJSICBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VS
UiAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgTk9UX0ZPVU5EX0VSUiAgICAgICAgIERPTTo6RE9NRXhjZXB0aW9u
OjpOT1RfRk9VTkRfRVJSICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5PVF9TVVBQT1JU
RURfRVJSICAgICBET006OkRPTUV4Y2VwdGlvbjo6Tk9UX1NVUFBPUlRFRF9FUlIgICAgRG9udERl
bGV0ZXxSZWFkT25seQorICBJTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgIERPTTo6RE9NRXhjZXB0
aW9uOjpJTlVTRV9BVFRSSUJVVEVfRVJSICBEb250RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURf
U1RBVEVfRVJSICAgICBET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9TVEFURV9FUlIgICAgRG9u
dERlbGV0ZXxSZWFkT25seQorICBTWU5UQVhfRVJSICAgICAgICAgICAgRE9NOjpET01FeGNlcHRp
b246OlNZTlRBWF9FUlIgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBJTlZBTElEX01PRElG
SUNBVElPTl9FUlIgIERPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIg
RG9udERlbGV0ZXxSZWFkT25seQorICBOQU1FU1BBQ0VfRVJSICAgICAgICAgRE9NOjpET01FeGNl
cHRpb246Ok5BTUVTUEFDRV9FUlIgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgSU5WQUxJ
RF9BQ0NFU1NfRVJSICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9BQ0NFU1NfRVJS
ICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIApAQCAtMTg3OCwxNiArMTg3NiwxNiBA
QA0KICAgICAgIERPTTo6Tm9kZSBub2RlID0gKml0OwogICAgICAgRE9NOjpOYW1lZE5vZGVNYXAg
YXR0cmlidXRlcyA9IG5vZGUuYXR0cmlidXRlcygpOwogICAgICAgaWYgKGF0dHJpYnV0ZXMuaXNO
dWxsKCkpIHsKLQljb250aW51ZTsKKyAgICBjb250aW51ZTsKICAgICAgIH0KIAogICAgICAgRE9N
OjpOb2RlIGlkQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJpZCIpOwogICAgICAgaWYg
KGlkQXR0ci5pc051bGwoKSkgewotCWNvbnRpbnVlOworICAgIGNvbnRpbnVlOwogICAgICAgfQog
CiAgICAgICBpZiAoaWRBdHRyLm5vZGVWYWx1ZSgpID09IHByb3BlcnR5TmFtZS5zdHJpbmcoKSkg
ewotCXJldHVybiBnZXRET01Ob2RlKGV4ZWMsbm9kZSk7CisgICAgcmV0dXJuIGdldERPTU5vZGUo
ZXhlYyxub2RlKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTE4OTgsMTggKzE4OTYsMTggQEAN
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNvbnN0IENsYXNzSW5mbyBET01DaGFyYWN0ZXJEYXRh
OjppbmZvID0geyAiQ2hhcmFjdGVySW1wIiwKLQkJCQkJICAmRE9NTm9kZTo6aW5mbywgJkRPTUNo
YXJhY3RlckRhdGFUYWJsZSwgMCB9OworICAgICAgICAgICAgICAgICAgICAgICZET01Ob2RlOjpp
bmZvLCAmRE9NQ2hhcmFjdGVyRGF0YVRhYmxlLCAwIH07CiAvKgogQGJlZ2luIERPTUNoYXJhY3Rl
ckRhdGFUYWJsZSAyCi0gIGRhdGEJCURPTUNoYXJhY3RlckRhdGE6OkRhdGEJCURvbnREZWxldGUK
LSAgbGVuZ3RoCURPTUNoYXJhY3RlckRhdGE6Okxlbmd0aAlEb250RGVsZXRlfFJlYWRPbmx5Cisg
IGRhdGEgICAgICBET01DaGFyYWN0ZXJEYXRhOjpEYXRhICAgICAgRG9udERlbGV0ZQorICBsZW5n
dGggICAgRE9NQ2hhcmFjdGVyRGF0YTo6TGVuZ3RoICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBl
bmQKIEBiZWdpbiBET01DaGFyYWN0ZXJEYXRhUHJvdG9UYWJsZSA3Ci0gIHN1YnN0cmluZ0RhdGEJ
RE9NQ2hhcmFjdGVyRGF0YTo6U3Vic3RyaW5nRGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAg
YXBwZW5kRGF0YQlET01DaGFyYWN0ZXJEYXRhOjpBcHBlbmREYXRhCURvbnREZWxldGV8RnVuY3Rp
b24gMQotICBpbnNlcnREYXRhCURPTUNoYXJhY3RlckRhdGE6Okluc2VydERhdGEJRG9udERlbGV0
ZXxGdW5jdGlvbiAyCi0gIGRlbGV0ZURhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6RGVsZXRlRGF0YQlE
b250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcmVwbGFjZURhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6UmVw
bGFjZURhdGEJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHN1YnN0cmluZ0RhdGEgRE9NQ2hhcmFj
dGVyRGF0YTo6U3Vic3RyaW5nRGF0YSBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgYXBwZW5kRGF0
YSAgICBET01DaGFyYWN0ZXJEYXRhOjpBcHBlbmREYXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MQorICBpbnNlcnREYXRhICAgIERPTUNoYXJhY3RlckRhdGE6Okluc2VydERhdGEgICAgRG9udERl
bGV0ZXxGdW5jdGlvbiAyCisgIGRlbGV0ZURhdGEgICAgRE9NQ2hhcmFjdGVyRGF0YTo6RGVsZXRl
RGF0YSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgcmVwbGFjZURhdGEgICBET01DaGFyYWN0
ZXJEYXRhOjpSZXBsYWNlRGF0YSAgIERvbnREZWxldGV8RnVuY3Rpb24gMgogQGVuZAogKi8KIERF
RklORV9QUk9UT1RZUEUoIkRPTUNoYXJhY3RlckRhdGEiLERPTUNoYXJhY3RlckRhdGFQcm90bykK
QEAgLTE5MTcsMTMgKzE5MTUsMTMgQEANCiBJTVBMRU1FTlRfUFJPVE9UWVBFX1dJVEhfUEFSRU5U
KERPTUNoYXJhY3RlckRhdGFQcm90byxET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jLCBET01Ob2Rl
UHJvdG8pCiAKIERPTUNoYXJhY3RlckRhdGE6OkRPTUNoYXJhY3RlckRhdGEoRXhlY1N0YXRlICpl
eGVjLCBjb25zdCBET006OkNoYXJhY3RlckRhdGEgJmQpCi0gOiBET01Ob2RlKGQpIAorIDogRE9N
Tm9kZShkKQogewogICBzZXRQcm90b3R5cGUoRE9NQ2hhcmFjdGVyRGF0YVByb3RvOjpzZWxmKGV4
ZWMpKTsKIH0KIAogRE9NQ2hhcmFjdGVyRGF0YTo6RE9NQ2hhcmFjdGVyRGF0YShjb25zdCBET006
OkNoYXJhY3RlckRhdGEgJmQpCi0gOiBET01Ob2RlKGQpIAorIDogRE9NTm9kZShkKQogewogfQog
CkBAIC0xOTc0LDkgKzE5NzIsOSBAQA0KICAgICAgICAgRE9NOjpfZXhjZXB0aW9uY29kZSA9IERP
TUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsK
ICAgICAgIH0KLSNlbHNlICAgICAgCisjZWxzZQogICAgICAgICB0aHJvdyBET01FeGNlcHRpb24o
RE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUik7Ci0jZW5kaWYgICAgICAgIAorI2VuZGlmCiAg
ICAgICByZXR1cm4gZ2V0U3RyaW5nT3JOdWxsKGRhdGEuc3Vic3RyaW5nRGF0YShhcmdzWzBdLnRv
SW50MzIoZXhlYyksIGNvdW50KSk7CiAgICAgfQogICAgIGNhc2UgRE9NQ2hhcmFjdGVyRGF0YTo6
QXBwZW5kRGF0YToKQEAgLTE5OTMsOSArMTk5MSw5IEBADQogICAgICAgICBET006Ol9leGNlcHRp
b25jb2RlID0gRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIFVu
ZGVmaW5lZCgpOwogICAgICAgfQotI2Vsc2UgICAgIAorI2Vsc2UKICAgICAgICAgdGhyb3cgRE9N
RXhjZXB0aW9uKERPTUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlIpOwotI2VuZGlmICAKKyNlbmRp
ZgogICAgICAgZGF0YS5kZWxldGVEYXRhKGFyZ3NbMF0udG9JbnQzMihleGVjKSwgY291bnQpOwog
ICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwogICAgIH0KQEAgLTIwMDcsOSArMjAwNSw5IEBADQog
ICAgICAgICBET006Ol9leGNlcHRpb25jb2RlID0gRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VS
UjsKICAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwogICAgICAgfQotI2Vsc2UgICAgICAKKyNl
bHNlCiAgICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246OklOREVYX1NJWkVf
RVJSKTsKLSNlbmRpZiAgCisjZW5kaWYKICAgICAgIGRhdGEucmVwbGFjZURhdGEoYXJnc1swXS50
b0ludDMyKGV4ZWMpLCBjb3VudCwgYXJnc1syXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSk7CiAg
ICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjAyMSwxMCArMjAxOSwxMCBAQA0K
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIERPTVRleHQ6OmluZm8gPSB7
ICJUZXh0IiwKLQkJCQkgJkRPTUNoYXJhY3RlckRhdGE6OmluZm8sIDAsIDAgfTsKKyAgICAgICAg
ICAgICAgICAgJkRPTUNoYXJhY3RlckRhdGE6OmluZm8sIDAsIDAgfTsKIC8qCiBAYmVnaW4gRE9N
VGV4dFByb3RvVGFibGUgMQotICBzcGxpdFRleHQJRE9NVGV4dDo6U3BsaXRUZXh0CURvbnREZWxl
dGV8RnVuY3Rpb24gMQorICBzcGxpdFRleHQgRE9NVGV4dDo6U3BsaXRUZXh0ICBEb250RGVsZXRl
fEZ1bmN0aW9uIDEKIEBlbmQKICovCiBERUZJTkVfUFJPVE9UWVBFKCJET01UZXh0IixET01UZXh0
UHJvdG8pCkBAIC0yMDMyLDggKzIwMzAsOCBAQA0KIElNUExFTUVOVF9QUk9UT1RZUEVfV0lUSF9Q
QVJFTlQoRE9NVGV4dFByb3RvLERPTVRleHRQcm90b0Z1bmMsRE9NQ2hhcmFjdGVyRGF0YVByb3Rv
KQogCiBET01UZXh0OjpET01UZXh0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpUZXh0ICZ0
KQotICA6IERPTUNoYXJhY3RlckRhdGEodCkgCi17IAorICA6IERPTUNoYXJhY3RlckRhdGEodCkK
K3sKICAgc2V0UHJvdG90eXBlKERPTVRleHRQcm90bzo6c2VsZihleGVjKSk7CiB9CiAKSW5kZXg6
IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUva2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29y
ZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzIyLDYgKzMy
Miw5IEBADQogICAsIGhpc3RvcnkoMCkKICAgLCBmcmFtZXMoMCkKICAgLCBsb2MoMCkKKyNpZmRl
ZiBSRF9CUk9XU0VSX1dJREdFVFMKKyAgLCBtX3dpZGdldCgwKQorI2VuZGlmCiAgICwgbV9zZWxl
Y3Rpb24oMCkKICAgLCBtX2xvY2F0aW9uYmFyKDApCiAgICwgbV9tZW51YmFyKDApCkBAIC00ODMs
NiArNDg2LDEwIEBADQogICAgIG1fc3RhdHVzYmFyLT5tYXJrKCk7CiAgIGlmIChtX3Rvb2xiYXIg
JiYgIW1fdG9vbGJhci0+bWFya2VkKCkpCiAgICAgbV90b29sYmFyLT5tYXJrKCk7CisjaWZkZWYg
UkRfQlJPV1NFUl9XSURHRVRTCisgIGlmIChtX3dpZGdldCAmJiAhbV93aWRnZXQtPm1hcmtlZCgp
KQorICAgIG1fd2lkZ2V0LT5tYXJrKCk7CisjZW5kaWYKIH0KIAogVVN0cmluZyBXaW5kb3c6OnRv
U3RyaW5nKEV4ZWNTdGF0ZSAqKSBjb25zdApAQCAtODA3LDYgKzgxNCwxMiBAQA0KICNlbmRpZgog
ICAgIGNhc2UgTG9jYXRpb25iYXI6CiAgICAgICByZXR1cm4gVmFsdWUobG9jYXRpb25iYXIoZXhl
YykpOworI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUworICAgIGNhc2UgX1dpZGdldDoKKyAgICAg
ICAgcmV0dXJuIFZhbHVlKG1fd2lkZ2V0ID8gbV93aWRnZXQgOgorICAgICAgICAgICAgICAgICAg
IChjb25zdF9jYXN0PFdpbmRvdyo+KHRoaXMpLT5tX3dpZGdldCA9IEtXUShtX3BhcnQpLT5jcmVh
dGVXaWRnZXRPYmplY3QoZXhlYykpKTsKKworI2VuZGlmCiAgICAgY2FzZSBNZW51YmFyOgogICAg
ICAgcmV0dXJuIFZhbHVlKG1lbnViYXIoZXhlYykpOwogICAgIGNhc2UgT2Zmc2NyZWVuQnVmZmVy
aW5nOgpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHdvcmtpbmcgY29weSkNCkBAIC0xMDEs
MTMgKzEwMSwxMyBAQA0KICAgICBib29sIGhhc1RpbWVvdXRzKCk7CiAgICAgUU1hcDxpbnQsIFNj
aGVkdWxlZEFjdGlvbio+ICpwYXVzZVRpbWVvdXRzKGNvbnN0IHZvaWQgKmtleSk7CiAgICAgdm9p
ZCByZXN1bWVUaW1lb3V0cyhRTWFwPGludCwgU2NoZWR1bGVkQWN0aW9uKj4qc2EsIGNvbnN0IHZv
aWQgKmtleSk7Ci0gICAgCisKICAgICBLSlM6OkludGVycHJldGVyICppbnRlcnByZXRlcigpIGNv
bnN0OwogCiAgICAgc3RhdGljIGJvb2wgaXNTYWZlU2NyaXB0IChjb25zdCBLSlM6OlNjcmlwdElu
dGVycHJldGVyICpvcmlnaW4sIGNvbnN0IEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXIgKnRhcmdldCk7
CiAjZW5kaWYKICAgICB2b2lkIHNjaGVkdWxlQ2xvc2UoKTsKLSAgICAgICAgCisKICAgICBib29s
IGlzU2FmZVNjcmlwdChFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIExvY2F0aW9uICpsb2Nh
dGlvbigpIGNvbnN0OwogICAgIFNlbGVjdGlvbiAqc2VsZWN0aW9uKCkgY29uc3Q7CkBAIC0xNDEs
MTMgKzE0MSwxNyBAQA0KICAgICAgICAgICAgU2NyZWVuVG9wLCBTY3JlZW5MZWZ0LAogICAgICAg
ICAgICBTY3JvbGxUbywgU2Nyb2xsWCwgU2Nyb2xsWSwgTW92ZUJ5LCBNb3ZlVG8sIFJlc2l6ZUJ5
LCBSZXNpemVUbywgU2VsZiwgX1dpbmRvdywgVG9wLCBfU2NyZWVuLAogICAgICAgICAgICBJbWFn
ZSwgT3B0aW9uLCBBbGVydCwgQ29uZmlybSwgUHJvbXB0LCBPcGVuLCBQcmludCwgU2V0VGltZW91
dCwgQ2xlYXJUaW1lb3V0LAotICAgICAgICAgICBGb2N1cywgR2V0U2VsZWN0aW9uLCBCbHVyLCBD
bG9zZSwgU2V0SW50ZXJ2YWwsIENsZWFySW50ZXJ2YWwsIENhcHR1cmVFdmVudHMsIAorICAgICAg
ICAgICBGb2N1cywgR2V0U2VsZWN0aW9uLCBCbHVyLCBDbG9zZSwgU2V0SW50ZXJ2YWwsIENsZWFy
SW50ZXJ2YWwsIENhcHR1cmVFdmVudHMsCiAgICAgICAgICAgIFJlbGVhc2VFdmVudHMsIEFkZEV2
ZW50TGlzdGVuZXIsIFJlbW92ZUV2ZW50TGlzdGVuZXIsIFhNTEh0dHBSZXF1ZXN0LCBYTUxTZXJp
YWxpemVyLCBET01QYXJzZXIsCi0gICAgIE9uYWJvcnQsIE9uYmx1ciwgT25jaGFuZ2UsIE9uY2xp
Y2ssIE9uZGJsY2xpY2ssIE9uZHJhZ2Ryb3AsIE9uZXJyb3IsIAorICAgICBPbmFib3J0LCBPbmJs
dXIsIE9uY2hhbmdlLCBPbmNsaWNrLCBPbmRibGNsaWNrLCBPbmRyYWdkcm9wLCBPbmVycm9yLAog
ICAgICBPbmZvY3VzLCBPbmtleWRvd24sIE9ua2V5cHJlc3MsIE9ua2V5dXAsIE9ubG9hZCwgT25t
b3VzZWRvd24sIE9ubW91c2Vtb3ZlLAogICAgICAgICAgICBPbm1vdXNlb3V0LCBPbm1vdXNlb3Zl
ciwgT25tb3VzZXVwLCBPbldpbmRvd01vdXNlV2hlZWwsIE9ubW92ZSwgT25yZXNldCwgT25yZXNp
emUsIE9uc2Nyb2xsLCBPbnNlYXJjaCwKICAgICAgICAgICAgT25zZWxlY3QsIE9uc3VibWl0LCBP
bnVubG9hZCwgT25iZWZvcmV1bmxvYWQsCi0gICAgICAgICAgIFN0YXR1c2JhciwgVG9vbGJhciwg
RnJhbWVFbGVtZW50LCBTaG93TW9kYWxEaWFsb2cgfTsKKyAgICAgICAgICAgU3RhdHVzYmFyLCBU
b29sYmFyLCBGcmFtZUVsZW1lbnQsIFNob3dNb2RhbERpYWxvZworI2lmZGVmIE5PS0lBX0NIQU5H
RVMKKyAgICAgICAgICAgLF9XaWRnZXQKKyNlbmRpZgorICAgICAgICAgICB9OwogICBwcm90ZWN0
ZWQ6CiAgICAgVmFsdWUgZ2V0TGlzdGVuZXIoRXhlY1N0YXRlICpleGVjLCBpbnQgZXZlbnRJZCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRMaXN0ZW5lcihFeGVjU3RhdGUgKmV4ZWMsIGludCBldmVudElk
LCBWYWx1ZSBmdW5jKTsKQEAgLTE1NSw2ICsxNTksOSBAQA0KICAgICB2b2lkIHVwZGF0ZUxheW91
dChib29sIGlnbm9yZVN0eWxlc2hlZXRzID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBRR3VhcmRlZFB0
cjxLSFRNTFBhcnQ+IG1fcGFydDsKKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMKKyAgICBPYmpl
Y3RJbXAgKm1fd2lkZ2V0OworI2VuZGlmCiAgICAgU2NyZWVuICpzY3JlZW47CiAgICAgSGlzdG9y
eSAqaGlzdG9yeTsKICAgICBGcmFtZUFycmF5ICpmcmFtZXM7CkBAIC0yNDEsOCArMjQ4LDggQEAN
CiAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIg
JnByb3BlcnR5TmFtZSwgY29uc3QgVmFsdWUgJnZhbHVlLCBpbnQgYXR0ciA9IE5vbmUpOwogICAg
IHZpcnR1YWwgVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlICpleGVjLCBUeXBlIHByZWZlcnJl
ZCkgY29uc3Q7CiAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykg
Y29uc3Q7Ci0gICAgZW51bSB7IEFuY2hvck5vZGUsIEFuY2hvck9mZnNldCwgRm9jdXNOb2RlLCBG
b2N1c09mZnNldCwgQmFzZU5vZGUsIEJhc2VPZmZzZXQsIEV4dGVudE5vZGUsIEV4dGVudE9mZnNl
dCwgCi0gICAgICAgICAgIElzQ29sbGFwc2VkLCBfVHlwZSwgRXF1YWxFcXVhbCwgQ29sbGFwc2Us
IENvbGxhcHNlVG9FbmQsIENvbGxhcHNlVG9TdGFydCwgRW1wdHksIFRvU3RyaW5nLCAKKyAgICBl
bnVtIHsgQW5jaG9yTm9kZSwgQW5jaG9yT2Zmc2V0LCBGb2N1c05vZGUsIEZvY3VzT2Zmc2V0LCBC
YXNlTm9kZSwgQmFzZU9mZnNldCwgRXh0ZW50Tm9kZSwgRXh0ZW50T2Zmc2V0LAorICAgICAgICAg
ICBJc0NvbGxhcHNlZCwgX1R5cGUsIEVxdWFsRXF1YWwsIENvbGxhcHNlLCBDb2xsYXBzZVRvRW5k
LCBDb2xsYXBzZVRvU3RhcnQsIEVtcHR5LCBUb1N0cmluZywKICAgICAgICAgICAgU2V0QmFzZUFu
ZEV4dGVudCwgU2V0UG9zaXRpb24sIE1vZGlmeSB9OwogICAgIEtIVE1MUGFydCAqcGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFydDsgfQogICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQpJbmRleDogV2ViQ29yZS9raHRtbC9lY21h
L2tqc193aW5kb3cubHV0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pz
X3dpbmRvdy5sdXQuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tq
c193aW5kb3cubHV0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSwxMCArMjksMTAgQEANCiAgICB7
ICJDU1NSdWxlIiwgV2luZG93OjpDU1NSdWxlLCBEb250RGVsZXRlLCAwLCAmV2luZG93VGFibGVF
bnRyaWVzWzExMl0gfSwKICAgIHsgImxlbmd0aCIsIFdpbmRvdzo6TGVuZ3RoLCBEb250RGVsZXRl
fFJlYWRPbmx5LCAwLCAwIH0sCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwKKyAgIHsgIndpZGdldCIs
IFdpbmRvdzo6X1dpZGdldCwgRG9udERlbGV0ZXxGdW5jdGlvbiwgMCwgMCB9LAogICAgeyAwLCAw
LCAwLCAwLCAwIH0sCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9
LAotICAgeyAwLCAwLCAwLCAwLCAwIH0sCiAgICB7ICJwcmludCIsIFdpbmRvdzo6UHJpbnQsIERv
bnREZWxldGV8RnVuY3Rpb24sIDIsICZXaW5kb3dUYWJsZUVudHJpZXNbMTExXSB9LAogICAgeyAi
b3BlbmVyIiwgV2luZG93OjpPcGVuZXIsIERvbnREZWxldGV8UmVhZE9ubHksIDAsIDAgfSwKICAg
IHsgInBhcmVudCIsIFdpbmRvdzo6UGFyZW50LCBEb250RGVsZXRlfFJlYWRPbmx5LCAwLCAwIH0s
CkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmNwcA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwCShyZXZpc2lvbiAx
NzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTE5OSw3ICsxOTksNiBAQA0KIH0KIAogI2lmIEFQUExFX0NIQU5HRVMKLSNp
ZiAhTk9LSUFfQ0hBTkdFUwogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKkhUTUxBcHBsZXRFbGVt
ZW50SW1wbDo6Z2V0QXBwbGV0SW5zdGFuY2UoKSBjb25zdAogewogICAgIEtIVE1MUGFydCogcGFy
dCA9IGdldERvY3VtZW50KCktPnBhcnQoKTsKQEAgLTIwOCw3ICsyMDcsNyBAQA0KIAogICAgIGlm
IChhcHBsZXRJbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIGFwcGxldEluc3RhbmNlOwotCisjaWYg
IU5PS0lBX0NIQU5HRVMKICAgICBSZW5kZXJBcHBsZXQgKnIgPSBzdGF0aWNfY2FzdDxSZW5kZXJB
cHBsZXQqPihtX3JlbmRlcik7CiAgICAgaWYgKHIpIHsKICAgICAgICAgci0+Y3JlYXRlV2lkZ2V0
SWZOZWNlc3NhcnkoKTsKQEAgLTIxOSw5ICsyMTgsOSBAQA0KICAgICAgICAgICAgIGFwcGxldElu
c3RhbmNlID0gS1dRKHBhcnQpLT5nZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcoKE5TVmlldyAqKV92
aWV3KTsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBhcHBsZXRJbnN0YW5j
ZTsKIH0KLSNlbmRpZgogCiB2b2lkIEhUTUxBcHBsZXRFbGVtZW50SW1wbDo6Y2xvc2VSZW5kZXJl
cigpCiB7CkBAIC0yNDMsOSArMjQyLDcgQEANCiAKIEhUTUxFbWJlZEVsZW1lbnRJbXBsOjpIVE1M
RW1iZWRFbGVtZW50SW1wbChEb2N1bWVudFB0ciAqZG9jKQogICAgIDogSFRNTEVsZW1lbnRJbXBs
KGRvYykKLSNpZiAhTk9LSUFfQ0hBTkdFUwogICAgICwgZW1iZWRJbnN0YW5jZSgwKQotI2VuZGlm
CiB7CiAjaWYgTk9LSUFfQ0hBTkdFUwogICBuZWVkV2lkZ2V0VXBkYXRlID0gZmFsc2U7CkBAIC0y
NjEsNyArMjU4LDcgQEANCiAgICAgcmV0dXJuIElEX0VNQkVEOwogfQogCi0jaWYgQVBQTEVfQ0hB
TkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlICpIVE1MRW1iZWRFbGVtZW50SW1wbDo6Z2V0RW1iZWRJbnN0YW5jZSgpIGNvbnN0
CiB7CiAgICAgS0hUTUxQYXJ0KiBwYXJ0ID0gZ2V0RG9jdW1lbnQoKS0+cGFydCgpOwpAQCAtMjc3
LDEwICsyNzQsMTcgQEANCiAgICAgICAgICAgICAvLyBDYWxsIGludG8gdGhlIHBhcnQgKGFuZCBv
dmVyIHRoZSBicmlkZ2UpIHRvIHB1bGwgdGhlIEJpbmRpbmdzOjpJbnN0YW5jZQogICAgICAgICAg
ICAgLy8gZnJvbSB0aGUgZ3V0cyBvZiB0aGUgSmF2YSBWTS4KICAgICAgICAgICAgIHZvaWQgKl92
aWV3ID0gci0+d2lkZ2V0KCktPmdldFZpZXcoKTsKKyNpZiBOT0tJQV9DSEFOR0VTCisgICAgICAg
ICAgICBlbWJlZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRFbWJlZEluc3RhbmNlRm9yVmlldygo
TVdlYkNvcmVXaWRnZXQgKilfdmlldyk7CisgICAgICAgICAgICAvLyBBcHBsZXQgbWF5IHNwZWNp
ZmllZCB3aXRoIDxlbWJlZD4gdGFnLgorICAgICAgICAgICAgaWYgKCFlbWJlZEluc3RhbmNlKQor
ICAgICAgICAgICAgICAgIGVtYmVkSW5zdGFuY2UgPSBLV1EocGFydCktPmdldEFwcGxldEluc3Rh
bmNlRm9yVmlldygoTVdlYkNvcmVXaWRnZXQgKilfdmlldyk7CisjZWxzZQogICAgICAgICAgICAg
ZW1iZWRJbnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0RW1iZWRJbnN0YW5jZUZvclZpZXcoKE5TVmll
dyAqKV92aWV3KTsKICAgICAgICAgICAgIC8vIEFwcGxldCBtYXkgc3BlY2lmaWVkIHdpdGggPGVt
YmVkPiB0YWcuCiAgICAgICAgICAgICBpZiAoIWVtYmVkSW5zdGFuY2UpCiAgICAgICAgICAgICAg
ICAgZW1iZWRJbnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3KChO
U1ZpZXcgKilfdmlldyk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZW1i
ZWRJbnN0YW5jZTsKQEAgLTU2OCw3ICs1NzIsNyBAQA0KICAgICByZXR1cm4gSURfT0JKRUNUOwog
fQogCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5H
RVMKIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpIVE1MT2JqZWN0RWxlbWVudEltcGw6OmdldE9i
amVjdEluc3RhbmNlKCkgY29uc3QKIHsKICAgICBLSFRNTFBhcnQqIHBhcnQgPSBnZXREb2N1bWVu
dCgpLT5wYXJ0KCk7CkBAIC01ODEsNyArNTg1LDExIEBADQogICAgIGlmIChSZW5kZXJPYmplY3Qg
KnIgPSBtX3JlbmRlcikgewogICAgICAgICBpZiAoci0+aXNXaWRnZXQoKSkgewogICAgICAgICAg
ICAgaWYgKFFXaWRnZXQgKndpZGdldCA9IHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCAqPihyKS0+
d2lkZ2V0KCkpIHsKKyNpZiBOT0tJQV9DSEFOR0VTICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGlmIChNV2ViQ29yZVdpZGdldCAqdmlldyA9IHdpZGdldC0+Z2V0VmlldygpKSAgewor
I2Vsc2UKICAgICAgICAgICAgICAgICBpZiAoTlNWaWV3ICp2aWV3ID0gd2lkZ2V0LT5nZXRWaWV3
KCkpICB7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCBpbnRvIHRoZSBwYXJ0
IChhbmQgb3ZlciB0aGUgYnJpZGdlKSB0byBwdWxsIHRoZSBCaW5kaW5nczo6SW5zdGFuY2UKICAg
ICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgZ3V0cyBvZiB0aGUgcGx1Z2luLgogICAgICAg
ICAgICAgICAgICAgICBvYmplY3RJbnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0T2JqZWN0SW5zdGFu
Y2VGb3JWaWV3KHZpZXcpOwpJbmRleDogV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfb2JqZWN0aW1w
bC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5o
CShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBs
LmgJKHdvcmtpbmcgY29weSkNCkBAIC02NCwxOSArNjQsMTYgQEANCiAjaWYgQVBQTEVfQ0hBTkdF
UwogICAgIHZpcnR1YWwgYm9vbCBhbGxQYXJhbXNBdmFpbGFibGUoKTsKICAgICB2b2lkIHNldHVw
QXBwbGV0KCkgY29uc3Q7Ci0jaWYgIU5PS0lBX0NIQU5HRVMKKwogICAgIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlICpnZXRBcHBsZXRJbnN0YW5jZSgpIGNvbnN0OwogI2VuZGlmCi0jZW5kaWYKIAog
cHJvdGVjdGVkOgogICAgIGtodG1sOjpWQWxpZ24gdmFsaWduOwogCiBwcml2YXRlOgogI2lmIEFQ
UExFX0NIQU5HRVMKLSNpZiAhTk9LSUFfQ0hBTkdFUwogICAgIG11dGFibGUgS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2UgKmFwcGxldEluc3RhbmNlOwotI2VuZGlmCiAgICAgYm9vbCBtX2FsbFBhcmFt
c0F2YWlsYWJsZTsKICNlbmRpZgogfTsKQEAgLTExMyw3ICsxMTAsNyBAQA0KICAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudEltcGwgKmV2dCk7CiAjZW5kaWYKIAotI2lm
IEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiAgICAg
S0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEVtYmVkSW5zdGFuY2UoKSBjb25zdDsKICNlbmRp
ZgogCkBAIC0xMjQsNyArMTIxLDcgQEANCiAgIGJvb2wgbmVlZFdpZGdldFVwZGF0ZTsKICAgICBI
VE1MSW1hZ2VMb2FkZXIqIG1faW1hZ2VMb2FkZXI7CiAjZW5kaWYKLSNpZiBBUFBMRV9DSEFOR0VT
ICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogcHJpdmF0ZToKICAgICBtdXRh
YmxlIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICplbWJlZEluc3RhbmNlOwogI2VuZGlmCkBAIC0x
ODYsNyArMTgzLDcgQEANCiAKICAgICB2b2lkIHJlbmRlckZhbGxiYWNrQ29udGVudCgpOwogCi0j
aWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICAg
ICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0T2JqZWN0SW5zdGFuY2UoKSBjb25zdDsKICNl
bmRpZgogCkBAIC0xOTcsNyArMTk0LDcgQEANCiAgICAgYm9vbCBtX3VzZUZhbGxiYWNrQ29udGVu
dCA6IDE7CiAgICAgSFRNTEltYWdlTG9hZGVyKiBtX2ltYWdlTG9hZGVyOwogCi0jaWYgQVBQTEVf
Q0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqb2JqZWN0SW5zdGFuY2U7CiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3Jl
L2t3cS9LV1FLSFRNTFBhcnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNjIsNiArNjIsOCBAQA0K
ICNpbmNsdWRlICJranNfd2luZG93LmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgInByb3RlY3QuaCIK
KyNpbmNsdWRlICJranNfd2luZG93LmgiCiAjaW5jbHVkZSAicmVuZGVyX2NhbnZhcy5oIgogI2lu
Y2x1ZGUgInJlbmRlcl9mcmFtZXMuaCIKICNpbmNsdWRlICJyZW5kZXJfaW1hZ2UuaCIKQEAgLTIx
OSwxMCArMjIxLDkgQEANCiAgICAgLCBfdXNlc0luYWN0aXZlVGV4dEJhY2tncm91bmRDb2xvcihm
YWxzZSkKICAgICAsIF9zaG93c0ZpcnN0UmVzcG9uZGVyKHRydWUpCiAgICAgLCBfZHJhd1NlbGVj
dGlvbk9ubHkoZmFsc2UpCi0jaWYgIUtIVE1MX05PX1NDUklQVElORwotLy8gICAgLCBfYmluZGlu
Z1Jvb3QoMCkKKyAgICAsIF93aW5kb3dTY3JpcHROUE9iamVjdCgwKQorICAgICwgX2JpbmRpbmdS
b290KDApCiAgICAgLCBfd2luZG93U2NyaXB0T2JqZWN0KDApCi0jZW5kaWYKIC8vICAgICwgX2Ry
YWdTcmMoMCkKIC8vICAgICwgX2RyYWdDbGlwYm9hcmQoMCkKICAgICAsIF9lbGVtZW50VG9EcmF3
KDApCkBAIC03NDksNyArNzUwLDcgQEANCiAgICAgLy8gRklYTUU6IEZyYW1lIHRhcmdldGluZyBp
cyBvbmx5IG9uZSBvZiB0aGUgd2F5cyB0aGUgc3VibWlzc2lvbiBjb3VsZCBlbmQgdXAgZG9pbmcg
c29tZXRoaW5nIG90aGVyCiAgICAgLy8gdGhhbiByZXBsYWNpbmcgdGhpcyBmcmFtZSdzIGNvbnRl
bnQsIHNvIHRoaXMgY2hlY2sgaXMgZmxhd2VkLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGNoZWNr
IGlzIGhhcmRseQogICAgIC8vIG5lZWRlZCBhbnkgbW9yZSBub3cgdGhhdCB3ZSByZXNldCBfc3Vi
bWl0dGVkRm9ybVVSTCBvbiBlYWNoIG1vdXNlIG9yIGtleSBkb3duIGV2ZW50LgotICAgIAorCiAg
ICAgQ1dlYkNvcmVCcmlkZ2UgKnRhcmdldCA9IGFyZ3MuZnJhbWVOYW1lLmlzRW1wdHkoKSA/IF9i
cmlkZ2UgOiBfYnJpZGdlLT5DbGllbnQoKS5GaW5kRnJhbWVOYW1lZChhcmdzLmZyYW1lTmFtZS5E
ZXMoKSk7CiAgICAgS0hUTUxQYXJ0ICp0YXJnZXRQYXJ0ID0gdGFyZ2V0LT5QYXJ0KCk7CiAgICAg
Ym9vbCB3aWxsUmVwbGFjZVRoaXNGcmFtZSA9IGZhbHNlOwpAQCAtNzU5LDcgKzc2MCw3IEBADQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBpZiAod2ls
bFJlcGxhY2VUaGlzRnJhbWUpIHsKICAgICAgICAgaWYgKF9zdWJtaXR0ZWRGb3JtVVJMID09IHVy
bCkgewogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI2MCw4ICsxMjYxLDcgQEANCiAgIH0KIH0K
IAotI2lmICFLSFRNTF9OT19TQ1JJUFRJTkcKLS8qS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAq
S1dRS0hUTUxQYXJ0OjpiaW5kaW5nUm9vdE9iamVjdCgpCitLSlM6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0ICpLV1FLSFRNTFBhcnQ6OmJpbmRpbmdSb290T2JqZWN0KCkKIHsKICAgICBpZiAoIV9iaW5k
aW5nUm9vdCkgewogICAgICAgICBfYmluZGluZ1Jvb3QgPSBuZXcgS0pTOjpCaW5kaW5nczo6Um9v
dE9iamVjdCgwKTsgICAgLy8gVGhlIHJvb3QgZ2V0cyBkZWxldGVkIGJ5IEphdmFTY3JpcHRDb3Jl
LgpAQCAtMTI3Myw3ICsxMjczLDggQEANCiAgICAgcmV0dXJuIF9iaW5kaW5nUm9vdDsKIH0KIAot
V2ViU2NyaXB0T2JqZWN0ICpLV1FLSFRNTFBhcnQ6OndpbmRvd1NjcmlwdE9iamVjdCgpCisKKy8q
V2ViU2NyaXB0T2JqZWN0ICpLV1FLSFRNTFBhcnQ6OndpbmRvd1NjcmlwdE9iamVjdCgpCiB7CiAg
ICAgaWYgKCFfd2luZG93U2NyaXB0T2JqZWN0KSB7CiAgICAgICAgIEtKUzo6T2JqZWN0SW1wICp3
aW4gPSBzdGF0aWNfY2FzdDxLSlM6Ok9iamVjdEltcCAqPihLSlM6OldpbmRvdzo6cmV0cmlldmVX
aW5kb3codGhpcykpOwpAQCAtMTI4Miw3ICsxMjgzLDYgQEANCiAKICAgICByZXR1cm4gX3dpbmRv
d1NjcmlwdE9iamVjdDsKIH0qLwotI2VuZGlmCiAKIHZvaWQgS1dRS0hUTUxQYXJ0OjpwYXJ0Q2xl
YXJlZEluQmVnaW4oKQogewpAQCAtMjk1OSw0NiArMjk1OSw0NiBAQA0KIAogdm9pZCBLV1FLSFRN
TFBhcnQ6OmdldFJlbmRlclRleHRSZWN0QXJyYXkoY29uc3QgVERlc0MmIGFUZXh0RW50cnksIGNv
bnN0IERPTTo6Tm9kZSYgYU5vZGUsIFJBcnJheTxUUmVjdD4mIGFFbnRyeVJlY3RMaXN0KQogewot
ICAKLSAgICBRU3RyaW5nIHRhcmdldCA9IFFTdHJpbmc6OkZyb21EZXMoYVRleHRFbnRyeSk7ICAg
IAotICAgIAorCisgICAgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nOjpGcm9tRGVzKGFUZXh0RW50
cnkpOworCiAgICAgY29uc3QgbG9uZyBzdGFydCA9IDA7Ci0gIFJlbmRlclRleHQqIHRleHRSZW5k
ZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oYU5vZGUuaGFuZGxlKCktPnJlbmRlcmVy
KCkpOyAgICAgICAgICAgCisgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0
PFJlbmRlclRleHQgKj4oYU5vZGUuaGFuZGxlKCktPnJlbmRlcmVyKCkpOwogICBjb25zdCBsb25n
IG9mZnNldCA9IHRleHRSZW5kZXJlci0+bGVuZ3RoKCk7Ci0gICAgUmFuZ2Ugc2VhcmNoUmFuZ2Uo
YU5vZGUsIHN0YXJ0LCBhTm9kZSwgb2Zmc2V0KTsgICAgIAotICAgICAgICAKKyAgICBSYW5nZSBz
ZWFyY2hSYW5nZShhTm9kZSwgc3RhcnQsIGFOb2RlLCBvZmZzZXQpOworCiAgICAgUmFuZ2UgcmVz
dWx0UmFuZ2UgPSBraHRtbDo6ZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZSwgdGFyZ2V0LCB0cnVl
LCB0cnVlKTsKIAogICB3aGlsZSAoIXJlc3VsdFJhbmdlLmNvbGxhcHNlZCgpKQogICAgIHsKLSAg
ICAgICAgCisKICAgICBzZXRTZWxlY3Rpb24oa2h0bWw6OlNlbGVjdGlvbihyZXN1bHRSYW5nZSwg
a2h0bWw6OkRPV05TVFJFQU0sIGtodG1sOjpTRUxfUFJFRkVSX1VQU1RSRUFNX0FGRklOSVRZKSwg
ZmFsc2UpOwotICAgIAotICAgIAotICAgIGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLmlzTm90
TnVsbCgpKSAKKworCisgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkp
CiAgICAgICB7Ci0gICAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRl
cmVyKCkgJiYgZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGV4
dCgpKSAgICAgICAgICAgICAKKyAgICAgIGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUo
KS0+cmVuZGVyZXIoKSAmJiBkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIo
KS0+aXNUZXh0KCkpCiAgICAgICAgIHsKLSAgICAgICAgLy9nZXQgdGhlIHNlbGVjdGlvbiByZWN0
ICAgIAotICAgICAgICBSZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4o
ZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOyAgICAgIAotICAgICAg
ICAgICAgICBpZiAocnQpIAorICAgICAgICAvL2dldCB0aGUgc2VsZWN0aW9uIHJlY3QKKyAgICAg
ICAgUmVuZGVyVGV4dCAqcnQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGQtPm1fc2VsZWN0
aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgaWYgKHJ0KQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIFFSZWN0IHJTZWxlY3Rpb24gPSBy
dC0+c2VsZWN0aW9uUmVjdCgpOwotICAgICAgICAgICAgICAgIF9mb2N1c2FibGVOb2RlTGlzdC0+
YXBwZW5kKHJTZWxlY3Rpb24pOyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIF9m
b2N1c2FibGVOb2RlTGlzdC0+YXBwZW5kKHJTZWxlY3Rpb24pOwogICAgICAgICAgICAgICAgICAg
YUVudHJ5UmVjdExpc3QuQXBwZW5kKFRSZWN0KHJTZWxlY3Rpb24ubGVmdCgpLCByU2VsZWN0aW9u
LnRvcCgpLCByU2VsZWN0aW9uLnJpZ2h0KCksIHJTZWxlY3Rpb24uYm90dG9tKCkpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgIH0gICAgIAotICAgICAgCi0gICAgCi0gICAg
ICAgIHNlYXJjaFJhbmdlLnNldFN0YXJ0KGFOb2RlLCByZXN1bHRSYW5nZS5lbmRPZmZzZXQoKSk7
ICAgICAgICAgICAgIAorICAgICAgfQorCisKKyAgICAgICAgc2VhcmNoUmFuZ2Uuc2V0U3RhcnQo
YU5vZGUsIHJlc3VsdFJhbmdlLmVuZE9mZnNldCgpKTsKICAgICAgICAgc2VhcmNoUmFuZ2Uuc2V0
RW5kKGFOb2RlLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgcmVzdWx0
UmFuZ2UgPSBraHRtbDo6ZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZSwgdGFyZ2V0LCB0cnVlLCB0
cnVlKTsgICAgCi0gICAgfSAgIAogCisgICAgICByZXN1bHRSYW5nZSA9IGtodG1sOjpmaW5kUGxh
aW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUpOworICAgIH0KKwogICAgIGNs
ZWFyU2VsZWN0aW9uKCk7Ci0gICAgICAKKwogfQogCiAvKgpAQCAtMzAwOSw1MiArMzAwOSw1MiBA
QA0KICAgICAgIHsKICAgICAgICAgZC0+bV9maXJzdEZvdW5kID0gZC0+bV9zZWxlY3Rpb247CiAg
ICAgICB9Ci0gICAgZWxzZSAKLSAgICAgIHsgICAgICAgIAorICAgIGVsc2UKKyAgICAgIHsKICAg
ICAgICAgZC0+bV9maXJzdEZvdW5kID0ga2h0bWw6OlNlbGVjdGlvbigpOwogICAgICAgfQotICAg
IAorCiAgIGtodG1sOjpTZWxlY3Rpb24gZmlyc3RGb3VuZChkLT5tX2ZpcnN0Rm91bmQpOwogICBr
aHRtbDo6U2VsZWN0aW9uIGxhc3RGb3VuZChkLT5tX2xhc3RGb3VuZCk7CiAgIGtodG1sOjpTZWxl
Y3Rpb24gY3Vyc2VsZWN0aW9uKGQtPm1fc2VsZWN0aW9uKTsKIAogCiAgICAgVEludCByZXN1bHQg
PSBGaW5kU3RyaW5nKGFUZXh0RW50cnksIHRydWUsIHRydWUsIHRydWUsIHRydWUpOwotICAKKwog
ICB3aGlsZSAocmVzdWx0ID09IFRCckN0bERlZnM6OkVGaW5kTWF0Y2gpCiAgICAgewogCi0gICAg
aWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkpIAorICAgIGlmIChkLT5tX3Nl
bGVjdGlvbi5zdGFydCgpLmlzTm90TnVsbCgpKQogICAgICAgewotICAgICAgaWYgKGQtPm1fc2Vs
ZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0YXJ0
KCkubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RleHQoKSkgICAgICAgICAgICAgCisgICAgICBpZiAo
ZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZC0+bV9zZWxlY3Rp
b24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGV4dCgpKQogICAgICAgICB7Ci0gICAg
ICAgIC8vZ2V0IHRoZSBzZWxlY3Rpb24gcmVjdCAgICAKLSAgICAgICAgUmVuZGVyVGV4dCAqcnQg
PSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgp
LT5yZW5kZXJlcigpKTsgICAgICAKLSAgICAgICAgICAgICAgaWYgKHJ0KSAKKyAgICAgICAgLy9n
ZXQgdGhlIHNlbGVjdGlvbiByZWN0CisgICAgICAgIFJlbmRlclRleHQgKnJ0ID0gc3RhdGljX2Nh
c3Q8UmVuZGVyVGV4dCAqPihkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIo
KSk7CisgICAgICAgICAgICAgIGlmIChydCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICBRUmVjdCByU2VsZWN0aW9uID0gcnQtPnNlbGVjdGlvblJlY3QoKTsKIAogICAgICAg
ICAgIGJvb2wgYkV4aXN0cyA9IEVGYWxzZTsKLSAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7aSA8
IF9mb2N1c2FibGVOb2RlTGlzdC0+Y291bnQoKTtpKyspIAorICAgICAgICAgICAgZm9yKGludCBp
ID0gMDtpIDwgX2ZvY3VzYWJsZU5vZGVMaXN0LT5jb3VudCgpO2krKykKICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIFFSZWN0IG5yID0gX2ZvY3VzYWJsZU5vZGVMaXN0LT5vcGVyYXRv
cltdKGkpOwogICAgICAgICAgICAgICAgIGlmKCFuci5pbnRlcnNlY3RzKHJTZWxlY3Rpb24pKQot
ICAgICAgICAgICAgICAgICAgeyAgICAgCisgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICBiRXhpc3RzID0gRVRydWU7Ci0gICAgICAgICAgICAgICAgICBicmVhazsgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgCisKICAgICAgICAgICBpZiAoIWJFeGlzdHMpCi0gICAg
ICAgICAgICB7ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgIF9mb2N1c2FibGVOb2RlTGlz
dC0+YXBwZW5kKHJTZWxlY3Rpb24pOyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVjdGlvbik7
CiAgICAgICAgICAgICB9Ci0gICAgICAKKwogICAgICAgICAgICAgICAgICAgYUVudHJ5UmVjdExp
c3QuQXBwZW5kKFRSZWN0KHJTZWxlY3Rpb24ubGVmdCgpLCByU2VsZWN0aW9uLnRvcCgpLCByU2Vs
ZWN0aW9uLnJpZ2h0KCksIHJTZWxlY3Rpb24uYm90dG9tKCkpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIAorCiAgICAgcmVzdWx0ID0gRmluZFN0cmluZyhh
VGV4dEVudHJ5LCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICB9CiAKQEAgLTMwNjIsNyAr
MzA2Miw3IEBADQogICBkLT5tX2ZpcnN0Rm91bmQgPSBmaXJzdEZvdW5kOwogICBkLT5tX2xhc3RG
b3VuZCA9IGxhc3RGb3VuZDsKICAgZC0+bV9zZWxlY3Rpb24gPSBjdXJzZWxlY3Rpb247Ci0gICAg
ICAgIAorCiB9CiAqLwogLy8gcmV0dXJucyBOU1JlY3QgYmVjYXVzZSBnb2luZyB0aHJvdWdoIFFS
ZWN0IHdvdWxkIHRydW5jYXRlIGFueSBmbG9hdHMKQEAgLTMzNTYsMjMgKzMzNTYsMjEgQEANCiAg
ICAgfQogICAgIHJldHVybiAwOwogfQorI2VuZGlmCiAKIHZvaWQgS1dRS0hUTUxQYXJ0OjphZGRQ
bHVnaW5Sb290T2JqZWN0KGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKnJvb3QpCiB7
CiAgICAgcm9vdE9iamVjdHMuYXBwZW5kIChyb290KTsKIH0KLSNlbmRpZgogCiB2b2lkIEtXUUtI
VE1MUGFydDo6Y2xlYW51cFBsdWdpblJvb3RPYmplY3RzKCkKIHsKIC8vICMjIyBOT1QgSU1QTEVN
RU5URUQgc2NyaXB0aW5nLCBwbHVnaW5zCi0vKgogICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3QgKnJvb3Q7CiAgICAgd2hpbGUgKChyb290ID0gcm9vdE9iamVjdHMuZ2V0TGFzdCgpKSkgewog
ICAgICAgICByb290LT5yZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzICgpOwogICAgICAgICByb290
T2JqZWN0cy5yZW1vdmVMYXN0KCk7CiAgICAgfQotKi8KIH0KIAogCkBAIC0zNzkzLDcgKzM3OTEs
NyBAQA0KICAgICAgICAgICBRUG9pbnQgbnAgPSBuZWFyZXN0UG9pbnRJblJlY3QoX2N1cnNvclBv
c2l0aW9uLGludGVyc2VjdFJlY3QpOwogICAgICAgICAgIGludCB4ID0gKG5wLngoKSAtIF9jdXJz
b3JQb3NpdGlvbi54KCkpOwogICAgICAgICAgIGludCB5ID0gKG5wLnkoKSAtIF9jdXJzb3JQb3Np
dGlvbi55KCkpOwotICAgICAgICAgIAorCiAgICAgICAgICAgaWYobHIgIT0gMCAmJiBBYnMoeSkg
PiB2aWV3KCktPnZpc2libGVIZWlnaHQoKS80KSBjb250aW51ZTsKIAogICAgICAgICAgIGlmKCFm
b2N1c1JhbmdlLmlzRW1wdHkoKSAmJiAhZm9jdXNSZWN0LmlzRW1wdHkoKSkgewpAQCAtMzk4Miw3
ICszOTgwLDcgQEANCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoZm9jdXNSZWN0
LmlzRW1wdHkoKSkgcmV0dXJuIGZhbHNlOwotICAgICAgIAorCiAgICAgICAgZm9jdXNlZEZyYW1l
UGFydC0+YnJpZGdlKCktPlBvaW50ZXJFdmVudChUUG9pbnRlckV2ZW50OjpFTW92ZSxmb2N1c1Jl
Y3QuY2VudGVyKCkuUG9pbnQoKSk7CiAKICAgICAgICBRUmVjdCB2aWV3UmVjdChmb2N1c2VkRnJh
bWVQYXJ0LT52aWV3KCktPmNvbnRlbnRzWCgpLGZvY3VzZWRGcmFtZVBhcnQtPnZpZXcoKS0+Y29u
dGVudHNZKCksCkBAIC00MDY0LDQgKzQwNjIsMzggQEANCiAgICAgLy8gUmVzZXQgdGhlIG11bHRp
cGxlIGZvcm0gc3VibWlzc2lvbiBwcm90ZWN0aW9uIGNvZGUuCiAgICAgLy8gV2UnbGwgbGV0IHlv
dSBzdWJtaXQgdGhlIHNhbWUgZm9ybSB0d2ljZSBpZiB5b3UgZG8gdHdvIHNlcGFyYXRlIHVzZXIg
YWN0aW9ucy4KICAgICBfc3VibWl0dGVkRm9ybVVSTCA9IEtVUkwoKTsKLX0NClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQ0KK30KKworI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMKK0tKUzo6
T2JqZWN0SW1wKiBLV1FLSFRNTFBhcnQ6OmNyZWF0ZVdpZGdldE9iamVjdChLSlM6OkV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBLSlM6Ok9iamVjdEltcCogb2JqSW1wbCA9IHN0YXRpY19jYXN0PEtK
Uzo6T2JqZWN0SW1wICo+KF9icmlkZ2UtPkNsaWVudCgpLmNyZWF0ZVdpZGdldE9iamVjdCgodm9p
ZCogKWV4ZWMpKTsKKyAgICByZXR1cm4gb2JqSW1wbDsKK30KKyNlbmRpZgorCitLSlM6OkJpbmRp
bmdzOjpJbnN0YW5jZSAqS1dRS0hUTUxQYXJ0OjpnZXRFbWJlZEluc3RhbmNlRm9yVmlldyAoTVdl
YkNvcmVXaWRnZXQgKmFWaWV3KQoreworICAgIHJldHVybiBnZXRPYmplY3RJbnN0YW5jZUZvclZp
ZXcoYVZpZXcpOworfQorCitLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqS1dRS0hUTUxQYXJ0Ojpn
ZXRPYmplY3RJbnN0YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICphVmlldykKK3sKKyAgICB2
b2lkKiBvYmplY3QgPSBhVmlldy0+UGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpOworICAgIGlmIChv
YmplY3QpIHsKKyAgICAgICAgLy9LSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25D
b250ZXh0ID0gS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6ZmluZFJvb3RPYmplY3RGb3JOYXRp
dmVIYW5kbGVGdW5jdGlvbiAoKShhVmlldyk7CisgICAgICAgIC8vcmV0dXJuIEtKUzo6QmluZGlu
Z3M6Okluc3RhbmNlOjpjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoS0pTOjpCaW5k
aW5nczo6SW5zdGFuY2U6OkNMYW5ndWFnZSwgb2JqZWN0LCBleGVjdXRpb25Db250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpjcmVhdGVCaW5kaW5nRm9yTGFu
Z3VhZ2VJbnN0YW5jZSAoS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OkNMYW5ndWFnZSwgb2JqZWN0
KTsKKyAgICB9Cit9CisKK05QT2JqZWN0ICpLV1FLSFRNTFBhcnQ6OndpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCkKK3sKKyAgICBpZiAoIV93aW5kb3dTY3JpcHROUE9iamVjdCkgeworICAgICAgICBLSlM6
Ok9iamVjdEltcCAqd2luID0gc3RhdGljX2Nhc3Q8S0pTOjpPYmplY3RJbXAgKj4oS0pTOjpXaW5k
b3c6OnJldHJpZXZlV2luZG93KHRoaXMpKTsKKyAgICAgICAgX3dpbmRvd1NjcmlwdE5QT2JqZWN0
ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKDAsIHdpbiwgYmluZGluZ1Jvb3RPYmplY3QoKSwg
YmluZGluZ1Jvb3RPYmplY3QoKSk7CisgICAgfQorCisgICAgcmV0dXJuIF93aW5kb3dTY3JpcHRO
UE9iamVjdDsKK30KKwpJbmRleDogV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaAkocmV2aXNpb24gMTcwNjkpDQorKysg
V2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNCw2ICszNCw3
IEBADQogI2luY2x1ZGUgImRvbV9ub2RlaW1wbC5oIgogI2luY2x1ZGUgImh0bWxfZm9ybWltcGwu
aCIKICNpbmNsdWRlICJodG1sX3RhYmxlaW1wbC5oIgorI2luY2x1ZGUgIm9iamVjdC5oIgogCiAj
aW5jbHVkZSAiV2ViQ29yZUtleWJvYXJkQWNjZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUtleVZh
bHVlUGFpci5oIgpAQCAtNDEsNiArNDIsOSBAQA0KIAogI2luY2x1ZGUgPGUzMmJhc2UuaD4KICNp
bmNsdWRlIDx3MzJzdGQuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ucHJ1bnRpbWUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9OUF9qc29iamVjdC5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUuaD4KIAogI2luY2x1ZGUgIktXUURpY3QuaCIKICNpbmNsdWRlICJL
V1FDbGlwYm9hcmQuaCIKQEAgLTU4LDYgKzYyLDcgQEANCiAgICAgY2xhc3MgU2F2ZWRQcm9wZXJ0
aWVzOwogICAgIGNsYXNzIFNhdmVkQnVpbHRpbnM7CiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9u
OworICAgIGNsYXNzIFByb3RlY3RlZFZhbHVlOwogfQogCiBjbGFzcyBDV2ViQ29yZUJyaWRnZTsK
QEAgLTIwMyw3ICsyMDgsNyBAQA0KIAogICAgIFFSZWN0IHNlbGVjdGlvblJlY3QoKSBjb25zdDsK
ICAgICB2b2lkIGdldFJlbmRlclRleHRSZWN0QXJyYXkoY29uc3QgVERlc0MmIGFUZXh0RW50cnks
IGNvbnN0IERPTTo6Tm9kZSYgYU5vZGUsIFJBcnJheTxUUmVjdD4mIGFFbnRyeVJlY3RMaXN0KTsK
LSAgICAKKwogLy8gICAgTlNSZWN0IHZpc2libGVTZWxlY3Rpb25SZWN0KCkgY29uc3Q7CiAvLyAg
ICBOU0ltYWdlICpzZWxlY3Rpb25JbWFnZSgpIGNvbnN0OwogLy8gICAgTlNJbWFnZSAqc25hcHNo
b3REcmFnSW1hZ2UoRE9NOjpOb2RlIG5vZGUsIE5TUmVjdCAqaW1hZ2VSZWN0LCBOU1JlY3QgKmVs
ZW1lbnRSZWN0KSBjb25zdDsKQEAgLTIyMiw2ICsyMjcsOSBAQA0KICAgICBib29sIEtleUV2ZW50
KGNvbnN0IFRLZXlFdmVudCYgZXZlbnQsIGJvb2wgdXApOwogICAgIC8vYm9vbCBMYXN0RXZlbnRJ
c01vdXNlVXAoKTsKIAorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMKKyAgICBLSlM6Ok9iamVj
dEltcCogY3JlYXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKSA7CisjZW5kaWYg
Ly9SRF9CUk9XU0VSX1dJREdFVFMKIAogICAgIC8vTWV0aG9kcyB0byB1cGRhdGUgZm9jdXNhYmxl
IG5vZGUgbGlzdAogICAgIHZvaWQgdXBkYXRlRm9jdXNhYmxlUmVjdExpc3QoKTsKQEAgLTI4OSw5
ICsyOTcsMTMgQEANCiAgICAgdm9pZCBkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFFTdHJp
bmcgJnVybFN0cmluZyk7CiAgICAgYm9vbCBoYXZlVG9sZEJyaWRnZUFib3V0TG9hZChjb25zdCBR
U3RyaW5nICZ1cmxTdHJpbmcpOwogCi0vLyAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0
RW1iZWRJbnN0YW5jZUZvclZpZXcgKE5TVmlldyAqYVZpZXcpOwotLy8gICAgS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2UgKmdldEFwcGxldEluc3RhbmNlRm9yVmlldyAoTlNWaWV3ICphVmlldyk7Ci0v
LyAgICB2b2lkIGFkZFBsdWdpblJvb3RPYmplY3QoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9i
amVjdCAqcm9vdCk7CisgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEVtYmVkSW5zdGFu
Y2VGb3JWaWV3IChNV2ViQ29yZVdpZGdldCAqYVZpZXcpOworICAgIEtKUzo6QmluZGluZ3M6Oklu
c3RhbmNlICpnZXRPYmplY3RJbnN0YW5jZUZvclZpZXcoTVdlYkNvcmVXaWRnZXQgKmFWaWV3KTsK
KyAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3IChN
V2ViQ29yZVdpZGdldCAqKSB7IHJldHVybiAwOyB9CisgICAgdm9pZCBhZGRQbHVnaW5Sb290T2Jq
ZWN0KGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKnJvb3QpOworICAgIEtKUzo6Qmlu
ZGluZ3M6OlJvb3RPYmplY3QgKmJpbmRpbmdSb290T2JqZWN0KCk7CisgICAgS0pTOjpCaW5kaW5n
czo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dEZvckRPTSgpOworICAgIE5QT2JqZWN0ICp3
aW5kb3dTY3JpcHROUE9iamVjdCgpOwogICAgIHZvaWQgY2xlYW51cFBsdWdpblJvb3RPYmplY3Rz
KCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oY29uc3Qga2h0bWw6OkVkaXRD
b21tYW5kUHRyICYpOwpAQCAtNDI3LDkgKzQzOSwxMCBAQA0KIAogICAgIGZyaWVuZCBjbGFzcyBL
SFRNTFBhcnQ7CiAKLS8vICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKl9iaW5kaW5nUm9v
dDsgIC8vIFRoZSByb290IG9iamVjdCB1c2VkIGZvciBvYmplY3RzCisgICAgS0pTOjpCaW5kaW5n
czo6Um9vdE9iamVjdCAqX2JpbmRpbmdSb290OyAgLy8gVGhlIHJvb3Qgb2JqZWN0IHVzZWQgZm9y
IG9iamVjdHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Ym91bmQgb3V0c2lkZSB0aGUgY29udGV4dCBvZiBhIHBsdWdpbi4KLS8vICAgIFFQdHJMaXN0PEtK
Uzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3RPYmplY3RzOworICAgIE5QT2JqZWN0ICpfd2lu
ZG93U2NyaXB0TlBPYmplY3Q7CisgICAgUVB0ckxpc3Q8S0pTOjpCaW5kaW5nczo6Um9vdE9iamVj
dD4gcm9vdE9iamVjdHM7CiAgICAgQ1dlYlNjcmlwdE9iamVjdCAqX3dpbmRvd1NjcmlwdE9iamVj
dDsKIAogICAgIERPTTo6Tm9kZSBfZHJhZ1NyYzsgICAgIC8vIGVsZW1lbnQgdGhhdCBtYXkgYmUg
YSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUKSW5kZXg6IFdlYktp
dC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93
c2VyQ29udHJvbC9pbmMvQnJDdGwuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dz
ZXJDb250cm9sL2luYy9CckN0bC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNjQ5LDYgKzY0OSwxNSBA
QA0KICAgICAgICAgKi8NCiAgICAgICAgIElNUE9SVF9DIFRCckN0bERlZnM6OlRCckN0bEZpbmRS
ZXNwb25zZSBGaW5kS2V5d29yZEFnYWluKCBUQm9vbCBhRm93YXJkRGlyZWN0aW9uICk7DQogDQor
I2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBDcmVh
dGVzIHRoZSB3aWRnZXQgZXh0ZW5zaW9uIG9iamVjdA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEByZXR1cm4gTVdpZGdldEV4dGVuc2lvbg0KKyAgICAgICAgKi8NCisgICAgICAg
IElNUE9SVF9DIE1XaWRnZXRFeHRlbnNpb24qIENyZWF0ZVdpZGdldEV4dGVuc2lvbkwoTVdpZGdl
dENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spIDsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdF
VFMNCisNCiAgICAgcHVibGljOiAvLyBmcm9tIE1CckN0bExvYWRFdmVudE9ic2VydmVyDQogDQog
ICAgICAgICB2b2lkIEhhbmRsZUJyb3dzZXJMb2FkRXZlbnRMKCBUQnJDdGxEZWZzOjpUQnJDdGxM
b2FkRXZlbnQgYUJyQ3RsTG9hZEV2ZW50LA0KQEAgLTcyMyw2ICs3MzIsNyBAQA0KICAgICAgICAg
Ki8NCiAgICAgICAgIFRCb29sIFNlbmRDb21tYW5kc1RvQ2xpZW50KFRCckN0bERlZnM6OlRCckN0
bENsaWVudENvbW1hbmRzIGFDb21tYW5kLCBjb25zdCBDQXJyYXlGaXg8VFB0ckM+JiBhQXR0cmli
dXRlc05hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
QXJyYXlGaXg8VFB0ckM+JiBhQXR0cmlidXRlVmFsdWVzKTsNCisNCiAgICAgcHJvdGVjdGVkOiAg
Ly8gRnVuY3Rpb25zIGZyb20gQ0NvZUNvbnRyb2wNCiANCiAgICAgICAgIC8qKg0KSW5kZXg6IFdl
YktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxEZWZzLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBX
ZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
NjAzLDcgKzYwMyw3IEBADQogDQogICAgICAgICAgICAgRUVsZW1lbnRNb3VzZUJ1dHRvbkxpc3Rl
bmVyLCAvLy88IEEgTW91c2UgYnV0dG9uIGxpc3RlbmVyDQogICAgICAgICAgICAgRUVsZW1lbnRT
Y3JvbGxCYXIsICAgIC8vLzwgQSBzY3JvbGwgYmFyDQotICAgICAgICAgICAgDQorDQogICAgICAg
ICAgICAgRUVsZW1lbnRTbWFydExpbmtUZWwsIC8vLzwgQSB0ZWxlcGhvbmUgbnVtYmVyIGluIHRo
ZSBwYWdlLg0KICAgICAgICAgICAgIEVFbGVtZW50U21hcnRMaW5rRW1haWwgLy8vPCBhbiBlbWFp
bCBhZGRyZXNzIGluIHRoZSBwYWdlLg0KICAgICAgICAgfTsNCkBAIC03MTYsNiArNzE2LDE3IEBA
DQogICAgICAgICBFQ2xpZW50Q29tbWFuZExhdW5jaEZpbmRLZXl3b3JkID0gMCwNCiAgICAgICAg
IEVDbGllbnRDb21tYW5kU3Vic2NyaWJlVG9GZWVkcw0KICAgICAgICAgfTsNCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyAgICAvKioNCisgICAgKiBUaGUgd2lkZ2V0IHBhcmFtcy4NCisg
ICAgKi8NCisgICAgZW51bSBUQnJDdGxXaWRnZXRQYXJhbXMNCisgICAgICAgIHsNCisgICAgICAg
IEVXaWRnZXRJZGVudGlmaWVyID0gMCwNCisgICAgICAgIEVXaWRnZXRCdW5kbGVJZCwNCisgICAg
ICAgIEVXaWRnZXRCYXNlUGF0aA0KKyAgICAgICAgfTsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJ
REdFVFMNCiAgICAgfTsNCiANCiAjZW5kaWYgICAgICAvLyBCUkNUTERFRlNfSA0KSW5kZXg6IFdl
YktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxJbnRlcmZhY2UuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxJbnRlcmZhY2UuaAkocmV2aXNpb24gMTcw
NjkpDQorKysgV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bEludGVyZmFjZS5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtNzEsNyArNzEsMTAgQEANCiBjbGFzcyBUQnJDdGxTdWJzY3JpYmVUbzsN
CiBjbGFzcyBNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyOw0KIGNsYXNzIE1CckN0bENvbW1hbmRP
YnNlcnZlcjsNCi0NCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK2NsYXNzIE1XaWRnZXRD
YWxsYmFjazsNCitjbGFzcyBNV2lkZ2V0RXh0ZW5zaW9uOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJf
V0lER0VUUw0KIGNsYXNzIENCckN0bEludGVyZmFjZTsNCiBjbGFzcyBDUGx1Z2luSW5mbzsNCiAN
CkBAIC01OTYsNiArNTk5LDE1IEBADQogICAgICAgICAqLw0KICAgICAgICAgSU1QT1JUX0Mgdmly
dHVhbCB2b2lkIFJlbW92ZUNvbW1hbmRPYnNlcnZlcihNQnJDdGxDb21tYW5kT2JzZXJ2ZXIqIGFC
ckN0bENvbW1hbmRPYnNlcnZlcikgPSAwOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRT
DQorICAgICAgICAvKioNCisgICAgICAgICogVW5yZWdpc3RlciBhIGNsaWVudCBjb21tYW5kIGlu
dGVyZmFjZSBmb3IgdGhlIGJyb3dzZXIgZW5naW5lDQorICAgICAgICAqIEBzaW5jZSAzLjENCisg
ICAgICAgICogQHBhcmFtIFRoZSBvYnNlcnZlciB0byB1bnJlZ2lzdGVyDQorICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIElNUE9SVF9DIHZpcnR1YWwgTVdpZGdl
dEV4dGVuc2lvbiogQ3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTChNV2lkZ2V0Q2FsbGJhY2smIGFXaWRn
ZXRDYWxsYmFjaykgPSAwOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9Ow0K
IA0KIA0KQEAgLTg2OCw2ICs4ODAsNDkgQEANCiAgICAgICAgIHZpcnR1YWwgdm9pZCBIYW5kbGVD
b21tYW5kTChUQnJDdGxEZWZzOjpUQnJDdGxDbGllbnRDb21tYW5kcyBhQ29tbWFuZCwgY29uc3Qg
Q0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZXNOYW1lcywNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZVZhbHVl
cykgPSAwOw0KICAgICB9Ow0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorLy8gQ0xBU1Mg
REVDTEFSQVRJT04NCisvKioNCisqICBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZv
ciB0aGUgYnJvd3NlciBlbmdpbmUgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgd2lkZ2V0IGhvc3QgYXBw
bGljYXRpb24NCisqDQorKiAgQGxpYiBCcm93c2VyRW5naW5lLmxpYg0KKyogIEBzaW5jZSAzLjIN
CisqLw0KK2NsYXNzIE1XaWRnZXRDYWxsYmFjaw0KKyAgICB7DQorICAgIHB1YmxpYzogLy8gTmV3
IGZ1bmN0aW9ucw0KKw0KKyAgICAgICAgLy9UTyBCRSBJTVBMRU1FTlRFRA0KKyAgICB9Ow0KKy8v
IENMQVNTIERFQ0xBUkFUSU9ODQorLyoqDQorKiAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbiBleHRl
bnNpb24gbWVjaGFuaXNtIGZvciB0aGUgd2lkZ2V0IGhvc3QgYXBwIHRvIGludGVyYWN0IHdpdGgg
dGhlIGJyb3dzZXIgZW5naW5lDQorKiAgVGhpcyBjbGFzcyBpbmNsdWRlcyB0aGUgV2lkZ2V0IHNw
ZWNpZmljIGV4dGVuc2lvbiBuZWVkZWQgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQorKiAgQGxpYiBC
cm93c2VyRW5naW5lLmxpYg0KKyogIEBzaW5jZSAzLjINCisqLw0KK2NsYXNzIE1XaWRnZXRFeHRl
bnNpb24NCisgICAgew0KKyAgICBwdWJsaWM6IC8vIE5ldyBmdW5jdGlvbnMNCisgICAgICAgIC8q
Kg0KKyAgICAgICAgKiBNZXRob2QgdG8gc2V0IHBhcmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5n
aW5lDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSB3aWRnZXQg
aWRlbnRpZmllcg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW1hdGVy
DQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZpcnR1YWwg
dm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgY29u
c3QgVERlc0MmIGFWYWx1ZSkgPSAwOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhv
ZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJvd3NlciBlbmdpbmUNCisgICAgICAgICogQHNp
bmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHdpZGdldCBwYXJhbWV0ZXIgYVBhcmFtDQor
ICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBwYXJhbWF0ZXINCisgICAgICAgICog
QHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdmlydHVhbCB2b2lkIFNldFBhcmFt
TChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBhcmFtLCBUVWludCBhVmFsdWUpID0g
MDsNCisgICAgfTsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAjZW5kaWYgICAgICAv
LyBCUkNUTElOVEVSRkFDRV9IDQogDQogLy8gRW5kIG9mIEZpbGUNCkluZGV4OiBXZWJLaXQvQnJv
d3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2Vy
Q29udHJvbC9zcmMvQnJDdGwuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3Nl
ckNvbnRyb2wvc3JjL0JyQ3RsLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTc3LDYgKzc3LDkgQEAN
CiAjaW5jbHVkZSAiRmF2aWNvbi5oIg0KICNpbmNsdWRlICJVcmxSZXF1ZXN0SW5mby5oIg0KICNp
bmNsdWRlICJUb29sQmFyLmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisjaW5jbHVk
ZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQog
I2lmZGVmIFJEXzMyX0JST1dTRVINCiAjaW5jbHVkZSAiU21hcnRMaW5rSGFuZGxlci5oIg0KQEAg
LTQzNSwxNCArNDM4LDE0IEBADQogICAgICAgICBkZWxldGUgKENCckN0bFNjcm9sbGluZ1Byb3Zp
ZGVyKilpQnJDdGxTY3JvbGxpbmdQcm92aWRlcjsNCiAgICAgICAgIH0NCiANCi0gICAgaUJyQ3Rs
U29mdGtleXNPYnNlcnZlciA9IE5VTEw7ICAgIA0KKyAgICBpQnJDdGxTb2Z0a2V5c09ic2VydmVy
ID0gTlVMTDsNCiAgICAgaUJyQ3RsU3BlY2lhbExvYWRPYnNlcnZlciA9IE5VTEw7DQotICAgIGlC
ckN0bExheW91dE9ic2VydmVyID0gTlVMTDsgICAgICAgIA0KKyAgICBpQnJDdGxMYXlvdXRPYnNl
cnZlciA9IE5VTEw7DQogICAgIGlCckN0bERpYWxvZ3NQcm92aWRlciA9IE5VTEw7DQogICAgIGlC
ckN0bFdpbmRvd09ic2VydmVyID0gTlVMTDsNCiAgICAgaUJyQ3RsRG93bmxvYWRPYnNlcnZlciA9
IE5VTEw7DQotICAgIGlCckN0bFNjcm9sbGluZ1Byb3ZpZGVyID0gTlVMTDsgICAgDQotICAgIA0K
KyAgICBpQnJDdGxTY3JvbGxpbmdQcm92aWRlciA9IE5VTEw7DQorDQogICAgIC8vDQogICAgIGRl
bGV0ZSBpSHR0cExvYWRlckV2ZW50VG9VaUxpc3RlbmVyOw0KIA0KQEAgLTQ2Myw3ICs0NjYsNyBA
QA0KIA0KICAgICAvL0RlbGV0ZSB0aGUgV2Via2l0Q29udHJvbA0KICAgICBkZWxldGUgaVdlYktp
dENvbnRyb2w7DQotICAgIA0KKw0KICAgICAvLyBjbG9zZSB0aGUgYXJyYXlzLCBhdm9pZCBtZW1v
cnkgbGVha3MNCiAgICAgaUxvYWRFdmVudE9ic2VydmVyc0FycmF5LkNsb3NlKCk7DQogICAgIGlT
dGF0ZUNoYW5nZU9ic2VydmVyQXJyYXkuQ2xvc2UoKTsNCkBAIC00NzIsNyArNDc1LDcgQEANCiAg
ICAgaVN1YnNjcmliZVRvSXRlbXMuQ2xvc2UoKTsNCiAgICAgaVdtbFNlcnZpY2VPcHRpb24uQ2xv
c2UoKTsNCiANCi0gICAgDQorDQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
QEAgLTczMyw3ICs3MzYsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICBpV2ViS2l0Q29udHJvbC0+V2ViS2l0VmlldygpLlNldFNtYXJ0TGlua01vZGUoRVNtYXJ0
TGlua1Bob25lKTsNCiAgICAgICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXco
KS5GaW5kTmV4dFNtYXJ0TGluayhFVHJ1ZSk7DQotICAgICAgICAgICAgICAgIH0gICAgDQorICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICB9DQogICAg
ICAgICBjYXNlIFRCckN0bERlZnM6OkVDb21tYW5kRmluZEl0ZW1FTWFpbDoNCkBAIC03NDMsOSAr
NzQ2LDkgQEANCiAgICAgICAgICAgICAgICAgZm9yICggVEludCBpPTA7IGk8aVN0YXRlQ2hhbmdl
T2JzZXJ2ZXJBcnJheS5Db3VudCgpOyBpKysgKQ0KICAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgaVN0YXRlQ2hhbmdlT2JzZXJ2ZXJBcnJheVtpXS0+U3RhdGVDaGFu
Z2VkKCBUQnJDdGxEZWZzOjpFU3RhdGVTbWFydFRleHRWaWV3LCBFVHJ1ZSk7DQotICAgICAgICAg
ICAgICAgICAgICB9ICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgIGlXZWJLaXRDb250cm9sLT5XZWJLaXRWaWV3KCkuU2V0U21hcnRMaW5rTW9kZSgg
RVNtYXJ0TGlua0VtYWlsICk7DQotICAgICAgICAgICAgICAgIGlXZWJLaXRDb250cm9sLT5XZWJL
aXRWaWV3KCkuRmluZE5leHRTbWFydExpbmsoIEVUcnVlICk7ICAgIA0KKyAgICAgICAgICAgICAg
ICBpV2ViS2l0Q29udHJvbC0+V2ViS2l0VmlldygpLkZpbmROZXh0U21hcnRMaW5rKCBFVHJ1ZSAp
Ow0KICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0N
CkBAIC04NzYsNiArODc5LDE3IEBADQogICAgICAgICAgICAgICAgIFRQbHVnaW5Db250cm9sIHBs
dWdpbkNvbnRyb2woKmlXZWJLaXRDb250cm9sKTsNCiAgICAgICAgICAgICAgICAgcGx1Z2luQ29u
dHJvbC5IYW5kbGVQbHVnaW5Db21tYW5kTChhQ29tbWFuZCk7DQogICAgICAgICAgICAgICAgIH0N
CisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAg
ICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0g
aVdlYktpdENvbnRyb2wtPldpZGdldEV4dGVuc2lvbigpOw0KKyAgICAgICAgICAgICAgICBpZiAo
d2RndEV4dCkNCisgICAgICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAgIHdk
Z3RFeHQtPk9wdGlvbnNNZW51SXRlbVNlbGVjdGVkKGFDb21tYW5kKTsNCisgICAgICAgICAgICAg
ICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgICB9DQogICAgICAgICB9ICAgLy8gZW5kIG9mIHN3aXRjaA0KQEAgLTExMDYsNiArMTEyMCwx
MyBAQA0KICAgICAvLyBCYXNlIHdlJ3JlIHVzaW5nIGZvciB0aGUgcGx1Zy1pbnMNCiAgICAgVFBs
dWdpbkNvbnRyb2wgcGx1Z2luQ29udHJvbCgqaVdlYktpdENvbnRyb2wpOw0KICAgICBwbHVnaW5D
b250cm9sLkFkZFBsdWdpbk9wdGlvbk1lbnVJdGVtc0woYU1lbnVQYW5lLCBUQnJDdGxEZWZzOjpF
Q29tbWFuZElkUGx1Z2luQmFzZSwgYUFmdGVyKTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VU
Uw0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0gaVdlYktpdENvbnRyb2wtPldpZGdl
dEV4dGVuc2lvbigpOw0KKyAgICBpZiAod2RndEV4dCkNCisgICAgICAgIHsNCisgICAgICAgIHdk
Z3RFeHQtPkFkZE9wdGlvbk1lbnVJdGVtc0woYU1lbnVQYW5lKTsNCisgICAgICAgIH0NCisjZW5k
aWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQpAQCAtMTg5Myw3ICsxOTE0LDcgQEANCiAgICAgaWYgKGlCckN0bFNvZnRrZXlzT2JzZXJ2
ZXIpDQogICAgICAgICB7DQogICAgICAgICBpQnJDdGxTb2Z0a2V5c09ic2VydmVyLT5VcGRhdGVT
b2Z0a2V5TChFS2V5TGVmdCwgS051bGxEZXNDLCAwLCBFQ2hhbmdlUmVhc29uSWRsZSk7DQotICAg
ICAgICBpQnJDdGxTb2Z0a2V5c09ic2VydmVyLT5VcGRhdGVTb2Z0a2V5TChFS2V5UmlnaHQsIEtO
dWxsRGVzQywgMCwgRUNoYW5nZVJlYXNvbklkbGUpOyAgICAgICAgDQorICAgICAgICBpQnJDdGxT
b2Z0a2V5c09ic2VydmVyLT5VcGRhdGVTb2Z0a2V5TChFS2V5UmlnaHQsIEtOdWxsRGVzQywgMCwg
RUNoYW5nZVJlYXNvbklkbGUpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpAQCAtMjM2Myw0ICsy
Mzg0LDE2IEBADQogICAgIHJldHVybiBFVHJ1ZTsNCiAgICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJP
V1NFUl9XSURHRVRTDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDQnJDdGw6OkNyZWF0
ZVdpZGdldEV4dGVuc2lvbg0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK0VY
UE9SVF9DIE1XaWRnZXRFeHRlbnNpb24qIENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTChN
V2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykNCisgICAgew0KKyAgICByZXR1cm4gaVdl
YktpdENvbnRyb2wtPkNyZWF0ZVdpZGdldEV4dGVuc2lvbkwoYVdpZGdldENhbGxiYWNrKTsNCisg
ICAgfQ0KKw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIC8vICBFbmQgb2YgRmlsZQ0K
SW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL3dlYmtpdGJyaWRnZS5oCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL3dlYmtpdGJyaWRnZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMiwxMyArMiwxMyBAQA0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiAgTmFt
ZSAgICAgICAgOiB3ZWJraXRicmlkZ2UuaA0KICogIFBhcnQgb2YgICAgIDogV2Via2l0IC8gQnJv
d3NlclZpZXcNCi0qICBJbnRlcmZhY2UgICA6IA0KKyogIEludGVyZmFjZSAgIDoNCiAqICBEZXNj
cmlwdGlvbiA6DQogKiAgVmVyc2lvbiAgICAgOiAzLjENCiAqDQogKiAgICBDb3B5cmlnaHQgKGMp
IDIwMDYsIE5va2lhIENvcnBvcmF0aW9uDQogKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSog
IA0KKyoNCiAqICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogICBhcmUgbWV0Og0KQEAg
LTIyLDcgKzIyLDcgQEANCiAqICAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBOb2tpYSBD
b3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KICogICAgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KICogICAg
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4NCi0qICANCisqDQogKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCiAqICAgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCiAqICAg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SDQpAQCAtOTEsNiArOTEsMTAgQEANCiANCiAgICAgcHVibGljOiAvLyBNZXRo
b2RzIEZyb20gTVdlYkNsaWVudEJyaWRnZQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRT
DQorICAgICAgICB2b2lkKiBjcmVhdGVXaWRnZXRPYmplY3Qodm9pZCogZXhlYyk7DQorI2VuZGlm
IC8vUkRfQlJPV1NFUl9XSURHRVRTDQorDQogICAgICAgICAvKioNCiAgICAgICAgICogQ2hpbGRG
cmFtZXMNCiAgICAgICAgICogRnJvbSBNV2ViQ2xpZW50QnJpZGdlDQpAQCAtMTAyNiw3ICsxMDMw
LDcgQEANCiAgICAgICAgIENXZWJLaXRMb2FkZXIqICAgICAgICAgIGlMb2FkZXI7ICAgICAgICAg
ICAgICAvLyBvd25lZA0KICAgICAvLw0KICAgICBDSWRsZSogICAgICAgICAgaUNsb3NlV2luZG93
Q2FsbGJhY2s7IC8vb3dlZA0KLSAgICANCisNCiAgICAgICAgIC8vIFZhcmlhYmxlcyB0byBzdG9y
ZSB0aGUgc3RhdGUNCiAgICAgICAgIEhCdWZDKiBpUGFnZVRpdGxlOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gb3duZWQNCiAgICAgICAgIEhCdWZDKiBpU3RhdHVzVGV4dDsgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gMHduZWQNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dl
YktpdENvbnRyb2wuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2Vi
S2l0Q29udHJvbC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5j
L1dlYktpdENvbnRyb2wuaAkod29ya2luZyBjb3B5KQ0KQEAgLTkwLDYgKzkwLDkgQEANCiBjbGFz
cyBDSHR0cENhY2hlTWFuYWdlcjsNCiBjbGFzcyBDU3RhdGljSW1hZ2VEZWNvZGVyOw0KIGNsYXNz
IENQbHVnaW5Db250ZW50UGxheWVyOw0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorY2xh
c3MgQ1dpZGdldEV4dGVuc2lvbjsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAv
LyBDTEFTUyBERUNMQVJBVElPTg0KIC8qKg0KQEAgLTMxMSw2ICszMTQsMTYgQEANCiAgICAgICAg
ICovDQogICAgICAgICBDV2ViS2l0VmlldyogQ3JlYXRlV2luZG93KGNvbnN0IFREZXNDJiBhRnJh
bWVOYW1lLFRCb29sIGFVc2VySW5pdGlhdGVkKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIENyZWF0ZVdpZGdldEV4dGVuc2lvbg0KKyAg
ICAgICAgKiBQdXJwb3NlOiBDcmVhdGVzIHRoZSB3aWRnZXQgZXh0ZW5zaW9uIG9iamVjdA0KKyAg
ICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBNV2lkZ2V0Q2FsbGJhY2sqIGFX
aWRnZXRDYWxsYmFjaw0KKyAgICAgICAgKiBAcmV0dXJuIE1XaWRnZXRFeHRlbnNpb24qDQorICAg
ICAgICAqLw0KKyAgICAgICAgTVdpZGdldEV4dGVuc2lvbiogQ3JlYXRlV2lkZ2V0RXh0ZW5zaW9u
TChNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykgOw0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIEZpbmRXaW5kb3dOYW1lZA0K
QEAgLTQ5Myw3ICs1MDYsMTYgQEANCiAgICAgICAgICovDQogICAgICAgICBDQnJDdGwmIEJyQ3Rs
KCkgY29uc3QgeyByZXR1cm4gKmlCckN0bDsgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURH
RVRTDQogICAgICAgICAvKioNCisgICAgICAgICogQXNzb2NpYXRlZCBicm93c2VyIGNvbnRyb2wN
CisgICAgICAgICogQHNpbmNlIDMuMA0KKyAgICAgICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRv
IEJyQ3RsDQorICAgICAgICAqLw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogV2lkZ2V0RXh0
ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gaVdpZGdldEV4dGVuc2lvbjsgfQ0KKyNlbmRpZiAvL1JE
X0JST1dTRVJfV0lER0VUUw0KKw0KKyAgICAgICAgLyoqDQogICAgICAgICAqIFJlc291cmNlIGxv
YWRlciBzZXR0aW5ncyBjb250cm9sbGVyDQogICAgICAgICAqIEBzaW5jZSAzLjANCiAgICAgICAg
ICogQHJldHVybiBBIHJlZmVyZW5jZQ0KQEAgLTg5Myw2ICs5MTUsOSBAQA0KICAgICAgICAgLy8g
cGx1Z2luIHBsYXllcg0KICAgICAgICAgQ1BsdWdpbkNvbnRlbnRQbGF5ZXIqICAgICAgIGlQbHVn
aW5QbGF5ZXI7DQogI2VuZGlmDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAg
IENXaWRnZXRFeHRlbnNpb24qIGlXaWRnZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRfQlJPV1NF
Ul9XSURHRVRTDQogICAgIH07DQogDQogI2VuZGlmICAgICAgLy8gV0VCS0lUQ09OVFJPTF9IDQpJ
bmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRFeHRlbnNpb24uaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0RXh0ZW5zaW9uLmgJKHJldmlzaW9u
IDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRFeHRlbnNpb24uaAkocmV2aXNp
b24gMCkNCkBAIC0wLDAgKzEsMzU1IEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
KyogIE5hbWUgICAgICAgIDogV2ViS2l0V2lkZ2V0SW50ZXJmYWNlLmgNCisqICBQYXJ0IG9mICAg
ICA6IFdlYkVuZ2luZS9XZWJLaXRXaWRnZXRJbnRlcmZhY2UNCisqICBEZXNjcmlwdGlvbiA6DQor
KiAgVmVyc2lvbiAgICAgOiAyLjEuMQ0KKyoNCisqICBDb3B5cmlnaHQgKGMpIDIwMDQgTm9raWEg
Q29ycG9yYXRpb24uDQorKiAgVGhpcyBtYXRlcmlhbCwgaW5jbHVkaW5nIGRvY3VtZW50YXRpb24g
YW5kIGFueSByZWxhdGVkDQorKiAgY29tcHV0ZXIgcHJvZ3JhbXMsIGlzIHByb3RlY3RlZCBieSBj
b3B5cmlnaHQgY29udHJvbGxlZCBieQ0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IGFyZSByZXNlcnZlZC4gQ29weWluZywNCisqICBpbmNsdWRpbmcgcmVwcm9kdWNpbmcsIHN0b3Jp
bmcsIGFkYXB0aW5nIG9yIHRyYW5zbGF0aW5nLCBhbnkNCisqICBvciBhbGwgb2YgdGhpcyBtYXRl
cmlhbCByZXF1aXJlcyB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mDQorKiAgTm9raWEgQ29y
cG9yYXRpb24uIFRoaXMgbWF0ZXJpYWwgYWxzbyBjb250YWlucyBjb25maWRlbnRpYWwNCisqICBp
bmZvcm1hdGlvbiB3aGljaCBtYXkgbm90IGJlIGRpc2Nsb3NlZCB0byBvdGhlcnMgd2l0aG91dCB0
aGUNCisqICBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YgTm9raWEgQ29ycG9yYXRpb24uDQorKiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCisqLw0KKw0KKyNpZm5kZWYgX19XSURHRVRFTkdJTkVDQUxM
QkFDSw0KKyNkZWZpbmUgX19XSURHRVRFTkdJTkVDQUxMQkFDSw0KKw0KKy8vICBJTkNMVURFUw0K
KyNpbmNsdWRlIDxlMzJiYXNlLmg+DQorI2luY2x1ZGUgPGUzMmhhc2h0YWIuaD4NCisjaW5jbHVk
ZSA8QnJDdGxJbnRlcmZhY2UuaD4NCisjaW5jbHVkZSAiV2lkZ2V0RW5naW5lQnJpZGdlLmgiDQor
DQorLy8gQ09OU1RBTlRTDQorDQorLy8gTUFDUk9TDQorDQorLy8gREFUQSBUWVBFUw0KKw0KKy8v
IEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyBGT1JXQVJEIERFQ0xBUkFUSU9ODQorY2xhc3Mg
Q1dlYktpdFZpZXc7DQorY2xhc3MgQ1dpZGdldFByZWZlcmVuY2VzOw0KK2NsYXNzIFRXaWRnZXRS
ZW5kZXJlcjsNCitjbGFzcyBDRWlrTWVudVBhbmU7DQorDQorLy8gQ0xBU1MgREVDTEFSQVRJT04N
CisvKioNCisqICBDV2lkZ2V0RXh0ZW5zaW9uDQorKg0KKyogIEBsaWIgYnJvd3NlcmVuZ2luZS5k
bGwNCisqICBAc2luY2UgMy4yDQorKi8NCitjbGFzcyBDV2lkZ2V0RXh0ZW5zaW9uOiBwdWJsaWMg
Q0Jhc2UsIHB1YmxpYyBNV2lkZ2V0RW5naW5lQ2FsbEJhY2ssIHB1YmxpYyBNV2lkZ2V0RXh0ZW5z
aW9uDQorICAgIHsNCisgICAgcHVibGljOg0KKyAgICAgICAgLyoqDQorICAgICAgICAqIENvbnN0
cnVjdG9yDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFdlYmtpdFZp
ZXcNCisgICAgICAgICogQHBhcmFtIFdpZGdldENhbGxiYWNrIGludGVyZmFjZQ0KKyAgICAgICAg
KiBAcmV0dXJuIENXaWRnZXRFeHRlbnNpb24gb2JqZWN0Lg0KKyAgICAgICAgKi8NCisgICAgICAg
IHN0YXRpYyBDV2lkZ2V0RXh0ZW5zaW9uKiBOZXdMKENXZWJLaXRWaWV3JiBhV2ViS2l0VmlldyxN
V2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjayk7DQorDQorICAgICAgICAvKioNCisgICAg
ICAgICogRGVzdHJ1Y3Rvci4NCisgICAgICAgICovDQorICAgICAgICB2aXJ0dWFsIH5DV2lkZ2V0
RXh0ZW5zaW9uKCk7DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBN
ZXRob2QgQWRkT3B0aW9uTWVudUl0ZW1zTA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAg
ICAqIEBwYXJhbSBUaGUgb3B0aW9ucyBtZW51DQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAg
ICAgICAgKi8NCisgICAgICAgIHZvaWQgQWRkT3B0aW9uTWVudUl0ZW1zTCggQ0Vpa01lbnVQYW5l
JiBhTWVudVBhbmUgKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT3B0aW9u
c01lbnVJdGVtU2VsZWN0ZWQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFy
YW0gVGhlIG9wdGlvbnMgbWVudSBjb21tYW5kDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAg
ICAgICAgKi8NCisgICAgICAgIHZvaWQgT3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQoIFRJbnQgYUNv
bW1hbmQgKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT25IaWRlU2VsZWN0
ZWQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAg
ICAgICovDQorICAgICAgICB2b2lkIE9uSGlkZVNlbGVjdGVkKCk7DQorDQorICAgICAgICAvKioN
CisgICAgICAgICogTWV0aG9kIE9uUmVtb3ZlU2VsZWN0ZWQNCisgICAgICAgICogQHNpbmNlIDMu
Mg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIE9u
UmVtb3ZlU2VsZWN0ZWQoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT25T
aG93U2VsZWN0ZWQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhl
IHdpZGdldCBpZGVudGlmaWVyDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBw
YXJhbWF0ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAg
dm9pZCBPblNob3dTZWxlY3RlZCgpOw0KKw0KKyAgICBwdWJsaWM6IC8vIEZyb20gTVdpZGdldEVu
Z2luZUNhbGxCYWNrDQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIE9wZW5BcHBs
aWNhdGlvbg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgbmFt
ZSBvZiB0aGUgYXBwbGljYXRpb24gdG8gb3Blbg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisg
ICAgICAgICovDQorICAgICAgICB2b2lkIE9wZW5BcHBsaWNhdGlvbihjb25zdCBURGVzQyYgYUFw
cE5hbWUsIGNvbnN0IFREZXNDJiBhUGFyYW0pOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IE1ldGhvZCBPcGVuVXJsDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFt
IFRoZSB1cmwgdG8gb3Blbg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQor
ICAgICAgICB2b2lkIE9wZW5VcmwoY29uc3QgVERlc0MmIGFVcmwpOw0KKw0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCBQcmVmZXJlbmNlRm9yS2V5DQorICAgICAgICAqIEBzaW5jZSAz
LjINCisgICAgICAgICogQHBhcmFtIFRoZSBwcmVmZXJlbmNlIGtleQ0KKyAgICAgICAgKiBAcGFy
YW0gVGhlIHByZWZlcmVuY2UgdmFsdWUNCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAg
ICAqLw0KKyAgICAgICAgVEludCBQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXNDJiBhS2V5LCBU
UHRyQyYgYVZhbHVlKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgUHJlcGFy
ZUZvclRyYW5zaXRpb24NCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0g
VGhlIHRyYW5zaXRpb24gdHlwZQ0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICov
DQorICAgICAgICB2b2lkIFByZXBhcmVGb3JUcmFuc2l0aW9uKGNvbnN0IFREZXNDJiBhVHJhbnNp
dGlvbik7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFBlcmZvcm1UcmFuc2l0
aW9uDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAg
ICAgICAqLw0KKyAgICAgICAgdm9pZCBQZXJmb3JtVHJhbnNpdGlvbigpOw0KKw0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCBTZXRQcmVmZXJlbmNlRm9yS2V5DQorICAgICAgICAqIEBz
aW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSBwcmVmZXJlbmNlIGtleQ0KKyAgICAgICAg
KiBAcGFyYW0gVGhlIHByZWZlcmVuY2UgdmFsdWUNCisgICAgICAgICogQHJldHVybiB2b2lkDQor
ICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXND
JiBhS2V5LCBjb25zdCBURGVzQyYgYVZhbHVlKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAg
KiBNZXRob2QgQWRkT3B0aW9uc01lbnVJdGVtDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAg
ICAgICogQHBhcmFtIE5hbWUgb2Ygb3B0aW9ucyBtZW51IGl0ZW0NCisgICAgICAgICogQHJldHVy
biBjb21tYW5kIGlkDQorICAgICAgICAqLw0KKyAgICAgICAgVEludCBBZGRPcHRpb25zTWVudUl0
ZW0oY29uc3QgVERlc0MmIGFOYW1lKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRo
b2QgQ2xlYXJPcHRpb25zTWVudQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQ2xlYXJPcHRpb25zTWVudSgp
Ow0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBHZXRXaWRnZXRJZA0KKyAgICAg
ICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gVGhlIHdpZGdldCBpZGVudGlmaWVy
DQorICAgICAgICAqLw0KKyAgICAgICAgVERlc0MmIEdldFdpZGdldEJ1bmRsZUlkKCkgeyByZXR1
cm4gKmlXaWRnZXRCdW5kbGVJZDsgfQ0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhv
ZCBTZXRTY3JvbGxCYXINCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0g
VEJvb2wgdmlzaWJsZQ0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAg
ICAgICB2b2lkIFNldFNjcm9sbEJhcihUQm9vbCBhVmlzaWJsZSk7DQorDQorICAgICAgICAvKioN
CisgICAgICAgICogTWV0aG9kIFNldE5hdmlnYXRpb25FbmFibGVkDQorICAgICAgICAqIEBzaW5j
ZSAzLjINCisgICAgICAgICogQHBhcmFtIFRCb29sIGVuYWJsZWQNCisgICAgICAgICogQHJldHVy
biB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXROYXZpZ2F0aW9uRW5hYmxlZChU
Qm9vbCBhRW5hYmxlKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgU2V0T3B0
aW9uc01lbnVMaXN0ZW5lcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJh
bSBDV2lkZ2V0RXZlbnRIYW5kbGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAg
Ki8NCisgICAgICAgIHZvaWQgU2V0T3B0aW9uc01lbnVMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5k
bGVyKiBhQ2FsbGJhY2spOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBTZXRP
bkhpZGVMaXN0ZW5lcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBD
V2lkZ2V0RXZlbnRIYW5kbGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8N
CisgICAgICAgIHZvaWQgU2V0T25IaWRlTGlzdGVuZXIoQ1dpZGdldEV2ZW50SGFuZGxlciogYUNh
bGxiYWNrKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgU2V0T25SZW1vdmVM
aXN0ZW5lcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBDV2lkZ2V0
RXZlbnRIYW5kbGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAg
ICAgIHZvaWQgU2V0T25SZW1vdmVMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5kbGVyKiBhQ2FsbGJh
Y2spOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBTZXRPblNob3dMaXN0ZW5l
cg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBDV2lkZ2V0RXZlbnRI
YW5kbGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZv
aWQgU2V0T25TaG93TGlzdGVuZXIoQ1dpZGdldEV2ZW50SGFuZGxlciogYUNhbGxiYWNrKTsNCisN
CisgICAgcHVibGljOg0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBXaWRnZXRSZW5k
ZXJlcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gd2lkZ2V0IHJl
bmRlcmVyDQorICAgICAgICAqLw0KKyAgICAgICAgVFdpZGdldFJlbmRlcmVyKiBXaWRnZXRSZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIGlXaWRnZXRSZW5kZXJlcjsgfQ0KKw0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCBXaWRnZXRFbmdpbmVCcmlkZ2V0DQorICAgICAgICAqIEBzaW5j
ZSAzLjINCisgICAgICAgICogQHJldHVybiB3aWRnZXQgZW5naW5lIGJyaWRnZQ0KKyAgICAgICAg
Ki8NCisgICAgICAgIE1XaWRnZXRFbmdpbmVCcmlkZ2UmIFdpZGdldEVuZ2luZUJyaWRnZSgpIGNv
bnN0IHsgcmV0dXJuICppV2lkZ2V0RW5naW5lQnJpZGdlOyB9DQorDQorICAgICAgICAvKioNCisg
ICAgICAgICogTWV0aG9kIE5hdmlnYXRpb25FbmFibGVkDQorICAgICAgICAqIEBzaW5jZSAzLjIN
CisgICAgICAgICogQHJldHVybiBib29sDQorICAgICAgICAqLw0KKyAgICAgICAgVEJvb2wgTmF2
aWdhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpTmF2aWdhdGlvbkVuYWJsZWQ7IH0NCisN
CisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgV2lkZ2V0QmFzZVBhdGgNCisgICAgICAg
ICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIFREZXNDIHdpZGdldCBiYXNlIHBhdGgN
CisgICAgICAgICovDQorICAgICAgICBURGVzQyYgV2lkZ2V0QmFzZVBhdGgoKSBjb25zdCB7IHJl
dHVybiAqaVdpZGdldEJhc2VQYXRoOyB9DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIEdldFdpZGdldElkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVy
biBUaGUgd2lkZ2V0IHVpZA0KKyAgICAgICAgKi8NCisgICAgICAgIFRJbnQgR2V0V2lkZ2V0SWQo
KSB7IHJldHVybiBpV2lkZ2V0SWQ7IH0NCisNCisgICAgcHVibGljOiAvLyBOZXcgZnVuY3Rpb25z
DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIHRvIHNldCBwYXJhbWV0ZXJzIGlu
IHRoZSBicm93c2VyIGVuZ2luZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBw
YXJhbSBUaGUgd2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBm
b3IgdGhlIHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQor
ICAgICAgICB2b2lkIFNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBh
cmFtLCBjb25zdCBURGVzQyYgYVZhbHVlKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBN
ZXRob2QgdG8gc2V0IHBhcmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQorICAgICAgICAq
IEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSB3aWRnZXQgcGFyYW1ldGVyIGFQYXJh
bQ0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW1hdGVyDQorICAgICAg
ICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0UGFyYW1MKFRC
ckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIFRVaW50IGFWYWx1ZSk7DQorDQor
ICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIGNyZWF0ZVdpZGdldE9iamVjdA0KKyAgICAg
ICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbQ0KKyAgICAgICAgKiBAcmV0dXJuIHZv
aWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkKiBjcmVhdGVXaWRnZXRPYmplY3Qodm9pZCog
ZXhlYyk7DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhv
ZCBMb2FkV2lkZ2V0RW5naW5lRGxsTA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAq
IEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgTG9hZFdpZGdldEVuZ2lu
ZURsbEwoKTsNCisNCisgICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIENyZWF0ZUFwcEhh
c2hUYWJsZUwNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQN
CisgICAgICAgICovDQorICAgICAgICB2b2lkIENyZWF0ZUFwcEhhc2hUYWJsZUwoKTsNCisNCisg
ICAgICAgIC8qDQorICAgICAgICAqIE1ldGhvZCBMYXVuY2hBcHBsaWNhdGlvbkwNCisgICAgICAg
ICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0
aW9uIHRvIG9wZW4NCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAg
ICAgdm9pZCBMYXVuY2hBcHBsaWNhdGlvbkwoY29uc3QgVFVpZCYgYVVpZCwgY29uc3QgVERlc0Mm
IGFQYXJhbSk7DQorDQorICAgIHByb3RlY3RlZDoNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiAy
bmQgcGhhc2UgY29uc3RydWN0b3IuDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBDb25zdHJ1
Y3RMKCk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogQysrIGNvbnN0cnVjdG9yLg0KKyAg
ICAgICAgKi8NCisgICAgICAgIENXaWRnZXRFeHRlbnNpb24oIENXZWJLaXRWaWV3JiBhV2ViS2l0
VmlldyxNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjayApOw0KKw0KKw0KKyAgICBwcml2
YXRlOg0KKyAgICAgICAgQ1dlYktpdFZpZXcqIGlXZWJLaXRWaWV3OyAgICAgICAgICAgICAgICAg
ICAgLy9ub3Qgb3duZWQNCisNCisgICAgICAgIENXaWRnZXRQcmVmZXJlbmNlcyogaVByZWZlcmVu
Y2VzOw0KKyAgICAgICAgVFdpZGdldFJlbmRlcmVyKiBpV2lkZ2V0UmVuZGVyZXI7DQorDQorICAg
ICAgICBzdHJ1Y3QgVE1lbnVJdGVtDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIEhCdWZD
KiBpVGV4dDsNCisgICAgICAgICAgICBUSW50IGlDbWRJZDsNCisgICAgICAgICAgICB9Ow0KKw0K
KyAgICAgICAgUkFycmF5PFRNZW51SXRlbT4gaU1lbnVJdGVtczsNCisNCisgICAgICAgIFRJbnQg
ICAgaVdpZGdldElkOw0KKyAgICAgICAgVEJvb2wgICBpTmF2aWdhdGlvbkVuYWJsZWQ7DQorICAg
ICAgICBUQm9vbCAgIGlQYWdlU2NhbGVyV2FzRW5hYmxlZDsNCisgICAgICAgIEhCdWZDKiAgaVdp
ZGdldEJhc2VQYXRoOw0KKyAgICAgICAgSEJ1ZkMqICBpV2lkZ2V0QnVuZGxlSWQ7DQorDQorICAg
ICAgICBNV2lkZ2V0RW5naW5lQnJpZGdlKiBpV2lkZ2V0RW5naW5lQnJpZGdlOw0KKyAgICAgICAg
TVdpZGdldENhbGxiYWNrKiBpV2lkZ2V0Q2FsbGJhY2s7DQorDQorICAgICAgICBSUHRySGFzaE1h
cDxURGVzQyxUSW50PiBpQXBwVWlkTWFwOw0KKyAgICAgICAgUkxpYnJhcnkgaUxpYnJhcnk7DQor
DQorICAgIH07DQorDQorI2VuZGlmDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRn
ZXRQcmVmZXJlbmNlcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9X
aWRnZXRQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAwKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9p
bmMvV2lkZ2V0UHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsNzQgQEANCisv
Kg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRn
ZXRJbnRlcmZhY2UuaA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldElu
dGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0K
KyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVy
aWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRl
ciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAg
Tm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyog
IGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcs
IGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0
dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNv
IGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUg
ZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2Vu
dCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQor
DQorI2lmbmRlZiBfX1dJREdFVEVOR0lORVBSRUZFUkVOQ0VTDQorI2RlZmluZSBfX1dJREdFVEVO
R0lORVBSRUZFUkVOQ0VTDQorDQorLy8gIElOQ0xVREVTDQorI2luY2x1ZGUgPGUzMmJhc2UuaD4N
CisjaW5jbHVkZSA8ZTMyaGFzaHRhYi5oPg0KKy8vIENPTlNUQU5UUw0KKw0KKy8vIE1BQ1JPUw0K
Kw0KKy8vIERBVEEgVFlQRVMNCisNCisvLyBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gRk9S
V0FSRCBERUNMQVJBVElPTg0KK2NsYXNzIENXaWRnZXRFeHRlbnNpb247DQorDQorLy8gQ0xBU1Mg
REVDTEFSQVRJT04NCisvKioNCisqICBDV2lkZ2V0UHJlZmVyZW5jZXMNCisqDQorKiAgQGxpYiB3
aWRnZXRlbmdpbmUuZGxsDQorKiAgQHNpbmNlIDMuMQ0KKyovDQorY2xhc3MgQ1dpZGdldFByZWZl
cmVuY2VzIDogcHVibGljIENCYXNlDQorICAgIHsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAg
c3RhdGljIENXaWRnZXRQcmVmZXJlbmNlcyogTmV3TChDV2lkZ2V0RXh0ZW5zaW9uJiBhV2lkZ2V0
RXh0ZW5zaW9uKTsNCisgICAgICAgIHN0YXRpYyBDV2lkZ2V0UHJlZmVyZW5jZXMqIE5ld0xDKENX
aWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICAgICAgfkNXaWRnZXRQcmVm
ZXJlbmNlcygpOw0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICB2b2lkIExvYWRMKCk7DQorICAg
ICAgICB2b2lkIFNhdmVMKCk7DQorICAgICAgICBUSW50IFByZWZlcmVuY2VMKGNvbnN0IFREZXND
JiBhTmFtZSwgVFB0ckMmIGFWYWx1ZSk7DQorICAgICAgICB2b2lkIFNldFByZWZlcmVuY2VMKGNv
bnN0IFREZXNDJiBhTmFtZSwgY29uc3QgVERlc0MmIGFWYWx1ZSk7DQorDQorICAgIHByb3RlY3Rl
ZDoNCisgICAgICAgIHZvaWQgRW1wdHkoKTsNCisgICAgICAgIHZvaWQgQ3JlYXRlRmlsZVBhdGhM
KCk7DQorICAgICAgICBIQnVmQyogTWFrZUtleUxDKGNvbnN0IFREZXNDJiBhTmFtZSk7DQorDQor
ICAgIHByb3RlY3RlZDoNCisgICAgICAgIENXaWRnZXRQcmVmZXJlbmNlcyhDV2lkZ2V0RXh0ZW5z
aW9uJiBhV2lkZ2V0RXh0ZW5zaW9uKTsNCisgICAgICAgIHZvaWQgQ29uc3RydWN0TCgpOw0KKw0K
KyAgICBwcml2YXRlOg0KKyAgICAgICAgUlB0ckhhc2hNYXA8VERlc0MsVERlc0M+IGlNYXA7DQor
ICAgICAgICBIQnVmQyogaUZpbGVQYXRoOw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogaVdp
ZGdldEV4dGVuc2lvbjsgLy9ub3Qgb3duZWQNCisNCisgICAgfTsNCisNCisjZW5kaWYNCkluZGV4
OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFJlbmRlcmVyLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFJlbmRlcmVyLmgJKHJldmlzaW9uIDApDQor
KysgV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRSZW5kZXJlci5oCShyZXZpc2lvbiAwKQ0K
QEAgLTAsMCArMSw3OCBAQA0KKy8qDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqICBOYW1l
ICAgICAgICA6IFdpZGdldEVuZ2luZVJlbmRlcmVyLmgNCisqICBQYXJ0IG9mICAgICA6IFdlYkVu
Z2luZS9XZWJLaXRXaWRnZXRJbnRlcmZhY2UNCisqICBEZXNjcmlwdGlvbiA6DQorKiAgVmVyc2lv
biAgICAgOiAyLjEuMQ0KKyoNCisqICBDb3B5cmlnaHQgKGMpIDIwMDQgTm9raWEgQ29ycG9yYXRp
b24uDQorKiAgVGhpcyBtYXRlcmlhbCwgaW5jbHVkaW5nIGRvY3VtZW50YXRpb24gYW5kIGFueSBy
ZWxhdGVkDQorKiAgY29tcHV0ZXIgcHJvZ3JhbXMsIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQg
Y29udHJvbGxlZCBieQ0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIGFyZSByZXNl
cnZlZC4gQ29weWluZywNCisqICBpbmNsdWRpbmcgcmVwcm9kdWNpbmcsIHN0b3JpbmcsIGFkYXB0
aW5nIG9yIHRyYW5zbGF0aW5nLCBhbnkNCisqICBvciBhbGwgb2YgdGhpcyBtYXRlcmlhbCByZXF1
aXJlcyB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mDQorKiAgTm9raWEgQ29ycG9yYXRpb24u
IFRoaXMgbWF0ZXJpYWwgYWxzbyBjb250YWlucyBjb25maWRlbnRpYWwNCisqICBpbmZvcm1hdGlv
biB3aGljaCBtYXkgbm90IGJlIGRpc2Nsb3NlZCB0byBvdGhlcnMgd2l0aG91dCB0aGUNCisqICBw
cmlvciB3cml0dGVuIGNvbnNlbnQgb2YgTm9raWEgQ29ycG9yYXRpb24uDQorKiA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCisqLw0KKw0KKyNpZm5kZWYgX19XSURHRVRFTkdJTkVSRU5ERVJFUg0KKyNk
ZWZpbmUgX19XSURHRVRFTkdJTkVSRU5ERVJFUg0KKw0KKy8vICBJTkNMVURFUw0KKyNpbmNsdWRl
IDxlMzJiYXNlLmg+DQorLy8gQ09OU1RBTlRTDQorDQorLy8gTUFDUk9TDQorDQorLy8gREFUQSBU
WVBFUw0KKw0KKy8vIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyBGT1JXQVJEIERFQ0xBUkFU
SU9ODQorY2xhc3MgQ1dlYktpdFZpZXc7DQorY2xhc3MgQ1dpbmRvd0djOw0KK2NsYXNzIENGYnNC
aXRtYXA7DQorDQorLy8gQ0xBU1MgREVDTEFSQVRJT04NCisNCisvKioNCisqICBUV2lkZ2V0UmVu
ZGVyZXINCisqDQorKiAgQGxpYiB3aWRnZXRlbmdpbmUuZGxsDQorKiAgQHNpbmNlIDMuMQ0KKyov
ICAgIA0KK2NsYXNzIFRXaWRnZXRSZW5kZXJlcg0KKyAgICB7DQorDQorICAgIHB1YmxpYzoNCisg
ICAgICAgIFRXaWRnZXRSZW5kZXJlcihDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcpOw0KKyAgICAg
ICAgflRXaWRnZXRSZW5kZXJlcigpOw0KKw0KKyAgICBwdWJsaWM6ICAgIA0KKyAgICAgICAgdm9p
ZCBQcmVwYXJlRm9yVHJhbnNpdGlvbkwoY29uc3QgVERlc0MmIGFUcmFuc2l0aW9uKTsNCisgICAg
ICAgIHZvaWQgUGVyZm9ybVRyYW5zaXRpb25MKCk7DQorICAgICAgICANCisgICAgcHVibGljOg0K
KyAgICAgICAgdm9pZCBUcmFuc2l0aW9uQ2IoKTsNCisgICAgICAgIFRCb29sIFRyYW5zaXRpb25J
blByb2dyZXNzKCkgeyByZXR1cm4gaVRyYW5zaXRpb25CaXRtYXAhPTA7IH0NCisgICAgICAgIHZv
aWQgRHJhd1RyYW5zaXRpb24oQ1dpbmRvd0djJiBnYywgQ0Zic0JpdG1hcCogYUN1cnJlbnRCaXRt
YXApOw0KKw0KKyAgICBwcm90ZWN0ZWQ6DQorICAgICAgICB2b2lkIENyZWF0ZVRyYW5zaXRpb25C
aXRtYXBMKCk7DQorICAgICAgICB2b2lkIERlc3Ryb3lUcmFuc2l0aW9uQml0bWFwKCk7DQorICAg
ICAgICB2b2lkIENyZWF0ZUZhZGVNYXNrTCgpOw0KKyAgICAgICAgdm9pZCBEZXN0cm95RmFkZU1h
c2soKTsNCisgICAgICAgIHZvaWQgRHJhd0ZhZGVNYXNrTCgpOw0KKw0KKyAgICBwcml2YXRlOg0K
KyAgICAgICAgQ1dlYktpdFZpZXcqIGlXZWJLaXRWaWV3Ow0KKyAgICAgICAgQ0Zic0JpdG1hcCog
aVRyYW5zaXRpb25CaXRtYXA7DQorICAgICAgICBDRmJzQml0bWFwKiBpRmFkZU1hc2s7DQorICAg
ICAgICBDUGVyaW9kaWMqIGlUcmFuc2l0aW9uVGltZXI7DQorICAgICAgICBUSW50IGlUcmFuc2l0
aW9uQ291bnQ7ICAgICAgICANCisgICAgICAgICAgICAgICAgDQorICAgIH07DQorICAgICAgICAN
CisjZW5kaWYNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL0tleUV2ZW50SGFuZGxlci5j
cHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL0tleUV2ZW50SGFuZGxl
ci5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvS2V5RXZl
bnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTU0NSw3ICs1NDUsNyBAQA0KICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICBpZiggaVdlYktpdFZpZXctPkZvY3VzZWRFbGVtZW50VHlw
ZSgpID09IFRCckN0bERlZnM6OkVFbGVtZW50Tm9uZQ0KICAgICAgICAgICAgICAgICAmJiBhRXZl
bnRDb2RlID09IEVFdmVudEtleURvd24gJiYgYUtleUV2ZW50LmlSZXBlYXRzID09IDANCi0gICAg
ICAgICAgICAgICAgLyomJiBpV2ViS2l0Vmlldy0+V2ViS2l0Q29udHJvbCgpLkJyQ3RsKCkuQ2Fw
YWJpbGl0aWVzKCkgJiBUQnJDdGxEZWZzOjpFQ2FwYWJpbGl0eVRvb2xCYXIqLyApDQorICAgICAg
ICAgICAgICAgICYmIGlXZWJLaXRWaWV3LT5XZWJLaXRDb250cm9sKCkuQnJDdGwoKS5DYXBhYmls
aXRpZXMoKSAmIFRCckN0bERlZnM6OkVDYXBhYmlsaXR5VG9vbEJhciApDQogICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgaVdlYktpdFZpZXctPkxhdW5jaFRvb2xCYXJMKCk7DQog
ICAgICAgICAgICAgICAgIHJldHVybiBFS2V5V2FzQ29uc3VtZWQ7DQpJbmRleDogV2ViS2l0L0Jy
b3dzZXJWaWV3L3NyYy93ZWJraXRicmlkZ2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jy
b3dzZXJWaWV3L3NyYy93ZWJraXRicmlkZ2UuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJL
aXQvQnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC01
MSw2ICs1MSw5IEBADQogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiDQogI2luY2x1ZGUg
IkxvYWRlclV0aWxzLmgiDQogI2luY2x1ZGUgIldlYktpdExvZ2dlci5oIg0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNlbmRpZiAv
L1JEX0JST1dTRVJfV0lER0VUUw0KIA0KIC8vQ09OU1RBTlRTDQogX0xJVChLRGF0ZVN0cmluZywg
IiUtQiU6MCVKJToxJVQlOjIlUyUuJSpDNCU6MyUrQiIpOw0KQEAgLTkxOCw3ICs5MjEsNyBAQA0K
IA0KICAgaWYoaUZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpLkJyQ3RsKCkuQ2Fw
YWJpbGl0aWVzKCkgJiBUQnJDdGxEZWZzOjpFQ2FwYWJpbGl0eUdyYXBoaWNhbFBhZ2UpDQogICAg
IHsNCi0gICAgVFJBUF9JR05PUkUoaWYoIGlGcmFtZS0+V2ViS2l0VmlldygpLlBhZ2VTY2FsZXIo
KSApIA0KKyAgICBUUkFQX0lHTk9SRShpZiggaUZyYW1lLT5XZWJLaXRWaWV3KCkuUGFnZVNjYWxl
cigpICkNCiAgICAgICAgICAgICAgICAgICAgIGlGcmFtZS0+V2ViS2l0VmlldygpLlBhZ2VTY2Fs
ZXIoKS0+RG9jdW1lbnRDaGFuZ2VkTCgpKTsNCiAgICAgfQ0KICAgICAvLyBkb2N1bWVudCBpcyBw
YXJzZWQgYW5kIG5vIHBlbmRpbmcgdHJhbnNhY3Rpb24gbWVhbiB0aGF0DQpAQCAtMTM1MCw0ICsx
MzUzLDE1IEBADQogICAgIH0NCiAgIH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0K
K3ZvaWQqIENXZWJLaXRCcmlkZ2U6OmNyZWF0ZVdpZGdldE9iamVjdCh2b2lkKiBleGVjKQ0KKyAg
ICB7DQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpRnJhbWUtPldlYktpdFZpZXco
KS5XZWJLaXRDb250cm9sKCkuV2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmKHdkZ3RFeHQpDQor
ICAgICAgIHsNCisgICAgICAgcmV0dXJuIHdkZ3RFeHQtPmNyZWF0ZVdpZGdldE9iamVjdChleGVj
KTsNCisgICAgICAgfQ0KKyAgICByZXR1cm4gMDsNCisgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KIC8vIGVuZCBvZiBmaWxlDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3Ny
Yy9XZWJLaXRDb250cm9sLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9z
cmMvV2ViS2l0Q29udHJvbC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2Vy
Vmlldy9zcmMvV2ViS2l0Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC04MSw2ICs4MSw5
IEBADQogI2luY2x1ZGUgIldlYkNvcmVIaXN0b3J5LmgiDQogI2luY2x1ZGUgIkh0dHBDYWNoZU1h
bmFnZXIuaCINCiAjaW5jbHVkZSAiU3RhdGljSW1hZ2VEZWNvZGVyLmgiDQorI2lmZGVmICBSRF9C
Uk9XU0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQogDQogI2lmZGVmIFJEXzMyX0JST1dTRVINCiAjaW5jbHVkZSAi
UGx1Z2luQ29udGVudFBsYXllci5oIg0KQEAgLTYyNyw2ICs2MzAsOSBAQA0KIA0KICAgICAvLyBj
bGVhdXAgdGhlIHN0YXRpYyBvYmplY3QNCiAgICAgQ1N0YXRpY09iamVjdENvbnRhaW5lcjo6SW5z
dGFuY2UoKS5EZXJlZigpOw0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIGRlbGV0
ZSBpV2lkZ2V0RXh0ZW5zaW9uOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9
DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0yMDkwLDYgKzIwOTYsMjIgQEANCiAg
ICAgICAgIENXZWJDb3JlQnJpZGdlOjpTZXREZWZlcnNUaW1lcnMoIEVGYWxzZSApOw0KICAgICAg
ICAgfQ0KICAgICB9DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXZWJLaXRDb250cm9sOjpDcmVhdGVXaWRnZXRFeHRlbnNpb24NCisv
Lw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCitNV2lkZ2V0RXh0ZW5zaW9uKiBDV2Vi
S2l0Q29udHJvbDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTChNV2lkZ2V0Q2FsbGJhY2smIGFXaWRn
ZXRDYWxsYmFjaykNCisgICAgew0KKyAgICBpZiggIWlXaWRnZXRFeHRlbnNpb24gKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgaVdpZGdldEV4dGVuc2lvbiA9IENXaWRnZXRFeHRlbnNpb246Ok5ld0wo
KmlXZWJLaXRWaWV3LGFXaWRnZXRDYWxsYmFjayk7DQorICAgICAgICB9DQorICAgIFBsdWdpbkhh
bmRsZXIoKS5Mb2FkUGx1Z2luc1N5bmNMKCk7DQorICAgIHJldHVybiBpV2lkZ2V0RXh0ZW5zaW9u
Ow0KKyAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogI2lmZGVmIFJEXzMyX0JS
T1dTRVINCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDYWxsZWQgd2hlbiB1c2VyIGNs
aWNrcyBhIHBsdWdpbiB3aGljaCBpcyBhYmxlIHRvIGFjY2VwdCB1c2VyIGlucHV0LA0KSW5kZXg6
IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdFZpZXcuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpDQpA
QCAtNjAsNiArNjAsMTEgQEANCiAjaW5jbHVkZSAiV2ViS2l0U3VyZmFjZS5oIg0KICNpbmNsdWRl
ICJXZWJLaXRUb29sQmFySW50ZXJmYWNlLmgiDQogI2luY2x1ZGUgIlRvb2xCYXIuaCINCisjaWZk
ZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisj
aW5jbHVkZSAiV2lkZ2V0RW5naW5lQnJpZGdlLmgiDQorI2luY2x1ZGUgIldpZGdldFJlbmRlcmVy
LmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogI2luY2x1ZGUgIkZlYXRNZ3IuaCIN
CiANCiANCkBAIC02MTMsNiArNjE4LDE3IEBADQogICAgICAgICByZXR1cm47DQogICAgICAgICB9
DQogICAgIFNldFZpZXdWaXNpYmxlKGFWaXNpYmxlKTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0gaVdlYktpdENvbnRyb2wtPldp
ZGdldEV4dGVuc2lvbigpOw0KKyAgICBpZiggd2RndEV4dCApDQorICAgICAgICB7DQorICAgICAg
ICBNV2lkZ2V0RW5naW5lQnJpZGdlKiB3ZGd0QnJpZGdlID0gJndkZ3RFeHQtPldpZGdldEVuZ2lu
ZUJyaWRnZSgpOw0KKyAgICAgICAgaWYoIHdkZ3RCcmlkZ2UgKQ0KKyAgICAgICAgICAgIHsNCisg
ICAgICAgICAgICB3ZGd0QnJpZGdlLT5TZXRXaWRnZXRWaXNpYmlsaXR5KGFWaXNpYmxlKTsNCisg
ICAgICAgICAgICB9DQorICAgICAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
ICAgIH0NCiANCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC04NzQsNiArODkwLDE3IEBA
DQogICAgIC8vIHB1dCBvZmZzY3JlZW4gYml0bWFwIG9udG8gdGhlIHNjcmVlbg0KICAgaVJlbmRl
clRhcmdldC0+RmxpcCggUmVjdCgpLmlUbCwgZ2MgKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0gaVdlYktpdENvbnRyb2wt
PldpZGdldEV4dGVuc2lvbigpOw0KKyAgICBpZiAod2RndEV4dCkNCisgICAgICAgIHsNCisgICAg
ICAgIFRXaWRnZXRSZW5kZXJlciogd2lkZ2V0UmVuZGVyZXIgPSBpV2ViS2l0Q29udHJvbC0+V2lk
Z2V0RXh0ZW5zaW9uKCktPldpZGdldFJlbmRlcmVyKCk7DQorICAgICAgICBpZiAod2lkZ2V0UmVu
ZGVyZXIgJiYgd2lkZ2V0UmVuZGVyZXItPlRyYW5zaXRpb25JblByb2dyZXNzKCkpDQorICAgICAg
ICAgICAgew0KKyAgICAgICAgICAgIHdpZGdldFJlbmRlcmVyLT5EcmF3VHJhbnNpdGlvbihnYywg
T2Zmc2NyZWVuQml0bWFwKCkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisjZW5kaWYg
Ly9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgaWYgKGlJc1BhZ2VTY2FsZXJFbmFibGVkKQ0KICAg
ICAgICAgew0KICAgICAgICAgaVBhZ2VTY2FsZXItPkRyYXcoIGdjLGFSZWN0ICk7DQpJbmRleDog
V2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAw
KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0RXh0ZW5zaW9uLmNwcAkocmV2aXNp
b24gMCkNCkBAIC0wLDAgKzEsNTEwIEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
KyogIE5hbWUgICAgICAgIDogV2ViS2l0V2lkZ2V0SW50ZXJmYWNlLmNwcA0KKyogIFBhcnQgb2Yg
ICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldEludGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoN
CisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0KKyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tp
YSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlv
biBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRlciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5
IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyogIGluY2x1ZGluZyByZXByb2R1Y2luZywgc3Rv
cmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1h
dGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBD
b3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyog
IGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUgZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0
IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisq
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQorDQorLy8gSU5DTFVERSBGSUxFUw0KKyNpbmNs
dWRlIDxlMzJzdGQuaD4NCisjaW5jbHVkZSA8ZWlrZW52Lmg+DQorI2luY2x1ZGUgPGFwZ2NsaS5o
Pg0KKyNpbmNsdWRlIDxhcGd0YXNrLmg+DQorI2luY2x1ZGUgPGJyb3dzZXJsYXVuY2hlci5oPg0K
Kw0KKyNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisjaW5jbHVkZSAiV2lkZ2V0UHJlZmVy
ZW5jZXMuaCINCisjaW5jbHVkZSAiV2lkZ2V0UmVuZGVyZXIuaCINCisjaW5jbHVkZSAiV2lkZ2V0
RXZlbnRIYW5kbGVyLmgiDQorI2luY2x1ZGUgIldlYkNvcmVXaWRnZXQuaCINCisjaW5jbHVkZSAi
V2ViS2l0Q29udHJvbC5oIg0KKyNpbmNsdWRlICJXZWJLaXRDdXJzb3IuaCINCisjaW5jbHVkZSAi
V2ViS2l0RnJhbWUuaCINCisjaW5jbHVkZSAiV2ViS2l0Vmlldy5oIg0KKyNpbmNsdWRlICJCckN0
bC5oIg0KKyNpbmNsdWRlICJCckN0bFNjcm9sbGluZ1Byb3ZpZGVyLmgiDQorLy8jaW5jbHVkZSAi
U2Nyb2xsYmFyLmgiDQorDQorLy8gRVhURVJOQUwgREFUQSBTVFJVQ1RVUkVTDQorDQorLy8gRVhU
RVJOQUwgRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIENPTlNUQU5UUw0KKw0KKy8vIE1BQ1JP
Uw0KKw0KKy8vIExPQ0FMIENPTlNUQU5UUyBBTkQgTUFDUk9TDQorY29uc3QgVEludCBLT3B0aW9u
c0NtZElkID0gNjAwMDsNCitjb25zdCBUSW50IEtNYXhPcHRpb25zTWVudSA9IDI1Ow0KK2NvbnN0
IFRJbnQgS01heE9wdGlvbnNNZW51SXRlbVNpemUgPSAyNTY7IC8vYnl0ZXMNCisNCisNCisvLy8N
Citjb25zdCBUSW50IEtNZWRpYUdhbGxlcnlVaWQgPSAweDEwMUY4NTk5Ow0KK19MSVQoS01lZGlh
R2FsbGVyeSwibWVkaWFnYWxsZXJ5Iik7DQorY29uc3QgVEludCBLV2ViQnJvd3NlclVpZCA9IDB4
MTAwMDhEMzk7DQorX0xJVChLV2ViQnJvd3Nlciwid2ViYnJvd3NlciIpOw0KK2NvbnN0IFRJbnQg
S0NhbUFwcEVuZ2luZVVpZCA9IDB4MTAxRjg1N0E7DQorX0xJVChLQ2FtQXBwRW5naW5lLCJjYW1l
cmEiKTsNCisNCisvLyBNT0RVTEUgREFUQSBTVFJVQ1RVUkVTDQordXNpbmcgbmFtZXNwYWNlIEtK
UzsNCisNCisvLyBMT0NBTCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKy8vIENXaWRnZXRFbmdpbmVDYWxsQmFjazo6TmV3TA0KKy8vDQorLy8NCisvLw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0RXh0ZW5zaW9uKiBDV2lkZ2V0RXh0ZW5z
aW9uOjpOZXdMKA0KKyAgICBDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsDQorICAgIE1XaWRnZXRD
YWxsYmFjayYgYVdpZGdldENhbGxiYWNrICkNCisgICAgew0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9u
KiBzZWxmID0gbmV3IChFTGVhdmUpIENXaWRnZXRFeHRlbnNpb24oYVdlYktpdFZpZXcsYVdpZGdl
dENhbGxiYWNrKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChzZWxmKTsNCisgICAgc2VsZi0+
Q29uc3RydWN0TCgpOw0KKyAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOw0KKyAgICByZXR1cm4gc2Vs
ZjsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpDV2lkZ2V0RXh0ZW5zaW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KK0NXaWRnZXRFeHRlbnNpb246OkNXaWRnZXRFeHRlbnNpb24oDQorICAgIENXZWJLaXRW
aWV3JiBhV2ViS2l0VmlldywNCisgICAgTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2sg
KQ0KKyAgICA6aVdlYktpdFZpZXcoJmFXZWJLaXRWaWV3KSwNCisgICAgaVdpZGdldENhbGxiYWNr
KCZhV2lkZ2V0Q2FsbGJhY2spDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjp+Q1dpZGdldEV4dGVuc2lvbg0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0RXh0ZW5zaW9uOjp+Q1dpZGdl
dEV4dGVuc2lvbigpDQorICAgIHsNCisgICAgaWYgKGlQcmVmZXJlbmNlcykNCisgICAgICAgIHsN
CisgICAgICAgIFRSQVBfSUdOT1JFKGlQcmVmZXJlbmNlcy0+U2F2ZUwoKSk7DQorICAgICAgICB9
DQorICAgIGRlbGV0ZSBpUHJlZmVyZW5jZXM7DQorICAgIGRlbGV0ZSBpV2lkZ2V0UmVuZGVyZXI7
DQorICAgIGRlbGV0ZSBpV2lkZ2V0RW5naW5lQnJpZGdlOw0KKyAgICBkZWxldGUgaVdpZGdldEJh
c2VQYXRoOw0KKyAgICBkZWxldGUgaVdpZGdldEJ1bmRsZUlkOw0KKyAgICBpQXBwVWlkTWFwLlJl
c2V0QW5kRGVzdHJveSgpOw0KKyAgICBpTGlicmFyeS5DbG9zZSgpOw0KKyAgICB9DQorDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkNvbnN0cnVjdEwNCisv
Lw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5z
aW9uOjpDb25zdHJ1Y3RMKCkNCisgICAgew0KKw0KKyAgICBpUHJlZmVyZW5jZXMgPSBDV2lkZ2V0
UHJlZmVyZW5jZXM6Ok5ld0woKnRoaXMpOw0KKyAgICBpV2lkZ2V0UmVuZGVyZXIgPSBuZXcgKEVM
ZWF2ZSkgVFdpZGdldFJlbmRlcmVyKCppV2ViS2l0Vmlldyk7DQorICAgIExvYWRXaWRnZXRFbmdp
bmVEbGxMKCk7DQorICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlNldE9ic2VydmVyKCp0aGlzKTsN
CisgICAgQ3JlYXRlQXBwSGFzaFRhYmxlTCgpOw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkNyZWF0ZUFwcEhhc2hUYWJsZUwNCisv
Lw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5z
aW9uOjpDcmVhdGVBcHBIYXNoVGFibGVMKCkNCisgICAgew0KKyAgICBUSW50KiB1aWRtZyA9IG5l
dyBUSW50KEtNZWRpYUdhbGxlcnlVaWQpOw0KKyAgICBIQnVmQyogYnVmbWVkaWEgPSBIQnVmQzo6
TmV3TChUUHRyQyhLTWVkaWFHYWxsZXJ5KS5MZW5ndGgoKSk7DQorICAgICpidWZtZWRpYSA9IEtN
ZWRpYUdhbGxlcnk7DQorDQorICAgIFRJbnQqIHVpZHdlYiA9IG5ldyBUSW50KEtXZWJCcm93c2Vy
VWlkKTsNCisgICAgSEJ1ZkMqIGJ1ZndlYiA9IEhCdWZDOjpOZXdMKFRQdHJDKEtXZWJCcm93c2Vy
KS5MZW5ndGgoKSk7DQorICAgICpidWZ3ZWIgPSBLV2ViQnJvd3NlcjsNCisNCisgICAgVEludCog
dWlkY2FtID0gbmV3IFRJbnQoS0NhbUFwcEVuZ2luZVVpZCk7DQorICAgIEhCdWZDKiBidWZjYW0g
PSBIQnVmQzo6TmV3TChUUHRyQyhLQ2FtQXBwRW5naW5lKS5MZW5ndGgoKSk7DQorICAgICpidWZj
YW0gPSBLQ2FtQXBwRW5naW5lOw0KKw0KKyAgICBpQXBwVWlkTWFwLkluc2VydEwoYnVmbWVkaWEs
dWlkbWcpOw0KKyAgICBpQXBwVWlkTWFwLkluc2VydEwoYnVmd2ViLHVpZHdlYik7DQorICAgIGlB
cHBVaWRNYXAuSW5zZXJ0TChidWZjYW0sdWlkY2FtKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpMYXVuY2hBcHBsaWNhdGlvbkwNCisv
Lw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5z
aW9uOjpMYXVuY2hBcHBsaWNhdGlvbkwoY29uc3QgVFVpZCYgYVVpZCwgY29uc3QgVERlc0MmIGFQ
YXJhbSkNCisgICAgew0KKw0KKyAgICBSQXBhTHNTZXNzaW9uIGFwYUxzU2Vzc2lvbjsNCisgICAg
VEFwYVRhc2tMaXN0IHRhc2tMaXN0KENFaWtvbkVudjo6U3RhdGljKCktPldzU2Vzc2lvbigpKTsN
CisgICAgVEFwYVRhc2sgdGFzayA9IHRhc2tMaXN0LkZpbmRBcHAoYVVpZCk7DQorICAgIGlmICh0
YXNrLkV4aXN0cygpKQ0KKyAgICAgICAgew0KKyAgICAgICAgdGFzay5CcmluZ1RvRm9yZWdyb3Vu
ZCgpOw0KKyAgICAgICAgaWYgKGFQYXJhbS5MZW5ndGgoKSA+IDApDQorICAgICAgICAgICAgew0K
KyAgICAgICAgICAgIEhCdWZDOCogcGFyYW04ID0gSEJ1ZkM4OjpOZXdMQyhhUGFyYW0uTGVuZ3Ro
KCkpOw0KKyAgICAgICAgICAgIHBhcmFtOC0+RGVzKCkuQXBwZW5kKGFQYXJhbSk7DQorICAgICAg
ICAgICAgdGFzay5TZW5kTWVzc2FnZShUVWlkOjpVaWQoMCksKnBhcmFtOCk7DQorICAgICAgICAg
ICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KHBhcmFtOCk7DQorICAgICAgICAgICAgfQ0K
KyAgICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICBUSW50IGVDb25uZWN0
ID0gS0Vyck5vbmU7DQorICAgICAgICBpZiAoIWFwYUxzU2Vzc2lvbi5IYW5kbGUoKSkNCisgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgZUNvbm5lY3QgPSBhcGFMc1Nlc3Npb24uQ29ubmVjdCgp
Ow0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIGlmIChlQ29ubmVjdCA9PSBLRXJyTm9uZSkN
CisgICAgICAgICAgICB7DQorICAgICAgICAgICAgVFRocmVhZElkIHRocmVhZElkOw0KKyAgICAg
ICAgICAgIGFwYUxzU2Vzc2lvbi5TdGFydERvY3VtZW50KGFQYXJhbSwgYVVpZCwgdGhyZWFkSWQp
Ow0KKyAgICAgICAgICAgIGFwYUxzU2Vzc2lvbi5DbG9zZSgpOw0KKyAgICAgICAgICAgIH0NCisg
ICAgICAgIH0NCisNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBD
V2lkZ2V0RXh0ZW5zaW9uOjpPcGVuQXBwbGljYXRpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuQXBwbGljYXRpb24o
Y29uc3QgVERlc0MmIGFBcHBOYW1lLCBjb25zdCBURGVzQyYgYVBhcmFtKQ0KKyAgICB7DQorDQor
ICAgIFRJbnQqIHVpZCA9IGlBcHBVaWRNYXAuRmluZChhQXBwTmFtZSk7DQorICAgIGlmICh1aWQp
DQorICAgICAgICB7DQorICAgICAgICBUVWlkIHVpZEFwcCA9IFRVaWQ6OlVpZCgqdWlkKTsNCisg
ICAgICAgIExhdW5jaEFwcGxpY2F0aW9uTCh1aWRBcHAsYVBhcmFtKTsNCisgICAgICAgIH0NCisN
CisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9u
OjpPcGVuVXJsDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQg
Q1dpZGdldEV4dGVuc2lvbjo6T3BlblVybChjb25zdCBURGVzQyYgYVVybCkNCisgICAgew0KKyAg
ICBIQnVmQyogcGFyYW0gPSBIQnVmQzo6TmV3TEMoYVVybC5MZW5ndGgoKSsyKTsNCisgICAgcGFy
YW0tPkRlcygpLkFwcGVuZChfTCgiNCAiKSk7DQorICAgIHBhcmFtLT5EZXMoKS5BcHBlbmQoYVVy
bCk7DQorICAgIFRSQVBfSUdOT1JFKExhdW5jaEFwcGxpY2F0aW9uTChUVWlkOjpVaWQoS1dlYkJy
b3dzZXJVaWQpLCAqcGFyYW0pKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KHBh
cmFtKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0
ZW5zaW9uOjpQcmVmZXJlbmNlRm9yS2V5DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK1RJbnQgQ1dpZGdldEV4dGVuc2lvbjo6UHJlZmVyZW5jZUZvcktleShjb25zdCBU
RGVzQyYgYUtleSwgVFB0ckMmIGFWYWx1ZSkNCisgICAgew0KKyAgICByZXR1cm4gaVByZWZlcmVu
Y2VzLT5QcmVmZXJlbmNlTChhS2V5LCBhVmFsdWUpOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlByZXBhcmVGb3JUcmFuc2l0aW9uDQor
Ly8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVu
c2lvbjo6UHJlcGFyZUZvclRyYW5zaXRpb24oY29uc3QgVERlc0MmIGFUcmFuc2l0aW9uKQ0KKyAg
ICB7DQorICAgIGlXaWRnZXRSZW5kZXJlci0+UHJlcGFyZUZvclRyYW5zaXRpb25MKGFUcmFuc2l0
aW9uKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0
ZW5zaW9uOjpQZXJmb3JtVHJhbnNpdGlvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlBlcmZvcm1UcmFuc2l0aW9uKCkNCisg
ICAgew0KKyAgICBpV2lkZ2V0UmVuZGVyZXItPlBlcmZvcm1UcmFuc2l0aW9uTCgpOw0KKyAgICB9
DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlNldFBy
ZWZlcmVuY2VGb3JLZXkNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
dm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXNDJiBh
S2V5LCBjb25zdCBURGVzQyYgYVZhbHVlKQ0KKyAgICB7DQorICAgIGlQcmVmZXJlbmNlcy0+U2V0
UHJlZmVyZW5jZUwoYUtleSwgYVZhbHVlKTsNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRTY3JvbGxCYXINCisvLw0KKy8vDQor
Ly8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRT
Y3JvbGxCYXIoVEJvb2wgLyphVmlzaWJsZSovKQ0KKyAgICB7DQorICAgIH0NCisNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0TmF2aWdhdGlvbkVuYWJs
ZWQNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0
RXh0ZW5zaW9uOjpTZXROYXZpZ2F0aW9uRW5hYmxlZChUQm9vbCBhRW5hYmxlKQ0KKyAgICB7DQor
ICAgIGlOYXZpZ2F0aW9uRW5hYmxlZCA9IGFFbmFibGU7DQorICAgIGlXZWJLaXRWaWV3LT5TZXRU
YWJiZWROYXZpZ2F0aW9uKCAhYUVuYWJsZSApOw0KKyAgICBpZiAoIGlXZWJLaXRWaWV3LT5DdXJz
b3IoKSApDQorICAgICAgICB7DQorICAgICAgICBpV2ViS2l0Vmlldy0+Q3Vyc29yKCktPkN1cnNv
clVwZGF0ZSggYUVuYWJsZSApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbnNNZW51SXRlbQ0KKy8v
DQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitUSW50IENXaWRnZXRFeHRlbnNp
b246OkFkZE9wdGlvbnNNZW51SXRlbShjb25zdCBURGVzQyYgYVRleHQpDQorICAgIHsNCisgICAg
VEludCBjbWRJZCA9IChUQnJDdGxEZWZzOjpFQ29tbWFuZElkQmFzZSArIFRCckN0bERlZnM6OkVD
b21tYW5kSWRTdWJzY3JpYmVUb0Jhc2UgKyBLT3B0aW9uc0NtZElkKSArIGlNZW51SXRlbXMuQ291
bnQoKTsNCisNCisgICAgaWYgKGlNZW51SXRlbXMuQ291bnQoKSA8PSBLTWF4T3B0aW9uc01lbnUg
JiYNCisgICAgICAgIGFUZXh0Lkxlbmd0aCgpID4gMCAmJiBhVGV4dC5MZW5ndGgoKSA8PSBLTWF4
T3B0aW9uc01lbnVJdGVtU2l6ZSApDQorICAgICAgICB7DQorICAgICAgICBUTWVudUl0ZW0gaXRl
bTsNCisgICAgICAgIGl0ZW0uaVRleHQgPSBhVGV4dC5BbGxvYygpOw0KKyAgICAgICAgaXRlbS5p
Q21kSWQgPSBjbWRJZDsNCisgICAgICAgIGlNZW51SXRlbXMuQXBwZW5kKGl0ZW0pOw0KKyAgICAg
ICAgfQ0KKw0KKyAgICByZXR1cm4gY21kSWQ7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6Q2xlYXJPcHRpb25zTWVudQ0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkNs
ZWFyT3B0aW9uc01lbnUoKQ0KKyAgICB7DQorDQorICAgIGZvciAoVEludCBuPTA7IG48aU1lbnVJ
dGVtcy5Db3VudCgpOyBuKyspDQorICAgICAgICB7DQorICAgICAgICBkZWxldGUgaU1lbnVJdGVt
c1tuXS5pVGV4dDsNCisgICAgICAgIH0NCisNCisgICAgaU1lbnVJdGVtcy5SZXNldCgpOw0KKyAg
ICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkFk
ZE9wdGlvbk1lbnVJdGVtc0wNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25NZW51SXRlbXNMKENFaWtNZW51UGFu
ZSYgYU1lbnVQYW5lKQ0KKyAgICB7DQorDQorICAgIGlmICggYU1lbnVQYW5lLk51bWJlck9mSXRl
bXNJblBhbmUoKSA+IDEpDQorICAgICAgICB7DQorICAgICAgICBhTWVudVBhbmUuRGVsZXRlQmV0
d2Vlbk1lbnVJdGVtcyggMCwgYU1lbnVQYW5lLk51bWJlck9mSXRlbXNJblBhbmUoKS0yICk7DQor
ICAgICAgICB9DQorDQorDQorICAgIGZvciAoVEludCBuPWlNZW51SXRlbXMuQ291bnQoKS0xOyBu
Pj0wOyBuLS0pDQorICAgICAgICB7DQorICAgICAgICBDRWlrTWVudVBhbmVJdGVtOjpTRGF0YSBt
ZW51RGF0YTsNCisgICAgICAgIG1lbnVEYXRhLmlDb21tYW5kSWQgPSBpTWVudUl0ZW1zW25dLmlD
bWRJZDsNCisgICAgICAgIG1lbnVEYXRhLmlDYXNjYWRlSWQgPSAwOw0KKyAgICAgICAgbWVudURh
dGEuaUZsYWdzID0gMDsNCisgICAgICAgIG1lbnVEYXRhLmlUZXh0ID0gKmlNZW51SXRlbXNbbl0u
aVRleHQ7DQorICAgICAgICBhTWVudVBhbmUuSW5zZXJ0TWVudUl0ZW1MKG1lbnVEYXRhLDApOw0K
KyAgICAgICAgfQ0KKw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IENXaWRnZXRFeHRlbnNpb246Ok9wdGlvbnNNZW51SXRlbVNlbGVjdGVkDQorLy8NCisvLw0KKy8v
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6T3B0aW9u
c01lbnVJdGVtU2VsZWN0ZWQoVEludCBhQ29tbWFuZCkNCisgICAgew0KKyAgICBpZiAoaVdpZGdl
dEVuZ2luZUJyaWRnZSkNCisgICAgICAgIHsNCisgICAgICAgIFRJbnQgbiA9IGFDb21tYW5kLShU
QnJDdGxEZWZzOjpFQ29tbWFuZElkQmFzZSArIFRCckN0bERlZnM6OkVDb21tYW5kSWRTdWJzY3Jp
YmVUb0Jhc2UgKyBLT3B0aW9uc0NtZElkKTsNCisgICAgICAgIGlmIChuPj0wICYmIG48aU1lbnVJ
dGVtcy5Db3VudCgpKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBIQnVmQyogaXRlbVRl
eHQgPSBpTWVudUl0ZW1zW25dLmlUZXh0Ow0KKyAgICAgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlk
Z2UtPk9wdGlvbnNNZW51SXRlbVNlbGVjdGVkKCppdGVtVGV4dCk7DQorICAgICAgICAgICAgT25T
aG93U2VsZWN0ZWQoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T25IaWRlU2VsZWN0
ZWQNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0
RXh0ZW5zaW9uOjpPbkhpZGVTZWxlY3RlZCgpDQorICAgIHsNCisgICAgaWYgKGlXaWRnZXRFbmdp
bmVCcmlkZ2UpDQorICAgICAgICB7DQorICAgICAgICBpV2lkZ2V0RW5naW5lQnJpZGdlLT5TZXRX
aWRnZXRWaXNpYmlsaXR5KEVGYWxzZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T25TaG93U2VsZWN0ZWQNCisv
Lw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5z
aW9uOjpPblNob3dTZWxlY3RlZCgpDQorICAgIHsNCisgICAgaWYoaVdpZGdldEVuZ2luZUJyaWRn
ZSkNCisgICAgICAgIHsNCisgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlNldFdpZGdldFZp
c2liaWxpdHkoRVRydWUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OmNyZWF0ZVdpZGdldE9iamVjdA0KKy8v
DQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkKiBDV2lkZ2V0RXh0ZW5z
aW9uOjpjcmVhdGVXaWRnZXRPYmplY3Qodm9pZCogZXhlYykNCisgICAgew0KKyAgICBpZiggaVdp
ZGdldEVuZ2luZUJyaWRnZSApDQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gaVdpZGdldEVu
Z2luZUJyaWRnZS0+V2lkZ2V0KGV4ZWMpOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsN
CisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lv
bjo6TG9hZFdpZGdldEVuZ2luZURsbEwNCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
Ly8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkxvYWRXaWRnZXRFbmdpbmVEbGxMKCkNCisgICAg
ew0KKw0KKyAgICBpZighaVdpZGdldEVuZ2luZUJyaWRnZSkNCisgICAgICAgIHsNCisNCisgICAg
ICAgIF9MSVQoIEtCcm93c2VyV2lkZ2V0RW5naW5lTmFtZSwgIndpZGdldGVuZ2luZS5kbGwiICk7
DQorICAgICAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoIGlMaWJyYXJ5LkxvYWQoIEtCcm93c2VyV2lk
Z2V0RW5naW5lTmFtZSApICk7DQorDQorICAgICAgICBUTGlicmFyeUZ1bmN0aW9uIGVudHJ5ID0g
aUxpYnJhcnkuTG9va3VwKDEpOw0KKw0KKyAgICAgICAgaWYgKCFlbnRyeSkNCisgICAgICAgICAg
ICBVc2VyOjpMZWF2ZShLRXJyTm90Rm91bmQpOw0KKw0KKyAgICAgICAgLy9DYWxsIHRoZSBmdW5j
dGlvbiB0byBjcmVhdGUgYSBpbnN0YW5jZSBvZiBjbGFzcw0KKyAgICAgICAgaVdpZGdldEVuZ2lu
ZUJyaWRnZSA9IChNV2lkZ2V0RW5naW5lQnJpZGdlKikgZW50cnkoKTsNCisgICAgICAgIH0NCisg
ICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
U2V0UGFyYW1MDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDV2lk
Z2V0RXh0ZW5zaW9uOjpTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQ
YXJhbSwgY29uc3QgVERlc0MmIGFWYWx1ZSkNCisgICAgew0KKyAgICBzd2l0Y2goYVBhcmFtKQ0K
KyAgICAgICAgew0KKyAgICAgICAgY2FzZSBUQnJDdGxEZWZzOjpFV2lkZ2V0QmFzZVBhdGg6DQor
ICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlXaWRnZXRCYXNlUGF0aCA9IGFWYWx1ZS5BbGxv
Y0woKTsNCisgICAgICAgICAgICBpUHJlZmVyZW5jZXMtPkxvYWRMKCk7DQorICAgICAgICAgICAg
YnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RVdpZGdl
dEJ1bmRsZUlkOg0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBpV2lkZ2V0QnVuZGxlSWQg
PSBhVmFsdWUuQWxsb2NMKCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0K
KyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAg
fQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0
UGFyYW1MDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0
RXh0ZW5zaW9uOjpTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJh
bSwgVFVpbnQgYVZhbHVlKQ0KKyAgICB7DQorICAgIHN3aXRjaChhUGFyYW0pDQorICAgICAgICB7
DQorICAgICAgICBjYXNlIFRCckN0bERlZnM6OkVXaWRnZXRJZGVudGlmaWVyOg0KKyAgICAgICAg
ICAgIHsNCisgICAgICAgICAgICBpV2lkZ2V0SWQgPSBhVmFsdWU7DQorICAgICAgICAgICAgYnJl
YWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBicmVh
azsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vRU5EIE9GIEZJTEUNCisNCisNCisNCisNCklu
ZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldFByZWZlcmVuY2VzLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UHJlZmVyZW5jZXMuY3BwCShy
ZXZpc2lvbiAwKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UHJlZmVyZW5jZXMu
Y3BwCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwyOTEgQEANCisvKg0KKyogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRlcmZhY2UuY3BwDQor
KiAgUGFydCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0SW50ZXJmYWNlDQorKiAgRGVz
Y3JpcHRpb24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisqDQorKiAgQ29weXJpZ2h0IChj
KSAyMDA0IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0ZXJpYWwsIGluY2x1ZGluZyBk
b2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1dGVyIHByb2dyYW1zLCBpcyBw
cm90ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisqICBOb2tpYSBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQorKiAgaW5jbHVkaW5nIHJlcHJv
ZHVjaW5nLCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGluZywgYW55DQorKiAgb3IgYWxs
IG9mIHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZg0K
KyogIE5va2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFsc28gY29udGFpbnMgY29uZmlk
ZW50aWFsDQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBiZSBkaXNjbG9zZWQgdG8gb3Ro
ZXJzIHdpdGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIE5va2lhIENvcnBv
cmF0aW9uLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisvLyBJTkNMVURFIEZJ
TEVTDQorI2luY2x1ZGUgPGUzMnN0ZC5oPg0KKyNpbmNsdWRlIDxTMzJGSUxFLkg+DQorI2luY2x1
ZGUgPGYzMmZpbGUuaD4NCisjaW5jbHVkZSA8dXJpMTYuaD4NCisjaW5jbHVkZSAiV2lkZ2V0UHJl
ZmVyZW5jZXMuaCINCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorDQorLy8gRVhURVJO
QUwgREFUQSBTVFJVQ1RVUkVTDQorDQorLy8gRVhURVJOQUwgRlVOQ1RJT04gUFJPVE9UWVBFUw0K
Kw0KKy8vIENPTlNUQU5UUw0KK2NvbnN0IFRJbnQgS01heEludExlbmd0aCA9IDEwOw0KK2NvbnN0
IFRJbnQgS01heEtleVZhbHVlU2l6ZSA9IDQwOTY7IC8vNCBrDQorDQorX0xJVCggS0tleUZvcm1h
dCwgIiVkLiVTIiApOw0KK19MSVQoIEtQcmVmc0ZpbGUsInByZWZzLmRhdCIgKTsNCisNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2VzOjpOZXdMDQorLy8NCisv
Lw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRQcmVmZXJlbmNlcyogQ1dp
ZGdldFByZWZlcmVuY2VzOjpOZXdMKENXaWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24p
DQorICAgIHsNCisgICAgQ1dpZGdldFByZWZlcmVuY2VzKiBzZWxmID0gTmV3TEMoYVdpZGdldEV4
dGVuc2lvbik7DQorICAgIENsZWFudXBTdGFjazo6UG9wKCBzZWxmICk7DQorICAgIHJldHVybiBz
ZWxmOw0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQ
cmVmZXJlbmNlczo6TmV3TEMNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorQ1dpZGdldFByZWZlcmVuY2VzKiBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0xDKENXaWRnZXRF
eHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24pDQorICAgIHsNCisgICAgQ1dpZGdldFByZWZlcmVu
Y2VzKiBzZWxmID0gbmV3ICggRUxlYXZlICkgQ1dpZGdldFByZWZlcmVuY2VzKGFXaWRnZXRFeHRl
bnNpb24pOw0KKyAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBzZWxmICk7DQorICAgIHNlbGYtPkNv
bnN0cnVjdEwoKTsNCisgICAgcmV0dXJuIHNlbGY7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2VzOjpDV2lkZ2V0UHJlZmVyZW5jZXMNCisv
Lw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dpZGdldFByZWZlcmVuY2Vz
OjpDV2lkZ2V0UHJlZmVyZW5jZXMoQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbikN
CisgICAgOiBpV2lkZ2V0RXh0ZW5zaW9uKCZhV2lkZ2V0RXh0ZW5zaW9uKQ0KKyAgICB7DQorICAg
IH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVuY2VzOjp+
Q1dpZGdldFByZWZlcmVuY2VzDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KK0NXaWRnZXRQcmVmZXJlbmNlczo6fkNXaWRnZXRQcmVmZXJlbmNlcygpDQorICAgIHsNCisg
ICAgaU1hcC5SZXNldEFuZERlc3Ryb3koKTsNCisgICAgaU1hcC5DbG9zZSgpOw0KKyAgICB9DQor
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6Q29uc3Ry
dWN0TA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRn
ZXRQcmVmZXJlbmNlczo6Q29uc3RydWN0TCgpDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlByZWZlcmVuY2VMDQorLy8N
CisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RJbnQgQ1dpZGdldFByZWZlcmVu
Y2VzOjpQcmVmZXJlbmNlTChjb25zdCBURGVzQyYgYUtleSwgVFB0ckMmIGFWYWx1ZSkNCisgICAg
ew0KKw0KKyAgICBUSW50IHJTdWNjZXNzID0gS0Vyck5vdEZvdW5kOw0KKw0KKyAgICBpZiAoYUtl
eS5MZW5ndGgoKSA8PSBLTWF4S2V5VmFsdWVTaXplKQ0KKyAgICAgICAgew0KKyAgICAgICAgSEJ1
ZkMqIGtleSA9IEhCdWZDOjpOZXdMQyhhS2V5Lkxlbmd0aCgpK0tNYXhJbnRMZW5ndGgrMSk7DQor
ICAgICAgICBrZXktPkRlcygpLkZvcm1hdCggS0tleUZvcm1hdCwgaVdpZGdldEV4dGVuc2lvbi0+
R2V0V2lkZ2V0SWQoKSwgJmFLZXkgKTsNCisNCisgICAgICAgIFREZXNDKiByZXMgPSBpTWFwLkZp
bmQoKmtleSk7DQorICAgICAgICBpZiAocmVzKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAg
ICBhVmFsdWUuU2V0KCpyZXMpOw0KKyAgICAgICAgICAgIHJTdWNjZXNzID0gS0Vyck5vbmU7DQor
ICAgICAgICAgICAgfQ0KKw0KKw0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3Aoa2V5KTsNCisN
CisgICAgICAgIH0NCisNCisgICAgIHJldHVybiByU3VjY2VzczsNCisgICAgfQ0KKw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VM
DQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMDQorLy8NCisv
Lw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldFByZWZlcmVuY2Vz
OjpTZXRQcmVmZXJlbmNlTChjb25zdCBURGVzQyYgYUtleSwgY29uc3QgVERlc0MmIGFWYWx1ZSkN
CisgICAgew0KKw0KKyAgICBpZiAoYUtleS5MZW5ndGgoKSA8PSBLTWF4S2V5VmFsdWVTaXplKQ0K
KyAgICAgICAgew0KKw0KKyAgICAgICAgSEJ1ZkMqIGtleSA9IEhCdWZDOjpOZXdMQyhhS2V5Lkxl
bmd0aCgpK0tNYXhJbnRMZW5ndGgrMSk7DQorICAgICAgICBrZXktPkRlcygpLkZvcm1hdCggS0tl
eUZvcm1hdCwgaVdpZGdldEV4dGVuc2lvbi0+R2V0V2lkZ2V0SWQoKSwgJmFLZXkgKTsNCisNCisg
ICAgICAgIGlmIChhVmFsdWUuTGVuZ3RoKCkgPD0gS01heEtleVZhbHVlU2l6ZSkNCisgICAgICAg
ICAgICB7DQorICAgICAgICAgICAgSEJ1ZkMqIHZhbHVlID0gYVZhbHVlLkFsbG9jTEMoKTsNCisg
ICAgICAgICAgICBpTWFwLkluc2VydEwoa2V5LHZhbHVlKTsNCisgICAgICAgICAgICBDbGVhbnVw
U3RhY2s6OlBvcCh2YWx1ZSk7DQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3Aoa2V5KTsN
CisgICAgICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgIGlNYXAuUmVtb3ZlKGtleSk7DQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmRE
ZXN0cm95KGtleSk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQor
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6U2F2ZQ0K
Ky8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRQcmVm
ZXJlbmNlczo6U2F2ZUwoKQ0KKyAgICB7DQorICAgIFJGcyBmczsNCisgICAgaWYgKCBmcy5Db25u
ZWN0KCkgPT0gS0Vyck5vbmUgKQ0KKyAgICAgICAgew0KKw0KKyAgICAgICAgQ2xlYW51cENsb3Nl
UHVzaEwoIGZzICk7DQorDQorICAgICAgICBIQnVmQyogZmlsZVBhdGggPSBmaWxlUGF0aCA9IEhC
dWZDOjpOZXdMQyhpV2lkZ2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNlUGF0aCgpLkxlbmd0aCgpICAr
IEtQcmVmc0ZpbGUoKS5MZW5ndGgoKSk7DQorDQorICAgICAgICBUUHRyIGZOYW1lKGZpbGVQYXRo
LT5EZXMoKSk7DQorICAgICAgICBmTmFtZS5BcHBlbmQoaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0
QmFzZVBhdGgoKSk7DQorICAgICAgICBmTmFtZS5BcHBlbmQoS1ByZWZzRmlsZSk7DQorDQorICAg
ICAgICBSRmlsZVdyaXRlU3RyZWFtIHdyaXRlU3RyZWFtOw0KKyAgICAgICAgVEludCBmaWxlZXJy
b3IgPSB3cml0ZVN0cmVhbS5SZXBsYWNlKCBmcywgKmZpbGVQYXRoLCBFRmlsZVdyaXRlICk7DQor
DQorICAgICAgICBpZiAoZmlsZWVycm9yICE9IEtFcnJOb25lKQ0KKyAgICAgICAgICAgIHsNCisg
ICAgICAgICAgICBmcy5DcmVhdGVQcml2YXRlUGF0aChFRHJpdmVDKTsNCisgICAgICAgICAgICBm
aWxlZXJyb3IgPSB3cml0ZVN0cmVhbS5DcmVhdGUoIGZzLCAqZmlsZVBhdGgsIEVGaWxlV3JpdGUg
fCBFRmlsZVNoYXJlRXhjbHVzaXZlICk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYg
KGZpbGVlcnJvciA9PSBLRXJyTm9uZSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgQ2xl
YW51cENsb3NlUHVzaEwod3JpdGVTdHJlYW0pOw0KKw0KKyAgICAgICAgICAgIHdyaXRlU3RyZWFt
LldyaXRlSW50MzJMKGlNYXAuQ291bnQoKSk7DQorICAgICAgICAgICAgVFB0ckhhc2hNYXBJdGVy
PFREZXNDLFREZXNDPiBpdChpTWFwKTsNCisgICAgICAgICAgICBjb25zdCBURGVzQyoga2V5Ow0K
KyAgICAgICAgICAgIGNvbnN0IFREZXNDKiB2YWx1ZTsNCisgICAgICAgICAgICB3aGlsZSAoKGtl
eSA9IGl0Lk5leHRLZXkoKSkgIT0gMCkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGl0LkN1cnJlbnRWYWx1ZSgpOw0KKyAgICAgICAgICAgICAgICB3cml0ZVN0
cmVhbS5Xcml0ZUludDMyTChrZXktPkxlbmd0aCgpKTsNCisgICAgICAgICAgICAgICAgd3JpdGVT
dHJlYW0uV3JpdGVMKCprZXkpOw0KKyAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUlu
dDMyTCh2YWx1ZS0+TGVuZ3RoKCkpOw0KKyAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0
ZUwoKnZhbHVlKTsNCisgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIHdyaXRlU3Ry
ZWFtLkNvbW1pdEwoKTsNCisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3ko
KTsgLy93cml0ZVN0cmVhbQ0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIENsZWFudXBTdGFj
azo6UG9wQW5kRGVzdHJveSgpOyAvL2ZpbGVQYXRoDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cEFuZERlc3Ryb3koKTsgLy9mcw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6TG9hZEwNCisvLw0KKy8vDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0UHJlZmVyZW5jZXM6OkxvYWRM
KCkNCisgICAgew0KKw0KKyAgICBSRnMgZnM7DQorICAgIGlmIChmcy5Db25uZWN0KCkgPT0gS0Vy
ck5vbmUpDQorICAgICAgICB7DQorICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTCggZnMgKTsNCisN
CisgICAgICAgIEhCdWZDKiBmaWxlUGF0aCA9IEhCdWZDOjpOZXdMQyhpV2lkZ2V0RXh0ZW5zaW9u
LT5XaWRnZXRCYXNlUGF0aCgpLkxlbmd0aCgpICArIEtQcmVmc0ZpbGUoKS5MZW5ndGgoKSk7DQor
DQorICAgICAgICBUUHRyIGZOYW1lKGZpbGVQYXRoLT5EZXMoKSk7DQorICAgICAgICBmTmFtZS5B
cHBlbmQoaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKSk7DQorICAgICAgICBmTmFt
ZS5BcHBlbmQoS1ByZWZzRmlsZSk7DQorDQorICAgICAgICBSRmlsZVJlYWRTdHJlYW0gcmVhZFN0
cmVhbTsNCisgICAgICAgIGlmIChyZWFkU3RyZWFtLk9wZW4oIGZzLCAqZmlsZVBhdGgsIEVGaWxl
UmVhZCApID09IEtFcnJOb25lKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBDbGVhbnVw
Q2xvc2VQdXNoTChyZWFkU3RyZWFtKTsNCisNCisgICAgICAgICAgICBUSW50IGNvdW50KCByZWFk
U3RyZWFtLlJlYWRJbnQzMkwoKSApOw0KKyAgICAgICAgICAgIGZvciggVEludCBpID0gMDsgaSA8
IGNvdW50OyBpKysgKQ0KKyAgICAgICAgICAgICAgICB7DQorDQorICAgICAgICAgICAgICAgIFRJ
bnQgbGVuID0gcmVhZFN0cmVhbS5SZWFkSW50MzJMKCk7DQorICAgICAgICAgICAgICAgIGlmIChs
ZW4+MCkNCisgICAgICAgICAgICAgICAgICAgIHsNCisNCisgICAgICAgICAgICAgICAgICAgIEhC
dWZDKiBrZXkgPSBIQnVmQzo6TmV3TEMobGVuKTsNCisgICAgICAgICAgICAgICAgICAgIFRQdHIg
cHRya2V5ID0ga2V5LT5EZXMoKTsNCisgICAgICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0uUmVh
ZEwocHRya2V5LGxlbik7DQorICAgICAgICAgICAgICAgICAgICBsZW4gPSByZWFkU3RyZWFtLlJl
YWRJbnQzMkwoKTsNCisNCisgICAgICAgICAgICAgICAgICAgIGlmIChsZW48PUtNYXhLZXlWYWx1
ZVNpemUpDQorICAgICAgICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIEhCdWZDKiB2YWx1ZSA9IEhCdWZDOjpOZXdMQyhsZW4pOw0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIFRQdHIgcHRydmFsdWUgPSB2YWx1ZS0+RGVzKCk7DQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVhZFN0cmVhbS5SZWFkTChwdHJ2YWx1ZSxsZW4pOw0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlNYXAuSW5zZXJ0TChrZXksdmFsdWUpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIENsZWFudXBTdGFjazo6UG9wKHZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBD
bGVhbnVwU3RhY2s6OlBvcChrZXkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAg
ICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KGtleSk7DQorICAg
ICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAg
ICAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKw0K
KyAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL3JlYWRTdHJlYW0N
CisgICAgICAgICAgICB9DQorDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3ko
KTsgLy9maWxlUGF0aA0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8v
ZnMNCisgICAgICAgIH0NCisNCisgICAgfQ0KKw0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9z
cmMvV2lkZ2V0UmVuZGVyZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3
L3NyYy9XaWRnZXRSZW5kZXJlci5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJW
aWV3L3NyYy9XaWRnZXRSZW5kZXJlci5jcHAJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDIyOCBA
QA0KKy8qDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdpZGdl
dEVuZ2luZVJlbmRlcmVyLmNwcA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dlYktpdFdp
ZGdldEludGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDIuMS4x
DQorKg0KKyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqICBUaGlz
IG1hdGVyaWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQNCisqICBj
b21wdXRlciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5
DQorKiAgTm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBDb3B5aW5n
LA0KKyogIGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3IgdHJhbnNs
YXRpbmcsIGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlv
ciB3cml0dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlh
bCBhbHNvIGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNoIG1heSBu
b3QgYmUgZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4g
Y29uc2VudCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
KyovDQorDQorLy8gSU5DTFVERSBGSUxFUw0KKyNpbmNsdWRlIDxlaWttZW51Yi5oPg0KKyNpbmNs
dWRlIDxnZGkuaD4NCisjaW5jbHVkZSA8Yml0ZGV2Lmg+DQorDQorI2luY2x1ZGUgIldpZGdldFJl
bmRlcmVyLmgiDQorI2luY2x1ZGUgIldlYktpdFZpZXcuaCINCisNCisvLyBFWFRFUk5BTCBEQVRB
IFNUUlVDVFVSRVMNCisNCisvLyBFWFRFUk5BTCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorLy8g
Q09OU1RBTlRTDQorY29uc3QgVEludCBNYXhUcmFuc2l0aW9uQ291bnQgPSAzMDsNCisNCisvLyBM
T0NBTCBGVU5DVElPTiBQUk9UT1RZUEVTDQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vIFRyYW5zaXRpb25DYg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CitUSW50IFRyYW5zaXRpb25DYiggVEFueSogYVB0ciApDQorICAgIHsNCisgICAgc3RhdGljX2Nh
c3Q8VFdpZGdldFJlbmRlcmVyKj4oYVB0ciktPlRyYW5zaXRpb25DYigpOw0KKyAgICByZXR1cm4g
RVRydWU7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdl
dFJlbmRlcmVyOjpUV2lkZ2V0UmVuZGVyZXINCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorVFdpZGdldFJlbmRlcmVyOjpUV2lkZ2V0UmVuZGVyZXIoQ1dlYktpdFZpZXcm
IGFXZWJLaXRWaWV3KSA6IGlXZWJLaXRWaWV3KCZhV2ViS2l0VmlldyksIGlUcmFuc2l0aW9uQml0
bWFwKDApLCBpRmFkZU1hc2soMCksIGlUcmFuc2l0aW9uVGltZXIoMCksIGlUcmFuc2l0aW9uQ291
bnQoMCkgICANCisgICAgew0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IFRXaWRnZXRSZW5kZXJlcjo6flRXaWRnZXRSZW5kZXJlcg0KKy8vDQorLy8NCisvLw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCitUV2lkZ2V0UmVuZGVyZXI6On5UV2lkZ2V0UmVuZGVyZXIoKQ0K
KyAgICB7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdldFJl
bmRlcmVyOjpQcmVwYXJlRm9yVHJhbnNpdGlvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6UHJlcGFyZUZvclRyYW5zaXRpb25M
KGNvbnN0IFREZXNDJiAvKmFUcmFuc2l0aW9uKi8pDQorICAgIHsgICANCisgICAgaVRyYW5zaXRp
b25Db3VudCA9IDA7ICAgICAgICANCisgICAgRGVzdHJveVRyYW5zaXRpb25CaXRtYXAoKTsNCisg
ICAgQ3JlYXRlVHJhbnNpdGlvbkJpdG1hcEwoKTsgICAgICAgICAgICAgICAgICAgIA0KKyAgICBE
ZXN0cm95RmFkZU1hc2soKTsNCisgICAgQ3JlYXRlRmFkZU1hc2tMKCk7DQorICAgIERyYXdGYWRl
TWFza0woKTsgICAgICAgIA0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IFRXaWRnZXRSZW5kZXJlcjo6UGVyZm9ybVRyYW5zaXRpb25MDQorLy8NCisvLw0KKy8vDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpQZXJmb3JtVHJhbnNp
dGlvbkwoKQ0KKyAgICB7DQorICAgIA0KKyAgICBkZWxldGUgaVRyYW5zaXRpb25UaW1lcjsNCisg
ICAgaVRyYW5zaXRpb25UaW1lciA9IDA7DQorICAgIFRSQVBfSUdOT1JFKGlUcmFuc2l0aW9uVGlt
ZXIgPSBDUGVyaW9kaWM6Ok5ld0woIENBY3RpdmU6OkVQcmlvcml0eUxvdyApKTsNCisgICAgaVRy
YW5zaXRpb25Db3VudCA9IDA7DQorICAgIGlUcmFuc2l0aW9uVGltZXItPlN0YXJ0KCAyMCwgMjAs
IFRDYWxsQmFjayggJjo6VHJhbnNpdGlvbkNiLCB0aGlzICkgKTsNCisgICAgfQ0KKw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OlRyYW5zaXRpb25DYg0KKy8v
DQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJl
cjo6VHJhbnNpdGlvbkNiKCkNCisgICAgew0KKyAgICANCisgICAgaVRyYW5zaXRpb25Db3VudCsr
Ow0KKyAgICANCisgICAgaWYgKGlUcmFuc2l0aW9uQ291bnQ9PU1heFRyYW5zaXRpb25Db3VudCkN
CisgICAgICAgIHsNCisgICAgICAgIERlc3Ryb3lUcmFuc2l0aW9uQml0bWFwKCk7DQorICAgICAg
ICBpVHJhbnNpdGlvblRpbWVyLT5DYW5jZWwoKTsNCisgICAgICAgIERlc3Ryb3lGYWRlTWFzaygp
Ow0KKyAgICAgICAgfQ0KKw0KKyAgICBUUkFQX0lHTk9SRShEcmF3RmFkZU1hc2tMKCkpOw0KKyAg
ICBpV2ViS2l0Vmlldy0+RHJhd0RlZmVycmVkKCk7DQorICAgIA0KKyAgICB9DQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6Q3JlYXRlVHJhbnNpdGlvbkJp
dG1hcEwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lk
Z2V0UmVuZGVyZXI6OkNyZWF0ZVRyYW5zaXRpb25CaXRtYXBMKCkNCisgICAgew0KKyAgICBpVHJh
bnNpdGlvbkJpdG1hcCA9IG5ldyAoRUxlYXZlKSBDRmJzQml0bWFwKCk7DQorICAgIFVzZXI6Okxl
YXZlSWZFcnJvcihpVHJhbnNpdGlvbkJpdG1hcC0+Q3JlYXRlKCBpV2ViS2l0Vmlldy0+T2Zmc2Ny
ZWVuQml0bWFwKCktPlNpemVJblBpeGVscygpLCAgaVdlYktpdFZpZXctPkRpc3BsYXlNb2RlKCkp
KTsNCisgICAgQ0Zic0JpdG1hcERldmljZSogZGV2ID0gQ0Zic0JpdG1hcERldmljZTo6TmV3TChp
VHJhbnNpdGlvbkJpdG1hcCk7DQorICAgIENsZWFudXBTdGFjazo6UHVzaEwoZGV2KTsNCisgICAg
Q0Zic0JpdEdjKiBnYzsNCisgICAgVXNlcjo6TGVhdmVJZkVycm9yKGRldi0+Q3JlYXRlQ29udGV4
dChnYykpOw0KKyAgICBnYy0+Qml0Qmx0KFRQb2ludCgwLDApLGlXZWJLaXRWaWV3LT5PZmZzY3Jl
ZW5CaXRtYXAoKSk7DQorICAgIGRlbGV0ZSBnYzsNCisgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmRE
ZXN0cm95KCk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdl
dFJlbmRlcmVyOjpEZXN0cm95VHJhbnNpdGlvbkJpdG1hcA0KKy8vDQorLy8NCisvLw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRXaWRnZXRSZW5kZXJlcjo6RGVzdHJveVRyYW5zaXRp
b25CaXRtYXAoKQ0KKyAgICB7DQorICAgIGRlbGV0ZSBpVHJhbnNpdGlvbkJpdG1hcDsNCisgICAg
aVRyYW5zaXRpb25CaXRtYXAgPSAwOw0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6Q3JlYXRlRmFkZU1hc2tMDQorLy8NCisvLw0KKy8vDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpDcmVhdGVGYWRl
TWFza0woKQ0KKyAgICB7DQorICAgIGlGYWRlTWFzayA9IG5ldyAoRUxlYXZlKSBDRmJzQml0bWFw
KCk7DQorICAgIGlGYWRlTWFzay0+Q3JlYXRlKGlUcmFuc2l0aW9uQml0bWFwLT5TaXplSW5QaXhl
bHMoKSxFR3JheTI1Nik7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
VFdpZGdldFJlbmRlcmVyOjpEZXN0cm95RmFkZU1hc2sNCisvLw0KKy8vDQorLy8NCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OkRlc3Ryb3lGYWRlTWFzaygp
DQorICAgIHsNCisgICAgZGVsZXRlIGlGYWRlTWFzazsNCisgICAgaUZhZGVNYXNrID0gMDsNCisg
ICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6
OkRyYXdGYWRlTWFza0wNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor
dm9pZCBUV2lkZ2V0UmVuZGVyZXI6OkRyYXdGYWRlTWFza0woKQ0KKyAgICB7DQorICAgIGlmIChp
RmFkZU1hc2spDQorICAgICAgICB7ICAgICAgICANCisgICAgICAgIENGYnNCaXRtYXBEZXZpY2Uq
IGRldiA9IENGYnNCaXRtYXBEZXZpY2U6Ok5ld0woaUZhZGVNYXNrKTsNCisgICAgICAgIENsZWFu
dXBTdGFjazo6UHVzaEwoZGV2KTsNCisgICAgICAgIENGYnNCaXRHYyogZ2M7DQorICAgICAgICBV
c2VyOjpMZWF2ZUlmRXJyb3IoZGV2LT5DcmVhdGVDb250ZXh0KGdjKSk7DQorICAgICAgICBpRmFk
ZU1hc2stPkxvY2tIZWFwKCk7DQorICAgICAgICBUU2l6ZSBzID0gaUZhZGVNYXNrLT5TaXplSW5Q
aXhlbHMoKTsNCisgICAgICAgIFRVaW50OCogZGF0YSA9IChUVWludDgqKWlGYWRlTWFzay0+RGF0
YUFkZHJlc3MoKTsNCisgICAgICAgIFRVaW50OCogZW5kID0gZGF0YSArIHMuaVdpZHRoKnMuaUhl
aWdodDsNCisgICAgICAgIHdoaWxlICggZGF0YTxlbmQgKQ0KKyAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICAqKGRhdGErKykgPSAoMjU1KmlUcmFuc2l0aW9uQ291bnQvTWF4VHJhbnNpdGlvbkNv
dW50KTsNCisgICAgICAgICAgICB9DQorICAgICAgICBpRmFkZU1hc2stPlVubG9ja0hlYXAoKTsN
CisgICAgICAgIGRlbGV0ZSBnYzsNCisgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJv
eSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vIFRXaWRnZXRSZW5kZXJlcjo6RHJhd1RyYW5zaXRpb24NCisvLw0KKy8vDQorLy8NCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OkRyYXdUcmFuc2l0aW9u
KENXaW5kb3dHYyYgZ2MsIENGYnNCaXRtYXAqIGFDdXJyZW50Qml0bWFwKQ0KKyAgICB7DQorDQor
ICAgIGlmICghaVRyYW5zaXRpb25CaXRtYXAgfHwgIWFDdXJyZW50Qml0bWFwIHx8ICFpRmFkZU1h
c2spDQorICAgICAgICByZXR1cm47DQorICAgIA0KKyAgICBUU2l6ZSBzID0gaVRyYW5zaXRpb25C
aXRtYXAtPlNpemVJblBpeGVscygpOw0KKyAgICBnYy5CaXRCbHQoVFBvaW50KDAsMCksaVRyYW5z
aXRpb25CaXRtYXApOw0KKyAgICBnYy5CaXRCbHRNYXNrZWQoVFBvaW50KDAsMCksYUN1cnJlbnRC
aXRtYXAsIFRSZWN0KHMpLCBpRmFkZU1hc2ssIEVGYWxzZSk7DQorDQorICAgIH0NCisNCkluZGV4
OiBXZWJLaXQvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMTcyOTIpDQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEs
MyArMSw2NCBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2YWxsICA8c3JpcmFtLnlhZGF2YWxsaUBub2tp
YS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBTYWNoaW4gUGFkbWEgKHNhY2hpbi5wYWRt
YUBub2tpYS5jb20pLg0KKyAgICAgICAgREVTQzogU2NyaXB0YWJsZSBwbHVnaW4gJiB3aWRnZXQg
b2JqZWN0IGltcGxlbWVudGF0aW9uDQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTQwNw0KKw0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9pbmMvQnJD
dGwuaDoNCisgICAgICAgICogQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oOg0KKyAgICAg
ICAgKFRCckN0bERlZnM6Oik6DQorICAgICAgICAqIEJyb3dzZXJDb250cm9sL2luYy9CckN0bElu
dGVyZmFjZS5oOg0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwOg0KKyAg
ICAgICAgKENCckN0bDo6fkNCckN0bCk6DQorICAgICAgICAoQ0JyQ3RsOjpIYW5kbGVDb21tYW5k
TCk6DQorICAgICAgICAoQ0JyQ3RsOjpBZGRPcHRpb25NZW51SXRlbXNMKToNCisgICAgICAgIChD
QnJDdGw6OlVwZGF0ZURlZmF1bHRTb2Z0a2V5c0wpOg0KKyAgICAgICAgKENCckN0bDo6Q3JlYXRl
V2lkZ2V0RXh0ZW5zaW9uTCk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L2luYy9XZWJLaXRDb250
cm9sLmg6DQorICAgICAgICAoQ1dlYktpdENvbnRyb2w6OldpZGdldEV4dGVuc2lvbik6DQorICAg
ICAgICAqIEJyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2UuaDoNCisgICAgICAgICogQnJvd3Nl
clZpZXcvc3JjL0tleUV2ZW50SGFuZGxlci5jcHA6DQorICAgICAgICAoQ0tleUV2ZW50SGFuZGxl
cjo6SGFuZGxlQWN0aXZhdGVLZXlzTCk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9XZWJL
aXRDb250cm9sLmNwcDoNCisgICAgICAgIChDV2ViS2l0Q29udHJvbDo6fkNXZWJLaXRDb250cm9s
KToNCisgICAgICAgIChDV2ViS2l0Q29udHJvbDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTCk6DQor
ICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNwcDoNCisgICAgICAgIChDV2Vi
S2l0Vmlldzo6TWFrZVZpc2libGUpOg0KKyAgICAgICAgKENXZWJLaXRWaWV3OjpEcmF3KToNCisg
ICAgICAgICogQnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHA6DQorICAgICAgICAoQ1dl
YktpdEJyaWRnZTo6TGF5b3V0Q2hhbmdlZCk6DQorICAgICAgICAoQ1dlYktpdEJyaWRnZTo6Y3Jl
YXRlV2lkZ2V0T2JqZWN0KToNCisgICAgICAgICogUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmg6
DQorICAgICAgICAqIFBsdWdpbi9pbmMvUGx1Z2luU2tpbi5oOg0KKyAgICAgICAgKENQbHVnaW5T
a2luOjpXZWJLaXRDb250cm9sKToNCisgICAgICAgIChDUGx1Z2luU2tpbjo6RnJhbWUpOg0KKyAg
ICAgICAgKiBQbHVnaW4vaW5jL1BsdWdpbldpbi5oOg0KKyAgICAgICAgKiBQbHVnaW4vaW5jL25w
YXBpLmg6DQorICAgICAgICAqIFBsdWdpbi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwOg0KKyAg
ICAgICAgKE5wbkdldFZhbHVlKToNCisgICAgICAgICogUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVy
LmNwcDoNCisgICAgICAgIChDUGx1Z2luSW5mbzo6UGFyc2VEZWZhdWx0RGF0YUwpOg0KKyAgICAg
ICAgKENQbHVnaW5IYW5kbGVyOjpMb2FkUGx1Z2luc1N5bmNMKToNCisgICAgICAgIChDUGx1Z2lu
SGFuZGxlcjo6TG9hZFBsdWdpbnNMKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6UmVsb2Fk
UGx1Z2lucyk6DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbk5hbWUpOg0KKyAg
ICAgICAgKENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5GaWxlTmFtZSk6DQorICAgICAgICAoQ1Bs
dWdpbkhhbmRsZXI6OkdldFBsdWdpbkRlc2NyaXB0aW9uKToNCisgICAgICAgIChDUGx1Z2luSGFu
ZGxlcjo6R2V0UGx1Z2luQ291bnQpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpSZWxvYWRQ
bHVnaW5zTCk6DQorICAgICAgICAqIFBsdWdpbi9zcmMvUGx1Z2luU2tpbi5jcHA6DQorICAgICAg
ICAoQ1BsdWdpblNraW46OkNvbnN0cnVjdEwpOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpDcmVh
dGVQbHVnaW5XaW5MKToNCisgICAgICAgIChDUGx1Z2luU2tpbjo6U2VsZWN0Vmlld2VyQW5kRG93
bmxvYWRMKToNCisgICAgICAgIChDUGx1Z2luU2tpbjo6UGx1Z2luU2NyaXB0YWJsZU9iamVjdCk6
DQorICAgICAgICAqIFBsdWdpbi9zcmMvUGx1Z2luV2luLmNwcDoNCisgICAgICAgIChDUGx1Z2lu
V2luOjpXaW5kb3dTY3JpcHROUE9iamVjdCk6DQorICAgICAgICAoQ1BsdWdpbldpbjo6UGx1Z2lu
U2NyaXB0YWJsZU9iamVjdCk6DQorICAgICAgICAqIGdyb3VwL0Jyb3dzZXJWaWV3Lm1tcDoNCisg
ICAgICAgICogZ3JvdXAvUGx1Z2luLm1tcDoNCisgICAgICAgICogZ3JvdXAvd2Via2l0Lm1tcDoN
CisgICAgICAgICogcm9tL3dlYmtpdC5pYnk6DQorDQogMjAwNi0xMC0yMyAgbmFndW8gIDxnZW9y
Z2UuZ3VvQG5va2lhLmNvbT4NCiANCiAgICAgICAgIFJldmlld2VkIGJ5IFNhY2hpbi4NCkluZGV4
OiBXZWJLaXQvZ3JvdXAvQnJvd3NlclZpZXcubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2dy
b3VwL0Jyb3dzZXJWaWV3Lm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L2dyb3VwL0Jy
b3dzZXJWaWV3Lm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTc3LDYgKzc3LDEyIEBADQogU09VUkNF
ICAgICAgICAgIFNtYXJ0TGlua0hhbmRsZXIuY3BwDQogU09VUkNFICAgICAgICAgIFNtYXJ0TGlu
a01hcC5jcHANCiAjZW5kaWYNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK1NPVVJDRSAg
ICAgICAgICBXaWRnZXRFeHRlbnNpb24uY3BwDQorU09VUkNFICAgICAgICAgIFdpZGdldFByZWZl
cmVuY2VzLmNwcA0KK1NPVVJDRSAgICAgICAgICBXaWRnZXRSZW5kZXJlci5jcHANCitTWVNURU1J
TkNMVURFICAgICAgICAuLlwuLlwuLlxXaWRnZXRFbmdpbmVcaW5jDQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQogVVNFUklOQ0xVREUgICAgIC4uXFJlc291cmNlTG9hZGVyXEluYw0KIFVT
RVJJTkNMVURFICAgICAuLlxSZXNvdXJjZUxvYWRlclxjYWNoZUluYw0KIFVTRVJJTkNMVURFICAg
ICAuLlxCcm93c2VyVmlld1xJbmMNCkluZGV4OiBXZWJLaXQvZ3JvdXAvUGx1Z2luLm1tcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC9QbHVnaW4ubW1wCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJLaXQvZ3JvdXAvUGx1Z2luLm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDYgKzYwLDkg
QEANCiBVU0VSSU5DTFVERSAgICAgLi5cUmVzb3VyY2VMb2FkZXJcSW5jDQogI2lmbmRlZiBfX0JS
T1dTRVJfU0RLDQogVVNFUklOQ0xVREUgICAgIC4uXC4uXC4uXFBhZ2VTY2FsZXJcSW5jDQorI2lm
ZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitVU0VSSU5DTFVERSAgICAgXFM2MFxtd1x3ZWJcV2Vi
RW5naW5lXFdpZGdldEVuZ2luZVxJbmMNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAj
ZW5kaWYNCiBVU0VSSU5DTFVERSAgICAgLi5cLi5cV0VCQ09SRVxicmlkZ2UNCiANCkluZGV4OiBX
ZWJLaXQvZ3JvdXAvd2Via2l0Lm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC93ZWJr
aXQubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvZ3JvdXAvd2Via2l0Lm1tcAkod29y
a2luZyBjb3B5KQ0KQEAgLTExNSw2ICsxMTUsOSBAQA0KIFNZU1RFTUlOQ0xVREUgXEVwb2MzMlxp
bmNsdWRlIFxFcG9jMzJcaW5jbHVkZVxvZW0NCiAjZW5kaWYNCiANCisjaWZkZWYgIFJEX0JST1dT
RVJfV0lER0VUUw0KK1VTRVJJTkNMVURFICAgLi5cLi5cLi5cV2lkZ2V0RW5naW5lXGluYw0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIC8vLS0NCiANCiBTWVNURU1JTkNMVURFIFxFcG9j
MzJcaW5jbHVkZVxodHRwDQpJbmRleDogV2ViS2l0L1BsdWdpbi9pbmMvbnBhcGkuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xNCw3ICsxNCw3
IEBADQogICoNCiAgKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBtb3ppbGxhLm9yZyBjb2RlLg0KICAq
DQotICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzIA0KKyAq
IFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcw0KICAqIE5ldHNj
YXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLg0KICAqIFBvcnRpb25zIGNyZWF0ZWQgYnkg
dGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgNCiAgKiB0aGUgSW5p
dGlhbCBEZXZlbG9wZXIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQpAQCAtNzMsMTIgKzczLDEyIEBA
DQogI2VuZGlmDQogI2VuZGlmDQogDQotLyogDQotICogTk9fTlNQUl8xMF9TVVBQT1JUIGRpc2Fi
bGVzIHRoZSBpbmNsdXNpb24gDQotICogb2Ygb2Jzb2xldGUvcHJvdHlwZXMuaCwgd2hvc2UgaW50
MTYsIHVpbnQxNiwgDQotICogaW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0
aCB0aG9zZSANCi0gKiBpbiB0aGlzIGZpbGUuIA0KLSAqLyANCisvKg0KKyAqIE5PX05TUFJfMTBf
U1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVzaW9uDQorICogb2Ygb2Jzb2xldGUvcHJvdHlwZXMu
aCwgd2hvc2UgaW50MTYsIHVpbnQxNiwNCisgKiBpbnQzMiwgYW5kIHVpbnQzMiB0eXBlZGVmcyBj
b25mbGljdCB3aXRoIHRob3NlDQorICogaW4gdGhpcyBmaWxlLg0KKyAqLw0KICNpZm5kZWYgTk9f
TlNQUl8xMF9TVVBQT1JUDQogI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQNCiAjZW5kaWYNCkBA
IC0xMjAsNyArMTIwLDcgQEANCiAgICNpbmNsdWRlIDxFdmVudHMuaD4NCiAjZW5kaWYNCiANCi0j
aWYgZGVmaW5lZChYUF9VTklYKSANCisjaWYgZGVmaW5lZChYUF9VTklYKQ0KICMgaW5jbHVkZSA8
c3RkaW8uaD4NCiAjIGlmIGRlZmluZWQoTU9aX1gxMSkNCiAjICAgaW5jbHVkZSA8WDExL1hsaWIu
aD4NCkBAIC0yOTgsMTEgKzI5OCwxMSBAQA0KICAgdWludDE2IHJpZ2h0Ow0KIH0gTlBSZWN0Ow0K
IA0KLXR5cGVkZWYgc3RydWN0IF9OUFNpemUgDQoteyANCi0gIGludDMyIHdpZHRoOyANCi0gIGlu
dDMyIGhlaWdodDsgDQotfSBOUFNpemU7IA0KK3R5cGVkZWYgc3RydWN0IF9OUFNpemUNCit7DQor
ICBpbnQzMiB3aWR0aDsNCisgIGludDMyIGhlaWdodDsNCit9IE5QU2l6ZTsNCiANCiAjaWZkZWYg
WFBfVU5JWA0KIC8qDQpAQCAtMzQ1LDIxICszNDUsMjEgQEANCiANCiANCiAvKg0KLSAqICAgVGhl
IGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0byBOUE5W
IGFuZCANCi0gKiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8g
Q09NIGludGVyZmFjZXMuIE5ld2VyIA0KLSAqICAgY29tcGlsZXJzIG9uIHNvbWUgcGxhdGZvcm1z
IG1heSBnZW5lcmF0ZSB2dGFibGVzIHRoYXQgYXJlIG5vdCANCi0gKiAgIGNvbXBhdGlibGUgd2l0
aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBmcm9tIA0KLSAqICAg
bm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2UgbWFza3MgY2hhbmdl
IHRoZSANCisgKiAgIFRoZSBmb2xsb3dpbmcgbWFza3MgYXJlIGFwcGxpZWQgb24gY2VydGFpbiBw
bGF0Zm9ybXMgdG8gTlBOViBhbmQNCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91
bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyDQorICogICBjb21waWxlcnMgb24g
c29tZSBwbGF0Zm9ybXMgbWF5IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90DQorICogICBj
b21wYXRpYmxlIHdpdGggb2xkZXIgY29tcGlsZXJzLiBUbyBwcmV2ZW50IG9sZGVyIHBsdWdpbnMg
ZnJvbQ0KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2Ug
bWFza3MgY2hhbmdlIHRoZQ0KICAqICAgdmFsdWVzIG9mIHRob3NlIHNlbGVjdG9ycyBvbiB0aG9z
ZSBwbGF0Zm9ybXMuIFRvIHJlbWFpbiBiYWNrd2FyZHMNCi0gKiAgIGNvbXBhdGlibGUgd2l0aCBk
aWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNhbiANCisgKiAgIGNv
bXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5z
IGNhbg0KICAqICAgdXNlIHRoZXNlIG1hc2tzIHRvIGR5bmFtaWNhbGx5IGRldGVybWluZSBhbmQg
dXNlIHRoZSBjb3JyZWN0IEMrKw0KLSAqICAgQUJJIHRoYXQgdGhlIGJyb3dzZXIgaXMgZXhwZWN0
aW5nLiBUaGlzIGRvZXMgbm90IGFwcGx5IHRvIFdpbmRvd3MgDQorICogICBBQkkgdGhhdCB0aGUg
YnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cw0KICAq
ICAgYXMgTWljcm9zb2Z0J3MgQ09NIEFCSSB3aWxsIGxpa2VseSBub3QgY2hhbmdlLg0KICAqLw0K
IA0KICNkZWZpbmUgTlBfQUJJX0dDQzNfTUFTSyAgMHgxMDAwMDAwMA0KIC8qDQotICogICBnY2Mg
My54IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdp
dGggDQorICogICBnY2MgMy54IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUg
aW5jb21wYXRpYmxlIHdpdGgNCiAgKiAgIHByZXZpb3VzIGNvbXBpbGVycy4NCiAgKi8NCiAjaWYg
KGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSAz
KSkNCkBAIC0zNzUsNyArMzc1LDcgQEANCiAgKiAgIGRpZmZlcmVudCB0aGFuIENGTS4gSW4gYWRk
aXRpb24gdG8gaGF2aW5nIGEgZGlmZmVyZW50DQogICogICBDKysgQUJJLCBpdCBhbHNvIGhhcyBo
YXMgZGlmZmVyZW50IEMgY2FsbGluZyBjb252ZW50aW9uLg0KICAqICAgWW91IG11c3QgdXNlIGds
dWUgY29kZSB3aGVuIGNhbGxpbmcgYmV0d2VlbiBDRk0gYW5kDQotICogICBNYWNoLU8gQyBmdW5j
dGlvbnMuIA0KKyAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLg0KICAqLw0KICNpZiAoZGVmaW5lZChU
QVJHRVRfUlRfTUFDX01BQ0hPKSkNCiAjZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX01BQ0hPIE5Q
X0FCSV9NQUNIT19NQVNLDQpAQCAtNDA0LDExICs0MDQsMTQgQEANCiAgIC8qIDEyIGFuZCBvdmVy
IGFyZSBhdmFpbGFibGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuOSAqLw0K
ICAgTlBQVmphdmFzY3JpcHRQdXNoQ2FsbGVyQm9vbCA9IDEyLA0KICAgTlBQVnBsdWdpbktlZXBM
aWJyYXJ5SW5NZW1vcnkgPSAxMywgICAvKiBhdmFpbGFibGUgaW4gTW96aWxsYSAxLjAgKi8NCi0g
IC8qIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lmaWMgdG8gTm9raWEsIHNvIHZhbHVlIGlzIA0KLSAg
ICogc3RhcnRlZCBmcm9tIDEwMC4gVGhlIG51bWJlcnMgMTMgdG8gMTAwMCBhcmUgbGVmdA0KKyNp
ZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMNCisgIE5QUFZwbHVnaW5OZWVkc1hFbWJlZCAgICAgICAg
ID0gMTQsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisgICAvKiBzdGFydGVkIGZy
b20gMTAwLiBUaGUgbnVtYmVycyAxMyB0byAxMDAwIGFyZSBsZWZ0DQogICAgKiBmb3Igc3RhbmRh
cml6YXRpb24gYW5kIG90aGVyIGZ1dHVyZSB1c2UuIFZhbHVlIHJldHVybiBpcyB6ZXJvIGZvcg0K
ICAgICogaW5ldGVyYWN0aXZlIGFuZCAnb25lJyBmb3Igbm9uLWludGVyYWN0aXZlLg0KICAgICov
DQorICBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0ICA9IDE1LA0KKyNlbmRpZg0KICAgTlBQ
VnBsdWdpbkludGVyYWN0aXZlQm9vbCA9IDEwMDANCiB9IE5QUFZhcmlhYmxlOw0KIA0KQEAgLTQy
Nyw2ICs0MzAsMTYgQEANCiAgIE5QTlZzZXJ2aWNlTWFuYWdlciA9ICgxMCB8IE5QX0FCSV9NQVNL
KSwNCiAgIE5QTlZET01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgICAvKiBhdmFp
bGFibGUgaW4gTW96aWxsYSAxLjIgKi8NCiAgIE5QTlZET01XaW5kb3cgICAgICA9ICgxMiB8IE5Q
X0FCSV9NQVNLKQ0KKyNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMNCisgICxOUE5WVG9vbGtpdCAg
ICAgICAgPSAoMTMgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovDQorICBOUE5WU3VwcG9ydHNYRW1iZWRCb29sID0gMTQsICAgICAgICAgICAgICAvKiBOb3Qg
aW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQorDQorICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBw
ZXIgZm9yIHRoZSBicm93c2VyIHdpbmRvdy4gKi8NCisgIE5QTlZXaW5kb3dOUE9iamVjdCA9IDE1
LA0KKw0KKyAgICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERP
TSBlbGVtZW50LiAqLw0KKyAgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdCAgICAgICAgICAgICAg
ICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0KKyNlbmRpZg0KIH0gTlBOVmFyaWFi
bGU7DQogDQogLyoNCkluZGV4OiBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5IYW5kbGVyLmgJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbkhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTEzNyw2ICsxMzcsMTYgQEANCiAgICAgICAgICovDQogICAgICAgICBUVWludCBH
ZXRJbmRleEZyb21IYW5kbGUoVEludCBhSGFuZGxlKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEdldCB0aGUgaW5kZXggb2YgcGx1Z2lu
IGluZm8gZnJvbSBpdHMgaGFuZGxlLg0KKyAgICAgICAgKg0KKyAgICAgICAgKiBAc2luY2UgMy4x
DQorICAgICAgICAqIEBwYXJhbSBhSGFuZGxlIFRoZSBoYW5kbGUgb2YgdGhlIHBsdWdpbiwgcmV0
dXJuZWQgZnJvbSBGaW5kUGx1Z2luLg0KKyAgICAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0
aGUgcGx1Z2luIGluZm8uDQorICAgICAgICAqLw0KKyAgICAgICAgVEJvb2wgTG9hZFBsdWdpbnNT
eW5jTCgpOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICBwdWJsaWM6IC8vRnJv
bSBNV2ViQ29yZVBsdWdpbkhhbmRsZXINCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBTY2FucyBm
b3IgbmV3IHBsdWdpbnMuDQpJbmRleDogV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luU2tpbi5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luU2tpbi5oCShyZXZpc2lvbiAx
NzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5Ta2luLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0xNjgsNyArMTY4LDE0IEBADQogICAgICAgICAqIEBzaW5jZSAzLjENCiAgICAgICAgICog
QHJldHVybiBUaGUgV2ViS2l0Q29udHJvbCBvYmplY3QNCiAgICAgICAgICovDQotICAgICAgICBD
V2ViS2l0Q29udHJvbCogV2ViS2l0Q29udHJvbCgpIHsgcmV0dXJuICZpV2ViS2l0RnJhbWUtPldl
YktpdFZpZXcoKS5XZWJLaXRDb250cm9sKCk7IH0NCisgICAgICAgIENXZWJLaXRDb250cm9sKiBX
ZWJLaXRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gJmlXZWJLaXRGcmFtZS0+V2ViS2l0Vmlldygp
LldlYktpdENvbnRyb2woKTsgfQ0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEZyYW1lDQorICAg
ICAgICAqIFJldHVybnMgYSBwb2ludGVyIHRvIFdlYktpdEZyYW1lIG9iamVjdC4NCisgICAgICAg
ICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuIFRoZSBXZWJLaXRDb250cm9sIG9iamVj
dA0KKyAgICAgICAgKi8NCisgICAgICAgIENXZWJLaXRGcmFtZSogRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBpV2ViS2l0RnJhbWU7IH0gDQogDQogICAgICAgICAvKioNCiAgICAgICAgICogSGFzUmVz
aXplZA0KQEAgLTM2Miw2ICszNjksMTUgQEANCiAgICAgICAgIFRCb29sIENhbkludGVyYWN0KCkg
Y29uc3QgICAgICAgICAgIHsgcmV0dXJuIGlDYW5QbHVnaW5JbnRlcmFjdDsgfQ0KICNlbmRpZg0K
IA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICog
R2V0IHRoZSBzY3JpcHRpbmcgb2JqZWN0IGZyb20gcGx1Z2luDQorICAgICAgICAqIFNldHMgdGhl
IGZvbnQNCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAg
ICAqLw0KKyAgICAgICAgdm9pZCAqUGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpOyANCisjZW5kaWYN
CiAgIHB1YmxpYzogLy8gRnVuY3Rpb25zIGZyb20gTVZpZXdGb2N1c09ic2VydmVyDQogDQogICAg
ICAgICAvKioNCkluZGV4OiBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5XaW4uaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbldpbi5oCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJLaXQvUGx1Z2luL2luYy9QbHVnaW5XaW4uaAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYg
KzU3LDkgQEANCiBjbGFzcyBDV2ViS2l0Q29udHJvbDsNCiBjbGFzcyBDUGx1Z2luU2tpbjsNCiBj
bGFzcyBDUGx1Z2luSGFuZGxlcjsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK2NsYXNz
IE5QT2JqZWN0Ow0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0KIC8vIExPQ0FMIENP
TlNUQU5UUyBBTkQgTUFDUk9TDQogLy8gVGhlc2UgYXJlIHVzZWQgdG8gZGVzaWduYXRlIHRoZSBo
YW5kbGluZyBvZiBpbmNvbWluZyBjb250ZW50IGFuZCBsb2FkaW5nIFBsdWdpbnMNCkBAIC00NjYs
NiArNDY5LDIxIEBADQogICAgICAgICAqLw0KICAgICB2b2lkIEhhbmRsZUxvc2luZ0ZvcmVncm91
bmQoKTsNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoqDQorICAg
ICAgICAqIFJldHVybiB3aW5kb3cgb2JqZWN0IHVzYWJsZSBmcm9tIHNjcmlwdGFibGUgcGx1Z2lu
cyANCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAg
ICAgICovICAgICAgICANCisgICAgICAgIE5QT2JqZWN0KiBXaW5kb3dTY3JpcHROUE9iamVjdCgp
OyANCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBHZXQgdGhlIHNjcmlwdGluZyBvYmplY3QgZnJv
bSBwbHVnaW4NCisgICAgICAgICogU2V0cyB0aGUgZm9udA0KKyAgICAgICAgKiBAc2luY2UgMy4x
DQorICAgICAgICAqIEByZXR1cm4NCisgICAgICAgICovDQorICAgICAgICB2b2lkICpQbHVnaW5T
Y3JpcHRhYmxlT2JqZWN0KCk7ICAgICAgICAgDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRT
DQogDQogICAgIHByb3RlY3RlZDogLy8gTmV3IGZ1bmN0aW9ucw0KIA0KSW5kZXg6IFdlYktpdC9Q
bHVnaW4vc3JjL05wbkltcGxlbWVudGF0aW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Q
bHVnaW4vc3JjL05wbkltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2Vi
S2l0L1BsdWdpbi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDI1LDcgKzQyNSwyMCBAQA0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgIH0NCiAgICAg
ICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VU
Uw0KKyAgICAgICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6DQorICAgICAgICAgICAgew0KKyAg
ICAgICAgICAgIENQbHVnaW5XaW4qIHBsdWdpbldpbiA9IChDUGx1Z2luV2luKilhSW5zdGFuY2Ut
Pm5kYXRhOw0KKyAgICAgICAgICAgIE5QT2JqZWN0KiB3aW5kb3dPYmplY3QgPSBwbHVnaW5XaW4t
PldpbmRvd1NjcmlwdE5QT2JqZWN0KCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvd09iamVjdCkN
CisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2b2lkICoqdiA9ICh2b2lkICoq
KWFSZXRWYWx1ZTsNCisgICAgICAgICAgICAgICAgKnYgPSB3aW5kb3dPYmplY3Q7DQorICAgICAg
ICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsNCisgICAgICAgICAgICAgICAgfQ0KKyAg
ICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOw0KKyAgICAgICAgICAgIH0NCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgICAgIGNhc2UgTlBOVkRPTVdpbmRvdzoN
CiAgICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiAgICAgICAgICAvLyBVbml4IG9ubHk6IFJldHVy
bnMgdGhlIGN1cnJlbnQgRGlzcGxheQ0KICAgICAgICAgY2FzZSBOUE5WeHRBcHBDb250ZXh0OiAg
ICAgIC8vIFVuaXggb25seTogUmV0dXJucyB0aGUgYXBwbGljYXRpb24ncyBYdEFwcENvbnRleHQN
CkluZGV4OiBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbkhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNzA2OSkN
CisrKyBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5IYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTEwLDkgKzEwLDkgQEANCiAqICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9y
YXRpb24NCiAqICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKiAgDQotKiAgCVJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0K
LSogIAltb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMNCi0qICAJYXJlIG1ldDoNCisqICAgICAgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorKiAgICAg
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucw0KKyogICAgICBhcmUgbWV0Og0KICogIA0KICogICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAg
ICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLg0KQEAgLTI0LDE4ICsyNCwxOCBAQA0KICogICAgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KICogICAg
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4NCiAqICANCi0qICAJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KLSogIAkiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KLSogIAlMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1INCi0qICAJQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCi0qICAJT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQotKiAgCVNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QNCi0qICAJTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsDQotKiAgCURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KLSogIAlUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
DQotKiAgCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFDQotKiAgCVVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCi0qICAJREFNQUdFLg0KKyogICAgICBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTDQorKiAgICAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgICAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyogICAgICBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVA0KKyogICAgICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisqICAgICAgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyogICAg
ICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwNCisqICAgICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorKiAgICAgIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQN
CisqICAgICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUNCisqICAgICAgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KKyogICAgICBEQU1BR0UuDQogKiAg
DQogKiAgICBQbGVhc2Ugc2VlIGZpbGUgcGF0ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3Jh
bnRzLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzI1LDggKzMyNSw4IEBADQogICAg
ICAgICAgICAgaWYgKGkgPiBtYXJrZXIpDQogICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgVFB0ckM4IG1pbWVGaWxlRXh0OChhTUlNRURlc2NyaXB0aW9uLk1pZChtYXJrZXIsaS1t
YXJrZXIpKTsNCi0JICAgICAgICAgICAgbmV3TWltZUZpbGVFeHRFbnRyeSA9IEhCdWZDOjpOZXdM
QyhpLW1hcmtlcik7DQotCSAgICAgICAgICAgIG5ld01pbWVGaWxlRXh0RW50cnktPkRlcygpLkNv
cHkobWltZUZpbGVFeHQ4KTsNCisgICAgICAgICAgICAgICAgbmV3TWltZUZpbGVFeHRFbnRyeSA9
IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQorICAgICAgICAgICAgICAgIG5ld01pbWVGaWxlRXh0
RW50cnktPkRlcygpLkNvcHkobWltZUZpbGVFeHQ4KTsNCiAgICAgICAgICAgICAgICAgVXNlcjo6
TGVhdmVJZkVycm9yKGlNaW1lRmlsZUV4dGVuc2lvbnMuQXBwZW5kKG5ld01pbWVGaWxlRXh0RW50
cnkpKTsNCiAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsgLy9wb3AgbmV3TWlt
ZUZpbGVFeHRFbnRyeQ0KIA0KQEAgLTM2Niw4ICszNjYsOCBAQA0KICAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBtaW1lRGVzY3JpcHRpb24g
ZW50cnkNCiAgICAgICAgICAgICAgICAgICAgIFRQdHJDOCBtaW1lRGVzYzgoYU1JTUVEZXNjcmlw
dGlvbi5NaWQobWFya2VyLGktbWFya2VyKSk7DQotCQkgICAgICAgICAgICBuZXdNaW1lRGVzY3Jp
cHRpb25FbnRyeSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQotCQkgICAgICAgICAgICBuZXdN
aW1lRGVzY3JpcHRpb25FbnRyeS0+RGVzKCkuQ29weShtaW1lRGVzYzgpOw0KKyAgICAgICAgICAg
ICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnkgPSBIQnVmQzo6TmV3TEMoaS1tYXJrZXIp
Ow0KKyAgICAgICAgICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnktPkRlcygpLkNv
cHkobWltZURlc2M4KTsNCiANCiAgICAgICAgICAgICAgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJv
cihpTWltZURlc2NyaXB0aW9ucy5BcHBlbmQobmV3TWltZURlc2NyaXB0aW9uRW50cnkpKTsNCiAg
ICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCk7ICAvL3BvcCBuZXdNaW1lRGVz
Y3JpcHRpb25FbnRyeQ0KQEAgLTUyMSw3ICs1MjEsMjggQEANCiAgICAgcmV0dXJuIGRvbmVJbml0
Ow0KICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vIENQbHVnaW5IYW5kbGVyOjpJbml0aWFsaXplDQorLy8NCisvLyBJbml0
aWFsaXplcyB0aGUgUGx1Z2luSGFuZGxlciwgcG9zc2libHkgYXN5bmNocm9ub3VzbHkNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorVEJvb2wgQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVn
aW5zU3luY0woKQ0KKyAgICB7DQorICAgIGlmKCBpUGx1Z2luSW5mb0FycmF5LkNvdW50KCkgIT0g
MCApDQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gRVRydWU7DQorICAgICAgICB9DQorDQor
ICAgIC8vQ2FuY2VsIHRoZSBlYXJsaWVyIHJlcXVlc3QgYW5kIGxvYWQgcGx1Z2lucyBub3cNCisg
ICAgaWYoIGlJZGxlICkNCisgICAgICAgIHsNCisgICAgICAgIGlJZGxlLT5DYW5jZWwoKTsNCisg
ICAgICAgIH0NCisgICAgcmV0dXJuIExvYWRQbHVnaW5zTCgpOw0KKyAgICB9DQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQogLy8gQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zTA0KIC8v
DQogLy8gTG9hZHMgYWxsIHRoZSBwbHVnaW5zIGFuZCBxdWVyeSB0aGVtIGZvciBkZXRhaWxzLg0K
QEAgLTUzNSwzMiArNTU2LDMyIEBADQogICAgIC8vIENyZWF0ZSB0aGUgRUNvbSBpbmZvIGFycmF5
LCBjb250YWlucyB0aGUgcGx1Z2luIGluZm9ybWF0aW9uDQogICAgIFJJbXBsSW5mb1B0ckFycmF5
IGVjb21QbHVnaW5JbmZvQXJyYXk7DQogDQotCS8vIEdldCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0
aGF0IG1hdGNoIHRoZSBLTkJyb3dzZXJQbHVnaW5JbnRlcmZhY2VVaWQNCi0JUkVDb21TZXNzaW9u
OjpMaXN0SW1wbGVtZW50YXRpb25zTChLQnJvd3NlclBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBs
dWdpbkluZm9BcnJheSk7DQorICAgIC8vIEdldCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0aGF0IG1h
dGNoIHRoZSBLTkJyb3dzZXJQbHVnaW5JbnRlcmZhY2VVaWQNCisgICAgUkVDb21TZXNzaW9uOjpM
aXN0SW1wbGVtZW50YXRpb25zTChLQnJvd3NlclBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBsdWdp
bkluZm9BcnJheSk7DQogDQotCS8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIE5ldHNjYXBlIHBsdWdp
bnMgZm91bmQgYnkgRUNvbSBhbmQgcG9wdWxhdGUgdGhlDQotCS8vIGlQbHVnaW5JbmZvQXJyYXkN
Ci0JY29uc3QgVEludCBwbHVnaW5Db3VudCA9IGVjb21QbHVnaW5JbmZvQXJyYXkuQ291bnQoKTsN
Ci0JZm9yIChUSW50IGluZGV4PTA7IGluZGV4PHBsdWdpbkNvdW50OyArK2luZGV4KQ0KKyAgICAv
LyBMb29wIHRocm91Z2ggYWxsIHRoZSBOZXRzY2FwZSBwbHVnaW5zIGZvdW5kIGJ5IEVDb20gYW5k
IHBvcHVsYXRlIHRoZQ0KKyAgICAvLyBpUGx1Z2luSW5mb0FycmF5DQorICAgIGNvbnN0IFRJbnQg
cGx1Z2luQ291bnQgPSBlY29tUGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQorICAgIGZvciAoVElu
dCBpbmRleD0wOyBpbmRleDxwbHVnaW5Db3VudDsgKytpbmRleCkNCiAgICAgICAgIHsNCi0JCUNQ
bHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gbmV3KEVMZWF2ZSkgQ1BsdWdpbkluZm87DQotCSAgICBw
bHVnaW5JbmZvLT5pSGFuZGxlID0gaU5leHRIYW5kbGUrKzsNCi0JICAgIENsZWFudXBTdGFjazo6
UHVzaEwocGx1Z2luSW5mbyk7DQorICAgICAgICBDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IG5l
dyhFTGVhdmUpIENQbHVnaW5JbmZvOw0KKyAgICAgICAgcGx1Z2luSW5mby0+aUhhbmRsZSA9IGlO
ZXh0SGFuZGxlKys7DQorICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHBsdWdpbkluZm8pOw0K
IA0KLQkgICAgLy8gU2V0IHRoZSBwbHVnaW4gcHJvcGVydGllcw0KLQkgICAgcGx1Z2luSW5mby0+
aVBsdWdpbkluZm8gPSBlY29tUGx1Z2luSW5mb0FycmF5W2luZGV4XTsNCi0JICAgIC8vIFJlYWQg
dGhlIHBsdWdpbidzIG5hbWUgYW5kIHBsdWdpbiBGaWxlTmFtZSAoZGlzcGxheV9uYW1lKSBmcm9t
IHRoZSBJTVBMRU1FTlRBVElPTl9JTkZPDQotCSAgICBwbHVnaW5JbmZvLT5QYXJzZURpc3BsYXlO
YW1lTChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+RGlzcGxheU5hbWUoKSk7DQotCSAgICBwbHVn
aW5JbmZvLT5pRGVzY3JpcHRpb24gPSBIQnVmQzo6TmV3TChwbHVnaW5JbmZvLT5pUGx1Z2luSW5m
by0+T3BhcXVlRGF0YSgpLkxlbmd0aCgpKTsNCi0JICAgIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlv
bi0+RGVzKCkuQ29weShwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+T3BhcXVlRGF0YSgpKTsNCi0J
ICAgIHBsdWdpbkluZm8tPmlVaWQgPSBwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+SW1wbGVtZW50
YXRpb25VaWQoKTsNCi0JICAgIC8vIFBhcnNlcyB0aGUgYU1JTUVEZXNjcmlwdGlvbiBzdHJpbmcg
dG8gcG9wdWxhdGUgdGhlIG1pbWVUeXBlcywgbWltZUV4dGVuc2lvbnMsDQotCSAgICAvLyBhbmQg
bWltZURlc2NyaXB0aW9ucyBhcnJheXMuDQotCSAgICBwbHVnaW5JbmZvLT5QYXJzZURlZmF1bHRE
YXRhTChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+RGF0YVR5cGUoKSk7DQorICAgICAgICAvLyBT
ZXQgdGhlIHBsdWdpbiBwcm9wZXJ0aWVzDQorICAgICAgICBwbHVnaW5JbmZvLT5pUGx1Z2luSW5m
byA9IGVjb21QbHVnaW5JbmZvQXJyYXlbaW5kZXhdOw0KKyAgICAgICAgLy8gUmVhZCB0aGUgcGx1
Z2luJ3MgbmFtZSBhbmQgcGx1Z2luIEZpbGVOYW1lIChkaXNwbGF5X25hbWUpIGZyb20gdGhlIElN
UExFTUVOVEFUSU9OX0lORk8NCisgICAgICAgIHBsdWdpbkluZm8tPlBhcnNlRGlzcGxheU5hbWVM
KHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5EaXNwbGF5TmFtZSgpKTsNCisgICAgICAgIHBsdWdp
bkluZm8tPmlEZXNjcmlwdGlvbiA9IEhCdWZDOjpOZXdMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZv
LT5PcGFxdWVEYXRhKCkuTGVuZ3RoKCkpOw0KKyAgICAgICAgcGx1Z2luSW5mby0+aURlc2NyaXB0
aW9uLT5EZXMoKS5Db3B5KHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5PcGFxdWVEYXRhKCkpOw0K
KyAgICAgICAgcGx1Z2luSW5mby0+aVVpZCA9IHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5JbXBs
ZW1lbnRhdGlvblVpZCgpOw0KKyAgICAgICAgLy8gUGFyc2VzIHRoZSBhTUlNRURlc2NyaXB0aW9u
IHN0cmluZyB0byBwb3B1bGF0ZSB0aGUgbWltZVR5cGVzLCBtaW1lRXh0ZW5zaW9ucywNCisgICAg
ICAgIC8vIGFuZCBtaW1lRGVzY3JpcHRpb25zIGFycmF5cy4NCisgICAgICAgIHBsdWdpbkluZm8t
PlBhcnNlRGVmYXVsdERhdGFMKHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvLT5EYXRhVHlwZSgpKTsN
CiANCi0JICAgIC8vIEFkZCB0aGUgZmlsdGVyIGluZm9ybWF0aW9uIHRvIHRoZSBsaXN0DQotCSAg
ICBVc2VyOjpMZWF2ZUlmRXJyb3IoaVBsdWdpbkluZm9BcnJheS5BcHBlbmQocGx1Z2luSW5mbykp
Ow0KLQkgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsgICAgLy8gcGx1Z2luSW5mbw0KKyAgICAgICAg
Ly8gQWRkIHRoZSBmaWx0ZXIgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QNCisgICAgICAgIFVzZXI6
OkxlYXZlSWZFcnJvcihpUGx1Z2luSW5mb0FycmF5LkFwcGVuZChwbHVnaW5JbmZvKSk7DQorICAg
ICAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOyAgICAvLyBwbHVnaW5JbmZvDQogICAgICAgICB9DQog
DQogICAgIC8vIENsZWFuIHVwIHRoZSBFQ29tIGluZm8gYXJyYXkNCkBAIC03MTksNyArNzQwLDcg
QEANCiAvLw0KIHZvaWQgQ1BsdWdpbkhhbmRsZXI6OlJlbG9hZFBsdWdpbnMoVEJvb2wgYVJlbG9h
ZFBhZ2VzLCAgTVdlYkNsaWVudEJyaWRnZSYgYVdlYkNsaWVudEJyaWRnZSkNCiAgICB7DQotCVRS
QVBfSUdOT1JFKCBSZWxvYWRQbHVnaW5zTChhUmVsb2FkUGFnZXMsIGFXZWJDbGllbnRCcmlkZ2Up
KTsNCisgICAgVFJBUF9JR05PUkUoIFJlbG9hZFBsdWdpbnNMKGFSZWxvYWRQYWdlcywgYVdlYkNs
aWVudEJyaWRnZSkpOw0KICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTcy
OSwxMiArNzUwLDEyIEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBUUHRyQyBDUGx1Z2lu
SGFuZGxlcjo6R2V0UGx1Z2luTmFtZShUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1BsdWdpbklu
Zm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAocGx1Z2lu
SW5mbyAmJiBwbHVnaW5JbmZvLT5pTmFtZSkNCi0gCSAgIHsNCi0gCSAgIHJldHVybiBwbHVnaW5J
bmZvLT5OYW1lKCktPkRlcygpOw0KLSAJICAgfQ0KLSAJcmV0dXJuIFRQdHJDKCk7DQorICAgICBD
UGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCisgICAg
IGlmIChwbHVnaW5JbmZvICYmIHBsdWdpbkluZm8tPmlOYW1lKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgcmV0dXJuIHBsdWdpbkluZm8tPk5hbWUoKS0+RGVzKCk7DQorICAgICAgICB9DQorICAgICBy
ZXR1cm4gVFB0ckMoKTsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAt
NzQ0LDEyICs3NjUsMTIgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIFRQdHJDIENQbHVn
aW5IYW5kbGVyOjpHZXRQbHVnaW5GaWxlTmFtZShUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1Bs
dWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAo
cGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pRmlsZU5hbWUpDQotIAkgICB7DQotIAkgICByZXR1
cm4gcGx1Z2luSW5mby0+RmlsZU5hbWUoKS0+RGVzKCk7DQotIAkgICB9DQotIAlyZXR1cm4gVFB0
ckMoKTsNCisgICAgIENQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJheVth
SW5kZXhdOw0KKyAgICAgaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aUZpbGVOYW1lKQ0K
KyAgICAgICAgew0KKyAgICAgICAgcmV0dXJuIHBsdWdpbkluZm8tPkZpbGVOYW1lKCktPkRlcygp
Ow0KKyAgICAgICAgfQ0KKyAgICAgcmV0dXJuIFRQdHJDKCk7DQogICAgIH0NCiANCiANCkBAIC03
NjAsMTIgKzc4MSwxMiBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogVFB0ckMgQ1BsdWdp
bkhhbmRsZXI6OkdldFBsdWdpbkRlc2NyaXB0aW9uKFRJbnQgYUluZGV4KQ0KICAgICB7DQotIAlD
UGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCi0gCWlm
IChwbHVnaW5JbmZvICYmIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbikNCi0gCSAgIHsNCi0gCSAg
IHJldHVybiBwbHVnaW5JbmZvLT5EZXNjcmlwdGlvbigpLT5EZXMoKTsNCi0gCSAgIH0NCi0gCXJl
dHVybiBUUHRyQygpOw0KKyAgICAgQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5m
b0FycmF5W2FJbmRleF07DQorICAgICBpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pRGVz
Y3JpcHRpb24pDQorICAgICAgICB7DQorICAgICAgICByZXR1cm4gcGx1Z2luSW5mby0+RGVzY3Jp
cHRpb24oKS0+RGVzKCk7DQorICAgICAgICB9DQorICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAg
fQ0KIA0KIA0KQEAgLTc3Nyw4ICs3OTgsOCBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
VEludCBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luQ291bnQoKQ0KICAgICB7DQotCXJldHVybiBp
UGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQotCX0NCisgICAgcmV0dXJuIGlQbHVnaW5JbmZvQXJy
YXkuQ291bnQoKTsNCisgICAgfQ0KIA0KIA0KIA0KQEAgLTkwNiw3ICs5MjcsNyBAQA0KICAgICB0
bXBQbHVnaW5JbmZvQXJyYXkuQ2xvc2UoKTsNCiAgICAgaWYgKGFSZWxvYWRQYWdlcykNCiAgICAg
ICAgIHsNCi0JCWFXZWJDbGllbnRCcmlkZ2UuUmVsb2FkKCk7DQorICAgICAgICBhV2ViQ2xpZW50
QnJpZGdlLlJlbG9hZCgpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpJbmRleDogV2ViS2l0L1Bs
dWdpbi9zcmMvUGx1Z2luU2tpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL3Ny
Yy9QbHVnaW5Ta2luLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9zcmMv
UGx1Z2luU2tpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02OSw2ICs2OSw5IEBADQogI2luY2x1
ZGUgIldlYktpdFZpZXcuaCINCiAjaW5jbHVkZSAiV2ViS2l0Q29udHJvbC5oIg0KICNpbmNsdWRl
ICJXZWJDb3JlR3JhcGhpY3NDb250ZXh0LmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMN
CisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURH
RVRTDQogDQogLy8gQ09OU1RBTlRTDQogLy8gc2NoZW1lIGZvciBSVFNQIHVybA0KQEAgLTE1NSw3
ICsxNTgsNyBAQA0KICNlbmRpZg0KICAgICByZXAtPkdldCggS0Jyb3dzZXJVc0J1aWxkLCB2YWx1
ZSApOw0KICAgICBkZWxldGUgcmVwOw0KLSAgICANCisNCiAgICAgaWYgKCAhdmFsdWUgfHwgYUNh
blBsdWdpbkludGVyYWN0ICkNCiAgICAgICAgIHsNCiAgICAgICAgIGlDYW5QbHVnaW5JbnRlcmFj
dCA9IEVUcnVlOw0KQEAgLTIwNCw3ICsyMDcsMTIgQEANCiAgICAgICAgICAgICBDbGVhbnVwU3Rh
Y2s6OlBvcEFuZERlc3Ryb3koKTsgIC8vIHVybFNjaGVtZQ0KICAgICAgICAgICAgIH0NCiANCisj
aWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogd2Rn
dEV4dCA9IGlXZWJLaXRGcmFtZS0+V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKS5XaWRnZXRF
eHRlbnNpb24oKTsNCisgICAgICAgIGlmICggYlJ0c3BGb3VuZCB8fCAod2RndEV4dCAmJiBhVXJs
Lkxlbmd0aCgpID09IDApKQ0KKyNlbHNlDQogICAgICAgICBpZiAoIGJSdHNwRm91bmQgKQ0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAv
LyBJZiBydHNwIHNjaGVtZSBpbiB1cmwsIHBhc3MgdG8gcGx1Z2luIGRpcmVjdGx5LA0KICAgICAg
ICAgICAgIC8vIGFmdGVyIHRoZSBhdHRyaWJ1dGUgYXJyYXlzIGluaXRpYWxpemVkDQpAQCAtNTU1
LDcgKzU2Myw3IEBADQogICAgIHsNCiAgICAgLy8gVGhlIGFMb2FkTW9kZSBpcyBub3QgY3VycmVu
dGx5IHVzZWQuICBJdCB3b3VsZCBiZSB1c2VkIGZvciBjaGVja2luZyB0aGUNCiAgICAgLy8gbG9h
ZCBtb2RlIGFuZCBkZXRlcm1pbmluZyBpZiB0aGUgcGx1Z2luIHNob3VsZCBiZSBkZWxldGVkIGFu
ZCByZWNyZWF0ZWQuDQotICAgIA0KKw0KICAgICAvLyBDcmVhdGUgdGhlIFBsdWdpbldpbiwgaWYg
aXQgZG9lc24ndCBleGlzdCwNCiAgICAgaWYgKCAhaVBsdWdpbldpbiApDQogICAgICAgICB7DQpA
QCAtNTYzLDcgKzU3MSw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KmlBdHRyaWJ1dGVOYW1lcywgKmlBdHRyaWJ1dGVWYWx1ZXMsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnRoaXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaVdlYktpdEZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpKSApOw0KLSAg
ICAgICAgDQorDQogICAgICAgICBpZiAoIGVyciAhPSBLRXJyTm9uZSApDQogICAgICAgICAgICAg
ew0KICAgICAgICAgICAgIGlmICggZXJyID09IEtFcnJOb3RTdXBwb3J0ZWQgKQ0KQEAgLTU3NSw3
ICs1ODMsNyBAQA0KICAgICAgICAgICAgICAgICBVc2VyOjpMZWF2ZSggZXJyICk7DQogICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQotICAgICAgICAgICAgDQorDQogICAgICAgICBp
ZiAoICFpSXNTb3VuZHN0YXJ0ICkNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgLy8gUmVm
cmVzaA0KQEAgLTYxOCw3ICs2MjYsNyBAQA0KICAgICBDQXJyYXlGaXhGbGF0PFRCckN0bFNlbGVj
dE9wdGlvbkRhdGE+KiBvYmpMaXN0ID0gbmV3IChFTGVhdmUpDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQXJyYXlGaXhGbGF0PFRCckN0bFNlbGVjdE9w
dGlvbkRhdGE+KDIpOw0KICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKG9iakxpc3QpOw0KLSAgICAN
CisNCiAgICAgLy8gQWRkIG9iamVjdCBsaXN0IGVudHJ5DQogICAgIGZvciAoaW50IGk9MDsgaTwy
OyBpKyspDQogICAgICAgICB7DQpAQCAtNjUwLDEwICs2NTgsMTAgQEANCiAgICAgb2JqTGlzdC0+
UmVzZXQoKTsNCiAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCA0ICk7Ly8gb2JqTGlz
dCwgdGV4dCwgdGV4dCwgdGl0bGUNCiAgICAgfQ0KLSAgICANCisNCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vIENQbHVnaW5Ta2luOjpJc0ZvY3VzYWJsZQ0KLS8vIA0KKy8vDQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENQbHVnaW5Ta2luOjpJc0ZvY3VzYWJsZSgp
IGNvbnN0DQpAQCAtNjY0LDMgKzY3MiwxMCBAQA0KICAgICAgICAgcmV0dXJuIEVGYWxzZTsNCiAg
ICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQordm9pZCogQ1BsdWdpblNraW46
OlBsdWdpblNjcmlwdGFibGVPYmplY3QoKQ0KKyAgICB7DQorICAgIHJldHVybiBpUGx1Z2luV2lu
P2lQbHVnaW5XaW4tPlBsdWdpblNjcmlwdGFibGVPYmplY3QoKTowOw0KKyAgICB9DQorI2VuZGlm
IC8vUkRfQlJPV1NFUl9XSURHRVRTDQorDQpJbmRleDogV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2lu
V2luLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbldpbi5jcHAJ
KHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbldpbi5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC01Myw2ICs1Myw3IEBADQogI2luY2x1ZGUgIlBsdWdpblNraW4uaCIN
CiAjaW5jbHVkZSAiUGx1Z2luSGFuZGxlci5oIg0KICNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgi
DQorI2luY2x1ZGUgIldlYktpdEJyaWRnZS5oIg0KIA0KIC8vIENPTlNUQU5UUw0KIGNvbnN0IFRJ
bnQgS1BsdWdpbkdyYW51bGFyaXR5ID0gMzsNCkBAIC0xMTk5LDggKzEyMDAsMzMgQEANCiAgICAg
ICAgIH0gICAgICAgICAgICAgICAgIA0KICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURH
RVRTDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgDQorTlBPYmplY3QqIENQbHVnaW5X
aW46OldpbmRvd1NjcmlwdE5QT2JqZWN0KCkNCisgICAgew0KKyAgICByZXR1cm4gaVBsdWdpblNr
aW4tPkZyYW1lKCktPldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5XaW5kb3dTY3JpcHRO
UE9iamVjdCgpOw0KKyAgICB9DQogDQorDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBD
UGx1Z2luV2luOjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0IA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gIA0KK3ZvaWQqIENQbHVnaW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QoKQ0K
KyAgICB7DQorICAgIGlmIChpUGx1Z2luRnVuY3MtPmdldHZhbHVlKSB7DQorICAgICAgICB2b2lk
ICp2YWx1ZSA9IDA7DQorICAgICAgICBOUEVycm9yIG5wRXJyID0gaVBsdWdpbkZ1bmNzLT5nZXR2
YWx1ZSggaUluc3RhbmNlLCBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAodm9pZCAqKSZ2
YWx1ZSk7DQorICAgICAgICBpZiAobnBFcnIgPT0gTlBFUlJfTk9fRVJST1IpIHsNCisgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuICh2b2lk
ICopMDsgICAgDQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENQbHVnaW5XaW46OklzQ29udGVudEludGVyYWN0aXZl
KCkNCiAvLyBUZWxscyAgdGhhdCBwbHVnaW4gY29udGVudCBjYW4gYWNjZXB0IHVzZXIgaW50ZXJh
Y3Rpb24uIA0KIC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgaVBsdWdpbkZ1bmNzLT5nZXR2YWx1ZSAi
MCIgb3IgZmFsc2UgbWVhbnMgIHBsdWdpbiBpcyBpbnRlcmFjdGl2ZS4gDQpJbmRleDogV2ViS2l0
L3JvbS93ZWJraXQuaWJ5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3JvbS93ZWJraXQuaWJ5CShy
ZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvcm9tL3dlYmtpdC5pYnkJKHdvcmtpbmcgY29weSkN
CkBAIC01OCw2ICs1OCw5IEBADQogZmlsZT1BQklfRElSXEJVSUxEX0RJUlxCcm93c2VyQ2FjaGUu
ZGxsICAgICAgICAgICAgICAgICBTSEFSRURfTElCX0RJUlxCcm93c2VyQ2FjaGUuZGxsDQogZmls
ZT1BQklfRElSXEJVSUxEX0RJUlxIaXN0b3J5UHJvdmlkZXIuZGxsICAgICAgICAgICAgICBTSEFS
RURfTElCX0RJUlxIaXN0b3J5UHJvdmlkZXIuZGxsDQogZmlsZT1BQklfRElSXEJVSUxEX0RJUlxU
b29sQmFyLmRsbCAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfTElCX0RJUlxUb29sQmFyLmRs
bA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorZmlsZT1BQklfRElSXEJVSUxEX0RJUlxX
aWRnZXRFbmdpbmUuZGxsICAgICAgICAgICAgICAgICAgICAgIFNIQVJFRF9MSUJfRElSXFdpZGdl
dEVuZ2luZS5kbGwNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiBFQ09NX1BMVUdJ
TihCcm93c2VyUmVjLmRsbCwgMDEwMDVBMDIucnNjKQ0KIEVDT01fUExVR0lOKE1lbW9yeVBsdWdp
bi5kbGwsIG1lbW9yeXBsdWdpbi5SU0MpDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11215</attachid>
            <date>2006-10-25 15:38:47 -0700</date>
            <delta_ts>2006-10-25 17:59:27 -0700</delta_ts>
            <desc>Fix SDK build break</desc>
            <filename>Widget.patch</filename>
            <type>text/plain</type>
            <size>401946</size>
            <attacher name="Sriram">sriram.yadavalli</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTIpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEwOSBAQA0KKzIwMDYtMTAtMjUgIHlh
ZGF2YWxsICA8c3JpcmFtLnlhZGF2YWxsaUBub2tpYS5jb20+DQorDQorICAgICAgICBSZXZpZXdl
ZCBieSBaYWxhbiBCdWp0YXMgKHpidWp0YXNAZ21haWwuY29tKS4NCisgICAgICAgIERFU0M6IFNj
cmlwdGFibGUgcGx1Z2luICYgd2lkZ2V0IG9iamVjdCBpbXBsZW1lbnRhdGlvbg0KKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDcNCisNCisgICAgICAg
ICogYmluZGluZ3MvTlBfanNvYmplY3QuY3BwOg0KKyAgICAgICAgKGxpc3RGcm9tVmFyaWFudEFy
Z3MpOg0KKyAgICAgICAgKF9pc1NhZmVTY3JpcHQpOg0KKyAgICAgICAgKF9OUE5fQ3JlYXRlU2Ny
aXB0T2JqZWN0KToNCisgICAgICAgIChOUE5fSW52b2tlRGVmYXVsdCk6DQorICAgICAgICAoTlBO
X0ludm9rZSk6DQorICAgICAgICAoTlBOX0V2YWx1YXRlKToNCisgICAgICAgIChOUE5fR2V0UHJv
cGVydHkpOg0KKyAgICAgICAgKE5QTl9TZXRQcm9wZXJ0eSk6DQorICAgICAgICAoTlBOX1JlbW92
ZVByb3BlcnR5KToNCisgICAgICAgIChOUE5fSGFzUHJvcGVydHkpOg0KKyAgICAgICAgKE5QTl9I
YXNNZXRob2QpOg0KKyAgICAgICAgKE5QTl9TZXRFeGNlcHRpb24pOg0KKyAgICAgICAgKiBiaW5k
aW5ncy9OUF9qc29iamVjdC5oOg0KKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfY2xhc3MuY3BwOg0K
KyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6Q0NsYXNzKToNCisgICAgICAgIChLSlM6
OkJpbmRpbmdzOjpDQ2xhc3M6On5DQ2xhc3MpOg0KKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkND
bGFzczo6Y2xhc3NGb3JJc0EpOg0KKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6bmFt
ZSk6DQorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRob2RzTmFtZWQpOg0KKyAg
ICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCk6DQorICAgICAgICAqIGJp
bmRpbmdzL2MvY19jbGFzcy5oOg0KKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6Y29u
c3RydWN0b3JBdCk6DQorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpudW1Db25zdHJ1
Y3RvcnMpOg0KKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfaW5zdGFuY2UuY3BwOg0KKyAgICAgICAg
KENJbnN0YW5jZTo6Q0luc3RhbmNlKToNCisgICAgICAgIChDSW5zdGFuY2U6On5DSW5zdGFuY2Up
Og0KKyAgICAgICAgKENJbnN0YW5jZTo6b3BlcmF0b3I9KToNCisgICAgICAgIChDSW5zdGFuY2U6
OmdldENsYXNzKToNCisgICAgICAgIChDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6DQorICAgICAg
ICAoQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKToNCisgICAgICAgIChDSW5zdGFuY2U6
OmRlZmF1bHRWYWx1ZSk6DQorICAgICAgICAoQ0luc3RhbmNlOjpzdHJpbmdWYWx1ZSk6DQorICAg
ICAgICAoQ0luc3RhbmNlOjp2YWx1ZU9mKToNCisgICAgICAgICogYmluZGluZ3MvYy9jX3J1bnRp
bWUuaDoNCisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDRmllbGQ6Om5hbWUpOg0KKyAgICAgICAg
KEtKUzo6QmluZGluZ3M6OkNNZXRob2Q6Om5hbWUpOg0KKyAgICAgICAgKiBiaW5kaW5ncy9jL2Nf
dXRpbGl0eS5jcHA6DQorICAgICAgICAoY29udmVydFVURjhUb1VURjE2KToNCisgICAgICAgIChj
b252ZXJ0VmFsdWVUb05QVmFyaWFudCk6DQorICAgICAgICAoY29udmVydE5QVmFyaWFudFRvVmFs
dWUpOg0KKyAgICAgICAgKGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKToNCisgICAgICAgICog
YmluZGluZ3MvYy9jX3V0aWxpdHkuaDoNCisgICAgICAgICogYmluZGluZ3MvbnBhcGkuaDoNCisg
ICAgICAgIChfTlBQcmludDo6KToNCisgICAgICAgICogYmluZGluZ3MvbnBydW50aW1lLmNwcDoN
CisgICAgICAgIChnZXRTdHJpbmdJZGVudGlmaWVyTWFwKToNCisgICAgICAgIChnZXRJbnRJZGVu
dGlmaWVyTWFwKToNCisgICAgICAgIChOUE5fR2V0U3RyaW5nSWRlbnRpZmllcik6DQorICAgICAg
ICAoTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzKToNCisgICAgICAgIChOUE5fR2V0SW50SWRlbnRp
Zmllcik6DQorICAgICAgICAoTlBOX0lkZW50aWZpZXJJc1N0cmluZyk6DQorICAgICAgICAoTlBO
X1VURjhGcm9tSWRlbnRpZmllcik6DQorICAgICAgICAoTlBOX0ludEZyb21JZGVudGlmaWVyKToN
CisgICAgICAgIChOUE5fVmFyaWFudFRvQm9vbCk6DQorICAgICAgICAoTlBOX1ZhcmlhbnRUb1N0
cmluZyk6DQorICAgICAgICAoTlBOX1ZhcmlhbnRUb0ludDMyKToNCisgICAgICAgIChOUE5fVmFy
aWFudFRvRG91YmxlKToNCisgICAgICAgIChOUE5fVmFyaWFudFRvT2JqZWN0KToNCisgICAgICAg
IChOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoT2JqZWN0KToNCisgICAgICAgIChOUE5fUmVsZWFz
ZVZhcmlhbnRWYWx1ZSk6DQorICAgICAgICAoTlBOX0NyZWF0ZU9iamVjdCk6DQorICAgICAgICAo
TlBOX1JldGFpbk9iamVjdCk6DQorICAgICAgICAoTlBOX1JlbGVhc2VPYmplY3QpOg0KKyAgICAg
ICAgKE5QTl9TZXRFeGNlcHRpb25XaXRoVVRGOCk6DQorICAgICAgICAqIGJpbmRpbmdzL25wcnVu
dGltZS5oOg0KKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lLmNwcDoNCisgICAgICAgIChJbnN0
YW5jZTo6Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UpOg0KKyAgICAgICAgKEluc3Rh
bmNlOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOg0KKyAgICAgICAgKiBiaW5kaW5n
cy9ydW50aW1lLmg6DQorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcDoNCisg
ICAgICAgIChSdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKToNCisgICAgICAgIChS
dW50aW1lT2JqZWN0SW1wOjpnZXQpOg0KKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OnB1dCk6
DQorICAgICAgICAoUnVudGltZU9iamVjdEltcDo6Y2FuUHV0KToNCisgICAgICAgICogYmluZGlu
Z3MvcnVudGltZV9vYmplY3QuaDoNCisgICAgICAgICogYmluZGluZ3MvcnVudGltZV9yb290LmNw
cDoNCisgICAgICAgIChSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzKToNCisg
ICAgICAgIChnZXRSZWZlcmVuY2VzQnlSb290TWFwKToNCisgICAgICAgIChnZXRSZWZlcmVuY2Vz
U2V0KToNCisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpmaW5kUmVmZXJlbmNlU2V0KToNCisgICAg
ICAgIChLSlM6OkJpbmRpbmdzOjpyb290Rm9ySW1wKToNCisgICAgICAgIChLSlM6OkJpbmRpbmdz
Ojpyb290Rm9ySW50ZXJwcmV0ZXIpOg0KKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OmFkZE5hdGl2
ZVJlZmVyZW5jZSk6DQorICAgICAgICAoS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJl
bmNlKToNCisgICAgICAgIChSb290T2JqZWN0OjpzZXRJbnRlcnByZXRlcik6DQorICAgICAgICAq
IGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5oOg0KKyAgICAgICAgKiBncm91cC9Cd2luc2N3L0pBVkFT
Q1JJUFRDT1JFVS5ERUY6DQorICAgICAgICAqIGdyb3VwL0VBQkkvSmF2YXNjcmlwdENvcmVVLmRl
ZjoNCisgICAgICAgICogZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wOg0KKyAgICAgICAgKiBncm91
cC9ibGQuaW5mOg0KKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuY3BwOg0KKyAgICAgICAgKElu
dGVycHJldGVyOjpldmFsdWF0ZSk6DQorICAgICAgICAoSW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1
YWdlSW5zdGFuY2VGb3JWYWx1ZSk6DQorICAgICAgICAoU2F2ZWRCdWlsdGluczo6U2F2ZWRCdWls
dGlucyk6DQorICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5oOg0KKyAgICAgICAgKiBranMvc3Rk
aW50Lmg6DQorICAgICAgICAqIGtqcy91c3RyaW5nLmg6DQorICAgICAgICAoS0pTOjpVU3RyaW5n
OjphcmVwKToNCisNCiAyMDA2LTEwLTA0ICBzYXJlZW4gIDxzaHlhbS5zYXJlZW5Abm9raWEuY29t
Pg0KIA0KICAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLg0KSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNvYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjAsNyArMjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkNCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UN
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiANCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAqLw0KICNpbmNsdWRlIDxOUF9q
c29iamVjdC5oPg0KIA0KQEAgLTM1LDE1ICszNSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOjpC
aW5kaW5nczsNCiANCiBzdGF0aWMgS0pTOjpMaXN0IGxpc3RGcm9tVmFyaWFudEFyZ3MoS0pTOjpF
eGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdW5zaWduZWQgYXJnQ291bnQp
DQogew0KLSAgICBLSlM6Okxpc3QgYUxpc3Q7IA0KKyAgICBLSlM6Okxpc3QgYUxpc3Q7DQogICAg
IHVuc2lnbmVkIGk7DQogICAgIGNvbnN0IE5QVmFyaWFudCAqdiA9IGFyZ3M7DQotICAgIA0KKw0K
ICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnQ291bnQ7IGkrKykgew0KICAgICAgICAgYUxpc3QuYXBw
ZW5kIChjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoZXhlYywgdikpOw0KICAgICAgICAgdisrOw0K
ICAgICB9DQotICAgIA0KKw0KICAgICByZXR1cm4gYUxpc3Q7DQogfQ0KIA0KQEAgLTU3LDEwICs1
NywxMCBAQCBzdGF0aWMgdm9pZCBqc0RlYWxsb2NhdGUgKEphdmFTY3JpcHRPYmplDQogICAgIGZy
ZWUgKG9iaik7DQogfQ0KIA0KLXN0YXRpYyBOUENsYXNzIF9qYXZhc2NyaXB0Q2xhc3MgPSB7IA0K
K3N0YXRpYyBOUENsYXNzIF9qYXZhc2NyaXB0Q2xhc3MgPSB7DQogICAgIDEsDQotICAgIGpzQWxs
b2NhdGUsIA0KLSAgICAoTlBEZWFsbG9jYXRlRnVuY3Rpb25QdHIpanNEZWFsbG9jYXRlLCANCisg
ICAganNBbGxvY2F0ZSwNCisgICAgKE5QRGVhbGxvY2F0ZUZ1bmN0aW9uUHRyKWpzRGVhbGxvY2F0
ZSwNCiAgICAgMCwNCiAgICAgMCwNCiAgICAgMCwNCkBAIC03MywxMjcgKzczLDEzMCBAQCBzdGF0
aWMgTlBDbGFzcyBfamF2YXNjcmlwdENsYXNzID0geyANCiANCiBOUENsYXNzICpOUFNjcmlwdE9i
amVjdENsYXNzID0gJl9qYXZhc2NyaXB0Q2xhc3M7DQogDQotc3RhdGljIElkZW50aWZpZXIgaWRl
bnRpZmllckZyb21OUElkZW50aWZpZXIoY29uc3QgTlBVVEY4ICpuYW1lKQ0KLXsNCi0gICAgTlBV
VEYxNiAqbWV0aG9kTmFtZTsNCi0gICAgdW5zaWduZWQgaW50IFVURjE2TGVuZ3RoOw0KLSAgICAN
Ci0gICAgY29udmVydFVURjhUb1VURjE2IChuYW1lLCAtMSwgJm1ldGhvZE5hbWUsICZVVEYxNkxl
bmd0aCk7IC8vIHJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuDQotICAgIElkZW50
aWZpZXIgaWRlbnRpZmllciAoKGNvbnN0IEtKUzo6VUNoYXIqKW1ldGhvZE5hbWUsIFVURjE2TGVu
Z3RoKTsNCi0gICAgZnJlZSAoKHZvaWQgKiltZXRob2ROYW1lKTsNCi0gICAgDQotICAgIHJldHVy
biBpZGVudGlmaWVyOw0KLX0NCiANCiBzdGF0aWMgYm9vbCBfaXNTYWZlU2NyaXB0KEphdmFTY3Jp
cHRPYmplY3QgKm9iaikNCiB7DQogICAgIGlmIChvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQp
IHsNCi0JSW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gb2JqLT5vcmlnaW5FeGVjdXRp
b25Db250ZXh0LT5pbnRlcnByZXRlcigpOw0KLQlpZiAob3JpZ2luSW50ZXJwcmV0ZXIpIHsNCi0J
ICAgIHJldHVybiBvcmlnaW5JbnRlcnByZXRlci0+aXNTYWZlU2NyaXB0IChvYmotPmV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCkpOw0KLQl9DQorICAgIEludGVycHJldGVyICpvcmlnaW5J
bnRlcnByZXRlciA9IG9iai0+b3JpZ2luRXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKTsN
CisgICAgaWYgKG9yaWdpbkludGVycHJldGVyKSB7DQorICAgICAgICByZXR1cm4gb3JpZ2luSW50
ZXJwcmV0ZXItPmlzU2FmZVNjcmlwdCAob2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRl
cigpKTsNCisgICAgfQ0KICAgICB9DQogICAgIHJldHVybiB0cnVlOw0KIH0NCiANCitFWFBPUlRf
Qw0KIE5QT2JqZWN0ICpfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoTlBQIG5wcCwgS0pTOjpPYmpl
Y3RJbXAgKmltcCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqb3JpZ2luRXhlY3V0
aW9uQ29udGV4dCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29u
dGV4dCkNCiB7DQotICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0
ICopX05QTl9DcmVhdGVPYmplY3QobnBwLCBOUFNjcmlwdE9iamVjdENsYXNzKTsNCisgICAgSmF2
YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilOUE5fQ3JlYXRlT2JqZWN0
KG5wcCwgTlBTY3JpcHRPYmplY3RDbGFzcyk7DQogDQogICAgIG9iai0+aW1wID0gaW1wOw0KLSAg
ICBvYmotPm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQgPSBvcmlnaW5FeGVjdXRpb25Db250ZXh0OyAg
ICANCi0gICAgb2JqLT5leGVjdXRpb25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dDsgICAgDQor
ICAgIG9iai0+b3JpZ2luRXhlY3V0aW9uQ29udGV4dCA9IG9yaWdpbkV4ZWN1dGlvbkNvbnRleHQ7
DQorICAgIG9iai0+ZXhlY3V0aW9uQ29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQ7DQogDQogICAg
IGFkZE5hdGl2ZVJlZmVyZW5jZSAoZXhlY3V0aW9uQ29udGV4dCwgaW1wKTsNCi0gICAgDQorDQog
ICAgIHJldHVybiAoTlBPYmplY3QgKilvYmo7DQogfQ0KIA0KLWJvb2wgX05QTl9JbnZva2VEZWZh
dWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJf
dCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpDQorRVhQT1JUX0MNCitib29sIE5QTl9JbnZv
a2VEZWZhdWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1
aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpDQogew0KICAgICBpZiAoby0+X2Ns
YXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsNCi0gICAgICAgIC8vIE5vIG5vdGlvbiBvZiBh
IGRlZmF1bHQgZnVuY3Rpb24gb24gSlMgb2JqZWN0cy4gIEp1c3QgcmV0dXJuIGZhbHNlLCBjYW4n
dCBoYW5kbGUuDQotICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgICAgICBKYXZhU2NyaXB0T2Jq
ZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87DQorICAgICAgICBPYmplY3RJbXAgKmZ1
bmNJbXAgPSBvYmotPmltcDsNCisgICAgICAgIGlmICghZnVuY0ltcC0+aW1wbGVtZW50c0NhbGwo
KSkNCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgICAgICBFeGVjU3RhdGUgKmV4ZWMg
PSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsNCisg
ICAgICAgIE9iamVjdCB0aGlzT2JqID0gT2JqZWN0KGNvbnN0X2Nhc3Q8T2JqZWN0SW1wKj4ob2Jq
LT5pbXApKTsNCisgICAgICAgIExpc3QgYXJnTGlzdCA9IGxpc3RGcm9tVmFyaWFudEFyZ3MoZXhl
YywgYXJncywgYXJnQ291bnQpOw0KKyAgICAgICAgVmFsdWUgcmVzdWx0ViA9IE9iamVjdChmdW5j
SW1wKS5jYWxsIChleGVjLCB0aGlzT2JqLCBhcmdMaXN0KTsNCisNCisgICAgICAgIC8vIENvbnZl
cnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLg0KKyAgICAgICAg
Y29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsNCisgICAgICAg
IHJldHVybiB0cnVlOw0KICAgICB9DQogICAgIGVsc2Ugew0KICAgICAgICAgaWYgKG8tPl9jbGFz
cy0+aW52b2tlRGVmYXVsdCkgew0KICAgICAgICAgICAgIHJldHVybiBvLT5fY2xhc3MtPmludm9r
ZURlZmF1bHQgKG8sIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOw0KICAgICAgICAgfQ0KICAgICB9
DQotICAgIA0KKw0KICAgICByZXR1cm4gdHJ1ZTsNCiB9DQogDQotYm9vbCBfTlBOX0ludm9rZSAo
TlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZh
cmlhbnQgKmFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkNCitFWFBP
UlRfQw0KK2Jvb2wgTlBOX0ludm9rZSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmll
ciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBO
UFZhcmlhbnQgKnJlc3VsdCkNCiB7DQogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmpl
Y3RDbGFzcykgew0KLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRP
YmplY3QgKilvOyANCi0gICAgICAgIA0KLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkNCi0JICAg
IHJldHVybiBmYWxzZTsNCi0JICAgIA0KKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0g
KEphdmFTY3JpcHRPYmplY3QgKilvOw0KKw0KKyAgICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkN
CisgICAgICAgIHJldHVybiBmYWxzZTsNCisNCiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyICpp
ID0gKFByaXZhdGVJZGVudGlmaWVyICopbWV0aG9kTmFtZTsNCiAgICAgICAgIGlmICghaS0+aXNT
dHJpbmcpDQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KLSAgICAgICAgICAgIA0KLQkvLyBT
cGVjaWFsIGNhc2UgdGhlICJldmFsIiBtZXRob2QuDQotCWlmIChtZXRob2ROYW1lID09IF9OUE5f
R2V0U3RyaW5nSWRlbnRpZmllcigiZXZhbCIpKSB7DQotCSAgICBpZiAoYXJnQ291bnQgIT0gMSkN
Ci0JCXJldHVybiBmYWxzZTsNCi0JICAgIGlmIChhcmdzWzBdLnR5cGUgIT0gTlBWYXJpYW50VHlw
ZV9TdHJpbmcpDQotCQlyZXR1cm4gZmFsc2U7DQotCSAgICANCi0JICAgIHJldHVybiBfTlBOX0V2
YWx1YXRlIChucHAsIG8sIChOUFN0cmluZyAqKSZhcmdzWzBdLnZhbHVlLnN0cmluZ1ZhbHVlLCBy
ZXN1bHQpOw0KLQl9DQotCWVsc2Ugew0KLQkgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBvYmpl
Y3QuDQotCSAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVy
cHJldGVyKCktPmdsb2JhbEV4ZWMoKTsNCi0JICAgIEludGVycHJldGVyTG9jayBsb2NrOw0KLQkg
ICAgVmFsdWUgZnVuYyA9IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVu
dGlmaWVyKGktPnZhbHVlLnN0cmluZykpOw0KLQ0KLQkgICAgaWYgKGZ1bmMuaXNOdWxsKCkpIHsN
Ci0JCU5QTl9Jbml0aWFsaXplVmFyaWFudEFzTnVsbChyZXN1bHQpOw0KLQkJcmV0dXJuIGZhbHNl
Ow0KLQkgICAgfSBlbHNlIGlmIChmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7DQotCQlO
UE5fSW5pdGlhbGl6ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOw0KLQkJcmV0dXJuIGZhbHNl
Ow0KLQkgICAgfSBlbHNlIHsNCi0JCS8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4NCi0JCU9i
amVjdEltcCAqZnVuY0ltcCA9IHN0YXRpY19jYXN0PE9iamVjdEltcCo+KGZ1bmMuaW1wKCkpOw0K
LQkJT2JqZWN0IHRoaXNPYmogPSBPYmplY3QoY29uc3RfY2FzdDxPYmplY3RJbXAqPihvYmotPmlt
cCkpOw0KLQkJTGlzdCBhcmdMaXN0ID0gbGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBh
cmdDb3VudCk7DQotCQlWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXApLmNhbGwgKGV4ZWMs
IHRoaXNPYmosIGFyZ0xpc3QpOw0KLQ0KLQkJLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1
bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuDQotCQljb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVj
LCByZXN1bHRWLCByZXN1bHQpOw0KLQkJcmV0dXJuIHRydWU7DQotCSAgICB9DQotCX0NCisNCisg
ICAgLy8gU3BlY2lhbCBjYXNlIHRoZSAiZXZhbCIgbWV0aG9kLg0KKyAgICBpZiAobWV0aG9kTmFt
ZSA9PSBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcigiZXZhbCIpKSB7DQorICAgICAgICBpZiAoYXJn
Q291bnQgIT0gMSkNCisgICAgICAgIHJldHVybiBmYWxzZTsNCisgICAgICAgIGlmIChhcmdzWzBd
LnR5cGUgIT0gTlBWYXJpYW50VHlwZV9TdHJpbmcpDQorICAgICAgICByZXR1cm4gZmFsc2U7DQor
DQorICAgICAgICByZXR1cm4gTlBOX0V2YWx1YXRlIChucHAsIG8sIChOUFN0cmluZyAqKSZhcmdz
WzBdLnZhbHVlLnN0cmluZ1ZhbHVlLCByZXN1bHQpOw0KKyAgICB9DQorICAgIGVsc2Ugew0KKyAg
ICAgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBvYmplY3QuDQorICAgICAgICBFeGVjU3RhdGUg
KmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMo
KTsNCisgICAgICAgIEludGVycHJldGVyTG9jayBsb2NrOw0KKyAgICAgICAgVmFsdWUgZnVuYyA9
IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVl
LnN0cmluZykpOw0KKw0KKyAgICAgICAgaWYgKGZ1bmMuaXNOdWxsKCkpIHsNCisgICAgICAgIE5Q
Tl9Jbml0aWFsaXplVmFyaWFudEFzTnVsbChyZXN1bHQpOw0KKyAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KKyAgICAgICAgfSBlbHNlIGlmIChmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7DQor
ICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOw0KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgIC8vIENhbGwgdGhl
IGZ1bmN0aW9uIG9iamVjdC4NCisgICAgICAgIE9iamVjdEltcCAqZnVuY0ltcCA9IHN0YXRpY19j
YXN0PE9iamVjdEltcCo+KGZ1bmMuaW1wKCkpOw0KKyAgICAgICAgT2JqZWN0IHRoaXNPYmogPSBP
YmplY3QoY29uc3RfY2FzdDxPYmplY3RJbXAqPihvYmotPmltcCkpOw0KKyAgICAgICAgTGlzdCBh
cmdMaXN0ID0gbGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCk7DQorICAg
ICAgICBWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXApLmNhbGwgKGV4ZWMsIHRoaXNPYmos
IGFyZ0xpc3QpOw0KKw0KKyAgICAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQg
b2YgdGhlIGZ1bmN0aW9uIGNhbGwuDQorICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChl
eGVjLCByZXN1bHRWLCByZXN1bHQpOw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgICAgICB9
DQorICAgIH0NCiAgICAgfSBlbHNlIGlmIChvLT5fY2xhc3MtPmludm9rZSkNCiAgICAgICAgIHJl
dHVybiBvLT5fY2xhc3MtPmludm9rZSAobywgbWV0aG9kTmFtZSwgYXJncywgYXJnQ291bnQsIHJl
c3VsdCk7DQotICAgIA0KKw0KICAgICByZXR1cm4gdHJ1ZTsNCiB9DQogDQotYm9vbCBfTlBOX0V2
YWx1YXRlIChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBTdHJpbmcgKnMsIE5QVmFyaWFudCAqdmFy
aWFudCkNCitFWFBPUlRfQw0KK2Jvb2wgTlBOX0V2YWx1YXRlIChOUFAgbnBwLCBOUE9iamVjdCAq
bywgTlBTdHJpbmcgKnMsIE5QVmFyaWFudCAqdmFyaWFudCkNCiB7DQogICAgIGlmIChvLT5fY2xh
c3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgew0KLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAq
b2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyANCisgICAgICAgIEphdmFTY3JpcHRPYmplY3Qg
Km9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsNCiANCi0JaWYgKCFfaXNTYWZlU2NyaXB0KG9i
aikpDQotCSAgICByZXR1cm4gZmFsc2U7DQorICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQ0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOw0KIA0KICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2Jq
LT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7DQogICAgICAg
ICBPYmplY3QgdGhpc09iaiA9IE9iamVjdChjb25zdF9jYXN0PE9iamVjdEltcCo+KG9iai0+aW1w
KSk7DQogICAgICAgICBWYWx1ZSByZXN1bHQ7DQotICAgICAgICANCisNCiAgICAgICAgIEludGVy
cHJldGVyTG9jayBsb2NrOw0KICAgICAgICAgTlBVVEYxNiAqc2NyaXB0U3RyaW5nOw0KICAgICAg
ICAgdW5zaWduZWQgaW50IFVURjE2TGVuZ3RoOw0KICAgICAgICAgY29udmVydE5QU3RyaW5nVG9V
VEYxNiAocywgJnNjcmlwdFN0cmluZywgJlVURjE2TGVuZ3RoKTsgICAgLy8gcmVxdWlyZXMgZnJl
ZSgpIG9mIHJldHVybmVkIG1lbW9yeS4NCiAgICAgICAgIENvbXBsZXRpb24gY29tcGxldGlvbiA9
IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+ZXZhbHVhdGUoVVN0cmluZygp
LCAwLCBVU3RyaW5nKChjb25zdCBVQ2hhciAqKXNjcmlwdFN0cmluZyxVVEYxNkxlbmd0aCkpOw0K
ICAgICAgICAgQ29tcGxUeXBlIHR5cGUgPSBjb21wbGV0aW9uLmNvbXBsVHlwZSgpOw0KLSAgICAg
ICAgDQorDQogICAgICAgICBpZiAodHlwZSA9PSBOb3JtYWwpIHsNCiAgICAgICAgICAgICByZXN1
bHQgPSBjb21wbGV0aW9uLnZhbHVlKCk7DQogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc051bGwo
KSkgew0KQEAgLTIwMiwyMyArMjA1LDI0IEBAIGJvb2wgX05QTl9FdmFsdWF0ZSAoTlBQIG5wcCwg
TlBPYmplY3QgKm8NCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICByZXN1
bHQgPSBVbmRlZmluZWQoKTsNCi0gICAgICAgICAgICANCisNCiAgICAgICAgIGZyZWUgKCh2b2lk
ICopc2NyaXB0U3RyaW5nKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgY29udmVydFZhbHVlVG9O
UFZhcmlhbnQoZXhlYywgcmVzdWx0LCB2YXJpYW50KTsNCi0gICAgDQorDQogICAgICAgICByZXR1
cm4gdHJ1ZTsNCiAgICAgfQ0KICAgICByZXR1cm4gZmFsc2U7DQogfQ0KIA0KLWJvb2wgX05QTl9H
ZXRQcm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUsIE5QVmFyaWFudCAqdmFyaWFudCkNCitFWFBPUlRfQw0KK2Jvb2wgTlBOX0dldFByb3BlcnR5
IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgTlBWYXJp
YW50ICp2YXJpYW50KQ0KIHsNCiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENs
YXNzKSB7DQotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVj
dCAqKW87IA0KKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmpl
Y3QgKilvOw0KIA0KLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkNCi0JICAgIHJldHVybiBmYWxz
ZTsNCisgICAgaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpDQorICAgICAgICByZXR1cm4gZmFsc2U7
DQogDQogICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmlu
dGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsNCiANCkBAIC0yMzUsMTQgKzIzOSwxNCBAQCBib29s
IF9OUE5fR2V0UHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0DQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQotICAgICAgICANCisNCiAg
ICAgICAgIEludGVycHJldGVyTG9jayBsb2NrOw0KICAgICAgICAgVmFsdWUgcmVzdWx0Ow0KICAg
ICAgICAgaWYgKGktPmlzU3RyaW5nKQ0KICAgICAgICAgICAgIHJlc3VsdCA9IG9iai0+aW1wLT5n
ZXQgKGV4ZWMsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGktPnZhbHVlLnN0cmluZykpOw0K
ICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgIHJlc3VsdCA9IG9iai0+aW1wLT5nZXQgKGV4ZWMs
IGktPnZhbHVlLm51bWJlcik7DQotICAgICAgICANCisNCiAgICAgICAgIGlmIChyZXN1bHQuaXNO
dWxsKCkpIHsNCiAgICAgICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc051bGwodmFyaWFu
dCk7DQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KQEAgLTI2OCwxMyArMjcyLDE0IEBAIGJv
b2wgX05QTl9HZXRQcm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QNCiAgICAgcmV0dXJuIGZhbHNl
Ow0KIH0NCiANCi1ib29sIF9OUE5fU2V0UHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBO
UElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQpDQorRVhQ
T1JUX0MNCitib29sIE5QTl9TZXRQcm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUsIGNvbnN0IE5QVmFyaWFudCAqdmFyaWFudCkNCiB7DQogICAg
IGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgew0KLSAgICAgICAgSmF2YVNj
cmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyANCisgICAgICAgIEphdmFT
Y3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsNCiANCi0JaWYgKCFfaXNT
YWZlU2NyaXB0KG9iaikpDQotCSAgICByZXR1cm4gZmFsc2U7DQorICAgIGlmICghX2lzU2FmZVNj
cmlwdChvYmopKQ0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KIA0KICAgICAgICAgRXhlY1N0YXRl
ICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVj
KCk7DQogICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsNCkBAIC0yODMsNyArMjg4LDcgQEAg
Ym9vbCBfTlBOX1NldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdA0KICAgICAgICAgICAgIG9i
ai0+aW1wLT5wdXQoZXhlYywgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIoaS0+dmFsdWUuc3Ry
aW5nKSwgY29udmVydE5QVmFyaWFudFRvVmFsdWUoZXhlYywgdmFyaWFudCkpOw0KICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgIG9iai0+aW1wLT5wdXQoZXhlYywgaS0+dmFsdWUubnVtYmVyLCBj
b252ZXJ0TlBWYXJpYW50VG9WYWx1ZShleGVjLCB2YXJpYW50KSk7DQotICAgICAgICANCisNCiAg
ICAgICAgIHJldHVybiB0cnVlOw0KICAgICB9IGVsc2UgaWYgKG8tPl9jbGFzcy0+c2V0UHJvcGVy
dHkpDQogICAgICAgICByZXR1cm4gby0+X2NsYXNzLT5zZXRQcm9wZXJ0eSAobywgcHJvcGVydHlO
YW1lLCB2YXJpYW50KTsNCkBAIC0yOTEsMTMgKzI5NiwxNCBAQCBib29sIF9OUE5fU2V0UHJvcGVy
dHkgKE5QUCBucHAsIE5QT2JqZWN0DQogICAgIHJldHVybiBmYWxzZTsNCiB9DQogDQotYm9vbCBf
TlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSkNCitFWFBPUlRfQw0KK2Jvb2wgTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBw
LCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkNCiB7DQogICAgIGlmIChv
LT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgew0KLSAgICAgICAgSmF2YVNjcmlwdE9i
amVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyANCisgICAgICAgIEphdmFTY3JpcHRP
YmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsNCiANCi0JaWYgKCFfaXNTYWZlU2Ny
aXB0KG9iaikpDQotCSAgICByZXR1cm4gZmFsc2U7DQorICAgIGlmICghX2lzU2FmZVNjcmlwdChv
YmopKQ0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KIA0KICAgICAgICAgRXhlY1N0YXRlICpleGVj
ID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7DQog
DQpAQCAtMzE4LDE5ICszMjQsMjAgQEAgYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBw
LCBOUE9iag0KICAgICAgICAgICAgIG9iai0+aW1wLT5kZWxldGVQcm9wZXJ0eSAoZXhlYywgaWRl
bnRpZmllckZyb21OUElkZW50aWZpZXIoaS0+dmFsdWUuc3RyaW5nKSk7DQogICAgICAgICBlbHNl
DQogICAgICAgICAgICAgb2JqLT5pbXAtPmRlbGV0ZVByb3BlcnR5IChleGVjLCBpLT52YWx1ZS5u
dW1iZXIpOw0KLSAgICAgICAgDQorDQogICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgfQ0KICAg
ICByZXR1cm4gZmFsc2U7DQogfQ0KIA0KLWJvb2wgX05QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBO
UE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkNCitFWFBPUlRfQw0KK2Jvb2wg
TlBOX0hhc1Byb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKQ0KIHsNCiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7
DQotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87
IA0KKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilv
Ow0KIA0KLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkNCi0JICAgIHJldHVybiBmYWxzZTsNCisg
ICAgaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikpDQorICAgICAgICByZXR1cm4gZmFsc2U7DQogDQog
ICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJl
dGVyKCktPmdsb2JhbEV4ZWMoKTsNCiANCkBAIC0zMzksMjYgKzM0NiwyNyBAQCBib29sIF9OUE5f
SGFzUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgDQogDQogICAgICAgICBpZiAoaS0+aXNTdHJp
bmcpDQogICAgICAgICAgICAgcmV0dXJuIG9iai0+aW1wLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVu
dGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJpbmcpKTsNCi0gICAgICAgIA0KKw0K
ICAgICAgICAgcmV0dXJuIG9iai0+aW1wLT5oYXNQcm9wZXJ0eShleGVjLCBpLT52YWx1ZS5udW1i
ZXIpOw0KICAgICB9IGVsc2UgaWYgKG8tPl9jbGFzcy0+aGFzUHJvcGVydHkpDQogICAgICAgICBy
ZXR1cm4gby0+X2NsYXNzLT5oYXNQcm9wZXJ0eSAobywgcHJvcGVydHlOYW1lKTsNCi0gICAgDQor
DQogICAgIHJldHVybiBmYWxzZTsNCiB9DQogDQotYm9vbCBfTlBOX0hhc01ldGhvZChOUFAgbnBw
LCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpDQorRVhQT1JUX0MNCitib29s
IE5QTl9IYXNNZXRob2QoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKQ0KIHsNCiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7DQot
ICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKW87IA0K
LSAgICAgICAgDQotCWlmICghX2lzU2FmZVNjcmlwdChvYmopKQ0KLQkgICAgcmV0dXJuIGZhbHNl
Ow0KKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilv
Ow0KKw0KKyAgICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkNCisgICAgICAgIHJldHVybiBmYWxz
ZTsNCiANCiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyICppID0gKFByaXZhdGVJZGVudGlmaWVy
ICopbWV0aG9kTmFtZTsNCiAgICAgICAgIGlmICghaS0+aXNTdHJpbmcpDQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgLy8gTG9va3VwIHRoZSBm
dW5jdGlvbiBvYmplY3QuDQogICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsNCiANCkBAIC0zNjgsMjEgKzM3
NiwyMiBAQCBib29sIF9OUE5fSGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpvDQogICAgICAg
ICBpZiAoZnVuYy5pc051bGwoKSB8fCBmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7DQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgZWxzZSBpZiAoby0+X2Ns
YXNzLT5oYXNNZXRob2QpIHsNCiAgICAgICAgIHJldHVybiBvLT5fY2xhc3MtPmhhc01ldGhvZCAo
bywgbWV0aG9kTmFtZSk7DQogICAgIH0NCi0gICAgDQorDQogICAgIHJldHVybiBmYWxzZTsNCiB9
DQogDQotdm9pZCBfTlBOX1NldEV4Y2VwdGlvbiAoTlBPYmplY3QgKm8sIGNvbnN0IE5QVVRGOCAq
bWVzc2FnZSkNCitFWFBPUlRfQw0KK3ZvaWQgTlBOX1NldEV4Y2VwdGlvbiAoTlBPYmplY3QgKm8s
IGNvbnN0IE5QVVRGOCAqbWVzc2FnZSkNCiB7DQogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3Jp
cHRPYmplY3RDbGFzcykgew0KLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFT
Y3JpcHRPYmplY3QgKilvOyANCisgICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZh
U2NyaXB0T2JqZWN0ICopbzsNCiAgICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+ZXhlY3V0
aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFsRXhlYygpOw0KICAgICAgICAgSW50ZXJw
cmV0ZXJMb2NrIGxvY2s7DQogICAgICAgICBPYmplY3QgZXJyID0gRXJyb3I6OmNyZWF0ZShleGVj
LCBHZW5lcmFsRXJyb3IsIG1lc3NhZ2UpOw0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L05QX2pzb2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9O
UF9qc29iamVjdC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9OUF9qc29iamVjdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNDUsNiArNDUsNyBAQCB0eXBlZGVm
IHN0cnVjdA0KICAgICBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25D
b250ZXh0Ow0KIH0gSmF2YVNjcmlwdE9iamVjdDsNCiANCitJTVBPUlRfQw0KIE5QT2JqZWN0ICpf
TlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoTlBQIG5wcCwgS0pTOjpPYmplY3RJbXAgKmltcCwgY29u
c3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgY29u
c3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCk7DQogDQogI2lm
ZGVmIF9fY3BsdXNwbHVzDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL25wYXBpLmgJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL25wYXBpLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0xLDEwICsxLDExIEBADQorLyogLSotIE1vZGU6IEM7IHRhYi13aWR0aDogNDsgaW5k
ZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogMiAtKi0gKi8NCiAvKiAqKioqKiBC
RUdJTiBMSUNFTlNFIEJMT0NLICoqKioqDQotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xH
UEwgMi4xDQorICogVmVyc2lvbjogTlBMIDEuMS9HUEwgMi4wL0xHUEwgMi4xDQogICoNCi0gKiBU
aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24NCi0gKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgNCi0gKiB0aGUgTGljZW5zZS4g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQotICogaHR0cDovL3d3dy5t
b3ppbGxhLm9yZy9NUEwvDQorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVj
dCB0byB0aGUgTmV0c2NhcGUgUHVibGljIExpY2Vuc2UNCisgKiBWZXJzaW9uIDEuMSAodGhlICJM
aWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluDQorICogY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQNCisgKiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL05QTC8NCiAgKg0KICAqIFNvZnR3YXJl
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgYmFzaXMsDQogICogV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlDQpAQCAtMTksNiArMjAsOCBAQA0KICAqIHRo
ZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KICAqIENvbnRy
aWJ1dG9yKHMpOg0KKyAqICAgIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAwNC0yMDA2LCBOb2tp
YSBDb3Jwb3JhdGlvbg0KKyAqDQogICoNCiAgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMg
b2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZg0KICAqIGVpdGhlciB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyIG9yIGxhdGVyICh0aGUgIkdQ
TCIpLCBvcg0KQEAgLTI2LDEwMyArMjksMjAwIEBADQogICogaW4gd2hpY2ggY2FzZSB0aGUgcHJv
dmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRoZSBMR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQNCiAg
KiBvZiB0aG9zZSBhYm92ZS4gSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIgdmVyc2lv
biBvZiB0aGlzIGZpbGUgb25seQ0KICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiBlaXRoZXIgdGhlIEdQ
TCBvciB0aGUgTEdQTCwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8NCi0gKiB1c2UgeW91ciB2
ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUg
eW91cg0KKyAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgTlBMLCBpbmRpY2F0ZSB5b3VyDQogICogZGVjaXNpb24gYnkgZGVsZXRpbmcgdGhlIHBy
b3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UNCiAgKiBhbmQg
b3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3Ug
ZG8gbm90IGRlbGV0ZQ0KICAqIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkg
dXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXINCi0gKiB0aGUgdGVybXMgb2YgYW55
IG9uZSBvZiB0aGUgTVBMLCB0aGUgR1BMIG9yIHRoZSBMR1BMLg0KKyAqIHRoZSB0ZXJtcyBvZiBh
bnkgb25lIG9mIHRoZSBOUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuDQogICoNCiAgKiAqKioqKiBF
TkQgTElDRU5TRSBCTE9DSyAqKioqKiAqLw0KLSANCi0gDQotIC8qDQotICAqICBOZXRzY2FwZSBj
bGllbnQgcGx1Zy1pbiBBUEkgc3BlYw0KLSAgKi8NCi0gDQorDQorLyogTk9URVM6DQorICogTm9r
aWEgbW9kaWZpZWQgdGhpcyBmaWxlLCBieSBjaGFuZ2luZyBjZXJ0YWluIHZhcmlhYmxlcyBmb3Ig
dGhlIHB1cnBvc2Ugb2YNCisgKiBwb3J0aW5nIHRoZSBmaWxlIHRvIHRoZSBTeW1iaWFuIHBsYXRm
b3JtIG9uIE1heSAxc3QsIDIwMDQuDQorICovDQorDQorDQorLyoNCisgKiAgbnBhcGkuaCAkUmV2
aXNpb24kDQorICogIE5ldHNjYXBlIGNsaWVudCBwbHVnLWluIEFQSSBzcGVjDQorICovDQogDQog
I2lmbmRlZiBfTlBBUElfSF8NCiAjZGVmaW5lIF9OUEFQSV9IXw0KIA0KLSNpZmRlZiBJTkNMVURF
X0pBVkENCisjaWZkZWYgX19PUzJfXw0KKyNwcmFnbWEgcGFjaygxKQ0KKyNlbmRpZg0KKw0KKyNp
bmNsdWRlICJwcnR5cGVzLmgiDQorLyogQ29waWVkIGZyb20geHBfY29yZS5oICovDQorLyogcmVt
b3ZlZCAjaWZkZWYgZm9yIGhwdXggZGVmaW5lZCBpbiAvdXNyL2luY2x1ZGUvbW9kZWwuaCAqLw0K
KyNpZm5kZWYgWFBfTUFDDQorI2lmbmRlZiBfSU5UMTYNCisjZGVmaW5lIF9JTlQxNg0KKyNlbmRp
Zg0KKyNpZm5kZWYgX0lOVDMyDQorI2RlZmluZSBfSU5UMzINCisjZW5kaWYNCisjaWZuZGVmIF9V
SU5UMTYNCisjZGVmaW5lIF9VSU5UMTYNCisjZW5kaWYNCisjaWZuZGVmIF9VSU5UMzINCisjZGVm
aW5lIF9VSU5UMzINCisjZW5kaWYNCisjZW5kaWYNCisNCisvKg0KKyAqIE5PX05TUFJfMTBfU1VQ
UE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVzaW9uDQorICogb2Ygb2Jzb2xldGUvcHJvdHlwZXMuaCwg
d2hvc2UgaW50MTYsIHVpbnQxNiwNCisgKiBpbnQzMiwgYW5kIHVpbnQzMiB0eXBlZGVmcyBjb25m
bGljdCB3aXRoIHRob3NlDQorICogaW4gdGhpcyBmaWxlLg0KKyAqLw0KKyNpZm5kZWYgTk9fTlNQ
Ul8xMF9TVVBQT1JUDQorI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQNCisjZW5kaWYNCisjaWZk
ZWYgT0pJDQogI2luY2x1ZGUgImpyaS5oIiAgICAgICAgICAgICAgICAvKiBKYXZhIFJ1bnRpbWUg
SW50ZXJmYWNlICovDQotI2Vsc2UNCi0jZGVmaW5lIGpyZWYgICAgdm9pZCAqDQotI2RlZmluZSBK
UklFbnYgIHZvaWQNCiAjZW5kaWYNCiANCisjaWYgZGVmaW5lZCAoX19PUzJfXyApIHx8IGRlZmlu
ZWQgKE9TMikNCisjIGlmbmRlZiBYUF9PUzINCisjICAgZGVmaW5lIFhQX09TMiAxDQorIyBlbmRp
ZiAvKiBYUF9PUzIgKi8NCisjZW5kaWYgLyogX19PUzJfXyAqLw0KKw0KICNpZmRlZiBfV0lORE9X
Uw0KLSMgICAgaWZuZGVmIFhQX1dJTg0KLSMgICAgICAgIGRlZmluZSBYUF9XSU4gMQ0KLSMgICAg
ZW5kaWYgLyogWFBfV0lOICovDQorIyBpbmNsdWRlIDx3aW5kZWYuaD4NCisjIGlmbmRlZiBYUF9X
SU4NCisjICAgZGVmaW5lIFhQX1dJTiAxDQorIyBlbmRpZiAvKiBYUF9XSU4gKi8NCiAjZW5kaWYg
LyogX1dJTkRPV1MgKi8NCiANCiAjaWZkZWYgX19NV0VSS1NfXw0KLSMgICAgZGVmaW5lIF9kZWNs
c3BlYyBfX2RlY2xzcGVjDQotIyAgICBpZmRlZiBtYWNpbnRvc2gNCi0jICAgICAgICBpZm5kZWYg
WFBfTUFDDQotIyAgICAgICAgICAgIGRlZmluZSBYUF9NQUMgMQ0KLSMgICAgICAgIGVuZGlmIC8q
IFhQX01BQyAqLw0KLSMgICAgZW5kaWYgLyogbWFjaW50b3NoICovDQotIyAgICBpZmRlZiBfX0lO
VEVMX18NCi0jICAgICAgICB1bmRlZiBOVUxMDQotIyAgICAgICAgaWZuZGVmIFhQX1dJTg0KLSMg
ICAgICAgICAgICBkZWZpbmUgWFBfV0lOIDENCi0jICAgICAgICBlbmRpZiAvKiBfX0lOVEVMX18g
Ki8NCi0jICAgIGVuZGlmIC8qIFhQX1BDICovDQorIyBkZWZpbmUgX2RlY2xzcGVjIF9fZGVjbHNw
ZWMNCisjIGlmZGVmIG1hY2ludG9zaA0KKyMgICBpZm5kZWYgWFBfTUFDDQorIyAgICAgZGVmaW5l
IFhQX01BQyAxDQorIyAgIGVuZGlmIC8qIFhQX01BQyAqLw0KKyMgZW5kaWYgLyogbWFjaW50b3No
ICovDQorIyBpZmRlZiBfX0lOVEVMX18NCisjICAgdW5kZWYgTlVMTA0KKyMgICBpZm5kZWYgWFBf
V0lODQorIyAgICAgZGVmaW5lIFhQX1dJTiAxDQorIyAgIGVuZGlmIC8qIFhQX1dJTiAqLw0KKyMg
ZW5kaWYgLyogX19JTlRFTF9fICovDQogI2VuZGlmIC8qIF9fTVdFUktTX18gKi8NCiANCi0jaWYg
ZGVmaW5lZChfX0FQUExFX0NDX18pICYmICFkZWZpbmVkKF9fTUFDT1NfQ0xBU1NJQ19fKQ0KLSMg
ICBkZWZpbmUgWFBfTUFDT1NYDQotI2VuZGlmDQotDQotI2lmZGVmIFhQX01BQw0KLSAgICAjaW5j
bHVkZSA8UXVpY2tkcmF3Lmg+DQotICAgICNpbmNsdWRlIDxFdmVudHMuaD4NCisjaWZuZGVmIF9f
U1lNQklBTjMyX18NCisjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NYKQ0K
KyAgI2luY2x1ZGUgPFF1aWNrZHJhdy5oPg0KKyAgI2luY2x1ZGUgPEV2ZW50cy5oPg0KICNlbmRp
Zg0KIA0KLSNpZmRlZiBYUF9NQUNPU1gNCi0gICAgI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4N
Ci0gICAgI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5o
Pg0KKyNpZiBkZWZpbmVkKFhQX1VOSVgpDQorIyBpbmNsdWRlIDxzdGRpby5oPg0KKyMgaWYgZGVm
aW5lZChNT1pfWDExKQ0KKyMgICBpbmNsdWRlIDxYMTEvWGxpYi5oPg0KKyMgICBpbmNsdWRlIDxY
MTEvWHV0aWwuaD4NCisjIGVuZGlmDQogI2VuZGlmDQotDQotI2lmZGVmIFhQX1VOSVgNCi0gICAg
I2luY2x1ZGUgPFgxMS9YbGliLmg+DQotICAgICNpbmNsdWRlIDxYMTEvWHV0aWwuaD4NCisjZWxz
ZQ0KK2NsYXNzIFREZXNDODsNCitjbGFzcyBURGVzQzE2Ow0KK2NsYXNzIEhCdWZDMTY7DQorY2xh
c3MgQ0Rlc0NBcnJheTsNCisjaW5jbHVkZSA8ZTMyZGVmLmg+DQogI2VuZGlmDQogDQotDQogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8NCi0vKiAgICAgICAgICAgICBQbHVnaW4gVmVyc2lvbiBDb25zdGFudHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAg
ICAgICAgUGx1Z2luIFZlcnNpb24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovDQog
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8NCiANCiAjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMA0KLSNkZWZp
bmUgTlBfVkVSU0lPTl9NSU5PUiAxNA0KKyNkZWZpbmUgTlBfVkVSU0lPTl9NSU5PUiAxMw0KKw0K
Kw0KKy8qIFRoZSBPUy8yIHZlcnNpb24gb2YgTmV0c2NhcGUgdXNlcyBSQ19EQVRBIHRvIGRlZmlu
ZSB0aGUNCisgICBtaW1lIHR5cGVzLCBmaWxlIGV4dGVudGlvbnMsIGV0YyB0aGF0IGFyZSByZXF1
aXJlZC4NCisgICBVc2UgYSB2ZXJ0aWNhbCBiYXIgdG8gc2VwYXJhdGUgdHlwZXMsIGVuZCB0eXBl
cyB3aXRoIFwwLg0KKyAgIEZpbGVWZXJzaW9uIGFuZCBQcm9kdWN0VmVyc2lvbiBhcmUgMzJiaXQg
aW50cywgYWxsIG90aGVyDQorICAgZW50cmllcyBhcmUgc3RyaW5ncyB0aGUgTVVTVCBiZSB0ZXJt
aW5hdGVkIHd3aXRoIGEgXDAuDQorDQorQU4gRVhBTVBMRToNCisNCitSQ0RBVEEgTlBfSU5GT19Q
cm9kdWN0VmVyc2lvbiB7IDEsMCwwLDEsfQ0KKw0KK1JDREFUQSBOUF9JTkZPX01JTUVUeXBlICAg
IHsgInZpZGVvL3gtdmlkZW98IiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aWRl
by94LWZsaWNrXDAiIH0NCitSQ0RBVEEgTlBfSU5GT19GaWxlRXh0ZW50cyB7ICJhdml8IiwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGNcMCIgfQ0KK1JDREFUQSBOUF9JTkZPX0Zp
bGVPcGVuTmFtZXsgIk1NT1MyIHZpZGVvIHBsYXllcigqLmF2aSl8IiwNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJNTU9TMiBGbGMvRmxpIHBsYXllcigqLmZsYylcMCIgfQ0KKw0KK1JD
REFUQSBOUF9JTkZPX0ZpbGVWZXJzaW9uICAgICAgIHsgMSwwLDAsMSB9DQorUkNEQVRBIE5QX0lO
Rk9fQ29tcGFueU5hbWUgICAgICAgeyAiTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnNcMCIgfQ0KK1JD
REFUQSBOUF9JTkZPX0ZpbGVEZXNjcmlwdGlvbiAgIHsgIk5QQVZJMzIgRXh0ZW5zaW9uIERMTFww
Ig0KK1JDREFUQSBOUF9JTkZPX0ludGVybmFsTmFtZSAgICAgIHsgIk5QQVZJMzJcMCIgKQ0KK1JD
REFUQSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgIHsgIkNvcHlyaWdodCBOZXRzY2FwZSBDb21t
dW5pY2F0aW9ucyBcMjUxIDE5OTZcMCINCitSQ0RBVEEgTlBfSU5GT19PcmlnaW5hbEZpbGVuYW1l
ICB7ICJOVkFQSTMyLkRMTCIgfQ0KK1JDREFUQSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAgIHsg
Ik5QQVZJMzIgRHluYW1pYyBMaW5rIExpYnJhcnlcMCIgfQ0KKw0KKyovDQorDQorDQorLyogUkNf
REFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gcmVxdWlyZWQgKi8NCisjZGVmaW5lIE5QX0lO
Rk9fUHJvZHVjdFZlcnNpb24gICAgICAxDQorI2RlZmluZSBOUF9JTkZPX01JTUVUeXBlICAgICAg
ICAgICAgMg0KKyNkZWZpbmUgTlBfSU5GT19GaWxlT3Blbk5hbWUgICAgICAgIDMNCisjZGVmaW5l
IE5QX0lORk9fRmlsZUV4dGVudHMgICAgICAgICA0DQorDQorLyogUkNfREFUQSB0eXBlcyBmb3Ig
dmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLw0KKyNkZWZpbmUgTlBfSU5GT19GaWxlRGVz
Y3JpcHRpb24gICAgIDUNCisjZGVmaW5lIE5QX0lORk9fUHJvZHVjdE5hbWUgICAgICAgICA2DQor
DQorLyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gb3B0aW9uYWwgKi8NCisjZGVm
aW5lIE5QX0lORk9fQ29tcGFueU5hbWUgICAgICAgICA3DQorI2RlZmluZSBOUF9JTkZPX0ZpbGVW
ZXJzaW9uICAgICAgICAgOA0KKyNkZWZpbmUgTlBfSU5GT19JbnRlcm5hbE5hbWUgICAgICAgIDkN
CisjZGVmaW5lIE5QX0lORk9fTGVnYWxDb3B5cmlnaHQgICAgICAxMA0KKyNkZWZpbmUgTlBfSU5G
T19PcmlnaW5hbEZpbGVuYW1lICAgIDExDQorDQorI2lmbmRlZiBSQ19JTlZPS0VEDQogDQogDQog
DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKiAgICAgICAgICAgICBEZWZpbml0aW9uIG9mIEJhc2lj
IFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAg
ICAgICAgICAgICBEZWZpbml0aW9uIG9mIEJhc2ljIFR5cGVzICAgICAgICAgICAgICAgICAgICAg
ICovDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiAjaWZuZGVmIF9VSU5UMTYNCiB0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IHVpbnQxNjsNCiAjZW5kaWYNCisNCiAjaWZuZGVmIF9VSU5UMzINCi0jaWYg
ZGVmaW5lZChfX2FscGhhKQ0KKyMgICAgaWYgZGVmaW5lZChfX2FscGhhKQ0KIHR5cGVkZWYgdW5z
aWduZWQgaW50IHVpbnQzMjsNCi0jZWxzZSAvKiBfX2FscGhhICovDQorIyAgICBlbHNlICAvKiBf
X2FscGhhICovDQogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnQzMjsNCi0jZW5kaWYgLyogX19h
bHBoYSAqLw0KKyMgICAgZW5kaWYgLyogX19hbHBoYSAqLw0KICNlbmRpZg0KKw0KKy8qDQorICog
QUlYIGRlZmluZXMgdGhlc2UgaW4gc3lzL2ludHR5cGVzLmggaW5jbHVkZWQgZnJvbSBzeXMvdHlw
ZXMuaA0KKyAqLw0KKyNpZm5kZWYgQUlYDQogI2lmbmRlZiBfSU5UMTYNCiB0eXBlZGVmIHNob3J0
IGludDE2Ow0KICNlbmRpZg0KKw0KICNpZm5kZWYgX0lOVDMyDQotI2lmIGRlZmluZWQoX19hbHBo
YSkNCisjICAgIGlmIGRlZmluZWQoX19hbHBoYSkNCiB0eXBlZGVmIGludCBpbnQzMjsNCi0jZWxz
ZSAvKiBfX2FscGhhICovDQorIyAgICBlbHNlICAvKiBfX2FscGhhICovDQogdHlwZWRlZiBsb25n
IGludDMyOw0KLSNlbmRpZiAvKiBfX2FscGhhICovDQorIyAgICBlbmRpZiAvKiBfX2FscGhhICov
DQorI2VuZGlmDQogI2VuZGlmDQogDQogI2lmbmRlZiBGQUxTRQ0KQEAgLTEzNSwxNSArMjM1LDE5
IEBAIHR5cGVkZWYgbG9uZyBpbnQzMjsNCiAjZGVmaW5lIE5VTEwgKDBMKQ0KICNlbmRpZg0KIA0K
LXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBOUEJvb2w7DQotdHlwZWRlZiBpbnQxNiAgICAgICAg
ICAgIE5QRXJyb3I7DQotdHlwZWRlZiBpbnQxNiAgICAgICAgICAgIE5QUmVhc29uOw0KLXR5cGVk
ZWYgY2hhciogICAgICAgICAgICBOUE1JTUVUeXBlOw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBO
UEJvb2w7DQordHlwZWRlZiBpbnQxNiAgICAgTlBFcnJvcjsNCit0eXBlZGVmIGludDE2ICAgICBO
UFJlYXNvbjsNCisjaWZuZGVmIF9fU1lNQklBTjMyX18NCit0eXBlZGVmIGNoYXIqICAgICBOUE1J
TUVUeXBlOw0KKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLw0KK3R5cGVkZWYgY29uc3QgVERlc0M4
JiBOUE1JTUVUeXBlOw0KKyNlbmRpZg0KIA0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyog
ICAgICAgICAgICAgU3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgICAgICAgICAgICAgKi8NCisv
KiAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgICAgICAg
ICAgICAgICAgICAgICAqLw0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogI2lmZGVmIFhQX01BQw0K
QEAgLTE1NSw0NyArMjU5LDU2IEBAIHR5cGVkZWYgY2hhciogICAgICAgICAgICBOUE1JTUVUeXBl
Ow0KICAqLw0KIHR5cGVkZWYgc3RydWN0IF9OUFANCiB7DQotICAgIHZvaWQqICAgIHBkYXRhOyAg
ICAgICAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRhICovDQotICAgIHZvaWQqICAgIG5kYXRh
OyAgICAgICAgICAgIC8qIG5ldHNjYXBlIHByaXZhdGUgZGF0YSAqLw0KKyAgdm9pZCogcGRhdGE7
ICAgICAgLyogcGx1Zy1pbiBwcml2YXRlIGRhdGEgKi8NCisgIHZvaWQqIG5kYXRhOyAgICAgIC8q
IG5ldHNjYXBlIHByaXZhdGUgZGF0YSAqLw0KIH0gTlBQX3Q7DQogDQotdHlwZWRlZiBOUFBfdCog
ICAgTlBQOw0KK3R5cGVkZWYgTlBQX3QqICBOUFA7DQogDQogDQogdHlwZWRlZiBzdHJ1Y3QgX05Q
U3RyZWFtDQogew0KLSAgICB2b2lkKiAgICAgICAgcGRhdGE7ICAgICAgICAvKiBwbHVnLWluIHBy
aXZhdGUgZGF0YSAqLw0KLSAgICB2b2lkKiAgICAgICAgbmRhdGE7ICAgICAgICAvKiBuZXRzY2Fw
ZSBwcml2YXRlIGRhdGEgKi8NCi0gICAgY29uc3QgY2hhciogIHVybDsNCi0gICAgdWludDMyICAg
ICAgIGVuZDsNCi0gICAgdWludDMyICAgICAgIGxhc3Rtb2RpZmllZDsNCi0gICAgdm9pZCogICAg
ICAgIG5vdGlmeURhdGE7DQorICB2b2lkKiAgcGRhdGE7IC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRh
ICovDQorICB2b2lkKiAgbmRhdGE7IC8qIG5ldHNjYXBlIHByaXZhdGUgZGF0YSAqLw0KKyNpZm5k
ZWYgX19TWU1CSUFOMzJfXw0KKyAgY29uc3QgIGNoYXIqIHVybDsNCisjZWxzZS8qIF9fU1lNQklB
TjMyX18gKi8NCisgIEhCdWZDMTYqICB1cmw7DQorI2VuZGlmDQorICB1aW50MzIgZW5kOw0KKyAg
dWludDMyIGxhc3Rtb2RpZmllZDsNCisgIHZvaWQqICBub3RpZnlEYXRhOw0KIH0gTlBTdHJlYW07
DQogDQogDQogdHlwZWRlZiBzdHJ1Y3QgX05QQnl0ZVJhbmdlDQogew0KLSAgICBpbnQzMiAgICAg
IG9mZnNldDsgICAgICAgICAvKiBuZWdhdGl2ZSBvZmZzZXQgbWVhbnMgZnJvbSB0aGUgZW5kICov
DQotICAgIHVpbnQzMiAgICAgbGVuZ3RoOw0KLSAgICBzdHJ1Y3QgX05QQnl0ZVJhbmdlKiBuZXh0
Ow0KKyAgaW50MzIgIG9mZnNldDsgLyogbmVnYXRpdmUgb2Zmc2V0IG1lYW5zIGZyb20gdGhlIGVu
ZCAqLw0KKyAgdWludDMyIGxlbmd0aDsNCisgIHN0cnVjdCBfTlBCeXRlUmFuZ2UqIG5leHQ7DQog
fSBOUEJ5dGVSYW5nZTsNCiANCiANCiB0eXBlZGVmIHN0cnVjdCBfTlBTYXZlZERhdGENCiB7DQot
ICAgIGludDMyICAgIGxlbjsNCi0gICAgdm9pZCogICAgYnVmOw0KKyAgaW50MzIgbGVuOw0KKyAg
dm9pZCogYnVmOw0KIH0gTlBTYXZlZERhdGE7DQogDQogDQogdHlwZWRlZiBzdHJ1Y3QgX05QUmVj
dA0KIHsNCi0gICAgdWludDE2ICAgIHRvcDsNCi0gICAgdWludDE2ICAgIGxlZnQ7DQotICAgIHVp
bnQxNiAgICBib3R0b207DQotICAgIHVpbnQxNiAgICByaWdodDsNCisgIHVpbnQxNiB0b3A7DQor
ICB1aW50MTYgbGVmdDsNCisgIHVpbnQxNiBib3R0b207DQorICB1aW50MTYgcmlnaHQ7DQogfSBO
UFJlY3Q7DQogDQordHlwZWRlZiBzdHJ1Y3QgX05QU2l6ZQ0KK3sNCisgIGludDMyIHdpZHRoOw0K
KyAgaW50MzIgaGVpZ2h0Ow0KK30gTlBTaXplOw0KIA0KICNpZmRlZiBYUF9VTklYDQogLyoNCkBA
IC0yMDgsNDggKzMyMSw1MSBAQCB0eXBlZGVmIHN0cnVjdCBfTlBSZWN0DQogICogVGhlc2UgYXJl
IHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIHBsYXRmb3JtIHNwZWNpZmljIGluZm9ybWF0aW9uLg0K
ICAqLw0KIGVudW0gew0KLSAgICBOUF9TRVRXSU5ET1cgPSAxLA0KLSAgICBOUF9QUklOVA0KKyAg
TlBfU0VUV0lORE9XID0gMSwNCisgIE5QX1BSSU5UDQogfTsNCiANCiB0eXBlZGVmIHN0cnVjdA0K
IHsNCi0gICAgaW50MzIgICAgICAgIHR5cGU7DQorICBpbnQzMiB0eXBlOw0KIH0gTlBBbnlDYWxs
YmFja1N0cnVjdDsNCiANCiB0eXBlZGVmIHN0cnVjdA0KIHsNCi0gICAgaW50MzIgICAgICAgICAg
IHR5cGU7DQotICAgIERpc3BsYXkqICAgICAgICBkaXNwbGF5Ow0KLSAgICBWaXN1YWwqICAgICAg
ICAgdmlzdWFsOw0KLSAgICBDb2xvcm1hcCAgICAgICAgY29sb3JtYXA7DQotICAgIHVuc2lnbmVk
IGludCAgICBkZXB0aDsNCisgIGludDMyICAgICAgICB0eXBlOw0KKyNpZmRlZiBNT1pfWDExDQor
ICBEaXNwbGF5KiAgICAgZGlzcGxheTsNCisgIFZpc3VhbCogICAgICB2aXN1YWw7DQorICBDb2xv
cm1hcCAgICAgY29sb3JtYXA7DQorICB1bnNpZ25lZCBpbnQgZGVwdGg7DQorI2VuZGlmDQogfSBO
UFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Ow0KIA0KIHR5cGVkZWYgc3RydWN0DQogew0KLSAgICBp
bnQzMiAgICAgICAgICAgIHR5cGU7DQotICAgIEZJTEUqICAgICAgICAgICAgZnA7DQorICBpbnQz
MiB0eXBlOw0KKyAgRklMRSogZnA7DQogfSBOUFByaW50Q2FsbGJhY2tTdHJ1Y3Q7DQogDQogI2Vu
ZGlmIC8qIFhQX1VOSVggKi8NCiANCisNCiAvKg0KLSAqICAgVGhlIGZvbGxvd2luZyBtYXNrcyBh
cmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0byBOUE5WIGFuZCANCi0gKiAgIE5QUFYg
c2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5l
d2VyIA0KLSAqICAgY29tcGlsZXJzIG9uIHNvbWUgcGxhdGZvcm1zIG1heSBnZW5lcmF0ZSB2dGFi
bGVzIHRoYXQgYXJlIG5vdCANCi0gKiAgIGNvbXBhdGlibGUgd2l0aCBvbGRlciBjb21waWxlcnMu
IFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBmcm9tIA0KLSAqICAgbm90IHVuZGVyc3RhbmRpbmcg
YSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZSANCisgKiAgIFRoZSBm
b2xsb3dpbmcgbWFza3MgYXJlIGFwcGxpZWQgb24gY2VydGFpbiBwbGF0Zm9ybXMgdG8gTlBOViBh
bmQNCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09N
IGludGVyZmFjZXMuIE5ld2VyDQorICogICBjb21waWxlcnMgb24gc29tZSBwbGF0Zm9ybXMgbWF5
IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90DQorICogICBjb21wYXRpYmxlIHdpdGggb2xk
ZXIgY29tcGlsZXJzLiBUbyBwcmV2ZW50IG9sZGVyIHBsdWdpbnMgZnJvbQ0KKyAqICAgbm90IHVu
ZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZQ0K
ICAqICAgdmFsdWVzIG9mIHRob3NlIHNlbGVjdG9ycyBvbiB0aG9zZSBwbGF0Zm9ybXMuIFRvIHJl
bWFpbiBiYWNrd2FyZHMNCi0gKiAgIGNvbXBhdGlibGUgd2l0aCBkaWZmZXJlbmV0IHZlcnNpb25z
IG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNhbiANCisgKiAgIGNvbXBhdGlibGUgd2l0aCBkaWZm
ZXJlbmV0IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNhbg0KICAqICAgdXNlIHRo
ZXNlIG1hc2tzIHRvIGR5bmFtaWNhbGx5IGRldGVybWluZSBhbmQgdXNlIHRoZSBjb3JyZWN0IEMr
Kw0KLSAqICAgQUJJIHRoYXQgdGhlIGJyb3dzZXIgaXMgZXhwZWN0aW5nLiBUaGlzIGRvZXMgbm90
IGFwcGx5IHRvIFdpbmRvd3MgDQorICogICBBQkkgdGhhdCB0aGUgYnJvd3NlciBpcyBleHBlY3Rp
bmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93cw0KICAqICAgYXMgTWljcm9zb2Z0J3Mg
Q09NIEFCSSB3aWxsIGxpa2VseSBub3QgY2hhbmdlLg0KICAqLw0KIA0KICNkZWZpbmUgTlBfQUJJ
X0dDQzNfTUFTSyAgMHgxMDAwMDAwMA0KIC8qDQotICogICBnY2MgMy54IGdlbmVyYXRlZCB2dGFi
bGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGggDQorICogICBnY2MgMy54
IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgN
CiAgKiAgIHByZXZpb3VzIGNvbXBpbGVycy4NCiAgKi8NCiAjaWYgKGRlZmluZWQgKFhQX1VOSVgp
ICYmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSAzKSkNCkBAIC0yNTgsMTMgKzM3
NCwxNCBAQCB0eXBlZGVmIHN0cnVjdA0KICNkZWZpbmUgX05QX0FCSV9NSVhJTl9GT1JfR0NDMyAw
DQogI2VuZGlmDQogDQorDQogI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwDQog
LyoNCiAgKiAgIE9uIE9TWCwgdGhlIE1hY2gtTyBleGVjdXRhYmxlIGZvcm1hdCBpcyBzaWduaWZp
Y2FudGx5DQogICogICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRvIGhhdmluZyBh
IGRpZmZlcmVudA0KICAqICAgQysrIEFCSSwgaXQgYWxzbyBoYXMgaGFzIGRpZmZlcmVudCBDIGNh
bGxpbmcgY29udmVudGlvbi4NCiAgKiAgIFlvdSBtdXN0IHVzZSBnbHVlIGNvZGUgd2hlbiBjYWxs
aW5nIGJldHdlZW4gQ0ZNIGFuZA0KLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiANCisgKiAgIE1h
Y2gtTyBDIGZ1bmN0aW9ucy4NCiAgKi8NCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JUX01BQ19NQUNI
TykpDQogI2RlZmluZSBfTlBfQUJJX01JWElOX0ZPUl9NQUNITyBOUF9BQklfTUFDSE9fTUFTSw0K
QEAgLTI3OSw1MCArMzk2LDQ4IEBAIHR5cGVkZWYgc3RydWN0DQogICogTGlzdCBvZiB2YXJpYWJs
ZSBuYW1lcyBmb3Igd2hpY2ggTlBQX0dldFZhbHVlIHNoYWxsIGJlIGltcGxlbWVudGVkDQogICov
DQogdHlwZWRlZiBlbnVtIHsNCi0gICAgTlBQVnBsdWdpbk5hbWVTdHJpbmcgPSAxLA0KLSAgICBO
UFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsDQotICAgIE5QUFZwbHVnaW5XaW5kb3dCb29sLA0K
LSAgICBOUFBWcGx1Z2luVHJhbnNwYXJlbnRCb29sLA0KLQ0KLSAgICBOUFBWamF2YUNsYXNzLCAg
ICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQotICAgIE5QUFZw
bHVnaW5XaW5kb3dTaXplLCAgICAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8N
Ci0gICAgTlBQVnBsdWdpblRpbWVySW50ZXJ2YWwsICAgICAgLyogTm90IGltcGxlbWVudGVkIGlu
IFdlYktpdCAqLw0KLQ0KLSAgICBOUFBWcGx1Z2luU2NyaXB0YWJsZUluc3RhbmNlID0gKDEwIHwg
TlBfQUJJX01BU0spLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQotICAgIE5QUFZw
bHVnaW5TY3JpcHRhYmxlSUlEID0gMTEsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8N
Ci0NCi0gICAgLyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBz
dGFydGluZyB3aXRoIDAuOS45ICovDQotICAgIE5QUFZqYXZhc2NyaXB0UHVzaENhbGxlckJvb2wg
PSAxMiwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCi0gICAgTlBQVnBsdWdpbktl
ZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0K
LSAgICBOUFBWcGx1Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3QgaW1wbGVtZW50
ZWQgaW4gV2ViS2l0ICovDQotDQorICBOUFBWcGx1Z2luTmFtZVN0cmluZyA9IDEsDQorICBOUFBW
cGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsDQorICBOUFBWcGx1Z2luV2luZG93Qm9vbCwNCisgIE5Q
UFZwbHVnaW5UcmFuc3BhcmVudEJvb2wsDQorICBOUFBWamF2YUNsYXNzLCAgICAgICAgICAgICAg
ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gTW96aWxsYSAxLjAgKi8NCisgIE5QUFZwbHVnaW5XaW5k
b3dTaXplLA0KKyAgTlBQVnBsdWdpblRpbWVySW50ZXJ2YWwsDQorDQorICBOUFBWcGx1Z2luU2Ny
aXB0YWJsZUluc3RhbmNlID0gKDEwIHwgTlBfQUJJX01BU0spLA0KKyAgTlBQVnBsdWdpblNjcmlw
dGFibGVJSUQgPSAxMSwNCisNCisgIC8qIDEyIGFuZCBvdmVyIGFyZSBhdmFpbGFibGUgb24gTW96
aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuOSAqLw0KKyAgTlBQVmphdmFzY3JpcHRQdXNo
Q2FsbGVyQm9vbCA9IDEyLA0KKyAgTlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywg
ICAvKiBhdmFpbGFibGUgaW4gTW96aWxsYSAxLjAgKi8NCisgIE5QUFZwbHVnaW5OZWVkc1hFbWJl
ZCAgICAgICAgID0gMTQsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCiAgICAgLyog
R2V0IHRoZSBOUE9iamVjdCBmb3Igc2NyaXB0aW5nIHRoZSBwbHVnaW4uICovDQotICAgIE5QUFZw
bHVnaW5TY3JpcHRhYmxlTlBPYmplY3QgID0gMTUNCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QgID0gMTUNCiB9IE5QUFZhcmlhYmxlOw0KIA0KIC8qDQogICogTGlzdCBvZiB2YXJpYWJs
ZSBuYW1lcyBmb3Igd2hpY2ggTlBOX0dldFZhbHVlIGlzIGltcGxlbWVudGVkIGJ5IE1vemlsbGEN
CiAgKi8NCiB0eXBlZGVmIGVudW0gew0KLSAgICBOUE5WeERpc3BsYXkgPSAxLA0KLSAgICBOUE5W
eHRBcHBDb250ZXh0LA0KLSAgICBOUE5WbmV0c2NhcGVXaW5kb3csDQotICAgIE5QTlZqYXZhc2Ny
aXB0RW5hYmxlZEJvb2wsDQotICAgIE5QTlZhc2RFbmFibGVkQm9vbCwNCi0gICAgTlBOVmlzT2Zm
bGluZUJvb2wsDQotDQotICAgIC8qIDEwIGFuZCBvdmVyIGFyZSBhdmFpbGFibGUgb24gTW96aWxs
YSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuNCAqLw0KLSAgICBOUE5Wc2VydmljZU1hbmFnZXIg
PSAoMTAgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQot
ICAgIE5QTlZET01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8NCi0gICAgTlBOVkRPTVdpbmRvdyAgICAgID0gKDEyIHwgTlBf
QUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0KLSAgICBOUE5WVG9v
bGtpdCAgICAgICAgPSAoMTMgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4g
V2ViS2l0ICovDQotICAgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAg
IC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisgIE5QTlZ4RGlzcGxheSA9IDEsDQor
ICBOUE5WeHRBcHBDb250ZXh0LA0KKyAgTlBOVm5ldHNjYXBlV2luZG93LA0KKyAgTlBOVmphdmFz
Y3JpcHRFbmFibGVkQm9vbCwNCisgIE5QTlZhc2RFbmFibGVkQm9vbCwNCisgIE5QTlZpc09mZmxp
bmVCb29sLA0KKw0KKyAgLyogMTAgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1
aWxkcyBzdGFydGluZyB3aXRoIDAuOS40ICovDQorICBOUE5Wc2VydmljZU1hbmFnZXIgPSAoMTAg
fCBOUF9BQklfTUFTSyksDQorICBOUE5WRE9NRWxlbWVudCAgICAgPSAoMTEgfCBOUF9BQklfTUFT
SyksICAgLyogYXZhaWxhYmxlIGluIE1vemlsbGEgMS4yICovDQorICBOUE5WRE9NV2luZG93ICAg
ICAgPSAoMTIgfCBOUF9BQklfTUFTSyksDQorICBOUE5WVG9vbGtpdCAgICAgICAgPSAoMTMgfCBO
UF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQorICBOUE5WU3Vw
cG9ydHNYRW1iZWRCb29sID0gMTQsICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4g
V2ViS2l0ICovDQogDQotICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJy
b3dzZXIgd2luZG93LiAqLw0KLSAgICBOUE5WV2luZG93TlBPYmplY3QgPSAxNSwNCisgIC8qIEdl
dCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLw0KKyAgTlBO
VldpbmRvd05QT2JqZWN0ID0gMTUsDQogDQotICAgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBl
ciBmb3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovDQotICAgIE5QTlZQbHVnaW5FbGVtZW50
TlBPYmplY3QgICAgICAgICAgICAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8N
CisgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1l
bnQuICovDQorICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ICAgICAgICAgICAgICAgICAvKiBO
b3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovDQogfSBOUE5WYXJpYWJsZTsNCiANCiAvKg0KQEAg
LTMzMCw3MSArNDQ1LDc4IEBAIHR5cGVkZWYgZW51bSB7DQogICogcmV0dXJuZWQgaW4gdGhlIHdp
bmRvdyBmaWVsZC4NCiAgKi8NCiB0eXBlZGVmIGVudW0gew0KLSAgICBOUFdpbmRvd1R5cGVXaW5k
b3cgPSAxLA0KLSAgICBOUFdpbmRvd1R5cGVEcmF3YWJsZQ0KKyAgTlBXaW5kb3dUeXBlV2luZG93
ID0gMSwNCisgIE5QV2luZG93VHlwZURyYXdhYmxlDQogfSBOUFdpbmRvd1R5cGU7DQogDQogdHlw
ZWRlZiBzdHJ1Y3QgX05QV2luZG93DQogew0KLSAgICB2b2lkKiAgICB3aW5kb3c7ICAgICAvKiBQ
bGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlICovDQotICAgIGludDMyICAgIHg7ICAgICAg
ICAgICAgLyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJlbGF0aXZlICovDQotICAgIGlu
dDMyICAgIHk7ICAgICAgICAgICAgLyogICAgdG8gYSBuZXRzY2FwZSBwYWdlLiAgICAgICAgICAg
ICAgICAgICAgKi8NCi0gICAgdWludDMyICAgIHdpZHRoOyAgICAgICAgLyogTWF4aW11bSB3aW5k
b3cgc2l6ZSAqLw0KLSAgICB1aW50MzIgICAgaGVpZ2h0Ow0KLSAgICBOUFJlY3QgICAgY2xpcFJl
Y3Q7ICAgIC8qIENsaXBwaW5nIHJlY3RhbmdsZSBpbiBwb3J0IGNvb3JkaW5hdGVzICovDQotICAg
ICAgICAgICAgICAgICAgICAgICAgLyogVXNlZCBieSBNQUMgb25seS4gICAgICAgICAgICAgICov
DQotI2lmZGVmIFhQX1VOSVgNCi0gICAgdm9pZCAqICAgIHdzX2luZm87ICAgIC8qIFBsYXRmb3Jt
LWRlcGVuZGVudCBhZGRpdG9uYWwgZGF0YSAqLw0KKyAgdm9pZCogd2luZG93OyAgLyogUGxhdGZv
cm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSAqLw0KKyAgICAgICAgICAgICAgICAgLyogT1MvMjog
eCAtIFBvc2l0aW9uIG9mIGJvdHRvbSBsZWZ0IGNvcm5lciAgKi8NCisgICAgICAgICAgICAgICAg
IC8qIE9TLzI6IHkgLSByZWxhdGl2ZSB0byB2aXNpYmxlIG5ldHNjYXBlIHdpbmRvdyAqLw0KKyAg
aW50MzIgeDsgICAgICAgLyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJlbGF0aXZlICov
DQorICBpbnQzMiB5OyAgICAgICAvKiB0byBhIG5ldHNjYXBlIHBhZ2UuICAgICAgICAgKi8NCisg
IHVpbnQzMiB3aWR0aDsgIC8qIE1heGltdW0gd2luZG93IHNpemUgKi8NCisgIHVpbnQzMiBoZWln
aHQ7DQorICBOUFJlY3QgY2xpcFJlY3Q7IC8qIENsaXBwaW5nIHJlY3RhbmdsZSBpbiBwb3J0IGNv
b3JkaW5hdGVzICovDQorICAgICAgICAgICAgICAgICAgIC8qIFVzZWQgYnkgTUFDIG9ubHkuICAg
ICAgICovDQorI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgIWRlZmluZWQoWFBfTUFDT1NYKQ0KKyAg
dm9pZCAqIHdzX2luZm87IC8qIFBsYXRmb3JtLWRlcGVuZGVudCBhZGRpdG9uYWwgZGF0YSAqLw0K
ICNlbmRpZiAvKiBYUF9VTklYICovDQotICAgIE5QV2luZG93VHlwZSB0eXBlOyAgICAvKiBJcyB0
aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovDQorICBOUFdpbmRvd1R5cGUgdHlwZTsgLyog
SXMgdGhpcyBhIHdpbmRvdyBvciBhIGRyYXdhYmxlPyAqLw0KIH0gTlBXaW5kb3c7DQogDQogDQog
dHlwZWRlZiBzdHJ1Y3QgX05QRnVsbFByaW50DQogew0KLSAgICBOUEJvb2wgICAgcGx1Z2luUHJp
bnRlZDsgICAgLyogU2V0IFRSVUUgaWYgcGx1Z2luIGhhbmRsZWQgZnVsbHNjcmVlbiAqLw0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICBwcmludGluZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8NCi0gICAgTlBCb29sICAgIHByaW50T25lOyAgICAgICAgLyogVFJVRSBp
ZiBwbHVnaW4gc2hvdWxkIHByaW50IG9uZSBjb3B5ICAqLw0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiAgICB0byBkZWZhdWx0IHByaW50ZXIgICAgICAgICAgICAgICAgICAgICAqLw0K
LSAgICB2b2lkKiAgICBwbGF0Zm9ybVByaW50OyAgICAvKiBQbGF0Zm9ybS1zcGVjaWZpYyBwcmlu
dGluZyBpbmZvICovDQorICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBwbHVn
aW4gaGFuZGxlZCBmdWxsc2NyZWVuIHByaW50aW5nICovDQorICBOUEJvb2wgcHJpbnRPbmU7ICAg
ICAvKiBUUlVFIGlmIHBsdWdpbiBzaG91bGQgcHJpbnQgb25lIGNvcHkgdG8gZGVmYXVsdCBwcmlu
dGVyICovDQorICB2b2lkKiBwbGF0Zm9ybVByaW50OyAvKiBQbGF0Zm9ybS1zcGVjaWZpYyBwcmlu
dGluZyBpbmZvICovDQogfSBOUEZ1bGxQcmludDsNCiANCiB0eXBlZGVmIHN0cnVjdCBfTlBFbWJl
ZFByaW50DQogew0KLSAgICBOUFdpbmRvdyAgICB3aW5kb3c7DQotICAgIHZvaWQqICAgIHBsYXRm
b3JtUHJpbnQ7ICAgIC8qIFBsYXRmb3JtLXNwZWNpZmljIHByaW50aW5nIGluZm8gKi8NCisgIE5Q
V2luZG93IHdpbmRvdzsNCisgIHZvaWQqIHBsYXRmb3JtUHJpbnQ7IC8qIFBsYXRmb3JtLXNwZWNp
ZmljIHByaW50aW5nIGluZm8gKi8NCiB9IE5QRW1iZWRQcmludDsNCiANCiB0eXBlZGVmIHN0cnVj
dCBfTlBQcmludA0KIHsNCi0gICAgdWludDE2ICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAg
ICAgLyogTlBfRlVMTCBvciBOUF9FTUJFRCAqLw0KLSAgICB1bmlvbg0KLSAgICB7DQotICAgICAg
ICBOUEZ1bGxQcmludCAgICAgZnVsbFByaW50OyAgICAgICAgLyogaWYgbW9kZSBpcyBOUF9GVUxM
ICovDQotICAgICAgICBOUEVtYmVkUHJpbnQgICAgZW1iZWRQcmludDsgICAgICAgIC8qIGlmIG1v
ZGUgaXMgTlBfRU1CRUQgKi8NCi0gICAgfSBwcmludDsNCisgIHVpbnQxNiBtb2RlOyAgICAgICAg
ICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8NCisgIHVuaW9uDQorICB7DQorICAgIE5Q
RnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlzIE5QX0ZVTEwgKi8NCisgICAgTlBF
bWJlZFByaW50IGVtYmVkUHJpbnQ7IC8qIGlmIG1vZGUgaXMgTlBfRU1CRUQgKi8NCisgIH0gcHJp
bnQ7DQogfSBOUFByaW50Ow0KIA0KICNpZiBkZWZpbmVkKFhQX01BQykgfHwgZGVmaW5lZChYUF9N
QUNPU1gpDQotdHlwZWRlZiBFdmVudFJlY29yZCAgICBOUEV2ZW50Ow0KK3R5cGVkZWYgRXZlbnRS
ZWNvcmQgTlBFdmVudDsNCiAjZWxpZiBkZWZpbmVkKFhQX1dJTikNCiB0eXBlZGVmIHN0cnVjdCBf
TlBFdmVudA0KIHsNCi0gICAgdWludDE2ICAgZXZlbnQ7DQotICAgIHVpbnQzMiAgIHdQYXJhbTsN
Ci0gICAgdWludDMyICAgbFBhcmFtOw0KKyAgdWludDE2IGV2ZW50Ow0KKyAgdWludDMyIHdQYXJh
bTsNCisgIHVpbnQzMiBsUGFyYW07DQorfSBOUEV2ZW50Ow0KKyNlbGlmIGRlZmluZWQoWFBfT1My
KQ0KK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50DQorew0KKyAgdWludDMyIGV2ZW50Ow0KKyAgdWlu
dDMyIHdQYXJhbTsNCisgIHVpbnQzMiBsUGFyYW07DQogfSBOUEV2ZW50Ow0KLSNlbGlmIGRlZmlu
ZWQgKFhQX1VOSVgpDQorI2VsaWYgZGVmaW5lZCAoWFBfVU5JWCkgJiYgZGVmaW5lZChNT1pfWDEx
KQ0KIHR5cGVkZWYgWEV2ZW50IE5QRXZlbnQ7DQogI2Vsc2UNCi10eXBlZGVmIHZvaWQqICAgICAg
ICAgICAgTlBFdmVudDsNCit0eXBlZGVmIHZvaWQqICAgICBOUEV2ZW50Ow0KICNlbmRpZiAvKiBY
UF9NQUMgKi8NCiANCiAjaWYgZGVmaW5lZChYUF9NQUMpIHx8IGRlZmluZWQoWFBfTUFDT1NYKQ0K
IHR5cGVkZWYgUmduSGFuZGxlIE5QUmVnaW9uOw0KICNlbGlmIGRlZmluZWQoWFBfV0lOKQ0KIHR5
cGVkZWYgSFJHTiBOUFJlZ2lvbjsNCi0jZWxpZiBkZWZpbmVkKFhQX1VOSVgpDQorI2VsaWYgZGVm
aW5lZChYUF9VTklYKSAmJiBkZWZpbmVkKE1PWl9YMTEpDQogdHlwZWRlZiBSZWdpb24gTlBSZWdp
b247DQogI2Vsc2UNCiB0eXBlZGVmIHZvaWQgKk5QUmVnaW9uOw0KQEAgLTQwNywzNiArNTI5LDQ3
IEBAIHR5cGVkZWYgdm9pZCAqTlBSZWdpb247DQogDQogdHlwZWRlZiBzdHJ1Y3QgTlBfUG9ydA0K
IHsNCi0gICAgQ0dyYWZQdHIgICAgIHBvcnQ7ICAgICAgICAvKiBHcmFmcG9ydCAqLw0KLSAgICBp
bnQzMiAgICAgICAgcG9ydHg7ICAgICAgICAvKiBwb3NpdGlvbiBpbnNpZGUgdGhlIHRvcG1vc3Qg
d2luZG93ICovDQotICAgIGludDMyICAgICAgICBwb3J0eTsNCisgIENHcmFmUHRyIHBvcnQ7IC8q
IEdyYWZwb3J0ICovDQorICBpbnQzMiBwb3J0eDsgICAvKiBwb3NpdGlvbiBpbnNpZGUgdGhlIHRv
cG1vc3Qgd2luZG93ICovDQorICBpbnQzMiBwb3J0eTsNCiB9IE5QX1BvcnQ7DQogDQogLyoNCiAg
KiAgTm9uLXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVF
dmVudA0KICAqLw0KLSNkZWZpbmUgZ2V0Rm9jdXNFdmVudCAgICAgICAgKG9zRXZ0ICsgMTYpDQot
I2RlZmluZSBsb3NlRm9jdXNFdmVudCAgICAgICAgKG9zRXZ0ICsgMTcpDQotI2RlZmluZSBhZGp1
c3RDdXJzb3JFdmVudCAgIChvc0V2dCArIDE4KQ0KIA0KLSNlbmRpZiAvKiBYUF9NQUMgKi8NCitl
bnVtIE5QRXZlbnRUeXBlIHsNCisgIE5QRXZlbnRUeXBlX0dldEZvY3VzRXZlbnQgPSAob3NFdnQg
KyAxNiksDQorICBOUEV2ZW50VHlwZV9Mb3NlRm9jdXNFdmVudCwNCisgIE5QRXZlbnRUeXBlX0Fk
anVzdEN1cnNvckV2ZW50LA0KKyAgTlBFdmVudFR5cGVfTWVudUNvbW1hbmRFdmVudCwNCisgIE5Q
RXZlbnRUeXBlX0NsaXBwaW5nQ2hhbmdlZEV2ZW50LA0KKyAgTlBFdmVudFR5cGVfU2Nyb2xsaW5n
QmVnaW5zRXZlbnQgPSAxMDAwLA0KKyAgTlBFdmVudFR5cGVfU2Nyb2xsaW5nRW5kc0V2ZW50DQor
fTsNCiANCisjaWZkZWYgT0JTT0xFVEUNCisjZGVmaW5lIGdldEZvY3VzRXZlbnQgICAgIChvc0V2
dCArIDE2KQ0KKyNkZWZpbmUgbG9zZUZvY3VzRXZlbnQgICAgKG9zRXZ0ICsgMTcpDQorI2RlZmlu
ZSBhZGp1c3RDdXJzb3JFdmVudCAob3NFdnQgKyAxOCkNCisjZW5kaWYNCisjZW5kaWYgLyogWFBf
TUFDICovDQogDQogLyoNCiAgKiBWYWx1ZXMgZm9yIG1vZGUgcGFzc2VkIHRvIE5QUF9OZXc6DQog
ICovDQotI2RlZmluZSBOUF9FTUJFRCAgICAgICAgMQ0KLSNkZWZpbmUgTlBfRlVMTCAgICAgICAg
IDINCisjZGVmaW5lIE5QX0VNQkVEIDENCisjZGVmaW5lIE5QX0ZVTEwgIDINCiANCiAvKg0KICAq
IFZhbHVlcyBmb3Igc3RyZWFtIHR5cGUgcGFzc2VkIHRvIE5QUF9OZXdTdHJlYW06DQogICovDQot
I2RlZmluZSBOUF9OT1JNQUwgICAgICAgIDENCi0jZGVmaW5lIE5QX1NFRUsgICAgICAgICAyDQot
I2RlZmluZSBOUF9BU0ZJTEUgICAgICAgIDMNCi0jZGVmaW5lIE5QX0FTRklMRU9OTFkgICAgICAg
IDQNCisjZGVmaW5lIE5QX05PUk1BTCAgICAgMQ0KKyNkZWZpbmUgTlBfU0VFSyAgICAgICAyDQor
I2RlZmluZSBOUF9BU0ZJTEUgICAgIDMNCisjZGVmaW5lIE5QX0FTRklMRU9OTFkgNA0KIA0KLSNk
ZWZpbmUgTlBfTUFYUkVBRFkgICAgKCgodW5zaWduZWQpKH4wKTw8MSk+PjEpDQorI2RlZmluZSBO
UF9NQVhSRUFEWSAoKCh1bnNpZ25lZCkofjApPDwxKT4+MSkNCiANCiAjaWZkZWYgWFBfTUFDDQog
I3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0DQpAQCAtNDQ0LDM4ICs1NzcsMzggQEAgdHlwZWRl
ZiBzdHJ1Y3QgTlBfUG9ydA0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyogICAgICAgICAg
ICAgRXJyb3IgYW5kIFJlYXNvbiBDb2RlIGRlZmluaXRpb25zICAgICAgICAgICAgKi8NCisvKiAg
ICAgICAgIEVycm9yIGFuZCBSZWFzb24gQ29kZSBkZWZpbml0aW9ucyAgICAgICovDQogLyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8NCiANCiAvKg0KLSAqICAgIFZhbHVlcyBvZiB0eXBlIE5QRXJyb3I6DQorICog
VmFsdWVzIG9mIHR5cGUgTlBFcnJvcjoNCiAgKi8NCi0jZGVmaW5lIE5QRVJSX0JBU0UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMA0KLSNkZWZpbmUgTlBFUlJfTk9fRVJST1IgICAgICAgICAg
ICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDApDQotI2RlZmluZSBOUEVSUl9HRU5FUklDX0VS
Uk9SICAgICAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEpDQotI2RlZmluZSBOUEVSUl9J
TlZBTElEX0lOU1RBTkNFX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDIpDQotI2RlZmluZSBO
UEVSUl9JTlZBTElEX0ZVTkNUQUJMRV9FUlJPUiAgICAgICAgKE5QRVJSX0JBU0UgKyAzKQ0KLSNk
ZWZpbmUgTlBFUlJfTU9EVUxFX0xPQURfRkFJTEVEX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSAr
IDQpDQotI2RlZmluZSBOUEVSUl9PVVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgICAgKE5QRVJS
X0JBU0UgKyA1KQ0KLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVHSU5fRVJST1IgICAgICAgICAg
ICAoTlBFUlJfQkFTRSArIDYpDQotI2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJS
T1IgICAgICAgIChOUEVSUl9CQVNFICsgNykNCi0jZGVmaW5lIE5QRVJSX0lOQ09NUEFUSUJMRV9W
RVJTSU9OX0VSUk9SICAgIChOUEVSUl9CQVNFICsgOCkNCi0jZGVmaW5lIE5QRVJSX0lOVkFMSURf
UEFSQU0gICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQ0KLSNkZWZpbmUgTlBFUlJfSU5W
QUxJRF9VUkwgICAgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTApDQotI2RlZmluZSBO
UEVSUl9GSUxFX05PVF9GT1VORCAgICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQ0KLSNk
ZWZpbmUgTlBFUlJfTk9fREFUQSAgICAgICAgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsg
MTIpDQotI2RlZmluZSBOUEVSUl9TVFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgICAgKE5QRVJS
X0JBU0UgKyAxMykNCi0NCi0vKg0KLSAqICAgIFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOg0KLSAq
Lw0KLSNkZWZpbmUgTlBSRVNfQkFTRSAgICAgICAgICAgICAgICAwDQotI2RlZmluZSBOUFJFU19E
T05FICAgICAgICAgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDApDQotI2RlZmluZSBOUFJFU19O
RVRXT1JLX0VSUiAgICAgICAgICAgIChOUFJFU19CQVNFICsgMSkNCi0jZGVmaW5lIE5QUkVTX1VT
RVJfQlJFQUsgICAgICAgICAgICAoTlBSRVNfQkFTRSArIDIpDQorI2RlZmluZSBOUEVSUl9CQVNF
ICAgICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIE5QRVJSX05PX0VSUk9SICAgICAg
ICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDApDQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VS
Uk9SICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQ0KKyNkZWZpbmUgTlBFUlJfSU5WQUxJ
RF9JTlNUQU5DRV9FUlJPUiAgICAgIChOUEVSUl9CQVNFICsgMikNCisjZGVmaW5lIE5QRVJSX0lO
VkFMSURfRlVOQ1RBQkxFX0VSUk9SICAgICAoTlBFUlJfQkFTRSArIDMpDQorI2RlZmluZSBOUEVS
Ul9NT0RVTEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5QRVJSX0JBU0UgKyA0KQ0KKyNkZWZpbmUg
TlBFUlJfT1VUX09GX01FTU9SWV9FUlJPUiAgICAgICAgIChOUEVSUl9CQVNFICsgNSkNCisjZGVm
aW5lIE5QRVJSX0lOVkFMSURfUExVR0lOX0VSUk9SICAgICAgICAoTlBFUlJfQkFTRSArIDYpDQor
I2RlZmluZSBOUEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJST1IgICAgKE5QRVJSX0JBU0UgKyA3
KQ0KKyNkZWZpbmUgTlBFUlJfSU5DT01QQVRJQkxFX1ZFUlNJT05fRVJST1IgIChOUEVSUl9CQVNF
ICsgOCkNCisjZGVmaW5lIE5QRVJSX0lOVkFMSURfUEFSQU0gICAgICAgICAgICAgICAoTlBFUlJf
QkFTRSArIDkpDQorI2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAgICAgICAgICAgICAgICAgKE5Q
RVJSX0JBU0UgKyAxMCkNCisjZGVmaW5lIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EICAgICAgICAgICAg
ICAoTlBFUlJfQkFTRSArIDExKQ0KKyNkZWZpbmUgTlBFUlJfTk9fREFUQSAgICAgICAgICAgICAg
ICAgICAgIChOUEVSUl9CQVNFICsgMTIpDQorI2RlZmluZSBOUEVSUl9TVFJFQU1fTk9UX1NFRUtB
QkxFICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMykNCisNCisvKg0KKyAqIFZhbHVlcyBvZiB0eXBl
IE5QUmVhc29uOg0KKyAqLw0KKyNkZWZpbmUgTlBSRVNfQkFTRSAgICAgICAgICAwDQorI2RlZmlu
ZSBOUFJFU19ET05FICAgICAgICAgKE5QUkVTX0JBU0UgKyAwKQ0KKyNkZWZpbmUgTlBSRVNfTkVU
V09SS19FUlIgIChOUFJFU19CQVNFICsgMSkNCisjZGVmaW5lIE5QUkVTX1VTRVJfQlJFQUsgICAo
TlBSRVNfQkFTRSArIDIpDQogDQogLyoNCi0gKiAgICAgIERvbid0IHVzZSB0aGVzZSBvYnNvbGV0
ZSBlcnJvciBjb2RlcyBhbnkgbW9yZS4NCisgKiBEb24ndCB1c2UgdGhlc2Ugb2Jzb2xldGUgZXJy
b3IgY29kZXMgYW55IG1vcmUuDQogICovDQogI2RlZmluZSBOUF9OT0VSUiAgTlBfTk9FUlJfaXNf
b2Jzb2xldGVfdXNlX05QRVJSX05PX0VSUk9SDQogI2RlZmluZSBOUF9FSU5WQUwgTlBfRUlOVkFM
X2lzX29ic29sZXRlX3VzZV9OUEVSUl9HRU5FUklDX0VSUk9SDQpAQCAtNDg0LDI2ICs2MTcsMzIg
QEAgdHlwZWRlZiBzdHJ1Y3QgTlBfUG9ydA0KIC8qDQogICogVmVyc2lvbiBmZWF0dXJlIGluZm9y
bWF0aW9uDQogICovDQotI2RlZmluZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgOA0KLSNk
ZWZpbmUgTlBWRVJTX0hBU19OT1RJRklDQVRJT04gICAgIDkNCi0jZGVmaW5lIE5QVkVSU19IQVNf
TElWRUNPTk5FQ1QgICAgICAgIDkNCi0jZGVmaW5lIE5QVkVSU19XSU4xNl9IQVNfTElWRUNPTk5F
Q1QgICAgOQ0KLSNkZWZpbmUgTlBWRVJTXzY4S19IQVNfTElWRUNPTk5FQ1QgICAgMTENCi0jZGVm
aW5lIE5QVkVSU19IQVNfV0lORE9XTEVTUyAgICAgICAxMQ0KLQ0KKyNkZWZpbmUgTlBWRVJTX0hB
U19TVFJFQU1PVVRQVVQgICAgICA4DQorI2RlZmluZSBOUFZFUlNfSEFTX05PVElGSUNBVElPTiAg
ICAgIDkNCisjZGVmaW5lIE5QVkVSU19IQVNfTElWRUNPTk5FQ1QgICAgICAgOQ0KKyNkZWZpbmUg
TlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCA5DQorI2RlZmluZSBOUFZFUlNfNjhLX0hBU19M
SVZFQ09OTkVDVCAgIDExDQorI2RlZmluZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1MgICAgICAgIDEx
DQorI2RlZmluZSBOUFZFUlNfSEFTX1hQQ09OTkVDVF9TQ1JJUFRJTkcgMTMNCiANCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLw0KLS8qICAgICAgICAgICAgIEZ1bmN0aW9uIFByb3RvdHlwZXMgICAgICAgICAg
ICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uIFByb3RvdHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogI2lm
IGRlZmluZWQoX1dJTkRPV1MpICYmICFkZWZpbmVkKFdJTjMyKQ0KICNkZWZpbmUgTlBfTE9BRERT
ICBfbG9hZGRzDQogI2Vsc2UNCisjaWYgZGVmaW5lZChfX09TMl9fKQ0KKyNkZWZpbmUgTlBfTE9B
RERTIF9TeXN0ZW0NCisjZWxzZQ0KICNkZWZpbmUgTlBfTE9BRERTDQogI2VuZGlmDQorI2VuZGlm
DQogDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQorI2lmbmRlZiBfX1NZTUJJ
QU4zMl9fDQorICNpZmRlZiBfX2NwbHVzcGx1cw0KKyBleHRlcm4gIkMiIHsNCisgI2VuZGlmDQog
I2VuZGlmDQogDQogLyoNCkBAIC01MTEsNzggKzY1MCwxNTAgQEAgZXh0ZXJuICJDIiB7DQogICov
DQogDQogI2lmZGVmIFhQX1VOSVgNCi1jaGFyKiAgICAgICAgICAgICAgICAgICAgTlBQX0dldE1J
TUVEZXNjcmlwdGlvbih2b2lkKTsNCitjaGFyKiBOUFBfR2V0TUlNRURlc2NyaXB0aW9uKHZvaWQp
Ow0KICNlbmRpZiAvKiBYUF9VTklYICovDQogDQotTlBFcnJvciAgICAgTlBQX0luaXRpYWxpemUo
dm9pZCk7DQotdm9pZCAgICAgICAgTlBQX1NodXRkb3duKHZvaWQpOw0KLU5QRXJyb3IgICAgIE5Q
X0xPQUREUyAgICBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3RhbmNlLA0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2IG1vZGUsIGludDE2IGFyZ2Ms
IGNoYXIqIGFyZ25bXSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFy
Z3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsNCi1OUEVycm9yICAgICBOUF9MT0FERFMgICAgTlBQ
X0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpOw0KLU5QRXJyb3IgICAg
IE5QX0xPQUREUyAgICBOUFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5kb3cqIHdpbmRv
dyk7DQotTlBFcnJvciAgICAgTlBfTE9BRERTICAgIE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNl
LCBOUE1JTUVUeXBlIHR5cGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsDQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MTYqIHN0eXBlKTsNCi1OUEVycm9yICAgICBOUF9MT0FE
RFMgICAgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLA0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNv
bik7DQotaW50MzIgICAgICAgIE5QX0xPQUREUyAgICBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFu
Y2UsIE5QU3RyZWFtKiBzdHJlYW0pOw0KLWludDMyICAgICAgICBOUF9MT0FERFMgICAgTlBQX1dy
aXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgaW50MzIgb2Zmc2V0LA0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7DQot
dm9pZCAgICAgICAgTlBfTE9BRERTICAgIE5QUF9TdHJlYW1Bc0ZpbGUoTlBQIGluc3RhbmNlLCBO
UFN0cmVhbSogc3RyZWFtLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZm5hbWUpOw0KLXZvaWQgICAgICAgIE5QX0xPQUREUyAgICBOUFBfUHJp
bnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KTsNCi1pbnQxNiAgICAgICAg
ICAgIE5QUF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2ZW50KTsNCi12b2lkICAg
ICAgICBOUF9MT0FERFMgICAgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIq
IHVybCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJl
YXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7DQotanJlZiAgICAgICAgTlBfTE9BRERTICAgICAgICAg
ICAgTlBQX0dldEphdmFDbGFzcyh2b2lkKTsNCi1OUEVycm9yICAgICBOUFBfR2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwNCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpOw0KLU5QRXJyb3IgICAgIE5QUF9TZXRWYWx1ZShO
UFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLA0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7DQorI2lmZGVmIF9fU1lNQklBTjMyX18NCitJ
TVBPUlRfQyBjb25zdCBURGVzQzE2KiBOUFBfR2V0TUlNRURlc2NyaXB0aW9uKHZvaWQpOw0KKyNl
bmRpZiAvKiBfX1NZTUJJQU4zMl9fICovDQorDQorTlBFcnJvciBOUF9MT0FERFMgTlBQX0luaXRp
YWxpemUodm9pZCk7DQorI2lmZGVmIF9fU1lNQklBTjMyX18NCitJTVBPUlRfQw0KKyNlbmRpZiAv
KiBfX1NZTUJJQU4zMl9fICovDQordm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQp
Ow0KKw0KKyNpZm5kZWYgX19TWU1CSUFOMzJfXw0KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXco
TlBNSU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MTYgbW9kZSwgaW50MTYgYXJnYywgY2hhciogYXJnbltdLA0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2ZWQpOw0KKyNl
bHNlDQorTlBFcnJvciBOUF9MT0FERFMgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5Q
UCBpbnN0YW5jZSwNCisgICAgICAgICAgICAgIHVpbnQxNiBtb2RlLCBDRGVzQ0FycmF5KiBhcmdu
LA0KKyAgICAgICAgICAgICAgQ0Rlc0NBcnJheSogYXJndiwgTlBTYXZlZERhdGEqIHNhdmVkKTsN
CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLw0KKw0KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9E
ZXN0cm95KE5QUCBpbnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZlKTsNCitOUEVycm9yIE5QX0xP
QUREUyBOUFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5kb3cqIHdpbmRvdyk7DQorTlBF
cnJvciBOUF9MT0FERFMgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlw
ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5Q
Qm9vbCBzZWVrYWJsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNiog
c3R5cGUpOw0KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5j
ZSwgTlBTdHJlYW0qIHN0cmVhbSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOUFJlYXNvbiByZWFzb24pOw0KK2ludDMyICAgTlBfTE9BRERTIE5QUF9Xcml0ZVJlYWR5KE5Q
UCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSk7DQoraW50MzIgICBOUF9MT0FERFMgTlBQX1dy
aXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgaW50MzIgb2Zmc2V0LA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7DQorDQorI2lm
bmRlZiBfX1NZTUJJQU4zMl9fDQordm9pZCAgICBOUF9MT0FERFMgTlBQX1N0cmVhbUFzRmlsZShO
UFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBmbmFtZSk7DQorI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICov
DQordm9pZCAgICBOUF9MT0FERFMgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3Ry
ZWFtKiBzdHJlYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
RGVzQzE2JiBmbmFtZSk7DQorI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8NCisNCit2b2lkICAg
IE5QX0xPQUREUyBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50
KTsNCitpbnQxNiAgIE5QX0xPQUREUyBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lk
KiBldmVudCk7DQorDQorI2lmbmRlZiBfX1NZTUJJQU4zMl9fDQordm9pZCAgICBOUF9MT0FERFMg
TlBQX1VSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7
DQorI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovDQordm9pZCAgICBOUF9MT0FERFMgTlBQX1VSTE5v
dGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIHVybCwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7DQorI2Vu
ZGlmIC8qIF9fU1lNQklBTjMyX18gKi8NCisNCisjaWZkZWYgT0pJDQoranJlZiAgICBOUF9MT0FE
RFMgTlBQX0dldEphdmFDbGFzcyh2b2lkKTsNCisjZW5kaWYNCisNCisjaWZkZWYgX19TWU1CSUFO
MzJfXw0KK0lNUE9SVF9DDQorI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8NCitOUEVycm9yIE5Q
X0xPQUREUyBOUFBfR2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwg
dm9pZCAqdmFsdWUpOw0KK05QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRWYWx1ZShOUFAgaW5zdGFu
Y2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7DQogDQogLyoNCiAgKiBOUE5f
KiBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBuYXZpZ2F0b3IgYW5kIGNhbGxlZCBieSB0
aGUgcGx1Z2luLg0KICAqLw0KK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9WZXJzaW9uKGludCogcGx1
Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQqIG5ldHNjYXBlX21pbm9yKTsNCiANCi12b2lk
ICAgICAgICBOUE5fVmVyc2lvbihpbnQqIHBsdWdpbl9tYWpvciwgaW50KiBwbHVnaW5fbWlub3Is
DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbmV0c2NhcGVfbWFqb3IsIGludCog
bmV0c2NhcGVfbWlub3IpOw0KLU5QRXJyb3IgICAgIE5QTl9HZXRVUkxOb3RpZnkoTlBQIGluc3Rh
bmNlLCBjb25zdCBjaGFyKiB1cmwsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogdGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsNCi1OUEVycm9yICAgICBOUE5f
R2V0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLA0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7DQotTlBFcnJvciAgICAgTlBOX1Bvc3RVUkxO
b3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsDQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwNCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSwN
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7DQot
TlBFcnJvciAgICAgTlBOX1Bvc3RVUkwoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsDQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxl
biwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wg
ZmlsZSk7DQotTlBFcnJvciAgICAgTlBOX1JlcXVlc3RSZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5Q
Qnl0ZVJhbmdlKiByYW5nZUxpc3QpOw0KLU5QRXJyb3IgICAgIE5QTl9OZXdTdHJlYW0oTlBQIGlu
c3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogdGFyZ2V0LCBOUFN0cmVhbSoqIHN0cmVhbSk7DQotaW50MzIgICAgICAgIE5Q
Tl9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyIGxlbiwNCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGJ1ZmZlcik7DQotTlBFcnJvciAgICAgTlBOX0Rl
c3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLA0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24pOw0KLXZvaWQgICAgICAgIE5Q
Tl9TdGF0dXMoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsNCi1jb25zdCBjaGFy
KiAgICBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7DQotdm9pZCogICAgICAgIE5QTl9NZW1B
bGxvYyh1aW50MzIgc2l6ZSk7DQotdm9pZCAgICAgICAgTlBOX01lbUZyZWUodm9pZCogcHRyKTsN
Ci11aW50MzIgICAgICAgIE5QTl9NZW1GbHVzaCh1aW50MzIgc2l6ZSk7DQotdm9pZCAgICAgICAg
TlBOX1JlbG9hZFBsdWdpbnMoTlBCb29sIHJlbG9hZFBhZ2VzKTsNCi1KUklFbnYqICAgICBOUE5f
R2V0SmF2YUVudih2b2lkKTsNCi1qcmVmICAgICAgICBOUE5fR2V0SmF2YVBlZXIoTlBQIGluc3Rh
bmNlKTsNCi1OUEVycm9yICAgICBOUE5fR2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJs
ZSB2YXJpYWJsZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZhbHVlKTsN
Ci1OUEVycm9yICAgICBOUE5fU2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJp
YWJsZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZhbHVlKTsNCi12b2lk
ICAgICAgICBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGluc3RhbmNlLCBOUFJlY3QgKmludmFsaWRS
ZWN0KTsNCi12b2lkICAgICAgICBOUE5fSW52YWxpZGF0ZVJlZ2lvbihOUFAgaW5zdGFuY2UsIE5Q
UmVnaW9uIGludmFsaWRSZWdpb24pOw0KLXZvaWQgICAgICAgIE5QTl9Gb3JjZVJlZHJhdyhOUFAg
aW5zdGFuY2UpOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0gIC8qIGVuZCBleHRlcm4gIkMi
ICovDQorI2lmbmRlZiBfX1NZTUJJQU4zMl9fDQorTlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFVS
TE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdm9pZCogbm90aWZ5RGF0YSk7
DQorTlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIq
IHVybCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCk7
DQorTlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25z
dCBjaGFyKiB1cmwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogdGFyZ2V0LCB1aW50MzIgbGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7DQorTlBFcnJvciBOUF9MT0FERFMg
TlBOX1Bvc3RVUkwoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB1aW50MzIgbGVuLA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUpOw0K
KyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLw0KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRVUkxO
b3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsDQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsIHZvaWQqIG5vdGlmeURh
dGEpOw0KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRVUkwoTlBQIGluc3RhbmNlLCBjb25zdCBU
RGVzQzE2JiB1cmwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2
KiB0YXJnZXQpOw0KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9Qb3N0VVJMTm90aWZ5KE5QUCBpbnN0
YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxlLA0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIG5vdGlmeURhdGEpOw0KK05QRXJyb3IgTlBf
TE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxl
KTsNCisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLw0KKw0KK05QRXJyb3IgTlBfTE9BRERTIE5Q
Tl9SZXF1ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFuZ2VMaXN0KTsN
CisNCisjaWZuZGVmIF9fU1lNQklBTjMyX18NCitOUEVycm9yIE5QX0xPQUREUyBOUE5fTmV3U3Ry
ZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCBOUFN0cmVhbSoqIHN0cmVhbSk7DQorI2Vs
c2UvKiBfX1NZTUJJQU4zMl9fICovDQorTlBFcnJvciBOUF9MT0FERFMgTlBOX05ld1N0cmVhbShO
UFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFREZXNDMTYqIHRhcmdldCwgTlBTdHJlYW0qKiBzdHJlYW0pOw0KKyNlbmRp
ZiAvKiBfX1NZTUJJQU4zMl9fICovDQorDQoraW50MzIgICBOUF9MT0FERFMgTlBOX1dyaXRlKE5Q
UCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgaW50MzIgbGVuLCB2b2lkKiBidWZmZXIpOw0K
K05QRXJyb3IgTlBfTE9BRERTIE5QTl9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJl
YW0qIHN0cmVhbSwgTlBSZWFzb24gcmVhc29uKTsNCisNCisjaWZuZGVmIF9fU1lNQklBTjMyX18N
Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fU3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
bWVzc2FnZSk7DQorI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovDQordm9pZCAgICBOUF9MT0FERFMg
TlBOX1N0YXR1cyhOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIG1lc3NhZ2UpOw0KKyNlbmRp
ZiAvKiBfX1NZTUJJQU4zMl9fICovDQorDQorI2lmbmRlZiBfX1NZTUJJQU4zMl9fDQorY29uc3Qg
Y2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQoTlBQIGluc3RhbmNlKTsNCisjZWxzZS8qIF9f
U1lNQklBTjMyX18gKi8NCitjb25zdCBURGVzQzE2KiBOUF9MT0FERFMgIE5QTl9Vc2VyQWdlbnQo
TlBQIGluc3RhbmNlKTsNCisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLw0KKw0KKw0KK3ZvaWQq
ICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1aW50MzIgc2l6ZSk7DQordm9pZCAgICBOUF9MT0FE
RFMgTlBOX01lbUZyZWUodm9pZCogcHRyKTsNCit1aW50MzIgIE5QX0xPQUREUyBOUE5fTWVtRmx1
c2godWludDMyIHNpemUpOw0KK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9SZWxvYWRQbHVnaW5zKE5Q
Qm9vbCByZWxvYWRQYWdlcyk7DQorI2lmZGVmIE9KSQ0KK0pSSUVudiogTlBfTE9BRERTIE5QTl9H
ZXRKYXZhRW52KHZvaWQpOw0KK2pyZWYgICAgTlBfTE9BRERTIE5QTl9HZXRKYXZhUGVlcihOUFAg
aW5zdGFuY2UpOw0KKyNlbmRpZg0KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRWYWx1ZShOUFAg
aW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7DQorTlBFcnJvciBO
UF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFibGUgdmFyaWFibGUs
IHZvaWQgKnZhbHVlKTsNCit2b2lkICAgIE5QX0xPQUREUyBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQ
IGluc3RhbmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsNCit2b2lkICAgIE5QX0xPQUREUyBOUE5f
SW52YWxpZGF0ZVJlZ2lvbihOUFAgaW5zdGFuY2UsIE5QUmVnaW9uIGludmFsaWRSZWdpb24pOw0K
K3ZvaWQgICAgTlBfTE9BRERTIE5QTl9Gb3JjZVJlZHJhdyhOUFAgaW5zdGFuY2UpOw0KKw0KKyNp
Zm5kZWYgX19TWU1CSUFOMzJfXw0KKyAjaWZkZWYgX19jcGx1c3BsdXMNCisgfSAgLyogZW5kIGV4
dGVybiAiQyIgKi8NCisgI2VuZGlmDQorI2VuZGlmDQorDQorI2VuZGlmIC8qIFJDX0lOVk9LRUQg
Ki8NCisjaWZkZWYgX19PUzJfXw0KKyNwcmFnbWEgcGFjaygpDQogI2VuZGlmDQogDQogI2VuZGlm
IC8qIF9OUEFQSV9IXyAqLw0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL25wcnVudGlt
ZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUu
Y3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRp
bWUuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsMTUgKzIwLDE2IEBADQogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQ0KICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVA0KICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIA0KKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuDQogICovDQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+
DQogDQorI2luY2x1ZGUgPEhhc2hNYXAuaD4NCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvbnBy
dW50aW1lX2ltcGwuaD4NCisjaW5jbHVkZSA8aWRlbnRpZmllci5oPg0KICNpbmNsdWRlIDxucHJ1
bnRpbWUuaD4NCiAjaW5jbHVkZSA8Y191dGlsaXR5Lmg+DQogDQotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL25wcnVudGltZV9pbXBsLmg+DQotDQorLyoNCiBzdGF0aWMgQm9vbGVhbiBzdHJpbmdJ
ZGVudGlmaWVyRXF1YWwoY29uc3Qgdm9pZCAqdmFsdWUxLCBjb25zdCB2b2lkICp2YWx1ZTIpDQog
ew0KICAgICByZXR1cm4gc3RyY21wKChjb25zdCBjaGFyICopdmFsdWUxLCAoY29uc3QgY2hhciAq
KXZhbHVlMikgPT0gMDsNCkBAIC0xMDAsMTQgKzEwMSwxNCBAQCBzdGF0aWMgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBnZXRJbnRJZGVuDQogICAgIHJldHVybiBpbnRJZGVudGlmaWVyRGljdGlvbmFy
eTsNCiB9DQogDQotTlBJZGVudGlmaWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoY29uc3Qg
TlBVVEY4ICpuYW1lKQ0KK05QSWRlbnRpZmllciBOUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoY29u
c3QgTlBVVEY4ICpuYW1lKQ0KIHsNCiAgICAgYXNzZXJ0IChuYW1lKTsNCi0gICAgDQorDQogICAg
IGlmIChuYW1lKSB7DQogICAgICAgICBQcml2YXRlSWRlbnRpZmllciAqaWRlbnRpZmllciA9IDA7
DQotICAgICAgICANCi0gICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilD
RkRpY3Rpb25hcnlHZXRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNv
bnN0IHZvaWQgKiluYW1lKTsNCisNCisgICAgICAgIC8vaWRlbnRpZmllciA9IChQcml2YXRlSWRl
bnRpZmllciAqKUNGRGljdGlvbmFyeUdldFZhbHVlIChnZXRTdHJpbmdJZGVudGlmaWVyRGljdGlv
bmFyeSgpLCAoY29uc3Qgdm9pZCAqKW5hbWUpOw0KICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0g
MCkgew0KICAgICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKiltYWxs
b2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOw0KICAgICAgICAgICAgIC8vIFdlIG5ldmVy
IHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgZ3Jvdywg
YXMgd2lsbA0KQEAgLTExNiw2MCArMTE3LDEzOCBAQCBOUElkZW50aWZpZXIgX05QTl9HZXRTdHJp
bmdJZGVudGlmaWVyIChjDQogICAgICAgICAgICAgY29uc3QgY2hhciAqaWRlbnRpZmllck5hbWUg
PSBzdHJkdXAgKG5hbWUpOw0KICAgICAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9
IGlkZW50aWZpZXJOYW1lOw0KIA0KLSAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlIChn
ZXRTdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSgpLCBpZGVudGlmaWVyTmFtZSwgKGNvbnN0IHZv
aWQgKilpZGVudGlmaWVyKTsNCisgICAgICAgICAgICAvL0NGRGljdGlvbmFyeUFkZFZhbHVlIChn
ZXRTdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSgpLCBpZGVudGlmaWVyTmFtZSwgKGNvbnN0IHZv
aWQgKilpZGVudGlmaWVyKTsNCiAgICAgICAgIH0NCiAgICAgICAgIHJldHVybiAoTlBJZGVudGlm
aWVyKWlkZW50aWZpZXI7DQogICAgIH0NCi0gICAgDQorDQogICAgIHJldHVybiAwOw0KIH0NCiAN
Ci12b2lkIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMgKGNvbnN0IE5QVVRGOCAqKm5hbWVzLCBp
bnQzMl90IG5hbWVDb3VudCwgTlBJZGVudGlmaWVyICppZGVudGlmaWVycykNCit2b2lkIE5QTl9H
ZXRTdHJpbmdJZGVudGlmaWVycyAoY29uc3QgTlBVVEY4ICoqbmFtZXMsIGludDMyX3QgbmFtZUNv
dW50LCBOUElkZW50aWZpZXIgKmlkZW50aWZpZXJzKQ0KIHsNCiAgICAgYXNzZXJ0IChuYW1lcyk7
DQogICAgIGFzc2VydCAoaWRlbnRpZmllcnMpOw0KLSAgICANCisNCiAgICAgaWYgKG5hbWVzICYm
IGlkZW50aWZpZXJzKSB7DQogICAgICAgICBpbnQgaTsNCi0gICAgICAgIA0KKw0KICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IG5hbWVDb3VudDsgaSsrKSB7DQotICAgICAgICAgICAgaWRlbnRpZmll
cnNbaV0gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG5hbWVzW2ldKTsNCisgICAgICAgICAg
ICBpZGVudGlmaWVyc1tpXSA9IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1lc1tpXSk7DQog
ICAgICAgICB9DQogICAgIH0NCiB9DQogDQotTlBJZGVudGlmaWVyIF9OUE5fR2V0SW50SWRlbnRp
ZmllcihpbnQzMl90IGludGlkKQ0KK05QSWRlbnRpZmllciBOUE5fR2V0SW50SWRlbnRpZmllcihp
bnQzMl90IGludGlkKQ0KIHsNCisvL2ZvcmNlIGFzc2VydA0KKw0KKw0KICAgICBQcml2YXRlSWRl
bnRpZmllciAqaWRlbnRpZmllciA9IDA7DQotICAgIA0KLSAgICBpZGVudGlmaWVyID0gKFByaXZh
dGVJZGVudGlmaWVyICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKGdldEludElkZW50aWZpZXJEaWN0
aW9uYXJ5KCksIChjb25zdCB2b2lkICopaW50aWQpOw0KK2Fzc2VydCggaWRlbnRpZmllciApOw0K
KyAgICAvL2lkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlHZXRW
YWx1ZSAoZ2V0SW50SWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilpbnRpZCk7
DQogICAgIGlmIChpZGVudGlmaWVyID09IDApIHsNCiAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJp
dmF0ZUlkZW50aWZpZXIgKiltYWxsb2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOw0KICAg
ICAgICAgLy8gV2UgbmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVyIG5hbWVzLCBzbyB0aGlzIGRpY3Rp
b25hcnkgd2lsbCBncm93Lg0KICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSBmYWxzZTsN
CiAgICAgICAgIGlkZW50aWZpZXItPnZhbHVlLm51bWJlciA9IGludGlkOw0KIA0KLSAgICAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUgKGdldEludElkZW50aWZpZXJEaWN0aW9uYXJ5KCksIChjb25z
dCB2b2lkICopaW50aWQsIChjb25zdCB2b2lkICopaWRlbnRpZmllcik7DQorICAgICAgICAvL0NG
RGljdGlvbmFyeUFkZFZhbHVlIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLCAoY29uc3Qg
dm9pZCAqKWludGlkLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOw0KICAgICB9DQogICAgIHJl
dHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7DQorfSovDQorDQordHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxLSlM6OlVTdHJpbmc6OlJlcD4sIFByaXZhdGVJZGVudGlmaWVyKj4gU3RyaW5nSWRl
bnRpZmllck1hcDsNCisNCitzdGF0aWMgU3RyaW5nSWRlbnRpZmllck1hcCogZ2V0U3RyaW5nSWRl
bnRpZmllck1hcCgpDQorew0KKyAgICBzdGF0aWMgU3RyaW5nSWRlbnRpZmllck1hcCogc3RyaW5n
SWRlbnRpZmllck1hcCA9IDA7DQorICAgIGlmICghc3RyaW5nSWRlbnRpZmllck1hcCkNCisgICAg
ICAgIHN0cmluZ0lkZW50aWZpZXJNYXAgPSBuZXcgU3RyaW5nSWRlbnRpZmllck1hcDsNCisgICAg
cmV0dXJuIHN0cmluZ0lkZW50aWZpZXJNYXA7DQorfQ0KKw0KK3R5cGVkZWYgSGFzaE1hcDxpbnQs
IFByaXZhdGVJZGVudGlmaWVyKj4gSW50SWRlbnRpZmllck1hcDsNCisNCitzdGF0aWMgSW50SWRl
bnRpZmllck1hcCogZ2V0SW50SWRlbnRpZmllck1hcCgpDQorew0KKyAgICBzdGF0aWMgSW50SWRl
bnRpZmllck1hcCogaW50SWRlbnRpZmllck1hcCA9IDA7DQorICAgIGlmICghaW50SWRlbnRpZmll
ck1hcCkNCisgICAgICAgIGludElkZW50aWZpZXJNYXAgPSBuZXcgSW50SWRlbnRpZmllck1hcDsN
CisgICAgcmV0dXJuIGludElkZW50aWZpZXJNYXA7DQogfQ0KIA0KLWJvb2wgX05QTl9JZGVudGlm
aWVySXNTdHJpbmcoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpDQorRVhQT1JUX0MNCitOUElkZW50
aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKQ0KK3sNCisg
ICAgYXNzZXJ0KG5hbWUpOw0KKw0KKyAgICBpZiAobmFtZSkgew0KKyAgICAgICAgUHJpdmF0ZUlk
ZW50aWZpZXIqIGlkZW50aWZpZXIgPSAwOw0KKw0KKyAgICAgICAgaWRlbnRpZmllciA9IGdldFN0
cmluZ0lkZW50aWZpZXJNYXAoKS0+Z2V0KGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKG5hbWUp
LnVzdHJpbmcoKS5hcmVwKCkpOw0KKyAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgew0KKyAg
ICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKW1hbGxvYyhzaXplb2Yo
UHJpdmF0ZUlkZW50aWZpZXIpKTsNCisgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlk
ZW50aWZpZXIgbmFtZXMsIHNvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwNCisg
ICAgICAgICAgICAvLyB0aGUgbWVtb3J5IGZvciB0aGUgaWRlbnRpZmllciBuYW1lIHN0cmluZ3Mu
DQorICAgICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSB0cnVlOw0KKyAgICAgICAgICAg
IGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9IHN0cmR1cChuYW1lKTsNCisNCisgICAgICAgICAg
ICBnZXRTdHJpbmdJZGVudGlmaWVyTWFwKCktPnNldChpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmll
cihuYW1lKS51c3RyaW5nKCkuYXJlcCgpLCBpZGVudGlmaWVyKTsNCisgICAgICAgIH0NCisgICAg
ICAgIHJldHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7DQorICAgIH0NCisNCisgICAgcmV0
dXJuIDA7DQorfQ0KKw0KK0VYUE9SVF9DDQordm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMo
Y29uc3QgTlBVVEY4KiogbmFtZXMsIGludDMyX3QgbmFtZUNvdW50LCBOUElkZW50aWZpZXIqIGlk
ZW50aWZpZXJzKQ0KK3sNCisgICAgYXNzZXJ0KG5hbWVzKTsNCisgICAgYXNzZXJ0KGlkZW50aWZp
ZXJzKTsNCisNCisgICAgaWYgKG5hbWVzICYmIGlkZW50aWZpZXJzKQ0KKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBuYW1lQ291bnQ7IGkrKykNCisgICAgICAgICAgICBpZGVudGlmaWVyc1tp
XSA9IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWVzW2ldKTsNCit9DQorDQorRVhQT1JUX0MN
CitOUElkZW50aWZpZXIgTlBOX0dldEludElkZW50aWZpZXIoaW50MzJfdCBpbnRpZCkNCit7DQor
ICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsNCisNCisgICAgaWRlbnRpZmll
ciA9IGdldEludElkZW50aWZpZXJNYXAoKS0+Z2V0KGludGlkKTsNCisgICAgaWYgKGlkZW50aWZp
ZXIgPT0gMCkgew0KKyAgICAgICAgaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciopbWFs
bG9jKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOw0KKyAgICAgICAgLy8gV2UgbmV2ZXIgcmVs
ZWFzZSBpZGVudGlmaWVyIG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBncm93Lg0KKyAg
ICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSBmYWxzZTsNCisgICAgICAgIGlkZW50aWZpZXIt
PnZhbHVlLm51bWJlciA9IGludGlkOw0KKw0KKyAgICAgICAgZ2V0SW50SWRlbnRpZmllck1hcCgp
LT5zZXQoaW50aWQsIGlkZW50aWZpZXIpOw0KKyAgICB9DQorICAgIHJldHVybiAoTlBJZGVudGlm
aWVyKWlkZW50aWZpZXI7DQorfQ0KKw0KK0VYUE9SVF9DDQorYm9vbCBOUE5fSWRlbnRpZmllcklz
U3RyaW5nKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKQ0KIHsNCiAgICAgUHJpdmF0ZUlkZW50aWZp
ZXIgKmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilpZGVudGlmaWVyOw0KICAgICByZXR1cm4gaS0+
aXNTdHJpbmc7DQogfQ0KIA0KLU5QVVRGOCAqX05QTl9VVEY4RnJvbUlkZW50aWZpZXIgKE5QSWRl
bnRpZmllciBpZGVudGlmaWVyKQ0KK0VYUE9SVF9DDQorTlBVVEY4ICpOUE5fVVRGOEZyb21JZGVu
dGlmaWVyIChOUElkZW50aWZpZXIgaWRlbnRpZmllcikNCiB7DQogICAgIFByaXZhdGVJZGVudGlm
aWVyICppID0gKFByaXZhdGVJZGVudGlmaWVyICopaWRlbnRpZmllcjsNCiAgICAgaWYgKCFpLT5p
c1N0cmluZyB8fCAhaS0+dmFsdWUuc3RyaW5nKQ0KICAgICAgICAgcmV0dXJuIE5VTEw7DQotICAg
ICAgICANCisNCiAgICAgcmV0dXJuIChOUFVURjggKilzdHJkdXAoaS0+dmFsdWUuc3RyaW5nKTsN
CiB9DQogDQotaW50MzJfdCBfTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVu
dGlmaWVyKQ0KK0VYUE9SVF9DDQoraW50MzJfdCBOUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpDQogew0KICAgICBQcml2YXRlSWRlbnRpZmllciAqaSA9IChQcml2
YXRlSWRlbnRpZmllciAqKWlkZW50aWZpZXI7DQogICAgIGlmICghaS0+aXNTdHJpbmcpDQpAQCAt
MjIxLDkgKzMwMCw5IEBAIE5QQm9vbCBOUE5fVmFyaWFudFRvQm9vbCAoY29uc3QgTlBWYXJpYW4N
CiB7DQogICAgIGlmICh2YXJpYW50LT50eXBlICE9IE5QVmFyaWFudFR5cGVfQm9vbCkNCiAgICAg
ICAgIHJldHVybiBmYWxzZTsNCi0gICAgICAgIA0KKw0KICAgICAqcmVzdWx0ID0gdmFyaWFudC0+
dmFsdWUuYm9vbFZhbHVlOw0KLSAgICANCisNCiAgICAgcmV0dXJuIHRydWU7DQogfQ0KIA0KQEAg
LTIzMyw3ICszMTIsNyBAQCBOUFN0cmluZyBOUE5fVmFyaWFudFRvU3RyaW5nIChjb25zdCBOUFZh
DQogICAgICAgICBOUFN0cmluZyBlbXB0eVN0cmluZyA9IHsgMCwgMCB9Ow0KICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nOw0KICAgICB9DQotICAgICAgICAgICAgDQorDQogICAgIHJldHVybiB2
YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZTsNCiB9DQogDQpAQCAtMjQ1LDcgKzMyNCw3IEBAIE5Q
Qm9vbCBOUE5fVmFyaWFudFRvSW50MzIgKGNvbnN0IE5QVmFyaWENCiAgICAgICAgICpyZXN1bHQg
PSAoaW50MzJfdCl2YXJpYW50LT52YWx1ZS5kb3VibGVWYWx1ZTsNCiAgICAgZWxzZQ0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KLSAgICANCisNCiAgICAgcmV0dXJuIHRydWU7DQogfQ0KIA0KQEAg
LTI1Nyw3ICszMzYsNyBAQCBOUEJvb2wgTlBOX1ZhcmlhbnRUb0RvdWJsZSAoY29uc3QgTlBWYXJp
DQogICAgICAgICAqcmVzdWx0ID0gdmFyaWFudC0+dmFsdWUuZG91YmxlVmFsdWU7DQogICAgIGVs
c2UNCiAgICAgICAgIHJldHVybiBmYWxzZTsNCi0gICAgDQorDQogICAgIHJldHVybiB0cnVlOw0K
IH0NCiANCkBAIC0yNjUsOSArMzQ0LDkgQEAgTlBCb29sIE5QTl9WYXJpYW50VG9PYmplY3QgKGNv
bnN0IE5QVmFyaQ0KIHsNCiAgICAgaWYgKHZhcmlhbnQtPnR5cGUgIT0gTlBWYXJpYW50VHlwZV9P
YmplY3QpDQogICAgICAgICByZXR1cm4gZmFsc2U7DQotICAgICAgICAgICAgDQorDQogICAgICpy
ZXN1bHQgPSB2YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsNCi0gICAgDQorDQogICAgIHJldHVy
biB0cnVlOw0KIH0NCiANCkBAIC0zMjEsNyArNDAwLDcgQEAgdm9pZCBOUE5fSW5pdGlhbGl6ZVZh
cmlhbnRXaXRoU3RyaW5nQ29weQ0KIHZvaWQgTlBOX0luaXRpYWxpemVWYXJpYW50V2l0aE9iamVj
dCAoTlBWYXJpYW50ICp2YXJpYW50LCBOUE9iamVjdCAqdmFsdWUpDQogew0KICAgICB2YXJpYW50
LT50eXBlID0gTlBWYXJpYW50VHlwZV9PYmplY3Q7DQotICAgIHZhcmlhbnQtPnZhbHVlLm9iamVj
dFZhbHVlID0gX05QTl9SZXRhaW5PYmplY3QgKHZhbHVlKTsNCisgICAgdmFyaWFudC0+dmFsdWUu
b2JqZWN0VmFsdWUgPSBOUE5fUmV0YWluT2JqZWN0ICh2YWx1ZSk7DQogfQ0KIA0KIHZvaWQgTlBO
X0luaXRpYWxpemVWYXJpYW50V2l0aFZhcmlhbnQgKE5QVmFyaWFudCAqZGVzdGluYXRpb24sIGNv
bnN0IE5QVmFyaWFudCAqc291cmNlKQ0KQEAgLTM2MiwxMiArNDQxLDEzIEBAIHZvaWQgTlBOX0lu
aXRpYWxpemVWYXJpYW50V2l0aFZhcmlhbnQgKE4NCiAgICAgfQ0KIH0NCiANCi12b2lkIF9OUE5f
UmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KQ0KK0VYUE9SVF9DDQordm9p
ZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoTlBWYXJpYW50ICp2YXJpYW50KQ0KIHsNCiAgICAg
YXNzZXJ0ICh2YXJpYW50KTsNCi0gICAgDQorDQogICAgIGlmICh2YXJpYW50LT50eXBlID09IE5Q
VmFyaWFudFR5cGVfT2JqZWN0KSB7DQotICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3QgKHZhcmlh
bnQtPnZhbHVlLm9iamVjdFZhbHVlKTsNCisgICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0ICh2YXJp
YW50LT52YWx1ZS5vYmplY3RWYWx1ZSk7DQogICAgICAgICB2YXJpYW50LT52YWx1ZS5vYmplY3RW
YWx1ZSA9IDA7DQogICAgIH0NCiAgICAgZWxzZSBpZiAodmFyaWFudC0+dHlwZSA9PSBOUFZhcmlh
bnRUeXBlX1N0cmluZykgew0KQEAgLTM3NSwzNCArNDU1LDM2IEBAIHZvaWQgX05QTl9SZWxlYXNl
VmFyaWFudFZhbHVlIChOUFZhcmlhbnQNCiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLnN0cmluZ1Zh
bHVlLlVURjhDaGFyYWN0ZXJzID0gMDsNCiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLnN0cmluZ1Zh
bHVlLlVURjhMZW5ndGggPSAwOw0KICAgICB9DQotICAgIA0KKw0KICAgICB2YXJpYW50LT50eXBl
ID0gTlBWYXJpYW50VHlwZV9Wb2lkOw0KIH0NCiANCiANCi1OUE9iamVjdCAqX05QTl9DcmVhdGVP
YmplY3QgKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcykNCitFWFBPUlRfQw0KK05QT2JqZWN0ICpO
UE5fQ3JlYXRlT2JqZWN0IChOUFAgbnBwLCBOUENsYXNzICphQ2xhc3MpDQogew0KICAgICBhc3Nl
cnQgKGFDbGFzcyk7DQogDQogICAgIGlmIChhQ2xhc3MpIHsNCiAgICAgICAgIE5QT2JqZWN0ICpv
Ymo7DQotICAgICAgICANCisNCiAgICAgICAgIGlmIChhQ2xhc3MtPmFsbG9jYXRlICE9IE5VTEwp
DQogICAgICAgICAgICAgb2JqID0gYUNsYXNzLT5hbGxvY2F0ZSAobnBwLCBhQ2xhc3MpOw0KICAg
ICAgICAgZWxzZQ0KICAgICAgICAgICAgIG9iaiA9IChOUE9iamVjdCAqKW1hbGxvYyAoc2l6ZW9m
KE5QT2JqZWN0KSk7DQotICAgICAgICAgICAgDQorDQogICAgICAgICBvYmotPl9jbGFzcyA9IGFD
bGFzczsNCiAgICAgICAgIG9iai0+cmVmZXJlbmNlQ291bnQgPSAxOw0KIA0KICAgICAgICAgcmV0
dXJuIG9iajsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcmV0dXJuIDA7DQogfQ0KIA0KIA0KLU5Q
T2JqZWN0ICpfTlBOX1JldGFpbk9iamVjdCAoTlBPYmplY3QgKm9iaikNCitFWFBPUlRfQw0KK05Q
T2JqZWN0ICpOUE5fUmV0YWluT2JqZWN0IChOUE9iamVjdCAqb2JqKQ0KIHsNCiAgICAgYXNzZXJ0
IChvYmopOw0KIA0KQEAgLTQxMywxNCArNDk1LDE1IEBAIE5QT2JqZWN0ICpfTlBOX1JldGFpbk9i
amVjdCAoTlBPYmplY3QgKm8NCiB9DQogDQogDQotdm9pZCBfTlBOX1JlbGVhc2VPYmplY3QgKE5Q
T2JqZWN0ICpvYmopDQorRVhQT1JUX0MNCit2b2lkIE5QTl9SZWxlYXNlT2JqZWN0IChOUE9iamVj
dCAqb2JqKQ0KIHsNCiAgICAgYXNzZXJ0IChvYmopOw0KICAgICBhc3NlcnQgKG9iai0+cmVmZXJl
bmNlQ291bnQgPj0gMSk7DQogDQogICAgIGlmIChvYmogJiYgb2JqLT5yZWZlcmVuY2VDb3VudCA+
PSAxKSB7DQogICAgICAgICBvYmotPnJlZmVyZW5jZUNvdW50LS07DQotICAgICAgICAgICAgICAg
IA0KKw0KICAgICAgICAgaWYgKG9iai0+cmVmZXJlbmNlQ291bnQgPT0gMCkgew0KICAgICAgICAg
ICAgIGlmIChvYmotPl9jbGFzcy0+ZGVhbGxvY2F0ZSkNCiAgICAgICAgICAgICAgICAgb2JqLT5f
Y2xhc3MtPmRlYWxsb2NhdGUgKG9iaik7DQpAQCAtNDMwLDEyICs1MTMsMTMgQEAgdm9pZCBfTlBO
X1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpvYmopDQogICAgIH0NCiB9DQogDQotdm9pZCBfTlBO
X1NldEV4Y2VwdGlvbldpdGhVVEY4IChOUE9iamVjdCAqb2JqLCBjb25zdCBOUFVURjggKm1lc3Nh
Z2UsIGludDMyX3QgbGVuZ3RoKQ0KK0VYUE9SVF9DDQordm9pZCBOUE5fU2V0RXhjZXB0aW9uV2l0
aFVURjggKE5QT2JqZWN0ICpvYmosIGNvbnN0IE5QVVRGOCAqbWVzc2FnZSwgaW50MzJfdCBsZW5n
dGgpDQogew0KICAgICBhc3NlcnQgKG9iaik7DQogICAgIGFzc2VydCAobWVzc2FnZSk7DQotIA0K
Kw0KICAgICBpZiAob2JqICYmIG1lc3NhZ2UpIHsNCi0gICAgICAgIF9OUE5fU2V0RXhjZXB0aW9u
IChvYmosIG1lc3NhZ2UpOw0KKyAgICAgICAgTlBOX1NldEV4Y2VwdGlvbiAob2JqLCBtZXNzYWdl
KTsNCiAgICAgfQ0KIH0NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL25wcnVudGltZS5oCShy
ZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuICJDIiB7DQogI2VuZGlmDQog
DQogI2luY2x1ZGUgIm5wYXBpLmgiDQorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3N0ZGludC5o
Pg0KIA0KIC8qDQogICAgIFRoaXMgQVBJIGlzIHVzZWQgdG8gZmFjaWxpdGF0ZSBiaW5kaW5nIGNv
ZGUgd3JpdHRlbiBpbiBDIHRvIHNjcmlwdA0KQEAgLTE1MSw2ICsxNTIsNyBAQCB0eXBlZGVmIHN0
cnVjdCBfTlBWYXJpYW50IHsNCiAgICAgQWZ0ZXIgY2FsbGluZyBOUFJlbGVhc2VWYXJpYW50VmFs
dWUsIHRoZSB0eXBlIG9mIHRoZSB2YXJpYW50IHdpbGwNCiAgICAgYmUgc2V0IHRvIE5QVmFyaWFu
dFVuZGVmaW5lZFR5cGUuDQogKi8NCitJTVBPUlRfQw0KIHZvaWQgTlBOX1JlbGVhc2VWYXJpYW50
VmFsdWUgKE5QVmFyaWFudCAqdmFyaWFudCk7DQogDQogI2RlZmluZSBOUFZBUklBTlRfSVNfVk9J
RChfdikgICAgKChfdikudHlwZSA9PSBOUFZhcmlhbnRUeXBlX1ZvaWQpDQpAQCAtMjEyLDIwICsy
MTQsMjYgQEAgdHlwZWRlZiB2b2lkICpOUElkZW50aWZpZXI7DQogICAgIGNvbXBhcmVkIHVzaW5n
ID09LiAgSW4gY2FzZSBvZiBhbnkgZXJyb3JzLCB0aGUgcmVxdWVzdGVkDQogICAgIE5QSWRlbnRp
ZmllcihzKSB3aWxsIGJlIE5VTEwuDQogKi8NCitJTVBPUlRfQw0KIE5QSWRlbnRpZmllciBOUE5f
R2V0U3RyaW5nSWRlbnRpZmllcihjb25zdCBOUFVURjggKm5hbWUpOw0KK0lNUE9SVF9DDQogdm9p
ZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMoY29uc3QgTlBVVEY4ICoqbmFtZXMsIGludDMyX3Qg
bmFtZUNvdW50LCBOUElkZW50aWZpZXIgKmlkZW50aWZpZXJzKTsNCitJTVBPUlRfQw0KIE5QSWRl
bnRpZmllciBOUE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludGlkKTsNCitJTVBPUlRfQw0K
IGJvb2wgTlBOX0lkZW50aWZpZXJJc1N0cmluZyhOUElkZW50aWZpZXIgaWRlbnRpZmllcik7DQog
DQogLyoNCiAgICAgVGhlIE5QVVRGOCByZXR1cm5lZCBmcm9tIE5QTl9VVEY4RnJvbUlkZW50aWZp
ZXIgU0hPVUxEIGJlIGZyZWVkLg0KICovDQorSU1QT1JUX0MNCiBOUFVURjggKk5QTl9VVEY4RnJv
bUlkZW50aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpOw0KIA0KIC8qDQogICAgIEdldCB0
aGUgaW50ZWdlciByZXByZXNlbnRlZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlzIG5v
dCBhbg0KICAgICBpbnRlZ2VyIGlkZW50aWZpZXIsIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVk
Lg0KICovDQorSU1QT1JUX0MNCiBpbnQzMl90IE5QTl9JbnRGcm9tSWRlbnRpZmllcihOUElkZW50
aWZpZXIgaWRlbnRpZmllcik7DQogDQogLyoNCkBAIC0yOTEsMTEgKzI5OSwxMyBAQCBzdHJ1Y3Qg
TlBPYmplY3Qgew0KICAgICBmdW5jdGlvbiBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhh
dCBpbXBsZW1lbnRhdGlvbiB0byBzZXQgdGhlIGluaXRpYWwgcmV0YWluDQogICAgIGNvdW50IHRv
IDEuDQogKi8NCitJTVBPUlRfQw0KIE5QT2JqZWN0ICpOUE5fQ3JlYXRlT2JqZWN0KE5QUCBucHAs
IE5QQ2xhc3MgKmFDbGFzcyk7DQogDQogLyoNCiAgICAgSW5jcmVtZW50IHRoZSBOUE9iamVjdCdz
IHJlZmVyZW5jZSBjb3VudC4NCiAqLw0KK0lNUE9SVF9DDQogTlBPYmplY3QgKk5QTl9SZXRhaW5P
YmplY3QgKE5QT2JqZWN0ICpvYmopOw0KIA0KIC8qDQpAQCAtMzAzLDYgKzMxMyw3IEBAIE5QT2Jq
ZWN0ICpOUE5fUmV0YWluT2JqZWN0IChOUE9iamVjdCAqb2INCiAgICAgY291bnQgZ29lcyB0byB6
ZXJvLCB0aGUgY2xhc3MncyBkZXN0cm95IGZ1bmN0aW9uIGlzIGludm9rZSBpZg0KICAgICBzcGVj
aWZpZWQsIG90aGVyd2lzZSB0aGUgb2JqZWN0IGlzIGZyZWVkIGRpcmVjdGx5Lg0KICovDQorSU1Q
T1JUX0MNCiB2b2lkIE5QTl9SZWxlYXNlT2JqZWN0IChOUE9iamVjdCAqb2JqKTsNCiANCiAvKg0K
QEAgLTMxNiwxOSArMzI3LDI4IEBAIHZvaWQgTlBOX1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpv
YmopOw0KICAgICBDYWxscyBtYWRlIGZyb20gcGx1Z2luIGNvZGUgdG8gc2NyaXB0IG11c3QgYmUg
bWFkZSBmcm9tIHRoZSB0aHJlYWQNCiAgICAgb24gd2hpY2ggdGhlIHBsdWdpbiB3YXMgaW5pdGlh
bGl6ZWQuDQogKi8NCitJTVBPUlRfQw0KIGJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVj
dCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3Ms
IHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7DQorSU1QT1JUX0MNCiBib29s
IE5QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgY29uc3QgTlBWYXJp
YW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1bHQpOw0KK0lNUE9S
VF9DDQogYm9vbCBOUE5fRXZhbHVhdGUoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUFN0cmlu
ZyAqc2NyaXB0LCBOUFZhcmlhbnQgKnJlc3VsdCk7DQorSU1QT1JUX0MNCiBib29sIE5QTl9HZXRQ
cm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUsIE5QVmFyaWFudCAqcmVzdWx0KTsNCitJTVBPUlRfQw0KIGJvb2wgTlBOX1NldFByb3BlcnR5
KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29u
c3QgTlBWYXJpYW50ICp2YWx1ZSk7DQorSU1QT1JUX0MNCiBib29sIE5QTl9SZW1vdmVQcm9wZXJ0
eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOw0K
K0lNUE9SVF9DDQogYm9vbCBOUE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2Jq
LCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsNCitJTVBPUlRfQw0KIGJvb2wgTlBOX0hhc01l
dGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2ROYW1lKTsN
CiANCiAvKg0KICAgICBOUE5fU2V0RXhjZXB0aW9uIG1heSBiZSBjYWxsZWQgdG8gdHJpZ2dlciBh
IHNjcmlwdCBleGNlcHRpb24gdXBvbiByZXR1cm4NCiAgICAgZnJvbSBlbnRyeSBwb2ludHMgaW50
byBOUE9iamVjdHMuDQogKi8NCitJTVBPUlRfQw0KIHZvaWQgTlBOX1NldEV4Y2VwdGlvbiAoTlBP
YmplY3QgKm9iaiwgY29uc3QgTlBVVEY4ICptZXNzYWdlKTsNCiANCiAjaWZkZWYgX19jcGx1c3Bs
dXMNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5
KQ0KQEAgLTI2LDExICsyNiwxMSBAQA0KICNpbmNsdWRlIDxpbnRlcnByZXRlci5oPg0KIA0KICNp
bmNsdWRlIDxydW50aW1lX29iamVjdC5oPg0KLSNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4NCi0j
aW5jbHVkZSA8b2JqY19pbnN0YW5jZS5oPg0KKy8vI2luY2x1ZGUgPGpuaV9pbnN0YW5jZS5oPg0K
Ky8vI2luY2x1ZGUgPG9iamNfaW5zdGFuY2UuaD4NCiAjaW5jbHVkZSA8Y19pbnN0YW5jZS5oPg0K
ICNpbmNsdWRlIDxOUF9qc29iamVjdC5oPg0KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4NCisv
LyNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4NCiANCiB1c2luZyBuYW1lc3BhY2UgS0pTOw0KIHVz
aW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOw0KQEAgLTk5LDMzICs5OSwzNSBAQCB2b2lkIElu
c3RhbmNlOjpzZXRWYWx1ZU9mRmllbGQgKEtKUzo6RXhlDQogICAgIGFGaWVsZC0+c2V0VmFsdWVU
b0luc3RhbmNlIChleGVjLCB0aGlzLCBhVmFsdWUpOw0KIH0NCiANCitFWFBPUlRfQw0KIEluc3Rh
bmNlICpJbnN0YW5jZTo6Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UgKEJpbmRpbmdM
YW5ndWFnZSBsYW5ndWFnZSwgdm9pZCAqbmF0aXZlSW5zdGFuY2UsIGNvbnN0IFJvb3RPYmplY3Qg
KmV4ZWN1dGlvbkNvbnRleHQpDQogew0KICAgICBJbnN0YW5jZSAqbmV3SW5zdGFuY2UgPSAwOw0K
ICAgICANCiAgICAgc3dpdGNoIChsYW5ndWFnZSkgew0KLQljYXNlIEluc3RhbmNlOjpKYXZhTGFu
Z3VhZ2U6IHsNCi0JICAgIG5ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpKYXZhSW5zdGFuY2Ug
KChqb2JqZWN0KW5hdGl2ZUluc3RhbmNlLCBleGVjdXRpb25Db250ZXh0KTsNCi0JICAgIGJyZWFr
Ow0KLQl9DQotCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogew0KLQkgICAgbmV3
SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6Ok9iamNJbnN0YW5jZSAoKHN0cnVjdCBvYmpjX29iamVj
dCAqKW5hdGl2ZUluc3RhbmNlKTsNCi0JICAgIGJyZWFrOw0KLQl9DQotCWNhc2UgSW5zdGFuY2U6
OkNMYW5ndWFnZTogew0KLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6OkNJbnN0YW5j
ZSAoKE5QT2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOw0KLQkgICAgYnJlYWs7DQotCX0NCi0JZGVm
YXVsdDoNCi0JICAgIGJyZWFrOw0KKyAgICBjYXNlIEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsN
CisgICAgICAgIC8vbmV3SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6OkphdmFJbnN0YW5jZSAoKGpv
YmplY3QpbmF0aXZlSW5zdGFuY2UsIGV4ZWN1dGlvbkNvbnRleHQpOw0KKyAgICAgICAgYnJlYWs7
DQorICAgIH0NCisgICAgY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlOiB7DQorICAg
ICAgICAvL25ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpPYmpjSW5zdGFuY2UgKChzdHJ1Y3Qg
b2JqY19vYmplY3QgKiluYXRpdmVJbnN0YW5jZSk7DQorICAgICAgICBicmVhazsNCisgICAgfQ0K
KyAgICBjYXNlIEluc3RhbmNlOjpDTGFuZ3VhZ2U6IHsNCisgICAgICAgIG5ld0luc3RhbmNlID0g
bmV3IEJpbmRpbmdzOjpDSW5zdGFuY2UgKChOUE9iamVjdCAqKW5hdGl2ZUluc3RhbmNlKTsNCisg
ICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIGRlZmF1bHQ6DQorICAgICAgICBicmVhazsNCiAg
ICAgfQ0KIA0KICAgICBpZiAobmV3SW5zdGFuY2UpDQotCW5ld0luc3RhbmNlLT5zZXRFeGVjdXRp
b25Db250ZXh0IChleGVjdXRpb25Db250ZXh0KTsNCi0JDQorICAgIG5ld0luc3RhbmNlLT5zZXRF
eGVjdXRpb25Db250ZXh0IChleGVjdXRpb25Db250ZXh0KTsNCisgICAgDQogICAgIHJldHVybiBu
ZXdJbnN0YW5jZTsNCiB9DQogDQorRVhQT1JUX0MNCiBPYmplY3QgSW5zdGFuY2U6OmNyZWF0ZVJ1
bnRpbWVPYmplY3QgKEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgdm9pZCAqbmF0aXZlSW5zdGFu
Y2UsIGNvbnN0IFJvb3RPYmplY3QgKmV4ZWN1dGlvbkNvbnRleHQpDQogew0KICAgICBJbnN0YW5j
ZSAqaW50ZXJmYWNlT2JqZWN0ID0gSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUlu
c3RhbmNlIChsYW5ndWFnZSwgKHZvaWQgKiluYXRpdmVJbnN0YW5jZSwgZXhlY3V0aW9uQ29udGV4
dCk7DQpAQCAtMTM0LDMxICsxMzYsMzIgQEAgT2JqZWN0IEluc3RhbmNlOjpjcmVhdGVSdW50aW1l
T2JqZWN0IChCaQ0KICAgICByZXR1cm4gT2JqZWN0KG5ldyBSdW50aW1lT2JqZWN0SW1wKGludGVy
ZmFjZU9iamVjdCx0cnVlKSk7DQogfQ0KIA0KK0VYUE9SVF9DDQogdm9pZCAqSW5zdGFuY2U6OmNy
ZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFu
Z3VhZ2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9y
aWdpbiwgY29uc3QgUm9vdE9iamVjdCAqY3VycmVudCkNCiB7DQogICAgIHZvaWQgKnJlc3VsdCA9
IDA7DQogICAgIA0KICAgICBpZiAodmFsdWUudHlwZSgpICE9IE9iamVjdFR5cGUpDQotCXJldHVy
biAwOw0KKyAgICByZXR1cm4gMDsNCiANCiAgICAgT2JqZWN0SW1wICppbXAgPSBzdGF0aWNfY2Fz
dDxPYmplY3RJbXAqPih2YWx1ZS5pbXAoKSk7DQogICAgIA0KICAgICBzd2l0Y2ggKGxhbmd1YWdl
KSB7DQotCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogew0KLQkgICAgcmVzdWx0
ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFsdWUgKHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOw0K
LQkgICAgYnJlYWs7DQotCX0NCi0JY2FzZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7DQotCSAgICBy
ZXN1bHQgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoMCwgaW1wLCBvcmlnaW4sIGN1cnJlbnQp
Ow0KLQkgICAgYnJlYWs7DQotCX0NCi0JY2FzZSBJbnN0YW5jZTo6SmF2YUxhbmd1YWdlOiB7DQot
CSAgICAvLyBGSVhNRTogIGZhY3RvciBjcmVhdGlvbiBvZiBqbmlfanNvYmplY3RzLCBhbHNvIHJl
bW92ZSB1bm5lY2Vzc2FyeSB0aHJlYWQNCi0JICAgIC8vIGludm9jYXRpb24gY29kZS4NCi0JICAg
IGJyZWFrOw0KLQl9DQotCWRlZmF1bHQ6DQotCSAgICBicmVhazsNCisgICAgY2FzZSBJbnN0YW5j
ZTo6T2JqZWN0aXZlQ0xhbmd1YWdlOiB7DQorICAgICAgICAvL3Jlc3VsdCA9IGNyZWF0ZU9iamNJ
bnN0YW5jZUZvclZhbHVlICh2YWx1ZSwgb3JpZ2luLCBjdXJyZW50KTsNCisgICAgICAgIGJyZWFr
Ow0KKyAgICB9DQorICAgIGNhc2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogew0KKyAgICAgICAgcmVz
dWx0ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKDAsIGltcCwgb3JpZ2luLCBjdXJyZW50KTsN
CisgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIGNhc2UgSW5zdGFuY2U6OkphdmFMYW5ndWFn
ZTogew0KKyAgICAgICAgLy8gRklYTUU6ICBmYWN0b3IgY3JlYXRpb24gb2Ygam5pX2pzb2JqZWN0
cywgYWxzbyByZW1vdmUgdW5uZWNlc3NhcnkgdGhyZWFkDQorICAgICAgICAvLyBpbnZvY2F0aW9u
IGNvZGUuDQorICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBkZWZhdWx0Og0KKyAgICAgICAg
YnJlYWs7DQogICAgIH0NCiAgICAgDQogICAgIHJldHVybiByZXN1bHQ7DQpJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvcnVudGltZS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9ydW50aW1lLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQog
I2luY2x1ZGUgImxpc3QuaCINCiAjaW5jbHVkZSAib2JqZWN0LmgiDQogI2luY2x1ZGUgInZhbHVl
LmgiDQorI2luY2x1ZGUgImhhc2htYXAuaCINCiANCiBuYW1lc3BhY2UgS0pTIA0KIHsNCkBAIC0x
MzYsOSArMTM3LDkgQEAgcHVibGljOg0KICAgICBzdGF0aWMgdm9pZCBzZXREaWRFeGVjdXRlRnVu
Y3Rpb24gKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsNCiAgICAgc3RhdGljIEtKU0Rp
ZEV4ZWN1dGVGdW5jdGlvblB0ciBkaWRFeGVjdXRlRnVuY3Rpb24gKCk7DQogICAgIA0KLSAgICBz
dGF0aWMgSW5zdGFuY2UgKmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChCaW5kaW5n
TGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0
ICpyID0gMCk7DQotICAgIHN0YXRpYyB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFs
dWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBjb25zdCBPYmpl
Y3QgJnZhbHVlLCBjb25zdCBSb290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QgKmN1
cnJlbnQpOw0KLSAgICBzdGF0aWMgT2JqZWN0IGNyZWF0ZVJ1bnRpbWVPYmplY3QgKEJpbmRpbmdM
YW5ndWFnZSBsYW5ndWFnZSwgdm9pZCAqbmF0aXZlSW5zdGFuY2UsIGNvbnN0IFJvb3RPYmplY3Qg
KnIgPSAwKTsNCisgICAgSU1QT1JUX0Mgc3RhdGljIEluc3RhbmNlICpjcmVhdGVCaW5kaW5nRm9y
TGFuZ3VhZ2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJ
bnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOw0KKyAgICBJTVBPUlRfQyBzdGF0aWMg
dm9pZCAqY3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChFeGVjU3RhdGUgKmV4ZWMsIEJp
bmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgUm9vdE9i
amVjdCAqb3JpZ2luLCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KTsNCisgICAgSU1QT1JUX0Mg
c3RhdGljIE9iamVjdCBjcmVhdGVSdW50aW1lT2JqZWN0IChCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3Vh
Z2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0ICpyID0gMCk7DQogDQog
ICAgIEluc3RhbmNlICgpIDogX2V4ZWN1dGlvbkNvbnRleHQoMCkge307DQogICAgIA0KQEAgLTE4
Nyw2ICsxODgsOSBAQCBwdWJsaWM6DQogDQogY29uc3QgY2hhciAqc2lnbmF0dXJlRm9yUGFyYW1l
dGVycyhjb25zdCBLSlM6Okxpc3QgJmFMaXN0KTsNCiANCit0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFVTdHJpbmc6OlJlcD4sIE1ldGhvZExpc3QqPiBNZXRob2RMaXN0TWFwOw0KK3R5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOw0KK3R5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgRmllbGQqPiBGaWVsZE1hcDsNCiB9IC8vIG5h
bWVzcGFjZSBCaW5kaW5ncw0KIA0KIH0gLy8gbmFtZXNwYWNlIEtKUw0KSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcAkocmV2aXNpb24gMTcwNjkpDQor
KysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtNTQsNyArNTQsNyBAQCBSdW50aW1lT2JqZWN0SW1wOjp+UnVudGltZU9iamVjdElt
cCgpDQogICAgIH0NCiB9DQogDQotUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChC
aW5kaW5nczo6SW5zdGFuY2UgKmksIGJvb2wgb2kpIDogT2JqZWN0SW1wICgoT2JqZWN0SW1wICop
MCkNCitFWFBPUlRfQyBSdW50aW1lT2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKEJpbmRpbmdz
OjpJbnN0YW5jZSAqaSwgYm9vbCBvaSkgOiBPYmplY3RJbXAgKChPYmplY3RJbXAgKikwKQ0KIHsN
CiAgICAgb3duc0luc3RhbmNlID0gb2k7DQogICAgIGluc3RhbmNlID0gaTsNCkBAIC04Myw3ICs4
Myw3IEBAIFZhbHVlIFJ1bnRpbWVPYmplY3RJbXA6OmdldChFeGVjU3RhdGUgKmUNCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gT2JqZWN0IChuZXcgUnVudGltZU1ldGhvZEltcChleGVjLCBwcm9w
ZXJ0eU5hbWUsIG1ldGhvZExpc3QpKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQotCQ0K
KyAgICANCiAgICAgICAgIGlmIChyZXN1bHQudHlwZSgpID09IFVuZGVmaW5lZFR5cGUpIHsNCiAg
ICAgICAgICAgICAvLyBUcnkgYSBmYWxsYmFjayBvYmplY3QuDQogICAgICAgICAgICAgcmVzdWx0
ID0gYUNsYXNzLT5mYWxsYmFja09iamVjdCAoZXhlYywgaW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7
DQpAQCAtMTA3LDkgKzEwNyw5IEBAIHZvaWQgUnVudGltZU9iamVjdEltcDo6cHV0KEV4ZWNTdGF0
ZSAqZXgNCiAgICAgICAgIGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZkZpZWxkKGV4
ZWMsIGFGaWVsZCwgdmFsdWUpOw0KICAgICB9DQogICAgIGVsc2Ugew0KLQlpZiAoZ2V0SW50ZXJu
YWxJbnN0YW5jZSgpLT5zdXBwb3J0c1NldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCgpKXsNCi0JICAg
IGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUpOw0KLQl9DQorICAgIGlmIChnZXRJbnRlcm5hbEluc3RhbmNlKCkt
PnN1cHBvcnRzU2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKCkpew0KKyAgICAgICAgZ2V0SW50ZXJu
YWxJbnN0YW5jZSgpLT5zZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSk7DQorICAgIH0NCiAgICAgfQ0KIA0KICAgICBpbnN0YW5jZS0+ZW5kKCk7DQpAQCAt
MTI2LDcgKzEyNiw3IEBAIGJvb2wgUnVudGltZU9iamVjdEltcDo6Y2FuUHV0KEV4ZWNTdGF0ZSAN
CiAgICAgaW5zdGFuY2UtPmVuZCgpOw0KIA0KICAgICBpZiAoYUZpZWxkKQ0KLQlyZXR1cm4gdHJ1
ZTsNCisgICAgcmV0dXJuIHRydWU7DQogICAgIA0KICAgICByZXR1cm4gcmVzdWx0Ow0KIH0NCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX29iamVjdC5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24g
MTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9vYmplY3QuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOg0KICAgICANCiAgICAgflJ1bnRp
bWVPYmplY3RJbXAoKTsNCiAgICAgDQotICAgIFJ1bnRpbWVPYmplY3RJbXAoQmluZGluZ3M6Oklu
c3RhbmNlICppLCBib29sIG93bnNJbnN0YW5jZSA9IHRydWUpOw0KKyAgICBJTVBPUlRfQyBSdW50
aW1lT2JqZWN0SW1wKEJpbmRpbmdzOjpJbnN0YW5jZSAqaSwgYm9vbCBvd25zSW5zdGFuY2UgPSB0
cnVlKTsNCiANCiAgICAgY29uc3QgQ2xhc3NJbmZvICpjbGFzc0luZm8oKSBjb25zdCB7IHJldHVy
biAmaW5mbzsgfQ0KIA0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOg0KICAgICB2aXJ0dWFsIGJv
b2wgY2FuUHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1l
KSBjb25zdDsNCiANCiAgICAgdmlydHVhbCBib29sIGhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSAq
ZXhlYywNCi0JCQkgICAgIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3Q7DQor
ICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0Ow0K
IA0KIA0KICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLA0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lv
biAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuY3BwCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjAsOSArMjAsOSBAQA0KICAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkNCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQN
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UNCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiANCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAq
Lw0KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4NCisvLyNpbmNsdWRlIDxqbmlfanNvYmplY3Qu
aD4NCiAjaW5jbHVkZSA8cnVudGltZV9yb290Lmg+DQogDQogdXNpbmcgbmFtZXNwYWNlIEtKUzsN
CkBAIC00Miw2ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOw0KIC8vIDEg
T1IgdGhlIGFwcGxldCBpcyBzaHV0ZG93biB3ZSBkZXJlZiB0aGUgSmF2YVNjcmlwdCBpbnN0YW5j
ZS4gIEFwcGxldCBpbnN0YW5jZXMNCiAvLyBhcmUgcmVwcmVzZW50ZWQgYnkgYSBqbG9uZy4NCiAN
CisvKg0KIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNCeVJvb3REaWN0
aW9uYXJ5ID0gMDsNCiANCiBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBnZXRSZWZlcmVu
Y2VzQnlSb290RGljdGlvbmFyeSgpDQpAQCAtNTUsNyArNTYsNyBAQCBzdGF0aWMgQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBnZXRSZWZlcmVuDQogew0KICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVm
IHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290RGljdGlvbmFyeSgpOw0KICAgICBDRk11
dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gMDsNCi0gICAgDQorDQog
ICAgIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUgKHJlZnNCeVJvb3QsIChjb25zdCB2b2lkICopcm9vdCk7DQogICAgIGlm
ICghcmVmZXJlbmNlc0RpY3Rpb25hcnkpIHsNCiAgICAgICAgIHJlZmVyZW5jZXNEaWN0aW9uYXJ5
ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMLCBOVUxMKTsNCkBAIC02
NSw3ICs2Niw3IEBAIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGdldFJlZmVyZW4NCiAg
ICAgcmV0dXJuIHJlZmVyZW5jZXNEaWN0aW9uYXJ5Ow0KIH0NCiANCi0vLyBTY2FuIGFsbCB0aGUg
ZGljdGlvbmFyeSBmb3IgYWxsIHRoZSByb290cyB0byBzZWUgaWYgYW55IGhhdmUgYSANCisvLyBT
Y2FuIGFsbCB0aGUgZGljdGlvbmFyeSBmb3IgYWxsIHRoZSByb290cyB0byBzZWUgaWYgYW55IGhh
dmUgYQ0KIC8vIHJlZmVyZW5jZSB0byB0aGUgaW1wLCBhbmQgaWYgc28sIHJldHVybiBpdCdzIHJl
ZmVyZW5jZSBjb3VudA0KIC8vIGRpY3Rpb25hcnkuDQogLy8gRklYTUU6ICBUaGlzIGlzIGEgcG90
ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgd2l0aCBtYW55IGFwcGxldHMuICBXZSBjb3Vs
ZCBmaXggYmUgYWRkaW5nIGENCkBAIC03NCwxMSArNzUsMTEgQEAgQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZiBLSlM6OkJpbmRpbmdzOjpmaQ0KIHsNCiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBy
ZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgKCk7DQogICAgIENGTXV0
YWJsZURpY3Rpb25hcnlSZWYgZm91bmREaWN0aW9uYXJ5ID0gMDsNCi0gICAgDQorDQogICAgIGlm
IChyZWZzQnlSb290KSB7DQogICAgICAgICBjb25zdCB2b2lkICoqYWxsVmFsdWVzID0gMDsNCiAg
ICAgICAgIENGSW5kZXggY291bnQsIGk7DQotICAgICAgICANCisNCiAgICAgICAgIGNvdW50ID0g
Q0ZEaWN0aW9uYXJ5R2V0Q291bnQocmVmc0J5Um9vdCk7DQogICAgICAgICBhbGxWYWx1ZXMgPSAo
Y29uc3Qgdm9pZCAqKiltYWxsb2MgKHNpemVvZih2b2lkICopICogY291bnQpOw0KICAgICAgICAg
Q0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyAocmVmc0J5Um9vdCwgTlVMTCwgYWxsVmFsdWVz
KTsNCkBAIC04OSw3ICs5MCw3IEBAIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgS0pTOjpCaW5kaW5n
czo6ZmkNCiAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgfQ0KICAgICAgICAg
fQ0KLSAgICAgICAgDQorDQogICAgICAgICBmcmVlICgodm9pZCAqKWFsbFZhbHVlcyk7DQogICAg
IH0NCiAgICAgcmV0dXJuIGZvdW5kRGljdGlvbmFyeTsNCkBAIC0xMDEsMTIgKzEwMiwxMiBAQCBj
b25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nDQogew0KICAgICBDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290RGljdGlvbmFy
eSAoKTsNCiAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKnJvb3RPYmplY3QgPSAwOw0K
LSAgICANCisNCiAgICAgaWYgKHJlZnNCeVJvb3QpIHsNCiAgICAgICAgIGNvbnN0IHZvaWQgKiph
bGxWYWx1ZXMgPSAwOw0KICAgICAgICAgY29uc3Qgdm9pZCAqKmFsbEtleXMgPSAwOw0KICAgICAg
ICAgQ0ZJbmRleCBjb3VudCwgaTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgY291bnQgPSBDRkRp
Y3Rpb25hcnlHZXRDb3VudChyZWZzQnlSb290KTsNCiAgICAgICAgIGFsbEtleXMgPSAoY29uc3Qg
dm9pZCAqKiltYWxsb2MgKHNpemVvZih2b2lkICopICogY291bnQpOw0KICAgICAgICAgYWxsVmFs
dWVzID0gKGNvbnN0IHZvaWQgKiopbWFsbG9jIChzaXplb2Yodm9pZCAqKSAqIGNvdW50KTsNCkBA
IC0xMTgsNyArMTE5LDcgQEAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKktKUzo6QmluZGlu
Zw0KICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQot
ICAgICAgICANCisNCiAgICAgICAgIGZyZWUgKCh2b2lkICopYWxsS2V5cyk7DQogICAgICAgICBm
cmVlICgodm9pZCAqKWFsbFZhbHVlcyk7DQogICAgIH0NCkBAIC0xMjksMTIgKzEzMCwxMiBAQCBj
b25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nDQogew0KICAgICBDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290RGljdGlvbmFy
eSAoKTsNCiAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKmFSb290T2JqZWN0ID0gMCwg
KnJlc3VsdCA9IDA7DQotICAgIA0KKw0KICAgICBpZiAocmVmc0J5Um9vdCkgew0KICAgICAgICAg
Y29uc3Qgdm9pZCAqKmFsbFZhbHVlcyA9IDA7DQogICAgICAgICBjb25zdCB2b2lkICoqYWxsS2V5
cyA9IDA7DQogICAgICAgICBDRkluZGV4IGNvdW50LCBpOw0KLSAgICAgICAgDQorDQogICAgICAg
ICBjb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KHJlZnNCeVJvb3QpOw0KICAgICAgICAgYWxs
S2V5cyA9IChjb25zdCB2b2lkICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7DQog
ICAgICAgICBhbGxWYWx1ZXMgPSAoY29uc3Qgdm9pZCAqKiltYWxsb2MgKHNpemVvZih2b2lkICop
ICogY291bnQpOw0KQEAgLTE0Niw3ICsxNDcsNyBAQCBjb25zdCBCaW5kaW5nczo6Um9vdE9iamVj
dCAqS0pTOjpCaW5kaW5nDQogICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0N
CiAgICAgICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgZnJlZSAoKHZvaWQgKilhbGxLZXlz
KTsNCiAgICAgICAgIGZyZWUgKCh2b2lkICopYWxsVmFsdWVzKTsNCiAgICAgfQ0KQEAgLTE1Nyw3
ICsxNTgsNyBAQCB2b2lkIEtKUzo6QmluZGluZ3M6OmFkZE5hdGl2ZVJlZmVyZW5jZSAoDQogew0K
ICAgICBpZiAocm9vdCkgew0KICAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZlcmVu
Y2VzRGljdGlvbmFyeSA9IGdldFJlZmVyZW5jZXNEaWN0aW9uYXJ5IChyb290KTsNCi0gICAgICAg
IA0KKw0KICAgICAgICAgdW5zaWduZWQgaW50IG51bVJlZmVyZW5jZXMgPSAodW5zaWduZWQgaW50
KUNGRGljdGlvbmFyeUdldFZhbHVlIChyZWZlcmVuY2VzRGljdGlvbmFyeSwgaW1wKTsNCiAgICAg
ICAgIGlmIChudW1SZWZlcmVuY2VzID09IDApIHsNCiAjaWYgIVVTRV9DT05TRVJWQVRJVkVfR0MN
CkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVu
Y2UgKA0KICNpZiBVU0VfQ09OU0VSVkFUSVZFX0dDIHwgVEVTVF9DT05TRVJWQVRJVkVfR0MNCiAg
ICAgICAgICAgICBJbnRlcnByZXRlckxvY2sgbG9jazsNCiAgICAgICAgICAgICBnY1Byb3RlY3Qo
aW1wKTsNCi0jZW5kaWYgDQorI2VuZGlmDQogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5LCBpbXAsICAoY29uc3Qgdm9pZCAqKTEpOw0KICAgICAg
ICAgfQ0KICAgICAgICAgZWxzZSB7DQpAQCAtMTc4LDggKzE3OSw4IEBAIHZvaWQgS0pTOjpCaW5k
aW5nczo6YWRkTmF0aXZlUmVmZXJlbmNlICgNCiB2b2lkIEtKUzo6QmluZGluZ3M6OnJlbW92ZU5h
dGl2ZVJlZmVyZW5jZSAoT2JqZWN0SW1wICppbXApDQogew0KICAgICBpZiAoIWltcCkNCi0JcmV0
dXJuOw0KLQkNCisgICAgcmV0dXJuOw0KKw0KICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJl
ZmVyZW5jZXNEaWN0aW9uYXJ5ID0gZmluZFJlZmVyZW5jZURpY3Rpb25hcnkgKGltcCk7DQogDQog
ICAgIGlmIChyZWZlcmVuY2VzRGljdGlvbmFyeSkgew0KQEAgLTE5MSw3ICsxOTIsNyBAQCB2b2lk
IEtKUzo6QmluZGluZ3M6OnJlbW92ZU5hdGl2ZVJlZmVyZW5jDQogI2lmIFVTRV9DT05TRVJWQVRJ
VkVfR0MgfCBURVNUX0NPTlNFUlZBVElWRV9HQw0KICAgICAgICAgICAgIEludGVycHJldGVyTG9j
ayBsb2NrOw0KICAgICAgICAgICAgIGdjVW5wcm90ZWN0KGltcCk7DQotI2VuZGlmIA0KKyNlbmRp
Zg0KICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVlIChyZWZlcmVuY2VzRGljdGlv
bmFyeSwgaW1wKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2Ugew0KQEAgLTIyMywxMCArMjI0
LDEwIEBAIHN0YXRpYyBpbnQgamF2YVNjcmlwdEFjY2Vzc0xvY2tDb3VudCA9IDANCiBzdGF0aWMg
dm9pZCBpbml0aWFsaXplSmF2YVNjcmlwdEFjY2Vzc0xvY2soKQ0KIHsNCiAgICAgcHRocmVhZF9t
dXRleGF0dHJfdCBhdHRyOw0KLSAgICANCisNCiAgICAgcHRocmVhZF9tdXRleGF0dHJfaW5pdCgm
YXR0cik7DQogICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUgKCZhdHRyLCBQVEhSRUFEX01V
VEVYX1JFQ1VSU0lWRSk7DQotICAgIA0KKw0KICAgICBwdGhyZWFkX211dGV4X2luaXQoJmphdmFT
Y3JpcHRBY2Nlc3NMb2NrLCAmYXR0cik7DQogfQ0KIA0KQEAgLTI2MCw3ICsyNjEsNyBAQCB2b2lk
IFJvb3RPYmplY3Q6OmRpc3BhdGNoVG9KYXZhU2NyaXB0VGhyDQogICAgIC8vIGNhbGwgY29tcGxl
dGVzLg0KICAgICAvLw0KICAgICAvLyBGSVhNRTogIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwg
cGVyZm9ybWFuY2UgaXNzdWUuICBDcmVhdGluZyBhbmQNCi0gICAgLy8gYWRkaW5nIHJ1biBsb29w
IHNvdXJjZXMgaXMgZXhwZW5zaXZlLiAgV2UgY291bGQgY3JlYXRlIG9uZSBzb3VyY2UgDQorICAg
IC8vIGFkZGluZyBydW4gbG9vcCBzb3VyY2VzIGlzIGV4cGVuc2l2ZS4gIFdlIGNvdWxkIGNyZWF0
ZSBvbmUgc291cmNlDQogICAgIC8vIHBlciB0aHJlYWQsIGFzIG5lZWRlZCwgaW5zdGVhZC4NCiAg
ICAgY29udGV4dC0+b3JpZ2luYXRpbmdMb29wID0gY3VycmVudFJ1bkxvb3A7DQogICAgIENGUnVu
TG9vcFNvdXJjZUNvbnRleHQgc291cmNlQ29udGV4dCA9IHswLCBjb250ZXh0LCBOVUxMLCBOVUxM
LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBjb21wbGV0ZWRKYXZhU2NyaXB0QWNjZXNz
fTsNCkBAIC0yNzIsNyArMjczLDcgQEAgdm9pZCBSb290T2JqZWN0OjpkaXNwYXRjaFRvSmF2YVNj
cmlwdFRocg0KICAgICBpZiAoQ0ZSdW5Mb29wSXNXYWl0aW5nKFJvb3RPYmplY3Q6OnJ1bkxvb3Ao
KSkpIHsNCiAgICAgICAgIENGUnVuTG9vcFdha2VVcChSb290T2JqZWN0OjpydW5Mb29wKCkpOw0K
ICAgICB9DQotICAgIA0KKw0KICAgICAvLyBXYWl0IHVudGlsIHRoZSBKYXZhU2NyaXB0IGFjY2Vz
cyB0aHJlYWQgaXMgZG9uZS4NCiAgICAgQ0ZSdW5Mb29wUnVuICgpOw0KIA0KQEAgLTI4NiwxNSAr
Mjg3LDE1IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1KYXZhU2NyaXB0QWNjZXNzKHZvaWQNCiBzdGF0
aWMgdm9pZCBwZXJmb3JtSmF2YVNjcmlwdEFjY2Vzcyh2b2lkICppKQ0KIHsNCiAgICAgYXNzZXJ0
IChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gUm9vdE9iamVjdDo6cnVuTG9vcCgpKTsNCi0gICAg
DQorDQogICAgIC8vIERpc3BhdGNoIEphdmFTY3JpcHQgY2FsbHMgaGVyZS4NCiAgICAgQ0ZSdW5M
b29wU291cmNlQ29udGV4dCBzb3VyY2VDb250ZXh0Ow0KICAgICBDRlJ1bkxvb3BTb3VyY2VHZXRD
b250ZXh0IChjb21wbGV0aW9uU291cmNlLCAmc291cmNlQ29udGV4dCk7DQotICAgIEpTT2JqZWN0
Q2FsbENvbnRleHQgKmNhbGxDb250ZXh0ID0gKEpTT2JqZWN0Q2FsbENvbnRleHQgKilzb3VyY2VD
b250ZXh0LmluZm87ICAgIA0KKyAgICBKU09iamVjdENhbGxDb250ZXh0ICpjYWxsQ29udGV4dCA9
IChKU09iamVjdENhbGxDb250ZXh0ICopc291cmNlQ29udGV4dC5pbmZvOw0KICAgICBDRlJ1bkxv
b3BSZWYgb3JpZ2luYXRpbmdMb29wID0gY2FsbENvbnRleHQtPm9yaWdpbmF0aW5nTG9vcDsNCiAN
CiAgICAgSlNPYmplY3Q6Omludm9rZSAoY2FsbENvbnRleHQpOw0KLSAgICANCisNCiAgICAgLy8g
U2lnbmFsIHRoZSBvcmlnaW5hdGluZyB0aHJlYWQgdGhhdCB3ZSdyZSBkb25lLg0KICAgICBDRlJ1
bkxvb3BTb3VyY2VTaWduYWwgKGNvbXBsZXRpb25Tb3VyY2UpOw0KICAgICBpZiAoQ0ZSdW5Mb29w
SXNXYWl0aW5nKG9yaWdpbmF0aW5nTG9vcCkpIHsNCkBAIC0zMTIsOCArMzEzLDggQEAgdm9pZCBS
b290T2JqZWN0OjpzZXRGaW5kUm9vdE9iamVjdEZvck5hdA0KICAgICBhc3NlcnQgKF9maW5kUm9v
dE9iamVjdEZvck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyID09IDApOw0KIA0KICAgICBfZmluZFJv
b3RPYmplY3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciA9IGFGdW5jOw0KLSAgICANCi0gICAg
Ly8gQXNzdW1lIHRoYXQgd2UgY2FuIHJldGFpbiB0aGlzIHJ1biBsb29wIGZvcmV2ZXIuICBJdCds
bCBtb3N0IA0KKw0KKyAgICAvLyBBc3N1bWUgdGhhdCB3ZSBjYW4gcmV0YWluIHRoaXMgcnVuIGxv
b3AgZm9yZXZlci4gIEl0J2xsIG1vc3QNCiAgICAgLy8gbGlrZWx5IChhbHdheXM/KSBiZSB0aGUg
bWFpbiBsb29wLg0KICAgICBfcnVuTG9vcCA9IChDRlJ1bkxvb3BSZWYpQ0ZSZXRhaW4gKENGUnVu
TG9vcEdldEN1cnJlbnQgKCkpOw0KIA0KQEAgLTMyNCwxNSArMzI1LDE3IEBAIHZvaWQgUm9vdE9i
amVjdDo6c2V0RmluZFJvb3RPYmplY3RGb3JOYXQNCiAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKEJp
bmRpbmdzOjpSb290T2JqZWN0OjpfcnVuTG9vcCwgQmluZGluZ3M6OlJvb3RPYmplY3Q6Ol9wZXJm
b3JtSmF2YVNjcmlwdFNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsNCiB9DQogDQorKi8N
CiAvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsZXQgaXMgc2h1dGRvd24uDQorRVhQT1JU
X0MNCiB2b2lkIFJvb3RPYmplY3Q6OnJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCkNCiB7DQot
ICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJlbmNlc0RpY3Rpb25hcnkgPSBnZXRSZWZl
cmVuY2VzRGljdGlvbmFyeSAodGhpcyk7DQotICAgIA0KKy8qICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcmVmZXJlbmNlc0RpY3Rpb25hcnkgPSBnZXRSZWZlcmVuY2VzRGljdGlvbmFyeSAodGhp
cyk7DQorDQogICAgIGlmIChyZWZlcmVuY2VzRGljdGlvbmFyeSkgew0KICAgICAgICAgdm9pZCAq
KmFsbEltcHMgPSAwOw0KICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsNCi0gICAgICAgIA0KKw0K
ICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZlcmVuY2VzRGljdGlvbmFy
eSk7DQogICAgICAgICBhbGxJbXBzID0gKHZvaWQgKiopbWFsbG9jIChzaXplb2Yodm9pZCAqKSAq
IGNvdW50KTsNCiAgICAgICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMgKHJlZmVyZW5j
ZXNEaWN0aW9uYXJ5LCAoY29uc3Qgdm9pZCAqKilhbGxJbXBzLCBOVUxMKTsNCkBAIC0zNTQsMTAg
KzM1NywxMjYgQEAgdm9pZCBSb290T2JqZWN0OjpyZW1vdmVBbGxOYXRpdmVSZWZlcmVuYw0KICAg
ICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5
Um9vdERpY3Rpb25hcnkoKTsNCiAgICAgICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVlIChyZWZz
QnlSb290LCAoY29uc3Qgdm9pZCAqKXRoaXMpOw0KICAgICAgICAgZGVsZXRlIHRoaXM7DQorICAg
IH0qLw0KK30NCisNCisNCit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQmluZGluZ3M6OlJvb3RPYmpl
Y3QqLCBSZWZlcmVuY2VzU2V0Kj4gUmVmZXJlbmNlc0J5Um9vdE1hcDsNCisNCitzdGF0aWMgUmVm
ZXJlbmNlc0J5Um9vdE1hcCogZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCgpDQorew0KKyAgICBzdGF0
aWMgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmZXJlbmNlc0J5Um9vdE1hcCA9IDA7DQorDQorICAg
IGlmICghcmVmZXJlbmNlc0J5Um9vdE1hcCkNCisgICAgICAgIHJlZmVyZW5jZXNCeVJvb3RNYXAg
PSBuZXcgUmVmZXJlbmNlc0J5Um9vdE1hcDsNCisNCisgICAgcmV0dXJuIHJlZmVyZW5jZXNCeVJv
b3RNYXA7DQorfQ0KKw0KK3N0YXRpYyBSZWZlcmVuY2VzU2V0KiBnZXRSZWZlcmVuY2VzU2V0KGNv
bnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290KQ0KK3sNCisgICAgUmVmZXJlbmNlc0J5Um9v
dE1hcCogcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3RNYXAoKTsNCisgICAgUmVmZXJl
bmNlc1NldCogcmVmZXJlbmNlc1NldCA9IDA7DQorDQorICAgIHJlZmVyZW5jZXNTZXQgPSByZWZz
QnlSb290LT5nZXQocm9vdCk7DQorICAgIGlmICghcmVmZXJlbmNlc1NldCkgew0KKyAgICAgICAg
cmVmZXJlbmNlc1NldCAgPSBuZXcgUmVmZXJlbmNlc1NldDsNCisgICAgICAgIHJlZnNCeVJvb3Qt
PmFkZChyb290LCByZWZlcmVuY2VzU2V0KTsNCisgICAgfQ0KKyAgICByZXR1cm4gcmVmZXJlbmNl
c1NldDsNCit9DQorDQorLy8gU2NhbiBhbGwgdGhlIGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9v
dHMgdG8gc2VlIGlmIGFueSBoYXZlIGENCisvLyByZWZlcmVuY2UgdG8gdGhlIGltcCwgYW5kIGlm
IHNvLCByZXR1cm4gaXQncyByZWZlcmVuY2UgY291bnQNCisvLyBkaWN0aW9uYXJ5Lg0KKy8vIEZJ
WE1FOiAgVGhpcyBpcyBhIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIHdpdGggbWFu
eSBhcHBsZXRzLiAgV2UgY291bGQgZml4IGJlIGFkZGluZyBhDQorLy8gaW1wIHRvIHJvb3QgZGlj
dGlvbmFyeS4NCitSZWZlcmVuY2VzU2V0KiBLSlM6OkJpbmRpbmdzOjpmaW5kUmVmZXJlbmNlU2V0
KE9iamVjdEltcCAqaW1wKQ0KK3sNCisgICAgUmVmZXJlbmNlc0J5Um9vdE1hcCogcmVmc0J5Um9v
dCA9IGdldFJlZmVyZW5jZXNCeVJvb3RNYXAgKCk7DQorICAgIGlmIChyZWZzQnlSb290KSB7DQor
ICAgICAgICBSZWZlcmVuY2VzQnlSb290TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZWZzQnlS
b290LT5lbmQoKTsNCisgICAgICAgIGZvciAoUmVmZXJlbmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSByZWZzQnlSb290LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsNCisgICAg
ICAgICAgICBSZWZlcmVuY2VzU2V0KiBzZXQgPSBpdC0+c2Vjb25kOw0KKw0KKyAgICAgICAgICAg
IGlmIChzZXQtPmNvbnRhaW5zKGltcCkpDQorICAgICAgICAgICAgICAgIHJldHVybiBzZXQ7DQor
ICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8vIEZJWE1FOiAg
VGhpcyBpcyBhIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIHdpdGggbWFueSBhcHBs
ZXRzLiAgV2UgY291bGQgZml4IGJlIGFkZGluZyBhDQorLy8gaW1wIHRvIHJvb3QgZGljdGlvbmFy
eS4NCitjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqS0pTOjpCaW5kaW5nczo6cm9vdEZvcklt
cCAoT2JqZWN0SW1wICppbXApDQorew0KKyAgICBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZzQnlS
b290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCAoKTsNCisgICAgY29uc3QgQmluZGluZ3M6OlJv
b3RPYmplY3QgKnJvb3RPYmplY3QgPSAwOw0KKw0KKyAgICBpZiAocmVmc0J5Um9vdCkgew0KKyAg
ICAgICAgUmVmZXJlbmNlc0J5Um9vdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVmc0J5Um9v
dC0+ZW5kKCk7DQorICAgICAgICBmb3IgKFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcmVmc0J5Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7DQorICAgICAg
ICAgICAgUmVmZXJlbmNlc1NldCogc2V0ID0gaXQtPnNlY29uZDsNCisgICAgICAgICAgICBpZiAo
c2V0LT5jb250YWlucyhpbXApKSB7DQorICAgICAgICAgICAgICAgIHJvb3RPYmplY3QgPSBpdC0+
Zmlyc3Q7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAg
IH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gcm9vdE9iamVjdDsNCit9DQorDQorY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKktKUzo6QmluZGluZ3M6OnJvb3RGb3JJbnRlcnByZXRlciAoS0pT
OjpJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXIpDQorew0KKyAgICBSZWZlcmVuY2VzQnlSb290TWFw
KiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdE1hcCAoKTsNCisNCisgICAgaWYgKHJl
ZnNCeVJvb3QpIHsNCisgICAgICAgIFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHJlZnNCeVJvb3QtPmVuZCgpOw0KKyAgICAgICAgZm9yIChSZWZlcmVuY2VzQnlSb290
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlZnNCeVJvb3QtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgew0KKyAgICAgICAgICAgIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0KiBhUm9vdE9i
amVjdCA9IGl0LT5maXJzdDsNCisNCisgICAgICAgICAgICBpZiAoYVJvb3RPYmplY3QtPmludGVy
cHJldGVyKCkgPT0gaW50ZXJwcmV0ZXIpDQorICAgICAgICAgICAgICAgIHJldHVybiBhUm9vdE9i
amVjdDsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gMDsNCit9DQorDQordm9p
ZCBLSlM6OkJpbmRpbmdzOjphZGROYXRpdmVSZWZlcmVuY2UgKGNvbnN0IEJpbmRpbmdzOjpSb290
T2JqZWN0ICpyb290LCBPYmplY3RJbXAgKmltcCkNCit7DQorICAgIGlmIChyb290KSB7DQorICAg
ICAgICBSZWZlcmVuY2VzU2V0KiByZWZlcmVuY2VNYXAgPSBnZXRSZWZlcmVuY2VzU2V0IChyb290
KTsNCisNCisgICAgICAgIHVuc2lnbmVkIG51bVJlZmVyZW5jZXMgPSByZWZlcmVuY2VNYXAtPmNv
dW50KGltcCk7DQorICAgICAgICBpZiAobnVtUmVmZXJlbmNlcyA9PSAwKSB7DQorLy8gICAgICAg
ICAgICBKU0xvY2sgbG9jazsNCisgICAgICAgICAgICBnY1Byb3RlY3QoaW1wKTsNCisgICAgICAg
IH0NCisgICAgICAgIHJlZmVyZW5jZU1hcC0+YWRkKGltcCk7DQorICAgIH0NCit9DQorDQorRVhQ
T1JUX0Mgdm9pZCBLSlM6OkJpbmRpbmdzOjpyZW1vdmVOYXRpdmVSZWZlcmVuY2UgKE9iamVjdElt
cCAqaW1wKQ0KK3sNCisgICAgaWYgKCFpbXApDQorICAgICAgICByZXR1cm47DQorDQorICAgIFJl
ZmVyZW5jZXNTZXQgKnJlZmVyZW5jZXNTZXQgPSBmaW5kUmVmZXJlbmNlU2V0KGltcCk7DQorICAg
IGlmIChyZWZlcmVuY2VzU2V0KSB7DQorICAgICAgICB1bnNpZ25lZCBudW1SZWZlcmVuY2VzID0g
cmVmZXJlbmNlc1NldC0+Y291bnQoaW1wKTsNCisNCisgICAgICAgIGlmIChudW1SZWZlcmVuY2Vz
ID09IDEpIHsNCisvLyAgICAgICAgICAgIEpTTG9jayBsb2NrOw0KKyAgICAgICAgICAgIGdjVW5w
cm90ZWN0KGltcCk7DQorICAgICAgICB9DQorICAgICAgICByZWZlcmVuY2VzU2V0LT5yZW1vdmUo
aW1wKTsNCiAgICAgfQ0KIH0NCiANCi12b2lkIFJvb3RPYmplY3Q6OnNldEludGVycHJldGVyIChL
SlM6OkludGVycHJldGVyICppKQ0KK0VYUE9SVF9DIHZvaWQgUm9vdE9iamVjdDo6c2V0SW50ZXJw
cmV0ZXIgKEtKUzo6SW50ZXJwcmV0ZXIgKmkpDQogew0KICAgICBfaW50ZXJwcmV0ZXIgPSBpOw0K
IH0NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfcm9vdC5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX3Jvb3QuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTI3LDggKzI3LDkgQEANCiANCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIuaD4NCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvb2JqZWN0Lmg+DQot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL2puaV9qc29iamVjdC5oPg0KKy8vI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL2puaV9qc29iamVjdC5oPg0KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9w
cm90ZWN0Lmg+DQorI2luY2x1ZGUgPEhhc2hDb3VudGVkU2V0Lmg+DQogDQogbmFtZXNwYWNlIEtK
UyB7DQogDQpAQCAtMzYsOSArMzcsMTEgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsNCiANCiBjbGFz
cyBSb290T2JqZWN0Ow0KIA0KK3R5cGVkZWYgSGFzaENvdW50ZWRTZXQ8T2JqZWN0SW1wKj4gUmVm
ZXJlbmNlc1NldDsNCiB0eXBlZGVmIFJvb3RPYmplY3QgKigqRmluZFJvb3RPYmplY3RGb3JOYXRp
dmVIYW5kbGVGdW5jdGlvblB0cikodm9pZCAqKTsNCiANCi1leHRlcm4gQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJbXAgKmltcCk7DQorLy9leHRl
cm4gQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJ
bXAgKmltcCk7DQorZXh0ZXJuIFJlZmVyZW5jZXNTZXQqIGZpbmRSZWZlcmVuY2VTZXQoT2JqZWN0
SW1wICppbXApOw0KIGV4dGVybiBjb25zdCBSb290T2JqZWN0ICpyb290Rm9ySW1wIChPYmplY3RJ
bXAgKmltcCk7DQogZXh0ZXJuIGNvbnN0IFJvb3RPYmplY3QgKnJvb3RGb3JJbnRlcnByZXRlciAo
SW50ZXJwcmV0ZXIgKmludGVycHJldGVyKTsNCiBleHRlcm4gdm9pZCBhZGROYXRpdmVSZWZlcmVu
Y2UgKGNvbnN0IFJvb3RPYmplY3QgKnJvb3QsIE9iamVjdEltcCAqaW1wKTsNCkBAIC03NCwxMCAr
NzcsMTAgQEAgcHVibGljOg0KICAgICANCiAgICAgT2JqZWN0SW1wICpyb290T2JqZWN0SW1wKCkg
Y29uc3QgeyByZXR1cm4gX2ltcDsgfQ0KICAgICANCi0gICAgdm9pZCBzZXRJbnRlcnByZXRlciAo
SW50ZXJwcmV0ZXIgKmkpOw0KKyAgICBJTVBPUlRfQyB2b2lkIHNldEludGVycHJldGVyIChJbnRl
cnByZXRlciAqaSk7DQogICAgIEludGVycHJldGVyICppbnRlcnByZXRlcigpIGNvbnN0IHsgcmV0
dXJuIF9pbnRlcnByZXRlcjsgfQ0KIA0KLSAgICB2b2lkIHJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5j
ZXMgKCk7DQorICAgIElNUE9SVF9DIHZvaWQgcmVtb3ZlQWxsTmF0aXZlUmVmZXJlbmNlcyAoKTsN
CiANCiANCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgdGhyZWFkIHRoYXQgd2lsbCBi
ZSB1c2VkIHRvIGFjY2VzcyBKYXZhU2NyaXB0Lg0KQEAgLTg2LDEwICs4OSwxMCBAQCBwdWJsaWM6
DQogICAgICAgICByZXR1cm4gX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25Q
dHI7DQogICAgIH0NCiAgICAgDQotICAgIHN0YXRpYyBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIHsg
cmV0dXJuIF9ydW5Mb29wOyB9DQotICAgIHN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgcGVyZm9y
bUphdmFTY3JpcHRTb3VyY2UoKSB7IHJldHVybiBfcGVyZm9ybUphdmFTY3JpcHRTb3VyY2U7IH0N
Ci0gICAgDQotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9KYXZhU2NyaXB0VGhyZWFkKEpTT2Jq
ZWN0Q2FsbENvbnRleHQgKmNvbnRleHQpOw0KKyAgICAvL3N0YXRpYyBDRlJ1bkxvb3BSZWYgcnVu
TG9vcCgpIHsgcmV0dXJuIF9ydW5Mb29wOyB9DQorICAgIC8vc3RhdGljIENGUnVuTG9vcFNvdXJj
ZVJlZiBwZXJmb3JtSmF2YVNjcmlwdFNvdXJjZSgpIHsgcmV0dXJuIF9wZXJmb3JtSmF2YVNjcmlw
dFNvdXJjZTsgfQ0KKw0KKyAgICAvL3N0YXRpYyB2b2lkIGRpc3BhdGNoVG9KYXZhU2NyaXB0VGhy
ZWFkKEpTT2JqZWN0Q2FsbENvbnRleHQgKmNvbnRleHQpOw0KICAgICANCiAgICAgY29uc3Qgdm9p
ZCAqbmF0aXZlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gX25hdGl2ZUhhbmRsZTsgfQ0KIA0KQEAg
LTk5LDggKzEwMiw4IEBAIHByaXZhdGU6DQogICAgIEludGVycHJldGVyICpfaW50ZXJwcmV0ZXI7
DQogDQogICAgIHN0YXRpYyBGaW5kUm9vdE9iamVjdEZvck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRy
IF9maW5kUm9vdE9iamVjdEZvck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyOw0KLSAgICBzdGF0aWMg
Q0ZSdW5Mb29wUmVmIF9ydW5Mb29wOw0KLSAgICBzdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIF9w
ZXJmb3JtSmF2YVNjcmlwdFNvdXJjZTsNCisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wUmVmIF9ydW5M
b29wOw0KKyAgICAvL3N0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgX3BlcmZvcm1KYXZhU2NyaXB0
U291cmNlOw0KIH07DQogDQogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MNCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTEsNSAr
MSw1IEBADQogLyoNCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICAqDQogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
DQogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zDQpAQCAtMjAsMTE0ICsyMCw5NSBAQA0KICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkNCiAg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQNCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiANCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
Lg0KICAqLw0KLSNpbmNsdWRlIDxjX2NsYXNzLmg+DQotI2luY2x1ZGUgPGNfaW5zdGFuY2UuaD4N
Ci0jaW5jbHVkZSA8Y19ydW50aW1lLmg+DQogDQotdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGlu
Z3M7DQorI2luY2x1ZGUgImNvbmZpZy5oIg0KKyNpbmNsdWRlICJjX2NsYXNzLmgiDQogDQotYm9v
bCBOUE5fSXNWYWxpZElkZW50aWZpZXIgKGNvbnN0IE5QVVRGOCAqbmFtZSk7DQorI2luY2x1ZGUg
ImNfaW5zdGFuY2UuaCINCisjaW5jbHVkZSAiY19ydW50aW1lLmgiDQorI2luY2x1ZGUgIm5wcnVu
dGltZV9pbXBsLmgiDQorI2luY2x1ZGUgImlkZW50aWZpZXIuaCINCiANCi12b2lkIENDbGFzczo6
X2NvbW1vbkRlbGV0ZSgpIHsNCi0gICAgQ0ZSZWxlYXNlIChfZmllbGRzKTsNCi0gICAgQ0ZSZWxl
YXNlIChfbWV0aG9kcyk7DQotfQ0KLSAgICANCisvLyBGSVhNRTogU2hvdWxkIHVzZSBIYXNoTWFw
IGluc3RlYWQgb2YgQ0ZEaWN0aW9uYXJ5IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIGZvciBw
b3J0YWJpbGl0eS4NCiANCi12b2lkIENDbGFzczo6X2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZv
dGhlcikgew0KLSAgICBfaXNhID0gb3RoZXIuX2lzYTsNCi0gICAgX21ldGhvZHMgPSBDRkRpY3Rp
b25hcnlDcmVhdGVDb3B5IChOVUxMLCBvdGhlci5fbWV0aG9kcyk7DQotICAgIF9maWVsZHMgPSBD
RkRpY3Rpb25hcnlDcmVhdGVDb3B5IChOVUxMLCBvdGhlci5fZmllbGRzKTsNCi19DQotICAgIA0K
K25hbWVzcGFjZSBLSlMgew0KK25hbWVzcGFjZSBCaW5kaW5ncyB7DQogDQotdm9pZCBDQ2xhc3M6
Ol9jb21tb25Jbml0IChOUENsYXNzICphQ2xhc3MpDQorQ0NsYXNzOjpDQ2xhc3MoTlBDbGFzcyog
YUNsYXNzKQ0KIHsNCiAgICAgX2lzYSA9IGFDbGFzczsNCi0gICAgX21ldGhvZHMgPSBDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgTlVMTCk7DQotICAgIF9maWVsZHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5VTEws
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgTlVMTCk7DQogfQ0KIA0KLQ0KLXN0
YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNsYXNzZXNCeUlzQSA9IDA7DQotDQotc3RhdGlj
IHZvaWQgX2NyZWF0ZUNsYXNzZXNCeUlzQUlmTmVjZXNzYXJ5KCkNCitDQ2xhc3M6On5DQ2xhc3Mo
KQ0KIHsNCi0gICAgaWYgKGNsYXNzZXNCeUlzQSA9PSAwKQ0KLSAgICAgICAgY2xhc3Nlc0J5SXNB
ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgTlVMTCwgTlVMTCk7DQorICAg
IGRlbGV0ZUFsbFZhbHVlcyhfbWV0aG9kcyk7DQorICAgIGRlbGV0ZUFsbFZhbHVlcyhfZmllbGRz
KTsNCiB9DQogDQotQ0NsYXNzICpDQ2xhc3M6OmNsYXNzRm9ySXNBIChOUENsYXNzICppc2EpDQor
dHlwZWRlZiBIYXNoTWFwPE5QQ2xhc3MqLCBDQ2xhc3MqPiBDbGFzc2VzQnlJc0FNYXA7DQorc3Rh
dGljIENsYXNzZXNCeUlzQU1hcCogY2xhc3Nlc0J5SXNBID0gMDsNCisNCitDQ2xhc3MqIENDbGFz
czo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQ0KIHsNCi0gICAgX2NyZWF0ZUNsYXNzZXNCeUlz
QUlmTmVjZXNzYXJ5KCk7DQotICAgIA0KLSAgICBDQ2xhc3MgKmFDbGFzcyA9IChDQ2xhc3MgKilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFzc2VzQnlJc0EsIGlzYSk7DQotICAgIGlmIChhQ2xhc3Mg
PT0gTlVMTCkgew0KLSAgICAgICAgYUNsYXNzID0gbmV3IENDbGFzcyAoaXNhKTsNCi0gICAgICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlIChjbGFzc2VzQnlJc0EsIGlzYSwgYUNsYXNzKTsNCi0gICAg
fQ0KLSAgICANCi0gICAgcmV0dXJuIGFDbGFzczsNCi19DQorICAgIGlmICghY2xhc3Nlc0J5SXNB
KQ0KKyAgICAgICAgY2xhc3Nlc0J5SXNBID0gbmV3IENsYXNzZXNCeUlzQU1hcDsNCiANCisgICAg
Q0NsYXNzKiBhQ2xhc3MgPSBjbGFzc2VzQnlJc0EtPmdldChpc2EpOw0KKyAgICBpZiAoIWFDbGFz
cykgew0KKyAgICAgICAgYUNsYXNzID0gbmV3IENDbGFzcyhpc2EpOw0KKyAgICAgICAgY2xhc3Nl
c0J5SXNBLT5zZXQoaXNhLCBhQ2xhc3MpOw0KKyAgICB9DQogDQotQ0NsYXNzOjpDQ2xhc3MgKE5Q
Q2xhc3MgKmlzYSkNCi17DQotICAgIF9jb21tb25Jbml0IChpc2EpOw0KKyAgICByZXR1cm4gYUNs
YXNzOw0KIH0NCiANCi1jb25zdCBjaGFyICpDQ2xhc3M6Om5hbWUoKSBjb25zdA0KK2NvbnN0IGNo
YXIqIENDbGFzczo6bmFtZSgpIGNvbnN0DQogew0KICAgICByZXR1cm4gIiI7DQogfQ0KIA0KLU1l
dGhvZExpc3QgQ0NsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgY2hhciAqX25hbWUsIEluc3RhbmNl
ICppbnN0YW5jZSkgY29uc3QNCitNZXRob2RMaXN0IENDbGFzczo6bWV0aG9kc05hbWVkKGNvbnN0
IGNoYXIqIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QNCiB7DQorICAgIFVT
dHJpbmcgYSggaWRlbnRpZmllciApOw0KICAgICBNZXRob2RMaXN0IG1ldGhvZExpc3Q7DQogDQot
ICAgIENGU3RyaW5nUmVmIG1ldGhvZE5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5V
TEwsIF9uYW1lLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKTsNCi0gICAgTWV0aG9kICptZXRob2Qg
PSAoTWV0aG9kICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKF9tZXRob2RzLCBtZXRob2ROYW1lKTsN
CisgICAgTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5nZXQoYS5hcmVwKCkpOw0KICAgICBpZiAo
bWV0aG9kKSB7DQotICAgICAgICBDRlJlbGVhc2UgKG1ldGhvZE5hbWUpOw0KICAgICAgICAgbWV0
aG9kTGlzdC5hZGRNZXRob2QobWV0aG9kKTsNCiAgICAgICAgIHJldHVybiBtZXRob2RMaXN0Ow0K
ICAgICB9DQotICAgIA0KLSAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lk
ZW50aWZpZXIgKF9uYW1lKTsNCi0gICAgY29uc3QgQ0luc3RhbmNlICppbnN0ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOw0KLSAgICBOUE9iamVjdCAqb2JqID0gaW5z
dC0+Z2V0T2JqZWN0KCk7DQotICAgIGlmIChfaXNhLT5oYXNNZXRob2QgJiYgX2lzYS0+aGFzTWV0
aG9kIChvYmosIGlkZW50KSl7DQotICAgICAgICBNZXRob2QgKmFNZXRob2QgPSBuZXcgQ01ldGhv
ZCAoaWRlbnQpOw0KLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUgKChDRk11dGFibGVEaWN0
aW9uYXJ5UmVmKV9tZXRob2RzLCBtZXRob2ROYW1lLCBhTWV0aG9kKTsNCi0gICAgICAgIG1ldGhv
ZExpc3QuYWRkTWV0aG9kIChhTWV0aG9kKTsNCisNCisgICAgTlBJZGVudGlmaWVyIGlkZW50ID0g
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIoYS5hc2NpaSgpKTsNCisgICAgY29uc3QgQ0luc3RhbmNl
KiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOw0KKyAgICBO
UE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7DQorICAgIGlmIChfaXNhLT5oYXNNZXRo
b2QgJiYgX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKXsNCisgICAgICAgIE1ldGhvZCogYU1l
dGhvZCA9IG5ldyBDTWV0aG9kKGlkZW50KTsgLy8gZGVsZXRlZCBpbiB0aGUgQ0NsYXNzIGRlc3Ry
dWN0b3INCisgICAgICAgIF9tZXRob2RzLnNldChhLmFyZXAoKSwgYU1ldGhvZCk7DQorICAgICAg
ICBtZXRob2RMaXN0LmFkZE1ldGhvZChhTWV0aG9kKTsNCiAgICAgfQ0KIA0KLSAgICBDRlJlbGVh
c2UgKG1ldGhvZE5hbWUpOw0KLSAgICANCiAgICAgcmV0dXJuIG1ldGhvZExpc3Q7DQogfQ0KIA0K
IA0KLUZpZWxkICpDQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgY2hhciAqbmFtZSwgSW5zdGFuY2Ug
Kmluc3RhbmNlKSBjb25zdA0KK0ZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgY2hhciog
aWRlbnRpZmllciwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdA0KIHsNCi0gICAgQ0ZTdHJpbmdS
ZWYgZmllbGROYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBuYW1lLCBrQ0ZT
dHJpbmdFbmNvZGluZ0FTQ0lJKTsNCi0gICAgRmllbGQgKmFGaWVsZCA9IChGaWVsZCAqKUNGRGlj
dGlvbmFyeUdldFZhbHVlIChfZmllbGRzLCBmaWVsZE5hbWUpOw0KLSAgICBpZiAoYUZpZWxkKSB7
DQotICAgICAgICBDRlJlbGVhc2UgKGZpZWxkTmFtZSk7DQorICAgIFVTdHJpbmcgYSggaWRlbnRp
ZmllciApOw0KKyAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5nZXQoYS5hcmVwKCkpOw0KKyAg
ICBpZiAoYUZpZWxkKQ0KICAgICAgICAgcmV0dXJuIGFGaWVsZDsNCi0gICAgfQ0KIA0KLSAgICBO
UElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG5hbWUpOw0KLSAg
ICBjb25zdCBDSW5zdGFuY2UgKmluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihp
bnN0YW5jZSk7DQotICAgIE5QT2JqZWN0ICpvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsNCi0gICAg
aWYgKF9pc2EtPmhhc1Byb3BlcnR5ICYmIF9pc2EtPmhhc1Byb3BlcnR5IChvYmosIGlkZW50KSl7
DQotICAgICAgICBhRmllbGQgPSBuZXcgQ0ZpZWxkIChpZGVudCk7DQotICAgICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZSAoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpX2ZpZWxkcywgZmllbGROYW1l
LCBhRmllbGQpOw0KKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBOUE5fR2V0U3RyaW5nSWRlbnRp
ZmllcihhLmFzY2lpKCkpOw0KKyAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7DQorICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0
LT5nZXRPYmplY3QoKTsNCisgICAgaWYgKF9pc2EtPmhhc1Byb3BlcnR5ICYmIF9pc2EtPmhhc1By
b3BlcnR5KG9iaiwgaWRlbnQpKXsNCisgICAgICAgIGFGaWVsZCA9IG5ldyBDRmllbGQoaWRlbnQp
OyAvLyBkZWxldGVkIGluIHRoZSBDQ2xhc3MgZGVzdHJ1Y3Rvcg0KKyAgICAgICAgX2ZpZWxkcy5z
ZXQoYS5hcmVwKCksIGFGaWVsZCk7DQogICAgIH0NCi0gICAgDQotICAgIENGUmVsZWFzZSAoZmll
bGROYW1lKTsNCi0NCiAgICAgcmV0dXJuIGFGaWVsZDsNCi19Ow0KK30NCisNCit9DQorfQ0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX2NsYXNzLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjAsMTIgKzIwLDEzIEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQ0KICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQ0KLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIA0KKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogICovDQogI2lmbmRlZiBfQklO
RElOR1NfT0JKQ19DTEFTU19IXw0KICNkZWZpbmUgX0JJTkRJTkdTX09CSkNfQ0xBU1NfSF8NCiAN
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4NCisjaW5jbHVkZSAi
ZmFzdF9tYWxsb2MuaCINCisjaW5jbHVkZSA8SGFzaE1hcC5oPg0KIA0KIA0KICNpbmNsdWRlIDxy
dW50aW1lLmg+DQpAQCAtMzksNTQgKzQwLDI4IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7DQogY2xh
c3MgQ0NsYXNzIDogcHVibGljIEtKUzo6QmluZGluZ3M6OkNsYXNzDQogew0KICAgICAvLyBVc2Ug
dGhlIHB1YmxpYyBzdGF0aWMgZmFjdG9yeSBtZXRob2RzIHRvIGdldCBpbnN0YW5jZXMgb2YgSmF2
YUNsYXNzLg0KLSAgICANCisNCiBwcm90ZWN0ZWQ6DQotICAgIHZvaWQgX2NvbW1vbkluaXQgKE5Q
Q2xhc3MgKmFDbGFzcyk7DQotICAgIHZvaWQgX2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZvdGhl
cik7DQotICAgIHZvaWQgX2NvbW1vbkRlbGV0ZSgpOw0KLSAgICAgICAgDQorICAgIENDbGFzcyhO
UENsYXNzKik7IC8vIFVzZSBjbGFzc0ZvcklzQSB0byBjcmVhdGUgYSBDQ2xhc3MuDQorDQogcHVi
bGljOg0KLSAgICBDQ2xhc3MgKE5QQ2xhc3MgKmFDbGFzcyk7DQorICAgIHN0YXRpYyBDQ2xhc3Mq
IGNsYXNzRm9ySXNBKE5QQ2xhc3MqKTsNCisgICAgdmlydHVhbCB+Q0NsYXNzKCk7DQorDQorICAg
IHZpcnR1YWwgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIE1ldGhvZExp
c3QgbWV0aG9kc05hbWVkKGNvbnN0IGNoYXIqLCBJbnN0YW5jZSopIGNvbnN0Ow0KKyAgICB2aXJ0
dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IGNoYXIgKiwgSW5zdGFuY2UqKSBjb25zdDsNCisN
CisgICAgdmlydHVhbCBDb25zdHJ1Y3RvciogY29uc3RydWN0b3JBdChsb25nKSBjb25zdCB7IHJl
dHVybiAwOyB9DQorICAgIHZpcnR1YWwgbG9uZyBudW1Db25zdHJ1Y3RvcnMoKSBjb25zdCB7IHJl
dHVybiAwOyB9DQogDQotICAgIC8vIFJldHVybiB0aGUgY2FjaGVkIE9iakMgb2YgdGhlIHNwZWNp
ZmllZCBuYW1lLg0KLSAgICAvL3N0YXRpYyBDQ2xhc3MgKmNsYXNzRm9yTmFtZSAoY29uc3QgY2hh
ciAqbmFtZSk7DQotICAgIHN0YXRpYyBDQ2xhc3MgKmNsYXNzRm9ySXNBIChOUENsYXNzICphQ2xh
c3MpOw0KLSAgICAgICAgICAgIA0KLSAgICB+Q0NsYXNzICgpIHsNCi0gICAgICAgIF9jb21tb25E
ZWxldGUoKTsNCi0gICAgfQ0KLSAgICANCi0gICAgQ0NsYXNzIChjb25zdCBDQ2xhc3MgJm90aGVy
KSA6IENsYXNzKCkgew0KLSAgICAgICAgX2NvbW1vbkNvcHkgKG90aGVyKTsNCi0gICAgfTsNCi0N
Ci0gICAgQ0NsYXNzICZvcGVyYXRvcj0oY29uc3QgQ0NsYXNzICZvdGhlcikNCi0gICAgew0KLSAg
ICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQ0KLSAgICAgICAgICAgIHJldHVybiAqdGhpczsNCi0g
ICAgICAgICAgICANCi0gICAgICAgIF9jb21tb25EZWxldGUoKTsNCi0gICAgICAgIF9jb21tb25D
b3B5IChvdGhlcik7DQotICAgICAgICANCi0gICAgICAgIHJldHVybiAqdGhpczsNCi0gICAgfQ0K
LQ0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsNCi0gICAgDQotICAgIHZp
cnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgY2hhciAqbmFtZSwgSW5zdGFuY2Ug
Kmluc3RhbmNlKSBjb25zdDsNCi0gICAgDQotICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQo
Y29uc3QgY2hhciAqbmFtZSwgSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdDsNCi0gICAgDQotICAg
IHZpcnR1YWwgQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yQXQobG9uZyBpKSBjb25zdCB7DQotICAg
ICAgICByZXR1cm4gMDsNCi0gICAgfTsNCi0gICAgDQotICAgIHZpcnR1YWwgbG9uZyBudW1Db25z
dHJ1Y3RvcnMoKSBjb25zdCB7IHJldHVybiAwOyB9Ow0KLSAgICAgICAgDQogcHJpdmF0ZToNCi0g
ICAgTlBDbGFzcyAqX2lzYTsNCi0gICAgQ0ZEaWN0aW9uYXJ5UmVmIF9tZXRob2RzOw0KLSAgICBD
RkRpY3Rpb25hcnlSZWYgX2ZpZWxkczsNCisgICAgQ0NsYXNzKGNvbnN0IENDbGFzcyYpOyAvLyBw
cm9oaWJpdCBjb3B5aW5nDQorICAgIENDbGFzcyYgb3BlcmF0b3I9KGNvbnN0IENDbGFzcyYpOyAv
LyBwcm9oaWJpdCBhc3NpZ25tZW50DQorDQorICAgIE5QQ2xhc3MqIF9pc2E7DQorICAgIG11dGFi
bGUgTWV0aG9kTWFwIF9tZXRob2RzOw0KKyAgICBtdXRhYmxlIEZpZWxkTWFwIF9maWVsZHM7DQog
fTsNCiANCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncw0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL2MvY19pbnN0YW5jZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsNyAr
MjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkNCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiANCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAqLw0KICNpbmNsdWRlIDxjX2NsYXNzLmg+
DQogI2luY2x1ZGUgPGNfaW5zdGFuY2UuaD4NCkBAIC0zMywzMiArMzMsMjkgQEANCiAjaWZkZWYg
TkRFQlVHDQogI2RlZmluZSBDX0xPRyhmb3JtYXRBbmRBcmdzLi4uKSAoKHZvaWQpMCkNCiAjZWxz
ZQ0KLSNkZWZpbmUgQ19MT0coZm9ybWF0QW5kQXJncy4uLikgeyBcDQotICAgIGZwcmludGYgKHN0
ZGVyciwgIiVzOiVkIC0tICVzOiAgIiwgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18p
OyBcDQotICAgIGZwcmludGYoc3RkZXJyLCBmb3JtYXRBbmRBcmdzKTsgXA0KLX0NCisjZGVmaW5l
IENfTE9HKGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQ0KICNlbmRpZg0KIA0KIHVzaW5nIG5h
bWVzcGFjZSBLSlM6OkJpbmRpbmdzOw0KIHVzaW5nIG5hbWVzcGFjZSBLSlM7DQogDQotQ0luc3Rh
bmNlOjpDSW5zdGFuY2UgKE5QT2JqZWN0ICpvKSANCitDSW5zdGFuY2U6OkNJbnN0YW5jZSAoTlBP
YmplY3QgKm8pDQogew0KLSAgICBfb2JqZWN0ID0gX05QTl9SZXRhaW5PYmplY3QgKG8pOw0KKyAg
ICBfb2JqZWN0ID0gTlBOX1JldGFpbk9iamVjdCAobyk7DQogICAgIF9jbGFzcyA9IDA7DQogICAg
IHNldEV4ZWN1dGlvbkNvbnRleHQgKDApOw0KIH07DQogDQotQ0luc3RhbmNlOjp+Q0luc3RhbmNl
ICgpIA0KK0NJbnN0YW5jZTo6fkNJbnN0YW5jZSAoKQ0KIHsNCi0gICAgX05QTl9SZWxlYXNlT2Jq
ZWN0IChfb2JqZWN0KTsNCisgICAgTlBOX1JlbGVhc2VPYmplY3QgKF9vYmplY3QpOw0KICAgICBk
ZWxldGUgX2NsYXNzOw0KIH0NCiANCiANCi1DSW5zdGFuY2U6OkNJbnN0YW5jZSAoY29uc3QgQ0lu
c3RhbmNlICZvdGhlcikgOiBJbnN0YW5jZSgpIA0KK0NJbnN0YW5jZTo6Q0luc3RhbmNlIChjb25z
dCBDSW5zdGFuY2UgJm90aGVyKSA6IEluc3RhbmNlKCkNCiB7DQotICAgIF9vYmplY3QgPSBfTlBO
X1JldGFpbk9iamVjdCAob3RoZXIuX29iamVjdCk7DQorICAgIF9vYmplY3QgPSBOUE5fUmV0YWlu
T2JqZWN0IChvdGhlci5fb2JqZWN0KTsNCiAgICAgX2NsYXNzID0gMDsNCiAgICAgc2V0RXhlY3V0
aW9uQ29udGV4dCAob3RoZXIuZXhlY3V0aW9uQ29udGV4dCgpKTsNCiB9Ow0KQEAgLTY2LDE5ICs2
MywxOSBAQCBDSW5zdGFuY2U6OkNJbnN0YW5jZSAoY29uc3QgQ0luc3RhbmNlICZvDQogQ0luc3Rh
bmNlICZDSW5zdGFuY2U6Om9wZXJhdG9yPShjb25zdCBDSW5zdGFuY2UgJm90aGVyKXsNCiAgICAg
aWYgKHRoaXMgPT0gJm90aGVyKQ0KICAgICAgICAgcmV0dXJuICp0aGlzOw0KLSAgICANCisNCiAg
ICAgTlBPYmplY3QgKl9vbGRPYmplY3QgPSBfb2JqZWN0Ow0KLSAgICBfb2JqZWN0PSBfTlBOX1Jl
dGFpbk9iamVjdCAob3RoZXIuX29iamVjdCk7DQotICAgIF9OUE5fUmVsZWFzZU9iamVjdCAoX29s
ZE9iamVjdCk7DQorICAgIF9vYmplY3Q9IE5QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3Qp
Ow0KKyAgICBOUE5fUmVsZWFzZU9iamVjdCAoX29sZE9iamVjdCk7DQogICAgIF9jbGFzcyA9IDA7
DQotICAgIA0KKw0KICAgICByZXR1cm4gKnRoaXM7DQogfTsNCiANCiBDbGFzcyAqQ0luc3RhbmNl
OjpnZXRDbGFzcygpIGNvbnN0DQogew0KLSAgICBpZiAoIV9jbGFzcykgew0KLSAgICAgICAgX2Ns
YXNzID0gbmV3IENDbGFzcyAoX29iamVjdC0+X2NsYXNzKTsNCisgICAgaWYgKCFfY2xhc3Mpew0K
KyAgICAgICAgX2NsYXNzID0gQ0NsYXNzOjpjbGFzc0ZvcklzQShfb2JqZWN0LT5fY2xhc3MpOw0K
ICAgICB9DQogICAgIHJldHVybiBfY2xhc3M7DQogfQ0KQEAgLTEwNSw3ICsxMDIsNyBAQCBWYWx1
ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZCAoS0pTOjpFeGVjDQogICAgIENNZXRob2QgKm1ldGhv
ZCA9IDA7DQogICAgIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihtZXRob2RMaXN0Lm1l
dGhvZEF0KDApKTsNCiANCi0gICAgTlBJZGVudGlmaWVyIGlkZW50ID0gX05QTl9HZXRTdHJpbmdJ
ZGVudGlmaWVyIChtZXRob2QtPm5hbWUoKSk7DQorICAgIE5QSWRlbnRpZmllciBpZGVudCA9IE5Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyIChtZXRob2QtPm5hbWUoKSk7DQogICAgIGlmICghX29iamVj
dC0+X2NsYXNzLT5oYXNNZXRob2QgKF9vYmplY3QsIGlkZW50KSkgew0KICAgICAgICAgcmV0dXJu
IFVuZGVmaW5lZCgpOw0KICAgICB9DQpAQCAtMTE3LDcgKzExNCw3IEBAIFZhbHVlIENJbnN0YW5j
ZTo6aW52b2tlTWV0aG9kIChLSlM6OkV4ZWMNCiAgICAgICAgIGNBcmdzID0gKE5QVmFyaWFudCAq
KW1hbGxvYyAoc2l6ZW9mKE5QVmFyaWFudCkqY291bnQpOw0KICAgICBlbHNlDQogICAgICAgICBj
QXJncyA9IGxvY2FsQnVmZmVyOw0KLSAgICANCisNCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsNCiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChleGVjLCBhcmdzLmF0
KGkpLCAmY0FyZ3NbaV0pOw0KICAgICB9DQpAQCAtMTI4LDIwICsxMjUsMjAgQEAgVmFsdWUgQ0lu
c3RhbmNlOjppbnZva2VNZXRob2QgKEtKUzo6RXhlYw0KICAgICBfb2JqZWN0LT5fY2xhc3MtPmlu
dm9rZSAoX29iamVjdCwgaWRlbnQsIGNBcmdzLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOw0KIA0K
ICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgew0KLSAgICAgICAgX05QTl9SZWxlYXNl
VmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOw0KKyAgICAgICAgTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUgKCZjQXJnc1tpXSk7DQogICAgIH0NCiANCiAgICAgaWYgKGNBcmdzICE9IGxvY2FsQnVmZmVy
KQ0KICAgICAgICAgZnJlZSAoKHZvaWQgKiljQXJncyk7DQotICAgICAgICAgICAgDQorDQogICAg
IGlmICghTlBWQVJJQU5UX0lTX1ZPSUQocmVzdWx0VmFyaWFudCkpIHsNCiAgICAgICAgIHJlc3Vs
dFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUgKGV4ZWMsICZyZXN1bHRWYXJpYW50KTsN
Ci0gICAgICAgIA0KLSAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVzdWx0VmFy
aWFudCk7DQotICAgICAgICANCisNCisgICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgm
cmVzdWx0VmFyaWFudCk7DQorDQogICAgICAgICByZXR1cm4gcmVzdWx0VmFsdWU7DQogICAgIH0N
Ci0gICAgDQorDQogICAgIHJldHVybiBVbmRlZmluZWQoKTsNCiB9DQogDQpAQCAtMTUwLDcgKzE0
Nyw3IEBAIFZhbHVlIENJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCAoS0oNCiB7DQogICAg
IFZhbHVlIHJlc3VsdFZhbHVlOw0KIA0KLSAgICBpZiAoX29iamVjdC0+X2NsYXNzLT5pbnZva2VE
ZWZhdWx0KSB7ICAgICANCisgICAgaWYgKF9vYmplY3QtPl9jbGFzcy0+aW52b2tlRGVmYXVsdCkg
ew0KICAgICAgICAgdW5zaWduZWQgaSwgY291bnQgPSBhcmdzLnNpemUoKTsNCiAgICAgICAgIE5Q
VmFyaWFudCAqY0FyZ3M7DQogICAgICAgICBOUFZhcmlhbnQgbG9jYWxCdWZmZXJbMTI4XTsNCkBA
IC0xNTgsNyArMTU1LDcgQEAgVmFsdWUgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kIChL
Sg0KICAgICAgICAgICAgIGNBcmdzID0gKE5QVmFyaWFudCAqKW1hbGxvYyAoc2l6ZW9mKE5QVmFy
aWFudCkqY291bnQpOw0KICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgIGNBcmdzID0gbG9jYWxC
dWZmZXI7DQotICAgICAgICANCisNCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7DQogICAgICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQgKGV4ZWMsIGFyZ3MuYXQo
aSksICZjQXJnc1tpXSk7DQogICAgICAgICB9DQpAQCAtMTY5LDIxICsxNjYsMjEgQEAgVmFsdWUg
Q0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kIChLSg0KICAgICAgICAgX29iamVjdC0+X2Ns
YXNzLT5pbnZva2VEZWZhdWx0IChfb2JqZWN0LCBjQXJncywgY291bnQsICZyZXN1bHRWYXJpYW50
KTsNCiANCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQotICAgICAgICAg
ICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOw0KKyAgICAgICAgICAgIE5Q
Tl9SZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOw0KICAgICAgICAgfQ0KIA0KICAgICAg
ICAgaWYgKGNBcmdzICE9IGxvY2FsQnVmZmVyKQ0KICAgICAgICAgICAgIGZyZWUgKCh2b2lkICop
Y0FyZ3MpOw0KLSAgICAgICAgICAgICAgICANCisNCiAgICAgICAgIGlmICghTlBWQVJJQU5UX0lT
X1ZPSUQocmVzdWx0VmFyaWFudCkpIHsNCiAgICAgICAgICAgICByZXN1bHRWYWx1ZSA9IGNvbnZl
cnROUFZhcmlhbnRUb1ZhbHVlIChleGVjLCAmcmVzdWx0VmFyaWFudCk7DQotICAgICAgICAgICAg
DQotICAgICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVzdWx0VmFyaWFudCk7
DQotICAgICAgICAgICAgDQorDQorICAgICAgICAgICAgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUg
KCZyZXN1bHRWYXJpYW50KTsNCisNCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0VmFsdWU7DQog
ICAgICAgICB9DQogICAgIH0NCi0gICAgDQorDQogICAgIHJldHVybiBVbmRlZmluZWQoKTsNCiB9
DQogDQpAQCAtMTk5LDE0ICsxOTYsMTQgQEAgS0pTOjpWYWx1ZSBDSW5zdGFuY2U6OmRlZmF1bHRW
YWx1ZSAoS0pTOg0KICAgICBlbHNlIGlmIChoaW50ID09IEtKUzo6Qm9vbGVhblR5cGUpIHsNCiAg
ICAgICAgIHJldHVybiBib29sZWFuVmFsdWUoKTsNCiAgICAgfQ0KLSAgICANCisNCiAgICAgcmV0
dXJuIHZhbHVlT2YoKTsNCiB9DQogDQogS0pTOjpWYWx1ZSBDSW5zdGFuY2U6OnN0cmluZ1ZhbHVl
KCkgY29uc3QNCiB7DQogICAgIGNoYXIgYnVmWzEwMjRdOw0KLSAgICBzbnByaW50ZiAoYnVmLCAx
MDI0LCAiTlBPYmplY3QgJXAsIE5QQ2xhc3MgJXAiLCBfb2JqZWN0LCBfb2JqZWN0LT5fY2xhc3Mp
Ow0KKyAgICAvL3NucHJpbnRmIChidWYsIDEwMjQsICJOUE9iamVjdCAlcCwgTlBDbGFzcyAlcCIs
IF9vYmplY3QsIF9vYmplY3QtPl9jbGFzcyk7DQogICAgIEtKUzo6U3RyaW5nIHYoYnVmKTsNCiAg
ICAgcmV0dXJuIHY7DQogfQ0KQEAgLTIyNSw3ICsyMjIsNyBAQCBLSlM6OlZhbHVlIENJbnN0YW5j
ZTo6Ym9vbGVhblZhbHVlKCkgY29uDQogICAgIHJldHVybiB2Ow0KIH0NCiANCi1LSlM6OlZhbHVl
IENJbnN0YW5jZTo6dmFsdWVPZigpIGNvbnN0IA0KK0tKUzo6VmFsdWUgQ0luc3RhbmNlOjp2YWx1
ZU9mKCkgY29uc3QNCiB7DQogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOw0KIH07DQpJbmRleDog
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3J1bnRpbWUuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19ydW50aW1lLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19ydW50aW1lLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0yNSw3ICsyNSw3IEBADQogI2lmbmRlZiBfQklORElOR1NfT0JKQ19SVU5USU1FX0hfDQogI2Rl
ZmluZSBfQklORElOR1NfT0JKQ19SVU5USU1FX0hfDQogDQotI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+DQorLy8jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4NCiANCiAjaW5jbHVkZSA8bnBydW50aW1lLmg+DQogI2luY2x1ZGUgPG5wcnVu
dGltZV9pbXBsLmg+DQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgS0pT
OjpWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5z
dGFuY2UgKmluc3RhbmNlKSBjb25zdDsNCiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0
YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5zdGFuY2UgKmluc3RhbmNlLCBjb25z
dCBLSlM6OlZhbHVlICZhVmFsdWUpIGNvbnN0Ow0KICAgICANCi0gICAgdmlydHVhbCBjb25zdCBj
aGFyICpuYW1lKCkgY29uc3QgeyByZXR1cm4gX05QTl9VVEY4RnJvbUlkZW50aWZpZXIoX2ZpZWxk
SWRlbnRpZmllcik7IH0NCisgICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gTlBOX1VURjhGcm9tSWRlbnRpZmllcihfZmllbGRJZGVudGlmaWVyKTsgfQ0KICAgICB2
aXJ0dWFsIFJ1bnRpbWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiAiIjsgfQ0KICAgICANCiBw
cml2YXRlOg0KQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOg0KIA0KICAgICBDTWV0aG9kKE5QSWRl
bnRpZmllciBpZGVudCkgOiBNZXRob2QoKSwgX21ldGhvZElkZW50aWZpZXIoaWRlbnQpIHt9Ow0K
ICAgICANCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyByZXR1cm4gX05Q
Tl9VVEY4RnJvbUlkZW50aWZpZXIoX21ldGhvZElkZW50aWZpZXIpOyB9Ow0KKyAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdCB7IHJldHVybiBOUE5fVVRGOEZyb21JZGVudGlmaWVy
KF9tZXRob2RJZGVudGlmaWVyKTsgfTsNCiANCiAgICAgdmlydHVhbCBsb25nIG51bVBhcmFtZXRl
cnMoKSBjb25zdCB7IHJldHVybiAwOyB9Ow0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL2MvY191dGlsaXR5LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsMTAgKzIwLDEw
IEBADQogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQ0KICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIA0KKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogICovDQotI2luY2x1ZGUgPGNfaW5zdGFuY2UuaD4g
DQotI2luY2x1ZGUgPGNfdXRpbGl0eS5oPiANCisjaW5jbHVkZSA8Y19pbnN0YW5jZS5oPg0KKyNp
bmNsdWRlIDxjX3V0aWxpdHkuaD4NCiAjaW5jbHVkZSA8aW50ZXJuYWwuaD4NCiAjaW5jbHVkZSA8
bnBydW50aW1lX2ltcGwuaD4NCiAjaW5jbHVkZSA8bnBydW50aW1lX3ByaXYuaD4NCkBAIC00NSwy
MCArNDUsNTAgQEAgdm9pZCBjb252ZXJ0TlBTdHJpbmdUb1VURjE2IChjb25zdCBOUFN0cg0KIC8v
IFJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBVVEYxNkNoYXJzLg0KIHZvaWQgY29udmVydFVU
RjhUb1VURjE2IChjb25zdCBOUFVURjggKlVURjhDaGFycywgaW50IFVURjhMZW5ndGgsIE5QVVRG
MTYgKipVVEYxNkNoYXJzLCB1bnNpZ25lZCBpbnQgKlVURjE2TGVuZ3RoKQ0KIHsNCi0gICAgYXNz
ZXJ0IChVVEY4Q2hhcnMpOw0KLSAgICANCiAgICAgaWYgKFVURjhMZW5ndGggPT0gLTEpDQogICAg
ICAgICBVVEY4TGVuZ3RoID0gc3RybGVuKFVURjhDaGFycyk7DQotICAgICAgICANCi0gICAgQ0ZT
dHJpbmdSZWYgc3RyaW5nUmVmID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMgKE5VTEwsIChjb25z
dCBVSW50OCopVVRGOENoYXJzLCAoQ0ZJbmRleClVVEY4TGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIGZhbHNlKTsNCiANCi0gICAgKlVURjE2TGVuZ3RoID0gKHVuc2lnbmVkIGludClDRlN0
cmluZ0dldExlbmd0aCAoc3RyaW5nUmVmKTsNCi0gICAgKlVURjE2Q2hhcnMgPSAoTlBVVEYxNiAq
KW1hbGxvYyAoc2l6ZW9mKE5QVVRGMTYpICogKCpVVEYxNkxlbmd0aCkpOw0KKyAgICAqVVRGMTZM
ZW5ndGggPSBVVEY4TGVuZ3RoOw0KIA0KLSAgICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgdG8gVVRG
MTYuDQotICAgIENGUmFuZ2UgcmFuZ2UgPSB7IDAsICpVVEYxNkxlbmd0aCB9Ow0KLSAgICBDRlN0
cmluZ0dldENoYXJhY3RlcnMgKHN0cmluZ1JlZiwgcmFuZ2UsIChVbmlDaGFyICopKlVURjE2Q2hh
cnMpOw0KLSAgICBDRlJlbGVhc2UgKHN0cmluZ1JlZik7DQorICAgICpVVEYxNkNoYXJzID0gKE5Q
VVRGMTYgKiltYWxsb2Moc2l6ZW9mKE5QVVRGMTYpICogKCpVVEYxNkxlbmd0aCkpOw0KKw0KKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKlVURjE2TGVuZ3RoOyBpKyspDQorICAgICAgICAo
KlVURjE2Q2hhcnMpW2ldID0gVVRGOENoYXJzW2ldICYgMHhGRjsNCisNCisgICAvKiBhc3NlcnQo
VVRGOENoYXJzIHx8IFVURjhMZW5ndGggPT0gMCk7DQorICAgIGFzc2VydChVVEYxNkNoYXJzKTsN
CisNCisgICAgaWYgKFVURjhMZW5ndGggPT0gLTEpDQorICAgICAgICBVVEY4TGVuZ3RoID0gc3Ry
bGVuKFVURjhDaGFycyk7DQorDQorICAgIC8vIFVURjE2TGVuZ3RoIG1heGltdW0gbGVuZ3RoIGlz
IHRoZSBsZW5ndGggb2YgdGhlIFVURjggc3RyaW5nLCBwbHVzIG9uZSB0byBpbmNsdWRlIHRlcm1p
bmF0b3INCisgICAgLy8gV2l0aG91dCB0aGUgcGx1cyBvbmUsIGl0IHdpbGwgY29udmVydCBvaywg
YnV0IGEgd2FybmluZyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY29udmVydGVyIGFzDQorICAgIC8v
IHRoZXJlIGlzIG5vdCBlbm91Z2ggcm9vbSBmb3IgYSB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuDQor
ICAgICpVVEYxNkxlbmd0aCA9IFVURjhMZW5ndGggKyAxOw0KKw0KKyAgICAqVVRGMTZDaGFycyA9
IDA7DQorICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOw0KKyAgICBVQ29udmVy
dGVyKiBjb252ID0gdWNudl9vcGVuKCJ1dGY4IiwgJnN0YXR1cyk7DQorICAgIGlmIChVX1NVQ0NF
U1Moc3RhdHVzKSkgew0KKyAgICAgICAgKlVURjE2Q2hhcnMgPSAoTlBVVEYxNiAqKW1hbGxvYyhz
aXplb2YoTlBVVEYxNikgKiAoKlVURjE2TGVuZ3RoKSk7DQorICAgICAgICB1Y252X3NldFRvVUNh
bGxCYWNrKGNvbnYsIFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QLCAwLCAwLCAwLCAmc3RhdHVzKTsN
CisgICAgICAgICpVVEYxNkxlbmd0aCA9IHVjbnZfdG9VQ2hhcnMoY29udiwgKDo6VUNoYXIqKSpV
VEYxNkNoYXJzLCAqVVRGMTZMZW5ndGgsIFVURjhDaGFycywgVVRGOExlbmd0aCwgJnN0YXR1cyk7
DQorICAgICAgICB1Y252X2Nsb3NlKGNvbnYpOw0KKyAgICB9DQorDQorICAgIC8vIENoZWNrIHRv
IHNlZSBpZiB0aGUgY29udmVyc2lvbiB3YXMgc3VjY2Vzc2Z1bA0KKyAgICAvLyBTb21lIHBsdWdp
bnMgcmV0dXJuIGludmFsaWQgVVRGLTggaW4gTlBWYXJpYW50VHlwZV9TdHJpbmcsIHNlZSA8aHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYzPg0KKyAgICAv
LyBUaGVyZSBpcyBubyAiYmFkIGRhdGEiIGZvciBsYXRpbjEuIEl0IGlzIHVubGlrZWx5IHRoYXQg
dGhlIHBsdWdpbiB3YXMgcmVhbGx5IHNlbmRpbmcgdGV4dCBpbiB0aGlzIGVuY29kaW5nLA0KKyAg
ICAvLyBidXQgaXQgc2hvdWxkIGhhdmUgdXNlZCBVVEYtOCwgYW5kIG5vdyB3ZSBhcmUgc2ltcGx5
IGF2b2lkaW5nIGEgY3Jhc2guDQorICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsNCisgICAg
ICAgICpVVEYxNkxlbmd0aCA9IFVURjhMZW5ndGg7DQorDQorICAgICAgICBpZiAoISpVVEYxNkNo
YXJzKSAgIC8vIElmIHRoZSBtZW1vcnkgd2Fzbid0IGFsbG9jYXRlZCwgYWxsb2NhdGUgaXQuDQor
ICAgICAgICAgICAgKlVURjE2Q2hhcnMgPSAoTlBVVEYxNiAqKW1hbGxvYyhzaXplb2YoTlBVVEYx
NikgKiAoKlVURjE2TGVuZ3RoKSk7DQorDQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgKlVURjE2TGVuZ3RoOyBpKyspDQorICAgICAgICAgICAgKCpVVEYxNkNoYXJzKVtpXSA9IFVU
RjhDaGFyc1tpXSAmIDB4RkY7DQorICAgIH0qLw0KIH0NCiANCiAvLyBWYXJpYW50IHZhbHVlIG11
c3QgYmUgcmVsZWFzZWQgd2l0aCBOUFJlbGVhc2VWYXJpYW50VmFsdWUoKQ0KQEAgLTc0LDcgKzEw
NCw3IEBAIHZvaWQgY29lcmNlVmFsdWVUb05QVmFyaWFudFN0cmluZ1R5cGUgKEsNCiB2b2lkIGNv
bnZlcnRWYWx1ZVRvTlBWYXJpYW50IChLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgS0pTOjpW
YWx1ZSAmdmFsdWUsIE5QVmFyaWFudCAqcmVzdWx0KQ0KIHsNCiAgICAgVHlwZSB0eXBlID0gdmFs
dWUudHlwZSgpOw0KLSAgICANCisNCiAgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSkgew0KICAg
ICAgICAgVVN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7DQogICAgICAgICBD
U3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5nLlVURjhTdHJpbmcoKTsNCkBAIC0xMDAsMzAgKzEzMCwz
MCBAQCB2b2lkIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChLSlM6OkV4ZWNTDQogICAgICAgICAg
ICAgQ0luc3RhbmNlICppbnN0YW5jZSA9IHN0YXRpY19jYXN0PENJbnN0YW5jZSo+KGltcC0+Z2V0
SW50ZXJuYWxJbnN0YW5jZSgpKTsNCiAgICAgICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRX
aXRoT2JqZWN0IChyZXN1bHQsIGluc3RhbmNlLT5nZXRPYmplY3QoKSk7DQogICAgICAgICB9DQot
CWVsc2Ugew0KKyAgICBlbHNlIHsNCiANCi0JICAgIEtKUzo6SW50ZXJwcmV0ZXIgKm9yaWdpbklu
dGVycHJldGVyID0gZXhlYy0+aW50ZXJwcmV0ZXIoKTsNCisgICAgICAgIEtKUzo6SW50ZXJwcmV0
ZXIgKm9yaWdpbkludGVycHJldGVyID0gZXhlYy0+aW50ZXJwcmV0ZXIoKTsNCiAgICAgICAgICAg
ICBjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqb3JpZ2luRXhlY3V0aW9uQ29udGV4dCA9IHJv
b3RGb3JJbnRlcnByZXRlcihvcmlnaW5JbnRlcnByZXRlcik7DQogDQotCSAgICBLSlM6OkludGVy
cHJldGVyICppbnRlcnByZXRlciA9IDA7DQotCSAgICBpZiAob3JpZ2luSW50ZXJwcmV0ZXItPmlz
R2xvYmFsT2JqZWN0KHZhbHVlKSkgew0KLQkJaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRl
ci0+aW50ZXJwcmV0ZXJGb3JHbG9iYWxPYmplY3QgKHZhbHVlLmltcCgpKTsNCi0JICAgIH0NCi0N
Ci0JICAgIGlmICghaW50ZXJwcmV0ZXIpDQotCQlpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJl
dGVyOw0KLQkJDQorICAgICAgICBLSlM6OkludGVycHJldGVyICppbnRlcnByZXRlciA9IDA7DQor
ICAgICAgICBpZiAob3JpZ2luSW50ZXJwcmV0ZXItPmlzR2xvYmFsT2JqZWN0KHZhbHVlKSkgew0K
KyAgICAgICAgaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRlci0+aW50ZXJwcmV0ZXJGb3JH
bG9iYWxPYmplY3QgKHZhbHVlLmltcCgpKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGlmICgh
aW50ZXJwcmV0ZXIpDQorICAgICAgICBpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJldGVyOw0K
Kw0KICAgICAgICAgICAgIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250
ZXh0ID0gcm9vdEZvckludGVycHJldGVyKGludGVycHJldGVyKTsNCiAgICAgICAgICAgICBpZiAo
IWV4ZWN1dGlvbkNvbnRleHQpIHsNCiAgICAgICAgICAgICAgICAgQmluZGluZ3M6OlJvb3RPYmpl
Y3QgKm5ld0V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCgw
KTsNCiAgICAgICAgICAgICAgICAgbmV3RXhlY3V0aW9uQ29udGV4dC0+c2V0SW50ZXJwcmV0ZXIg
KGludGVycHJldGVyKTsNCiAgICAgICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dCA9IG5ld0V4
ZWN1dGlvbkNvbnRleHQ7DQogICAgICAgICAgICAgfQ0KLSAgICANCi0JICAgIE5QT2JqZWN0ICpv
YmogPSAoTlBPYmplY3QgKilleGVjLT5pbnRlcnByZXRlcigpLT5jcmVhdGVMYW5ndWFnZUluc3Rh
bmNlRm9yVmFsdWUgKGV4ZWMsIEluc3RhbmNlOjpDTGFuZ3VhZ2UsIHZhbHVlLnRvT2JqZWN0KGV4
ZWMpLCBvcmlnaW5FeGVjdXRpb25Db250ZXh0LCBleGVjdXRpb25Db250ZXh0KTsNCi0JICAgIE5Q
Tl9Jbml0aWFsaXplVmFyaWFudFdpdGhPYmplY3QgKHJlc3VsdCwgb2JqKTsNCi0JICAgIF9OUE5f
UmVsZWFzZU9iamVjdCAob2JqKTsNCi0JfQ0KKw0KKyAgICAgICAgTlBPYmplY3QgKm9iaiA9IChO
UE9iamVjdCAqKWV4ZWMtPmludGVycHJldGVyKCktPmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JW
YWx1ZSAoZXhlYywgSW5zdGFuY2U6OkNMYW5ndWFnZSwgdmFsdWUudG9PYmplY3QoZXhlYyksIG9y
aWdpbkV4ZWN1dGlvbkNvbnRleHQsIGV4ZWN1dGlvbkNvbnRleHQpOw0KKyAgICAgICAgTlBOX0lu
aXRpYWxpemVWYXJpYW50V2l0aE9iamVjdCAocmVzdWx0LCBvYmopOw0KKyAgICAgICAgTlBOX1Jl
bGVhc2VPYmplY3QgKG9iaik7DQorICAgIH0NCiAgICAgfQ0KICAgICBlbHNlDQogICAgICAgICBO
UE5fSW5pdGlhbGl6ZVZhcmlhbnRBc1VuZGVmaW5lZChyZXN1bHQpOw0KQEAgLTE2Nyw3ICsxOTcs
NyBAQCBWYWx1ZSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoS0pTOjpFeGVjDQogICAgIH0NCiAg
ICAgZWxzZSBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX09iamVjdCkgew0KICAgICAgICAgTlBP
YmplY3QgKm9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVlOw0KLSAgICAgICAgDQorDQog
ICAgICAgICBpZiAob2JqLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgew0KICAgICAg
ICAgICAgIC8vIEdldCBPYmplY3RJbXAgZnJvbSBOUF9KYXZhU2NyaXB0T2JqZWN0Lg0KICAgICAg
ICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm8gPSAoSmF2YVNjcmlwdE9iamVjdCAqKW9iajsNCkBA
IC0xNzgsNyArMjA4LDE2IEBAIFZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlIChLSlM6OkV4
ZWMNCiAgICAgICAgICAgICByZXR1cm4gSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoSW5z
dGFuY2U6OkNMYW5ndWFnZSwgKHZvaWQgKilvYmopOw0KICAgICAgICAgfQ0KICAgICB9DQotICAg
IA0KKw0KICAgICByZXR1cm4gVW5kZWZpbmVkKCk7DQogfQ0KIA0KK0lkZW50aWZpZXIgaWRlbnRp
ZmllckZyb21OUElkZW50aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKQ0KK3sNCisgICAgTlBVVEYx
NiAqbWV0aG9kTmFtZTsNCisgICAgdW5zaWduZWQgVVRGMTZMZW5ndGg7DQorICAgIGNvbnZlcnRV
VEY4VG9VVEYxNihuYW1lLCAtMSwgJm1ldGhvZE5hbWUsICZVVEYxNkxlbmd0aCk7IC8vIHJlcXVp
cmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1vcnkuDQorICAgIElkZW50aWZpZXIgaWRlbnRpZmll
cigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOw0KKyAgICBmcmVl
KG1ldGhvZE5hbWUpOw0KKyAgICByZXR1cm4gaWRlbnRpZmllcjsNCit9DQpJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2
ICszMCw3IEBADQogI2luY2x1ZGUgPHJ1bnRpbWUuaD4NCiAjaW5jbHVkZSA8cnVudGltZV9vYmpl
Y3QuaD4NCiAjaW5jbHVkZSA8cnVudGltZV9yb290Lmg+DQorI2luY2x1ZGUgPGlkZW50aWZpZXIu
aD4NCiANCiB0eXBlZGVmIHVpbnQxNl90IE5QVVRGMTY7DQogTlBVVEYxNiAqTlBOX1VURjE2RnJv
bVN0cmluZyAoTlBTdHJpbmcgKm9iaik7DQpAQCAtNTEsNiArNTIsNyBAQCBleHRlcm4gdm9pZCBj
b252ZXJ0VVRGOFRvVVRGMTYgKGNvbnN0IE5QDQogZXh0ZXJuIHZvaWQgY29lcmNlVmFsdWVUb05Q
VmFyaWFudFN0cmluZ1R5cGUgKEtKUzo6RXhlY1N0YXRlICpleGVjLCBjb25zdCBLSlM6OlZhbHVl
ICZ2YWx1ZSwgTlBWYXJpYW50ICpyZXN1bHQpOw0KIGV4dGVybiB2b2lkIGNvbnZlcnRWYWx1ZVRv
TlBWYXJpYW50IChLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgS0pTOjpWYWx1ZSAmdmFsdWUs
IE5QVmFyaWFudCAqcmVzdWx0KTsNCiBleHRlcm4gS0pTOjpWYWx1ZSBjb252ZXJ0TlBWYXJpYW50
VG9WYWx1ZSAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5QVmFyaWFudCAqdmFyaWFudCk7
DQorS0pTOjpJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGNvbnN0IE5QVVRG
OCogbmFtZSk7DQogDQogdHlwZWRlZiBzdHJ1Y3QgDQogew0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2dyb3VwL0phdmFTY3JpcHRDb3JlLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L2dyb3VwL0phdmFTY3JpcHRDb3JlLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlw
dENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNDgsMTIg
KzQ4LDE1IEBAIGRlZmZpbGUgQm1hcm1cSmF2YVNjcmlwdENvcmUuZGVmDQogDQogDQogU1lTVEVN
SU5DTFVERSAuLlxranMNCitVU0VSSU5DTFVERSAuLlxiaW5kaW5ncw0KK1NZU1RFTUlOQ0xVREUg
Li5cYmluZGluZ3MNCitTWVNURU1JTkNMVURFIC4uXGJpbmRpbmdzXGMNCiBTWVNURU1JTkNMVURF
IC4uXHBjcmUNCiBTWVNURU1JTkNMVURFIC4uXC4uXE1lbW9yeU1hbmFnZXJcaW5jDQogI2lmbmRl
ZiBfX0JST1dTRVJfU0RLDQogTVdfTEFZRVJfU1lTVEVNSU5DTFVERQ0KICNlbHNlDQotU1lTVEVN
SU5DTFVERSBcRVBPQzMyXElOQ0xVREUNCitTWVNURU1JTkNMVURFIFxFUE9DMzJcSU5DTFVERSBc
ZXBvYzMyXGluY2x1ZGVcb2VtDQogI2VuZGlmDQogU1lTVEVNSU5DTFVERSBcRVBPQzMyXElOQ0xV
REVcTElCQw0KIA0KQEAgLTEwMSw2ICsxMDQsMjQgQEAgU09VUkNFIHVzdHJpbmcuY3BwDQogU09V
UkNFIGZhc3RfbWFsbG9jLmNwcA0KIFNPVVJDRSB2YWx1ZS5jcHANCiAvL1NPVVJDRSBXcnRTdGF0
aWNzLmNwcA0KKw0KK1NPVVJDRVBBVEggIC4uXGJpbmRpbmdzDQorDQorU09VUkNFIG5wcnVudGlt
ZS5jcHANCitTT1VSQ0UgTlBfanNvYmplY3QuY3BwIA0KK1NPVVJDRSBydW50aW1lLmNwcCANCitT
T1VSQ0UgcnVudGltZV9hcnJheS5jcHAgDQorU09VUkNFIHJ1bnRpbWVfbWV0aG9kLmNwcCANCitT
T1VSQ0UgcnVudGltZV9vYmplY3QuY3BwIA0KK1NPVVJDRSBydW50aW1lX3Jvb3QuY3BwIA0KKy8v
U09VUkNFIHNvZnRsaW5raW5nLmMgDQorDQorU09VUkNFUEFUSCAgLi5cYmluZGluZ3NcYw0KKw0K
K1NPVVJDRSBjX2NsYXNzLmNwcA0KK1NPVVJDRSBjX2luc3RhbmNlLmNwcA0KK1NPVVJDRSBjX3J1
bnRpbWUuY3BwDQorU09VUkNFIGNfdXRpbGl0eS5jcHANCiANCiBMSUJSQVJZICAgICAgICAgZXN0
bGliLmxpYg0KIExJQlJBUlkgICAgICAgICBldXNlci5saWINCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ncm91cC9ibGQuaW5mDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvZ3JvdXAvYmxk
LmluZgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAvYmxkLmluZgko
d29ya2luZyBjb3B5KQ0KQEAgLTIxLDYgKzIxLDIxIEBADQogUFJKX1BMQVRGT1JNUw0KIERFRkFV
TFQNCiANCitQUkpfRVhQT1JUUw0KKy4uXGtqc1xpbnRlcm5hbC5oICAgICAgICAgXGVwb2MzMlxp
bmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxpbnRlcm5hbC5oDQorLi5ca2pzXGludGVycHJldGVy
LmggICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXGludGVycHJldGVyLmgN
CisuLlxranNcb2JqZWN0LmggICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlw
dGNvcmVcb2JqZWN0LmgNCisuLlxranNccHJvdGVjdC5oICAgICAgICAgIFxlcG9jMzJcaW5jbHVk
ZVxvZW1camF2YXNjcmlwdGNvcmVccHJvdGVjdC5oDQorLi5ca2pzXHN0ZGludC5oICAgICAgICAg
ICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHN0ZGludC5oDQorDQorLi5cYmlu
ZGluZ3NcbnBydW50aW1lLmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3Jp
cHRjb3JlXG5wcnVudGltZS5oDQorLi5cYmluZGluZ3NcbnBydW50aW1lX2ltcGwuaCAgICAgICAg
ICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcbnBydW50aW1lX2ltcGwuaA0K
Ky4uXGJpbmRpbmdzXG5wcnVudGltZV9wcml2LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVc
b2VtXGphdmFzY3JpcHRjb3JlXG5wcnVudGltZV9wcml2LmgNCisuLlxiaW5kaW5nc1xydW50aW1l
LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHJ1bnRpbWUu
aA0KKy4uXGJpbmRpbmdzXHJ1bnRpbWVfb2JqZWN0LmggICAgICAgICAgICBcZXBvYzMyXGluY2x1
ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHJ1bnRpbWVfb2JqZWN0LmgNCisuLlxiaW5kaW5nc1xydW50
aW1lX3Jvb3QuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVc
cnVudGltZV9yb290LmgNCisuLlxiaW5kaW5nc1xOUF9qc29iamVjdC5oICAgICAgICAgICAgXGVw
b2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxOUF9qc29iamVjdC5oDQorLi5cYmluZGlu
Z3NcY1xjX3V0aWxpdHkuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlw
dGNvcmVcY191dGlsaXR5LmgNCiBQUkpfTU1QRklMRVMNCiBwY3JlLm1tcA0KIEphdmFTY3JpcHRD
b3JlLm1tcA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENP
UkVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3aW5zY3cvSkFW
QVNDUklQVENPUkVVLkRFRgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3Jv
dXAvQndpbnNjdy9KQVZBU0NSSVBUQ09SRVUuREVGCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwxMzkg
KzEsMTY4IEBADQogRVhQT1JUUw0KLQk/PzBCb29sZWFuQEtKU0BAUUFFQF9OQFogQCAxIE5PTkFN
RSA7IEtKUzo6Qm9vbGVhbjo6Qm9vbGVhbihib29sKQ0KLQk/PzBJbnRlcnByZXRlckBLSlNAQFFB
RUBBQlZPYmplY3RAMUBAWiBAIDIgTk9OQU1FIDsgS0pTOjpJbnRlcnByZXRlcjo6SW50ZXJwcmV0
ZXIoY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJikNCi0JPz8wTGlzdEBLSlNAQFFBRUBYWiBAIDMg
Tk9OQU1FIDsgS0pTOjpMaXN0OjpMaXN0KHZvaWQpDQotCT8/ME51bGxAS0pTQEBRQUVAWFogQCA0
IE5PTkFNRSA7IEtKUzo6TnVsbDo6TnVsbCh2b2lkKQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVASEBa
IEAgNSBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGludCkNCi0JPz8wTnVtYmVyQEtKU0BA
UUFFQElAWiBAIDYgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcih1bnNpZ25lZCBpbnQpDQot
CT8/ME51bWJlckBLSlNAQFFBRUBKQFogQCA3IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIo
bG9uZykNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQEtAWiBAIDggTk9OQU1FIDsgS0pTOjpOdW1iZXI6
Ok51bWJlcih1bnNpZ25lZCBsb25nKQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVATkBaIEAgOSBOT05B
TUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGRvdWJsZSkNCi0JPz8wT2JqZWN0SW1wQEtKU0BAUUFF
QEFCVk9iamVjdEAxQEBaIEAgMTAgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6Ok9iamVjdEltcChj
bGFzcyBLSlM6Ok9iamVjdCBjb25zdCAmKQ0KLQk/PzBPYmplY3RJbXBAS0pTQEBRQUVAWFogQCAx
MSBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6T2JqZWN0SW1wKHZvaWQpDQotCT8/MFN0cmluZ0BL
SlNAQFFBRUBBQlZVU3RyaW5nQDFAQFogQCAxMiBOT05BTUUgOyBLSlM6OlN0cmluZzo6U3RyaW5n
KGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQEFCVjAx
QDBAWiBAIDEzIE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjbGFzcyBLSlM6OlVTdHJp
bmcgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQotCT8/MFVTdHJpbmdAS0pT
QEBRQUVAREBaIEAgMTQgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIpDQotCT8/
MFVTdHJpbmdAS0pTQEBRQUVAUEFVVUNoYXJAMUBIX05AWiBAIDE1IE5PTkFNRSA7IEtKUzo6VVN0
cmluZzo6VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQsIGJvb2wpDQotCT8/MFVTdHJp
bmdAS0pTQEBRQUVAUEJEQFogQCAxNiBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoY2hh
ciBjb25zdCAqKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBCVVVDaGFyQDFASEBaIEAgMTcgTk9O
QU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKHN0cnVjdCBLSlM6OlVDaGFyIGNvbnN0ICosIGlu
dCkNCi0JPz8wVVN0cmluZ0BLSlNAQFFBRUBYWiBAIDE4IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6
VVN0cmluZyh2b2lkKQ0KLQk/PzBVbmRlZmluZWRAS0pTQEBRQUVAWFogQCAxOSBOT05BTUUgOyBL
SlM6OlVuZGVmaW5lZDo6VW5kZWZpbmVkKHZvaWQpDQotCT8/MFZhbHVlQEtKU0BAUUFFQEFCVjAx
QEBaIEAgMjAgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6VmFsdWUoY2xhc3MgS0pTOjpWYWx1ZSBjb25z
dCAmKQ0KLQk/PzBWYWx1ZUBLSlNAQFFBRUBQQVZWYWx1ZUltcEAxQEBaIEAgMjEgTk9OQU1FIDsg
S0pTOjpWYWx1ZTo6VmFsdWUoY2xhc3MgS0pTOjpWYWx1ZUltcCAqKQ0KLQk/PzFJbnRlcnByZXRl
ckBLSlNAQFVBRUBYWiBAIDIyIE5PTkFNRSA7IEtKUzo6SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRl
cih2b2lkKQ0KLQk/PzFPYmplY3RJbXBAS0pTQEBVQUVAWFogQCAyMyBOT05BTUUgOyBLSlM6Ok9i
amVjdEltcDo6fk9iamVjdEltcCh2b2lkKQ0KLQk/PzFWYWx1ZUBLSlNAQFFBRUBYWiBAIDI0IE5P
TkFNRSA7IEtKUzo6VmFsdWU6On5WYWx1ZSh2b2lkKQ0KLQk/PzJWYWx1ZUltcEBLSlNAQFNBUEFY
SUBaIEAgMjUgTk9OQU1FIDsgdm9pZCAqIEtKUzo6VmFsdWVJbXA6Om9wZXJhdG9yIG5ldyh1bnNp
Z25lZCBpbnQpDQotCT8/M1ZhbHVlSW1wQEtKU0BAU0FYUEFYQFogQCAyNiBOT05BTUUgOyB2b2lk
IEtKUzo6VmFsdWVJbXA6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkICopDQotCT8/NENTdHJpbmdAS0pT
QEBRQUVBQVYwMUBQQkRAWiBAIDI3IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q1N0cmluZyAmIEtKUzo6
Q1N0cmluZzo6b3BlcmF0b3I9KGNoYXIgY29uc3QgKikNCi0JPz80TGlzdEBLSlNAQFFBRUFBVjAx
QEFCVjAxQEBaIEAgMjggTk9OQU1FIDsgY2xhc3MgS0pTOjpMaXN0ICYgS0pTOjpMaXN0OjpvcGVy
YXRvcj0oY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT8/NFNjb3BlQ2hhaW5AS0pTQEBRQUVB
QVYwMUBBQlYwMUBAWiBAIDI5IE5PTkFNRSA7IGNsYXNzIEtKUzo6U2NvcGVDaGFpbiAmIEtKUzo6
U2NvcGVDaGFpbjo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6U2NvcGVDaGFpbiBjb25zdCAmKQ0KLQk/
PzRVU3RyaW5nQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMCBOT05BTUUgOyBjbGFzcyBLSlM6
OlVTdHJpbmcgJiBLSlM6OlVTdHJpbmc6Om9wZXJhdG9yPShjbGFzcyBLSlM6OlVTdHJpbmcgY29u
c3QgJikNCi0JPz80VmFsdWVAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDMxIE5PTkFNRSA7IGNs
YXNzIEtKUzo6VmFsdWUgJiBLSlM6OlZhbHVlOjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpWYWx1ZSBj
b25zdCAmKQ0KLQk/PzhLSlNAQFlBX05BQlZVU3RyaW5nQDBAUEJEQFogQCAzMiBOT05BTUUgOyBi
b29sIEtKUzo6b3BlcmF0b3I9PShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2hhciBjb25z
dCAqKQ0KLQk/YWRkQElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJAUEFVMzQyQEBa
IEAgMzMgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpJZGVudGlmaWVy
OjphZGQoc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICopDQotCT9hZGRASWRlbnRpZmllckBLSlNA
QENBUEFVUmVwQFVTdHJpbmdAMkBQQkRAWiBAIDM0IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJp
bmc6OlJlcCAqIEtKUzo6SWRlbnRpZmllcjo6YWRkKGNoYXIgY29uc3QgKikNCi0JP2FwcGVuZEBM
aXN0QEtKU0BAUUFFWFBBVlZhbHVlSW1wQDJAQFogQCAzNSBOT05BTUUgOyB2b2lkIEtKUzo6TGlz
dDo6YXBwZW5kKGNsYXNzIEtKUzo6VmFsdWVJbXAgKikNCi0JP2FwcGVuZEBVU3RyaW5nQEtKU0BA
UUFFQUFWMTJAQUJWMTJAQFogQCAzNiBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgJiBLSlM6
OlVTdHJpbmc6OmFwcGVuZChjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0JP2FwcGVuZEBV
U3RyaW5nQEtKU0BAUUFFQUFWMTJAUEJEQFogQCAzNyBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJp
bmcgJiBLSlM6OlVTdHJpbmc6OmFwcGVuZChjaGFyIGNvbnN0ICopDQotCT9hc2NpaUBVU3RyaW5n
QEtKU0BAUUJFUEFEWFogQCAzOCBOT05BTUUgOyBjaGFyICogS0pTOjpVU3RyaW5nOjphc2NpaSh2
b2lkKSBjb25zdA0KLQk/YXR0YWNoTnVsbEBVU3RyaW5nQEtKU0BAQUFFWFhaIEAgMzkgTk9OQU1F
IDsgdm9pZCBLSlM6OlVTdHJpbmc6OmF0dGFjaE51bGwodm9pZCkNCi0JP2J1aWx0aW5BcnJheUBJ
bnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDAgTk9OQU1FIDsgY2xhc3MgS0pT
OjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbkFycmF5KHZvaWQpIGNvbnN0DQotCT9i
dWlsdGluRnVuY3Rpb25ASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQxIE5P
TkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5GdW5jdGlv
bih2b2lkKSBjb25zdA0KLQk/YnVpbHRpbk9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9i
amVjdEAyQFhaIEAgNDIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRl
cjo6YnVpbHRpbk9iamVjdCh2b2lkKSBjb25zdA0KLQk/YnVpbHRpbk9iamVjdFByb3RvdHlwZUBJ
bnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDMgTk9OQU1FIDsgY2xhc3MgS0pT
OjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbk9iamVjdFByb3RvdHlwZSh2b2lkKSBj
b25zdA0KLQk/Y2FsbEBPYmplY3RAS0pTQEBRQUU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFB
VjEyQEFCVkxpc3RAMkBAWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmpl
Y3Q6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmplY3QgJiwgY2xh
c3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jYWxsQE9iamVjdEltcEBLSlNAQFVBRT9BVlZhbHVl
QDJAUEFWRXhlY1N0YXRlQDJAQUFWT2JqZWN0QDJAQUJWTGlzdEAyQEBaIEAgNDUgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Y2FsbChjbGFzcyBLSlM6OkV4ZWNTdGF0
ZSAqLCBjbGFzcyBLSlM6Ok9iamVjdCAmLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJikNCi0JP2Nh
blB1dEBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBA
WiBAIDQ2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmNhblB1dChjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCi0JP2NsYXNz
SW5mb0BPYmplY3RJbXBAS0pTQEBVQkVQQlVDbGFzc0luZm9AMkBYWiBAIDQ3IE5PTkFNRSA7IHN0
cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0SW1wOjpjbGFzc0luZm8odm9p
ZCkgY29uc3QNCi0JP2NsYXNzTmFtZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZVU3RyaW5nQDJAWFog
QCA0OCBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpPYmplY3RJbXA6OmNsYXNzTmFt
ZSh2b2lkKSBjb25zdA0KLQk/Y29sbGVjdEBDb2xsZWN0b3JAS0pTQEBTQV9OWFogQCA0OSBOT05B
TUUgOyBib29sIEtKUzo6Q29sbGVjdG9yOjpjb2xsZWN0KHZvaWQpDQotCT9jb21wYXRNb2RlQElu
dGVycHJldGVyQEtKU0BAUUJFP0FXNENvbXBhdE1vZGVAMTJAWFogQCA1MCBOT05BTUUgOyBlbnVt
IEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1vZGUgS0pTOjpJbnRlcnByZXRlcjo6Y29tcGF0TW9k
ZSh2b2lkKSBjb25zdA0KLQk/Y29uc3RydWN0QE9iamVjdEltcEBLSlNAQFVBRT9BVk9iamVjdEAy
QFBBVkV4ZWNTdGF0ZUAyQEFCVkxpc3RAMkBAWiBAIDUxIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2Jq
ZWN0IEtKUzo6T2JqZWN0SW1wOjpjb25zdHJ1Y3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xh
c3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jb25zdHJ1Y3RAT2JqZWN0SW1wQEtKU0BAVUFFP0FW
T2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWTGlzdEAyQEFCVlVTdHJpbmdAMkBIQFogQCA1MiBO
T05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3RydWN0KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmLCBjbGFzcyBLSlM6OlVT
dHJpbmcgY29uc3QgJiwgaW50KQ0KLQk/Y29weVRhaWxATGlzdEBLSlNAQFFCRT9BVjEyQFhaIEAg
NTMgTk9OQU1FIDsgY2xhc3MgS0pTOjpMaXN0IEtKUzo6TGlzdDo6Y29weVRhaWwodm9pZCkgY29u
c3QNCi0JP2NyZWF0ZUBFcnJvckBLSlNAQFNBP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAVzRF
cnJvclR5cGVAMkBQQkRISFBCVlVTdHJpbmdAMkBAWiBAIDU0IE5PTkFNRSA7IGNsYXNzIEtKUzo6
T2JqZWN0IEtKUzo6RXJyb3I6OmNyZWF0ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtK
Uzo6RXJyb3JUeXBlLCBjaGFyIGNvbnN0ICosIGludCwgaW50LCBjbGFzcyBLSlM6OlVTdHJpbmcg
Y29uc3QgKikNCi0JP2NyZWF0ZUBSZXBAVVN0cmluZ0BLSlNAQFNBUEFVMTIzQFBBVVVDaGFyQDNA
SEBaIEAgNTUgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpVU3RyaW5n
OjpSZXA6OmNyZWF0ZShzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQpDQotCT9jcmVhdGVDb3B5aW5n
QFJlcEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BIQFogQCA1NiBOT05BTUUgOyBz
dHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3JlYXRlQ29weWlu
ZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQotCT9kZWZhdWx0VmFsdWVAT2JqZWN0
SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFR5cGVAMkBAWiBAIDU3IE5P
TkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZShjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkgY29uc3QNCi0JP2RlbGV0ZUFsbFBy
b3BlcnRpZXNAT2JqZWN0SW1wQEtKU0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEBaIEAgNTggTk9OQU1F
IDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlQWxsUHJvcGVydGllcyhjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqKQ0KLQk/ZGVsZXRlUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUFFX05QQVZFeGVj
U3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA1OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0
SW1wOjpkZWxldGVQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Oklk
ZW50aWZpZXIgY29uc3QgJikNCi0JP2RlbGV0ZVByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVBRV9O
UEFWRXhlY1N0YXRlQDJASUBaIEAgNjAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6ZGVs
ZXRlUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KQ0KLQk/ZGVy
ZWZWYWx1ZXNATGlzdEBLSlNAQEFBRVhYWiBAIDYxIE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0Ojpk
ZXJlZlZhbHVlcyh2b2lkKQ0KLQk/ZGVzdHJveUBSZXBAVVN0cmluZ0BLSlNAQFFBRVhYWiBAIDYy
IE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjpSZXA6OmRlc3Ryb3kodm9pZCkNCi0JP2Rpc3Bh
dGNoVG9PYmplY3RAVmFsdWVJbXBAS0pTQEBRQkU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBA
WiBAIDYzIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6VmFsdWVJbXA6OmRpc3BhdGNo
VG9PYmplY3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP2R5bmFtaWNDYXN0QE9i
amVjdEBLSlNAQFNBP0FWMTJAQUJWVmFsdWVAMkBAWiBAIDY0IE5PTkFNRSA7IGNsYXNzIEtKUzo6
T2JqZWN0IEtKUzo6T2JqZWN0OjpkeW5hbWljQ2FzdChjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYp
DQotCT9lcXVhbEBJZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJEQFogQCA2
NSBOT05BTUUgOyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtKUzo6VVN0cmlu
Zzo6UmVwICosIGNoYXIgY29uc3QgKikNCi0JP2VxdWFsQElkZW50aWZpZXJAS0pTQEBDQV9OUEFV
UmVwQFVTdHJpbmdAMkBQQlVVQ2hhckAyQEhAWiBAIDY2IE5PTkFNRSA7IGJvb2wgS0pTOjpJZGVu
dGlmaWVyOjplcXVhbChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiwgc3RydWN0IEtKUzo6VUNo
YXIgY29uc3QgKiwgaW50KQ0KLQk/ZXZhbHVhdGVASW50ZXJwcmV0ZXJAS0pTQEBRQUU/QVZDb21w
bGV0aW9uQDJAQUJWVVN0cmluZ0AyQEFCVlZhbHVlQDJAMEBaIEAgNjcgTk9OQU1FIDsgY2xhc3Mg
S0pTOjpDb21wbGV0aW9uIEtKUzo6SW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGNsYXNzIEtKUzo6VVN0
cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmlu
ZyBjb25zdCAmKQ0KLQk/ZXZhbHVhdGVASW50ZXJwcmV0ZXJAS0pTQEBRQUU/QVZDb21wbGV0aW9u
QDJAQUJWVVN0cmluZ0AyQEgwQUJWVmFsdWVAMkBAWiBAIDY4IE5PTkFNRSA7IGNsYXNzIEtKUzo6
Q29tcGxldGlvbiBLSlM6OkludGVycHJldGVyOjpldmFsdWF0ZShjbGFzcyBLSlM6OlVTdHJpbmcg
Y29uc3QgJiwgaW50LCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1
ZSBjb25zdCAmKQ0KLQk/ZmluZEVudHJ5QExvb2t1cEBLSlNAQFNBUEJWSGFzaEVudHJ5QDJAUEJW
SGFzaFRhYmxlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNjkgTk9OQU1FIDsgY2xhc3MgS0pTOjpI
YXNoRW50cnkgY29uc3QgKiBLSlM6Okxvb2t1cDo6ZmluZEVudHJ5KGNsYXNzIEtKUzo6SGFzaFRh
YmxlIGNvbnN0ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKQ0KLQk/ZnJvbUBVU3Ry
aW5nQEtKU0BAU0E/QVYxMkBKQFogQCA3MCBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pT
OjpVU3RyaW5nOjpmcm9tKGxvbmcpDQotCT9nZXRAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVA
MkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3MSBOT05BTUUgOyBjbGFzcyBL
SlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xh
c3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9nZXRAT2JqZWN0SW1wQEtKU0BA
VUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBJQFogQCA3MiBOT05BTUUgOyBjbGFzcyBLSlM6
OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWdu
ZWQgaW50KSBjb25zdA0KLQk/Z2V0QFByb3BlcnR5TWFwQEtKU0BAUUJFUEFWVmFsdWVJbXBAMkBB
QlZJZGVudGlmaWVyQDJAQFogQCA3MyBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlSW1wICogS0pT
OjpQcm9wZXJ0eU1hcDo6Z2V0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0K
LQk/Z2xvYmFsRXhlY0BJbnRlcnByZXRlckBLSlNAQFFBRVBBVkV4ZWNTdGF0ZUAyQFhaIEAgNzQg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiBLSlM6OkludGVycHJldGVyOjpnbG9iYWxF
eGVjKHZvaWQpDQotCT9nbG9iYWxPYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQkVBQVZPYmplY3RA
MkBYWiBAIDc1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0ICYgS0pTOjpJbnRlcnByZXRlcjo6
Z2xvYmFsT2JqZWN0KHZvaWQpIGNvbnN0DQotCT9oYXNJbnN0YW5jZUBPYmplY3RJbXBAS0pTQEBV
QUU/QVZCb29sZWFuQDJAUEFWRXhlY1N0YXRlQDJAQUJWVmFsdWVAMkBAWiBAIDc2IE5PTkFNRSA7
IGNsYXNzIEtKUzo6Qm9vbGVhbiBLSlM6Ok9iamVjdEltcDo6aGFzSW5zdGFuY2UoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/aGFzT3duUHJvcGVy
dHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3
NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCi0JP2hhc093
blByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmll
ckAyQEBaIEAgNzggTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzT3duUHJvcGVydHko
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNv
bnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAy
QElAWiBAIDc5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNs
YXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5
QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODAg
Tk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNQcm9wZXJ0
eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDgxIE5PTkFNRSA7IGJvb2wg
S0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVk
IGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0
YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODIgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdElt
cDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBB
VkV4ZWNTdGF0ZUAyQElAWiBAIDgzIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1By
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2lt
cEF0QExpc3RAS0pTQEBRQkVQQVZWYWx1ZUltcEAyQEhAWiBAIDg0IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6VmFsdWVJbXAgKiBLSlM6Okxpc3Q6OmltcEF0KGludCkgY29uc3QNCi0JP2ltcGxlbWVudHND
YWxsQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA4NSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0
SW1wOjppbXBsZW1lbnRzQ2FsbCh2b2lkKSBjb25zdA0KLQk/aW1wbGVtZW50c0NvbnN0cnVjdEBP
YmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgODYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6
aW1wbGVtZW50c0NvbnN0cnVjdCh2b2lkKSBjb25zdA0KLQk/aW1wbGVtZW50c0hhc0luc3RhbmNl
QE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA4NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1w
OjppbXBsZW1lbnRzSGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCi0JP2luY1N0YXRlbWVudENvdW50
QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgODggTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJl
dGVyOjppbmNTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KLQk/aW5oZXJpdHNAT2JqZWN0SW1wQEtKU0BA
UUJFX05QQlVDbGFzc0luZm9AMkBAWiBAIDg5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6
OmluaGVyaXRzKHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqKSBjb25zdA0KLQk/aW5pdEds
b2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDkwIE5PTkFNRSA7IHZvaWQgS0pT
OjpJbnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVjdCh2b2lkKQ0KLQk/aXNOdWxsQFVTdHJpbmdA
S0pTQEBRQkVfTlhaIEAgOTEgTk9OQU1FIDsgYm9vbCBLSlM6OlVTdHJpbmc6OmlzTnVsbCh2b2lk
KSBjb25zdA0KLQk/bGVuZ3RoUHJvcGVydHlAS0pTQEBZQUFCVklkZW50aWZpZXJAMUBYWiBAIDky
IE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmIEtKUzo6bGVuZ3RoUHJvcGVy
dHkodm9pZCkNCi0JP2xleGljYWxJbnRlcnByZXRlckBFeGVjU3RhdGVAS0pTQEBRQkVQQVZJbnRl
cnByZXRlckAyQFhaIEAgOTMgTk9OQU1FIDsgY2xhc3MgS0pTOjpJbnRlcnByZXRlciAqIEtKUzo6
RXhlY1N0YXRlOjpsZXhpY2FsSW50ZXJwcmV0ZXIodm9pZCkgY29uc3QNCi0JP2xvY2tASW50ZXJw
cmV0ZXJAS0pTQEBTQVhYWiBAIDk0IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6bG9j
ayh2b2lkKQ0KLQk/bWFya0BPYmplY3RJbXBAS0pTQEBVQUVYWFogQCA5NSBOT05BTUUgOyB2b2lk
IEtKUzo6T2JqZWN0SW1wOjptYXJrKHZvaWQpDQotCT9tYXJrZWRAVmFsdWVJbXBAS0pTQEBRQkVf
TlhaIEAgOTYgTk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjptYXJrZWQodm9pZCkgY29uc3QN
Ci0JP21lc3NhZ2VQcm9wZXJ0eUBLSlNAQFlBQUJWSWRlbnRpZmllckAxQFhaIEAgOTcgTk9OQU1F
IDsgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjptZXNzYWdlUHJvcGVydHkodm9p
ZCkNCi0JP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVj
U3RhdGVAMkBfTkBaIEAgOTggTk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6
T2JqZWN0Ojpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KLQk/cHJvcExp
c3RAT2JqZWN0SW1wQEtKU0BAVUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBBVkV4ZWNTdGF0ZUAyQF9O
QFogQCA5OSBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5jZUxpc3QgS0pTOjpPYmplY3RJbXA6
OnByb3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wpDQotCT9wcm90b3R5cGVAT2Jq
ZWN0SW1wQEtKU0BAUUJFP0FWVmFsdWVAMkBYWiBAIDEwMCBOT05BTUUgOyBjbGFzcyBLSlM6OlZh
bHVlIEtKUzo6T2JqZWN0SW1wOjpwcm90b3R5cGUodm9pZCkgY29uc3QNCi0JP3B1c2hAU2NvcGVD
aGFpbkBLSlNAQFFBRVhBQlYxMkBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIEtKUzo6U2NvcGVDaGFp
bjo6cHVzaChjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikNCi0JP3B1c2hAU2NvcGVDaGFp
bkBLSlNAQFFBRVhQQVZPYmplY3RJbXBAMkBAWiBAIDEwMiBOT05BTUUgOyB2b2lkIEtKUzo6U2Nv
cGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6Ok9iamVjdEltcCAqKQ0KLQk/cHV0QE9iamVjdEltcEBL
SlNAQFVBRVhQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUJWVmFsdWVAMkBIQFogQCAx
MDMgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0
ICYsIGludCkNCi0JP3B1dEBPYmplY3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRlQDJASUFCVlZh
bHVlQDJASEBaIEAgMTA0IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dChjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJiwg
aW50KQ0KLQk/cHV0RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVyQDJASEhA
WiBAIDEwNSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3QoY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYsIGludCwgaW50KQ0KLQk/cHV0RGlyZWN0QE9iamVjdEltcEBL
SlNAQFFBRVhBQlZJZGVudGlmaWVyQDJAUEFWVmFsdWVJbXBAMkBIQFogQCAxMDYgTk9OQU1FIDsg
dm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25z
dCAmLCBjbGFzcyBLSlM6OlZhbHVlSW1wICosIGludCkNCi0JP3JlZlZhbHVlc0BMaXN0QEtKU0BA
QUFFWFhaIEAgMTA3IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjpyZWZWYWx1ZXModm9pZCkNCi0J
P3JlbGVhc2VATGlzdEBLSlNAQEFBRVhYWiBAIDEwOCBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6
cmVsZWFzZSh2b2lkKQ0KLQk/cmVsZWFzZUBTY29wZUNoYWluQEtKU0BAQUFFWFhaIEAgMTA5IE5P
TkFNRSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpyZWxlYXNlKHZvaWQpDQotCT9yZXNldFN0YXRl
bWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgMTEwIE5PTkFNRSA7IHZvaWQgS0pT
OjpJbnRlcnByZXRlcjo6cmVzZXRTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KLQk/cmVzdG9yZUBQcm9w
ZXJ0eU1hcEBLSlNAQFFBRVhBQlZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDExMSBOT05BTUUgOyB2
b2lkIEtKUzo6UHJvcGVydHlNYXA6OnJlc3RvcmUoY2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMg
Y29uc3QgJikNCi0JP3Jlc3RvcmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFBRVhBQlZTYXZl
ZEJ1aWx0aW5zQDJAQFogQCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpyZXN0
b3JlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zIGNvbnN0ICYpDQotCT9zYXZlQFBy
b3BlcnR5TWFwQEtKU0BAUUJFWEFBVlNhdmVkUHJvcGVydGllc0AyQEBaIEAgMTEzIE5PTkFNRSA7
IHZvaWQgS0pTOjpQcm9wZXJ0eU1hcDo6c2F2ZShjbGFzcyBLSlM6OlNhdmVkUHJvcGVydGllcyAm
KSBjb25zdA0KLQk/c2F2ZUJ1aWx0aW5zQEludGVycHJldGVyQEtKU0BAUUJFWEFBVlNhdmVkQnVp
bHRpbnNAMkBAWiBAIDExNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNhdmVCdWls
dGlucyhjbGFzcyBLSlM6OlNhdmVkQnVpbHRpbnMgJikgY29uc3QNCi0JP3NldENvbXBhdE1vZGVA
SW50ZXJwcmV0ZXJAS0pTQEBRQUVYVzRDb21wYXRNb2RlQDEyQEBaIEAgMTE1IE5PTkFNRSA7IHZv
aWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0Q29tcGF0TW9kZShlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6
OkNvbXBhdE1vZGUpDQotCT9zZXRQcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVlZhbHVl
QDJAQFogQCAxMTYgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6c2V0UHJvdG90eXBlKGNs
YXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JP3NldFNob3VsZFByaW50RXhjZXB0aW9uc0BJbnRl
cnByZXRlckBLSlNAQFNBWF9OQFogQCAxMTcgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVy
OjpzZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCkNCi0JP3Nob3VsZFByaW50RXhjZXB0aW9u
c0BJbnRlcnByZXRlckBLSlNAQFNBX05YWiBAIDExOCBOT05BTUUgOyBib29sIEtKUzo6SW50ZXJw
cmV0ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucyh2b2lkKQ0KLQk/dG9BcnJheUluZGV4QFVTdHJp
bmdAS0pTQEBRQkVJUEFfTkBaIEAgMTE5IE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlVTdHJp
bmc6OnRvQXJyYXlJbmRleChib29sICopIGNvbnN0DQotCT90b0Jvb2xlYW5AT2JqZWN0SW1wQEtK
U0BAVUJFX05QQVZFeGVjU3RhdGVAMkBAWiBAIDEyMCBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0
SW1wOjp0b0Jvb2xlYW4oY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvSW50MzJA
VmFsdWVJbXBAS0pTQEBRQkVKUEFWRXhlY1N0YXRlQDJAQFogQCAxMjEgTk9OQU1FIDsgbG9uZyBL
SlM6OlZhbHVlSW1wOjp0b0ludDMyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90
b0ludGVnZXJAVmFsdWVJbXBAS0pTQEBRQkVOUEFWRXhlY1N0YXRlQDJAQFogQCAxMjIgTk9OQU1F
IDsgZG91YmxlIEtKUzo6VmFsdWVJbXA6OnRvSW50ZWdlcihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
KSBjb25zdA0KLQk/dG9OdW1iZXJAT2JqZWN0SW1wQEtKU0BAVUJFTlBBVkV4ZWNTdGF0ZUAyQEBa
IEAgMTIzIE5PTkFNRSA7IGRvdWJsZSBLSlM6Ok9iamVjdEltcDo6dG9OdW1iZXIoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvT2JqZWN0QE9iamVjdEltcEBLSlNAQFVCRT9BVk9i
amVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTI0IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0
IEtKUzo6T2JqZWN0SW1wOjp0b09iamVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0K
LQk/dG9QcmltaXRpdmVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVA
MkBXNFR5cGVAMkBAWiBAIDEyNSBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0
SW1wOjp0b1ByaW1pdGl2ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkg
Y29uc3QNCi0JP3RvU3RyaW5nQE9iamVjdEltcEBLSlNAQFVCRT9BVlVTdHJpbmdAMkBQQVZFeGVj
U3RhdGVAMkBAWiBAIDEyNiBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpPYmplY3RJ
bXA6OnRvU3RyaW5nKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b1VJbnQxNkBW
YWx1ZUltcEBLSlNAQFFCRUdQQVZFeGVjU3RhdGVAMkBAWiBAIDEyNyBOT05BTUUgOyB1bnNpZ25l
ZCBzaG9ydCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQxNihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBj
b25zdA0KLQk/dG9VSW50MzJAVmFsdWVJbXBAS0pTQEBFQkVfTkFBSUBaIEAgMTI4IE5PTkFNRSA7
IGJvb2wgS0pTOjpWYWx1ZUltcDo6dG9VSW50MzIodW5zaWduZWQgaW50ICYpIGNvbnN0DQotCT90
b1VJbnQzMkBWYWx1ZUltcEBLSlNAQFFCRUtQQVZFeGVjU3RhdGVAMkBAWiBAIDEyOSBOT05BTUUg
OyB1bnNpZ25lZCBsb25nIEtKUzo6VmFsdWVJbXA6OnRvVUludDMyKGNsYXNzIEtKUzo6RXhlY1N0
YXRlICopIGNvbnN0DQotCT90b1VMb25nQFVTdHJpbmdAS0pTQEBRQkVLUEFfTkBaIEAgMTMwIE5P
TkFNRSA7IHVuc2lnbmVkIGxvbmcgS0pTOjpVU3RyaW5nOjp0b1VMb25nKGJvb2wgKikgY29uc3QN
Ci0JP3R5cGVAT2JqZWN0SW1wQEtKU0BAVUJFP0FXNFR5cGVAMkBYWiBAIDEzMSBOT05BTUUgOyBl
bnVtIEtKUzo6VHlwZSBLSlM6Ok9iamVjdEltcDo6dHlwZSh2b2lkKSBjb25zdA0KLQk/dW5sb2Nr
QEludGVycHJldGVyQEtKU0BAU0FYWFogQCAxMzIgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJl
dGVyOjp1bmxvY2sodm9pZCkNCi0JP3ZhbHVlQFN0cmluZ0BLSlNAQFFCRT9BVlVTdHJpbmdAMkBY
WiBAIDEzMyBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpTdHJpbmc6OnZhbHVlKHZv
aWQpIGNvbnN0DQotCT92aXJ0dWFsX2hvb2tASW50ZXJwcmV0ZXJAS0pTQEBNQUVYSFBBWEBaIEAg
MTM0IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dmlydHVhbF9ob29rKGludCwgdm9p
ZCAqKQ0KLQlranNfc3RydG9kIEAgMTM1IE5PTkFNRQ0KLQk/Y2xhc3NJbmZvQE9iamVjdEBLSlNA
QFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgMTM2IE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5m
byBjb25zdCAqIEtKUzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0JP2hhc093blBy
b3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTM3IE5PTkFNRSA7
IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgPz8wQm9vbGVhbkBLSlNAQFFBRUBfTkBaIEAgMSBO
T05BTUUgOyBLSlM6OkJvb2xlYW46OkJvb2xlYW4oYm9vbCkNCisgICAgPz8wSW50ZXJwcmV0ZXJA
S0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAyIE5PTkFNRSA7IEtKUzo6SW50ZXJwcmV0ZXI6Oklu
dGVycHJldGVyKGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYpDQorICAgID8/MExpc3RAS0pTQEBR
QUVAWFogQCAzIE5PTkFNRSA7IEtKUzo6TGlzdDo6TGlzdCh2b2lkKQ0KKyAgICA/PzBOdWxsQEtK
U0BAUUFFQFhaIEAgNCBOT05BTUUgOyBLSlM6Ok51bGw6Ok51bGwodm9pZCkNCisgICAgPz8wTnVt
YmVyQEtKU0BAUUFFQEhAWiBAIDUgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihpbnQpDQor
ICAgID8/ME51bWJlckBLSlNAQFFBRUBJQFogQCA2IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1i
ZXIodW5zaWduZWQgaW50KQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBRQUVASkBaIEAgNyBOT05BTUUg
OyBLSlM6Ok51bWJlcjo6TnVtYmVyKGxvbmcpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBLQFog
QCA4IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgbG9uZykNCisgICAgPz8w
TnVtYmVyQEtKU0BAUUFFQE5AWiBAIDkgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcihkb3Vi
bGUpDQorICAgID8/ME9iamVjdEltcEBLSlNAQFFBRUBBQlZPYmplY3RAMUBAWiBAIDEwIE5PTkFN
RSA7IEtKUzo6T2JqZWN0SW1wOjpPYmplY3RJbXAoY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJikN
CisgICAgPz8wT2JqZWN0SW1wQEtKU0BAUUFFQFhaIEAgMTEgTk9OQU1FIDsgS0pTOjpPYmplY3RJ
bXA6Ok9iamVjdEltcCh2b2lkKQ0KKyAgICA/PzBSdW50aW1lT2JqZWN0SW1wQEtKU0BAUUFFQFBB
Vkluc3RhbmNlQEJpbmRpbmdzQDFAX05AWiBAIDEyIE5PTkFNRSA7IEtKUzo6UnVudGltZU9iamVj
dEltcDo6UnVudGltZU9iamVjdEltcChjbGFzcyBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqLCBi
b29sKQ0KKyAgICA/PzBTdHJpbmdAS0pTQEBRQUVAQUJWVVN0cmluZ0AxQEBaIEAgMTMgTk9OQU1F
IDsgS0pTOjpTdHJpbmc6OlN0cmluZyhjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCisgICAg
Pz8wVVN0cmluZ0BLSlNAQFFBRUBBQlYwMUAwQFogQCAxNCBOT05BTUUgOyBLSlM6OlVTdHJpbmc6
OlVTdHJpbmcoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VVN0cmluZyBj
b25zdCAmKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQERAWiBAIDE1IE5PTkFNRSA7IEtKUzo6
VVN0cmluZzo6VVN0cmluZyhjaGFyKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQFBBVVVDaGFy
QDFASF9OQFogQCAxNiBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoc3RydWN0IEtKUzo6
VUNoYXIgKiwgaW50LCBib29sKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQFBCREBaIEAgMTcg
Tk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIgY29uc3QgKikNCisgICAgPz8wVVN0
cmluZ0BLSlNAQFFBRUBQQlVVQ2hhckAxQEhAWiBAIDE4IE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6
VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQorICAgID8/MFVTdHJpbmdA
S0pTQEBRQUVAWFogQCAxOSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcodm9pZCkNCisg
ICAgPz8wVW5kZWZpbmVkQEtKU0BAUUFFQFhaIEAgMjAgTk9OQU1FIDsgS0pTOjpVbmRlZmluZWQ6
OlVuZGVmaW5lZCh2b2lkKQ0KKyAgICA/PzBWYWx1ZUBLSlNAQFFBRUBBQlYwMUBAWiBAIDIxIE5P
TkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAg
Pz8wVmFsdWVAS0pTQEBRQUVAUEFWVmFsdWVJbXBAMUBAWiBAIDIyIE5PTkFNRSA7IEtKUzo6VmFs
dWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWVJbXAgKikNCisgICAgPz8xSW50ZXJwcmV0ZXJAS0pT
QEBVQUVAWFogQCAyMyBOT05BTUUgOyBLSlM6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIodm9p
ZCkNCisgICAgPz8xT2JqZWN0SW1wQEtKU0BAVUFFQFhaIEAgMjQgTk9OQU1FIDsgS0pTOjpPYmpl
Y3RJbXA6On5PYmplY3RJbXAodm9pZCkNCisgICAgPz8xVmFsdWVAS0pTQEBRQUVAWFogQCAyNSBO
T05BTUUgOyBLSlM6OlZhbHVlOjp+VmFsdWUodm9pZCkNCisgICAgPz8yVmFsdWVJbXBAS0pTQEBT
QVBBWElAWiBAIDI2IE5PTkFNRSA7IHZvaWQgKiBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBuZXco
dW5zaWduZWQgaW50KQ0KKyAgICA/PzNWYWx1ZUltcEBLSlNAQFNBWFBBWEBaIEAgMjcgTk9OQU1F
IDsgdm9pZCBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBkZWxldGUodm9pZCAqKQ0KKyAgICA/PzRD
U3RyaW5nQEtKU0BAUUFFQUFWMDFAUEJEQFogQCAyOCBOT05BTUUgOyBjbGFzcyBLSlM6OkNTdHJp
bmcgJiBLSlM6OkNTdHJpbmc6Om9wZXJhdG9yPShjaGFyIGNvbnN0ICopDQorICAgID8/NExpc3RA
S0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDI5IE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCAmIEtK
Uzo6TGlzdDo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/PzRTY29w
ZUNoYWluQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMCBOT05BTUUgOyBjbGFzcyBLSlM6OlNj
b3BlQ2hhaW4gJiBLSlM6OlNjb3BlQ2hhaW46Om9wZXJhdG9yPShjbGFzcyBLSlM6OlNjb3BlQ2hh
aW4gY29uc3QgJikNCisgICAgPz80VVN0cmluZ0BLSlNAQFFBRUFBVjAxQEFCVjAxQEBaIEAgMzEg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjpvcGVyYXRvcj0oY2xh
c3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID8/NFZhbHVlQEtKU0BAUUFFQUFWMDFAQUJW
MDFAQFogQCAzMiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlICYgS0pTOjpWYWx1ZTo6b3BlcmF0
b3I9KGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgPz84S0pTQEBZQV9OQUJWVVN0cmlu
Z0AwQFBCREBaIEAgMzMgTk9OQU1FIDsgYm9vbCBLSlM6Om9wZXJhdG9yPT0oY2xhc3MgS0pTOjpV
U3RyaW5nIGNvbnN0ICYsIGNoYXIgY29uc3QgKikNCisgICAgP05QTl9TZXRFeGNlcHRpb25XaXRo
VVRGOEBAWUFYUEFVTlBPYmplY3RAQFBCREhAWiBAIDM0IE5PTkFNRSA7IHZvaWQgTlBOX1NldEV4
Y2VwdGlvbldpdGhVVEY4KHN0cnVjdCBOUE9iamVjdCAqLCBjaGFyIGNvbnN0ICosIGludCkNCisg
ICAgP2FkZEBJZGVudGlmaWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBBVTM0MkBAWiBAIDM1
IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6SWRlbnRpZmllcjo6YWRk
KHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqKQ0KKyAgICA/YWRkQElkZW50aWZpZXJAS0pTQEBD
QVBBVVJlcEBVU3RyaW5nQDJAUEJEQFogQCAzNiBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5n
OjpSZXAgKiBLSlM6OklkZW50aWZpZXI6OmFkZChjaGFyIGNvbnN0ICopDQorICAgID9hcHBlbmRA
TGlzdEBLSlNAQFFBRVhQQVZWYWx1ZUltcEAyQEBaIEAgMzcgTk9OQU1FIDsgdm9pZCBLSlM6Okxp
c3Q6OmFwcGVuZChjbGFzcyBLSlM6OlZhbHVlSW1wICopDQorICAgID9hcHBlbmRAVVN0cmluZ0BL
SlNAQFFBRUFBVjEyQEFCVjEyQEBaIEAgMzggTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYg
S0pTOjpVU3RyaW5nOjphcHBlbmQoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID9h
cHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQFBCREBaIEAgMzkgTk9OQU1FIDsgY2xhc3MgS0pT
OjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2hhciBjb25zdCAqKQ0KKyAgICA/YXNj
aWlAVVN0cmluZ0BLSlNAQFFCRVBBRFhaIEAgNDAgTk9OQU1FIDsgY2hhciAqIEtKUzo6VVN0cmlu
Zzo6YXNjaWkodm9pZCkgY29uc3QNCisgICAgP2F0dGFjaE51bGxAVVN0cmluZ0BLSlNAQEFBRVhY
WiBAIDQxIE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjphdHRhY2hOdWxsKHZvaWQpDQorICAg
ID9idWlsdGluQXJyYXlASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQyIE5P
TkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5BcnJheSh2
b2lkKSBjb25zdA0KKyAgICA/YnVpbHRpbkZ1bmN0aW9uQEludGVycHJldGVyQEtKU0BAUUJFP0FW
T2JqZWN0QDJAWFogQCA0MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkludGVycHJl
dGVyOjpidWlsdGluRnVuY3Rpb24odm9pZCkgY29uc3QNCisgICAgP2J1aWx0aW5PYmplY3RASW50
ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIEtKUzo6
T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3Qodm9pZCkgY29uc3QNCisgICAg
P2J1aWx0aW5PYmplY3RQcm90b3R5cGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBY
WiBAIDQ1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0
aW5PYmplY3RQcm90b3R5cGUodm9pZCkgY29uc3QNCisgICAgP2NhbGxAT2JqZWN0QEtKU0BAUUFF
P0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQVYxMkBBQlZMaXN0QDJAQFogQCA0NiBOT05BTUUg
OyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0OjpjYWxsKGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/
Y2FsbEBPYmplY3RJbXBAS0pTQEBVQUU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEFBVk9iamVj
dEAyQEFCVkxpc3RAMkBAWiBAIDQ3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmpl
Y3RJbXA6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmplY3QgJiwg
Y2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQorICAgID9jYW5QdXRAT2JqZWN0SW1wQEtKU0BAVUJF
X05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA0OCBOT05BTUUgOyBib29sIEtK
Uzo6T2JqZWN0SW1wOjpjYW5QdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJ
ZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9jbGFzc0luZm9AT2JqZWN0QEtKU0BAUUJF
UEJVQ2xhc3NJbmZvQDJAWFogQCA0OSBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29u
c3QgKiBLSlM6Ok9iamVjdDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQorICAgID9jbGFzc0luZm9A
T2JqZWN0SW1wQEtKU0BAVUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA1MCBOT05BTUUgOyBzdHJ1Y3Qg
S0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdEltcDo6Y2xhc3NJbmZvKHZvaWQpIGNv
bnN0DQorICAgID9jbGFzc05hbWVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmluZ0AyQFhaIEAg
NTEgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6T2JqZWN0SW1wOjpjbGFzc05hbWUo
dm9pZCkgY29uc3QNCisgICAgP2NvbGxlY3RAQ29sbGVjdG9yQEtKU0BAU0FfTlhaIEAgNTIgTk9O
QU1FIDsgYm9vbCBLSlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCh2b2lkKQ0KKyAgICA/Y29tcGF0TW9k
ZUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVzRDb21wYXRNb2RlQDEyQFhaIEAgNTMgTk9OQU1FIDsg
ZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2RlIEtKUzo6SW50ZXJwcmV0ZXI6OmNvbXBh
dE1vZGUodm9pZCkgY29uc3QNCisgICAgP2NvbnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQUU/QVZP
YmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZMaXN0QDJAQFogQCA1NCBOT05BTUUgOyBjbGFzcyBL
SlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3RydWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/Y29uc3RydWN0QE9iamVjdEltcEBL
SlNAQFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxpc3RAMkBBQlZVU3RyaW5nQDJA
SEBaIEAgNTUgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJbXA6OmNvbnN0
cnVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Okxpc3QgY29uc3QgJiwgY2xh
c3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCkNCisgICAgP2NvcHlUYWlsQExpc3RAS0pTQEBR
QkU/QVYxMkBYWiBAIDU2IE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCBLSlM6Okxpc3Q6OmNvcHlU
YWlsKHZvaWQpIGNvbnN0DQorICAgID9jcmVhdGVARXJyb3JAS0pTQEBTQT9BVk9iamVjdEAyQFBB
VkV4ZWNTdGF0ZUAyQFc0RXJyb3JUeXBlQDJAUEJESEhQQlZVU3RyaW5nQDJAQFogQCA1NyBOT05B
TUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkVycm9yOjpjcmVhdGUoY2xhc3MgS0pTOjpFeGVj
U3RhdGUgKiwgZW51bSBLSlM6OkVycm9yVHlwZSwgY2hhciBjb25zdCAqLCBpbnQsIGludCwgY2xh
c3MgS0pTOjpVU3RyaW5nIGNvbnN0ICopDQorICAgID9jcmVhdGVAUmVwQFVTdHJpbmdAS0pTQEBT
QVBBVTEyM0BQQVVVQ2hhckAzQEhAWiBAIDU4IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6
OlJlcCAqIEtKUzo6VVN0cmluZzo6UmVwOjpjcmVhdGUoc3RydWN0IEtKUzo6VUNoYXIgKiwgaW50
KQ0KKyAgICA/Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2VASW5zdGFuY2VAQmluZGlu
Z3NAS0pTQEBTQVBBVjEyM0BXNEJpbmRpbmdMYW5ndWFnZUAxMjNAUEFYUEJWUm9vdE9iamVjdEAy
M0BAWiBAIDU5IE5PTkFNRSA7IGNsYXNzIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICogS0pTOjpC
aW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlKGVudW0g
S0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSwgdm9pZCAqLCBjbGFzcyBL
SlM6OkJpbmRpbmdzOjpSb290T2JqZWN0IGNvbnN0ICopDQorICAgID9jcmVhdGVDb3B5aW5nQFJl
cEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BIQFogQCA2MCBOT05BTUUgOyBzdHJ1
Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3JlYXRlQ29weWluZyhz
dHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQorICAgID9jcmVhdGVMYW5ndWFnZUluc3Rh
bmNlRm9yVmFsdWVASW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQVBBWFBBVkV4ZWNTdGF0ZUAzQFc0
QmluZGluZ0xhbmd1YWdlQDEyM0BBQlZPYmplY3RAM0BQQlZSb290T2JqZWN0QDIzQDNAWiBAIDYx
IE5PTkFNRSA7IHZvaWQgKiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJ
bnN0YW5jZUZvclZhbHVlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSwgY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJiwg
Y2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqLCBjbGFzcyBLSlM6OkJpbmRp
bmdzOjpSb290T2JqZWN0IGNvbnN0ICopDQorICAgID9jcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9y
VmFsdWVASW50ZXJwcmV0ZXJAS0pTQEBVQUVQQVhQQVZFeGVjU3RhdGVAMkBXNEJpbmRpbmdMYW5n
dWFnZUBJbnN0YW5jZUBCaW5kaW5nc0AyQEFCVk9iamVjdEAyQFBCVlJvb3RPYmplY3RANjJAM0Ba
IEAgNjIgTk9OQU1FIDsgdm9pZCAqIEtKUzo6SW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5z
dGFuY2VGb3JWYWx1ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYsIGNs
YXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKiwgY2xhc3MgS0pTOjpCaW5kaW5n
czo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlUnVudGltZU9iamVjdEBJbnN0YW5j
ZUBCaW5kaW5nc0BLSlNAQFNBP0FWT2JqZWN0QDNAVzRCaW5kaW5nTGFuZ3VhZ2VAMTIzQFBBWFBC
VlJvb3RPYmplY3RAMjNAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkJp
bmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChlbnVtIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIHZvaWQgKiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6
Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/ZGVmYXVsdFZhbHVlQE9iamVjdEltcEBLSlNAQFVC
RT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFogQCA2NCBOT05BTUUgOyBjbGFz
cyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY2xhc3MgS0pTOjpFeGVj
U3RhdGUgKiwgZW51bSBLSlM6OlR5cGUpIGNvbnN0DQorICAgID9kZWxldGVBbGxQcm9wZXJ0aWVz
QE9iamVjdEltcEBLSlNAQFFBRVhQQVZFeGVjU3RhdGVAMkBAWiBAIDY1IE5PTkFNRSA7IHZvaWQg
S0pTOjpPYmplY3RJbXA6OmRlbGV0ZUFsbFByb3BlcnRpZXMoY2xhc3MgS0pTOjpFeGVjU3RhdGUg
KikNCisgICAgP2RlbGV0ZVByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVBRV9OUEFWRXhlY1N0YXRl
QDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNjYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6
ZGVsZXRlUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYpDQorICAgID9kZWxldGVQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQUVfTlBB
VkV4ZWNTdGF0ZUAyQElAWiBAIDY3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmRlbGV0
ZVByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkNCisgICAgP2Rl
cmVmVmFsdWVzQExpc3RAS0pTQEBBQUVYWFogQCA2OCBOT05BTUUgOyB2b2lkIEtKUzo6TGlzdDo6
ZGVyZWZWYWx1ZXModm9pZCkNCisgICAgP2Rlc3Ryb3lAUmVwQFVTdHJpbmdAS0pTQEBRQUVYWFog
QCA2OSBOT05BTUUgOyB2b2lkIEtKUzo6VVN0cmluZzo6UmVwOjpkZXN0cm95KHZvaWQpDQorICAg
ID9kaXNwYXRjaFRvT2JqZWN0QFZhbHVlSW1wQEtKU0BAUUJFP0FWT2JqZWN0QDJAUEFWRXhlY1N0
YXRlQDJAQFogQCA3MCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OlZhbHVlSW1wOjpk
aXNwYXRjaFRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAgID9keW5h
bWljQ2FzdEBPYmplY3RAS0pTQEBTQT9BVjEyQEFCVlZhbHVlQDJAQFogQCA3MSBOT05BTUUgOyBj
bGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdDo6ZHluYW1pY0Nhc3QoY2xhc3MgS0pTOjpWYWx1
ZSBjb25zdCAmKQ0KKyAgICA/ZXF1YWxASWRlbnRpZmllckBLSlNAQENBX05QQVVSZXBAVVN0cmlu
Z0AyQFBCREBaIEAgNzIgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZpZXI6OmVxdWFsKHN0cnVj
dCBLSlM6OlVTdHJpbmc6OlJlcCAqLCBjaGFyIGNvbnN0ICopDQorICAgID9lcXVhbEBJZGVudGlm
aWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJVVUNoYXJAMkBIQFogQCA3MyBOT05BTUUg
OyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICos
IHN0cnVjdCBLSlM6OlVDaGFyIGNvbnN0ICosIGludCkNCisgICAgP2V2YWx1YXRlQEludGVycHJl
dGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBBQlZWYWx1ZUAyQDBAWiBA
IDc0IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6OkludGVycHJldGVyOjpldmFs
dWF0ZShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAm
LCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCisgICAgP2V2YWx1YXRlQEludGVycHJldGVy
QEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBIMEFCVlZhbHVlQDJAQFogQCA3
NSBOT05BTUUgOyBjbGFzcyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJbnRlcnByZXRlcjo6ZXZhbHVh
dGUoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCwgY2xhc3MgS0pTOjpVU3RyaW5nIGNv
bnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2ZpbmRFbnRyeUBMb29rdXBA
S0pTQEBTQVBCVkhhc2hFbnRyeUAyQFBCVkhhc2hUYWJsZUAyQEFCVklkZW50aWZpZXJAMkBAWiBA
IDc2IE5PTkFNRSA7IGNsYXNzIEtKUzo6SGFzaEVudHJ5IGNvbnN0ICogS0pTOjpMb29rdXA6OmZp
bmRFbnRyeShjbGFzcyBLSlM6Okhhc2hUYWJsZSBjb25zdCAqLCBjbGFzcyBLSlM6OklkZW50aWZp
ZXIgY29uc3QgJikNCisgICAgP2Zyb21AVVN0cmluZ0BLSlNAQFNBP0FWMTJASkBaIEAgNzcgTk9O
QU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6VVN0cmluZzo6ZnJvbShsb25nKQ0KKyAgICA/
Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRp
ZmllckAyQEBaIEAgNzggTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6
Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAm
KSBjb25zdA0KKyAgICA/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0
YXRlQDJASUBaIEAgNzkgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6
Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2dl
dEBQcm9wZXJ0eU1hcEBLSlNAQFFCRVBBVlZhbHVlSW1wQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
ODAgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZUltcCAqIEtKUzo6UHJvcGVydHlNYXA6OmdldChj
bGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2dsb2JhbEV4ZWNASW50
ZXJwcmV0ZXJAS0pTQEBRQUVQQVZFeGVjU3RhdGVAMkBYWiBAIDgxIE5PTkFNRSA7IGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICogS0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFsRXhlYyh2b2lkKQ0KKyAgICA/
Z2xvYmFsT2JqZWN0QEludGVycHJldGVyQEtKU0BAUUJFQUFWT2JqZWN0QDJAWFogQCA4MiBOT05B
TUUgOyBjbGFzcyBLSlM6Ok9iamVjdCAmIEtKUzo6SW50ZXJwcmV0ZXI6Omdsb2JhbE9iamVjdCh2
b2lkKSBjb25zdA0KKyAgICA/aGFzSW5zdGFuY2VAT2JqZWN0SW1wQEtKU0BAVUFFP0FWQm9vbGVh
bkAyQFBBVkV4ZWNTdGF0ZUAyQEFCVlZhbHVlQDJAQFogQCA4MyBOT05BTUUgOyBjbGFzcyBLSlM6
OkJvb2xlYW4gS0pTOjpPYmplY3RJbXA6Omhhc0luc3RhbmNlKGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICosIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2hhc093blByb3BlcnR5QE9iamVj
dEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODQgTk9OQU1F
IDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUg
KiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNPd25Qcm9w
ZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg1IE5PTkFNRSA7IGJv
b2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVu
c2lnbmVkIGludCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVC
RV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODYgTk9OQU1FIDsgYm9vbCBL
SlM6Ok9iamVjdEltcDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xh
c3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBP
YmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg3IE5PTkFNRSA7IGJvb2wg
S0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVu
c2lnbmVkIGludCkgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODggTk9OQU1FIDsgYm9vbCBLSlM6Ok9i
amVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVu
dGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVf
TlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1By
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAg
P2hhc1Byb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRp
ZmllckAyQEBaIEAgOTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzUHJvcGVydHko
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNv
bnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAy
QElAWiBAIDkxIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1Byb3BlcnR5KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2ltcEF0QExpc3RA
S0pTQEBRQkVQQVZWYWx1ZUltcEAyQEhAWiBAIDkyIE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWVJ
bXAgKiBLSlM6Okxpc3Q6OmltcEF0KGludCkgY29uc3QNCisgICAgP2ltcGxlbWVudHNDYWxsQE9i
amVjdEltcEBLSlNAQFVCRV9OWFogQCA5MyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjpp
bXBsZW1lbnRzQ2FsbCh2b2lkKSBjb25zdA0KKyAgICA/aW1wbGVtZW50c0NvbnN0cnVjdEBPYmpl
Y3RJbXBAS0pTQEBVQkVfTlhaIEAgOTQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aW1w
bGVtZW50c0NvbnN0cnVjdCh2b2lkKSBjb25zdA0KKyAgICA/aW1wbGVtZW50c0hhc0luc3RhbmNl
QE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA5NSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1w
OjppbXBsZW1lbnRzSGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCisgICAgP2luY1N0YXRlbWVudENv
dW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgOTYgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVy
cHJldGVyOjppbmNTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KKyAgICA/aW5oZXJpdHNAT2JqZWN0SW1w
QEtKU0BAUUJFX05QQlVDbGFzc0luZm9AMkBAWiBAIDk3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmpl
Y3RJbXA6OmluaGVyaXRzKHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqKSBjb25zdA0KKyAg
ICA/aW5pdEdsb2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDk4IE5PTkFNRSA7
IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVjdCh2b2lkKQ0KKyAgICA/aXNO
dWxsQFVTdHJpbmdAS0pTQEBRQkVfTlhaIEAgOTkgTk9OQU1FIDsgYm9vbCBLSlM6OlVTdHJpbmc6
OmlzTnVsbCh2b2lkKSBjb25zdA0KKyAgICA/bGVuZ3RoUHJvcGVydHlAS0pTQEBZQUFCVklkZW50
aWZpZXJAMUBYWiBAIDEwMCBOT05BTUUgOyBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiBL
SlM6Omxlbmd0aFByb3BlcnR5KHZvaWQpDQorICAgID9sZXhpY2FsSW50ZXJwcmV0ZXJARXhlY1N0
YXRlQEtKU0BAUUJFUEFWSW50ZXJwcmV0ZXJAMkBYWiBAIDEwMSBOT05BTUUgOyBjbGFzcyBLSlM6
OkludGVycHJldGVyICogS0pTOjpFeGVjU3RhdGU6OmxleGljYWxJbnRlcnByZXRlcih2b2lkKSBj
b25zdA0KKyAgICA/bG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTAyIE5PTkFNRSA7IHZv
aWQgS0pTOjpJbnRlcnByZXRlcjo6bG9jayh2b2lkKQ0KKyAgICA/bWFya0BPYmplY3RJbXBAS0pT
QEBVQUVYWFogQCAxMDMgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6bWFyayh2b2lkKQ0K
KyAgICA/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDEwNCBOT05BTUUgOyBib29sIEtK
Uzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lkKSBjb25zdA0KKyAgICA/bWVzc2FnZVByb3BlcnR5QEtK
U0BAWUFBQlZJZGVudGlmaWVyQDFAWFogQCAxMDUgTk9OQU1FIDsgY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYgS0pTOjptZXNzYWdlUHJvcGVydHkodm9pZCkNCisgICAgP3Byb3BMaXN0QE9i
amVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTA2
IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3Qo
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP3Byb3BMaXN0QE9iamVjdEltcEBL
SlNAQFVBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTA3IE5PTkFN
RSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdEltcDo6cHJvcExpc3QoY2xh
c3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP3Byb3RvdHlwZUBPYmplY3RJbXBAS0pT
QEBRQkU/QVZWYWx1ZUAyQFhaIEAgMTA4IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpP
YmplY3RJbXA6OnByb3RvdHlwZSh2b2lkKSBjb25zdA0KKyAgICA/cHVzaEBTY29wZUNoYWluQEtK
U0BAUUFFWEFCVjEyQEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpwdXNo
KGNsYXNzIEtKUzo6U2NvcGVDaGFpbiBjb25zdCAmKQ0KKyAgICA/cHVzaEBTY29wZUNoYWluQEtK
U0BAUUFFWFBBVk9iamVjdEltcEAyQEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNo
YWluOjpwdXNoKGNsYXNzIEtKUzo6T2JqZWN0SW1wICopDQorICAgID9wdXRAT2JqZWN0SW1wQEtK
U0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQlZWYWx1ZUAyQEhAWiBAIDEx
MSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUg
KiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3Qg
JiwgaW50KQ0KKyAgICA/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQQVZFeGVjU3RhdGVAMkBJQUJW
VmFsdWVAMkBIQFogQCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0KGNsYXNz
IEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAm
LCBpbnQpDQorICAgID9wdXREaXJlY3RAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVklkZW50aWZpZXJA
MkBISEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dERpcmVjdChjbGFz
cyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiwgaW50LCBpbnQpDQorICAgID9wdXREaXJlY3RAT2Jq
ZWN0SW1wQEtKU0BAUUFFWEFCVklkZW50aWZpZXJAMkBQQVZWYWx1ZUltcEAyQEhAWiBAIDExNCBO
T05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3QoY2xhc3MgS0pTOjpJZGVudGlm
aWVyIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWVJbXAgKiwgaW50KQ0KKyAgICA/cmVmVmFsdWVz
QExpc3RAS0pTQEBBQUVYWFogQCAxMTUgTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6OnJlZlZhbHVl
cyh2b2lkKQ0KKyAgICA/cmVsZWFzZUBMaXN0QEtKU0BAQUFFWFhaIEAgMTE2IE5PTkFNRSA7IHZv
aWQgS0pTOjpMaXN0OjpyZWxlYXNlKHZvaWQpDQorICAgID9yZWxlYXNlQFNjb3BlQ2hhaW5AS0pT
QEBBQUVYWFogQCAxMTcgTk9OQU1FIDsgdm9pZCBLSlM6OlNjb3BlQ2hhaW46OnJlbGVhc2Uodm9p
ZCkNCisgICAgP3JlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXNAUm9vdE9iamVjdEBCaW5kaW5nc0BL
SlNAQFFBRVhYWiBAIDExOCBOT05BTUUgOyB2b2lkIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6
OnJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXModm9pZCkNCisgICAgP3JlbW92ZU5hdGl2ZVJlZmVy
ZW5jZUBCaW5kaW5nc0BLSlNAQFlBWFBBVk9iamVjdEltcEAyQEBaIEAgMTE5IE5PTkFNRSA7IHZv
aWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlKGNsYXNzIEtKUzo6T2JqZWN0
SW1wICopDQorICAgID9yZXNldFN0YXRlbWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFha
IEAgMTIwIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzZXRTdGF0ZW1lbnRDb3Vu
dCh2b2lkKQ0KKyAgICA/cmVzdG9yZUBQcm9wZXJ0eU1hcEBLSlNAQFFBRVhBQlZTYXZlZFByb3Bl
cnRpZXNAMkBAWiBAIDEyMSBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnJlc3RvcmUo
Y2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMgY29uc3QgJikNCisgICAgP3Jlc3RvcmVCdWlsdGlu
c0BJbnRlcnByZXRlckBLSlNAQFFBRVhBQlZTYXZlZEJ1aWx0aW5zQDJAQFogQCAxMjIgTk9OQU1F
IDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpyZXN0b3JlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZl
ZEJ1aWx0aW5zIGNvbnN0ICYpDQorICAgID9zYXZlQFByb3BlcnR5TWFwQEtKU0BAUUJFWEFBVlNh
dmVkUHJvcGVydGllc0AyQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgS0pTOjpQcm9wZXJ0eU1hcDo6
c2F2ZShjbGFzcyBLSlM6OlNhdmVkUHJvcGVydGllcyAmKSBjb25zdA0KKyAgICA/c2F2ZUJ1aWx0
aW5zQEludGVycHJldGVyQEtKU0BAUUJFWEFBVlNhdmVkQnVpbHRpbnNAMkBAWiBAIDEyNCBOT05B
TUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNhdmVCdWlsdGlucyhjbGFzcyBLSlM6OlNhdmVk
QnVpbHRpbnMgJikgY29uc3QNCisgICAgP3NldENvbXBhdE1vZGVASW50ZXJwcmV0ZXJAS0pTQEBR
QUVYVzRDb21wYXRNb2RlQDEyQEBaIEAgMTI1IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRl
cjo6c2V0Q29tcGF0TW9kZShlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1vZGUpDQorICAg
ID9zZXRJbnRlcnByZXRlckBSb290T2JqZWN0QEJpbmRpbmdzQEtKU0BAUUFFWFBBVkludGVycHJl
dGVyQDNAQFogQCAxMjYgTk9OQU1FIDsgdm9pZCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0Ojpz
ZXRJbnRlcnByZXRlcihjbGFzcyBLSlM6OkludGVycHJldGVyICopDQorICAgID9zZXRQcm90b3R5
cGVAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVlZhbHVlQDJAQFogQCAxMjcgTk9OQU1FIDsgdm9pZCBL
SlM6Ok9iamVjdEltcDo6c2V0UHJvdG90eXBlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisg
ICAgP3NldFNob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNBWF9OQFogQCAx
MjggTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpzZXRTaG91bGRQcmludEV4Y2VwdGlv
bnMoYm9vbCkNCisgICAgP3Nob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNB
X05YWiBAIDEyOSBOT05BTUUgOyBib29sIEtKUzo6SW50ZXJwcmV0ZXI6OnNob3VsZFByaW50RXhj
ZXB0aW9ucyh2b2lkKQ0KKyAgICA/dG9BcnJheUluZGV4QFVTdHJpbmdAS0pTQEBRQkVJUEFfTkBa
IEAgMTMwIE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlVTdHJpbmc6OnRvQXJyYXlJbmRleChi
b29sICopIGNvbnN0DQorICAgID90b0Jvb2xlYW5AT2JqZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVj
U3RhdGVAMkBAWiBAIDEzMSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjp0b0Jvb2xlYW4o
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvSW50MzJAVmFsdWVJbXBAS0pT
QEBRQkVIUEFWRXhlY1N0YXRlQDJAQFogQCAxMzIgTk9OQU1FIDsgaW50IEtKUzo6VmFsdWVJbXA6
OnRvSW50MzIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvSW50ZWdlckBW
YWx1ZUltcEBLSlNAQFFCRU5QQVZFeGVjU3RhdGVAMkBAWiBAIDEzMyBOT05BTUUgOyBkb3VibGUg
S0pTOjpWYWx1ZUltcDo6dG9JbnRlZ2VyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQor
ICAgID90b051bWJlckBPYmplY3RJbXBAS0pTQEBVQkVOUEFWRXhlY1N0YXRlQDJAQFogQCAxMzQg
Tk9OQU1FIDsgZG91YmxlIEtKUzo6T2JqZWN0SW1wOjp0b051bWJlcihjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqKSBjb25zdA0KKyAgICA/dG9PYmplY3RAT2JqZWN0SW1wQEtKU0BAVUJFP0FWT2JqZWN0
QDJAUEFWRXhlY1N0YXRlQDJAQFogQCAxMzUgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pT
OjpPYmplY3RJbXA6OnRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQorICAg
ID90b1ByaW1pdGl2ZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAy
QFc0VHlwZUAyQEBaIEAgMTM2IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJ
bXA6OnRvUHJpbWl0aXZlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pTOjpUeXBlKSBj
b25zdA0KKyAgICA/dG9TdHJpbmdAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmluZ0AyQFBBVkV4
ZWNTdGF0ZUAyQEBaIEAgMTM3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBLSlM6Ok9iamVj
dEltcDo6dG9TdHJpbmcoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvVUlu
dDE2QFZhbHVlSW1wQEtKU0BAUUJFR1BBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM4IE5PTkFNRSA7IHVu
c2lnbmVkIHNob3J0IEtKUzo6VmFsdWVJbXA6OnRvVUludDE2KGNsYXNzIEtKUzo6RXhlY1N0YXRl
ICopIGNvbnN0DQorICAgID90b1VJbnQzMkBWYWx1ZUltcEBLSlNAQEVCRV9OQUFJQFogQCAxMzkg
Tk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQzMih1bnNpZ25lZCBpbnQgJikgY29u
c3QNCisgICAgP3RvVUludDMyQFZhbHVlSW1wQEtKU0BAUUJFSVBBVkV4ZWNTdGF0ZUAyQEBaIEAg
MTQwIE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQzMihjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9VTG9uZ0BVU3RyaW5nQEtKU0BAUUJFS1BB
X05AWiBAIDE0MSBOT05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6VVN0cmluZzo6dG9VTG9uZyhi
b29sICopIGNvbnN0DQorICAgID90eXBlQE9iamVjdEltcEBLSlNAQFVCRT9BVzRUeXBlQDJAWFog
QCAxNDIgTk9OQU1FIDsgZW51bSBLSlM6OlR5cGUgS0pTOjpPYmplY3RJbXA6OnR5cGUodm9pZCkg
Y29uc3QNCisgICAgP3VubG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTQzIE5PTkFNRSA7
IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dW5sb2NrKHZvaWQpDQorICAgID92YWx1ZUBTdHJpbmdA
S0pTQEBRQkU/QVZVU3RyaW5nQDJAWFogQCAxNDQgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5n
IEtKUzo6U3RyaW5nOjp2YWx1ZSh2b2lkKSBjb25zdA0KKyAgICA/dmlydHVhbF9ob29rQEludGVy
cHJldGVyQEtKU0BATUFFWEhQQVhAWiBAIDE0NSBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0
ZXI6OnZpcnR1YWxfaG9vayhpbnQsIHZvaWQgKikNCisgICAgTlBOX0NyZWF0ZU9iamVjdCBAIDE0
NiBOT05BTUUNCisgICAgTlBOX0V2YWx1YXRlIEAgMTQ3IE5PTkFNRQ0KKyAgICBOUE5fR2V0SW50
SWRlbnRpZmllciBAIDE0OCBOT05BTUUNCisgICAgTlBOX0dldFByb3BlcnR5IEAgMTQ5IE5PTkFN
RQ0KKyAgICBOUE5fR2V0U3RyaW5nSWRlbnRpZmllciBAIDE1MCBOT05BTUUNCisgICAgTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXJzIEAgMTUxIE5PTkFNRQ0KKyAgICBOUE5fSGFzTWV0aG9kIEAgMTUy
IE5PTkFNRQ0KKyAgICBOUE5fSGFzUHJvcGVydHkgQCAxNTMgTk9OQU1FDQorICAgIE5QTl9JZGVu
dGlmaWVySXNTdHJpbmcgQCAxNTQgTk9OQU1FDQorICAgIE5QTl9JbnRGcm9tSWRlbnRpZmllciBA
IDE1NSBOT05BTUUNCisgICAgTlBOX0ludm9rZSBAIDE1NiBOT05BTUUNCisgICAgTlBOX0ludm9r
ZURlZmF1bHQgQCAxNTcgTk9OQU1FDQorICAgIE5QTl9SZWxlYXNlT2JqZWN0IEAgMTU4IE5PTkFN
RQ0KKyAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSBAIDE1OSBOT05BTUUNCisgICAgTlBOX1Jl
bW92ZVByb3BlcnR5IEAgMTYwIE5PTkFNRQ0KKyAgICBOUE5fUmV0YWluT2JqZWN0IEAgMTYxIE5P
TkFNRQ0KKyAgICBOUE5fU2V0RXhjZXB0aW9uIEAgMTYyIE5PTkFNRQ0KKyAgICBOUE5fU2V0UHJv
cGVydHkgQCAxNjMgTk9OQU1FDQorICAgIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIgQCAxNjQgTk9O
QU1FDQorICAgIF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IEAgMTY1IE5PTkFNRQ0KKyAgICBranNf
c3RydG9kIEAgMTY2IE5PTkFNRQ0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0VBQkkv
SmF2YXNjcmlwdENvcmVVLmRlZg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3Vw
L0VBQkkvSmF2YXNjcmlwdENvcmVVLmRlZgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlw
dENvcmUvZ3JvdXAvRUFCSS9KYXZhc2NyaXB0Q29yZVUuZGVmCSh3b3JraW5nIGNvcHkpDQpAQCAt
MSwzOTAgKzEsNDM0IEBADQogRVhQT1JUUw0KLQlfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQS2Mg
QCAxIE5PTkFNRQ0KLQlfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQTlNfN1VTdHJpbmczUmVwRSBA
IDIgTk9OQU1FDQotCV9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQ
S05TXzVVQ2hhckVpIEAgMyBOT05BTUUNCi0JX1pOM0tKUzEwSWRlbnRpZmllcjVlcXVhbEVQTlNf
N1VTdHJpbmczUmVwRVBLYyBAIDQgTk9OQU1FDQotCV9aTjNLSlMxMFNjb3BlQ2hhaW40cHVzaEVQ
TlNfOU9iamVjdEltcEUgQCA1IE5PTkFNRQ0KLQlfWk4zS0pTMTBTY29wZUNoYWluN3JlbGVhc2VF
diBAIDYgTk9OQU1FDQotCV9aTjNLSlMxMFNjb3BlQ2hhaW5hU0VSS1MwXyBAIDcgTk9OQU1FDQot
CV9aTjNLSlMxMUludGVycHJldGVyMTBnbG9iYWxFeGVjRXYgQCA4IE5PTkFNRQ0KLQlfWk4zS0pT
MTFJbnRlcnByZXRlcjEydmlydHVhbF9ob29rRWlQdiBAIDkgTk9OQU1FDQotCV9aTjNLSlMxMUlu
dGVycHJldGVyMTNzZXRDb21wYXRNb2RlRU5TMF8xMENvbXBhdE1vZGVFIEAgMTAgTk9OQU1FDQot
CV9aTjNLSlMxMUludGVycHJldGVyMTVyZXN0b3JlQnVpbHRpbnNFUktOU18xM1NhdmVkQnVpbHRp
bnNFIEAgMTEgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTZpbml0R2xvYmFsT2JqZWN0
RXYgQCAxMiBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxN2luY1N0YXRlbWVudENvdW50
RXYgQCAxMyBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxOXJlc2V0U3RhdGVtZW50Q291
bnRFdiBAIDE0IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjIxc2hvdWxkUHJpbnRFeGNl
cHRpb25zRXYgQCAxNSBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIyNHNldFNob3VsZFBy
aW50RXhjZXB0aW9uc0ViIEAgMTYgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyNGxvY2tF
diBAIDE3IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjZ1bmxvY2tFdiBAIDE4IE5PTkFN
RQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRVJLTlNfNVZh
bHVlRVMzXyBAIDE5IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05T
XzdVU3RyaW5nRWlTM19SS05TXzVWYWx1ZUUgQCAyMCBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJw
cmV0ZXJDMUVSS05TXzZPYmplY3RFIEAgMjEgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVy
QzJFUktOU182T2JqZWN0RSBAIDIyIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlckQwRXYg
QCAyMyBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXJEMUV2IEAgMjQgTk9OQU1FDQotCV9a
TjNLSlMxMUludGVycHJldGVyRDJFdiBAIDI1IE5PTkFNRQ0KLQlfWk4zS0pTMTFQcm9wZXJ0eU1h
cDdyZXN0b3JlRVJLTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMjYgTk9OQU1FDQotCV9aTjNLSlMx
NGxlbmd0aFByb3BlcnR5RXYgQCAyNyBOT05BTUUNCi0JX1pOM0tKUzE1bWVzc2FnZVByb3BlcnR5
RXYgQCAyOCBOT05BTUUNCi0JX1pOM0tKUzRMaXN0MTFkZXJlZlZhbHVlc0V2IEAgMjkgTk9OQU1F
DQotCV9aTjNLSlM0TGlzdDZhcHBlbmRFUE5TXzhWYWx1ZUltcEUgQCAzMCBOT05BTUUNCi0JX1pO
M0tKUzRMaXN0N3JlbGVhc2VFdiBAIDMxIE5PTkFNRQ0KLQlfWk4zS0pTNExpc3Q5cmVmVmFsdWVz
RXYgQCAzMiBOT05BTUUNCi0JX1pOM0tKUzRMaXN0QzFFdiBAIDMzIE5PTkFNRQ0KLQlfWk4zS0pT
NExpc3RDMkV2IEAgMzQgTk9OQU1FDQotCV9aTjNLSlM0TGlzdGFTRVJLUzBfIEAgMzUgTk9OQU1F
DQotCV9aTjNLSlM0TnVsbEMxRXYgQCAzNiBOT05BTUUNCi0JX1pOM0tKUzROdWxsQzJFdiBAIDM3
IE5PTkFNRQ0KLQlfWk4zS0pTNUVycm9yNmNyZWF0ZUVQTlNfOUV4ZWNTdGF0ZUVOU185RXJyb3JU
eXBlRVBLY2lpUEtOU183VVN0cmluZ0UgQCAzOCBOT05BTUUNCi0JX1pOM0tKUzVWYWx1ZUMxRVBO
U184VmFsdWVJbXBFIEAgMzkgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVDMUVSS1MwXyBAIDQwIE5P
TkFNRQ0KLQlfWk4zS0pTNVZhbHVlQzJFUE5TXzhWYWx1ZUltcEUgQCA0MSBOT05BTUUNCi0JX1pO
M0tKUzVWYWx1ZUMyRVJLUzBfIEAgNDIgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVEMUV2IEAgNDMg
Tk9OQU1FDQotCV9aTjNLSlM1VmFsdWVEMkV2IEAgNDQgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVh
U0VSS1MwXyBAIDQ1IE5PTkFNRQ0KLQlfWk4zS0pTNkxvb2t1cDlmaW5kRW50cnlFUEtOU185SGFz
aFRhYmxlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDQ2IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMx
RWQgQCA0NyBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVpIEAgNDggTk9OQU1FDQotCV9aTjNL
SlM2TnVtYmVyQzFFaiBAIDQ5IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMxRWwgQCA1MCBOT05B
TUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVtIEAgNTEgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzJF
ZCBAIDUyIE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRWkgQCA1MyBOT05BTUUNCi0JX1pOM0tK
UzZOdW1iZXJDMkVqIEAgNTQgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzJFbCBAIDU1IE5PTkFN
RQ0KLQlfWk4zS0pTNk51bWJlckMyRW0gQCA1NiBOT05BTUUNCi0JX1pOM0tKUzZPYmplY3QxMWR5
bmFtaWNDYXN0RVJLTlNfNVZhbHVlRSBAIDU3IE5PTkFNRQ0KLQlfWk4zS0pTNk9iamVjdDRjYWxs
RVBOU185RXhlY1N0YXRlRVJTMF9SS05TXzRMaXN0RSBAIDU4IE5PTkFNRQ0KLQlfWk4zS0pTNlN0
cmluZ0MxRVJLTlNfN1VTdHJpbmdFIEAgNTkgTk9OQU1FDQotCV9aTjNLSlM2U3RyaW5nQzJFUktO
U183VVN0cmluZ0UgQCA2MCBOT05BTUUNCi0JX1pOM0tKUzdCb29sZWFuQzFFYiBAIDYxIE5PTkFN
RQ0KLQlfWk4zS0pTN0Jvb2xlYW5DMkViIEAgNjIgTk9OQU1FDQotCV9aTjNLSlM3Q1N0cmluZ2FT
RVBLYyBAIDYzIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmcxMGF0dGFjaE51bGxFdiBAIDY0IE5P
TkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmczUmVwMTNjcmVhdGVDb3B5aW5nRVBLTlNfNVVDaGFyRWkg
QCA2NSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nM1JlcDZjcmVhdGVFUE5TXzVVQ2hhckVpIEAg
NjYgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzNSZXA3ZGVzdHJveUV2IEAgNjcgTk9OQU1FDQot
CV9aTjNLSlM3VVN0cmluZzRmcm9tRWwgQCA2OCBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nNmFw
cGVuZEVQS2MgQCA2OSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nNmFwcGVuZEVSS1MwXyBAIDcw
IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQS05TXzVVQ2hhckVpIEAgNzEgTk9OQU1FDQot
CV9aTjNLSlM3VVN0cmluZ0MxRVBLYyBAIDcyIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQ
TlNfNVVDaGFyRWliIEAgNzMgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRVJLUzBfUzJfIEAg
NzQgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRWMgQCA3NSBOT05BTUUNCi0JX1pOM0tKUzdV
U3RyaW5nQzFFdiBAIDc2IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVQS05TXzVVQ2hhckVp
IEAgNzcgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRVBLYyBAIDc4IE5PTkFNRQ0KLQlfWk4z
S0pTN1VTdHJpbmdDMkVQTlNfNVVDaGFyRWliIEAgNzkgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmlu
Z0MyRVJLUzBfUzJfIEAgODAgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRWMgQCA4MSBOT05B
TUUNCi0JX1pOM0tKUzdVU3RyaW5nQzJFdiBAIDgyIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdh
U0VSS1MwXyBAIDgzIE5PTkFNRQ0KLQlfWk4zS0pTOFZhbHVlSW1wZGxFUHYgQCA4NCBOT05BTUUN
Ci0JX1pOM0tKUzhWYWx1ZUltcG53RWogQCA4NSBOT05BTUUNCi0JX1pOM0tKUzlDb2xsZWN0b3I3
Y29sbGVjdEV2IEAgODYgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wMTFoYXNJbnN0YW5jZUVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzVWYWx1ZUUgQCA4NyBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJ
bXAxMnNldFByb3RvdHlwZUVSS05TXzVWYWx1ZUUgQCA4OCBOT05BTUUNCi0JX1pOM0tKUzlPYmpl
Y3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBA
IDg5IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVj
U3RhdGVFaiBAIDkwIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDE5ZGVsZXRlQWxsUHJvcGVy
dGllc0VQTlNfOUV4ZWNTdGF0ZUUgQCA5MSBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAzcHV0
RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfNVZhbHVlRWkgQCA5MiBOT05B
TUUNCi0JX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRWpSS05TXzVWYWx1ZUVp
IEAgOTMgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wNGNhbGxFUE5TXzlFeGVjU3RhdGVFUk5T
XzZPYmplY3RFUktOU180TGlzdEUgQCA5NCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA0bWFy
a0V2IEAgOTUgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOHByb3BMaXN0RVBOU185RXhlY1N0
YXRlRWIgQCA5NiBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA5Y29uc3RydWN0RVBOU185RXhl
Y1N0YXRlRVJLTlNfNExpc3RFIEAgOTcgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOWNvbnN0
cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RVJLTlNfN1VTdHJpbmdFaSBAIDk4IE5PTkFN
RQ0KLQlfWk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFUE5TXzhW
YWx1ZUltcEVpIEAgOTkgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOXB1dERpcmVjdEVSS05T
XzEwSWRlbnRpZmllckVpaSBAIDEwMCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBDMUVSS05T
XzZPYmplY3RFIEAgMTAxIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEMxRXYgQCAxMDIgTk9O
QU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wQzJFUktOU182T2JqZWN0RSBAIDEwMyBOT05BTUUNCi0J
X1pOM0tKUzlPYmplY3RJbXBDMkV2IEAgMTA0IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEQw
RXYgQCAxMDUgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wRDFFdiBAIDEwNiBOT05BTUUNCi0J
X1pOM0tKUzlPYmplY3RJbXBEMkV2IEAgMTA3IE5PTkFNRQ0KLQlfWk4zS0pTOVVuZGVmaW5lZEMx
RXYgQCAxMDggTk9OQU1FDQotCV9aTjNLSlM5VW5kZWZpbmVkQzJFdiBAIDEwOSBOT05BTUUNCi0J
X1pOM0tKU2VxRVJLTlNfN1VTdHJpbmdFUEtjIEAgMTEwIE5PTkFNRQ0KLQlfWk5LM0tKUzExSW50
ZXJwcmV0ZXIxMGNvbXBhdE1vZGVFdiBAIDExMSBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJl
dGVyMTJidWlsdGluQXJyYXlFdiBAIDExMiBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVy
MTJnbG9iYWxPYmplY3RFdiBAIDExMyBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVycHJldGVyMTJz
YXZlQnVpbHRpbnNFUk5TXzEzU2F2ZWRCdWlsdGluc0UgQCAxMTQgTk9OQU1FDQotCV9aTkszS0pT
MTFJbnRlcnByZXRlcjEzYnVpbHRpbk9iamVjdEV2IEAgMTE1IE5PTkFNRQ0KLQlfWk5LM0tKUzEx
SW50ZXJwcmV0ZXIxNWJ1aWx0aW5GdW5jdGlvbkV2IEAgMTE2IE5PTkFNRQ0KLQlfWk5LM0tKUzEx
SW50ZXJwcmV0ZXIyMmJ1aWx0aW5PYmplY3RQcm90b3R5cGVFdiBAIDExNyBOT05BTUUNCi0JX1pO
SzNLSlMxMVByb3BlcnR5TWFwM2dldEVSS05TXzEwSWRlbnRpZmllckUgQCAxMTggTk9OQU1FDQot
CV9aTkszS0pTMTFQcm9wZXJ0eU1hcDRzYXZlRVJOU18xNVNhdmVkUHJvcGVydGllc0UgQCAxMTkg
Tk9OQU1FDQotCV9aTkszS0pTNExpc3Q1aW1wQXRFaSBAIDEyMCBOT05BTUUNCi0JX1pOSzNLSlM0
TGlzdDhjb3B5VGFpbEV2IEAgMTIxIE5PTkFNRQ0KLQlfWk5LM0tKUzZPYmplY3QxMWhhc1Byb3Bl
cnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDEyMiBOT05BTUUNCi0JX1pO
SzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTIzIE5PTkFNRQ0K
LQlfWk5LM0tKUzZPYmplY3QxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRSBAIDEyNCBOT05BTUUNCi0JX1pOSzNLSlM2U3RyaW5nNXZhbHVlRXYgQCAxMjUg
Tk9OQU1FDQotCV9aTkszS0pTN1VTdHJpbmcxMnRvQXJyYXlJbmRleEVQYiBAIDEyNiBOT05BTUUN
Ci0JX1pOSzNLSlM3VVN0cmluZzVhc2NpaUV2IEAgMTI3IE5PTkFNRQ0KLQlfWk5LM0tKUzdVU3Ry
aW5nNmlzTnVsbEV2IEAgMTI4IE5PTkFNRQ0KLQlfWk5LM0tKUzdVU3RyaW5nN3RvVUxvbmdFUGIg
QCAxMjkgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wMTZkaXNwYXRjaFRvT2JqZWN0RVBOU185
RXhlY1N0YXRlRSBAIDEzMCBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA2bWFya2VkRXYgQCAx
MzEgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wN3RvSW50MzJFUE5TXzlFeGVjU3RhdGVFIEAg
MTMyIE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQxNkVQTlNfOUV4ZWNTdGF0ZUUg
QCAxMzMgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wOHRvVUludDMyRVBOU185RXhlY1N0YXRl
RSBAIDEzNCBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MzJFUmogQCAxMzUgTk9O
QU1FDQotCV9aTkszS0pTOFZhbHVlSW1wOXRvSW50ZWdlckVQTlNfOUV4ZWNTdGF0ZUUgQCAxMzYg
Tk9OQU1FDQotCV9aTkszS0pTOUV4ZWNTdGF0ZTE4bGV4aWNhbEludGVycHJldGVyRXYgQCAxMzcg
Tk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFIEAgMTM4IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxMWhh
c1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxMzkgTk9OQU1FDQotCV9aTkszS0pTOU9iamVj
dEltcDExdG9QcmltaXRpdmVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTQwIE5PTkFNRQ0K
LQlfWk5LM0tKUzlPYmplY3RJbXAxMmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU180VHlw
ZUUgQCAxNDEgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE0aGFzT3duUHJvcGVydHlFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTQyIE5PTkFNRQ0KLQlfWk5LM0tKUzlP
YmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxNDMgTk9OQU1FDQot
CV9aTkszS0pTOU9iamVjdEltcDE0aW1wbGVtZW50c0NhbGxFdiBAIDE0NCBOT05BTUUNCi0JX1pO
SzNLSlM5T2JqZWN0SW1wMTlpbXBsZW1lbnRzQ29uc3RydWN0RXYgQCAxNDUgTk9OQU1FDQotCV9a
TkszS0pTOU9iamVjdEltcDIxaW1wbGVtZW50c0hhc0luc3RhbmNlRXYgQCAxNDYgTk9OQU1FDQot
CV9aTkszS0pTOU9iamVjdEltcDNnZXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
IEAgMTQ3IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185RXhlY1N0YXRlRWog
QCAxNDggTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDR0eXBlRXYgQCAxNDkgTk9OQU1FDQot
CV9aTkszS0pTOU9iamVjdEltcDZjYW5QdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFIEAgMTUwIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA4aW5oZXJpdHNFUEtOU185Q2xh
c3NJbmZvRSBAIDE1MSBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRvTnVtYmVyRVBOU185
RXhlY1N0YXRlRSBAIDE1MiBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRvT2JqZWN0RVBO
U185RXhlY1N0YXRlRSBAIDE1MyBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRvU3RyaW5n
RVBOU185RXhlY1N0YXRlRSBAIDE1NCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOWNsYXNz
SW5mb0V2IEAgMTU1IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA5Y2xhc3NOYW1lRXYgQCAx
NTYgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDlwcm90b3R5cGVFdiBAIDE1NyBOT05BTUUN
Ci0JX1pOSzNLSlM5T2JqZWN0SW1wOXRvQm9vbGVhbkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNTggTk9O
QU1FDQotCV9aVElOM0tKUzEwQXNzaWduTm9kZUUgQCAxNTkgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTBCb29sZWFuSW1wRSBAIDE2MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMERlbGV0ZU5vZGVFIEAgMTYxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzEwTmVnYXRlTm9kZUUgQCAxNjIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTBOdW1iZXJOb2RlRSBAIDE2MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxMFByZWZpeE5vZGVFIEAgMTY0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzEwUmVnRXhwTm9kZUUgQCAxNjUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTMTBSZXR1cm5Ob2RlRSBAIDE2NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxMFN0cmluZ05vZGVFIEAgMTY3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzEwU3dpdGNoTm9kZUUgQCAxNjggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTBUeXBlT2ZOb2RlRSBAIDE2OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMUJpdE9wZXJOb2RlRSBAIDE3MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMUJvb2xlYW5Ob2RlRSBAIDE3MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMURvV2hpbGVOb2RlRSBAIDE3MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMUVsZW1lbnROb2RlRSBAIDE3MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMUZpbmFsbHlOb2RlRSBAIDE3NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDE3NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMUludGVycHJldGVyRSBAIDE3NiBOT05BTUUgREFUQSA4IDsgIzxUST4jDQotCV9aVElO
M0tKUzExTWF0aEZ1bmNJbXBFIEAgMTc3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzExTmV3RXhwck5vZGVFIEAgMTc4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzExUG9zdGZpeE5vZGVFIEAgMTc5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzExUmVzb2x2ZU5vZGVFIEAgMTgwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzExVmFyRGVjbE5vZGVFIEAgMTgxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzEyQ29udGludWVOb2RlRSBAIDE4MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAxODMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTJGdW5jRXhwck5vZGVFIEAgMTg0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzEyUHJvcGVydHlOb2RlRSBAIDE4NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAxODYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTMTJVbmRlZmluZWRJbXBFIEAgMTg3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzEzQWNjZXNzb3JOb2RlMUUgQCAxODggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDE4OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMTkwIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzEzQXJndW1lbnRzTm9kZUUgQCAxOTEgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTNDYXNlQmxvY2tOb2RlRSBAIDE5MiBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0RhdGVPYmplY3RJbXBFIEAgMTkzIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzEzR2xvYmFsRnVuY0ltcEUgQCAxOTQgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDE5NSBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM1BhcmFtZXRlck5vZGVFIEAgMTk2IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzU3RhdGVtZW50Tm9kZUUgQCAxOTcgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNVbmFyeVBsdXNOb2RlRSBAIDE5OCBOT05B
TUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFycmF5T2JqZWN0SW1wRSBAIDE5OSBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFzc2lnbkV4cHJOb2RlRSBAIDIw
MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBA
IDIwMSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNENhc2VDbGF1c2VOb2Rl
RSBAIDIwMiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNENsYXVzZUxpc3RO
b2RlRSBAIDIwMyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEVycm9yT2Jq
ZWN0SW1wRSBAIDIwNCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNExvZ2lj
YWxOb3ROb2RlRSBAIDIwNSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNE5h
dGl2ZUVycm9ySW1wRSBAIDIwNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
NFJlbGF0aW9uYWxOb2RlRSBAIDIwNyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxNUNvbmRpdGlvbmFsTm9kZUUgQCAyMDggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTVOdW1iZXJPYmplY3RJbXBFIEAgMjA5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDIxMCBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAyMTEgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAgMjEyIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzE1VmFyRGVjbExpc3ROb2RlRSBAIDIxMyBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAgMjE0IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAyMTUg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZCb29sZWFuT2JqZWN0SW1wRSBA
IDIxNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkRhdGVQcm90b0Z1bmNJ
bXBFIEAgMjE3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2RGF0ZVByb3Rv
dHlwZUltcEUgQCAyMTggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZGdW5j
dGlvbkJvZHlOb2RlRSBAIDIxOSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
NkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMjIwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAyMjEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAyMjIgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTdBcnJheVByb3RvdHlwZUltcEUgQCAyMjMgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAyMjQgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUgQCAyMjUgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdFcnJvclByb3RvRnVuY0ltcEUgQCAy
MjYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdFeHByU3RhdGVtZW50Tm9k
ZUUgQCAyMjcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdGdW5jdGlvbk9i
amVjdEltcEUgQCAyMjggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdPYmpl
Y3RMaXRlcmFsTm9kZUUgQCAyMjkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pT
MTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAyMzAgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMTdTdHJpbmdJbnN0YW5jZUltcEUgQCAyMzEgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMjMyIE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBAIDIzMyBOT05BTUUgREFU
QSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOE9iamVjdFByb3RvRnVuY0ltcEUgQCAyMzQgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAg
MjM1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4U291cmNlRWxlbWVudHNO
b2RlRSBAIDIzNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOFN0cmluZ1By
b3RvRnVuY0ltcEUgQCAyMzcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThT
dHJpbmdQcm90b3R5cGVJbXBFIEAgMjM4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzE5Qm9vbGVhblByb3RvRnVuY0ltcEUgQCAyMzkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMN
Ci0JX1pUSU4zS0pTMTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDI0MCBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAgMjQxIE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE5U3RyaW5nT2JqZWN0RnVuY0ltcEUgQCAyNDIg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMjBGdW5jdGlvblByb3RvRnVuY0lt
cEUgQCAyNDMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMjBGdW5jdGlvblBy
b3RvdHlwZUltcEUgQCAyNDQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTNE5v
ZGVFIEAgMjQ1IE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pUSU4zS0pTNklmTm9kZUUgQCAy
NDYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTN0FkZE5vZGVFIEAgMjQ3IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzdGb3JOb2RlRSBAIDI0OCBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM3TnVsbEltcEUgQCAyNDkgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTN1RyeU5vZGVFIEAgMjUwIE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzhEZWJ1Z2dlckUgQCAyNTEgTk9OQU1FIERBVEEgOCA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlM4TXVsdE5vZGVFIEAgMjUyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzhOdWxsTm9kZUUgQCAyNTMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTOFRoaXNOb2RlRSBAIDI1NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlM4VmFsdWVJbXBFIEAgMjU1IE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pUSU4zS0pTOFZv
aWROb2RlRSBAIDI1NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4V2l0aE5v
ZGVFIEAgMjU3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlBcnJheU5vZGVF
IEAgMjU4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlCbG9ja05vZGVFIEAg
MjU5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlCcmVha05vZGVFIEAgMjYw
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlDYXRjaE5vZGVFIEAgMjYxIE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlDb21tYU5vZGVFIEAgMjYyIE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlFcXVhbE5vZGVFIEAgMjYzIE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlGb3JJbk5vZGVFIEAgMjY0IE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlHcm91cE5vZGVFIEAgMjY1IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzlMYWJlbE5vZGVFIEAgMjY2IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzlOdW1iZXJJbXBFIEAgMjY3IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzlPYmplY3RJbXBFIEAgMjY4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzlSZWdFeHBJbXBFIEAgMjY5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzlTaGlmdE5vZGVFIEAgMjcwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VElOM0tKUzlTdHJpbmdJbXBFIEAgMjcxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElO
M0tKUzlUaHJvd05vZGVFIEAgMjcyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tK
UzlXaGlsZU5vZGVFIEAgMjczIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVFZOM0tKUzEw
QXNzaWduTm9kZUUgQCAyNzQgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBC
b29sZWFuSW1wRSBAIDI3NSBOT05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMERl
bGV0ZU5vZGVFIEAgMjc2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwTmVn
YXRlTm9kZUUgQCAyNzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBOdW1i
ZXJOb2RlRSBAIDI3OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFByZWZp
eE5vZGVFIEAgMjc5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwUmVnRXhw
Tm9kZUUgQCAyODAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBSZXR1cm5O
b2RlRSBAIDI4MSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMFN0cmluZ05v
ZGVFIEAgMjgyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEwU3dpdGNoTm9k
ZUUgQCAyODMgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBUeXBlT2ZOb2Rl
RSBAIDI4NCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUJpdE9wZXJOb2Rl
RSBAIDI4NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUJvb2xlYW5Ob2Rl
RSBAIDI4NiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMURvV2hpbGVOb2Rl
RSBAIDI4NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUVsZW1lbnROb2Rl
RSBAIDI4OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUZpbmFsbHlOb2Rl
RSBAIDI4OSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUZ1bmN0aW9uSW1w
RSBAIDI5MCBOT05BTUUgREFUQSAxNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFJbnRlcnByZXRl
ckUgQCAyOTEgTk9OQU1FIERBVEEgNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFNYXRoRnVuY0lt
cEUgQCAyOTIgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExTmV3RXhwck5v
ZGVFIEAgMjkzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExUG9zdGZpeE5v
ZGVFIEAgMjk0IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExUmVzb2x2ZU5v
ZGVFIEAgMjk1IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzExVmFyRGVjbE5v
ZGVFIEAgMjk2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEyQ29udGludWVO
b2RlRSBAIDI5NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMkZ1bmNEZWNs
Tm9kZUUgQCAyOTggTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJGdW5jRXhw
ck5vZGVFIEAgMjk5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEyUHJvcGVy
dHlOb2RlRSBAIDMwMCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMlN0YXRM
aXN0Tm9kZUUgQCAzMDEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTJVbmRl
ZmluZWRJbXBFIEAgMzAyIE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzQWNj
ZXNzb3JOb2RlMUUgQCAzMDMgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNB
Y2Nlc3Nvck5vZGUyRSBAIDMwNCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
M0FjdGl2YXRpb25JbXBFIEAgMzA1IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxM0FyZ3VtZW50c05vZGVFIEAgMzA2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzEzQ2FzZUJsb2NrTm9kZUUgQCAzMDcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDMwOCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDMwOSBOT05BTUUgREFUQSAxNDAgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDMxMCBOT05BTUUgREFUQSAxMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDMxMSBOT05BTUUgREFUQSAzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMzEyIE5PTkFNRSBEQVRBIDQ0IDsg
IzxWVD4jDQotCV9aVFZOM0tKUzEzVW5hcnlQbHVzTm9kZUUgQCAzMTMgTk9OQU1FIERBVEEgMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAzMTQgTk9OQU1FIERBVEEg
MTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMzE1IE5PTkFNRSBE
QVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Qml0d2lzZU5vdE5vZGVFIEAgMzE2IE5PTkFN
RSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Q2FzZUNsYXVzZU5vZGVFIEAgMzE3IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Q2xhdXNlTGlzdE5vZGVFIEAgMzE4
IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0RXJyb3JPYmplY3RJbXBFIEAg
MzE5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNExvZ2ljYWxOb3ROb2Rl
RSBAIDMyMCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNE5hdGl2ZUVycm9y
SW1wRSBAIDMyMSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTRSZWxhdGlv
bmFsTm9kZUUgQCAzMjIgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVDb25k
aXRpb25hbE5vZGVFIEAgMzIzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1
TnVtYmVyT2JqZWN0SW1wRSBAIDMyNCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTVPYmplY3RPYmplY3RJbXBFIEAgMzI1IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAzMjYgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE1U3RyaW5nT2JqZWN0SW1wRSBAIDMyNyBOT05BTUUgREFUQSAxMzYgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTMTVWYXJEZWNsTGlzdE5vZGVFIEAgMzI4IE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2QXJndW1lbnRMaXN0Tm9kZUUgQCAzMjkgTk9OQU1FIERB
VEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZBcnJheUluc3RhbmNlSW1wRSBAIDMzMCBOT05B
TUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZCb29sZWFuT2JqZWN0SW1wRSBAIDMz
MSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZEYXRlUHJvdG9GdW5jSW1w
RSBAIDMzMiBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZEYXRlUHJvdG90
eXBlSW1wRSBAIDMzMyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZGdW5j
dGlvbkJvZHlOb2RlRSBAIDMzNCBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
NkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMzM1IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAzMzYgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAzMzcgTk9OQU1FIERBVEEgMTM2IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzE3QXJyYXlQcm90b3R5cGVJbXBFIEAgMzM4IE5PTkFNRSBEQVRBIDEz
NiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0JpbmFyeUxvZ2ljYWxOb2RlRSBAIDMzOSBOT05BTUUg
REFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0RhdGVPYmplY3RGdW5jSW1wRSBAIDM0MCBO
T05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdFcnJvclByb3RvRnVuY0ltcEUg
QCAzNDEgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3RXhwclN0YXRlbWVu
dE5vZGVFIEAgMzQyIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3RnVuY3Rp
b25PYmplY3RJbXBFIEAgMzQzIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
N09iamVjdExpdGVyYWxOb2RlRSBAIDM0NCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxN1Byb3BlcnR5VmFsdWVOb2RlRSBAIDM0NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDM0NiBOT05BTUUgREFUQSAxMzYgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMzQ3IE5PTkFNRSBEQVRB
IDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBAIDM0OCBOT05B
TUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThPYmplY3RQcm90b0Z1bmNJbXBFIEAg
MzQ5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFJlZ0V4cFByb3RvRnVu
Y0ltcEUgQCAzNTAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4U291cmNl
RWxlbWVudHNOb2RlRSBAIDM1MSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
OFN0cmluZ1Byb3RvRnVuY0ltcEUgQCAzNTIgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzE4U3RyaW5nUHJvdG90eXBlSW1wRSBAIDM1MyBOT05BTUUgREFUQSAxMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTlCb29sZWFuUHJvdG9GdW5jSW1wRSBAIDM1NCBOT05BTUUgREFUQSAx
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDM1NSBOT05B
TUUgREFUQSAxNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlJbnRlcm5hbEZ1bmN0aW9uSW1wRSBA
IDM1NiBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlTdHJpbmdPYmplY3RG
dW5jSW1wRSBAIDM1NyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMjBGdW5j
dGlvblByb3RvRnVuY0ltcEUgQCAzNTggTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzIwRnVuY3Rpb25Qcm90b3R5cGVJbXBFIEAgMzU5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlM0Tm9kZUUgQCAzNjAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTNklmTm9kZUUgQCAzNjEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
N0FkZE5vZGVFIEAgMzYyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzdGb3JO
b2RlRSBAIDM2MyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM3TnVsbEltcEUg
QCAzNjQgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTN1RyeU5vZGVFIEAgMzY1
IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhEZWJ1Z2dlckUgQCAzNjYgTk9O
QU1FIERBVEEgNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOE11bHROb2RlRSBAIDM2NyBOT05BTUUg
REFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4TnVsbE5vZGVFIEAgMzY4IE5PTkFNRSBEQVRB
IDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhUaGlzTm9kZUUgQCAzNjkgTk9OQU1FIERBVEEgMzYg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTOFZhbHVlSW1wRSBAIDM3MCBOT05BTUUgREFUQSA0OCA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlM4Vm9pZE5vZGVFIEAgMzcxIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzhXaXRoTm9kZUUgQCAzNzIgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTOUFycmF5Tm9kZUUgQCAzNzMgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTOUJsb2NrTm9kZUUgQCAzNzQgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTOUJyZWFrTm9kZUUgQCAzNzUgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
OUNhdGNoTm9kZUUgQCAzNzYgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUNv
bW1hTm9kZUUgQCAzNzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUVxdWFs
Tm9kZUUgQCAzNzggTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUZvckluTm9k
ZUUgQCAzNzkgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUdyb3VwTm9kZUUg
QCAzODAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUxhYmVsTm9kZUUgQCAz
ODEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOU51bWJlckltcEUgQCAzODIg
Tk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOU9iamVjdEltcEUgQCAzODMgTk9O
QU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlSZWdFeHBJbXBFIEAgMzg0IE5PTkFN
RSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5U2hpZnROb2RlRSBAIDM4NSBOT05BTUUg
REFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5U3RyaW5nSW1wRSBAIDM4NiBOT05BTUUgREFU
QSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5VGhyb3dOb2RlRSBAIDM4NyBOT05BTUUgREFUQSA0
NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5V2hpbGVOb2RlRSBAIDM4OCBOT05BTUUgREFUQSA0NCA7
ICM8VlQ+Iw0KKyAgICBOUE5fQ3JlYXRlT2JqZWN0IEAgMSBOT05BTUUNCisgICAgTlBOX0V2YWx1
YXRlIEAgMiBOT05BTUUNCisgICAgTlBOX0dldEludElkZW50aWZpZXIgQCAzIE5PTkFNRQ0KKyAg
ICBOUE5fR2V0UHJvcGVydHkgQCA0IE5PTkFNRQ0KKyAgICBOUE5fR2V0U3RyaW5nSWRlbnRpZmll
ciBAIDUgTk9OQU1FDQorICAgIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyBAIDYgTk9OQU1FDQor
ICAgIE5QTl9IYXNNZXRob2QgQCA3IE5PTkFNRQ0KKyAgICBOUE5fSGFzUHJvcGVydHkgQCA4IE5P
TkFNRQ0KKyAgICBOUE5fSWRlbnRpZmllcklzU3RyaW5nIEAgOSBOT05BTUUNCisgICAgTlBOX0lu
dEZyb21JZGVudGlmaWVyIEAgMTAgTk9OQU1FDQorICAgIE5QTl9JbnZva2UgQCAxMSBOT05BTUUN
CisgICAgTlBOX0ludm9rZURlZmF1bHQgQCAxMiBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VPYmpl
Y3QgQCAxMyBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgQCAxNCBOT05BTUUN
CisgICAgTlBOX1JlbW92ZVByb3BlcnR5IEAgMTUgTk9OQU1FDQorICAgIE5QTl9SZXRhaW5PYmpl
Y3QgQCAxNiBOT05BTUUNCisgICAgTlBOX1NldEV4Y2VwdGlvbiBAIDE3IE5PTkFNRQ0KKyAgICBO
UE5fU2V0UHJvcGVydHkgQCAxOCBOT05BTUUNCisgICAgTlBOX1VURjhGcm9tSWRlbnRpZmllciBA
IDE5IE5PTkFNRQ0KKyAgICBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCBAIDIwIE5PTkFNRQ0KKyAg
ICBfWjI0TlBOX1NldEV4Y2VwdGlvbldpdGhVVEY4UDhOUE9iamVjdFBLY2kgQCAyMSBOT05BTUUN
CisgICAgX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEtjIEAgMjIgTk9OQU1FDQorICAgIF9aTjNL
SlMxMElkZW50aWZpZXIzYWRkRVBOU183VVN0cmluZzNSZXBFIEAgMjMgTk9OQU1FDQorICAgIF9a
TjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQS05TXzVVQ2hhckVpIEAg
MjQgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1Jl
cEVQS2MgQCAyNSBOT05BTUUNCisgICAgX1pOM0tKUzEwU2NvcGVDaGFpbjRwdXNoRVBOU185T2Jq
ZWN0SW1wRSBAIDI2IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBTY29wZUNoYWluN3JlbGVhc2VFdiBA
IDI3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBTY29wZUNoYWluYVNFUktTMF8gQCAyOCBOT05BTUUN
CisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxMGdsb2JhbEV4ZWNFdiBAIDI5IE5PTkFNRQ0KKyAg
ICBfWk4zS0pTMTFJbnRlcnByZXRlcjEydmlydHVhbF9ob29rRWlQdiBAIDMwIE5PTkFNRQ0KKyAg
ICBfWk4zS0pTMTFJbnRlcnByZXRlcjEzc2V0Q29tcGF0TW9kZUVOUzBfMTBDb21wYXRNb2RlRSBA
IDMxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE1cmVzdG9yZUJ1aWx0aW5zRVJL
TlNfMTNTYXZlZEJ1aWx0aW5zRSBAIDMyIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRl
cjE2aW5pdEdsb2JhbE9iamVjdEV2IEAgMzMgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJl
dGVyMTdpbmNTdGF0ZW1lbnRDb3VudEV2IEAgMzQgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVy
cHJldGVyMTlyZXNldFN0YXRlbWVudENvdW50RXYgQCAzNSBOT05BTUUNCisgICAgX1pOM0tKUzEx
SW50ZXJwcmV0ZXIyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2IEAgMzYgTk9OQU1FDQorICAgIF9a
TjNLSlMxMUludGVycHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYiBAIDM3IE5PTkFN
RQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjMwY3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZh
bHVlRVBOU185RXhlY1N0YXRlRU5TXzhCaW5kaW5nczhJbnN0YW5jZTE1QmluZGluZ0xhbmd1YWdl
RVJLTlNfNk9iamVjdEVQS05TM18xMFJvb3RPYmplY3RFU0JfIEAgMzggTk9OQU1FDQorICAgIF9a
TjNLSlMxMUludGVycHJldGVyNGxvY2tFdiBAIDM5IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRl
cnByZXRlcjZ1bmxvY2tFdiBAIDQwIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjhl
dmFsdWF0ZUVSS05TXzdVU3RyaW5nRVJLTlNfNVZhbHVlRVMzXyBAIDQxIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRWlTM19SS05TXzVWYWx1
ZUUgQCA0MiBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXJDMUVSS05TXzZPYmplY3RF
IEAgNDMgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyQzJFUktOU182T2JqZWN0RSBA
IDQ0IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlckQwRXYgQCA0NSBOT05BTUUNCisg
ICAgX1pOM0tKUzExSW50ZXJwcmV0ZXJEMUV2IEAgNDYgTk9OQU1FDQorICAgIF9aTjNLSlMxMUlu
dGVycHJldGVyRDJFdiBAIDQ3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFQcm9wZXJ0eU1hcDdyZXN0
b3JlRVJLTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgNDggTk9OQU1FDQorICAgIF9aTjNLSlMxNGxl
bmd0aFByb3BlcnR5RXYgQCA0OSBOT05BTUUNCisgICAgX1pOM0tKUzE1bWVzc2FnZVByb3BlcnR5
RXYgQCA1MCBOT05BTUUNCisgICAgX1pOM0tKUzE2UnVudGltZU9iamVjdEltcEMxRVBOU184Qmlu
ZGluZ3M4SW5zdGFuY2VFYiBAIDUxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTZSdW50aW1lT2JqZWN0
SW1wQzJFUE5TXzhCaW5kaW5nczhJbnN0YW5jZUViIEAgNTIgTk9OQU1FDQorICAgIF9aTjNLSlM0
TGlzdDExZGVyZWZWYWx1ZXNFdiBAIDUzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3Q2YXBwZW5k
RVBOU184VmFsdWVJbXBFIEAgNTQgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdDdyZWxlYXNlRXYg
QCA1NSBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0OXJlZlZhbHVlc0V2IEAgNTYgTk9OQU1FDQor
ICAgIF9aTjNLSlM0TGlzdEMxRXYgQCA1NyBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0QzJFdiBA
IDU4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3RhU0VSS1MwXyBAIDU5IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTNE51bGxDMUV2IEAgNjAgTk9OQU1FDQorICAgIF9aTjNLSlM0TnVsbEMyRXYgQCA2MSBO
T05BTUUNCisgICAgX1pOM0tKUzVFcnJvcjZjcmVhdGVFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9y
VHlwZUVQS2NpaVBLTlNfN1VTdHJpbmdFIEAgNjIgTk9OQU1FDQorICAgIF9aTjNLSlM1VmFsdWVD
MUVQTlNfOFZhbHVlSW1wRSBAIDYzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlQzFFUktTMF8g
QCA2NCBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUMyRVBOU184VmFsdWVJbXBFIEAgNjUgTk9O
QU1FDQorICAgIF9aTjNLSlM1VmFsdWVDMkVSS1MwXyBAIDY2IE5PTkFNRQ0KKyAgICBfWk4zS0pT
NVZhbHVlRDFFdiBAIDY3IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlRDJFdiBAIDY4IE5PTkFN
RQ0KKyAgICBfWk4zS0pTNVZhbHVlYVNFUktTMF8gQCA2OSBOT05BTUUNCisgICAgX1pOM0tKUzZM
b29rdXA5ZmluZEVudHJ5RVBLTlNfOUhhc2hUYWJsZUVSS05TXzEwSWRlbnRpZmllckUgQCA3MCBO
T05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVkIEAgNzEgTk9OQU1FDQorICAgIF9aTjNLSlM2
TnVtYmVyQzFFaSBAIDcyIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMxRWogQCA3MyBOT05B
TUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVsIEAgNzQgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVt
YmVyQzFFbSBAIDc1IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWQgQCA3NiBOT05BTUUN
CisgICAgX1pOM0tKUzZOdW1iZXJDMkVpIEAgNzcgTk9OQU1FDQorICAgIF9aTjNLSlM2TnVtYmVy
QzJFaiBAIDc4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWwgQCA3OSBOT05BTUUNCisg
ICAgX1pOM0tKUzZOdW1iZXJDMkVtIEAgODAgTk9OQU1FDQorICAgIF9aTjNLSlM2T2JqZWN0MTFk
eW5hbWljQ2FzdEVSS05TXzVWYWx1ZUUgQCA4MSBOT05BTUUNCisgICAgX1pOM0tKUzZPYmplY3Q0
Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSUzBfUktOU180TGlzdEUgQCA4MiBOT05BTUUNCisgICAgX1pO
M0tKUzZTdHJpbmdDMUVSS05TXzdVU3RyaW5nRSBAIDgzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNlN0
cmluZ0MyRVJLTlNfN1VTdHJpbmdFIEAgODQgTk9OQU1FDQorICAgIF9aTjNLSlM3Qm9vbGVhbkMx
RWIgQCA4NSBOT05BTUUNCisgICAgX1pOM0tKUzdCb29sZWFuQzJFYiBAIDg2IE5PTkFNRQ0KKyAg
ICBfWk4zS0pTN0NTdHJpbmdhU0VQS2MgQCA4NyBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5n
MTBhdHRhY2hOdWxsRXYgQCA4OCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nM1JlcDEzY3Jl
YXRlQ29weWluZ0VQS05TXzVVQ2hhckVpIEAgODkgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmlu
ZzNSZXA2Y3JlYXRlRVBOU181VUNoYXJFaSBAIDkwIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJp
bmczUmVwN2Rlc3Ryb3lFdiBAIDkxIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmc0ZnJvbUVs
IEAgOTIgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUEtjIEAgOTMgTk9OQU1F
DQorICAgIF9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUktTMF8gQCA5NCBOT05BTUUNCisgICAgX1pO
M0tKUzdVU3RyaW5nQzFFUEtOU181VUNoYXJFaSBAIDk1IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VT
dHJpbmdDMUVQS2MgQCA5NiBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFFUE5TXzVVQ2hh
ckVpYiBAIDk3IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVSS1MwX1MyXyBAIDk4IE5P
TkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVjIEAgOTkgTk9OQU1FDQorICAgIF9aTjNLSlM3
VVN0cmluZ0MxRXYgQCAxMDAgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVBLTlNfNVVD
aGFyRWkgQCAxMDEgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVBLYyBAIDEwMiBOT05B
TUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzJFUE5TXzVVQ2hhckVpYiBAIDEwMyBOT05BTUUNCisg
ICAgX1pOM0tKUzdVU3RyaW5nQzJFUktTMF9TMl8gQCAxMDQgTk9OQU1FDQorICAgIF9aTjNLSlM3
VVN0cmluZ0MyRWMgQCAxMDUgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRXYgQCAxMDYg
Tk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ2FTRVJLUzBfIEAgMTA3IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTOEJpbmRpbmdzMTBSb290T2JqZWN0MTRzZXRJbnRlcnByZXRlckVQTlNfMTFJbnRlcnBy
ZXRlckUgQCAxMDggTk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGluZ3MxMFJvb3RPYmplY3QyNXJl
bW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXNFdiBAIDEwOSBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5k
aW5nczIxcmVtb3ZlTmF0aXZlUmVmZXJlbmNlRVBOU185T2JqZWN0SW1wRSBAIDExMCBOT05BTUUN
CisgICAgX1pOM0tKUzhCaW5kaW5nczhJbnN0YW5jZTE5Y3JlYXRlUnVudGltZU9iamVjdEVOUzFf
MTVCaW5kaW5nTGFuZ3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RFIEAgMTExIE5PTkFNRQ0KKyAg
ICBfWk4zS0pTOEJpbmRpbmdzOEluc3RhbmNlMzBjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFs
dWVFUE5TXzlFeGVjU3RhdGVFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVJLTlNfNk9iamVjdEVQS05T
MF8xMFJvb3RPYmplY3RFU0FfIEAgMTEyIE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJpbmRpbmdzOElu
c3RhbmNlMzJjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZUVOUzFfMTVCaW5kaW5nTGFu
Z3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RFIEAgMTEzIE5PTkFNRQ0KKyAgICBfWk4zS0pTOFZh
bHVlSW1wZGxFUHYgQCAxMTQgTk9OQU1FDQorICAgIF9aTjNLSlM4VmFsdWVJbXBud0VqIEAgMTE1
IE5PTkFNRQ0KKyAgICBfWk4zS0pTOUNvbGxlY3Rvcjdjb2xsZWN0RXYgQCAxMTYgTk9OQU1FDQor
ICAgIF9aTjNLSlM5T2JqZWN0SW1wMTFoYXNJbnN0YW5jZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzVW
YWx1ZUUgQCAxMTcgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wMTJzZXRQcm90b3R5cGVF
UktOU181VmFsdWVFIEAgMTE4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRl
UHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTE5IE5PTkFNRQ0K
KyAgICBfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBA
IDEyMCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAxOWRlbGV0ZUFsbFByb3BlcnRpZXNF
UE5TXzlFeGVjU3RhdGVFIEAgMTIxIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDNwdXRF
UE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUktOU181VmFsdWVFaSBAIDEyMiBOT05B
TUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRWpSS05TXzVWYWx1
ZUVpIEAgMTIzIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDRjYWxsRVBOU185RXhlY1N0
YXRlRVJOU182T2JqZWN0RVJLTlNfNExpc3RFIEAgMTI0IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9i
amVjdEltcDRtYXJrRXYgQCAxMjUgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wOHByb3BM
aXN0RVBOU185RXhlY1N0YXRlRWIgQCAxMjYgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1w
OWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RSBAIDEyNyBOT05BTUUNCisgICAg
X1pOM0tKUzlPYmplY3RJbXA5Y29uc3RydWN0RVBOU185RXhlY1N0YXRlRVJLTlNfNExpc3RFUktO
U183VVN0cmluZ0VpIEAgMTI4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDlwdXREaXJl
Y3RFUktOU18xMElkZW50aWZpZXJFUE5TXzhWYWx1ZUltcEVpIEAgMTI5IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFaWkgQCAxMzAgTk9O
QU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wQzFFUktOU182T2JqZWN0RSBAIDEzMSBOT05BTUUN
CisgICAgX1pOM0tKUzlPYmplY3RJbXBDMUV2IEAgMTMyIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9i
amVjdEltcEMyRVJLTlNfNk9iamVjdEUgQCAxMzMgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0
SW1wQzJFdiBAIDEzNCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBEMEV2IEAgMTM1IE5P
TkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEQxRXYgQCAxMzYgTk9OQU1FDQorICAgIF9aTjNL
SlM5T2JqZWN0SW1wRDJFdiBAIDEzNyBOT05BTUUNCisgICAgX1pOM0tKUzlVbmRlZmluZWRDMUV2
IEAgMTM4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOVVuZGVmaW5lZEMyRXYgQCAxMzkgTk9OQU1FDQor
ICAgIF9aTjNLSlNlcUVSS05TXzdVU3RyaW5nRVBLYyBAIDE0MCBOT05BTUUNCisgICAgX1pOSzNL
SlMxMUludGVycHJldGVyMTBjb21wYXRNb2RlRXYgQCAxNDEgTk9OQU1FDQorICAgIF9aTkszS0pT
MTFJbnRlcnByZXRlcjEyYnVpbHRpbkFycmF5RXYgQCAxNDIgTk9OQU1FDQorICAgIF9aTkszS0pT
MTFJbnRlcnByZXRlcjEyZ2xvYmFsT2JqZWN0RXYgQCAxNDMgTk9OQU1FDQorICAgIF9aTkszS0pT
MTFJbnRlcnByZXRlcjEyc2F2ZUJ1aWx0aW5zRVJOU18xM1NhdmVkQnVpbHRpbnNFIEAgMTQ0IE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxM2J1aWx0aW5PYmplY3RFdiBAIDE0NSBO
T05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMTVidWlsdGluRnVuY3Rpb25FdiBAIDE0
NiBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMjJidWlsdGluT2JqZWN0UHJvdG90
eXBlRXYgQCAxNDcgTk9OQU1FDQorICAgIF9aTkszS0pTMTFQcm9wZXJ0eU1hcDNnZXRFUktOU18x
MElkZW50aWZpZXJFIEAgMTQ4IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExUHJvcGVydHlNYXA0c2F2
ZUVSTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMTQ5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzRMaXN0
NWltcEF0RWkgQCAxNTAgTk9OQU1FDQorICAgIF9aTkszS0pTNExpc3Q4Y29weVRhaWxFdiBAIDE1
MSBOT05BTUUNCisgICAgX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNTIgTk9OQU1FDQorICAgIF9aTkszS0pTNk9iamVjdDEx
aGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDE1MyBOT05BTUUNCisgICAgX1pOSzNLSlM2
T2JqZWN0MTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUg
QCAxNTQgTk9OQU1FDQorICAgIF9aTkszS0pTNlN0cmluZzV2YWx1ZUV2IEAgMTU1IE5PTkFNRQ0K
KyAgICBfWk5LM0tKUzdVU3RyaW5nMTJ0b0FycmF5SW5kZXhFUGIgQCAxNTYgTk9OQU1FDQorICAg
IF9aTkszS0pTN1VTdHJpbmc1YXNjaWlFdiBAIDE1NyBOT05BTUUNCisgICAgX1pOSzNLSlM3VVN0
cmluZzZpc051bGxFdiBAIDE1OCBOT05BTUUNCisgICAgX1pOSzNLSlM3VVN0cmluZzd0b1VMb25n
RVBiIEAgMTU5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDE2ZGlzcGF0Y2hUb09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjAgTk9OQU1FDQorICAgIF9aTkszS0pTOFZhbHVlSW1wNm1h
cmtlZEV2IEAgMTYxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDd0b0ludDMyRVBOU185
RXhlY1N0YXRlRSBAIDE2MiBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MTZF
UE5TXzlFeGVjU3RhdGVFIEAgMTYzIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDh0b1VJ
bnQzMkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjQgTk9OQU1FDQorICAgIF9aTkszS0pTOFZhbHVlSW1w
OHRvVUludDMyRVJqIEAgMTY1IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDl0b0ludGVn
ZXJFUE5TXzlFeGVjU3RhdGVFIEAgMTY2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlFeGVjU3RhdGUx
OGxleGljYWxJbnRlcnByZXRlckV2IEAgMTY3IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJ
bXAxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE2OCBO
T05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0
ZUVqIEAgMTY5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxMXRvUHJpbWl0aXZlRVBO
U185RXhlY1N0YXRlRU5TXzRUeXBlRSBAIDE3MCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0
SW1wMTJkZWZhdWx0VmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTcxIE5PTkFNRQ0K
KyAgICBfWk5LM0tKUzlPYmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRSBAIDE3MiBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTRo
YXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTczIE5PTkFNRQ0KKyAgICBfWk5LM0tK
UzlPYmplY3RJbXAxNGltcGxlbWVudHNDYWxsRXYgQCAxNzQgTk9OQU1FDQorICAgIF9aTkszS0pT
OU9iamVjdEltcDE5aW1wbGVtZW50c0NvbnN0cnVjdEV2IEAgMTc1IE5PTkFNRQ0KKyAgICBfWk5L
M0tKUzlPYmplY3RJbXAyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2IEAgMTc2IE5PTkFNRQ0KKyAg
ICBfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RSBAIDE3NyBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wM2dldEVQTlNfOUV4ZWNTdGF0
ZUVqIEAgMTc4IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA0dHlwZUV2IEAgMTc5IE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA2Y2FuUHV0RVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRSBAIDE4MCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wOGluaGVy
aXRzRVBLTlNfOUNsYXNzSW5mb0UgQCAxODEgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdElt
cDh0b051bWJlckVQTlNfOUV4ZWNTdGF0ZUUgQCAxODIgTk9OQU1FDQorICAgIF9aTkszS0pTOU9i
amVjdEltcDh0b09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxODMgTk9OQU1FDQorICAgIF9aTksz
S0pTOU9iamVjdEltcDh0b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUgQCAxODQgTk9OQU1FDQorICAg
IF9aTkszS0pTOU9iamVjdEltcDljbGFzc0luZm9FdiBAIDE4NSBOT05BTUUNCisgICAgX1pOSzNL
SlM5T2JqZWN0SW1wOWNsYXNzTmFtZUV2IEAgMTg2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmpl
Y3RJbXA5cHJvdG90eXBlRXYgQCAxODcgTk9OQU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDl0
b0Jvb2xlYW5FUE5TXzlFeGVjU3RhdGVFIEAgMTg4IE5PTkFNRQ0KKyAgICBfWlRJTjNLSlMxMEFz
c2lnbk5vZGVFIEAgMTg5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMEJvb2xlYW5J
bXBFIEAgMTkwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMERlbGV0ZU5vZGVFIEAg
MTkxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxME5lZ2F0ZU5vZGVFIEAgMTkyIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxME51bWJlck5vZGVFIEAgMTkzIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFByZWZpeE5vZGVFIEAgMTk0IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxMFJlZ0V4cE5vZGVFIEAgMTk1IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxMFJldHVybk5vZGVFIEAgMTk2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxMFN0cmluZ05vZGVFIEAgMTk3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
MFN3aXRjaE5vZGVFIEAgMTk4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFR5cGVP
Zk5vZGVFIEAgMTk5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUJpdE9wZXJOb2Rl
RSBAIDIwMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFCb29sZWFuTm9kZUUgQCAy
MDEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExRG9XaGlsZU5vZGVFIEAgMjAyIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUVsZW1lbnROb2RlRSBAIDIwMyBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFGaW5hbGx5Tm9kZUUgQCAyMDQgTk9OQU1FIDsgIzxU
ST4jDQorICAgIF9aVElOM0tKUzExRnVuY3Rpb25JbXBFIEAgMjA1IE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxMUludGVycHJldGVyRSBAIDIwNiBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUSU4zS0pTMTFNYXRoRnVuY0ltcEUgQCAyMDcgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzExTmV3RXhwck5vZGVFIEAgMjA4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
MVBvc3RmaXhOb2RlRSBAIDIwOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFSZXNv
bHZlTm9kZUUgQCAyMTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExVmFyRGVjbE5v
ZGVFIEAgMjExIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMkNvbnRpbnVlTm9kZUUg
QCAyMTIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyRnVuY0RlY2xOb2RlRSBAIDIx
MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTJGdW5jRXhwck5vZGVFIEAgMjE0IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMlByb3BlcnR5Tm9kZUUgQCAyMTUgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyU3RhdExpc3ROb2RlRSBAIDIxNiBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTJVbmRlZmluZWRJbXBFIEAgMjE3IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAgMjE4IE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTJFIEAgMjE5IE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMjIwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxM0FyZ3VtZW50c05vZGVFIEAgMjIxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxM0Nhc2VCbG9ja05vZGVFIEAgMjIyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxM0RhdGVPYmplY3RJbXBFIEAgMjIzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
M0dsb2JhbEZ1bmNJbXBFIEAgMjI0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM01h
dGhPYmplY3RJbXBFIEAgMjI1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM1BhcmFt
ZXRlck5vZGVFIEAgMjI2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM1N0YXRlbWVu
dE5vZGVFIEAgMjI3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM1VuYXJ5UGx1c05v
ZGVFIEAgMjI4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNEFycmF5T2JqZWN0SW1w
RSBAIDIyOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRBc3NpZ25FeHByTm9kZUUg
QCAyMzAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0Qml0d2lzZU5vdE5vZGVFIEAg
MjMxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNENhc2VDbGF1c2VOb2RlRSBAIDIz
MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRDbGF1c2VMaXN0Tm9kZUUgQCAyMzMg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0RXJyb3JPYmplY3RJbXBFIEAgMjM0IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNExvZ2ljYWxOb3ROb2RlRSBAIDIzNSBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTROYXRpdmVFcnJvckltcEUgQCAyMzYgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0UmVsYXRpb25hbE5vZGVFIEAgMjM3IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNUNvbmRpdGlvbmFsTm9kZUUgQCAyMzggTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzE1TnVtYmVyT2JqZWN0SW1wRSBAIDIzOSBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTVPYmplY3RPYmplY3RJbXBFIEAgMjQwIE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAyNDEgTk9OQU1FIDsgIzxU
ST4jDQorICAgIF9aVElOM0tKUzE1UnVudGltZUFycmF5SW1wRSBAIDI0MiBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAgMjQzIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxNVZhckRlY2xMaXN0Tm9kZUUgQCAyNDQgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2QXJndW1lbnRMaXN0Tm9kZUUgQCAyNDUgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAyNDYgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAyNDcgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2RGF0ZVByb3RvRnVuY0ltcEUgQCAyNDggTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAyNDkgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAyNTAgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2RnVuY3Rpb25DYWxsTm9kZUUgQCAyNTEgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2UnVudGltZU1ldGhvZEltcEUgQCAyNTIgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2UnVudGltZU9iamVjdEltcEUgQCAyNTMgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAyNTQgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBFIEAgMjU1IE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxN0FycmF5UHJvdG90eXBlSW1wRSBAIDI1NiBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAyNTcgTk9OQU1FIDsgIzxU
ST4jDQorICAgIF9aVElOM0tKUzE3RGF0ZU9iamVjdEZ1bmNJbXBFIEAgMjU4IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0Vycm9yUHJvdG9GdW5jSW1wRSBAIDI1OSBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTMTdFeHByU3RhdGVtZW50Tm9kZUUgQCAyNjAgTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzE3RnVuY3Rpb25PYmplY3RJbXBFIEAgMjYxIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN09iamVjdExpdGVyYWxOb2RlRSBAIDI2MiBOT05BTUUg
OyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAyNjMgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3U3RyaW5nSW5zdGFuY2VJbXBFIEAgMjY0IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOEVtcHR5U3RhdGVtZW50Tm9kZUUgQCAyNjUgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBAIDI2NiBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThPYmplY3RQcm90b0Z1bmNJbXBFIEAgMjY3
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFJlZ0V4cFByb3RvRnVuY0ltcEUgQCAy
NjggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4U291cmNlRWxlbWVudHNOb2RlRSBA
IDI2OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThTdHJpbmdQcm90b0Z1bmNJbXBF
IEAgMjcwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFN0cmluZ1Byb3RvdHlwZUlt
cEUgQCAyNzEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5Qm9vbGVhblByb3RvRnVu
Y0ltcEUgQCAyNzIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5RGVjbGFyZWRGdW5j
dGlvbkltcEUgQCAyNzMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5SW50ZXJuYWxG
dW5jdGlvbkltcEUgQCAyNzQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5U3RyaW5n
T2JqZWN0RnVuY0ltcEUgQCAyNzUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzIwRnVu
Y3Rpb25Qcm90b0Z1bmNJbXBFIEAgMjc2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMy
MEZ1bmN0aW9uUHJvdG90eXBlSW1wRSBAIDI3NyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTNE5vZGVFIEAgMjc4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM2SWZOb2RlRSBA
IDI3OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN0FkZE5vZGVFIEAgMjgwIE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM3Rm9yTm9kZUUgQCAyODEgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVElOM0tKUzdOdWxsSW1wRSBAIDI4MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTN1RyeU5vZGVFIEAgMjgzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4Qmlu
ZGluZ3M2Q0NsYXNzRSBAIDI4NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOEJpbmRp
bmdzNkNGaWVsZEUgQCAyODUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzhCaW5kaW5n
czhJbnN0YW5jZUUgQCAyODYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzhCaW5kaW5n
czlDSW5zdGFuY2VFIEAgMjg3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4RGVidWdn
ZXJFIEAgMjg4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4TXVsdE5vZGVFIEAgMjg5
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4TnVsbE5vZGVFIEAgMjkwIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4VGhpc05vZGVFIEAgMjkxIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlM4VmFsdWVJbXBFIEAgMjkyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlM4Vm9pZE5vZGVFIEAgMjkzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4V2l0
aE5vZGVFIEAgMjk0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5QXJyYXlOb2RlRSBA
IDI5NSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUJsb2NrTm9kZUUgQCAyOTYgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlCcmVha05vZGVFIEAgMjk3IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlM5Q2F0Y2hOb2RlRSBAIDI5OCBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTOUNvbW1hTm9kZUUgQCAyOTkgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzlFcXVhbE5vZGVFIEAgMzAwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5Rm9y
SW5Ob2RlRSBAIDMwMSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUdyb3VwTm9kZUUg
QCAzMDIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlMYWJlbE5vZGVFIEAgMzAzIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5TnVtYmVySW1wRSBAIDMwNCBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTOU9iamVjdEltcEUgQCAzMDUgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzlSZWdFeHBJbXBFIEAgMzA2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlM5U2hpZnROb2RlRSBAIDMwNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOVN0
cmluZ0ltcEUgQCAzMDggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlUaHJvd05vZGVF
IEAgMzA5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5V2hpbGVOb2RlRSBAIDMxMCBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUVk4zS0pTMTBBc3NpZ25Ob2RlRSBAIDMxMSBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBCb29sZWFuSW1wRSBAIDMxMiBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTBEZWxldGVOb2RlRSBAIDMxMyBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTBOZWdhdGVOb2RlRSBAIDMxNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTBOdW1iZXJOb2RlRSBAIDMxNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTBQcmVmaXhOb2RlRSBAIDMxNiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBSZWdF
eHBOb2RlRSBAIDMxNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBSZXR1cm5Ob2Rl
RSBAIDMxOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBTdHJpbmdOb2RlRSBAIDMx
OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBTd2l0Y2hOb2RlRSBAIDMyMCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBUeXBlT2ZOb2RlRSBAIDMyMSBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTFCaXRPcGVyTm9kZUUgQCAzMjIgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzExQm9vbGVhbk5vZGVFIEAgMzIzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxMURvV2hpbGVOb2RlRSBAIDMyNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTFFbGVtZW50Tm9kZUUgQCAzMjUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzExRmluYWxseU5vZGVFIEAgMzI2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMUZ1
bmN0aW9uSW1wRSBAIDMyNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFJbnRlcnBy
ZXRlckUgQCAzMjggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExTWF0aEZ1bmNJbXBF
IEAgMzI5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMU5ld0V4cHJOb2RlRSBAIDMz
MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFQb3N0Zml4Tm9kZUUgQCAzMzEgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMzMyIE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMVZhckRlY2xOb2RlRSBAIDMzMyBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTJDb250aW51ZU5vZGVFIEAgMzM0IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAzMzUgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDMzNiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTJQcm9wZXJ0eU5vZGVFIEAgMzM3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxMlN0YXRMaXN0Tm9kZUUgQCAzMzggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzEy
VW5kZWZpbmVkSW1wRSBAIDMzOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBY2Nl
c3Nvck5vZGUxRSBAIDM0MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBY2Nlc3Nv
ck5vZGUyRSBAIDM0MSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBY3RpdmF0aW9u
SW1wRSBAIDM0MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBcmd1bWVudHNOb2Rl
RSBAIDM0MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNDYXNlQmxvY2tOb2RlRSBA
IDM0NCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDM0
NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDM0NiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDM0NyBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDM0OCBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNTdGF0ZW1lbnROb2RlRSBAIDM0OSBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTNVbmFyeVBsdXNOb2RlRSBAIDM1MCBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAzNTEgTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMzUyIE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDM1MyBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMTRDYXNlQ2xhdXNlTm9kZUUgQCAzNTQgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzE0Q2xhdXNlTGlzdE5vZGVFIEAgMzU1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDM1NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAzNTcgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzE0TmF0aXZlRXJyb3JJbXBFIEAgMzU4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNFJlbGF0aW9uYWxOb2RlRSBAIDM1OSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTVDb25kaXRpb25hbE5vZGVFIEAgMzYwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMx
NU51bWJlck9iamVjdEltcEUgQCAzNjEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1
T2JqZWN0T2JqZWN0SW1wRSBAIDM2MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVS
ZWdFeHBPYmplY3RJbXBFIEAgMzYzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNVJ1
bnRpbWVBcnJheUltcEUgQCAzNjQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE1U3Ry
aW5nT2JqZWN0SW1wRSBAIDM2NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTVWYXJE
ZWNsTGlzdE5vZGVFIEAgMzY2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkFyZ3Vt
ZW50TGlzdE5vZGVFIEAgMzY3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkFycmF5
SW5zdGFuY2VJbXBFIEAgMzY4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkJvb2xl
YW5PYmplY3RJbXBFIEAgMzY5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkRhdGVQ
cm90b0Z1bmNJbXBFIEAgMzcwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkRhdGVQ
cm90b3R5cGVJbXBFIEAgMzcxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkZ1bmN0
aW9uQm9keU5vZGVFIEAgMzcyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNkZ1bmN0
aW9uQ2FsbE5vZGVFIEAgMzczIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNlJ1bnRp
bWVNZXRob2RJbXBFIEAgMzc0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNlJ1bnRp
bWVPYmplY3RJbXBFIEAgMzc1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNlZhclN0
YXRlbWVudE5vZGVFIEAgMzc2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0FycmF5
UHJvdG9GdW5jSW1wRSBAIDM3NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdBcnJh
eVByb3RvdHlwZUltcEUgQCAzNzggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3Qmlu
YXJ5TG9naWNhbE5vZGVFIEAgMzc5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxN0Rh
dGVPYmplY3RGdW5jSW1wRSBAIDM4MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTdF
cnJvclByb3RvRnVuY0ltcEUgQCAzODEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE3
RXhwclN0YXRlbWVudE5vZGVFIEAgMzgyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMx
N0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDM4MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTdPYmplY3RMaXRlcmFsTm9kZUUgQCAzODQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tK
UzE3UHJvcGVydHlWYWx1ZU5vZGVFIEAgMzg1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDM4NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMzg3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUgQCAzODggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzE4T2JqZWN0UHJvdG9GdW5jSW1wRSBAIDM4OSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMzkwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAzOTEgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzE4U3RyaW5nUHJvdG9GdW5jSW1wRSBAIDM5MiBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAgMzkzIE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBFIEAgMzk0IE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOURlY2xhcmVkRnVuY3Rpb25JbXBFIEAgMzk1IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAgMzk2IE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOVN0cmluZ09iamVjdEZ1bmNJbXBFIEAgMzk3IE5P
TkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMyMEZ1bmN0aW9uUHJvdG9GdW5jSW1wRSBAIDM5
OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMjBGdW5jdGlvblByb3RvdHlwZUltcEUg
QCAzOTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzROb2RlRSBAIDQwMCBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTNklmTm9kZUUgQCA0MDEgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzdBZGROb2RlRSBAIDQwMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTN0Zvck5vZGVFIEAgNDAzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM3TnVsbElt
cEUgQCA0MDQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzdUcnlOb2RlRSBAIDQwNSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOEJpbmRpbmdzNkNDbGFzc0UgQCA0MDYgTk9O
QU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhCaW5kaW5nczZDRmllbGRFIEAgNDA3IE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4QmluZGluZ3M4SW5zdGFuY2VFIEAgNDA4IE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4QmluZGluZ3M5Q0luc3RhbmNlRSBAIDQwOSBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOERlYnVnZ2VyRSBAIDQxMCBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOE11bHROb2RlRSBAIDQxMSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTOE51bGxOb2RlRSBAIDQxMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
OFRoaXNOb2RlRSBAIDQxMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFZhbHVlSW1w
RSBAIDQxNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFZvaWROb2RlRSBAIDQxNSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFdpdGhOb2RlRSBAIDQxNiBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTOUFycmF5Tm9kZUUgQCA0MTcgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzlCbG9ja05vZGVFIEAgNDE4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlM5QnJlYWtOb2RlRSBAIDQxOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUNh
dGNoTm9kZUUgQCA0MjAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlDb21tYU5vZGVF
IEAgNDIxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5RXF1YWxOb2RlRSBAIDQyMiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUZvckluTm9kZUUgQCA0MjMgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzlHcm91cE5vZGVFIEAgNDI0IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlM5TGFiZWxOb2RlRSBAIDQyNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTOU51bWJlckltcEUgQCA0MjYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlP
YmplY3RJbXBFIEAgNDI3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5UmVnRXhwSW1w
RSBAIDQyOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVNoaWZ0Tm9kZUUgQCA0Mjkg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlTdHJpbmdJbXBFIEAgNDMwIE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5VGhyb3dOb2RlRSBAIDQzMSBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTOVdoaWxlTm9kZUUgQCA0MzIgTk9OQU1FIDsgIzxWVD4jDQogDQpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xMzUs
MTIgKzEzNSwxMiBAQCBFWFBPUlRfQyBDb21wbGV0aW9uIEludGVycHJldGVyOjpldmFsdWF0DQog
ICAgIEludGVycHJldGVyTG9jayBsb2NrOw0KICAgICBFeGVjU3RhdGUgKmV4ZWMgPSByZXAtPmds
b2JhbEV4ZWMoKTsNCiAjaWZuZGVmIF9fT09NX18NCi0JLy9GSVhNRTogbWFrZSBhIG1lbW9yeW1h
bmFnZXIgdmVyc2lvbiBmb3Igc3RyZHVwDQorICAgIC8vRklYTUU6IG1ha2UgYSBtZW1vcnltYW5h
Z2VyIHZlcnNpb24gZm9yIHN0cmR1cA0KICAgICBjaGFyICpmID0gc3RyZHVwKHNvdXJjZVVSTC5h
c2NpaSgpKTsNCiAjZWxzZQ0KLQljb25zdCBjaGFyKiBzcyA9IHNvdXJjZVVSTC5hc2NpaSgpOw0K
KyAgICBjb25zdCBjaGFyKiBzcyA9IHNvdXJjZVVSTC5hc2NpaSgpOw0KICAgICBjaGFyICpmID0g
KGNoYXIqKU1lbW9yeU1hbmFnZXI6OkNhbGxvYyggc3RybGVuKHNzKSArIDEsIHNpemVvZiggY2hh
ciApICk7DQotCW1lbWNweSggZiwgc3MsIHN0cmxlbiggc3MgKSApOw0KKyAgICBtZW1jcHkoIGYs
IHNzLCBzdHJsZW4oIHNzICkgKTsNCiAjZW5kaWYNCiAgICAgY29uc3QgY2hhciAqbWVzc2FnZSA9
IGNvbXAudmFsdWUoKS50b09iamVjdChleGVjKS50b1N0cmluZyhleGVjKS5hc2NpaSgpOw0KICNp
Zm5kZWYgTk9LSUFfQ0hBTkdFUw0KQEAgLTM2MiwxMiArMzYyLDExIEBAIEVYUE9SVF9DIHZvaWQg
SW50ZXJwcmV0ZXI6OnNldFNob3VsZFByaW4NCiAgIHByaW50RXhjZXB0aW9ucyA9IHByaW50Ow0K
IH0NCiANCi0jaWZuZGVmIE5PS0lBX0NIQU5HRVMNCitFWFBPUlRfQw0KIHZvaWQgKkludGVycHJl
dGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmlu
ZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAm
dmFsdWUsIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IEJpbmRpbmdz
OjpSb290T2JqZWN0ICpjdXJyZW50KQ0KIHsNCiAgICAgcmV0dXJuIEJpbmRpbmdzOjpJbnN0YW5j
ZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBsYW5ndWFnZSwgdmFsdWUs
IG9yaWdpbiwgY3VycmVudCk7DQogfQ0KLSNlbmRpZg0KIA0KICNlbmRpZg0KIA0KQEAgLTM4MSw3
ICszODAsNyBAQCBFWFBPUlRfQyB2b2lkIEludGVycHJldGVyOjpyZXN0b3JlQnVpbHRpDQogICBy
ZXAtPnJlc3RvcmVCdWlsdGlucyhidWlsdGlucyk7DQogfQ0KIA0KLVNhdmVkQnVpbHRpbnM6OlNh
dmVkQnVpbHRpbnMoKSA6IA0KK1NhdmVkQnVpbHRpbnM6OlNhdmVkQnVpbHRpbnMoKSA6DQogICBf
aW50ZXJuYWwoMCkNCiB7DQogfQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRl
ci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmgJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjgsNyArMjgsNyBAQA0KICNpbmNsdWRlICJvYmplY3QuaCINCiAjaW5j
bHVkZSAidHlwZXMuaCINCiANCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUw0K
KyNpZiBBUFBMRV9DSEFOR0VTDQogDQogI2luY2x1ZGUgInJ1bnRpbWUuaCINCiANCkBAIC0xMTQs
NyArMTE0LDcgQEAgbmFtZXNwYWNlIEtKUyB7DQogICBjbGFzcyBTYXZlZEJ1aWx0aW5zSW50ZXJu
YWw7DQogDQogICBjbGFzcyBTYXZlZEJ1aWx0aW5zIHsNCi0JT09NX05FV19ERUxFVEUNCisgICAg
T09NX05FV19ERUxFVEUNCiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJldGVySW1wOw0KICAgcHVi
bGljOg0KICAgICBTYXZlZEJ1aWx0aW5zKCk7DQpAQCAtMjA1LDggKzIwNSw4IEBAIG5hbWVzcGFj
ZSBLSlMgew0KICAgICAgKi8NCiAgICAgSU1QT1JUX0MgQ29tcGxldGlvbiBldmFsdWF0ZShjb25z
dCBVU3RyaW5nICZzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IFVTdHJp
bmcgJmNvZGUsIGNvbnN0IFZhbHVlICZ0aGlzViA9IFZhbHVlKCkpOw0KIA0KLQkvLyBPdmVybG9h
ZCBvZiBldmFsdWF0ZSB0byBrZWVwIEphdmFTY3JpcHRHbHVlIGJvdGggc291cmNlIGFuZCBiaW5h
cnkgY29tcGF0aWJsZS4NCi0JSU1QT1JUX0MgQ29tcGxldGlvbiBldmFsdWF0ZShjb25zdCBVU3Ry
aW5nICZjb2RlLCBjb25zdCBWYWx1ZSAmdGhpc1YgPSBWYWx1ZSgpLCBjb25zdCBVU3RyaW5nICZz
b3VyY2VGaWxlbmFtZSA9IFVTdHJpbmcoKSk7DQorICAgIC8vIE92ZXJsb2FkIG9mIGV2YWx1YXRl
IHRvIGtlZXAgSmF2YVNjcmlwdEdsdWUgYm90aCBzb3VyY2UgYW5kIGJpbmFyeSBjb21wYXRpYmxl
Lg0KKyAgICBJTVBPUlRfQyBDb21wbGV0aW9uIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcgJmNvZGUs
IGNvbnN0IFZhbHVlICZ0aGlzViA9IFZhbHVlKCksIGNvbnN0IFVTdHJpbmcgJnNvdXJjZUZpbGVu
YW1lID0gVVN0cmluZygpKTsNCiANCiAgICAgLyoqDQogICAgICAqIEBpbnRlcm5hbA0KQEAgLTM0
MCw3ICszNDAsNyBAQCBuYW1lc3BhY2UgS0pTIHsNCiANCiAjaWZkZWYgTk9LSUFfQ0hBTkdFUw0K
ICAgICBJTVBPUlRfQyB2b2lkIGluY1N0YXRlbWVudENvdW50KCk7DQotCUlNUE9SVF9DIHZvaWQg
cmVzZXRTdGF0ZW1lbnRDb3VudCgpOw0KKyAgICBJTVBPUlRfQyB2b2lkIHJlc2V0U3RhdGVtZW50
Q291bnQoKTsNCiAgICAgaW50IHN0YXRlbWVudENvdW50KCkgY29uc3Q7DQogI2VuZGlmDQogDQpA
QCAtMzgzLDggKzM4Myw4IEBAIG5hbWVzcGFjZSBLSlMgew0KICAgICAgKiBzZWN1cml0eSBjaGVj
a3MuDQogICAgICAqLw0KICAgICB2aXJ0dWFsIGJvb2wgaXNHbG9iYWxPYmplY3QoY29uc3QgVmFs
dWUgJnYpIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIA0KLSAgICAvKiogDQorDQorICAgIC8qKg0K
ICAgICAgKiBGaW5kIHRoZSBpbnRlcnByZXRlciBmb3IgYSBwYXJ0aWN1bGFyIGdsb2JhbCBvYmpl
Y3QuICBUaGlzIHNob3VsZCByZWFsbHkNCiAgICAgICogYmUgYSBzdGF0aWMgbWV0aG9kLCBidXQg
d2UgY2FuJ3QgZG8gdGhhdCBpcyBDKysuICBBZ2FpbiwgYXMgd2l0aCBpc0dsb2JhbE9iamVjdCgp
DQogICAgICAqIGltcGxlbWVudGF0aW9uIHJlYWxseSBuZWVkIHRvIGtub3cgYWJvdXQgYWxsIGlu
c3RhbmNlcyBvZiBJbnRlcnByZXRlcg0KQEAgLTM5Miw3ICszOTIsNyBAQCBuYW1lc3BhY2UgS0pT
IHsNCiAgICAgICogb3ZlcnJpZGUgb2YgdGhpcyBtZXRob2QgaXMgY3VycmVudGx5IGluIFdlYkNv
cmUuDQogICAgICAqLw0KICAgICB2aXJ0dWFsIEludGVycHJldGVyICppbnRlcnByZXRlckZvckds
b2JhbE9iamVjdCAoY29uc3QgVmFsdWVJbXAgKmltcCkgeyByZXR1cm4gMDsgfQ0KLSAgICANCisN
CiAgICAgLyoqDQogICAgICAqIERldGVybWluZSBpZiB0aGUgaXQgaXMgJ3NhZmUnIHRvIGV4ZWN1
dGUgY29kZSBpbiB0aGUgdGFyZ2V0IGludGVycHJldGVyIGZyb20gYW4NCiAgICAgICogb2JqZWN0
IHRoYXQgb3JpZ2luYXRlZCBpbiB0aGlzIGludGVycHJldGVyLiAgVGhpcyBjaGVjayBpcyB1c2Vk
IHRvIGVuZm9yY2UgV2ViQ29yZQ0KQEAgLTQwMSwxMSArNDAxLDEwIEBAIG5hbWVzcGFjZSBLSlMg
ew0KICAgICAgKi8NCiAgICAgdmlydHVhbCBib29sIGlzU2FmZVNjcmlwdCAoY29uc3QgSW50ZXJw
cmV0ZXIgKnRhcmdldCkgeyByZXR1cm4gdHJ1ZTsgfQ0KIA0KLSNpZm5kZWYgTk9LSUFfQ0hBTkdF
UyAgICANCisgICAgSU1QT1JUX0MNCiAgICAgdmlydHVhbCB2b2lkICpjcmVhdGVMYW5ndWFnZUlu
c3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmluZGluZ3M6Okluc3RhbmNlOjpCaW5k
aW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIGNvbnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IEJpbmRpbmdz
OjpSb290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpjdXJyZW50
KTsNCiAjZW5kaWYNCi0jZW5kaWYNCi0gICAgDQorDQogICBwcml2YXRlOg0KICAgICBJbnRlcnBy
ZXRlckltcCAqcmVwOw0KIA0KQEAgLTQzMiw3ICs0MzEsNyBAQCBuYW1lc3BhY2UgS0pTIHsNCiAg
ICAqIGFuZCBhbHNvIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZSBjb250ZXh0Lg0KICAgICov
DQogICBjbGFzcyBFeGVjU3RhdGUgew0KLQlPT01fTkVXX0RFTEVURQ0KKyAgICBPT01fTkVXX0RF
TEVURQ0KICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXJJbXA7DQogICAgIGZyaWVuZCBjbGFz
cyBGdW5jdGlvbkltcDsNCiAjaWYgQVBQTEVfQ0hBTkdFUw0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9zdGRpbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9zdGRpbnQu
aAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUva2pzL3N0ZGludC5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjUsMzYgKzI1LDMzIEBADQogDQogI2luY2x1ZGUgPGUzMmRlZi5oPg0K
IA0KLSNpZm5kZWYgdWludDMyX3QNCi0jZGVmaW5lIHVpbnQzMl90IFRVaW50MzINCi0jZGVmaW5l
IGludDMyX3QJVEludDMyDQotI2VuZGlmDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7
DQordHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1
aW50MTZfdDsNCit0eXBlZGVmIHNob3J0IGludDE2X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBpbnQg
dWludDMyX3Q7DQordHlwZWRlZiBpbnQgaW50MzJfdDsNCit0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2
NF90Ow0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NF90Ow0KIA0KLSNpZm5kZWYg
dWludDE2X3QNCi0jZGVmaW5lIHVpbnQxNl90IFRVaW50MTYNCi0jZGVmaW5lIGludDE2X3QJVElu
dDE2DQotI2VuZGlmDQotDQotI2lmbmRlZiB1aW50OF90DQotI2RlZmluZSB1aW50OF90IFRVaW50
OA0KLSNkZWZpbmUgaW50OF90CVRJbnQ4DQotI2VuZGlmDQordHlwZWRlZiB1bnNpZ25lZCBsb25n
IHVpbnRwdHJfdDsNCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50cHRyX3Q7DQogDQogI2Vsc2UN
CiANCiAjaWZuZGVmIHVpbnQzMl90DQogI2RlZmluZSB1aW50MzJfdCB1bnNpZ25lZCBpbnQNCi0j
ZGVmaW5lIGludDMyX3QJaW50DQorI2RlZmluZSBpbnQzMl90ICAgIGludA0KICNlbmRpZg0KIA0K
ICNpZm5kZWYgdWludDE2X3QNCiAjZGVmaW5lIHVpbnQxNl90IHVuc2lnbmVkIHNob3J0IGludA0K
LSNkZWZpbmUgaW50MTZfdAkgc2hvcnQgaW50DQorI2RlZmluZSBpbnQxNl90ICAgICBzaG9ydCBp
bnQNCiAjZW5kaWYNCiANCiAjaWZuZGVmIHVpbnQ4X3QNCiAjZGVmaW5lIHVpbnQ4X3QgdW5zaWdu
ZWQgY2hhcg0KLSNkZWZpbmUgaW50OF90CWNoYXINCisjZGVmaW5lIGludDhfdCAgICBjaGFyDQog
I2VuZGlmDQogDQogDQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHJldmlzaW9uIDE3MDY5KQ0K
KysrIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC00Nzcs
NiArNDc3LDcgQEAgbmFtZXNwYWNlIEtKUyB7DQogICAgICAqLw0KICAgICBzdGF0aWMgdm9pZCBn
bG9iYWxDbGVhcigpOw0KICNlbmRpZg0KKyAgICBSZXAgKmFyZXAoKSBjb25zdCB7IHJldHVybiBy
ZXA7IH0NCiAgIHByaXZhdGU6DQogICAgIFVTdHJpbmcoUmVwICpyKSB7IGF0dGFjaChyKTsgfQ0K
ICAgICB2b2lkIGF0dGFjaChSZXAgKnIpIHsgcmVwID0gcjsgci0+cmVmKCk7IH0NCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNzI5MikNCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEs
MyArMSw4MSBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2YWxsICA8c3JpcmFtLnlhZGF2YWxsaUBub2tp
YS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMgKHpidWp0YXNAZ21h
aWwuY29tKS4NCisgICAgICAgIERFU0M6IFNjcmlwdGFibGUgcGx1Z2luICYgd2lkZ2V0IG9iamVj
dCBpbXBsZW1lbnRhdGlvbg0KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE0MDcNCisNCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQg
T1IgQ0hBTkdFRA0KKw0KKyAgICAgICAgKiBCV0lOUy9XRUJDT1JFVS5ERUY6DQorICAgICAgICAq
IEVBQkkvV2ViQ29yZVUuREVGOg0KKyAgICAgICAgKiBicmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHA6
DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6On5DV2ViQ29yZUJyaWRnZSk6DQorICAgICAgICAo
Q1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nKToNCisgICAgICAgIChD
V2ViQ29yZUJyaWRnZTo6V2luZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAgICAgKENXZWJDb3Jl
QnJpZGdlOjpHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKToNCisgICAgICAgIChDV2Vi
Q29yZUJyaWRnZTo6R2V0UmVuZGVyVGV4dEFyZWEpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdl
OjpHZXRQYWdlRGF0YUwpOg0KKyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpUYWJiZWROYXZpZ2F0
aW9uKToNCisgICAgICAgICogYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaDoNCisgICAgICAgICogYnJp
ZGdlL1dlYkNvcmVXaWRnZXQuaDoNCisgICAgICAgIChNV2ViQ29yZVdpZGdldDo6UGx1Z2luU2Ny
aXB0YWJsZU9iamVjdCk6DQorICAgICAgICAqIGdyb3VwL0tIVE1MLm1tcDoNCisgICAgICAgICog
Z3JvdXAvS1dRLm1tcDoNCisgICAgICAgICogZ3JvdXAvV2ViQ29yZS5tbXA6DQorICAgICAgICAq
IGtodG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwOg0KKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJw
cmV0ZXI6OmlzR2xvYmFsT2JqZWN0KToNCisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVy
OjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOg0KKyAgICAgICAgKiBraHRtbC9lY21h
L2tqc19iaW5kaW5nLmg6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2RvbS5jcHA6DQorICAg
ICAgICAoRE9NTm9kZTo6bWFyayk6DQorICAgICAgICAoRE9NTm9kZTo6Z2V0VmFsdWVQcm9wZXJ0
eSk6DQorICAgICAgICAoRE9NTm9kZTo6Z2V0TGlzdGVuZXIpOg0KKyAgICAgICAgKERPTU5vZGVQ
cm90b0Z1bmM6OnRyeUNhbGwpOg0KKyAgICAgICAgKERPTU5vZGVMaXN0OjpjYWxsKToNCisgICAg
ICAgIChET01Eb2N1bWVudDo6RE9NRG9jdW1lbnQpOg0KKyAgICAgICAgKERPTURvY3VtZW50UHJv
dG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01FbGVtZW50OjpET01FbGVtZW50KToNCisg
ICAgICAgIChET01FbGVtZW50UHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01ET01J
bXBsZW1lbnRhdGlvbjo6RE9NRE9NSW1wbGVtZW50YXRpb24pOg0KKyAgICAgICAgKERPTU5hbWVk
Tm9kZU1hcDo6RE9NTmFtZWROb2RlTWFwKToNCisgICAgICAgIChLSlM6OmdldERPTURvY3VtZW50
Tm9kZSk6DQorICAgICAgICAoS0pTOjpjaGVja05vZGVTZWN1cml0eSk6DQorICAgICAgICAoS0pT
OjpnZXRSdW50aW1lT2JqZWN0KToNCisgICAgICAgIChET01OYW1lZE5vZGVzQ29sbGVjdGlvbjo6
dHJ5R2V0KToNCisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpET01DaGFyYWN0ZXJEYXRhKToN
CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAg
IChET01UZXh0OjpET01UZXh0KToNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93LmNw
cDoNCisgICAgICAgIChXaW5kb3c6OldpbmRvdyk6DQorICAgICAgICAoV2luZG93OjptYXJrKToN
CisgICAgICAgIChXaW5kb3c6OmdldCk6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX3dpbmRv
dy5oOg0KKyAgICAgICAgKEtKUzo6V2luZG93OjopOg0KKyAgICAgICAgKEtKUzo6U2VsZWN0aW9u
OjopOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193aW5kb3cubHV0Lmg6DQorICAgICAgICAo
S0pTOjopOg0KKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHA6DQorICAg
ICAgICAoSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpnZXRBcHBsZXRJbnN0YW5jZSk6DQorICAgICAg
ICAoSFRNTEVtYmVkRWxlbWVudEltcGw6OkhUTUxFbWJlZEVsZW1lbnRJbXBsKToNCisgICAgICAg
IChIVE1MRW1iZWRFbGVtZW50SW1wbDo6Z2V0RW1iZWRJbnN0YW5jZSk6DQorICAgICAgICAqIGto
dG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmg6DQorICAgICAgICAqIGt3cS9LV1FLSFRNTFBhcnQu
Y3BwOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6S1dRS0hUTUxQYXJ0KToNCisgICAgICAgIChL
V1FLSFRNTFBhcnQ6OnN1Ym1pdEZvcm0pOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6YmluZGlu
Z1Jvb3RPYmplY3QpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6Z2V0UmVuZGVyVGV4dFJlY3RB
cnJheSk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjphZGRQbHVnaW5Sb290T2JqZWN0KToNCisg
ICAgICAgIChLV1FLSFRNTFBhcnQ6OmNsZWFudXBQbHVnaW5Sb290T2JqZWN0cyk6DQorICAgICAg
ICAoS1dRS0hUTUxQYXJ0OjpnZXROZXdUYWJiZWRDdXJzb3JQb3NpdGlvbik6DQorICAgICAgICAo
S1dRS0hUTUxQYXJ0Ojp0YWJiZWROYXZpZ2F0aW9uKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6
OnByZXBhcmVGb3JVc2VyQWN0aW9uKToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OmNyZWF0ZVdp
ZGdldE9iamVjdCk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRFbWJlZEluc3RhbmNlRm9y
Vmlldyk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRPYmplY3RJbnN0YW5jZUZvclZpZXcp
Og0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAg
ICAgKiBrd3EvS1dRS0hUTUxQYXJ0Lmg6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRBcHBs
ZXRJbnN0YW5jZUZvclZpZXcpOg0KKw0KIDIwMDYtMTAtMjMgIG5hZ3VvICA8Z2VvcmdlLmd1b0Bu
b2tpYS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBaYWxhbi4NCkluZGV4OiBXZWJDb3Jl
L0JXSU5TL1dFQkNPUkVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQldJTlMvV0VCQ09S
RVUuREVGCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL0JXSU5TL1dFQkNPUkVVLkRFRgko
d29ya2luZyBjb3B5KQ0KQEAgLTEsMTU5ICsxLDE2MCBAQA0KIEVYUE9SVFMNCi0JPz8xQ1dlYkNv
cmVTZXR0aW5nc0BAVUFFQFhaIEAgMSBOT05BTUUgOyBDV2ViQ29yZVNldHRpbmdzOjp+Q1dlYkNv
cmVTZXR0aW5ncyh2b2lkKQ0KLQk/QWN0aXZhdGVBY2Nlc3NLZXlzQENXZWJDb3JlQnJpZGdlQEBR
QUVYVVRLZXlFdmVudEBAQFogQCAyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFjdGl2
YXRlQWNjZXNzS2V5cyhzdHJ1Y3QgVEtleUV2ZW50KQ0KLQk/QWN0aXZhdGVFdmVudEBDV2ViQ29y
ZUJyaWRnZUBAUUFFWEFBVlRQb2ludEBAQFogQCAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkFjdGl2YXRlRXZlbnQoY2xhc3MgVFBvaW50ICYpDQotCT9BZGREYXRhQENXZWJDb3JlQnJp
ZGdlQEBRQUVYQUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
QWRkRGF0YShjbGFzcyBURGVzQzggY29uc3QgJikNCi0JP0FkZEl0ZW1Ub0NhY2hlTEBUV2ViQ29y
ZUNhY2hlQEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5mb0BAQUFWVERlc0M4QEBI
QFogQCA1IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6QWRkSXRlbVRvQ2FjaGVMKGNsYXNz
IE1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNsYXNzIFREZXNDOCAmLCBpbnQpDQot
CT9BZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDYgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250YWN0cyhjbGFzcyBUUG9pbnQgJikN
Ci0JP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA3IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZvaWQpDQotCT9BbHRUZXh0QFRXZWJD
b3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDggTk9OQU1FIDsgY2xhc3MgVFB0
ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRUZXh0KHZvaWQpDQotCT9BdXRvUmVmcmVz
aEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgOSBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9Cb2R5QmFja2dy
b3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdiQEBYWiBAIDEwIE5PTkFNRSA7IGNs
YXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJvZHlCYWNrZ3JvdW5kQ29sb3Iodm9pZCkNCi0JP0Nh
bkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgMTEgTk9OQU1FIDsgaW50IENXZWJD
b3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uodm9pZCkgY29uc3QNCi0JP0NsZWFyRmluZEBDV2ViQ29y
ZUJyaWRnZUBAUUFFWFhaIEAgMTIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q2xlYXJG
aW5kKHZvaWQpDQotCT9DbGllbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUFBVk1XZWJDbGllbnRCcmlk
Z2VAQFhaIEAgMTMgTk9OQU1FIDsgY2xhc3MgTVdlYkNsaWVudEJyaWRnZSAmIENXZWJDb3JlQnJp
ZGdlOjpDbGllbnQodm9pZCkNCi0JP0Nsb3NlVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAx
NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbG9zZVVSTCh2b2lkKQ0KLQk/Q29va2ll
QWRhcHRlckBUV2ViQ29yZUNvb2tpZUZhY3RvcnlAQFNBUEFWTVdlYkNvcmVDb29raWVBZGFwdGVy
QEBYWiBAIDE1IE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqIFRXZWJDb3Jl
Q29va2llRmFjdG9yeTo6Q29va2llQWRhcHRlcih2b2lkKQ0KLQk/Q3JlYXRlRG9jdW1lbnRXaXRo
RW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIQFogQCAxNiBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZyhjbGFzcyBU
RGVzQzE2IGNvbnN0ICYsIGludCkNCi0JP0NyZWF0ZUtIVE1MVmlld0BDV2ViQ29yZUJyaWRnZUBA
UUFFWEFBVk1XZWJDb3JlU2Nyb2xsVmlld0BASEhAWiBAIDE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OkNyZWF0ZUtIVE1MVmlldyhjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgJiwgaW50
LCBpbnQpDQotCT9DdXJzaXZlRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRy
QzE2QEBYWiBAIDE4IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6Q3Vy
c2l2ZUZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0RlQWN0aXZhdGVFdmVudEBDV2ViQ29yZUJy
aWRnZUBAUUFFWEhAWiBAIDE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRlQWN0aXZh
dGVFdmVudChpbnQpDQotCT9EZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBR
QkVIWFogQCAyMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZpeGVkRm9u
dFNpemUodm9pZCkgY29uc3QNCi0JP0RlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBR
QkVIWFogQCAyMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXpl
KHZvaWQpIGNvbnN0DQotCT9EZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFC
RT9BVlRQdHJDMTZAQFhaIEAgMjIgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRp
bmdzOjpEZWZhdWx0VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQotCT9EZWZlcnNUaW1lcnNAQ1dl
YkNvcmVCcmlkZ2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpEZWZl
cnNUaW1lcnModm9pZCkNCi0JP0RldGVybWluZUN1cnNvclBvc2l0aW9uQENXZWJDb3JlQnJpZGdl
QEBRQUVIQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBAMUFBVlRQb2lu
dEBASEBaIEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpEZXRlcm1pbmVDdXJzb3JQ
b3NpdGlvbihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGNsYXNzIFRSZWN0ICYs
IGNsYXNzIFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQpDQotCT9EaWROb3RPcGVuVVJMQENX
ZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAyNSBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP0RvbWFp
bkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCAyNiBOT05BTUUgOyBjbGFzcyBU
UHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkgY29uc3QNCi0JP0RyYXdSZWN0QENX
ZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNXZWJDb3JlR3JhcGhpY3NDb250ZXh0QEBA
WiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRyYXdSZWN0KGNsYXNzIFRSZWN0
IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICYpDQotCT9EdW1wUmVuZGVy
VHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJy
aWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCi0JP0VuZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFha
IEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RW5kKHZvaWQpDQotCT9FeGVjdXRl
U2NyaXB0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAzMCBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVjdXRlU2NyaXB0KGNsYXNzIFREZXNDMTYgY29uc3QgJikN
Ci0JP0ZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNBUEFWTVdlYkNvcmVGb3Jt
Q29udHJvbEZhY3RvcnlAQFhaIEAgMzEgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVGb3JtQ29udHJv
bEZhY3RvcnkgKiBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KLQk/
RmFjdG9yeUBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlSW1hZ2VS
ZW5kZXJlckZhY3RvcnlAQFhaIEAgMzIgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRl
cmVyRmFjdG9yeSAqIFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkN
Ci0JP0ZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVBBVk1XZWJDb3JlVGV4
dFJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMyBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZVRleHRSZW5k
ZXJlckZhY3RvcnkgKiBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6OkZhY3Rvcnkodm9pZCkN
Ci0JP0ZhbnRhc3lGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFha
IEAgMzQgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGYW50YXN5Rm9u
dEZhbWlseSh2b2lkKSBjb25zdA0KLQk/RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlk
Z2VAQFFCRUhYWiBAIDM1IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6RmFzdEZpcnN0RGlz
cGxheU1vZGUodm9pZCkgY29uc3QNCi0JP0ZpbmRMaW5rc09mVHlwZUBDV2ViQ29yZUJyaWRnZUBA
UUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFVUV2ViQ29yZUxpbmtJdGVtQEBAQEBaIEAgMzYg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RmluZExpbmtzT2ZUeXBlKGNsYXNzIFREZXND
MTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PHN0cnVjdCBUV2ViQ29yZUxpbmtJdGVtPiAmKQ0KLQk/
Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzcg
Tk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGaXhlZEZvbnRGYW1pbHko
dm9pZCkgY29uc3QNCi0JP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhIQFogQCAzOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGb3JjZUxheW91
dEFkanVzdGluZ1ZpZXdTaXplKGludCkNCi0JP0dldFBhZ2VEYXRhTEBDV2ViQ29yZUJyaWRnZUBA
UUFFUEFWPyRDQXJyYXlQdHJAVkNXZWJDb3JlUGFnZURhdGFJdGVtQEBAQEhAWiBAIDM5IE5PTkFN
RSA7IGNsYXNzIENBcnJheVB0cjxjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbT4gKiBDV2ViQ29y
ZUJyaWRnZTo6R2V0UGFnZURhdGFMKGludCkNCi0JP0dldFRleHRDb250ZW50TEBDV2ViQ29yZUJy
aWRnZUBAUUFFUEFWSEJ1ZkMxNkBAWFogQCA0MCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dl
YkNvcmVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KLQk/R2V0VXJsT2ZOb2RlSW5Gb2N1
c0xAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFBVlRQb2ludEBAQFogQCA0MSBOT05B
TUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFVybE9mTm9kZUluRm9jdXNM
KGNsYXNzIFRQb2ludCAmKSBjb25zdA0KLQk/SGFzUGVuZGluZ0xheW91dEBDV2ViQ29yZUJyaWRn
ZUBAUUJFSFhaIEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpIYXNQZW5kaW5nTGF5
b3V0KHZvaWQpIGNvbnN0DQotCT9IaXN0b3J5UHJvdmlkZXJAVFdlYkNvcmVIaXN0b3J5QEBTQVBB
Vk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3Jl
SGlzdG9yeVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpIaXN0b3J5UHJvdmlkZXIodm9pZCkN
Ci0JP0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhIQFogQCA0NCBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KLQk/SW1hZ2VUeXBlQFRXZWJDb3JlSW1h
Z2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYg
JiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZvaWQpDQotCT9JbWFnZXNJblJlY3RA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4RmxhdEBWVFdlYkNvcmVJbWFnZUNhcnJp
ZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0FycmF5Rml4RmxhdDxjbGFzcyBUV2ViQ29y
ZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VzSW5SZWN0KGludCkNCi0JP0lu
aXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVkNXZWJDb3JlU2V0dGluZ3NA
QEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5pdGlhbGl6ZVNldHRpbmdz
KGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3QgJikNCi0JP0luc3RhbGxJbkZyYW1lQENXZWJD
b3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDQ4IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJbkZyYW1lKGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmll
dyAmKQ0KLQk/SXNGcmFtZVNldEBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgNDkgTk9OQU1FIDsg
aW50IENXZWJDb3JlQnJpZGdlOjpJc0ZyYW1lU2V0KHZvaWQpIGNvbnN0DQotCT9KYXZhRW5hYmxl
ZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0
aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTEgTk9OQU1FIDsgaW50
IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHko
dm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhY
WiBAIDUyIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhU2NyaXB0RW5hYmxlZCh2
b2lkKSBjb25zdA0KLQk/SnVtcFRvU2VsZWN0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1
MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpKdW1wVG9TZWxlY3Rpb24odm9pZCkNCi0J
P0tleUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVIVVRLZXlFdmVudEBASEBaIEAgNTQgTk9OQU1F
IDsgaW50IENXZWJDb3JlQnJpZGdlOjpLZXlFdmVudChzdHJ1Y3QgVEtleUV2ZW50LCBpbnQpDQot
CT9Mb2FkSW1hZ2VzQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1NSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpMb2FkSW1hZ2VzKHZvaWQpDQotCT9Mb2FkZXJDb250YWluZXJAVFdlYkNv
cmVMb2FkZXJDb250YWluZXJAQFNBUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJAQFhaIEAgNTYg
Tk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKiBUV2ViQ29yZUxvYWRlckNv
bnRhaW5lcjo6TG9hZGVyQ29udGFpbmVyKHZvaWQpDQotCT9NaW5pbXVtRm9udFNpemVAQ1dlYkNv
cmVTZXR0aW5nc0BAUUJFSFhaIEAgNTcgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Ok1p
bmltdW1Gb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/TWluaW11bUxvZ2ljYWxGb250U2l6ZUBDV2Vi
Q29yZVNldHRpbmdzQEBRQkVIWFogQCA1OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6
TWluaW11bUxvZ2ljYWxGb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/TmFtZUBDV2ViQ29yZUJyaWRn
ZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA1OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3Jl
QnJpZGdlOjpOYW1lKHZvaWQpIGNvbnN0DQotCT9OYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JAQ1dl
YkNvcmVCcmlkZ2VAQFFCRUhBQVZUUG9pbnRAQEFBVzRUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlw
ZUBAQUFWVFJlY3RAQEBaIEAgNjAgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOYXZpZ2Fi
bGVOb2RlVW5kZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdlYkNvcmVGb2N1c2VkRWxl
bWVudFR5cGUgJiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCi0JP05lZWRzTGF5b3V0QENXZWJDb3Jl
QnJpZGdlQEBRQkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5lZWRzTGF5
b3V0KHZvaWQpIGNvbnN0DQotCT9OZXdMQENXZWJDb3JlQnJpZGdlQEBTQVBBVjFAQUFWTVdlYkNs
aWVudEJyaWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUJyaWRnZSAqIENXZWJD
b3JlQnJpZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlkZ2UgJikNCi0JP05ld0xAQ1dlYkNv
cmVHcmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0R2NAQFBBVkNGYnNCaXRtYXBAQFBB
Vk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBo
aWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRH
YyAmLCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAqKQ0KLQk/
TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQFBBVkNGYnNCaXRtYXBEZXZpY2VA
QFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2NCBOT05BTUUgOyBj
bGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpO
ZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3MgQ0Zic0JpdG1hcCAqLCBjbGFzcyBN
V2ViQ29yZVNjcm9sbFZpZXcgKikNCi0JP05ld0xAQ1dlYkNvcmVTZXR0aW5nc0BAU0FQQVYxQFha
IEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyAqIENXZWJDb3JlU2V0dGluZ3M6
Ok5ld0wodm9pZCkNCi0JP05vdGlmeURlY29kaW5nRXJyb3JAQ1dlYkNvcmVJbWFnZUNhbGxiYWNr
V3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tX
cmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZvaWQpDQotCT9Ob3RpZnlGaW5pc2hlZEBDV2Vi
Q29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NyBOT05BTUUgOyB2b2lkIENXZWJD
b3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeUZpbmlzaGVkKHZvaWQpDQotCT9Ob3RpZnlV
cGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjggTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlVcGRhdGUodm9pZCkNCi0J
P051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0BDV2ViQ29yZUJyaWRnZUBAUUFFSFhaIEAgNjkg
Tk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOdW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMo
dm9pZCkNCi0JP09wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBIMDBBQlZU
RGF0ZVRpbWVAQEBaIEAgNzAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6T3BlblVSTChj
bGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBU
RGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRlVGltZSBjb25zdCAmKQ0KLQk/UGx1Z2luSGFuZGxl
ckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBYWiBA
IDcxIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAqIFRXZWJDb3JlUGx1Z2lu
SGFuZGxlcjo6UGx1Z2luSGFuZGxlcih2b2lkKQ0KLQk/UGx1Z2luc0VuYWJsZWRAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUJFSFhaIEAgNzIgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlBsdWdp
bnNFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhVVFBvaW50ZXJFdmVudEBAQFogQCA3MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQ
b2ludGVyRXZlbnQoc3RydWN0IFRQb2ludGVyRXZlbnQpDQotCT9Qb2ludGVyRXZlbnRAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhXNFRUeXBlQFRQb2ludGVyRXZlbnRAQEFCVlRQb2ludEBAQFogQCA3NCBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoZW51bSBUUG9pbnRlckV2
ZW50OjpUVHlwZSwgY2xhc3MgVFBvaW50IGNvbnN0ICYpDQotCT9QcmVwYXJlRm9yRXhpdEBDV2Vi
Q29yZUJyaWRnZUBAU0FYWFogQCA3NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcmVw
YXJlRm9yRXhpdCh2b2lkKQ0KLQk/UHJvdmlzaW9uYWxMb2FkU3RhcnRlZEBDV2ViQ29yZUJyaWRn
ZUBAUUFFWFhaIEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCh2b2lkKQ0KLQk/UmF3RGF0YUBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFQUFW
VFB0ckM4QEBYWiBAIDc3IE5PTkFNRSA7IGNsYXNzIFRQdHJDOCAmIFRXZWJDb3JlSW1hZ2VDYXJy
aWVyOjpSYXdEYXRhKHZvaWQpDQotCT9SZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUBDV2ViQ29y
ZUJyaWRnZUBAUUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDc4IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlKGVudW0gVFdlYkNvcmVE
ZXZpY2VUeXBlKQ0KLQk/UmVmZXJyZXJAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZAQFha
IEAgNzkgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6UmVmZXJyZXIodm9p
ZCkgY29uc3QNCi0JP1JlbW92ZUZpbGVOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50
QEBAWiBAIDgwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92ZUZpbGVOYW1lKGNs
YXNzIFRQb2ludCAmKQ0KLQk/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYWFog
QCA4MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZW1vdmVGcm9tRnJhbWUodm9pZCkN
Ci0JP1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVjBraHRtbEBAWFogQCA4MiBOT05B
TUUgOyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJDb3JlQnJpZGdlOjpSZW5kZXJQYXJ0
KHZvaWQpIGNvbnN0DQotCT9SZW5kZXJlckBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFUEFWTVdl
YkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlSW1hZ2VS
ZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5kZXJlcih2b2lkKQ0KLQk/UmVzb2x2
ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAMEBaIEAgODQg
Tk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpSZXNvbHZlVXJsTChjbGFz
cyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1Jlc3RvcmVEb2N1
bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4NSBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0ZSh2b2lkKQ0KLQk/U2Fuc1NlcmlmRm9udEZh
bWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDg2IE5PTkFNRSA7IGNs
YXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2Fuc1NlcmlmRm9udEZhbWlseSh2b2lkKSBj
b25zdA0KLQk/U2F2ZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDg3IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNhdmVEb2N1bWVudFN0YXRlKHZvaWQpDQotCT9T
YXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgODggTk9OQU1FIDsg
aW50IENXZWJDb3JlU2V0dGluZ3M6OlNhdmVSYXdEYXRhRW5hYmxlZCh2b2lkKSBjb25zdA0KLQk/
U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCA4OSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY2FsaW5nRmFjdG9yQ2hhbmdlZChpbnQpDQotCT9TY3Jv
bGxUb0FuY2hvckBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgOTAgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2Nyb2xsVG9BbmNob3IoY2xhc3MgVERlc0MxNiBjb25z
dCAmKQ0KLQk/U2Nyb2xsVG9BbmNob3JXaXRoVVJMQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERl
c0MxNkBAQFogQCA5MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hv
cldpdGhVUkwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2VhcmNoQWdhaW5AQ1dlYkNvcmVC
cmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkyIE5PTkFNRSA7IGludCBDV2ViQ29yZUJy
aWRnZTo6U2VhcmNoQWdhaW4oY2xhc3MgVERlc0MxNiBjb25zdCAmLCBpbnQsIGludCwgaW50KQ0K
LQk/U2VhcmNoRm9yQENXZWJDb3JlQnJpZGdlQEBRQUVIQUJWVERlc0MxNkBASEhIQFogQCA5MyBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlNlYXJjaEZvcihjbGFzcyBURGVzQzE2IGNvbnN0
ICYsIGludCwgaW50LCBpbnQpDQotCT9TZWxlY3Rpb25Db2xvckBDV2ViQ29yZUJyaWRnZUBAUUFF
P0FWVFJnYkBAWFogQCA5NCBOT05BTUUgOyBjbGFzcyBUUmdiIENXZWJDb3JlQnJpZGdlOjpTZWxl
Y3Rpb25Db2xvcih2b2lkKQ0KLQk/U2VuZFJlc2l6ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVY
WFogQCA5NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kUmVzaXplRXZlbnQodm9p
ZCkNCi0JP1NlbmRTY3JvbGxFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgOTYgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2VuZFNjcm9sbEV2ZW50KHZvaWQpDQotCT9TZXJpZkZv
bnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCA5NyBOT05BTUUg
OyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9udEZhbWlseSh2b2lkKSBj
b25zdA0KLQk/U2V0QXV0b1JlZnJlc2hFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFog
QCA5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEF1dG9SZWZyZXNoRW5hYmxl
ZChpbnQpDQotCT9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVY
UEFWQ2FjaGVkSW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5OSBOT05BTUUgOyB2b2lkIENXZWJD
b3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNrKGNsYXNzIGtodG1sOjpDYWNoZWRJ
bWFnZUNhbGxiYWNrICopDQotCT9TZXRDb29raWVBZGFwdGVyQFRXZWJDb3JlQ29va2llRmFjdG9y
eUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDEwMCBOT05BTUUgOyB2b2lkIFRX
ZWJDb3JlQ29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRlcihjbGFzcyBNV2ViQ29yZUNvb2tp
ZUFkYXB0ZXIgKikNCi0JP1NldEN1cnNpdmVGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhBQlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNl
dEN1cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldERlZmF1bHRG
aXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMDIgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRGb250U2l6ZShpbnQpDQotCT9TZXRE
ZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEwMyBOT05BTUUgOyB2
b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGb250U2l6ZShpbnQpDQotCT9TZXREZWZh
dWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEw
NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRUZXh0RW5jb2Rpbmco
Y2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RGVmZXJzVGltZXJzQENXZWJDb3JlQnJpZGdl
QEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0RGVmZXJzVGlt
ZXJzKGludCkNCi0JP1NldERyYXdzQmFja2dyb3VuZEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBA
IDEwNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXREcmF3c0JhY2tncm91bmQoaW50
KQ0KLQk/U2V0RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXND
MTZAQEBaIEAgMTA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RmFudGFzeUZv
bnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RmFzdEZpcnN0RGlzcGxheU1v
ZGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJy
aWRnZTo6U2V0RmFzdEZpcnN0RGlzcGxheU1vZGUoaW50KQ0KLQk/U2V0Rml4ZWRGb250RmFtaWx5
QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEwOSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlU2V0dGluZ3M6OlNldEZpeGVkRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0
ICYpDQotCT9TZXRGb250U2l6ZUxldmVsQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTEwIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvbnRTaXplTGV2ZWwoaW50KQ0KLQk/U2V0
Rm9ybUNvbnRyb2xUZXh0QnlOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAMEBa
IEAgMTExIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZvcm1Db250cm9sVGV4dEJ5
TmFtZShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1Nl
dEhpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhpc3RvcnlAQFNBWFBBVk1XZWJDb3JlSGlzdG9yeVBy
b3ZpZGVyQEBAWiBAIDExMiBOT05BTUUgOyB2b2lkIFRXZWJDb3JlSGlzdG9yeTo6U2V0SGlzdG9y
eVByb3ZpZGVyKGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICopDQotCT9TZXRKYXZhRW5h
YmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0SmF2YUVuYWJsZWQoaW50KQ0KLQk/U2V0SmF2YVNjcmlwdENhbk9wZW5X
aW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE0IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseShpbnQpDQotCT9TZXRKYXZhU2NyaXB0RW5hYmxlZEBDV2ViQ29yZVNldHRpbmdz
QEBRQUVYSEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNj
cmlwdEVuYWJsZWQoaW50KQ0KLQk/U2V0TWF4QmlkaVdpZHRoQENXZWJDb3JlQnJpZGdlQEBRQUVY
SEBaIEAgMTE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE1heEJpZGlXaWR0aChp
bnQpDQotCT9TZXRNaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEx
NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Gb250U2l6ZShpbnQp
DQotCT9TZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFog
QCAxMTggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRNaW5pbXVtTG9naWNhbEZv
bnRTaXplKGludCkNCi0JP1NldE5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBA
WiBAIDExOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROYW1lKGNsYXNzIFREZXND
MTYgY29uc3QgJikNCi0JP1NldE5lZWRzTGF5b3V0QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAx
MjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TmVlZHNMYXlvdXQodm9pZCkNCi0J
P1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAxMjEgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENXZWJDb3JlQnJpZGdlICopDQotCT9T
ZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTIyIE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQoaW50KQ0KLQk/U2V0UmVu
ZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVlJlbmRlclBhcnRAa2h0bWxAQEBaIEAgMTIz
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFJlbmRlclBhcnQoY2xhc3Mga2h0bWw6
OlJlbmRlclBhcnQgKikNCi0JP1NldFNhbnNTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRT
YXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEyNSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFNhdmVSYXdEYXRhRW5hYmxlZChpbnQpDQotCT9T
ZXRTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAg
MTI2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2VyaWZGb250RmFtaWx5KGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFNob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29y
ZUJyaWRnZUBAUUFFWEhAWiBAIDEyNyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRT
aG91bGRDcmVhdGVSZW5kZXJlcnMoaW50KQ0KLQk/U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0BD
V2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTI4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0
aW5nczo6U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhpbnQpDQotCT9TZXRTdGFuZGFyZEZvbnRG
YW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI5IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U3RhbmRhcmRGb250RmFtaWx5KGNsYXNzIFREZXND
MTYgY29uc3QgJikNCi0JP1NldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9T
ZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBT
QVhQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAQFogQCAxMzEgTk9OQU1FIDsgdm9pZCBU
V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6U2V0V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeShj
bGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqKQ0KLQk/U2V0V2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3Jl
SW1hZ2VSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTMyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVJbWFn
ZVJlbmRlcmVyRmFjdG9yeTo6U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1X
ZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgKikNCi0JP1NldFdlYkNvcmVMb2FkZXJDb250YWlu
ZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBWFBBVk1XZWJDb3JlTG9hZGVyQ29udGFpbmVy
QEBAWiBAIDEzMyBOT05BTUUgOyB2b2lkIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpTZXRXZWJD
b3JlTG9hZGVyQ29udGFpbmVyKGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29udGFpbmVyICopDQotCT9T
ZXRXZWJDb3JlUGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBWFBBVk1XZWJD
b3JlUGx1Z2luSGFuZGxlckBAQFogQCAxMzQgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVBsdWdpbkhh
bmRsZXI6OlNldFdlYkNvcmVQbHVnaW5IYW5kbGVyKGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxl
ciAqKQ0KLQk/U2V0V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVy
ZXJGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTM1IE5P
TkFNRSA7IHZvaWQgVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3JlVGV4dFJl
bmRlcmVyRmFjdG9yeShjbGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKikNCi0JP1Nl
dFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAg
MTM2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0V2lsbExvYWRJbWFnZXNBdXRv
bWF0aWNhbGx5KGludCkNCi0JP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBA
UUFFSFhaIEAgMTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzKHZvaWQpDQotCT9TaG91bGRQcmludEJhY2tncm91bmRzQENXZWJDb3JlU2V0dGluZ3NA
QFFCRUhYWiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcyh2b2lkKSBjb25zdA0KLQk/U2hvd2luZ0Zhc3RQcmV2aWV3QENXZWJDb3JlQnJp
ZGdlQEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTaG93aW5nRmFz
dFByZXZpZXcodm9pZCkgY29uc3QNCi0JP1N0YW5kYXJkRm9udEZhbWlseUBDV2ViQ29yZVNldHRp
bmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJD
b3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/VGFiYmVkTmF2
aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdlYk5hdkRpcmVjdGlvbkBAQUFXNFRXZWJD
b3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5hdkRpcmVjdGlvbiwgZW51bSBUV2ViQ29y
ZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQotCT9UZXh0RW5jb2RpbmdAQ1dlYkNvcmVCcmlk
Z2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNpZ25lZCBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlRl
eHRFbmNvZGluZyh2b2lkKSBjb25zdA0KLQk/VVJMQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRy
QzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpVUkwo
dm9pZCkgY29uc3QNCi0JP1VSTFdpdGhSZWxhdGl2ZVN0cmluZ0BDV2ViQ29yZUJyaWRnZUBAUUFF
UEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAQFogQCAxNDQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAq
IENXZWJDb3JlQnJpZGdlOjpVUkxXaXRoUmVsYXRpdmVTdHJpbmcoY2xhc3MgVERlc0MxNiBjb25z
dCAmKQ0KLQk/VXBkYXRlQWxsVmlld3NAQ1dlYkNvcmVCcmlkZ2VAQFNBWFhaIEAgMTQ1IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlVwZGF0ZUFsbFZpZXdzKHZvaWQpDQotCT9VcmxAVFdl
YkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgMTQ2IE5PTkFNRSA7IGNsYXNz
IFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6VXJsKHZvaWQpDQotCT9Vc2VyU3R5bGVT
aGVldExvY2F0aW9uQENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQ3IE5P
TkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbih2b2lkKSBjb25zdA0KLQk/V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3Jl
U2V0dGluZ3NAQFFCRUhYWiBAIDE0OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6V2ls
bExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KHZvaWQpIGNvbnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBP
YmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWiBAIDE0OSBO
T05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCi0JP2hhc1Byb3Bl
cnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
MTUwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KLQk/bWFya2Vk
QFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDE1MSBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6
Om1hcmtlZCh2b2lkKSBjb25zdA0KLQk/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNz
SW5mb0AyQFhaIEAgMTUyIE5PTkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtK
Uzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0JP2hhc093blByb3BlcnR5QE9iamVj
dEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTUzIE5PTkFNRSA7IGJvb2wgS0pTOjpP
YmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGlu
dCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJA
SUBaIEAgMTU0IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP3Byb3BMaXN0QE9iamVjdEBL
SlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTU1IE5PTkFN
RSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCi0JP0dldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5r
c0xAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFBSEBaIEAgMTU2IE5PTkFNRSA7IGNs
YXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5r
c0woaW50ICYpDQotCT9HZXRSZW5kZXJUZXh0QXJlYUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlRE
ZXNDMTZAQEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1NyBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNz
IFJBcnJheTxjbGFzcyBUUmVjdD4gJikNCisgICAgPz8xQ1dlYkNvcmVTZXR0aW5nc0BAVUFFQFha
IEAgMSBOT05BTUUgOyBDV2ViQ29yZVNldHRpbmdzOjp+Q1dlYkNvcmVTZXR0aW5ncyh2b2lkKQ0K
KyAgICA/QWN0aXZhdGVBY2Nlc3NLZXlzQENXZWJDb3JlQnJpZGdlQEBRQUVYVVRLZXlFdmVudEBA
QFogQCAyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFjdGl2YXRlQWNjZXNzS2V5cyhz
dHJ1Y3QgVEtleUV2ZW50KQ0KKyAgICA/QWN0aXZhdGVFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFF
WEFBVlRQb2ludEBAQFogQCAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkFjdGl2YXRl
RXZlbnQoY2xhc3MgVFBvaW50ICYpDQorICAgID9BZGREYXRhQENXZWJDb3JlQnJpZGdlQEBRQUVY
QUJWVERlc0M4QEBAWiBAIDQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkRGF0YShj
bGFzcyBURGVzQzggY29uc3QgJikNCisgICAgP0FkZEl0ZW1Ub0NhY2hlTEBUV2ViQ29yZUNhY2hl
QEBTQVhBQVZNV2ViQ29yZVVybFJlc3BvbnNlSGVhZGVySW5mb0BAQUFWVERlc0M4QEBIQFogQCA1
IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDYWNoZTo6QWRkSXRlbVRvQ2FjaGVMKGNsYXNzIE1XZWJD
b3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvICYsIGNsYXNzIFREZXNDOCAmLCBpbnQpDQorICAgID9B
ZGRUb0NvbnRhY3RzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDYgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRkVG9Db250YWN0cyhjbGFzcyBUUG9pbnQgJikNCisg
ICAgP0FkanVzdFZpZXdTaXplQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA3IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OkFkanVzdFZpZXdTaXplKHZvaWQpDQorICAgID9BbHRUZXh0QFRX
ZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDggTk9OQU1FIDsgY2xhc3Mg
VFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpBbHRUZXh0KHZvaWQpDQorICAgID9BdXRv
UmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgOSBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVTZXR0aW5nczo6QXV0b1JlZnJlc2hFbmFibGVkKHZvaWQpIGNvbnN0DQorICAgID9C
b2R5QmFja2dyb3VuZENvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdiQEBYWiBAIDEwIE5P
TkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OkJvZHlCYWNrZ3JvdW5kQ29sb3Iodm9p
ZCkNCisgICAgP0NhbkNhY2hlUGFnZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgMTEgTk9OQU1F
IDsgaW50IENXZWJDb3JlQnJpZGdlOjpDYW5DYWNoZVBhZ2Uodm9pZCkgY29uc3QNCisgICAgP0Ns
ZWFyRmluZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMTIgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6Q2xlYXJGaW5kKHZvaWQpDQorICAgID9DbGllbnRAQ1dlYkNvcmVCcmlkZ2VAQFFB
RUFBVk1XZWJDbGllbnRCcmlkZ2VAQFhaIEAgMTMgTk9OQU1FIDsgY2xhc3MgTVdlYkNsaWVudEJy
aWRnZSAmIENXZWJDb3JlQnJpZGdlOjpDbGllbnQodm9pZCkNCisgICAgP0Nsb3NlVVJMQENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCAxNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbG9z
ZVVSTCh2b2lkKQ0KKyAgICA/Q29va2llQWRhcHRlckBUV2ViQ29yZUNvb2tpZUZhY3RvcnlAQFNB
UEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBYWiBAIDE1IE5PTkFNRSA7IGNsYXNzIE1XZWJDb3Jl
Q29va2llQWRhcHRlciAqIFRXZWJDb3JlQ29va2llRmFjdG9yeTo6Q29va2llQWRhcHRlcih2b2lk
KQ0KKyAgICA/Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhB
QlZURGVzQzE2QEBIQFogQCAxNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDcmVhdGVE
b2N1bWVudFdpdGhFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCkNCisgICAgP0Ny
ZWF0ZUtIVE1MVmlld0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFBVk1XZWJDb3JlU2Nyb2xsVmlld0BA
SEhAWiBAIDE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZUtIVE1MVmlldyhj
bGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgJiwgaW50LCBpbnQpDQorICAgID9DdXJzaXZlRm9udEZh
bWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE4IE5PTkFNRSA7IGNs
YXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6Q3Vyc2l2ZUZvbnRGYW1pbHkodm9pZCkgY29u
c3QNCisgICAgP0RlQWN0aXZhdGVFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDE5IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRlQWN0aXZhdGVFdmVudChpbnQpDQorICAgID9E
ZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCAyMCBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZpeGVkRm9udFNpemUodm9pZCkgY29uc3QN
CisgICAgP0RlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCAyMSBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXplKHZvaWQpIGNvbnN0DQor
ICAgID9EZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZA
QFhaIEAgMjIgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0
VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQorICAgID9EZWZlcnNUaW1lcnNAQ1dlYkNvcmVCcmlk
Z2VAQFNBSFhaIEAgMjMgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpEZWZlcnNUaW1lcnMo
dm9pZCkNCisgICAgP0RldGVybWluZUN1cnNvclBvc2l0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVI
QUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBAMUFBVlRQb2ludEBASEBa
IEAgMjQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpEZXRlcm1pbmVDdXJzb3JQb3NpdGlv
bihlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGNsYXNzIFRSZWN0ICYsIGNsYXNz
IFRSZWN0ICYsIGNsYXNzIFRQb2ludCAmLCBpbnQpDQorICAgID9EaWROb3RPcGVuVVJMQENXZWJD
b3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAyNSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpEaWROb3RPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP0RvbWFp
bkBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCAyNiBOT05BTUUgOyBjbGFzcyBU
UHRyQzE2IENXZWJDb3JlQnJpZGdlOjpEb21haW4odm9pZCkgY29uc3QNCisgICAgP0RyYXdSZWN0
QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVFJlY3RAQEFBVkNXZWJDb3JlR3JhcGhpY3NDb250ZXh0
QEBAWiBAIDI3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRyYXdSZWN0KGNsYXNzIFRS
ZWN0IGNvbnN0ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICYpDQorICAgID9EdW1w
UmVuZGVyVHJlZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgMjggTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6RHVtcFJlbmRlclRyZWUodm9pZCkNCisgICAgP0VuZEBDV2ViQ29yZUJyaWRn
ZUBAUUFFWFhaIEAgMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RW5kKHZvaWQpDQor
ICAgID9FeGVjdXRlU2NyaXB0QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAz
MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFeGVjdXRlU2NyaXB0KGNsYXNzIFREZXND
MTYgY29uc3QgJikNCisgICAgP0ZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNB
UEFWTVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFhaIEAgMzEgTk9OQU1FIDsgY2xhc3MgTVdl
YkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgKiBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6RmFj
dG9yeSh2b2lkKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QEBT
QVBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFhaIEAgMzIgTk9OQU1FIDsgY2xhc3Mg
TVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rv
cnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0
b3J5QEBTQVBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMyBOT05BTUUgOyBj
bGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKiBUV2ViQ29yZVRleHRSZW5kZXJlckZh
Y3Rvcnk6OkZhY3Rvcnkodm9pZCkNCisgICAgP0ZhbnRhc3lGb250RmFtaWx5QENXZWJDb3JlU2V0
dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzQgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2Vi
Q29yZVNldHRpbmdzOjpGYW50YXN5Rm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/RmFzdEZp
cnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDM1IE5PTkFNRSA7IGludCBD
V2ViQ29yZUJyaWRnZTo6RmFzdEZpcnN0RGlzcGxheU1vZGUodm9pZCkgY29uc3QNCisgICAgP0Zp
bmRMaW5rc09mVHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5
QFVUV2ViQ29yZUxpbmtJdGVtQEBAQEBaIEAgMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRn
ZTo6RmluZExpbmtzT2ZUeXBlKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PHN0
cnVjdCBUV2ViQ29yZUxpbmtJdGVtPiAmKQ0KKyAgICA/Rml4ZWRGb250RmFtaWx5QENXZWJDb3Jl
U2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMzcgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBD
V2ViQ29yZVNldHRpbmdzOjpGaXhlZEZvbnRGYW1pbHkodm9pZCkgY29uc3QNCisgICAgP0ZvcmNl
TGF5b3V0QWRqdXN0aW5nVmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAzOCBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGb3JjZUxheW91dEFkanVzdGluZ1ZpZXdTaXplKGlu
dCkNCisgICAgP0dldFBhZ2VEYXRhTEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlQdHJA
VkNXZWJDb3JlUGFnZURhdGFJdGVtQEBAQEhAWiBAIDM5IE5PTkFNRSA7IGNsYXNzIENBcnJheVB0
cjxjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbT4gKiBDV2ViQ29yZUJyaWRnZTo6R2V0UGFnZURh
dGFMKGludCkNCisgICAgP0dldFRleHRDb250ZW50TEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWSEJ1
ZkMxNkBAWFogQCA0MCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6Okdl
dFRleHRDb250ZW50TCh2b2lkKQ0KKyAgICA/R2V0VXJsT2ZOb2RlSW5Gb2N1c0xAQ1dlYkNvcmVC
cmlkZ2VAQFFCRVBBVkhCdWZDMTZAQEFBVlRQb2ludEBAQFogQCA0MSBOT05BTUUgOyBjbGFzcyBI
QnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OkdldFVybE9mTm9kZUluRm9jdXNMKGNsYXNzIFRQb2lu
dCAmKSBjb25zdA0KKyAgICA/SGFzUGVuZGluZ0xheW91dEBDV2ViQ29yZUJyaWRnZUBAUUJFSFha
IEAgNDIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpIYXNQZW5kaW5nTGF5b3V0KHZvaWQp
IGNvbnN0DQorICAgID9IaXN0b3J5UHJvdmlkZXJAVFdlYkNvcmVIaXN0b3J5QEBTQVBBVk1XZWJD
b3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDQzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlSGlzdG9y
eVByb3ZpZGVyICogVFdlYkNvcmVIaXN0b3J5OjpIaXN0b3J5UHJvdmlkZXIodm9pZCkNCisgICAg
P0ltYWdlQ291bnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhIQFogQCA0NCBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVCcmlkZ2U6OkltYWdlQ291bnQoaW50KQ0KKyAgICA/SW1hZ2VUeXBlQFRXZWJDb3JlSW1h
Z2VDYXJyaWVyQEBRQUVBQVZUUHRyQzE2QEBYWiBAIDQ1IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYg
JiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6SW1hZ2VUeXBlKHZvaWQpDQorICAgID9JbWFnZXNJblJl
Y3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVBBVj8kQ0FycmF5Rml4RmxhdEBWVFdlYkNvcmVJbWFnZUNh
cnJpZXJAQEBASEBaIEAgNDYgTk9OQU1FIDsgY2xhc3MgQ0FycmF5Rml4RmxhdDxjbGFzcyBUV2Vi
Q29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VzSW5SZWN0KGludCkNCisg
ICAgP0luaXRpYWxpemVTZXR0aW5nc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVkNXZWJDb3JlU2V0
dGluZ3NAQEBaIEAgNDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5pdGlhbGl6ZVNl
dHRpbmdzKGNsYXNzIENXZWJDb3JlU2V0dGluZ3MgY29uc3QgJikNCisgICAgP0luc3RhbGxJbkZy
YW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDQ4IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okluc3RhbGxJbkZyYW1lKGNsYXNzIE1XZWJDb3Jl
U2Nyb2xsVmlldyAmKQ0KKyAgICA/SXNGcmFtZVNldEBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAg
NDkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpJc0ZyYW1lU2V0KHZvaWQpIGNvbnN0DQor
ICAgID9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1MCBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QNCisgICAgP0phdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFha
IEAgNTEgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRDYW5PcGVuV2lu
ZG93c0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCisgICAgP0phdmFTY3JpcHRFbmFibGVkQENX
ZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUyIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdz
OjpKYXZhU2NyaXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KKyAgICA/SnVtcFRvU2VsZWN0aW9uQENX
ZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA1MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpK
dW1wVG9TZWxlY3Rpb24odm9pZCkNCisgICAgP0tleUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVI
VVRLZXlFdmVudEBASEBaIEAgNTQgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpLZXlFdmVu
dChzdHJ1Y3QgVEtleUV2ZW50LCBpbnQpDQorICAgID9Mb2FkSW1hZ2VzQENXZWJDb3JlQnJpZGdl
QEBRQUVYWFogQCA1NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpMb2FkSW1hZ2VzKHZv
aWQpDQorICAgID9Mb2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250YWluZXJAQFNBUEFW
TVdlYkNvcmVMb2FkZXJDb250YWluZXJAQFhaIEAgNTYgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVM
b2FkZXJDb250YWluZXIgKiBUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjo6TG9hZGVyQ29udGFpbmVy
KHZvaWQpDQorICAgID9NaW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAg
NTcgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Ok1pbmltdW1Gb250U2l6ZSh2b2lkKSBj
b25zdA0KKyAgICA/TWluaW11bUxvZ2ljYWxGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVI
WFogQCA1OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6TWluaW11bUxvZ2ljYWxGb250
U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/TmFtZUBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMx
NkBAWFogQCA1OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpOYW1lKHZv
aWQpIGNvbnN0DQorICAgID9OYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JAQ1dlYkNvcmVCcmlkZ2VA
QFFCRUhBQVZUUG9pbnRAQEFBVzRUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZUBAQUFWVFJlY3RA
QEBaIEAgNjAgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOYXZpZ2FibGVOb2RlVW5kZXJD
dXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUgJiwg
Y2xhc3MgVFJlY3QgJikgY29uc3QNCisgICAgP05lZWRzTGF5b3V0QENXZWJDb3JlQnJpZGdlQEBR
QkVIWFogQCA2MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5lZWRzTGF5b3V0KHZvaWQp
IGNvbnN0DQorICAgID9OZXdMQENXZWJDb3JlQnJpZGdlQEBTQVBBVjFAQUFWTVdlYkNsaWVudEJy
aWRnZUBAQFogQCA2MiBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUJyaWRnZSAqIENXZWJDb3JlQnJp
ZGdlOjpOZXdMKGNsYXNzIE1XZWJDbGllbnRCcmlkZ2UgJikNCisgICAgP05ld0xAQ1dlYkNvcmVH
cmFwaGljc0NvbnRleHRAQFNBUEFWMUBBQVZDRmJzQml0R2NAQFBBVkNGYnNCaXRtYXBAQFBBVk1X
ZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNz
Q29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRHYyAm
LCBjbGFzcyBDRmJzQml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAqKQ0KKyAgICA/
TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQFBBVkNGYnNCaXRtYXBEZXZpY2VA
QFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJDb3JlU2Nyb2xsVmlld0BAQFogQCA2NCBOT05BTUUgOyBj
bGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0OjpO
ZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3MgQ0Zic0JpdG1hcCAqLCBjbGFzcyBN
V2ViQ29yZVNjcm9sbFZpZXcgKikNCisgICAgP05ld0xAQ1dlYkNvcmVTZXR0aW5nc0BAU0FQQVYx
QFhaIEAgNjUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyAqIENXZWJDb3JlU2V0dGlu
Z3M6Ok5ld0wodm9pZCkNCisgICAgP05vdGlmeURlY29kaW5nRXJyb3JAQ1dlYkNvcmVJbWFnZUNh
bGxiYWNrV3JhcHBlckBAUUFFWFhaIEAgNjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2Fs
bGJhY2tXcmFwcGVyOjpOb3RpZnlEZWNvZGluZ0Vycm9yKHZvaWQpDQorICAgID9Ob3RpZnlGaW5p
c2hlZEBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NyBOT05BTUUgOyB2
b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeUZpbmlzaGVkKHZvaWQpDQor
ICAgID9Ob3RpZnlVcGRhdGVAQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlckBAUUFFWFhaIEAg
NjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyOjpOb3RpZnlVcGRh
dGUodm9pZCkNCisgICAgP051bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0BDV2ViQ29yZUJyaWRn
ZUBAUUFFSFhaIEAgNjkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpOdW1QZW5kaW5nT3JM
b2FkaW5nUmVxdWVzdHModm9pZCkNCisgICAgP09wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhB
QlZURGVzQzE2QEBIMDBBQlZURGF0ZVRpbWVAQEBaIEAgNzAgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6T3BlblVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgY2xhc3MgVERlc0Mx
NiBjb25zdCAmLCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRlVGltZSBjb25zdCAm
KQ0KKyAgICA/UGx1Z2luSGFuZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBUEFWTVdlYkNv
cmVQbHVnaW5IYW5kbGVyQEBYWiBAIDcxIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFu
ZGxlciAqIFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2luSGFuZGxlcih2b2lkKQ0KKyAgICA/
UGx1Z2luc0VuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNzIgTk9OQU1FIDsgaW50
IENXZWJDb3JlU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZvaWQpIGNvbnN0DQorICAgID9Qb2lu
dGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhVVFBvaW50ZXJFdmVudEBAQFogQCA3MyBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQb2ludGVyRXZlbnQoc3RydWN0IFRQb2ludGVyRXZl
bnQpDQorICAgID9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhXNFRUeXBlQFRQb2lu
dGVyRXZlbnRAQEFCVlRQb2ludEBAQFogQCA3NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdl
OjpQb2ludGVyRXZlbnQoZW51bSBUUG9pbnRlckV2ZW50OjpUVHlwZSwgY2xhc3MgVFBvaW50IGNv
bnN0ICYpDQorICAgID9QcmVwYXJlRm9yRXhpdEBDV2ViQ29yZUJyaWRnZUBAU0FYWFogQCA3NSBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcmVwYXJlRm9yRXhpdCh2b2lkKQ0KKyAgICA/
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgNzYgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2b2lkKQ0KKyAg
ICA/UmF3RGF0YUBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFQUFWVFB0ckM4QEBYWiBAIDc3IE5P
TkFNRSA7IGNsYXNzIFRQdHJDOCAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSYXdEYXRhKHZvaWQp
DQorICAgID9SZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUBDV2ViQ29yZUJyaWRnZUBAUUFFWFc0
VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDc4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlKGVudW0gVFdlYkNvcmVEZXZpY2VUeXBlKQ0KKyAg
ICA/UmVmZXJyZXJAQ1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZAQFhaIEAgNzkgTk9OQU1F
IDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6UmVmZXJyZXIodm9pZCkgY29uc3QNCisg
ICAgP1JlbW92ZUZpbGVOYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDgw
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92ZUZpbGVOYW1lKGNsYXNzIFRQb2lu
dCAmKQ0KKyAgICA/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4MSBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpSZW1vdmVGcm9tRnJhbWUodm9pZCkNCisgICAg
P1JlbmRlclBhcnRAQ1dlYkNvcmVCcmlkZ2VAQFFCRVBBVjBraHRtbEBAWFogQCA4MiBOT05BTUUg
OyBjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqIENXZWJDb3JlQnJpZGdlOjpSZW5kZXJQYXJ0KHZv
aWQpIGNvbnN0DQorICAgID9SZW5kZXJlckBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFUEFWTVdl
YkNvcmVJbWFnZVJlbmRlcmVyQEBYWiBAIDgzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlSW1hZ2VS
ZW5kZXJlciAqIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpSZW5kZXJlcih2b2lkKQ0KKyAgICA/UmVz
b2x2ZVVybExAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAMEBaIEAg
ODQgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpSZXNvbHZlVXJsTChj
bGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1Jlc3Rv
cmVEb2N1bWVudFN0YXRlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA4NSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpSZXN0b3JlRG9jdW1lbnRTdGF0ZSh2b2lkKQ0KKyAgICA/U2Fuc1Nl
cmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDg2IE5P
TkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2Fuc1NlcmlmRm9udEZhbWls
eSh2b2lkKSBjb25zdA0KKyAgICA/U2F2ZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhYWiBAIDg3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNhdmVEb2N1bWVudFN0YXRl
KHZvaWQpDQorICAgID9TYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFha
IEAgODggTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlNhdmVSYXdEYXRhRW5hYmxlZCh2
b2lkKSBjb25zdA0KKyAgICA/U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhIQFogQCA4OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY2FsaW5nRmFjdG9yQ2hh
bmdlZChpbnQpDQorICAgID9TY3JvbGxUb0FuY2hvckBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlRE
ZXNDMTZAQEBaIEAgOTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2Nyb2xsVG9BbmNo
b3IoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2Nyb2xsVG9BbmNob3JXaXRoVVJMQENX
ZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MSBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hvcldpdGhVUkwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0K
KyAgICA/U2VhcmNoQWdhaW5AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBA
IDkyIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoQWdhaW4oY2xhc3MgVERlc0Mx
NiBjb25zdCAmLCBpbnQsIGludCwgaW50KQ0KKyAgICA/U2VhcmNoRm9yQENXZWJDb3JlQnJpZGdl
QEBRQUVIQUJWVERlc0MxNkBASEhIQFogQCA5MyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6
OlNlYXJjaEZvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQorICAgID9T
ZWxlY3Rpb25Db2xvckBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFJnYkBAWFogQCA5NCBOT05BTUUg
OyBjbGFzcyBUUmdiIENXZWJDb3JlQnJpZGdlOjpTZWxlY3Rpb25Db2xvcih2b2lkKQ0KKyAgICA/
U2VuZFJlc2l6ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA5NSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpTZW5kUmVzaXplRXZlbnQodm9pZCkNCisgICAgP1NlbmRTY3JvbGxF
dmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgOTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJy
aWRnZTo6U2VuZFNjcm9sbEV2ZW50KHZvaWQpDQorICAgID9TZXJpZkZvbnRGYW1pbHlAQ1dlYkNv
cmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCA5NyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2
IENXZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/U2V0
QXV0b1JlZnJlc2hFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCA5OCBOT05BTUUg
OyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEF1dG9SZWZyZXNoRW5hYmxlZChpbnQpDQorICAg
ID9TZXRDYWxsYmFja0BDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYUEFWQ2FjaGVk
SW1hZ2VDYWxsYmFja0BraHRtbEBAQFogQCA5OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VD
YWxsYmFja1dyYXBwZXI6OlNldENhbGxiYWNrKGNsYXNzIGtodG1sOjpDYWNoZWRJbWFnZUNhbGxi
YWNrICopDQorICAgID9TZXRDb29raWVBZGFwdGVyQFRXZWJDb3JlQ29va2llRmFjdG9yeUBAU0FY
UEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDEwMCBOT05BTUUgOyB2b2lkIFRXZWJDb3Jl
Q29va2llRmFjdG9yeTo6U2V0Q29va2llQWRhcHRlcihjbGFzcyBNV2ViQ29yZUNvb2tpZUFkYXB0
ZXIgKikNCisgICAgP1NldEN1cnNpdmVGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhB
QlZURGVzQzE2QEBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEN1
cnNpdmVGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldERlZmF1bHRG
aXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMDIgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4ZWRGb250U2l6ZShpbnQpDQorICAgID9T
ZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDEwMyBOT05BTUUg
OyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGb250U2l6ZShpbnQpDQorICAgID9T
ZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBA
WiBAIDEwNCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRUZXh0RW5j
b2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0RGVmZXJzVGltZXJzQENXZWJD
b3JlQnJpZGdlQEBTQVhIQFogQCAxMDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0
RGVmZXJzVGltZXJzKGludCkNCisgICAgP1NldERyYXdzQmFja2dyb3VuZEBDV2ViQ29yZUJyaWRn
ZUBAUUFFWEhAWiBAIDEwNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXREcmF3c0Jh
Y2tncm91bmQoaW50KQ0KKyAgICA/U2V0RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTA3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0RmFudGFzeUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0
RmFzdEZpcnN0RGlzcGxheU1vZGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMDggTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0RmFzdEZpcnN0RGlzcGxheU1vZGUoaW50KQ0KKyAg
ICA/U2V0Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBA
WiBAIDEwOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEZpeGVkRm9udEZhbWls
eShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRGb250U2l6ZUxldmVsQENXZWJDb3Jl
QnJpZGdlQEBRQUVYSEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldEZv
bnRTaXplTGV2ZWwoaW50KQ0KKyAgICA/U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lQENXZWJDb3Jl
QnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAMEBaIEAgMTExIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OlNldEZvcm1Db250cm9sVGV4dEJ5TmFtZShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldEhpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhp
c3RvcnlAQFNBWFBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBAWiBAIDExMiBOT05BTUUgOyB2
b2lkIFRXZWJDb3JlSGlzdG9yeTo6U2V0SGlzdG9yeVByb3ZpZGVyKGNsYXNzIE1XZWJDb3JlSGlz
dG9yeVByb3ZpZGVyICopDQorICAgID9TZXRKYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBR
QUVYSEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YUVuYWJs
ZWQoaW50KQ0KKyAgICA/U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBD
V2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0
aW5nczo6U2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShpbnQpDQorICAg
ID9TZXRKYXZhU2NyaXB0RW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTE1IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdEVuYWJsZWQoaW50KQ0K
KyAgICA/U2V0TWF4QmlkaVdpZHRoQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTE2IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE1heEJpZGlXaWR0aChpbnQpDQorICAgID9TZXRN
aW5pbXVtRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDExNyBOT05BTUUgOyB2
b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Gb250U2l6ZShpbnQpDQorICAgID9TZXRN
aW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTggTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKGlu
dCkNCisgICAgP1NldE5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDEx
OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROYW1lKGNsYXNzIFREZXNDMTYgY29u
c3QgJikNCisgICAgP1NldE5lZWRzTGF5b3V0QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxMjAg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TmVlZHNMYXlvdXQodm9pZCkNCisgICAg
P1NldFBhcmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAxMjEgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6U2V0UGFyZW50KGNsYXNzIENXZWJDb3JlQnJpZGdlICopDQorICAg
ID9TZXRQbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTIyIE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQoaW50KQ0KKyAgICA/
U2V0UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUFFWFBBVlJlbmRlclBhcnRAa2h0bWxAQEBa
IEAgMTIzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFJlbmRlclBhcnQoY2xhc3Mg
a2h0bWw6OlJlbmRlclBhcnQgKikNCisgICAgP1NldFNhbnNTZXJpZkZvbnRGYW1pbHlAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTI0IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0U2Fuc1NlcmlmRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYp
DQorICAgID9TZXRTYXZlUmF3RGF0YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDEyNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFNhdmVSYXdEYXRhRW5hYmxl
ZChpbnQpDQorICAgID9TZXRTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFC
VlREZXNDMTZAQEBaIEAgMTI2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2Vy
aWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldFNob3VsZENyZWF0
ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEyNyBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoaW50KQ0KKyAgICA/U2V0U2hv
dWxkUHJpbnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTI4IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhpbnQp
DQorICAgID9TZXRTdGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlRE
ZXNDMTZAQEBaIEAgMTI5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U3RhbmRh
cmRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTMwIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihj
bGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5
QFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFj
dG9yeUBAQFogQCAxMzEgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTo6
U2V0V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeShjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFj
dG9yeSAqKQ0KKyAgICA/U2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5QFRXZWJDb3JlSW1h
Z2VSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQEBa
IEAgMTMyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeTo6U2V0V2Vi
Q29yZUltYWdlUmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rv
cnkgKikNCisgICAgP1NldFdlYkNvcmVMb2FkZXJDb250YWluZXJAVFdlYkNvcmVMb2FkZXJDb250
YWluZXJAQFNBWFBBVk1XZWJDb3JlTG9hZGVyQ29udGFpbmVyQEBAWiBAIDEzMyBOT05BTUUgOyB2
b2lkIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpTZXRXZWJDb3JlTG9hZGVyQ29udGFpbmVyKGNs
YXNzIE1XZWJDb3JlTG9hZGVyQ29udGFpbmVyICopDQorICAgID9TZXRXZWJDb3JlUGx1Z2luSGFu
ZGxlckBUV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFNBWFBBVk1XZWJDb3JlUGx1Z2luSGFuZGxlckBA
QFogQCAxMzQgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVBsdWdpbkhhbmRsZXI6OlNldFdlYkNvcmVQ
bHVnaW5IYW5kbGVyKGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAqKQ0KKyAgICA/U2V0V2Vi
Q29yZVRleHRSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBTQVhQ
QVZNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQEBaIEAgMTM1IE5PTkFNRSA7IHZvaWQgVFdl
YkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeShj
bGFzcyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgKikNCisgICAgP1NldFdpbGxMb2FkSW1h
Z2VzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTM2IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KGlu
dCkNCisgICAgP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUJyaWRnZUBAUUFFSFhaIEAg
MTM3IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKHZv
aWQpDQorICAgID9TaG91bGRQcmludEJhY2tncm91bmRzQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhY
WiBAIDEzOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2hvdWxkUHJpbnRCYWNrZ3Jv
dW5kcyh2b2lkKSBjb25zdA0KKyAgICA/U2hvd2luZ0Zhc3RQcmV2aWV3QENXZWJDb3JlQnJpZGdl
QEBRQkVIWFogQCAxMzkgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTaG93aW5nRmFzdFBy
ZXZpZXcodm9pZCkgY29uc3QNCisgICAgP1N0YW5kYXJkRm9udEZhbWlseUBDV2ViQ29yZVNldHRp
bmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJD
b3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/VGFiYmVk
TmF2aWdhdGlvbkBDV2ViQ29yZUJyaWRnZUBAUUFFSFc0VFdlYk5hdkRpcmVjdGlvbkBAQUFXNFRX
ZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlQEBIQFogQCAxNDEgTk9OQU1FIDsgaW50IENXZWJDb3Jl
QnJpZGdlOjpUYWJiZWROYXZpZ2F0aW9uKGVudW0gVFdlYk5hdkRpcmVjdGlvbiwgZW51bSBUV2Vi
Q29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBpbnQpDQorICAgID9UZXh0RW5jb2RpbmdAQ1dlYkNv
cmVCcmlkZ2VAQFFCRUlYWiBAIDE0MiBOT05BTUUgOyB1bnNpZ25lZCBpbnQgQ1dlYkNvcmVCcmlk
Z2U6OlRleHRFbmNvZGluZyh2b2lkKSBjb25zdA0KKyAgICA/VVJMQENXZWJDb3JlQnJpZGdlQEBR
QkU/QVZUUHRyQzE2QEBYWiBAIDE0MyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJp
ZGdlOjpVUkwodm9pZCkgY29uc3QNCisgICAgP1VSTFdpdGhSZWxhdGl2ZVN0cmluZ0BDV2ViQ29y
ZUJyaWRnZUBAUUFFUEFWSEJ1ZkMxNkBAQUJWVERlc0MxNkBAQFogQCAxNDQgTk9OQU1FIDsgY2xh
c3MgSEJ1ZkMxNiAqIENXZWJDb3JlQnJpZGdlOjpVUkxXaXRoUmVsYXRpdmVTdHJpbmcoY2xhc3Mg
VERlc0MxNiBjb25zdCAmKQ0KKyAgICA/VXBkYXRlQWxsVmlld3NAQ1dlYkNvcmVCcmlkZ2VAQFNB
WFhaIEAgMTQ1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlVwZGF0ZUFsbFZpZXdzKHZv
aWQpDQorICAgID9VcmxAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAg
MTQ2IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgJiBUV2ViQ29yZUltYWdlQ2Fycmllcjo6VXJsKHZv
aWQpDQorICAgID9Vc2VyU3R5bGVTaGVldExvY2F0aW9uQENXZWJDb3JlU2V0dGluZ3NAQFFCRT9B
VlRQdHJDMTZAQFhaIEAgMTQ3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5n
czo6VXNlclN0eWxlU2hlZXRMb2NhdGlvbih2b2lkKSBjb25zdA0KKyAgICA/V2lsbExvYWRJbWFn
ZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDE0OCBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVTZXR0aW5nczo6V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5KHZvaWQpIGNv
bnN0DQorICAgID9oYXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAy
QEFCVklkZW50aWZpZXJAMkBAWiBAIDE0OSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNP
d25Qcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIg
Y29uc3QgJikgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhl
Y1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTUwIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmpl
Y3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRp
ZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBA
IDE1MSBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lkKSBjb25zdA0KKyAg
ICA/Y2xhc3NJbmZvQE9iamVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgMTUyIE5PTkFN
RSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0OjpjbGFzc0luZm8o
dm9pZCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhl
Y1N0YXRlQDJASUBaIEAgMTUzIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3Bl
cnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2hh
c1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTU0IE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJl
ZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTU1IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgYm9vbCkNCisgICAgP0dldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0xAQ1dlYkNv
cmVCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFBSEBaIEAgMTU2IE5PTkFNRSA7IGNsYXNzIFRQdHJD
MTYgQ1dlYkNvcmVCcmlkZ2U6OkdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0woaW50ICYp
DQorICAgID9HZXRSZW5kZXJUZXh0QXJlYUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZA
QEFBVj8kUkFycmF5QFZUUmVjdEBAQEBAWiBAIDE1NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpHZXRSZW5kZXJUZXh0QXJlYShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFJBcnJh
eTxjbGFzcyBUUmVjdD4gJikNCisgICAgICAgID9XaW5kb3dTY3JpcHROUE9iamVjdEBDV2ViQ29y
ZUJyaWRnZUBAUUFFUEFWTlBPYmplY3RAQFhaIEAgMTU4IE5PTkFNRSA7IGNsYXNzIE5QT2JqZWN0
ICogQ1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KHZvaWQpDQogDQpJbmRleDog
V2ViQ29yZS9FQUJJL1dlYkNvcmVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvRUFCSS9X
ZWJDb3JlVS5ERUYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvRUFCSS9XZWJDb3JlVS5E
RUYJKHdvcmtpbmcgY29weSkNCkBAIC0xLDE2MiArMSwxNjMgQEANCiBFWFBPUlRTDQotCV9aTjEz
VFdlYkNvcmVDYWNoZTE1QWRkSXRlbVRvQ2FjaGVMRVIyOU1XZWJDb3JlVXJsUmVzcG9uc2VIZWFk
ZXJJbmZvUjZURGVzQzhpIEAgMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEwSW1hZ2VD
b3VudEVpIEAgMiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEwTG9hZEltYWdlc0V2IEAg
MyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTExUmVzb2x2ZVVybExFUks3VERlc0MxNlMy
XyBAIDQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMVNlYXJjaEFnYWluRVJLN1REZXND
MTZpaWkgQCA1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTJEZWZlcnNUaW1lcnNFdiBA
IDYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkdldFBhZ2VEYXRhTEVpIEAgNyBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEySW1hZ2VzSW5SZWN0RWkgQCA4IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMTJQb2ludGVyRXZlbnRFMTNUUG9pbnRlckV2ZW50IEAgOSBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEyUG9pbnRlckV2ZW50RU4xM1RQb2ludGVyRXZlbnQ1
VFR5cGVFUks2VFBvaW50IEAgMTAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0FjdGl2
YXRlRXZlbnRFUjZUUG9pbnQgQCAxMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEzQWRk
VG9Db250YWN0c0VSNlRQb2ludCBAIDEyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTNE
aWROb3RPcGVuVVJMRVJLN1REZXNDMTYgQCAxMyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTEzRXhlY3V0ZVNjcmlwdEVSSzdURGVzQzE2IEAgMTQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UxM1NldFJlbmRlclBhcnRFUE41a2h0bWwxMFJlbmRlclBhcnRFIEAgMTUgTk9OQU1FDQot
CV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNEFkanVzdFZpZXdTaXplRXYgQCAxNiBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTE0RHVtcFJlbmRlclRyZWVFdiBAIDE3IE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlMTRJbnN0YWxsSW5GcmFtZUVSMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxOCBO
T05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0UHJlcGFyZUZvckV4aXRFdiBAIDE5IE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRSZW1vdmVGaWxlTmFtZUVSNlRQb2ludCBAIDIwIE5P
TkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRTY3JvbGxUb0FuY2hvckVSSzdURGVzQzE2IEAg
MjEgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNlbGVjdGlvbkNvbG9yRXYgQCAyMiBO
T05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2V0TmVlZHNMYXlvdXRFdiBAIDIzIE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRVcGRhdGVBbGxWaWV3c0V2IEAgMjQgTk9OQU1FDQot
CV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUNyZWF0ZUtIVE1MVmlld0VSMThNV2ViQ29yZVNjcm9sbFZp
ZXdpaSBAIDI1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVEZUFjdGl2YXRlRXZlbnRF
aSBAIDI2IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVGaW5kTGlua3NPZlR5cGVFUks3
VERlc0MxNlI2UkFycmF5STE2VFdlYkNvcmVMaW5rSXRlbUUgQCAyNyBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTE1R2V0VGV4dENvbnRlbnRMRXYgQCAyOCBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTE1SnVtcFRvU2VsZWN0aW9uRXYgQCAyOSBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTE1UmVtb3ZlRnJvbUZyYW1lRXYgQCAzMCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJy
aWRnZTE1U2VuZFJlc2l6ZUV2ZW50RXYgQCAzMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTE1U2VuZFNjcm9sbEV2ZW50RXYgQCAzMiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1
U2V0RGVmZXJzVGltZXJzRWkgQCAzMyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1U2V0
TWF4QmlkaVdpZHRoRWkgQCAzNCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE2U2V0Rm9u
dFNpemVMZXZlbEVpIEAgMzUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNlRhYmJlZE5h
dmlnYXRpb25FMTZUV2ViTmF2RGlyZWN0aW9uUjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVp
IEAgMzYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxN1NhdmVEb2N1bWVudFN0YXRlRXYg
QCAzNyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4QWN0aXZhdGVBY2Nlc3NLZXlzRTlU
S2V5RXZlbnQgQCAzOCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE4SW5pdGlhbGl6ZVNl
dHRpbmdzRVJLMTZDV2ViQ29yZVNldHRpbmdzIEAgMzkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UxOFNldERyYXdzQmFja2dyb3VuZEVpIEAgNDAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UxOUJvZHlCYWNrZ3JvdW5kQ29sb3JFdiBAIDQxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3Jl
QnJpZGdlMjBSZXN0b3JlRG9jdW1lbnRTdGF0ZUV2IEAgNDIgTk9OQU1FDQotCV9aTjE0Q1dlYkNv
cmVCcmlkZ2UyMFNjYWxpbmdGYWN0b3JDaGFuZ2VkRWkgQCA0MyBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTIxU2Nyb2xsVG9BbmNob3JXaXRoVVJMRVJLN1REZXNDMTYgQCA0NCBOT05BTUUN
Ci0JX1pOMTRDV2ViQ29yZUJyaWRnZTIxU2hvdWxkQ3JlYXRlUmVuZGVyZXJzRXYgQCA0NSBOT05B
TUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIxVVJMV2l0aFJlbGF0aXZlU3RyaW5nRVJLN1REZXND
MTYgQCA0NiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIyUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZEV2IEAgNDcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyM0RldGVybWluZUN1cnNv
clBvc2l0aW9uRVIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlUjVUUmVjdFMzX1I2VFBvaW50
aSBAIDQ4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjNTZXRGYXN0Rmlyc3REaXNwbGF5
TW9kZUVpIEAgNDkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyNFNldEZvcm1Db250cm9s
VGV4dEJ5TmFtZUVSSzdURGVzQzE2UzJfIEAgNTAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2UyNFNldFNob3VsZENyZWF0ZVJlbmRlcmVyc0VpIEAgNTEgTk9OQU1FDQotCV9aTjE0Q1dlYkNv
cmVCcmlkZ2UyNkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nRVJLN1REZXNDMTZpIEAgNTIgTk9O
QU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyNlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlRTE4
VFdlYkNvcmVEZXZpY2VUeXBlIEAgNTMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyN051
bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0V2IEAgNTQgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVC
cmlkZ2UyOEZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVFaSBAIDU1IE5PTkFNRQ0KLQlfWk4x
NENXZWJDb3JlQnJpZGdlM0VuZEV2IEAgNTYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U0
TmV3TEVSMTZNV2ViQ2xpZW50QnJpZGdlIEAgNTcgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlk
Z2U2Q2xpZW50RXYgQCA1OCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTdBZGREYXRhRVJL
NlREZXNDOCBAIDU5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlN09wZW5VUkxFUks3VERl
c0MxNmlTMl9TMl9SSzlURGF0ZVRpbWUgQCA2MCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTdTZXROYW1lRVJLN1REZXNDMTYgQCA2MSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZThD
bG9zZVVSTEV2IEAgNjIgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U4RHJhd1JlY3RFUks1
VFJlY3RSMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDYzIE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlOEtleUV2ZW50RTlUS2V5RXZlbnRpIEAgNjQgTk9OQU1FDQotCV9aTjE0Q1dlYkNv
cmVCcmlkZ2U5Q2xlYXJGaW5kRXYgQCA2NSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTlT
ZWFyY2hGb3JFUks3VERlc0MxNmlpaSBAIDY2IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdl
OVNldFBhcmVudEVQU18gQCA2NyBOT05BTUUNCi0JX1pOMTVUV2ViQ29yZUhpc3RvcnkxNUhpc3Rv
cnlQcm92aWRlckV2IEAgNjggTk9OQU1FDQotCV9aTjE1VFdlYkNvcmVIaXN0b3J5MThTZXRIaXN0
b3J5UHJvdmlkZXJFUDIzTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgQCA2OSBOT05BTUUNCi0JX1pO
MTZDV2ViQ29yZVNldHRpbmdzMTRTZXRKYXZhRW5hYmxlZEVpIEAgNzAgTk9OQU1FDQotCV9aTjE2
Q1dlYkNvcmVTZXR0aW5nczE3U2V0UGx1Z2luc0VuYWJsZWRFaSBAIDcxIE5PTkFNRQ0KLQlfWk4x
NkNXZWJDb3JlU2V0dGluZ3MxOFNldERlZmF1bHRGb250U2l6ZUVpIEAgNzIgTk9OQU1FDQotCV9a
TjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0Rml4ZWRGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3MyBO
T05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRNaW5pbXVtRm9udFNpemVFaSBAIDc0
IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldFNlcmlmRm9udEZhbWlseUVSSzdU
RGVzQzE2IEAgNzUgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0Q3Vyc2l2ZUZv
bnRGYW1pbHlFUks3VERlc0MxNiBAIDc2IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3My
MFNldEZhbnRhc3lGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3NyBOT05BTUUNCi0JX1pOMTZDV2Vi
Q29yZVNldHRpbmdzMjBTZXRKYXZhU2NyaXB0RW5hYmxlZEVpIEAgNzggTk9OQU1FDQotCV9aTjE2
Q1dlYkNvcmVTZXR0aW5nczIxU2V0QXV0b1JlZnJlc2hFbmFibGVkRWkgQCA3OSBOT05BTUUNCi0J
X1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRTYXZlUmF3RGF0YUVuYWJsZWRFaSBAIDgwIE5PTkFN
RQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldFN0YW5kYXJkRm9udEZhbWlseUVSSzdURGVz
QzE2IEAgODEgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIyU2V0RGVmYXVsdFRleHRF
bmNvZGluZ0VSSzdURGVzQzE2IEAgODIgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIy
U2V0U2Fuc1NlcmlmRm9udEZhbWlseUVSSzdURGVzQzE2IEAgODMgTk9OQU1FDQotCV9aTjE2Q1dl
YkNvcmVTZXR0aW5nczIzU2V0RGVmYXVsdEZpeGVkRm9udFNpemVFaSBAIDg0IE5PTkFNRQ0KLQlf
Wk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldE1pbmltdW1Mb2dpY2FsRm9udFNpemVFaSBAIDg1IE5P
TkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFNob3VsZFByaW50QmFja2dyb3VuZHNF
aSBAIDg2IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyNVNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb25FUks3VERlc0MxNiBAIDg3IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3Mz
MFNldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUVpIEAgODggTk9OQU1FDQotCV9aTjE2Q1dl
YkNvcmVTZXR0aW5nczQwU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUVp
IEAgODkgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczROZXdMRXYgQCA5MCBOT05BTUUN
Ci0JX1pOMTZDV2ViQ29yZVNldHRpbmdzRDBFdiBAIDkxIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3Jl
U2V0dGluZ3NEMUV2IEAgOTIgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nc0QyRXYgQCA5
MyBOT05BTUUNCi0JX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjNVcmxFdiBAIDk0IE5PTkFNRQ0K
LQlfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyN0FsdFRleHRFdiBAIDk1IE5PTkFNRQ0KLQlfWk4y
MFRXZWJDb3JlSW1hZ2VDYXJyaWVyN1Jhd0RhdGFFdiBAIDk2IE5PTkFNRQ0KLQlfWk4yMFRXZWJD
b3JlSW1hZ2VDYXJyaWVyOFJlbmRlcmVyRXYgQCA5NyBOT05BTUUNCi0JX1pOMjBUV2ViQ29yZUlt
YWdlQ2FycmllcjlJbWFnZVR5cGVFdiBAIDk4IE5PTkFNRQ0KLQlfWk4yMVRXZWJDb3JlQ29va2ll
RmFjdG9yeTEzQ29va2llQWRhcHRlckV2IEAgOTkgTk9OQU1FDQotCV9aTjIxVFdlYkNvcmVDb29r
aWVGYWN0b3J5MTZTZXRDb29raWVBZGFwdGVyRVAyMU1XZWJDb3JlQ29va2llQWRhcHRlciBAIDEw
MCBOT05BTUUNCi0JX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIxM1BsdWdpbkhhbmRsZXJFdiBA
IDEwMSBOT05BTUUNCi0JX1pOMjFUV2ViQ29yZVBsdWdpbkhhbmRsZXIyM1NldFdlYkNvcmVQbHVn
aW5IYW5kbGVyRVAyMU1XZWJDb3JlUGx1Z2luSGFuZGxlciBAIDEwMiBOT05BTUUNCi0JX1pOMjND
V2ViQ29yZUdyYXBoaWNzQ29udGV4dDROZXdMRVAxNkNGYnNCaXRtYXBEZXZpY2VQMTBDRmJzQml0
bWFwUDE4TVdlYkNvcmVTY3JvbGxWaWV3IEAgMTAzIE5PTkFNRQ0KLQlfWk4yM0NXZWJDb3JlR3Jh
cGhpY3NDb250ZXh0NE5ld0xFUjlDRmJzQml0R2NQMTBDRmJzQml0bWFwUDE4TVdlYkNvcmVTY3Jv
bGxWaWV3IEAgMTA0IE5PTkFNRQ0KLQlfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVyMTVMb2Fk
ZXJDb250YWluZXJFdiBAIDEwNSBOT05BTUUNCi0JX1pOMjNUV2ViQ29yZUxvYWRlckNvbnRhaW5l
cjI1U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5lckVQMjNNV2ViQ29yZUxvYWRlckNvbnRhaW5lciBA
IDEwNiBOT05BTUUNCi0JX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTI4U2V0V2ViQ29y
ZUZvcm1Db250cm9sRmFjdG9yeUVQMjZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSBAIDEwNyBO
T05BTUUNCi0JX1pOMjZUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeTdGYWN0b3J5RXYgQCAxMDgg
Tk9OQU1FDQotCV9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5MjlTZXRXZWJDb3JlVGV4
dFJlbmRlcmVyRmFjdG9yeUVQMjdNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkgQCAxMDkgTk9O
QU1FDQotCV9aTjI3VFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5N0ZhY3RvcnlFdiBAIDExMCBO
T05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTFTZXRDYWxsYmFja0VQ
TjVraHRtbDE5Q2FjaGVkSW1hZ2VDYWxsYmFja0UgQCAxMTEgTk9OQU1FDQotCV9aTjI4Q1dlYkNv
cmVJbWFnZUNhbGxiYWNrV3JhcHBlcjEyTm90aWZ5VXBkYXRlRXYgQCAxMTIgTk9OQU1FDQotCV9a
TjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjE0Tm90aWZ5RmluaXNoZWRFdiBAIDExMyBO
T05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTlOb3RpZnlEZWNvZGlu
Z0Vycm9yRXYgQCAxMTQgTk9OQU1FDQotCV9aTjI4VFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9y
eTMwU2V0V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5RVAyOE1XZWJDb3JlSW1hZ2VSZW5kZXJl
ckZhY3RvcnkgQCAxMTUgTk9OQU1FDQotCV9aTjI4VFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9y
eTdGYWN0b3J5RXYgQCAxMTYgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTBJc0ZyYW1l
U2V0RXYgQCAxMTcgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTBSZW5kZXJQYXJ0RXYg
QCAxMTggTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTFOZWVkc0xheW91dEV2IEAgMTE5
IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTEyQ2FuQ2FjaGVQYWdlRXYgQCAxMjAgTk9O
QU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTJUZXh0RW5jb2RpbmdFdiBAIDEyMSBOT05BTUUN
Ci0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxNkhhc1BlbmRpbmdMYXlvdXRFdiBAIDEyMiBOT05BTUUN
Ci0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxOFNob3dpbmdGYXN0UHJldmlld0V2IEAgMTIzIE5PTkFN
RQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTIwRmFzdEZpcnN0RGlzcGxheU1vZGVFdiBAIDEyNCBO
T05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyMEdldFVybE9mTm9kZUluRm9jdXNMRVI2VFBv
aW50IEAgMTI1IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTI0TmF2aWdhYmxlTm9kZVVu
ZGVyQ3Vyc29yRVI2VFBvaW50UjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVSNVRSZWN0IEAg
MTI2IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTNVUkxFdiBAIDEyNyBOT05BTUUNCi0J
X1pOSzE0Q1dlYkNvcmVCcmlkZ2U0TmFtZUV2IEAgMTI4IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29y
ZUJyaWRnZTZEb21haW5FdiBAIDEyOSBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2U4UmVm
ZXJyZXJFdiBAIDEzMCBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczExSmF2YUVuYWJs
ZWRFdiBAIDEzMSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE0UGx1Z2luc0VuYWJs
ZWRFdiBAIDEzMiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1RGVmYXVsdEZvbnRT
aXplRXYgQCAxMzMgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNUZpeGVkRm9udEZh
bWlseUV2IEAgMTM0IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVNaW5pbXVtRm9u
dFNpemVFdiBAIDEzNSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1U2VyaWZGb250
RmFtaWx5RXYgQCAxMzYgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0N1cnNpdmVG
b250RmFtaWx5RXYgQCAxMzcgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0ZhbnRh
c3lGb250RmFtaWx5RXYgQCAxMzggTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MxN0ph
dmFTY3JpcHRFbmFibGVkRXYgQCAxMzkgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3Mx
OEF1dG9SZWZyZXNoRW5hYmxlZEV2IEAgMTQwIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRp
bmdzMThTYXZlUmF3RGF0YUVuYWJsZWRFdiBAIDE0MSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVT
ZXR0aW5nczE4U3RhbmRhcmRGb250RmFtaWx5RXYgQCAxNDIgTk9OQU1FDQotCV9aTksxNkNXZWJD
b3JlU2V0dGluZ3MxOURlZmF1bHRUZXh0RW5jb2RpbmdFdiBAIDE0MyBOT05BTUUNCi0JX1pOSzE2
Q1dlYkNvcmVTZXR0aW5nczE5U2Fuc1NlcmlmRm9udEZhbWlseUV2IEAgMTQ0IE5PTkFNRQ0KLQlf
Wk5LMTZDV2ViQ29yZVNldHRpbmdzMjBEZWZhdWx0Rml4ZWRGb250U2l6ZUV2IEAgMTQ1IE5PTkFN
RQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJNaW5pbXVtTG9naWNhbEZvbnRTaXplRXYgQCAx
NDYgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMlNob3VsZFByaW50QmFja2dyb3Vu
ZHNFdiBAIDE0NyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIyVXNlclN0eWxlU2hl
ZXRMb2NhdGlvbkV2IEAgMTQ4IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjdXaWxs
TG9hZEltYWdlc0F1dG9tYXRpY2FsbHlFdiBAIDE0OSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVT
ZXR0aW5nczM3SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUV2IEAgMTUwIE5P
TkFNRQ0KLQlfWlRJMTRDV2ViQ29yZUJyaWRnZSBAIDE1MSBOT05BTUUgOyAjPFRJPiMNCi0JX1pU
STE2Q1dlYkNvcmVTZXR0aW5ncyBAIDE1MiBOT05BTUUgOyAjPFRJPiMNCi0JX1pUSTIwQ1dlYkNv
cmVQYWdlRGF0YUl0ZW0gQCAxNTMgTk9OQU1FIDsgIzxUST4jDQotCV9aVEkyM0NXZWJDb3JlR3Jh
cGhpY3NDb250ZXh0IEAgMTU0IE5PTkFNRSA7ICM8VEk+Iw0KLQlfWlRWMTRDV2ViQ29yZUJyaWRn
ZSBAIDE1NSBOT05BTUUgOyAjPFZUPiMNCi0JX1pUVjE2Q1dlYkNvcmVTZXR0aW5ncyBAIDE1NiBO
T05BTUUgOyAjPFZUPiMNCi0JX1pUVjIwQ1dlYkNvcmVQYWdlRGF0YUl0ZW0gQCAxNTcgTk9OQU1F
IDsgIzxWVD4jDQotCV9aVFYyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgMTU4IE5PTkFNRSA7
ICM8VlQ+Iw0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTdHZXRSZW5kZXJUZXh0QXJlYUVSSzdURGVz
QzE2UjZSQXJyYXlJNVRSZWN0RSBAIDE1OSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTMx
R2V0TmV4dFJlbmRlclRleHRGb3JTbWFydExpbmtzTEVSaSBAIDE2MCBOT05BTUUNCisgICAgX1pO
MTNUV2ViQ29yZUNhY2hlMTVBZGRJdGVtVG9DYWNoZUxFUjI5TVdlYkNvcmVVcmxSZXNwb25zZUhl
YWRlckluZm9SNlREZXNDOGkgQCAxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTBJ
bWFnZUNvdW50RWkgQCAyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTBMb2FkSW1h
Z2VzRXYgQCAzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTFSZXNvbHZlVXJsTEVS
SzdURGVzQzE2UzJfIEAgNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTExU2VhcmNo
QWdhaW5FUks3VERlc0MxNmlpaSBAIDUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
MkRlZmVyc1RpbWVyc0V2IEAgNiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEyR2V0
UGFnZURhdGFMRWkgQCA3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTJJbWFnZXNJ
blJlY3RFaSBAIDggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMlBvaW50ZXJFdmVu
dEUxM1RQb2ludGVyRXZlbnQgQCA5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTJQ
b2ludGVyRXZlbnRFTjEzVFBvaW50ZXJFdmVudDVUVHlwZUVSSzZUUG9pbnQgQCAxMCBOT05BTUUN
CisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEzQWN0aXZhdGVFdmVudEVSNlRQb2ludCBAIDExIE5P
TkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNBZGRUb0NvbnRhY3RzRVI2VFBvaW50IEAg
MTIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0RpZE5vdE9wZW5VUkxFUks3VERl
c0MxNiBAIDEzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNFeGVjdXRlU2NyaXB0
RVJLN1REZXNDMTYgQCAxNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEzU2V0UmVu
ZGVyUGFydEVQTjVraHRtbDEwUmVuZGVyUGFydEUgQCAxNSBOT05BTUUNCisgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTE0QWRqdXN0Vmlld1NpemVFdiBAIDE2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJD
b3JlQnJpZGdlMTREdW1wUmVuZGVyVHJlZUV2IEAgMTcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2UxNEluc3RhbGxJbkZyYW1lRVIxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDE4IE5PTkFN
RQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRQcmVwYXJlRm9yRXhpdEV2IEAgMTkgTk9OQU1F
DQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFJlbW92ZUZpbGVOYW1lRVI2VFBvaW50IEAgMjAg
Tk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNjcm9sbFRvQW5jaG9yRVJLN1REZXND
MTYgQCAyMSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2VsZWN0aW9uQ29sb3JF
diBAIDIyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRTZXROZWVkc0xheW91dEV2
IEAgMjMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFVwZGF0ZUFsbFZpZXdzRXYg
QCAyNCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE1Q3JlYXRlS0hUTUxWaWV3RVIx
OE1XZWJDb3JlU2Nyb2xsVmlld2lpIEAgMjUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxNURlQWN0aXZhdGVFdmVudEVpIEAgMjYgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxNUZpbmRMaW5rc09mVHlwZUVSSzdURGVzQzE2UjZSQXJyYXlJMTZUV2ViQ29yZUxpbmtJdGVt
RSBAIDI3IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVHZXRUZXh0Q29udGVudExF
diBAIDI4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVKdW1wVG9TZWxlY3Rpb25F
diBAIDI5IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVSZW1vdmVGcm9tRnJhbWVF
diBAIDMwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kUmVzaXplRXZlbnRF
diBAIDMxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZW5kU2Nyb2xsRXZlbnRF
diBAIDMyIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXREZWZlcnNUaW1lcnNF
aSBAIDMzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVTZXRNYXhCaWRpV2lkdGhF
aSBAIDM0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTZTZXRGb250U2l6ZUxldmVs
RWkgQCAzNSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE2VGFiYmVkTmF2aWdhdGlv
bkUxNlRXZWJOYXZEaXJlY3Rpb25SMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZWkgQCAzNiBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE3U2F2ZURvY3VtZW50U3RhdGVFdiBAIDM3
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMThBY3RpdmF0ZUFjY2Vzc0tleXNFOVRL
ZXlFdmVudCBAIDM4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMThJbml0aWFsaXpl
U2V0dGluZ3NFUksxNkNXZWJDb3JlU2V0dGluZ3MgQCAzOSBOT05BTUUNCisgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTE4U2V0RHJhd3NCYWNrZ3JvdW5kRWkgQCA0MCBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTE5Qm9keUJhY2tncm91bmRDb2xvckV2IEAgNDEgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UyMFJlc3RvcmVEb2N1bWVudFN0YXRlRXYgQCA0MiBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIwU2NhbGluZ0ZhY3RvckNoYW5nZWRFaSBAIDQzIE5PTkFN
RQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjFTY3JvbGxUb0FuY2hvcldpdGhVUkxFUks3VERl
c0MxNiBAIDQ0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjFTaG91bGRDcmVhdGVS
ZW5kZXJlcnNFdiBAIDQ1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjFVUkxXaXRo
UmVsYXRpdmVTdHJpbmdFUks3VERlc0MxNiBAIDQ2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMjJQcm92aXNpb25hbExvYWRTdGFydGVkRXYgQCA0NyBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTIzRGV0ZXJtaW5lQ3Vyc29yUG9zaXRpb25FUjI2VFdlYkNvcmVGb2N1c2Vk
RWxlbWVudFR5cGVSNVRSZWN0UzNfUjZUUG9pbnRpIEAgNDggTk9OQU1FDQorICAgIF9aTjE0Q1dl
YkNvcmVCcmlkZ2UyM1NldEZhc3RGaXJzdERpc3BsYXlNb2RlRWkgQCA0OSBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lRVJLN1REZXNDMTZT
Ml8gQCA1MCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0U2hvdWxkQ3JlYXRl
UmVuZGVyZXJzRWkgQCA1MSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI2Q3JlYXRl
RG9jdW1lbnRXaXRoRW5jb2RpbmdFUks3VERlc0MxNmkgQCA1MiBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTI2UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGVFMThUV2ViQ29yZURldmlj
ZVR5cGUgQCA1MyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI3TnVtUGVuZGluZ09y
TG9hZGluZ1JlcXVlc3RzRXYgQCA1NCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTI4
Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUVpIEAgNTUgTk9OQU1FDQorICAgIF9aTjE0Q1dl
YkNvcmVCcmlkZ2UzRW5kRXYgQCA1NiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTRO
ZXdMRVIxNk1XZWJDbGllbnRCcmlkZ2UgQCA1NyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTZDbGllbnRFdiBAIDU4IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlN0FkZERh
dGFFUks2VERlc0M4IEAgNTkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U3T3BlblVS
TEVSSzdURGVzQzE2aVMyX1MyX1JLOVREYXRlVGltZSBAIDYwIE5PTkFNRQ0KKyAgICBfWk4xNENX
ZWJDb3JlQnJpZGdlN1NldE5hbWVFUks3VERlc0MxNiBAIDYxIE5PTkFNRQ0KKyAgICBfWk4xNENX
ZWJDb3JlQnJpZGdlOENsb3NlVVJMRXYgQCA2MiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZThEcmF3UmVjdEVSSzVUUmVjdFIyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgNjMgTk9O
QU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U4S2V5RXZlbnRFOVRLZXlFdmVudGkgQCA2NCBO
T05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTlDbGVhckZpbmRFdiBAIDY1IE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlOVNlYXJjaEZvckVSSzdURGVzQzE2aWlpIEAgNjYgTk9O
QU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U5U2V0UGFyZW50RVBTXyBAIDY3IE5PTkFNRQ0K
KyAgICBfWk4xNVRXZWJDb3JlSGlzdG9yeTE1SGlzdG9yeVByb3ZpZGVyRXYgQCA2OCBOT05BTUUN
CisgICAgX1pOMTVUV2ViQ29yZUhpc3RvcnkxOFNldEhpc3RvcnlQcm92aWRlckVQMjNNV2ViQ29y
ZUhpc3RvcnlQcm92aWRlciBAIDY5IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3Mx
NFNldEphdmFFbmFibGVkRWkgQCA3MCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdz
MTdTZXRQbHVnaW5zRW5hYmxlZEVpIEAgNzEgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0
aW5nczE4U2V0RGVmYXVsdEZvbnRTaXplRWkgQCA3MiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMThTZXRGaXhlZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDczIE5PTkFNRQ0KKyAg
ICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldE1pbmltdW1Gb250U2l6ZUVpIEAgNzQgTk9OQU1F
DQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0U2VyaWZGb250RmFtaWx5RVJLN1REZXND
MTYgQCA3NSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBTZXRDdXJzaXZlRm9u
dEZhbWlseUVSSzdURGVzQzE2IEAgNzYgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5n
czIwU2V0RmFudGFzeUZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc3IE5PTkFNRQ0KKyAgICBfWk4x
NkNXZWJDb3JlU2V0dGluZ3MyMFNldEphdmFTY3JpcHRFbmFibGVkRWkgQCA3OCBOT05BTUUNCisg
ICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRBdXRvUmVmcmVzaEVuYWJsZWRFaSBAIDc5IE5P
TkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldFNhdmVSYXdEYXRhRW5hYmxlZEVp
IEAgODAgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0U3RhbmRhcmRGb250
RmFtaWx5RVJLN1REZXNDMTYgQCA4MSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdz
MjJTZXREZWZhdWx0VGV4dEVuY29kaW5nRVJLN1REZXNDMTYgQCA4MiBOT05BTUUNCisgICAgX1pO
MTZDV2ViQ29yZVNldHRpbmdzMjJTZXRTYW5zU2VyaWZGb250RmFtaWx5RVJLN1REZXNDMTYgQCA4
MyBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjNTZXREZWZhdWx0Rml4ZWRGb250
U2l6ZUVpIEAgODQgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0TWluaW11
bUxvZ2ljYWxGb250U2l6ZUVpIEAgODUgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5n
czI1U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0VpIEAgODYgTk9OQU1FDQorICAgIF9aTjE2Q1dl
YkNvcmVTZXR0aW5nczI1U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSSzdURGVzQzE2IEAgODcg
Tk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczMwU2V0V2lsbExvYWRJbWFnZXNBdXRv
bWF0aWNhbGx5RWkgQCA4OCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzNDBTZXRK
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RWkgQCA4OSBOT05BTUUNCisgICAg
X1pOMTZDV2ViQ29yZVNldHRpbmdzNE5ld0xFdiBAIDkwIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJD
b3JlU2V0dGluZ3NEMEV2IEAgOTEgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nc0Qx
RXYgQCA5MiBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzRDJFdiBAIDkzIE5PTkFN
RQ0KKyAgICBfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyM1VybEV2IEAgOTQgTk9OQU1FDQorICAg
IF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI3QWx0VGV4dEV2IEAgOTUgTk9OQU1FDQorICAgIF9a
TjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI3UmF3RGF0YUV2IEAgOTYgTk9OQU1FDQorICAgIF9aTjIw
VFdlYkNvcmVJbWFnZUNhcnJpZXI4UmVuZGVyZXJFdiBAIDk3IE5PTkFNRQ0KKyAgICBfWk4yMFRX
ZWJDb3JlSW1hZ2VDYXJyaWVyOUltYWdlVHlwZUV2IEAgOTggTk9OQU1FDQorICAgIF9aTjIxVFdl
YkNvcmVDb29raWVGYWN0b3J5MTNDb29raWVBZGFwdGVyRXYgQCA5OSBOT05BTUUNCisgICAgX1pO
MjFUV2ViQ29yZUNvb2tpZUZhY3RvcnkxNlNldENvb2tpZUFkYXB0ZXJFUDIxTVdlYkNvcmVDb29r
aWVBZGFwdGVyIEAgMTAwIE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3JlUGx1Z2luSGFuZGxlcjEz
UGx1Z2luSGFuZGxlckV2IEAgMTAxIE5PTkFNRQ0KKyAgICBfWk4yMVRXZWJDb3JlUGx1Z2luSGFu
ZGxlcjIzU2V0V2ViQ29yZVBsdWdpbkhhbmRsZXJFUDIxTVdlYkNvcmVQbHVnaW5IYW5kbGVyIEAg
MTAyIE5PTkFNRQ0KKyAgICBfWk4yM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0NE5ld0xFUDE2Q0Zi
c0JpdG1hcERldmljZVAxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxMDMgTk9O
QU1FDQorICAgIF9aTjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0TmV3TEVSOUNGYnNCaXRHY1Ax
MENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxMDQgTk9OQU1FDQorICAgIF9aTjIz
VFdlYkNvcmVMb2FkZXJDb250YWluZXIxNUxvYWRlckNvbnRhaW5lckV2IEAgMTA1IE5PTkFNRQ0K
KyAgICBfWk4yM1RXZWJDb3JlTG9hZGVyQ29udGFpbmVyMjVTZXRXZWJDb3JlTG9hZGVyQ29udGFp
bmVyRVAyM01XZWJDb3JlTG9hZGVyQ29udGFpbmVyIEAgMTA2IE5PTkFNRQ0KKyAgICBfWk4yNlRX
ZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5MjhTZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5RVAy
Nk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5IEAgMTA3IE5PTkFNRQ0KKyAgICBfWk4yNlRXZWJD
b3JlRm9ybUNvbnRyb2xGYWN0b3J5N0ZhY3RvcnlFdiBAIDEwOCBOT05BTUUNCisgICAgX1pOMjdU
V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkyOVNldFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5
RVAyN01XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSBAIDEwOSBOT05BTUUNCisgICAgX1pOMjdU
V2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTEwIE5PTkFNRQ0KKyAgICBf
Wk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxMVNldENhbGxiYWNrRVBONWtodG1sMTlD
YWNoZWRJbWFnZUNhbGxiYWNrRSBAIDExMSBOT05BTUUNCisgICAgX1pOMjhDV2ViQ29yZUltYWdl
Q2FsbGJhY2tXcmFwcGVyMTJOb3RpZnlVcGRhdGVFdiBAIDExMiBOT05BTUUNCisgICAgX1pOMjhD
V2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTROb3RpZnlGaW5pc2hlZEV2IEAgMTEzIE5PTkFN
RQ0KKyAgICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxOU5vdGlmeURlY29kaW5n
RXJyb3JFdiBAIDExNCBOT05BTUUNCisgICAgX1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0
b3J5MzBTZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlFUDI4TVdlYkNvcmVJbWFnZVJlbmRl
cmVyRmFjdG9yeSBAIDExNSBOT05BTUUNCisgICAgX1pOMjhUV2ViQ29yZUltYWdlUmVuZGVyZXJG
YWN0b3J5N0ZhY3RvcnlFdiBAIDExNiBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2Ux
MElzRnJhbWVTZXRFdiBAIDExNyBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMFJl
bmRlclBhcnRFdiBAIDExOCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMU5lZWRz
TGF5b3V0RXYgQCAxMTkgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMTJDYW5DYWNo
ZVBhZ2VFdiBAIDEyMCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMlRleHRFbmNv
ZGluZ0V2IEAgMTIxIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTE2SGFzUGVuZGlu
Z0xheW91dEV2IEAgMTIyIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZTE4U2hvd2lu
Z0Zhc3RQcmV2aWV3RXYgQCAxMjMgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlMjBG
YXN0Rmlyc3REaXNwbGF5TW9kZUV2IEAgMTI0IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJy
aWRnZTIwR2V0VXJsT2ZOb2RlSW5Gb2N1c0xFUjZUUG9pbnQgQCAxMjUgTk9OQU1FDQorICAgIF9a
TksxNENXZWJDb3JlQnJpZGdlMjROYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3JFUjZUUG9pbnRSMjZU
V2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZVI1VFJlY3QgQCAxMjYgTk9OQU1FDQorICAgIF9aTksx
NENXZWJDb3JlQnJpZGdlM1VSTEV2IEAgMTI3IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJy
aWRnZTROYW1lRXYgQCAxMjggTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlNkRvbWFp
bkV2IEAgMTI5IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRnZThSZWZlcnJlckV2IEAg
MTMwIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTFKYXZhRW5hYmxlZEV2IEAg
MTMxIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTRQbHVnaW5zRW5hYmxlZEV2
IEAgMTMyIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVEZWZhdWx0Rm9udFNp
emVFdiBAIDEzMyBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1Rml4ZWRGb250
RmFtaWx5RXYgQCAxMzQgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNU1pbmlt
dW1Gb250U2l6ZUV2IEAgMTM1IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVT
ZXJpZkZvbnRGYW1pbHlFdiBAIDEzNiBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5n
czE3Q3Vyc2l2ZUZvbnRGYW1pbHlFdiBAIDEzNyBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVT
ZXR0aW5nczE3RmFudGFzeUZvbnRGYW1pbHlFdiBAIDEzOCBOT05BTUUNCisgICAgX1pOSzE2Q1dl
YkNvcmVTZXR0aW5nczE3SmF2YVNjcmlwdEVuYWJsZWRFdiBAIDEzOSBOT05BTUUNCisgICAgX1pO
SzE2Q1dlYkNvcmVTZXR0aW5nczE4QXV0b1JlZnJlc2hFbmFibGVkRXYgQCAxNDAgTk9OQU1FDQor
ICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOFNhdmVSYXdEYXRhRW5hYmxlZEV2IEAgMTQxIE5P
TkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThTdGFuZGFyZEZvbnRGYW1pbHlFdiBA
IDE0MiBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE5RGVmYXVsdFRleHRFbmNv
ZGluZ0V2IEAgMTQzIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTlTYW5zU2Vy
aWZGb250RmFtaWx5RXYgQCAxNDQgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3My
MERlZmF1bHRGaXhlZEZvbnRTaXplRXYgQCAxNDUgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3Jl
U2V0dGluZ3MyMk1pbmltdW1Mb2dpY2FsRm9udFNpemVFdiBAIDE0NiBOT05BTUUNCisgICAgX1pO
SzE2Q1dlYkNvcmVTZXR0aW5nczIyU2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0V2IEAgMTQ3IE5PTkFN
RQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJVc2VyU3R5bGVTaGVldExvY2F0aW9uRXYg
QCAxNDggTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MyN1dpbGxMb2FkSW1hZ2Vz
QXV0b21hdGljYWxseUV2IEAgMTQ5IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MzdKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5RXYgQCAxNTAgTk9OQU1FDQor
ICAgIF9aVEkxNENXZWJDb3JlQnJpZGdlIEAgMTUxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
MTZDV2ViQ29yZVNldHRpbmdzIEAgMTUyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJMjBDV2Vi
Q29yZVBhZ2VEYXRhSXRlbSBAIDE1MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSTIzQ1dlYkNv
cmVHcmFwaGljc0NvbnRleHQgQCAxNTQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVFYxNENXZWJD
b3JlQnJpZGdlIEAgMTU1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWMTZDV2ViQ29yZVNldHRp
bmdzIEAgMTU2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWMjBDV2ViQ29yZVBhZ2VEYXRhSXRl
bSBAIDE1NyBOT05BTUUgOyAjPFZUPiMNCisgICAgICAgIF9aVFYyM0NXZWJDb3JlR3JhcGhpY3ND
b250ZXh0IEAgMTU4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICAgICAgX1pOMTRDV2ViQ29yZUJyaWRn
ZTE3R2V0UmVuZGVyVGV4dEFyZWFFUks3VERlc0MxNlI2UkFycmF5STVUUmVjdEUgQCAxNTkgTk9O
QU1FDQorICAgICAgICBfWk4xNENXZWJDb3JlQnJpZGdlMzFHZXROZXh0UmVuZGVyVGV4dEZvclNt
YXJ0TGlua3NMRVJpIEAgMTYwIE5PTkFNRQ0KKyAgICAgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIw
V2luZG93U2NyaXB0TlBPYmplY3RFdiBAIDE2MSBOT05BTUUNCiANCkluZGV4OiBXZWJDb3JlL2Jy
aWRnZS9XZWJDb3JlQnJpZGdlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL1dl
YkNvcmVCcmlkZ2UuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2JyaWRnZS9XZWJD
b3JlQnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTE2NSw3ICsxNjUsNyBAQCBDV2ViQ29y
ZUJyaWRnZTo6fkNXZWJDb3JlQnJpZGdlKCkNCiAgICAgfQ0KICAgICBpUGFydC0+c2V0QnJpZGdl
KDApOw0KICAgICBpUGFydC0+ZGVyZWYoKTsNCi0gICAgDQorDQogICAgIGRlbGV0ZSBpU21hcnRU
ZXh0QnVmZmVyOw0KICAgICB9DQogDQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6Ok9wZW5VUkwoY29uc3QgVERlc0MNCiBFWFBPUlRfQw0KIHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nKGNvbnN0IFREZXNDJiBhRW5jb2RpbmcsIFRC
b29sIGFVc2VyQ2hvc2VuKQ0KIHsNCi0gICAgaVNtYXJ0TGlua05vZGUgPSBOVUxMOyAgICANCisg
ICAgaVNtYXJ0TGlua05vZGUgPSBOVUxMOw0KICAgICBpUGFydC0+c2V0RW5jb2RpbmcoUVN0cmlu
Zzo6RnJvbURlcyhhRW5jb2RpbmcpLCBhVXNlckNob3Nlbik7DQogICAgIENsaWVudCgpLkRvY3Vt
ZW50U3RhcnRlZCgpOw0KIH0NCkBAIC0xMzI2LDYgKzEzMjYsMTIgQEAgVFVpbnQgQ1dlYkNvcmVC
cmlkZ2U6OlRleHRFbmNvZGluZygpIGNvbg0KIA0KICovDQogRVhQT1JUX0MNCitOUE9iamVjdCog
Q1dlYkNvcmVCcmlkZ2U6OldpbmRvd1NjcmlwdE5QT2JqZWN0KCkNCit7DQorICAgIHJldHVybiBp
UGFydC0+d2luZG93U2NyaXB0TlBPYmplY3QoKTsNCit9DQorDQorRVhQT1JUX0MNCiB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpTZXROYW1lKGNvbnN0IFREZXNDJiBhTmFtZSkNCiB7DQogICAgIGlQYXJ0
LT5LSFRNTFBhcnQ6OnNldE5hbWUoUVN0cmluZzo6RnJvbURlcyhhTmFtZSkpOw0KQEAgLTE0MjYs
MTIgKzE0MzIsMTIgQEAgRVhQT1JUX0MNCiBUUHRyQyBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJl
bmRlclRleHRGb3JTbWFydExpbmtzTChUQm9vbCYgYUNvbnRpbnVlKQ0KIHsNCiANCi0gICAgaWYo
KCFpUGFydCkgfHwgKCFpUGFydC0+eG1sRG9jSW1wbCgpKSkgDQorICAgIGlmKCghaVBhcnQpIHx8
ICghaVBhcnQtPnhtbERvY0ltcGwoKSkpDQogICAgICAgICB7DQogICAgICAgICBhQ29udGludWUg
PSBFRmFsc2U7DQogICAgICAgICByZXR1cm4gVFB0ckMoKTsNCiAgICAgICAgIH0NCi0gIA0KKw0K
ICAgICBpZiAoaVNtYXJ0TGlua05vZGUgPT0gTlVMTCkNCiAgICAgICAgIHsNCiAgICAgICAgIGlT
bWFydExpbmtOb2RlID0gaVBhcnQtPnhtbERvY0ltcGwoKTsNCkBAIC0xNDQxLDEwICsxNDQ3LDEw
IEBAIFRQdHJDIENXZWJDb3JlQnJpZGdlOjpHZXROZXh0UmVuZGVyVGV4dEYNCiAgICAgICAgICAg
ICB9DQogICAgICAgICAvL2FkZCByZWYNCiAgICAgICAgIH0NCi0gICAgZWxzZSANCi0gICAgICAg
IHsgICANCisgICAgZWxzZQ0KKyAgICAgICAgew0KICAgICAgICAgRE9NOjpOb2RlSW1wbCogbm9k
ZVRlbXAgPSBpU21hcnRMaW5rTm9kZTsNCi0gICAgICAgIGlTbWFydExpbmtOb2RlID0gaVNtYXJ0
TGlua05vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsgIA0KKyAgICAgICAgaVNtYXJ0TGlua05vZGUg
PSBpU21hcnRMaW5rTm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOw0KICAgICAgICAgaWYoaVNtYXJ0
TGlua05vZGUpDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGlTbWFydExpbmtOb2RlLT5y
ZWYoKTsNCkBAIC0xNDYwLDE2ICsxNDY2LDE2IEBAIFRQdHJDIENXZWJDb3JlQnJpZGdlOjpHZXRO
ZXh0UmVuZGVyVGV4dEYNCiAgICAgICAgIGlmKGlTbWFydExpbmtOb2RlLT5yZW5kZXJlcigpLT5p
c1RleHQoKSkNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgYUNvbnRpbnVlID0gRVRydWU7
DQotICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyVGV4dCAqPihpU21hcnRMaW5rTm9kZS0+cmVuZGVyZXIoKSk7ICAgICAgICAgICANCisgICAg
ICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0
ICo+KGlTbWFydExpbmtOb2RlLT5yZW5kZXJlcigpKTsNCiAgICAgICAgICAgICBkZWxldGUgaVNt
YXJ0VGV4dEJ1ZmZlcjsNCiAgICAgICAgICAgICBpU21hcnRUZXh0QnVmZmVyID0gTlVMTDsNCi0g
ICAgICAgICAgICBpU21hcnRUZXh0QnVmZmVyID0gdGV4dFJlbmRlcmVyLT5kYXRhKCkuc3RyaW5n
KCkuRGVzKCkuQWxsb2NMKCk7ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIGlTbWFydFRl
eHRCdWZmZXIgPSB0ZXh0UmVuZGVyZXItPmRhdGEoKS5zdHJpbmcoKS5EZXMoKS5BbGxvY0woKTsN
CiAgICAgICAgICAgICByZXR1cm4gaVNtYXJ0VGV4dEJ1ZmZlci0+UHRyKCk7DQogICAgICAgICAg
ICAgfQ0KICAgICAgICAgfQ0KIA0KICAgICBET006Ok5vZGVJbXBsKiBub2RlVGVtcCA9IGlTbWFy
dExpbmtOb2RlOw0KLSAgICBpU21hcnRMaW5rTm9kZSA9IGlTbWFydExpbmtOb2RlLT50cmF2ZXJz
ZU5leHROb2RlKCk7ICAgDQorICAgIGlTbWFydExpbmtOb2RlID0gaVNtYXJ0TGlua05vZGUtPnRy
YXZlcnNlTmV4dE5vZGUoKTsNCiAgICAgaWYoaVNtYXJ0TGlua05vZGUpDQogICAgICAgICB7DQog
ICAgICAgICBpU21hcnRMaW5rTm9kZS0+cmVmKCk7DQpAQCAtMTQ3OSwxMyArMTQ4NSwxMyBAQCBU
UHRyQyBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGDQogICAgIH0NCiANCiAgICAg
YUNvbnRpbnVlID0gRUZhbHNlOw0KLSAgICByZXR1cm4gVFB0ckMoKTsgICAgDQorICAgIHJldHVy
biBUUHRyQygpOw0KIH0NCiANCiBFWFBPUlRfQw0KIHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkdldFJl
bmRlclRleHRBcmVhKGNvbnN0IFREZXNDJiBhVGV4dCwgUkFycmF5PFRSZWN0PiYgYVJlY3QpDQog
ew0KLSAgaVBhcnQtPmdldFJlbmRlclRleHRSZWN0QXJyYXkoYVRleHQsIE5vZGUoaVNtYXJ0TGlu
a05vZGUpLCBhUmVjdCk7ICAgDQorICBpUGFydC0+Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShhVGV4
dCwgTm9kZShpU21hcnRMaW5rTm9kZSksIGFSZWN0KTsNCiB9DQogDQogDQpAQCAtMjA5Myw3ICsy
MDk5LDcgQEAgQ0FycmF5UHRyPENXZWJDb3JlUGFnZURhdGFJdGVtPiogQ1dlYkNvcg0KICAgICAg
ICAgbmV3KEVMZWF2ZSkgQ0FycmF5UHRyRmxhdDxDV2ViQ29yZVBhZ2VEYXRhSXRlbT4oMTApOw0K
ICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBpdGVtQXJyYXkgKTsNCiAgICAgQ1dlYkNvcmVQYWdl
RGF0YUl0ZW0qIGRhdGFJdGVtID0gTlVMTDsNCi0gICAgDQorDQogICAgIC8vIGdldCBwYWdlIG1h
cmt1cCBkb2N1bWVudCBpZiByZXF1ZXN0ZWQNCiAgICAgaWYoYVR5cGVNYXNrICYgQ1dlYkNvcmVQ
YWdlRGF0YUl0ZW06OkVNYXJrdXApDQogICAgICAgICB7DQpAQCAtMjEwMSw4ICsyMTA3LDggQEAg
Q0FycmF5UHRyPENXZWJDb3JlUGFnZURhdGFJdGVtPiogQ1dlYkNvcg0KICAgICAgICAgZGF0YUl0
ZW0gPSBDV2ViQ29yZVBhZ2VEYXRhSXRlbTo6TmV3TChDV2ViQ29yZVBhZ2VEYXRhSXRlbTo6RU1h
cmt1cCk7DQogICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBkYXRhSXRlbSApOw0KICAgICAg
ICAgZGF0YUl0ZW0tPlNldFVybEwoaVBhcnQtPnJlcXVlc3RlZFVSTFN0cmluZygpLkRlcygpKTsN
Ci0gICAgICAgIGRhdGFJdGVtLT5TZXRDb250ZW50VHlwZUwoX0woInRleHQvaHRtbCIpKTsgICAg
ICAgICAgICAgICAgICAgICAgICANCi0gICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0TChfTCgi
dWNzLTIiKSk7IA0KKyAgICAgICAgZGF0YUl0ZW0tPlNldENvbnRlbnRUeXBlTChfTCgidGV4dC9o
dG1sIikpOw0KKyAgICAgICAgZGF0YUl0ZW0tPlNldENoYXJzZXRMKF9MKCJ1Y3MtMiIpKTsNCiAg
ICAgICAgIGRhdGFJdGVtLT5TZXREYXRhTCggcGFnZU1hcmt1cFEuRGVzKCkgKTsNCiAgICAgICAg
IGl0ZW1BcnJheS0+QXBwZW5kTChkYXRhSXRlbSk7DQogICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cCggZGF0YUl0ZW0gKTsNCkBAIC0yMTI0LDkgKzIxMzAsOSBAQCBDQXJyYXlQdHI8Q1dlYkNvcmVQ
YWdlRGF0YUl0ZW0+KiBDV2ViQ29yDQogICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UHVz
aEwoIGRhdGFJdGVtICk7DQogICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXRVcmxMKHNoZWV0
VXJsLnN0cmluZygpLkRlcygpKTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldENvbnRl
bnRUeXBlTChkU3R5bGVzaGVldC50eXBlKCkuc3RyaW5nKCkuRGVzKCkpOw0KLSAgICAgICAgICAg
ICAgICAvL0NoYXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLiAgIA0KKyAgICAgICAg
ICAgICAgICAvL0NoYXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLg0KICAgICAgICAg
ICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVjcy0yIikpOw0KLSAgICAgICAgICAg
ICAgICBkYXRhSXRlbS0+U2V0RGF0YUwoa1N0eWxlU2hlZXQtPnNoZWV0KCkuc3RyaW5nKCkuRGVz
KCkpOyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldERhdGFM
KGtTdHlsZVNoZWV0LT5zaGVldCgpLnN0cmluZygpLkRlcygpKTsNCiAgICAgICAgICAgICAgICAg
aXRlbUFycmF5LT5BcHBlbmRMKGRhdGFJdGVtICk7DQogICAgICAgICAgICAgICAgIENsZWFudXBT
dGFjazo6UG9wKCBkYXRhSXRlbSApOw0KICAgICAgICAgICAgICAgICB9DQpAQCAtMjE1Myw3ICsy
MTU5LDcgQEAgQ0FycmF5UHRyPENXZWJDb3JlUGFnZURhdGFJdGVtPiogQ1dlYkNvcg0KICAgICAg
ICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBkYXRhSXRlbSApOw0KICAgICAgICAgICAg
ICAgICBkYXRhSXRlbS0+U2V0VXJsTChzY3JpcHRVcmwuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAg
ICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVudFR5cGVMKF9MKCJhcHBsaWNhdGlvbi94LWph
dmFzY3JpcHQiKSk7DQotICAgICAgICAgICAgICAgIC8vIENoYXJzZXQgaXMgcmVxdWlyZWQgZm9y
IHNhdmVkIHBhZ2VzLiANCisgICAgICAgICAgICAgICAgLy8gQ2hhcnNldCBpcyByZXF1aXJlZCBm
b3Igc2F2ZWQgcGFnZXMuDQogICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0TChf
TCgidWNzLTIiKSk7DQogICAgICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXREYXRhTChrU2NyaXB0
LT5zY3JpcHQoKS5zdHJpbmcoKS5EZXMoKSk7DQogICAgICAgICAgICAgICAgIGl0ZW1BcnJheS0+
QXBwZW5kTChkYXRhSXRlbSk7DQpAQCAtMjg1OSwxNCArMjg2NSwxNCBAQCBFWFBPUlRfQyBUQm9v
bCBDV2ViQ29yZUJyaWRnZTo6VGFiYmVkTmF2DQogew0KICAgICBpZighaVBhcnQgfHwgIWlQYXJ0
LT54bWxEb2NJbXBsKCkpIHJldHVybiBFRmFsc2U7DQogICAgIGlmKGFJbml0aWFsaXplKSB7DQot
ICAgICAgICANCisNCiAgICAgICAgIGlmIChpUGFydC0+eG1sRG9jSW1wbCgpICYmIGlQYXJ0LT54
bWxEb2NJbXBsKCktPmZvY3VzTm9kZSgpKXsNCiAgICAgICAgICAgICBRUG9pbnQgY3AoaVBhcnQt
PnhtbERvY0ltcGwoKS0+Zm9jdXNOb2RlKCktPmdldFJlY3QoKS5jZW50ZXIoKSk7DQogICAgICAg
ICAgICAgaVBhcnQtPnNldEN1cnNvclBvc2l0aW9uKGNwKTsNCiAgICAgICAgICAgICBpUGFydC0+
dmlldygpLT5HZXREb2N1bWVudFZpZXcoKS5TZXRGb2N1cyhFVHJ1ZSk7DQogICAgICAgICAgICAg
cmV0dXJuIEVUcnVlOw0KICAgICAgICAgfQ0KLSAgICAgICAgDQorDQogICAgICAgICBRUHRyTGlz
dDxLUGFydHM6OlJlYWRPbmx5UGFydD4gY2hpbGRQYXJ0TGlzdCA9IGlQYXJ0LT5mcmFtZXMoKTsN
CiAgICAgICAgIGZvcihLUGFydHM6OlJlYWRPbmx5UGFydCogY2hpbGRQYXJ0ID0gY2hpbGRQYXJ0
TGlzdC5maXJzdCgpO2NoaWxkUGFydDtjaGlsZFBhcnQgPSBjaGlsZFBhcnRMaXN0Lm5leHQoKSl7
DQogICAgICAgICAgICAgS0hUTUxQYXJ0ICpraHRtbF9wYXJ0ID0gc3RhdGljX2Nhc3Q8S0hUTUxQ
YXJ0ICo+KGNoaWxkUGFydCk7DQpAQCAtMjg4NCw3ICsyODkwLDcgQEAgRVhQT1JUX0MgVEJvb2wg
Q1dlYkNvcmVCcmlkZ2U6OlRhYmJlZE5hdg0KICAgICAgICAgaVBhcnQtPnRhYmJlZE5hdmlnYXRp
b24oMCwxLGFFbFR5cGUsIGFJbml0aWFsaXplKTsNCiAgICAgICAgIHJldHVybiBFVHJ1ZTsNCiAg
ICAgfQ0KLSAgICANCisNCiAgICAgaW50IGxyID0gKGFEaXJlY3Rpb24gPT0gRVdlYk5hdkxlZnQp
ID8gLTEgOiAoYURpcmVjdGlvbiA9PSBFV2ViTmF2UmlnaHQpID8gMSA6IDAgOw0KICAgICBpbnQg
dGIgPSAobHIgIT0gMCkgPyAwOiAoYURpcmVjdGlvbiA9PSBFV2ViTmF2VXApID8gLTEgOiAxIDsN
CiAgICAgYm9vbCBmb3VuZCA9IGlQYXJ0LT50YWJiZWROYXZpZ2F0aW9uKGxyLHRiLGFFbFR5cGUs
YUluaXRpYWxpemUpOw0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaAkocmV2aXNpb24gMTcw
NjkpDQorKysgV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMTMzLDYgKzEzMywxMyBAQCBjbGFzcyBLV1FLSFRNTFBhcnQ7DQogY2xhc3MgS0hUTUxWaWV3
Ow0KIGNsYXNzIFJlbmRlckFyZW5hOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQor
bmFtZXNwYWNlIEtKUyB7DQorICAgIGNsYXNzIEV4ZWNTdGF0ZTsNCisgICAgY2xhc3MgT2JqZWN0
SW1wOw0KKyAgICBjbGFzcyBQcm90ZWN0ZWRWYWx1ZTsNCit9DQorI2VuZGlmIC8vUkRfQlJPV1NF
Ul9XSURHRVRTDQogbmFtZXNwYWNlIGtodG1sIHsNCiAgICAgY2xhc3MgUmVuZGVyUGFydDsNCiAg
ICAgY2xhc3MgUmVuZGVyT2JqZWN0Ow0KQEAgLTE1OSw2ICsxNjYsNyBAQCBjbGFzcyBNV2ViQ29y
ZVVybFJlc3BvbnNlSGVhZGVySW5mbzsNCiANCiBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4
dDsNCiBjbGFzcyBDV2ViQ29yZVBhZ2VEYXRhSXRlbTsNCitjbGFzcyBOUE9iamVjdDsNCiANCiB0
eXBlZGVmIGtodG1sOjpSZW5kZXJQYXJ0IEtIVE1MUmVuZGVyUGFydDsNCiANCkBAIC0yNDUsOCAr
MjUzLDggQEAgY2xhc3MgQ1dlYkNvcmVCcmlkZ2UgOiBwdWJsaWMgQ0Jhc2UNCiAgICAgICAgIElN
UE9SVF9DIFRQdHJDIFJlZmVycmVyKCkgY29uc3Q7DQogICAgICAgICBJTVBPUlRfQyBUUHRyQyBE
b21haW4oKSBjb25zdDsNCiAgICAgICAgIElNUE9SVF9DIEhCdWZDKiBHZXRUZXh0Q29udGVudEwo
KTsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICBJTVBPUlRfQyBUUHRyQyBHZXROZXh0UmVu
ZGVyVGV4dEZvclNtYXJ0TGlua3NMKFRCb29sJiBhS2VlcEdvaW5nKTsgICAgDQorDQorICAgICAg
ICBJTVBPUlRfQyBUUHRyQyBHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKFRCb29sJiBh
S2VlcEdvaW5nKTsNCiAgICAgICAgIElNUE9SVF9DIHZvaWQgR2V0UmVuZGVyVGV4dEFyZWEoY29u
c3QgVERlc0MmIGFUZXh0LCBSQXJyYXk8VFJlY3Q+JiBhUmVjdCk7DQogDQogICAgICAgICBJTVBP
UlRfQyB2b2lkIEluc3RhbGxJbkZyYW1lKE1XZWJDb3JlU2Nyb2xsVmlldyYgYVZpZXcpOw0KQEAg
LTQ0Miw2ICs0NTAsNyBAQCBjbGFzcyBDV2ViQ29yZUJyaWRnZSA6IHB1YmxpYyBDQmFzZQ0KICAg
ICAgICAgLy92b2lkIGVuc3VyZUNhcmV0VmlzaWJsZTsNCiANCiAgICAgICAgIC8vLSAoV2ViU2Ny
aXB0T2JqZWN0ICopd2luZG93U2NyaXB0T2JqZWN0Ow0KKyAgICAgICAgSU1QT1JUX0MgTlBPYmpl
Y3QqIFdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7DQogDQogICAgICAgICAvLy0gKE5TRHJhZ09wZXJh
dGlvbilkcmFnT3BlcmF0aW9uRm9yRHJhZ2dpbmdJbmZvKGlkIDxOU0RyYWdnaW5nSW5mbz4paW5m
bzsNCiAgICAgICAgIC8vdm9pZCBkcmFnRXhpdGVkV2l0aERyYWdnaW5nSW5mbyhpZCA8TlNEcmFn
Z2luZ0luZm8+KWluZm87DQpAQCAtNTEyLDExICs1MjEsMTEgQEAgY2xhc3MgQ1dlYkNvcmVCcmlk
Z2UgOiBwdWJsaWMgQ0Jhc2UNCiAgICAgICAgIFRCb29sIGlTaG91bGRDcmVhdGVSZW5kZXJlcnM7
DQogICAgICAgICAvLyBwb2ludGVyIHRvIHRoZSBjbGllbnQgc2lkZSBicmlkZ2UgaW50ZXJmYWNl
DQogICAgICAgICBNV2ViQ2xpZW50QnJpZGdlKiBpQ2xpZW50QnJpZGdlOw0KLSAgICAgICAgLy9w
b2ludGVyIGZvciByZW5kZXIgdGV4dCBvYmplY3QgZm9yIHNtYXJ0IGxpbmsgcGFyc2luZyANCisg
ICAgICAgIC8vcG9pbnRlciBmb3IgcmVuZGVyIHRleHQgb2JqZWN0IGZvciBzbWFydCBsaW5rIHBh
cnNpbmcNCiAgICAgICAgIERPTTo6Tm9kZUltcGwqIGlTbWFydExpbmtOb2RlOw0KICAgICAgICAg
Ly9wb2ludGVyIGZvciBzbWFydCB0ZXh0IGJ1ZmZlcg0KICAgICAgICAgSEJ1ZkMqIGlTbWFydFRl
eHRCdWZmZXI7DQotICAgICAgICANCisNCiAgICAgfTsNCiANCiANCkBAIC02MTQsNyArNjIzLDcg
QEAgcHVibGljOg0KICAgICB2aXJ0dWFsIFRCb29sIERlZmVyc0xvYWRpbmcoKSA9IDA7DQogICAg
IHZpcnR1YWwgdm9pZCBTZXREZWZlcnNMb2FkaW5nKFRCb29sIGFMb2FkaW5nKSA9IDA7DQogDQot
ICAgIHZpcnR1YWwgdm9pZCBTYXZlRm9ybURhdGEoY29uc3QgQ0FycmF5UHRyRmxhdDxDV2ViQ29y
ZUZvcm1EYXRhRWxlbWVudD4mIGFGb3JtRGF0YSkgPSAwOyANCisgICAgdmlydHVhbCB2b2lkIFNh
dmVGb3JtRGF0YShjb25zdCBDQXJyYXlQdHJGbGF0PENXZWJDb3JlRm9ybURhdGFFbGVtZW50PiYg
YUZvcm1EYXRhKSA9IDA7DQogDQogICAgIHZpcnR1YWwgdm9pZCBTYXZlRG9jdW1lbnRTdGF0ZShj
b25zdCBUQXJyYXk8VFB0ckM+JiBhRG9jdW1lbnRTdGF0ZSkgPSAwOw0KICAgICB2aXJ0dWFsIFRB
cnJheTxUUHRyQz4qIERvY3VtZW50U3RhdGUoKSBjb25zdCA9IDA7DQpAQCAtNzE3LDYgKzcyNiwx
MCBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgdm9pZCBTZXRGb3JtQ29udHJvbFRleHRCeU5hbWUo
Y29uc3QgVERlc0MmIGFOYW1lLCBjb25zdCBURGVzQyYgYVZhbHVlKSA9IDA7DQogDQogICAgIHZp
cnR1YWwgVEJvb2wgQ2FuY2VsSW5Qcm9ncmVzcygpID0gMDsNCisNCisjaWZkZWYgIFJEX0JST1dT
RVJfV0lER0VUUw0KKyAgICB2aXJ0dWFsIHZvaWQqIGNyZWF0ZVdpZGdldE9iamVjdCh2b2lkKiBl
eGVjKSA9IDA7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogfTsNCiANCiAjZW5kaWYg
ICAgICAvLyBXRUJDT1JFQlJJREdFX0gNCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlV2lk
Z2V0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlV2lkZ2V0LmgJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVXaWRnZXQuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ7
DQogDQogDQogLyoqDQotKiAgaW50ZXJmYWNlLCB1c2VkIGJ5IHdpZGdldCBjbGFzc2VzIA0KKyog
IGludGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3Nlcw0KICogIEBsaWIgd2ViY29yZS5saWIN
CiAqICBAc2luY2UgMy4xDQogKi8NCkBAIC02NCw5ICs2NCw5IEBAIGNsYXNzIE1XZWJDb3JlV2lk
Z2V0DQogICB7DQogICBwdWJsaWM6DQogDQotICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0JiAvKmFHYyovLCANCisgICAgdmlydHVhbCB2b2lkIERyYXcoQ1dlYkNv
cmVHcmFwaGljc0NvbnRleHQmIC8qYUdjKi8sDQogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRSZWN0JiAvKmFSZWN0Ki8pID0gMDsNCi0gICAgDQorDQogICAgIHZpcnR1YWwgVEJvb2wgSXNW
aXNpYmxlKCkgY29uc3QgPSAwOw0KIA0KICAgICB2aXJ0dWFsIFRSZWN0IFJlY3QoKSBjb25zdCA9
IDA7DQpAQCAtODEsMTIgKzgxLDEyIEBAIGNsYXNzIE1XZWJDb3JlV2lkZ2V0DQogDQogICAgIHZp
cnR1YWwgdm9pZCBTZXRSZWN0KGNvbnN0IFRSZWN0JiBhUmVjdCkgPSAwOw0KIA0KLSAgICB2aXJ0
dWFsIHZvaWQgQWN0aXZhdGUoKSA9IDA7ICAgIA0KLSAgICANCisgICAgdmlydHVhbCB2b2lkIEFj
dGl2YXRlKCkgPSAwOw0KKw0KICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFyZW50KCBNV2ViQ29yZVNj
cm9sbFZpZXcqIGFQYXJlbnQgKSA9ICAwOw0KIA0KICAgICB2aXJ0dWFsIHZvaWQgQ2xvc2UoKSA9
IDA7DQotICAgIA0KKw0KICAgICB2aXJ0dWFsIFRCb29sIElzU2Nyb2xsVmlldygpIGNvbnN0IHsg
cmV0dXJuIEVGYWxzZTsgfQ0KIA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFsZXR0ZShUV2ViQ29y
ZVBhbGV0dGUpIHt9DQpAQCAtOTQsMzIgKzk0LDM0IEBAIGNsYXNzIE1XZWJDb3JlV2lkZ2V0DQog
ICAgIHZpcnR1YWwgdm9pZCBTZXRPdXRsaW5lV2lkdGgoVFVpbnQ4ICkge30NCiANCiAgICAgdmly
dHVhbCB2b2lkIFNldFdyaXRpbmdEaXJlY3Rpb25SdGwoVEJvb2wpIHt9DQorDQorICAgIHZpcnR1
YWwgdm9pZCogUGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0NCiAgIH07DQog
DQogDQogLyoqDQotKiAgaW50ZXJmYWNlLCB1c2VkIGJ5IHdpZGdldCBjbGFzc2VzIA0KKyogIGlu
dGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3Nlcw0KICogIEBsaWIgd2ViY29yZS5saWINCiAq
ICBAc2luY2UgMy4xDQogKi8NCiBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXc6IHB1YmxpYyBNV2Vi
Q29yZVdpZGdldA0KICAgew0KLSAgcHVibGljOiAgICAgIA0KLSAgDQorICBwdWJsaWM6DQorDQog
ICAgIFRCb29sIElzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIEVUcnVlOyB9DQotICAgIA0K
LSAgICB2aXJ0dWFsIFRTaXplIFNpemVIaW50KCkgY29uc3QgeyByZXR1cm4gVFNpemUoKTsgfSAg
ICANCi0gICAgDQotICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJDb3JlR3JhcGhpY3NDb250ZXh0
JiAvKmFHYyovLCANCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFJlY3QmIC8qYVJlY3Qq
LykgeyB9ICAgIA0KLSAgICANCi0gICAgdmlydHVhbCB2b2lkIEludmFsaWRhdGVSZWN0KGNvbnN0
IFRSZWN0JiAvKmFSZWN0Ki8sIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJv
b2wgLyphRHJhd05vdyovKSA9IDA7ICANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisgICAgdmlydHVhbCBUU2l6ZSBT
aXplSGludCgpIGNvbnN0IHsgcmV0dXJuIFRTaXplKCk7IH0NCisNCisgICAgdmlydHVhbCB2b2lk
IERyYXcoQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQmIC8qYUdjKi8sDQorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRSZWN0JiAvKmFSZWN0Ki8pIHsgfQ0KKw0KKyAgICB2aXJ0dWFsIHZvaWQg
SW52YWxpZGF0ZVJlY3QoY29uc3QgVFJlY3QmIC8qYVJlY3QqLywNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRCb29sIC8qYURyYXdOb3cqLykgPSAwOw0KKw0KICAgICB2aXJ0dWFs
IHZvaWQgU2Nyb2xsVG8oVFBvaW50IC8qYVBvaW50Ki8pID0gMDsNCi0gICAgDQorDQogICAgIHZp
cnR1YWwgVFJlY3QgVmlzaWJsZVJlY3QoKSBjb25zdCA9IDA7DQotICAgIA0KKw0KICAgICB2aXJ0
dWFsIFRTaXplIENvbnRlbnRTaXplKCkgY29uc3QgPSAwOw0KIA0KICAgICB2aXJ0dWFsIHZvaWQg
UmVzaXplQ29udGVudChUU2l6ZSAvKmFTaXplKi8pID0gMDsNCkBAIC0xNDcsNyArMTQ5LDcgQEAg
Y2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3OiBwdWJsaWMgTVdlYkNvcg0KICAgICB2aXJ0dWFsIHZv
aWQgU2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQoVEJvb2wgLyphU3VwcHJlc3NlZCovLCBUQm9vbCAv
KmFSZXBhaW50T25VbnN1cHByZXNzKi8pID0gMDsNCiANCiAgICAgdmlydHVhbCB2b2lkIEFkZENo
aWxkKE1XZWJDb3JlV2lkZ2V0KiAvKmFDaGlsZCovLCBUSW50IC8qYVgqLyAsIFRJbnQgLyphWSov
ICkgPSAwOw0KLSAgICANCisNCiAgICAgdmlydHVhbCBUSW50IFNjYWxpbmdGYWN0b3IoKSBjb25z
dCA9IDA7DQogDQogICAgIGlubGluZSBUUG9pbnQgVG9Eb2NDb29yZHMoY29uc3QgVFBvaW50JiBh
RnJvbSkgY29uc3QNCkBAIC0xNTUsMTMgKzE1NywxMyBAQCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZp
ZXc6IHB1YmxpYyBNV2ViQ29yDQogICAgICAgICBUSW50IHogPSBTY2FsaW5nRmFjdG9yKCk7DQog
ICAgICAgICByZXR1cm4gVFBvaW50KGFGcm9tLmlYKjEwMC96LGFGcm9tLmlZKjEwMC96KTsNCiAg
ICAgICAgIH0NCi0gICAgDQorDQogICAgIGlubGluZSBUU2l6ZSBUb0RvY0Nvb3Jkcyhjb25zdCBU
U2l6ZSYgYUZyb20pIGNvbnN0DQogICAgICAgICB7DQogICAgICAgICBUSW50IHogPSBTY2FsaW5n
RmFjdG9yKCk7DQogICAgICAgICByZXR1cm4gVFNpemUoYUZyb20uaVdpZHRoKjEwMC96LGFGcm9t
LmlIZWlnaHQqMTAwL3opOw0KLSAgICAgICAgfSAgICANCi0gICAgICAgIA0KKyAgICAgICAgfQ0K
Kw0KICAgICBpbmxpbmUgVFJlY3QgVG9Eb2NDb29yZHMoY29uc3QgVFJlY3QmIGFGcm9tKSBjb25z
dA0KICAgICAgICAgew0KICAgICAgICAgcmV0dXJuIFRSZWN0KFRvRG9jQ29vcmRzKGFGcm9tLmlU
bCksVG9Eb2NDb29yZHMoYUZyb20uaUJyKSk7DQpAQCAtMTcyLDE4ICsxNzQsMTggQEAgY2xhc3Mg
TVdlYkNvcmVTY3JvbGxWaWV3OiBwdWJsaWMgTVdlYkNvcg0KICAgICAgICAgVEludCB6ID0gU2Nh
bGluZ0ZhY3RvcigpOw0KICAgICAgICAgcmV0dXJuIFRQb2ludChhRnJvbS5pWCp6LzEwMCxhRnJv
bS5pWSp6LzEwMCk7DQogICAgICAgICB9DQotICAgIA0KKw0KICAgICBpbmxpbmUgVFNpemUgVG9W
aWV3Q29vcmRzKGNvbnN0IFRTaXplJiBhRnJvbSkgY29uc3QNCiAgICAgICAgIHsNCiAgICAgICAg
IFRJbnQgeiA9IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAgIHJldHVybiBUU2l6ZShhRnJvbS5p
V2lkdGgqei8xMDAsYUZyb20uaUhlaWdodCp6LzEwMCk7DQotICAgICAgICB9ICAgIA0KLSAgICAg
ICAgDQorICAgICAgICB9DQorDQogICAgIGlubGluZSBUUmVjdCBUb1ZpZXdDb29yZHMoY29uc3Qg
VFJlY3QmIGFGcm9tKSBjb25zdA0KICAgICAgICAgew0KICAgICAgICAgcmV0dXJuIFRSZWN0KFRv
Vmlld0Nvb3JkcyhhRnJvbS5pVGwpLFRvVmlld0Nvb3JkcyhhRnJvbS5pQnIpKTsNCi0gICAgICAg
IH0gICAgDQotICAgIA0KKyAgICAgICAgfQ0KKw0KICAgICBpbmxpbmUgVEJvb2wgSXNTY2FsZWQo
KSBjb25zdCB7IHJldHVybiBTY2FsaW5nRmFjdG9yKCkhPTEwMDsgfQ0KICAgfTsNCiANCkBAIC0x
OTgsMzIgKzIwMCwzMiBAQCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXc6IHB1YmxpYyBNV2ViQ29y
DQogY2xhc3MgTVdlYkNvcmVPYmplY3RXaWRnZXQ6IHB1YmxpYyBNV2ViQ29yZVdpZGdldA0KICAg
ICB7DQogICAgIHB1YmxpYzogLy8gQ29uc3RydWN0b3IgYW5kIERlY29uc3RydXRvcg0KLSAgICAN
CisNCiAgICAgICAgIHZpcnR1YWwgfk1XZWJDb3JlT2JqZWN0V2lkZ2V0KCkge307DQotICAgIA0K
Kw0KICAgICBwdWJsaWM6IC8vIENsYXNzIE1ldGhvZHMNCi0gICAgDQorDQogICAgICAgICAvLyBP
YmplY3QvRW1iZWQgcmVsYXRlZCBtZXRob2RzDQogICAgIC8vIFJldHVybnMgRVRydWUgaWYgdGhl
IHdpZGdldCBpcyBhY3RpdmUNCiAgICAgdmlydHVhbCBUQm9vbCBJc0FjdGl2ZSgpIGNvbnN0ID0g
MDsNCi0gICAgDQorDQogICAgIC8vIERlYWN0aXZhdGVzIHRoZSBwbHVnaW4NCiAgICAgdmlydHVh
bCB2b2lkIERlQWN0aXZhdGUoKSA9IDA7DQotICAgIA0KKw0KICAgICAvLyBTZXRzIHRoZSBmb250
DQogICAgIHZpcnR1YWwgdm9pZCBTZXRGb250KENGb250KiBhRm9udCkgPSAwOw0KLSAgICANCisN
CiAgICAgLy8gU291bmRzdGFydCByZWxhdGVkIG1ldGhvZHMNCiAgICAgLy8gUGxheXMgdGhlIGNv
bnRlbnQNCiAgICAgdmlydHVhbCB2b2lkIFBsYXlQbHVnaW5Db250ZW50KGNvbnN0IFREZXNDJiBh
UmVxdWVzdFVybCkgPSAwOw0KLSAgICANCi0gICAgLy8gU3RvcHMgcGxheWluZyB0aGUgY29udGVu
dCAgICAgICAgDQorDQorICAgIC8vIFN0b3BzIHBsYXlpbmcgdGhlIGNvbnRlbnQNCiAgICAgdmly
dHVhbCB2b2lkIFN0b3BQbHVnaW5Db250ZW50KGNvbnN0IFREZXNDJiBhUmVxdWVzdFVybCkgPSAw
Ow0KLSAgICANCi0gICAgDQotICAgIC8vIHJldHVybiBFVHJ1ZSBpZiB0aGUgcGx1Z2luIGhhcyBy
ZXNpemVkIA0KKw0KKw0KKyAgICAvLyByZXR1cm4gRVRydWUgaWYgdGhlIHBsdWdpbiBoYXMgcmVz
aXplZA0KICAgICB2aXJ0dWFsIFRCb29sIEhhc1Jlc2l6ZWQoKSA9IDA7DQotICAgIA0KKw0KICAg
ICAvLyBjaGVjayBpZiB0aGUgcGx1Z2luIGlzIGFibGUgdG8gYWNjZXB0IGZvY3VzIGV2ZW50DQog
ICAgIHZpcnR1YWwgVEJvb2wgSXNGb2N1c2FibGUoKSBjb25zdCA9IDA7DQogDQpJbmRleDogV2Vi
Q29yZS9ncm91cC9LSFRNTC5tbXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2dyb3VwL0tIVE1M
Lm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9ncm91cC9LSFRNTC5tbXAJKHdvcmtp
bmcgY29weSkNCkBAIC01OSw2ICs1OSw3IEBAIFNZU1RFTUlOQ0xVREUgICAgICAgLi5ca2h0bWxc
ZWRpdGluZw0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cLg0KIFNZU1RFTUlOQ0xVREUgICAg
ICAgLi5cLi5cSmF2YVNjcmlwdENvcmVca2pzDQogU1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlxK
YXZhU2NyaXB0Q29yZVxwY3JlDQorU1lTVEVNSU5DTFVERSAgICAgICAuLlwuLlxKYXZhU2NyaXB0
Q29yZVxiaW5kaW5ncw0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cTWVtb3J5TWFuYWdlclxJ
bmMNCiAjaWZuZGVmIF9fQlJPV1NFUl9TREsNCiBTWVNURU1JTkNMVURFICAgICAgIFxTNjBcbGli
eG1sMnBhcnNlclx4bWxlbmdpbmVcaW5jXGxpYnhtbA0KSW5kZXg6IFdlYkNvcmUvZ3JvdXAvS1dR
Lm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZ3JvdXAvS1dRLm1tcAkocmV2aXNpb24gMTcw
NjkpDQorKysgV2ViQ29yZS9ncm91cC9LV1EubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNjIsNiAr
NjIsNyBAQCBTWVNURU1JTkNMVURFICAgICAuLlwuLlwuDQogU1lTVEVNSU5DTFVERSAgICAgLi5c
Li5cSmF2YVNjcmlwdENvcmUNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29y
ZVxranMNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxwY3JlDQorU1lT
VEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVcYmluZGluZ3MNCiBTWVNURU1JTkNM
VURFICAgICAuLlwuLlxNZW1vcnlNYW5hZ2VyXEluYw0KIA0KIE9QVElPTiBDVyAtcHJlZml4IHBy
YWdtYXMucHJlZg0KSW5kZXg6IFdlYkNvcmUvZ3JvdXAvV2ViQ29yZS5tbXANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2dyb3VwL1dlYkNvcmUubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJD
b3JlL2dyb3VwL1dlYkNvcmUubW1wCSh3b3JraW5nIGNvcHkpDQpAQCAtNjMsNiArNjMsNyBAQCBT
WVNURU1JTkNMVURFICAgICAgIC4uXGtodG1sXGVjbWENCiBTWVNURU1JTkNMVURFICAgICAgIC4u
XGtodG1sXGVkaXRpbmcNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxr
anMNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxwY3JlDQorU1lTVEVN
SU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVcYmluZGluZ3MNCiBTWVNURU1JTkNMVURF
ICAgICAuLlwuLlxNZW1vcnlNYW5hZ2VyXEluYw0KIA0KIA0KSW5kZXg6IFdlYkNvcmUva2h0bWwv
ZWNtYS9ranNfYmluZGluZy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEv
a2pzX2JpbmRpbmcuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEv
a2pzX2JpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzYxLDEzICszNjEsMTMgQEAgYm9v
bCBTY3JpcHRJbnRlcnByZXRlcjo6d2FzUnVuQnlVc2VyR2VzdA0KICAgcmV0dXJuIGZhbHNlOw0K
IH0NCiANCi0jaWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUw0KKyNpZiBBUFBMRV9D
SEFOR0VTDQogYm9vbCBTY3JpcHRJbnRlcnByZXRlcjo6aXNHbG9iYWxPYmplY3QoY29uc3QgVmFs
dWUgJnYpDQogew0KICAgICBpZiAodi50eXBlKCkgPT0gT2JqZWN0VHlwZSkgew0KLQlPYmplY3Qg
byA9IHYudG9PYmplY3QgKGdsb2JhbEV4ZWMoKSk7DQotCWlmIChvLmNsYXNzSW5mbygpID09ICZX
aW5kb3c6OmluZm8pDQotCSAgICByZXR1cm4gdHJ1ZTsNCisgICAgT2JqZWN0IG8gPSB2LnRvT2Jq
ZWN0IChnbG9iYWxFeGVjKCkpOw0KKyAgICBpZiAoby5jbGFzc0luZm8oKSA9PSAmV2luZG93Ojpp
bmZvKQ0KKyAgICAgICAgcmV0dXJuIHRydWU7DQogICAgIH0NCiAgICAgcmV0dXJuIGZhbHNlOw0K
IH0NCkBAIC0zODksMTEgKzM4OSwxMiBAQCB2b2lkICpTY3JpcHRJbnRlcnByZXRlcjo6Y3JlYXRl
TGFuZ3VhZ2VJDQogew0KICAgICB2b2lkICpyZXN1bHQgPSAwOw0KIA0KKyNpZiAhTk9LSUFfQ0hB
TkdFUw0KICAgICBpZiAobGFuZ3VhZ2UgPT0gQmluZGluZ3M6Okluc3RhbmNlOjpPYmplY3RpdmVD
TGFuZ3VhZ2UpDQotCXJlc3VsdCA9IGNyZWF0ZU9iamNJbnN0YW5jZUZvclZhbHVlIChleGVjLCB2
YWx1ZSwgb3JpZ2luLCBjdXJyZW50KTsNCi0NCisgICAgcmVzdWx0ID0gY3JlYXRlT2JqY0luc3Rh
bmNlRm9yVmFsdWUgKGV4ZWMsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOw0KKyNlbmRpZg0KICAg
ICBpZiAoIXJlc3VsdCkNCi0JcmVzdWx0ID0gSW50ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5z
dGFuY2VGb3JWYWx1ZSAoZXhlYywgbGFuZ3VhZ2UsIHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOw0K
KyAgICByZXN1bHQgPSBJbnRlcnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVl
IChleGVjLCBsYW5ndWFnZSwgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7DQogDQogICAgIHJldHVy
biByZXN1bHQ7DQogfQ0KSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzEsNyArMzEsNyBAQA0KICNpbmNsdWRlIDxranMvbG9va3VwLmg+DQogI2luY2x1
ZGUgPGtqcy9wcm90ZWN0Lmg+DQogDQotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5H
RVMNCisjaWYgQVBQTEVfQ0hBTkdFUw0KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1l
Lmg+DQogI2VuZGlmDQogDQpAQCAtMTQwLDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBLSlMgew0KIA0K
ICAgICBET006OkV2ZW50ICpnZXRDdXJyZW50RXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2V2dDsg
fQ0KIA0KLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTDQorI2lmIEFQUExFX0NI
QU5HRVMNCiAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2JqZWN0KGNvbnN0IFZhbHVlICZ2KTsN
CiAgICAgdmlydHVhbCBJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXJGb3JHbG9iYWxPYmplY3QgKGNv
bnN0IFZhbHVlSW1wICppbXApOw0KICAgICB2aXJ0dWFsIGJvb2wgaXNTYWZlU2NyaXB0IChjb25z
dCBJbnRlcnByZXRlciAqdGFyZ2V0KTsNCkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX2Rv
bS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2RvbS5jcHAJKHJl
dmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTQzLDcgKzQzLDcgQEANCiANCiAjaW5jbHVkZSAibWlzYy9odG1sdGFncy5o
Ig0KIA0KLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTDQorI2lmIEFQUExFX0NI
QU5HRVMNCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZV9vYmplY3QuaD4NCiAjZW5k
aWYNCiANCkBAIC01OCwyMSArNTgsMjEgQEAgdXNpbmcgRE9NOjpEb2N1bWVudEltcGw7DQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8qIFNvdXJjZSBmb3IgRE9NTm9kZVByb3RvVGFibGUuIFVzZSAi
bWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLg0KIEBiZWdpbiBET01Ob2RlUHJvdG9UYWJs
ZSAxMw0KLSAgaW5zZXJ0QmVmb3JlCURPTU5vZGU6Okluc2VydEJlZm9yZQlEb250RGVsZXRlfEZ1
bmN0aW9uIDINCi0gIHJlcGxhY2VDaGlsZAlET01Ob2RlOjpSZXBsYWNlQ2hpbGQJRG9udERlbGV0
ZXxGdW5jdGlvbiAyDQotICByZW1vdmVDaGlsZAlET01Ob2RlOjpSZW1vdmVDaGlsZAlEb250RGVs
ZXRlfEZ1bmN0aW9uIDENCi0gIGFwcGVuZENoaWxkCURPTU5vZGU6OkFwcGVuZENoaWxkCURvbnRE
ZWxldGV8RnVuY3Rpb24gMQ0KLSAgaGFzQXR0cmlidXRlcwlET01Ob2RlOjpIYXNBdHRyaWJ1dGVz
CURvbnREZWxldGV8RnVuY3Rpb24gMA0KLSAgaGFzQ2hpbGROb2RlcwlET01Ob2RlOjpIYXNDaGls
ZE5vZGVzCURvbnREZWxldGV8RnVuY3Rpb24gMA0KLSAgY2xvbmVOb2RlCURPTU5vZGU6OkNsb25l
Tm9kZQlEb250RGVsZXRlfEZ1bmN0aW9uIDENCisgIGluc2VydEJlZm9yZSAgRE9NTm9kZTo6SW5z
ZXJ0QmVmb3JlICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyDQorICByZXBsYWNlQ2hpbGQgIERPTU5v
ZGU6OlJlcGxhY2VDaGlsZCAgIERvbnREZWxldGV8RnVuY3Rpb24gMg0KKyAgcmVtb3ZlQ2hpbGQg
ICBET01Ob2RlOjpSZW1vdmVDaGlsZCAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDENCisgIGFwcGVu
ZENoaWxkICAgRE9NTm9kZTo6QXBwZW5kQ2hpbGQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxDQor
ICBoYXNBdHRyaWJ1dGVzIERPTU5vZGU6Okhhc0F0dHJpYnV0ZXMgIERvbnREZWxldGV8RnVuY3Rp
b24gMA0KKyAgaGFzQ2hpbGROb2RlcyBET01Ob2RlOjpIYXNDaGlsZE5vZGVzICBEb250RGVsZXRl
fEZ1bmN0aW9uIDANCisgIGNsb25lTm9kZSBET01Ob2RlOjpDbG9uZU5vZGUgIERvbnREZWxldGV8
RnVuY3Rpb24gMQ0KICMgRE9NMg0KLSAgbm9ybWFsaXplCURPTU5vZGU6Ok5vcm1hbGl6ZQlEb250
RGVsZXRlfEZ1bmN0aW9uIDANCi0gIGlzU3VwcG9ydGVkICAgRE9NTm9kZTo6SXNTdXBwb3J0ZWQJ
RG9udERlbGV0ZXxGdW5jdGlvbiAyDQorICBub3JtYWxpemUgRE9NTm9kZTo6Tm9ybWFsaXplICBE
b250RGVsZXRlfEZ1bmN0aW9uIDANCisgIGlzU3VwcG9ydGVkICAgRE9NTm9kZTo6SXNTdXBwb3J0
ZWQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyDQogIyBmcm9tIHRoZSBFdmVudFRhcmdldCBpbnRl
cmZhY2UNCi0gIGFkZEV2ZW50TGlzdGVuZXIJRE9NTm9kZTo6QWRkRXZlbnRMaXN0ZW5lcglEb250
RGVsZXRlfEZ1bmN0aW9uIDMNCi0gIHJlbW92ZUV2ZW50TGlzdGVuZXIJRE9NTm9kZTo6UmVtb3Zl
RXZlbnRMaXN0ZW5lcglEb250RGVsZXRlfEZ1bmN0aW9uIDMNCi0gIGRpc3BhdGNoRXZlbnQJCURP
TU5vZGU6OkRpc3BhdGNoRXZlbnQJRG9udERlbGV0ZXxGdW5jdGlvbiAxDQotICBjb250YWlucwlE
T01Ob2RlOjpDb250YWlucwkJRG9udERlbGV0ZXxGdW5jdGlvbiAxDQorICBhZGRFdmVudExpc3Rl
bmVyICBET01Ob2RlOjpBZGRFdmVudExpc3RlbmVyICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzDQor
ICByZW1vdmVFdmVudExpc3RlbmVyICAgRE9NTm9kZTo6UmVtb3ZlRXZlbnRMaXN0ZW5lciAgICBE
b250RGVsZXRlfEZ1bmN0aW9uIDMNCisgIGRpc3BhdGNoRXZlbnQgICAgIERPTU5vZGU6OkRpc3Bh
dGNoRXZlbnQgIERvbnREZWxldGV8RnVuY3Rpb24gMQ0KKyAgY29udGFpbnMgIERPTU5vZGU6OkNv
bnRhaW5zICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQ0KICMgIkRPTSBsZXZlbCAwIiAoZnJv
bSBHZWNrbyBET00gcmVmZXJlbmNlOyBhbHNvIGluIFdpbklFKQ0KICAgaXRlbSAgICAgICAgICBE
T01Ob2RlOjpJdGVtICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDENCiBAZW5kDQpAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgRE9NTm9kZTo6bWFyaygpDQogICAgIERPTU9iamVjdDo6bWFy
aygpOw0KICAgICByZXR1cm47DQogICB9DQotICANCisNCiAgIC8vIFRoaXMgaXMgYSBub2RlIG91
dHNpZGUgdGhlIGRvY3VtZW50LCBzbyBmaW5kIHRoZSByb290IG9mIHRoZSB0cmVlIGl0IGlzIGlu
LA0KICAgLy8gYW5kIHN0YXJ0IG1hcmtpbmcgZnJvbSB0aGVyZS4NCiAgIE5vZGVJbXBsICpyb290
ID0gbm9kZS5oYW5kbGUoKTsNCkBAIC0xNjMsNzUgKzE2Myw3NSBAQCBib29sIERPTU5vZGU6OnRv
Qm9vbGVhbihFeGVjU3RhdGUgKikgY29uDQogDQogLyogU291cmNlIGZvciBET01Ob2RlVGFibGUu
IFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLg0KIEBiZWdpbiBET01Ob2RlVGFi
bGUgNjcNCi0gIG5vZGVOYW1lCURPTU5vZGU6Ok5vZGVOYW1lCURvbnREZWxldGV8UmVhZE9ubHkN
Ci0gIG5vZGVWYWx1ZQlET01Ob2RlOjpOb2RlVmFsdWUJRG9udERlbGV0ZQ0KLSAgbm9kZVR5cGUJ
RE9NTm9kZTo6Tm9kZVR5cGUJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgcGFyZW50Tm9kZQlET01O
b2RlOjpQYXJlbnROb2RlCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIHBhcmVudEVsZW1lbnQJRE9N
Tm9kZTo6UGFyZW50RWxlbWVudAlEb250RGVsZXRlfFJlYWRPbmx5DQotICBjaGlsZE5vZGVzCURP
TU5vZGU6OkNoaWxkTm9kZXMJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgZmlyc3RDaGlsZAlET01O
b2RlOjpGaXJzdENoaWxkCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIGxhc3RDaGlsZAlET01Ob2Rl
OjpMYXN0Q2hpbGQJRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgbm9kZU5hbWUgIERPTU5vZGU6Ok5v
ZGVOYW1lICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgbm9kZVZhbHVlIERPTU5vZGU6Ok5vZGVW
YWx1ZSAgRG9udERlbGV0ZQ0KKyAgbm9kZVR5cGUgIERPTU5vZGU6Ok5vZGVUeXBlICAgRG9udERl
bGV0ZXxSZWFkT25seQ0KKyAgcGFyZW50Tm9kZSAgICBET01Ob2RlOjpQYXJlbnROb2RlIERvbnRE
ZWxldGV8UmVhZE9ubHkNCisgIHBhcmVudEVsZW1lbnQgRE9NTm9kZTo6UGFyZW50RWxlbWVudCAg
RG9udERlbGV0ZXxSZWFkT25seQ0KKyAgY2hpbGROb2RlcyAgICBET01Ob2RlOjpDaGlsZE5vZGVz
IERvbnREZWxldGV8UmVhZE9ubHkNCisgIGZpcnN0Q2hpbGQgICAgRE9NTm9kZTo6Rmlyc3RDaGls
ZCBEb250RGVsZXRlfFJlYWRPbmx5DQorICBsYXN0Q2hpbGQgRE9NTm9kZTo6TGFzdENoaWxkICBE
b250RGVsZXRlfFJlYWRPbmx5DQogICBwcmV2aW91c1NpYmxpbmcgIERPTU5vZGU6OlByZXZpb3Vz
U2libGluZyBEb250RGVsZXRlfFJlYWRPbmx5DQotICBuZXh0U2libGluZwlET01Ob2RlOjpOZXh0
U2libGluZwlEb250RGVsZXRlfFJlYWRPbmx5DQotICBhdHRyaWJ1dGVzCURPTU5vZGU6OkF0dHJp
YnV0ZXMJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgbmFtZXNwYWNlVVJJCURPTU5vZGU6Ok5hbWVz
cGFjZVVSSQlEb250RGVsZXRlfFJlYWRPbmx5DQorICBuZXh0U2libGluZyAgIERPTU5vZGU6Ok5l
eHRTaWJsaW5nICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIGF0dHJpYnV0ZXMgICAgRE9NTm9k
ZTo6QXR0cmlidXRlcyBEb250RGVsZXRlfFJlYWRPbmx5DQorICBuYW1lc3BhY2VVUkkgIERPTU5v
ZGU6Ok5hbWVzcGFjZVVSSSAgIERvbnREZWxldGV8UmVhZE9ubHkNCiAjIERPTTINCi0gIHByZWZp
eAlET01Ob2RlOjpQcmVmaXgJCURvbnREZWxldGUNCi0gIGxvY2FsTmFtZQlET01Ob2RlOjpMb2Nh
bE5hbWUJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgb3duZXJEb2N1bWVudAlET01Ob2RlOjpPd25l
ckRvY3VtZW50CURvbnREZWxldGV8UmVhZE9ubHkNCisgIHByZWZpeCAgICBET01Ob2RlOjpQcmVm
aXggICAgIERvbnREZWxldGUNCisgIGxvY2FsTmFtZSBET01Ob2RlOjpMb2NhbE5hbWUgIERvbnRE
ZWxldGV8UmVhZE9ubHkNCisgIG93bmVyRG9jdW1lbnQgRE9NTm9kZTo6T3duZXJEb2N1bWVudCAg
RG9udERlbGV0ZXxSZWFkT25seQ0KICMNCi0gIG9uYWJvcnQJRE9NTm9kZTo6T25BYm9ydAkJRG9u
dERlbGV0ZQ0KLSAgb25ibHVyCURPTU5vZGU6Ok9uQmx1cgkJCURvbnREZWxldGUNCi0gIG9uY2hh
bmdlCURPTU5vZGU6Ok9uQ2hhbmdlCQlEb250RGVsZXRlDQotICBvbmNsaWNrCURPTU5vZGU6Ok9u
Q2xpY2sJCURvbnREZWxldGUNCi0gIG9uY29udGV4dG1lbnUJRE9NTm9kZTo6T25Db250ZXh0TWVu
dQkJRG9udERlbGV0ZQ0KLSAgb25kYmxjbGljawlET01Ob2RlOjpPbkRibENsaWNrCQlEb250RGVs
ZXRlDQotICBvbmJlZm9yZWN1dAlET01Ob2RlOjpPbkJlZm9yZUN1dAkJRG9udERlbGV0ZQ0KKyAg
b25hYm9ydCAgIERPTU5vZGU6Ok9uQWJvcnQgICAgICAgIERvbnREZWxldGUNCisgIG9uYmx1ciAg
ICBET01Ob2RlOjpPbkJsdXIgICAgICAgICBEb250RGVsZXRlDQorICBvbmNoYW5nZSAgRE9NTm9k
ZTo6T25DaGFuZ2UgICAgICAgRG9udERlbGV0ZQ0KKyAgb25jbGljayAgIERPTU5vZGU6Ok9uQ2xp
Y2sgICAgICAgIERvbnREZWxldGUNCisgIG9uY29udGV4dG1lbnUgRE9NTm9kZTo6T25Db250ZXh0
TWVudSAgICAgIERvbnREZWxldGUNCisgIG9uZGJsY2xpY2sgICAgRE9NTm9kZTo6T25EYmxDbGlj
ayAgICAgRG9udERlbGV0ZQ0KKyAgb25iZWZvcmVjdXQgICBET01Ob2RlOjpPbkJlZm9yZUN1dCAg
ICAgICAgRG9udERlbGV0ZQ0KICAgb25jdXQgICAgICAgICBET01Ob2RlOjpPbkN1dCAgICAgICAg
ICAgICAgICAgIERvbnREZWxldGUNCi0gIG9uYmVmb3JlY29weQlET01Ob2RlOjpPbkJlZm9yZUNv
cHkJCURvbnREZWxldGUNCi0gIG9uY29weQlET01Ob2RlOjpPbkNvcHkgICAgICAgICAgICAgICAg
IERvbnREZWxldGUNCi0gIG9uYmVmb3JlcGFzdGUJRE9NTm9kZTo6T25CZWZvcmVQYXN0ZQkJRG9u
dERlbGV0ZQ0KLSAgb25wYXN0ZQlET01Ob2RlOjpPblBhc3RlCQlEb250RGVsZXRlDQotICBvbmRy
YWcJRE9NTm9kZTo6T25EcmFnCQkJRG9udERlbGV0ZQ0KLSAgb25kcmFnZHJvcAlET01Ob2RlOjpP
bkRyYWdEcm9wCQlEb250RGVsZXRlDQotICBvbmRyYWdlbmQJRE9NTm9kZTo6T25EcmFnRW5kCQlE
b250RGVsZXRlDQotICBvbmRyYWdlbnRlcglET01Ob2RlOjpPbkRyYWdFbnRlcgkJRG9udERlbGV0
ZQ0KLSAgb25kcmFnbGVhdmUJRE9NTm9kZTo6T25EcmFnTGVhdmUJCURvbnREZWxldGUNCi0gIG9u
ZHJhZ292ZXIJRE9NTm9kZTo6T25EcmFnT3ZlcgkJRG9udERlbGV0ZQ0KLSAgb25kcmFnc3RhcnQJ
RE9NTm9kZTo6T25EcmFnU3RhcnQJCURvbnREZWxldGUNCi0gIG9uZHJvcAlET01Ob2RlOjpPbkRy
b3AgICAgICAgICAgICAgICAgIERvbnREZWxldGUNCi0gIG9uZXJyb3IJRE9NTm9kZTo6T25FcnJv
cgkJRG9udERlbGV0ZQ0KLSAgb25mb2N1cwlET01Ob2RlOjpPbkZvY3VzICAgICAgIAkJRG9udERl
bGV0ZQ0KKyAgb25iZWZvcmVjb3B5ICBET01Ob2RlOjpPbkJlZm9yZUNvcHkgICAgICAgRG9udERl
bGV0ZQ0KKyAgb25jb3B5ICAgIERPTU5vZGU6Ok9uQ29weSAgICAgICAgICAgICAgICAgRG9udERl
bGV0ZQ0KKyAgb25iZWZvcmVwYXN0ZSBET01Ob2RlOjpPbkJlZm9yZVBhc3RlICAgICAgRG9udERl
bGV0ZQ0KKyAgb25wYXN0ZSAgIERPTU5vZGU6Ok9uUGFzdGUgICAgICAgIERvbnREZWxldGUNCisg
IG9uZHJhZyAgICBET01Ob2RlOjpPbkRyYWcgICAgICAgICBEb250RGVsZXRlDQorICBvbmRyYWdk
cm9wICAgIERPTU5vZGU6Ok9uRHJhZ0Ryb3AgICAgIERvbnREZWxldGUNCisgIG9uZHJhZ2VuZCBE
T01Ob2RlOjpPbkRyYWdFbmQgICAgICBEb250RGVsZXRlDQorICBvbmRyYWdlbnRlciAgIERPTU5v
ZGU6Ok9uRHJhZ0VudGVyICAgICAgICBEb250RGVsZXRlDQorICBvbmRyYWdsZWF2ZSAgIERPTU5v
ZGU6Ok9uRHJhZ0xlYXZlICAgICAgICBEb250RGVsZXRlDQorICBvbmRyYWdvdmVyICAgIERPTU5v
ZGU6Ok9uRHJhZ092ZXIgICAgIERvbnREZWxldGUNCisgIG9uZHJhZ3N0YXJ0ICAgRE9NTm9kZTo6
T25EcmFnU3RhcnQgICAgICAgIERvbnREZWxldGUNCisgIG9uZHJvcCAgICBET01Ob2RlOjpPbkRy
b3AgICAgICAgICAgICAgICAgIERvbnREZWxldGUNCisgIG9uZXJyb3IgICBET01Ob2RlOjpPbkVy
cm9yICAgICAgICBEb250RGVsZXRlDQorICBvbmZvY3VzICAgRE9NTm9kZTo6T25Gb2N1cyAgICAg
ICAgICAgIERvbnREZWxldGUNCiAgIG9uaW5wdXQgICAgICAgRE9NTm9kZTo6T25JbnB1dCAgICAg
ICAgICAgICAgICBEb250RGVsZXRlDQotICBvbmtleWRvd24JRE9NTm9kZTo6T25LZXlEb3duCQlE
b250RGVsZXRlDQotICBvbmtleXByZXNzCURPTU5vZGU6Ok9uS2V5UHJlc3MJCURvbnREZWxldGUN
Ci0gIG9ua2V5dXAJRE9NTm9kZTo6T25LZXlVcAkJRG9udERlbGV0ZQ0KLSAgb25sb2FkCURPTU5v
ZGU6Ok9uTG9hZAkJCURvbnREZWxldGUNCi0gIG9ubW91c2Vkb3duCURPTU5vZGU6Ok9uTW91c2VE
b3duCQlEb250RGVsZXRlDQotICBvbm1vdXNlbW92ZQlET01Ob2RlOjpPbk1vdXNlTW92ZQkJRG9u
dERlbGV0ZQ0KLSAgb25tb3VzZW91dAlET01Ob2RlOjpPbk1vdXNlT3V0CQlEb250RGVsZXRlDQot
ICBvbm1vdXNlb3ZlcglET01Ob2RlOjpPbk1vdXNlT3ZlcgkJRG9udERlbGV0ZQ0KLSAgb25tb3Vz
ZXVwCURPTU5vZGU6Ok9uTW91c2VVcAkJRG9udERlbGV0ZQ0KLSAgb25tb3VzZXdoZWVsCURPTU5v
ZGU6Ok9uTW91c2VXaGVlbAkJRG9udERlbGV0ZQ0KLSAgb25tb3ZlCURPTU5vZGU6Ok9uTW92ZQkJ
CURvbnREZWxldGUNCi0gIG9ucmVzZXQJRE9NTm9kZTo6T25SZXNldAkJRG9udERlbGV0ZQ0KLSAg
b25yZXNpemUJRE9NTm9kZTo6T25SZXNpemUJCURvbnREZWxldGUNCisgIG9ua2V5ZG93biBET01O
b2RlOjpPbktleURvd24gICAgICBEb250RGVsZXRlDQorICBvbmtleXByZXNzICAgIERPTU5vZGU6
Ok9uS2V5UHJlc3MgICAgIERvbnREZWxldGUNCisgIG9ua2V5dXAgICBET01Ob2RlOjpPbktleVVw
ICAgICAgICBEb250RGVsZXRlDQorICBvbmxvYWQgICAgRE9NTm9kZTo6T25Mb2FkICAgICAgICAg
RG9udERlbGV0ZQ0KKyAgb25tb3VzZWRvd24gICBET01Ob2RlOjpPbk1vdXNlRG93biAgICAgICAg
RG9udERlbGV0ZQ0KKyAgb25tb3VzZW1vdmUgICBET01Ob2RlOjpPbk1vdXNlTW92ZSAgICAgICAg
RG9udERlbGV0ZQ0KKyAgb25tb3VzZW91dCAgICBET01Ob2RlOjpPbk1vdXNlT3V0ICAgICBEb250
RGVsZXRlDQorICBvbm1vdXNlb3ZlciAgIERPTU5vZGU6Ok9uTW91c2VPdmVyICAgICAgICBEb250
RGVsZXRlDQorICBvbm1vdXNldXAgRE9NTm9kZTo6T25Nb3VzZVVwICAgICAgRG9udERlbGV0ZQ0K
KyAgb25tb3VzZXdoZWVsICBET01Ob2RlOjpPbk1vdXNlV2hlZWwgICAgICAgRG9udERlbGV0ZQ0K
KyAgb25tb3ZlICAgIERPTU5vZGU6Ok9uTW92ZSAgICAgICAgIERvbnREZWxldGUNCisgIG9ucmVz
ZXQgICBET01Ob2RlOjpPblJlc2V0ICAgICAgICBEb250RGVsZXRlDQorICBvbnJlc2l6ZSAgRE9N
Tm9kZTo6T25SZXNpemUgICAgICAgRG9udERlbGV0ZQ0KICAgb25zY3JvbGwgICAgICBET01Ob2Rl
OjpPblNjcm9sbCAgICAgICAgICAgICAgIERvbnREZWxldGUNCiAgIG9uc2VhcmNoICAgICAgRE9N
Tm9kZTo6T25TZWFyY2ggICAgICAgICAgICAgICBEb250RGVsZXRlDQotICBvbnNlbGVjdAlET01O
b2RlOjpPblNlbGVjdAkJRG9udERlbGV0ZQ0KLSAgb25zZWxlY3RzdGFydAlET01Ob2RlOjpPblNl
bGVjdFN0YXJ0CQlEb250RGVsZXRlDQotICBvbnN1Ym1pdAlET01Ob2RlOjpPblN1Ym1pdAkJRG9u
dERlbGV0ZQ0KLSAgb251bmxvYWQJRE9NTm9kZTo6T25VbmxvYWQJCURvbnREZWxldGUNCisgIG9u
c2VsZWN0ICBET01Ob2RlOjpPblNlbGVjdCAgICAgICBEb250RGVsZXRlDQorICBvbnNlbGVjdHN0
YXJ0IERPTU5vZGU6Ok9uU2VsZWN0U3RhcnQgICAgICBEb250RGVsZXRlDQorICBvbnN1Ym1pdCAg
RE9NTm9kZTo6T25TdWJtaXQgICAgICAgRG9udERlbGV0ZQ0KKyAgb251bmxvYWQgIERPTU5vZGU6
Ok9uVW5sb2FkICAgICAgIERvbnREZWxldGUNCiAjIElFIGV4dGVuc2lvbnMNCi0gIG9mZnNldExl
ZnQJRE9NTm9kZTo6T2Zmc2V0TGVmdAkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgb2Zmc2V0VG9w
CURPTU5vZGU6Ok9mZnNldFRvcAkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgb2Zmc2V0V2lkdGgJ
RE9NTm9kZTo6T2Zmc2V0V2lkdGgJCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIG9mZnNldEhlaWdo
dAlET01Ob2RlOjpPZmZzZXRIZWlnaHQJCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIG9mZnNldFBh
cmVudAlET01Ob2RlOjpPZmZzZXRQYXJlbnQJCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIGNsaWVu
dFdpZHRoCURPTU5vZGU6OkNsaWVudFdpZHRoCQlEb250RGVsZXRlfFJlYWRPbmx5DQotICBjbGll
bnRIZWlnaHQJRE9NTm9kZTo6Q2xpZW50SGVpZ2h0CQlEb250RGVsZXRlfFJlYWRPbmx5DQotICBz
Y3JvbGxMZWZ0CURPTU5vZGU6OlNjcm9sbExlZnQJCURvbnREZWxldGUNCi0gIHNjcm9sbFRvcAlE
T01Ob2RlOjpTY3JvbGxUb3AJCURvbnREZWxldGUNCisgIG9mZnNldExlZnQgICAgRE9NTm9kZTo6
T2Zmc2V0TGVmdCAgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgb2Zmc2V0VG9wIERPTU5vZGU6
Ok9mZnNldFRvcCAgICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIG9mZnNldFdpZHRoICAgRE9N
Tm9kZTo6T2Zmc2V0V2lkdGggICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIG9mZnNldEhl
aWdodCAgRE9NTm9kZTo6T2Zmc2V0SGVpZ2h0ICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisg
IG9mZnNldFBhcmVudCAgRE9NTm9kZTo6T2Zmc2V0UGFyZW50ICAgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkNCisgIGNsaWVudFdpZHRoICAgRE9NTm9kZTo6Q2xpZW50V2lkdGggICAgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkNCisgIGNsaWVudEhlaWdodCAgRE9NTm9kZTo6Q2xpZW50SGVpZ2h0ICAg
ICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIHNjcm9sbExlZnQgICAgRE9NTm9kZTo6U2Nyb2xs
TGVmdCAgICAgRG9udERlbGV0ZQ0KKyAgc2Nyb2xsVG9wIERPTU5vZGU6OlNjcm9sbFRvcCAgICAg
IERvbnREZWxldGUNCiAgIHNjcm9sbFdpZHRoICAgRE9NTm9kZTo6U2Nyb2xsV2lkdGggICAgICAg
ICAgICBEb250RGVsZXRlfFJlYWRPbmx5DQogICBzY3JvbGxIZWlnaHQgIERPTU5vZGU6OlNjcm9s
bEhlaWdodCAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KIEBlbmQNCkBAIC0zMTQsOSAr
MzE0LDkgQEAgVmFsdWUgRE9NTm9kZTo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdA0KICAgY2Fz
ZSBPbk1vdXNlT3ZlcjoNCiAgICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpN
T1VTRU9WRVJfRVZFTlQpOw0KICAgY2FzZSBPbk1vdXNlVXA6DQotICAgIHJldHVybiBnZXRMaXN0
ZW5lcihET006OkV2ZW50SW1wbDo6TU9VU0VVUF9FVkVOVCk7ICAgICAgDQorICAgIHJldHVybiBn
ZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6TU9VU0VVUF9FVkVOVCk7DQogICBjYXNlIE9uTW91
c2VXaGVlbDoNCi0gICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpNT1VTRVdI
RUVMX0VWRU5UKTsgICAgICANCisgICAgcmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBs
OjpNT1VTRVdIRUVMX0VWRU5UKTsNCiAgIGNhc2UgT25CZWZvcmVDdXQ6DQogICAgIHJldHVybiBn
ZXRMaXN0ZW5lcihET006OkV2ZW50SW1wbDo6QkVGT1JFQ1VUX0VWRU5UKTsNCiAgIGNhc2UgT25D
dXQ6DQpAQCAtNjAzLDkgKzYwMyw5IEBAIFZhbHVlIERPTU5vZGU6OmdldExpc3RlbmVyKGludCBl
dmVudElkKSANCiAgICAgRE9NOjpFdmVudExpc3RlbmVyICpsaXN0ZW5lciA9IG5vZGUuaGFuZGxl
KCktPmdldEhUTUxFdmVudExpc3RlbmVyKGV2ZW50SWQpOw0KICAgICBKU0V2ZW50TGlzdGVuZXIg
KmpzTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU0V2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcik7DQog
ICAgIGlmICgganNMaXN0ZW5lciAmJiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iakltcCgpICkNCi0J
cmV0dXJuIGpzTGlzdGVuZXItPmxpc3RlbmVyT2JqKCk7DQorICAgIHJldHVybiBqc0xpc3RlbmVy
LT5saXN0ZW5lck9iaigpOw0KICAgICBlbHNlDQotCXJldHVybiBOdWxsKCk7DQorICAgIHJldHVy
biBOdWxsKCk7DQogfQ0KIA0KIHZvaWQgRE9NTm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4
ZWNTdGF0ZSAqLCBTY29wZUNoYWluICYpIGNvbnN0DQpAQCAtNjU4LDEzICs2NTgsMTMgQEAgVmFs
dWUgRE9NTm9kZVByb3RvRnVuYzo6dHJ5Q2FsbChFeGVjU3RhdA0KICAgICBjYXNlIERPTU5vZGU6
OkNvbnRhaW5zOg0KICAgICB7DQogICAgICAgICBpbnQgZXhjZXB0aW9uY29kZT0wOw0KLQlET006
Ok5vZGUgb3RoZXIgPSB0b05vZGUoYXJnc1swXSk7DQotCWlmICghb3RoZXIuaXNOdWxsKCkgJiYg
bm9kZS5ub2RlVHlwZSgpPT1ET006Ok5vZGU6OkVMRU1FTlRfTk9ERSkNCi0Jew0KLQkgICAgRE9N
OjpOb2RlQmFzZUltcGwgKmltcGwgPSBzdGF0aWNfY2FzdDxET006Ok5vZGVCYXNlSW1wbCAqPihu
b2RlLmhhbmRsZSgpKTsNCi0JICAgIGJvb2wgcmV0dmFsID0gIWltcGwtPmNoZWNrTm9Pd25lcihv
dGhlci5oYW5kbGUoKSxleGNlcHRpb25jb2RlKTsNCi0JICAgIHJldHVybiBCb29sZWFuKHJldHZh
bCAmJiBleGNlcHRpb25jb2RlID09IDApOw0KLQl9DQorICAgIERPTTo6Tm9kZSBvdGhlciA9IHRv
Tm9kZShhcmdzWzBdKTsNCisgICAgaWYgKCFvdGhlci5pc051bGwoKSAmJiBub2RlLm5vZGVUeXBl
KCk9PURPTTo6Tm9kZTo6RUxFTUVOVF9OT0RFKQ0KKyAgICB7DQorICAgICAgICBET006Ok5vZGVC
YXNlSW1wbCAqaW1wbCA9IHN0YXRpY19jYXN0PERPTTo6Tm9kZUJhc2VJbXBsICo+KG5vZGUuaGFu
ZGxlKCkpOw0KKyAgICAgICAgYm9vbCByZXR2YWwgPSAhaW1wbC0+Y2hlY2tOb093bmVyKG90aGVy
LmhhbmRsZSgpLGV4Y2VwdGlvbmNvZGUpOw0KKyAgICAgICAgcmV0dXJuIEJvb2xlYW4ocmV0dmFs
ICYmIGV4Y2VwdGlvbmNvZGUgPT0gMCk7DQorICAgIH0NCiAgICAgICAgIHJldHVybiBVbmRlZmlu
ZWQoKTsNCiAgICAgfQ0KICAgICBjYXNlIERPTU5vZGU6Okl0ZW06DQpAQCAtNzQ5LDggKzc0OSw4
IEBAIFZhbHVlIERPTU5vZGVMaXN0OjpjYWxsKEV4ZWNTdGF0ZSAqZXhlYywNCiAgICAgT2JqZWN0
IGVyciA9IEVycm9yOjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCAiRXhjZXB0aW9uIGZyb20g
RE9NTm9kZUxpc3QiKTsNCiAgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGVycik7DQogICAgIERPTTo6
X2V4Y2VwdGlvbmNvZGUgPSAwOw0KLSAgfSAgDQotI2Vsc2UgICAgIA0KKyAgfQ0KKyNlbHNlDQog
ICB0cnkgew0KICAgICB2YWwgPSB0cnlDYWxsKGV4ZWMsIHRoaXNPYmosIGFyZ3MpOw0KICAgfQ0K
QEAgLTc1OSw3ICs3NTksNyBAQCBWYWx1ZSBET01Ob2RlTGlzdDo6Y2FsbChFeGVjU3RhdGUgKmV4
ZWMsDQogICAgIE9iamVjdCBlcnIgPSBFcnJvcjo6Y3JlYXRlKGV4ZWMsIEdlbmVyYWxFcnJvciwg
IkV4Y2VwdGlvbiBmcm9tIERPTU5vZGVMaXN0Iik7DQogICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihl
cnIpOw0KICAgfQ0KLSNlbmRpZiAgDQorI2VuZGlmDQogICByZXR1cm4gdmFsOw0KIH0NCiANCkBA
IC04MDUsMTAgKzgwNSwxMCBAQCBjb25zdCBDbGFzc0luZm8gRE9NQXR0cjo6aW5mbyA9IHsgIkF0
dHIiDQogDQogLyogU291cmNlIGZvciBET01BdHRyVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVz
IiB0byByZWdlbmVyYXRlLg0KIEBiZWdpbiBET01BdHRyVGFibGUgNQ0KLSAgbmFtZQkJRE9NQXR0
cjo6TmFtZQkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgc3BlY2lmaWVkCURPTUF0dHI6OlNwZWNp
ZmllZAlEb250RGVsZXRlfFJlYWRPbmx5DQotICB2YWx1ZQkJRE9NQXR0cjo6VmFsdWVQcm9wZXJ0
eQlEb250RGVsZXRlfFJlYWRPbmx5DQotICBvd25lckVsZW1lbnQJRE9NQXR0cjo6T3duZXJFbGVt
ZW50CURvbnREZWxldGV8UmVhZE9ubHkNCisgIG5hbWUgICAgICBET01BdHRyOjpOYW1lICAgICAg
IERvbnREZWxldGV8UmVhZE9ubHkNCisgIHNwZWNpZmllZCBET01BdHRyOjpTcGVjaWZpZWQgIERv
bnREZWxldGV8UmVhZE9ubHkNCisgIHZhbHVlICAgICBET01BdHRyOjpWYWx1ZVByb3BlcnR5ICBE
b250RGVsZXRlfFJlYWRPbmx5DQorICBvd25lckVsZW1lbnQgIERPTUF0dHI6Ok93bmVyRWxlbWVu
dCAgIERvbnREZWxldGV8UmVhZE9ubHkNCiBAZW5kDQogKi8NCiBWYWx1ZSBET01BdHRyOjp0cnlH
ZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0
DQpAQCAtOTA3LDE0ICs5MDcsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIERPTURvY3VtZW50OjppbmZv
ID0geyAiRA0KICovDQogDQogRE9NRG9jdW1lbnQ6OkRPTURvY3VtZW50KEV4ZWNTdGF0ZSAqZXhl
YywgY29uc3QgRE9NOjpEb2N1bWVudCAmZCkNCi0gIDogRE9NTm9kZShkKSANCi17IA0KKyAgOiBE
T01Ob2RlKGQpDQorew0KICAgc2V0UHJvdG90eXBlKERPTURvY3VtZW50UHJvdG86OnNlbGYoZXhl
YykpOw0KIH0NCiANCiBET01Eb2N1bWVudDo6RE9NRG9jdW1lbnQoY29uc3QgRE9NOjpEb2N1bWVu
dCAmZCkNCi0gIDogRE9NTm9kZShkKSANCi17IA0KKyAgOiBET01Ob2RlKGQpDQorew0KIH0NCiAN
CiBET01Eb2N1bWVudDo6fkRPTURvY3VtZW50KCkNCkBAIC0xMDg4LDcgKzEwODgsNyBAQCBWYWx1
ZSBET01Eb2N1bWVudFByb3RvRnVuYzo6dHJ5Q2FsbChFeGVjDQogICAgIC8vICJJZiBub3Qgc3Vw
cG9ydGVkIFtmb3IgYSBjb21tYW5kIGlkZW50aWZpZXJdLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEg
Qm9vbGVhbiBzZXQgdG8gZmFsc2UuIg0KICAgICBpZiAoY29tbWFuZFZhbHVlLmlzTnVsbCgpKQ0K
ICAgICAgICAgcmV0dXJuIEJvb2xlYW4oZmFsc2UpOw0KLSAgICBlbHNlIA0KKyAgICBlbHNlDQog
ICAgICAgICByZXR1cm4gU3RyaW5nKGNvbW1hbmRWYWx1ZSk7DQogICB9DQogICBkZWZhdWx0Og0K
QEAgLTExMDIsMjEgKzExMDIsMjEgQEAgVmFsdWUgRE9NRG9jdW1lbnRQcm90b0Z1bmM6OnRyeUNh
bGwoRXhlYw0KIA0KIC8qIFNvdXJjZSBmb3IgRE9NRWxlbWVudFByb3RvVGFibGUuIFVzZSAibWFr
ZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLg0KIEBiZWdpbiBET01FbGVtZW50UHJvdG9UYWJs
ZSAxNw0KLSAgZ2V0QXR0cmlidXRlCQlET01FbGVtZW50OjpHZXRBdHRyaWJ1dGUJRG9udERlbGV0
ZXxGdW5jdGlvbiAxDQotICBzZXRBdHRyaWJ1dGUJCURPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZQlE
b250RGVsZXRlfEZ1bmN0aW9uIDINCi0gIHJlbW92ZUF0dHJpYnV0ZQlET01FbGVtZW50OjpSZW1v
dmVBdHRyaWJ1dGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxDQotICBnZXRBdHRyaWJ1dGVOb2RlCURP
TUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxDQotICBzZXRB
dHRyaWJ1dGVOb2RlCURPTUVsZW1lbnQ6OlNldEF0dHJpYnV0ZU5vZGUJRG9udERlbGV0ZXxGdW5j
dGlvbiAyDQotICByZW1vdmVBdHRyaWJ1dGVOb2RlCURPTUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0
ZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxDQotICBnZXRFbGVtZW50c0J5VGFnTmFtZQlET01F
bGVtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZQlEb250RGVsZXRlfEZ1bmN0aW9uIDENCi0gIGhh
c0F0dHJpYnV0ZQkJRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rpb24g
MQ0KLSAgZ2V0QXR0cmlidXRlTlMJRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTlMJRG9udERlbGV0
ZXxGdW5jdGlvbiAyDQotICBzZXRBdHRyaWJ1dGVOUwlET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVO
UwlEb250RGVsZXRlfEZ1bmN0aW9uIDMNCi0gIHJlbW92ZUF0dHJpYnV0ZU5TCURPTUVsZW1lbnQ6
OlJlbW92ZUF0dHJpYnV0ZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMg0KLSAgZ2V0QXR0cmlidXRl
Tm9kZU5TCURPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGVOUwlEb250RGVsZXRlfEZ1bmN0aW9u
IDINCi0gIHNldEF0dHJpYnV0ZU5vZGVOUwlET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOb2RlTlMJ
RG9udERlbGV0ZXxGdW5jdGlvbiAxDQotICBnZXRFbGVtZW50c0J5VGFnTmFtZU5TIERPTUVsZW1l
bnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1lTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyDQotICBoYXNB
dHRyaWJ1dGVOUwlET01FbGVtZW50OjpIYXNBdHRyaWJ1dGVOUwlEb250RGVsZXRlfEZ1bmN0aW9u
IDINCisgIGdldEF0dHJpYnV0ZSAgICAgIERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZSAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDENCisgIHNldEF0dHJpYnV0ZSAgICAgIERPTUVsZW1lbnQ6OlNldEF0
dHJpYnV0ZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDINCisgIHJlbW92ZUF0dHJpYnV0ZSAgIERP
TUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZSBEb250RGVsZXRlfEZ1bmN0aW9uIDENCisgIGdldEF0
dHJpYnV0ZU5vZGUgIERPTUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGUgICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAxDQorICBzZXRBdHRyaWJ1dGVOb2RlICBET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVO
b2RlICAgIERvbnREZWxldGV8RnVuY3Rpb24gMg0KKyAgcmVtb3ZlQXR0cmlidXRlTm9kZSAgIERP
TUVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZU5vZGUgRG9udERlbGV0ZXxGdW5jdGlvbiAxDQorICBn
ZXRFbGVtZW50c0J5VGFnTmFtZSAgRE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWUgICAg
RG9udERlbGV0ZXxGdW5jdGlvbiAxDQorICBoYXNBdHRyaWJ1dGUgICAgICBET01FbGVtZW50OjpI
YXNBdHRyaWJ1dGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxDQorICBnZXRBdHRyaWJ1dGVOUyAg
ICBET01FbGVtZW50OjpHZXRBdHRyaWJ1dGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyDQorICBz
ZXRBdHRyaWJ1dGVOUyAgICBET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOUyAgRG9udERlbGV0ZXxG
dW5jdGlvbiAzDQorICByZW1vdmVBdHRyaWJ1dGVOUyBET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1
dGVOUyAgIERvbnREZWxldGV8RnVuY3Rpb24gMg0KKyAgZ2V0QXR0cmlidXRlTm9kZU5TICAgIERP
TUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5vZGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyDQorICBz
ZXRBdHRyaWJ1dGVOb2RlTlMgICAgRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlTm9kZU5TICBEb250
RGVsZXRlfEZ1bmN0aW9uIDENCisgIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMgRE9NRWxlbWVudDo6
R2V0RWxlbWVudHNCeVRhZ05hbWVOUyBEb250RGVsZXRlfEZ1bmN0aW9uIDINCisgIGhhc0F0dHJp
YnV0ZU5TICAgIERPTUVsZW1lbnQ6Okhhc0F0dHJpYnV0ZU5TICBEb250RGVsZXRlfEZ1bmN0aW9u
IDINCiAgIHNjcm9sbEludG9WaWV3ICAgICAgICBET01FbGVtZW50OjpTY3JvbGxJbnRvVmlldyAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQ0KICAgZm9jdXMgICAgICAgICAgICAgICAgIERPTUVs
ZW1lbnQ6OkVsZW1lbnRGb2N1cyAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwDQogICBibHVy
ICAgICAgICAgICAgICAgICAgRE9NRWxlbWVudDo6RWxlbWVudEJsdXIgICAgICAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDANCkBAIC0xMTM0LDE5ICsxMTM0LDE5IEBAIElNUExFTUVOVF9QUk9UT1RZ
UEVfV0lUSF9QQVJFTlQoRE9NRWxlbWUNCiBjb25zdCBDbGFzc0luZm8gRE9NRWxlbWVudDo6aW5m
byA9IHsgIkVsZW1lbnQiLCAmRE9NTm9kZTo6aW5mbywgJkRPTUVsZW1lbnRUYWJsZSwgMCB9Ow0K
IC8qIFNvdXJjZSBmb3IgRE9NRWxlbWVudFRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8g
cmVnZW5lcmF0ZS4NCiBAYmVnaW4gRE9NRWxlbWVudFRhYmxlIDMNCi0gIHRhZ05hbWUJRE9NRWxl
bWVudDo6VGFnTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5
DQotICBzdHlsZQkJRE9NRWxlbWVudDo6U3R5bGUgICAgICAgICAgICAgICAgICAgICAgICAgICBE
b250RGVsZXRlfFJlYWRPbmx5DQorICB0YWdOYW1lICAgRE9NRWxlbWVudDo6VGFnTmFtZSAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5DQorICBzdHlsZSAgICAgRE9N
RWxlbWVudDo6U3R5bGUgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRP
bmx5DQogQGVuZA0KICovDQogRE9NRWxlbWVudDo6RE9NRWxlbWVudChFeGVjU3RhdGUgKmV4ZWMs
IGNvbnN0IERPTTo6RWxlbWVudCAmZSkNCi0gIDogRE9NTm9kZShlKSANCisgIDogRE9NTm9kZShl
KQ0KIHsNCiAgIHNldFByb3RvdHlwZShET01FbGVtZW50UHJvdG86OnNlbGYoZXhlYykpOw0KIH0N
CiANCiBET01FbGVtZW50OjpET01FbGVtZW50KGNvbnN0IERPTTo6RWxlbWVudCAmZSkNCi0gIDog
RE9NTm9kZShlKSANCi17IA0KKyAgOiBET01Ob2RlKGUpDQorew0KIH0NCiANCiBWYWx1ZSBET01F
bGVtZW50Ojp0cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0
eU5hbWUpIGNvbnN0DQpAQCAtMTIzMSw3ICsxMjMxLDcgQEAgVmFsdWUgRE9NRWxlbWVudFByb3Rv
RnVuYzo6dHJ5Q2FsbChFeGVjUw0KICAgICAgIHJldHVybiBnZXRET01Ob2RlTGlzdChleGVjLGVs
ZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhhcmdzWzBdLnRvU3RyaW5nKGV4ZWMpLnN0cmlu
ZygpLGFyZ3NbMV0udG9TdHJpbmcoZXhlYykuc3RyaW5nKCkpKTsNCiAgICAgY2FzZSBET01FbGVt
ZW50OjpIYXNBdHRyaWJ1dGVOUzogLy8gRE9NMg0KICAgICAgIHJldHVybiBCb29sZWFuKGVsZW1l
bnQuaGFzQXR0cmlidXRlTlMoYXJnc1swXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSxhcmdzWzFd
LnRvU3RyaW5nKGV4ZWMpLnN0cmluZygpKSk7DQotICAgIGNhc2UgRE9NRWxlbWVudDo6U2Nyb2xs
SW50b1ZpZXc6IA0KKyAgICBjYXNlIERPTUVsZW1lbnQ6OlNjcm9sbEludG9WaWV3Og0KICAgICAg
IChhcmdzWzBdLnR5cGUoKSAhPSBVbmRlZmluZWRUeXBlICYmIGFyZ3NbMF0udHlwZSgpICE9IE51
bGxUeXBlKSA/IGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoYXJnc1swXS50b0Jvb2xlYW4oZXhlYykp
IDogZWxlbWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTsNCiAgICAgICByZXR1cm4gVW5kZWZpbmVk
KCk7DQogICAgIGNhc2UgRE9NRWxlbWVudDo6U2Nyb2xsQnlMaW5lczoNCkBAIC0xMjQwLDcgKzEy
NDAsNyBAQCBWYWx1ZSBET01FbGVtZW50UHJvdG9GdW5jOjp0cnlDYWxsKEV4ZWNTDQogICAgICAg
ICBET006OkRvY3VtZW50SW1wbCogZG9jaW1wbCA9IG5vZGUuaGFuZGxlKCktPmdldERvY3VtZW50
KCk7DQogICAgICAgICBpZiAoZG9jaW1wbCkgew0KICAgICAgICAgICAgIGRvY2ltcGwtPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOw0KLSAgICAgICAgfSAgICAgICAgICAg
IA0KKyAgICAgICAgfQ0KICAgICAgICAga2h0bWw6OlJlbmRlck9iamVjdCAqcmVuZCA9IG5vZGUu
aGFuZGxlKCkgPyBub2RlLmhhbmRsZSgpLT5yZW5kZXJlcigpIDogMEw7DQogICAgICAgICBpZiAo
cmVuZCAmJiByZW5kLT5oYXNPdmVyZmxvd0NsaXAoKSkgew0KICAgICAgICAgICAgIEtXUVNjcm9s
bERpcmVjdGlvbiBkaXJlY3Rpb24gPSBLV1FTY3JvbGxEb3duOw0KQEAgLTEyNTMsNyArMTI1Myw3
IEBAIFZhbHVlIERPTUVsZW1lbnRQcm90b0Z1bmM6OnRyeUNhbGwoRXhlY1MNCiAgICAgICAgICAg
ICByZW5kLT5sYXllcigpLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGll
cik7DQogICAgICAgICB9DQogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7DQotICAgICAgICAN
CisNCiAgICAgfQ0KICAgICBjYXNlIERPTUVsZW1lbnQ6OkVsZW1lbnRGb2N1czoNCiAgICAgICAg
IGVsZW1lbnQuZm9jdXMoKTsNCkBAIC0xMjcwLDExICsxMjcwLDExIEBAIFZhbHVlIERPTUVsZW1l
bnRQcm90b0Z1bmM6OnRyeUNhbGwoRXhlY1MNCiANCiAvKiBTb3VyY2UgZm9yIERPTURPTUltcGxl
bWVudGF0aW9uUHJvdG9UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUu
DQogQGJlZ2luIERPTURPTUltcGxlbWVudGF0aW9uUHJvdG9UYWJsZSA1DQotICBoYXNGZWF0dXJl
CQlET01ET01JbXBsZW1lbnRhdGlvbjo6SGFzRmVhdHVyZQkJRG9udERlbGV0ZXxGdW5jdGlvbiAy
DQorICBoYXNGZWF0dXJlICAgICAgICBET01ET01JbXBsZW1lbnRhdGlvbjo6SGFzRmVhdHVyZSAg
ICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyDQogIyBET00yDQotICBjcmVhdGVDU1NTdHlsZVNo
ZWV0CURPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVDU1NTdHlsZVNoZWV0CURvbnREZWxldGV8
RnVuY3Rpb24gMg0KLSAgY3JlYXRlRG9jdW1lbnRUeXBlCURPTURPTUltcGxlbWVudGF0aW9uOjpD
cmVhdGVEb2N1bWVudFR5cGUJRG9udERlbGV0ZXxGdW5jdGlvbiAzDQotICBjcmVhdGVEb2N1bWVu
dAlET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1lbnQJCURvbnREZWxldGV8RnVuY3Rp
b24gMw0KKyAgY3JlYXRlQ1NTU3R5bGVTaGVldCAgIERPTURPTUltcGxlbWVudGF0aW9uOjpDcmVh
dGVDU1NTdHlsZVNoZWV0ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyDQorICBjcmVhdGVEb2N1bWVu
dFR5cGUgICAgRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZURvY3VtZW50VHlwZSAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDMNCisgIGNyZWF0ZURvY3VtZW50ICAgIERPTURPTUltcGxlbWVudGF0
aW9uOjpDcmVhdGVEb2N1bWVudCAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzDQogICBjcmVh
dGVIVE1MRG9jdW1lbnQgICAgRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZUhUTUxEb2N1bWVu
dCAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxDQogQGVuZA0KICovDQpAQCAtMTI4NSw4ICsx
Mjg1LDggQEAgSU1QTEVNRU5UX1BST1RPVFlQRShET01ET01JbXBsZW1lbnRhdGlvbg0KIGNvbnN0
IENsYXNzSW5mbyBET01ET01JbXBsZW1lbnRhdGlvbjo6aW5mbyA9IHsgIkRPTUltcGxlbWVudGF0
aW9uIiwgMCwgMCwgMCB9Ow0KIA0KIERPTURPTUltcGxlbWVudGF0aW9uOjpET01ET01JbXBsZW1l
bnRhdGlvbihFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6RE9NSW1wbGVtZW50YXRpb24gJmkp
DQotICA6IGltcGxlbWVudGF0aW9uKGkpIA0KLXsgDQorICA6IGltcGxlbWVudGF0aW9uKGkpDQor
ew0KICAgc2V0UHJvdG90eXBlKERPTURPTUltcGxlbWVudGF0aW9uUHJvdG86OnNlbGYoZXhlYykp
Ow0KIH0NCiANCkBAIC0xMzI4LDEzICsxMzI4LDEzIEBAIGNvbnN0IENsYXNzSW5mbyBET01Eb2N1
bWVudFR5cGU6OmluZm8gPSANCiANCiAvKiBTb3VyY2UgZm9yIERPTURvY3VtZW50VHlwZVRhYmxl
LiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4NCiBAYmVnaW4gRE9NRG9jdW1l
bnRUeXBlVGFibGUgNg0KLSAgbmFtZQkJCURPTURvY3VtZW50VHlwZTo6TmFtZQkJRG9udERlbGV0
ZXxSZWFkT25seQ0KLSAgZW50aXRpZXMJCURPTURvY3VtZW50VHlwZTo6RW50aXRpZXMJRG9udERl
bGV0ZXxSZWFkT25seQ0KLSAgbm90YXRpb25zCQlET01Eb2N1bWVudFR5cGU6Ok5vdGF0aW9ucwlE
b250RGVsZXRlfFJlYWRPbmx5DQorICBuYW1lICAgICAgICAgIERPTURvY3VtZW50VHlwZTo6TmFt
ZSAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5DQorICBlbnRpdGllcyAgICAgIERPTURvY3VtZW50
VHlwZTo6RW50aXRpZXMgICBEb250RGVsZXRlfFJlYWRPbmx5DQorICBub3RhdGlvbnMgICAgIERP
TURvY3VtZW50VHlwZTo6Tm90YXRpb25zICBEb250RGVsZXRlfFJlYWRPbmx5DQogIyBET00yDQot
ICBwdWJsaWNJZAkJRE9NRG9jdW1lbnRUeXBlOjpQdWJsaWNJZAlEb250RGVsZXRlfFJlYWRPbmx5
DQotICBzeXN0ZW1JZAkJRE9NRG9jdW1lbnRUeXBlOjpTeXN0ZW1JZAlEb250RGVsZXRlfFJlYWRP
bmx5DQotICBpbnRlcm5hbFN1YnNldAlET01Eb2N1bWVudFR5cGU6OkludGVybmFsU3Vic2V0CURv
bnREZWxldGV8UmVhZE9ubHkNCisgIHB1YmxpY0lkICAgICAgRE9NRG9jdW1lbnRUeXBlOjpQdWJs
aWNJZCAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIHN5c3RlbUlkICAgICAgRE9NRG9jdW1lbnRU
eXBlOjpTeXN0ZW1JZCAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIGludGVybmFsU3Vic2V0ICAg
IERPTURvY3VtZW50VHlwZTo6SW50ZXJuYWxTdWJzZXQgRG9udERlbGV0ZXxSZWFkT25seQ0KIEBl
bmQNCiAqLw0KIERPTURvY3VtZW50VHlwZTo6RE9NRG9jdW1lbnRUeXBlKEV4ZWNTdGF0ZSAqZXhl
YywgY29uc3QgRE9NOjpEb2N1bWVudFR5cGUgJmR0KQ0KQEAgLTEzNzEsMTQgKzEzNzEsMTQgQEAg
VmFsdWUgRE9NRG9jdW1lbnRUeXBlOjpnZXRWYWx1ZVByb3BlcnR5KA0KIA0KIC8qIFNvdXJjZSBm
b3IgRE9NTmFtZWROb2RlTWFwUHJvdG9UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJl
Z2VuZXJhdGUuDQogQGJlZ2luIERPTU5hbWVkTm9kZU1hcFByb3RvVGFibGUgNw0KLSAgZ2V0TmFt
ZWRJdGVtCQlET01OYW1lZE5vZGVNYXA6OkdldE5hbWVkSXRlbQkJRG9udERlbGV0ZXxGdW5jdGlv
biAxDQotICBzZXROYW1lZEl0ZW0JCURPTU5hbWVkTm9kZU1hcDo6U2V0TmFtZWRJdGVtCQlEb250
RGVsZXRlfEZ1bmN0aW9uIDENCi0gIHJlbW92ZU5hbWVkSXRlbQlET01OYW1lZE5vZGVNYXA6OlJl
bW92ZU5hbWVkSXRlbQlEb250RGVsZXRlfEZ1bmN0aW9uIDENCi0gIGl0ZW0JCQlET01OYW1lZE5v
ZGVNYXA6Okl0ZW0JCQlEb250RGVsZXRlfEZ1bmN0aW9uIDENCisgIGdldE5hbWVkSXRlbSAgICAg
IERPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJdGVtICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MQ0KKyAgc2V0TmFtZWRJdGVtICAgICAgRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW0gICAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxDQorICByZW1vdmVOYW1lZEl0ZW0gICBET01OYW1lZE5v
ZGVNYXA6OlJlbW92ZU5hbWVkSXRlbSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDENCisgIGl0ZW0g
ICAgICAgICAgRE9NTmFtZWROb2RlTWFwOjpJdGVtICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0
aW9uIDENCiAjIERPTTINCi0gIGdldE5hbWVkSXRlbU5TCURPTU5hbWVkTm9kZU1hcDo6R2V0TmFt
ZWRJdGVtTlMJCURvbnREZWxldGV8RnVuY3Rpb24gMg0KLSAgc2V0TmFtZWRJdGVtTlMJRE9NTmFt
ZWROb2RlTWFwOjpTZXROYW1lZEl0ZW1OUwkJRG9udERlbGV0ZXxGdW5jdGlvbiAxDQotICByZW1v
dmVOYW1lZEl0ZW1OUwlET01OYW1lZE5vZGVNYXA6OlJlbW92ZU5hbWVkSXRlbU5TCURvbnREZWxl
dGV8RnVuY3Rpb24gMg0KKyAgZ2V0TmFtZWRJdGVtTlMgICAgRE9NTmFtZWROb2RlTWFwOjpHZXRO
YW1lZEl0ZW1OUyAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyDQorICBzZXROYW1lZEl0ZW1OUyAg
ICBET01OYW1lZE5vZGVNYXA6OlNldE5hbWVkSXRlbU5TICAgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDENCisgIHJlbW92ZU5hbWVkSXRlbU5TIERPTU5hbWVkTm9kZU1hcDo6UmVtb3ZlTmFtZWRJdGVt
TlMgIERvbnREZWxldGV8RnVuY3Rpb24gMg0KIEBlbmQNCiAqLw0KIERFRklORV9QUk9UT1RZUEUo
Ik5hbWVkTm9kZU1hcCIsIERPTU5hbWVkTm9kZU1hcFByb3RvKQ0KQEAgLTEzODgsOCArMTM4OCw4
IEBAIElNUExFTUVOVF9QUk9UT1RZUEUoRE9NTmFtZWROb2RlTWFwUHJvdG8NCiBjb25zdCBDbGFz
c0luZm8gRE9NTmFtZWROb2RlTWFwOjppbmZvID0geyAiTmFtZWROb2RlTWFwIiwgMCwgMCwgMCB9
Ow0KIA0KIERPTU5hbWVkTm9kZU1hcDo6RE9NTmFtZWROb2RlTWFwKEV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgRE9NOjpOYW1lZE5vZGVNYXAgJm0pDQotICA6IG1hcChtKSANCi17IA0KKyAgOiBtYXAo
bSkNCit7DQogICBzZXRQcm90b3R5cGUoRE9NTmFtZWROb2RlTWFwUHJvdG86OnNlbGYoZXhlYykp
Ow0KIH0NCiANCkBAIC0xNDU5LDkgKzE0NTksOSBAQCBjb25zdCBDbGFzc0luZm8gRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uDQogDQogLyogU291cmNlIGZvciBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuDQogQGJlZ2luIERP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvblRhYmxlIDMNCi0gIHRhcmdldAlET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OlRhcmdldAlEb250RGVsZXRlfFJlYWRPbmx5DQotICBkYXRhCQlET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OkRhdGEJCURvbnREZWxldGUNCi0gIHNoZWV0CQlET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OlNoZWV0CQlEb250RGVsZXRlfFJlYWRPbmx5DQorICB0YXJnZXQgICAgRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpUYXJnZXQgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAg
ZGF0YSAgICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6RGF0YSAgICAgIERvbnREZWxldGUN
CisgIHNoZWV0ICAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlNoZWV0ICAgICBEb250RGVs
ZXRlfFJlYWRPbmx5DQogQGVuZA0KICovDQogVmFsdWUgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
Ojp0cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUp
IGNvbnN0DQpAQCAtMTQ5OSw4ICsxNDk5LDggQEAgY29uc3QgQ2xhc3NJbmZvIERPTU5vdGF0aW9u
OjppbmZvID0geyAiTg0KIA0KIC8qIFNvdXJjZSBmb3IgRE9NTm90YXRpb25UYWJsZS4gVXNlICJt
YWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuDQogQGJlZ2luIERPTU5vdGF0aW9uVGFibGUg
Mg0KLSAgcHVibGljSWQJCURPTU5vdGF0aW9uOjpQdWJsaWNJZAlEb250RGVsZXRlfFJlYWRPbmx5
DQotICBzeXN0ZW1JZAkJRE9NTm90YXRpb246OlN5c3RlbUlkCURvbnREZWxldGV8UmVhZE9ubHkN
CisgIHB1YmxpY0lkICAgICAgRE9NTm90YXRpb246OlB1YmxpY0lkICAgRG9udERlbGV0ZXxSZWFk
T25seQ0KKyAgc3lzdGVtSWQgICAgICBET01Ob3RhdGlvbjo6U3lzdGVtSWQgICBEb250RGVsZXRl
fFJlYWRPbmx5DQogQGVuZA0KICovDQogVmFsdWUgRE9NTm90YXRpb246OnRyeUdldChFeGVjU3Rh
dGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QNCkBAIC0xNTI3
LDkgKzE1MjcsOSBAQCBjb25zdCBDbGFzc0luZm8gRE9NRW50aXR5OjppbmZvID0geyAiRW50DQog
DQogLyogU291cmNlIGZvciBET01FbnRpdHlUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRv
IHJlZ2VuZXJhdGUuDQogQGJlZ2luIERPTUVudGl0eVRhYmxlIDINCi0gIHB1YmxpY0lkCQlET01F
bnRpdHk6OlB1YmxpY0lkCQlEb250RGVsZXRlfFJlYWRPbmx5DQotICBzeXN0ZW1JZAkJRE9NRW50
aXR5OjpTeXN0ZW1JZAkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgbm90YXRpb25OYW1lCQlET01F
bnRpdHk6Ok5vdGF0aW9uTmFtZQlEb250RGVsZXRlfFJlYWRPbmx5DQorICBwdWJsaWNJZCAgICAg
IERPTUVudGl0eTo6UHVibGljSWQgICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIHN5c3RlbUlk
ICAgICAgRE9NRW50aXR5OjpTeXN0ZW1JZCAgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgbm90
YXRpb25OYW1lICAgICAgRE9NRW50aXR5OjpOb3RhdGlvbk5hbWUgRG9udERlbGV0ZXxSZWFkT25s
eQ0KIEBlbmQNCiAqLw0KIFZhbHVlIERPTUVudGl0eTo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdA0KQEAgLTE1NjgsNyArMTU2OCw3
IEBAIFZhbHVlIEtKUzo6Z2V0RE9NRG9jdW1lbnROb2RlKEV4ZWNTdGF0ZSANCiAgICAgcmV0ID0g
bmV3IERPTURvY3VtZW50KGV4ZWMsIG4pOw0KIA0KICAgVmFsdWUgdmFsKHJldCk7DQotICANCisN
CiAgIC8vIE1ha2Ugc3VyZSB0aGUgZG9jdW1lbnQgaXMga2VwdCBhcm91bmQgYnkgdGhlIHdpbmRv
dyBvYmplY3QsIGFuZCB3b3JrcyByaWdodCB3aXRoIHRoZQ0KICAgLy8gYmFjay9mb3J3YXJkIGNh
Y2hlLg0KICAgaWYgKG4udmlldygpKSB7DQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgVmFsdWUgS0pT
OjpnZXRET01Eb2N1bWVudE5vZGUoRXhlY1N0YXRlIA0KIA0KIGJvb2wgS0pTOjpjaGVja05vZGVT
ZWN1cml0eShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6Tm9kZSYgbikNCiB7DQotICBpZiAo
IW4uaGFuZGxlKCkpIA0KKyAgaWYgKCFuLmhhbmRsZSgpKQ0KICAgICByZXR1cm4gZmFsc2U7DQog
DQogICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgaW50ZXJwcmV0
ZXIgaXMgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHNwZWNpZmllZCBub2RlDQpAQCAtMTY2MCwxMyAr
MTY2MCwxMiBAQCBWYWx1ZSBLSlM6OmdldERPTU5hbWVkTm9kZU1hcChFeGVjU3RhdGUgDQogDQog
VmFsdWUgS0pTOjpnZXRSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpO
b2RlICZub2RlKQ0KIHsNCi0jaWYgIU5PS0lBX0NIQU5HRVMgIA0KICAgICBET006OkhUTUxFbGVt
ZW50IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhUTUxFbGVtZW50Pihub2RlKTsNCiANCiAg
ICAgaWYgKCFub2RlLmlzTnVsbCgpKSB7DQogICAgICAgICBpZiAobm9kZS5oYW5kbGUoKS0+aWQo
KSA9PSBJRF9BUFBMRVQpIHsNCiAgICAgICAgICAgICBET006OkhUTUxBcHBsZXRFbGVtZW50SW1w
bCAqYXBwbGV0RWxlbWVudCA9IHN0YXRpY19jYXN0PERPTTo6SFRNTEFwcGxldEVsZW1lbnRJbXBs
ICo+KGVsZW1lbnQuaGFuZGxlKCkpOw0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgICAgIGlm
IChhcHBsZXRFbGVtZW50LT5nZXRBcHBsZXRJbnN0YW5jZSgpKSB7DQogICAgICAgICAgICAgICAg
IC8vIFRoZSBpbnN0YW5jZSBpcyBvd25lZCBieSB0aGUgYXBwbGV0IGVsZW1lbnQuDQogICAgICAg
ICAgICAgICAgIFJ1bnRpbWVPYmplY3RJbXAgKmFwcGxldEltcCA9IG5ldyBSdW50aW1lT2JqZWN0
SW1wKGFwcGxldEVsZW1lbnQtPmdldEFwcGxldEluc3RhbmNlKCksIGZhbHNlKTsNCkBAIC0xNjc1
LDcgKzE2NzQsNyBAQCBWYWx1ZSBLSlM6OmdldFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlICplDQog
ICAgICAgICB9DQogICAgICAgICBlbHNlIGlmIChub2RlLmhhbmRsZSgpLT5pZCgpID09IElEX0VN
QkVEKSB7DQogICAgICAgICAgICAgRE9NOjpIVE1MRW1iZWRFbGVtZW50SW1wbCAqZW1iZWRFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8RE9NOjpIVE1MRW1iZWRFbGVtZW50SW1wbCAqPihlbGVtZW50Lmhh
bmRsZSgpKTsNCi0gICAgICAgICAgICANCisNCiAgICAgICAgICAgICBpZiAoZW1iZWRFbGVtZW50
LT5nZXRFbWJlZEluc3RhbmNlKCkpIHsNCiAgICAgICAgICAgICAgICAgUnVudGltZU9iamVjdElt
cCAqcnVudGltZUltcCA9IG5ldyBSdW50aW1lT2JqZWN0SW1wKGVtYmVkRWxlbWVudC0+Z2V0RW1i
ZWRJbnN0YW5jZSgpLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgIHJldHVybiBWYWx1ZShydW50
aW1lSW1wKTsNCkBAIC0xNjgzLDE0ICsxNjgyLDEzIEBAIFZhbHVlIEtKUzo6Z2V0UnVudGltZU9i
amVjdChFeGVjU3RhdGUgKmUNCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFu
ZGxlKCktPmlkKCkgPT0gSURfT0JKRUNUKSB7DQogICAgICAgICAgICAgRE9NOjpIVE1MT2JqZWN0
RWxlbWVudEltcGwgKm9iamVjdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhUTUxPYmplY3RF
bGVtZW50SW1wbCAqPihlbGVtZW50LmhhbmRsZSgpKTsNCi0gICAgICAgICAgICANCisNCiAgICAg
ICAgICAgICBpZiAob2JqZWN0RWxlbWVudC0+Z2V0T2JqZWN0SW5zdGFuY2UoKSkgew0KICAgICAg
ICAgICAgICAgICBSdW50aW1lT2JqZWN0SW1wICpydW50aW1lSW1wID0gbmV3IFJ1bnRpbWVPYmpl
Y3RJbXAob2JqZWN0RWxlbWVudC0+Z2V0T2JqZWN0SW5zdGFuY2UoKSwgZmFsc2UpOw0KICAgICAg
ICAgICAgICAgICByZXR1cm4gVmFsdWUocnVudGltZUltcCk7DQogICAgICAgICAgICAgfQ0KICAg
ICAgICAgfQ0KICAgICB9DQotI2VuZGlmICAgIA0KICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEg
cnVudGltZSBvYmplY3QgcmV0dXJuIHRoZSBhIFZhbHVlIHRoYXQgcmVwb3J0cyBpc051bGwoKSA9
PSB0cnVlLg0KICAgICByZXR1cm4gVmFsdWUoKTsNCiB9DQpAQCAtMTcxMCwxOCArMTcwOCwxOCBA
QCBWYWx1ZSBLSlM6OmdldERPTURPTUltcGxlbWVudGF0aW9uKEV4ZWNTDQogY29uc3QgQ2xhc3NJ
bmZvIE5vZGVDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIk5vZGVDb25zdHJ1Y3RvciIsIDAsICZOb2Rl
Q29uc3RydWN0b3JUYWJsZSwgMCB9Ow0KIC8qIFNvdXJjZSBmb3IgTm9kZUNvbnN0cnVjdG9yVGFi
bGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLg0KIEBiZWdpbiBOb2RlQ29u
c3RydWN0b3JUYWJsZSAxMQ0KLSAgRUxFTUVOVF9OT0RFCQlET006Ok5vZGU6OkVMRU1FTlRfTk9E
RQkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgQVRUUklCVVRFX05PREUJRE9NOjpOb2RlOjpBVFRS
SUJVVEVfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgVEVYVF9OT0RFCQlET006Ok5vZGU6
OlRFWFRfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgQ0RBVEFfU0VDVElPTl9OT0RFCURP
TTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIEVOVElU
WV9SRUZFUkVOQ0VfTk9ERQlET006Ok5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERQlEb250RGVs
ZXRlfFJlYWRPbmx5DQotICBFTlRJVFlfTk9ERQkJRE9NOjpOb2RlOjpFTlRJVFlfTk9ERQkJRG9u
dERlbGV0ZXxSZWFkT25seQ0KKyAgRUxFTUVOVF9OT0RFICAgICAgRE9NOjpOb2RlOjpFTEVNRU5U
X05PREUgICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIEFUVFJJQlVURV9OT0RFICAgIERPTTo6
Tm9kZTo6QVRUUklCVVRFX05PREUgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgVEVYVF9O
T0RFICAgICBET006Ok5vZGU6OlRFWFRfTk9ERSAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQ0K
KyAgQ0RBVEFfU0VDVElPTl9OT0RFICAgIERPTTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFICAg
RG9udERlbGV0ZXxSZWFkT25seQ0KKyAgRU5USVRZX1JFRkVSRU5DRV9OT0RFIERPTTo6Tm9kZTo6
RU5USVRZX1JFRkVSRU5DRV9OT0RFICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIEVOVElUWV9O
T0RFICAgICAgIERPTTo6Tm9kZTo6RU5USVRZX05PREUgICAgICBEb250RGVsZXRlfFJlYWRPbmx5
DQogICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgRE9NOjpOb2RlOjpQUk9DRVNTSU5HX0lO
U1RSVUNUSU9OX05PREUgRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgQ09NTUVOVF9OT0RFCQlET006
Ok5vZGU6OkNPTU1FTlRfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgRE9DVU1FTlRfTk9E
RQkJRE9NOjpOb2RlOjpET0NVTUVOVF9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5DQotICBET0NV
TUVOVF9UWVBFX05PREUJRE9NOjpOb2RlOjpET0NVTUVOVF9UWVBFX05PREUJRG9udERlbGV0ZXxS
ZWFkT25seQ0KLSAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSBET006Ok5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREUJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgTk9UQVRJT05fTk9ERQkJRE9NOjpO
b2RlOjpOT1RBVElPTl9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5DQorICBDT01NRU5UX05PREUg
ICAgICBET006Ok5vZGU6OkNPTU1FTlRfTk9ERSAgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAg
RE9DVU1FTlRfTk9ERSAgICAgRE9NOjpOb2RlOjpET0NVTUVOVF9OT0RFICAgICAgICBEb250RGVs
ZXRlfFJlYWRPbmx5DQorICBET0NVTUVOVF9UWVBFX05PREUgICAgRE9NOjpOb2RlOjpET0NVTUVO
VF9UWVBFX05PREUgICBEb250RGVsZXRlfFJlYWRPbmx5DQorICBET0NVTUVOVF9GUkFHTUVOVF9O
T0RFIERPTTo6Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgRG9udERlbGV0ZXxSZWFkT25s
eQ0KKyAgTk9UQVRJT05fTk9ERSAgICAgRE9NOjpOb2RlOjpOT1RBVElPTl9OT0RFICAgICAgICBE
b250RGVsZXRlfFJlYWRPbmx5DQogQGVuZA0KICovDQogVmFsdWUgTm9kZUNvbnN0cnVjdG9yOjp0
cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNv
bnN0DQpAQCAtMTc3NywyMSArMTc3NSwyMSBAQCBjb25zdCBDbGFzc0luZm8gRE9NRXhjZXB0aW9u
Q29uc3RydWN0b3I6DQogDQogLyogU291cmNlIGZvciBET01FeGNlcHRpb25Db25zdHJ1Y3RvclRh
YmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4NCiBAYmVnaW4gRE9NRXhj
ZXB0aW9uQ29uc3RydWN0b3JUYWJsZSAxNQ0KLSAgSU5ERVhfU0laRV9FUlIJCURPTTo6RE9NRXhj
ZXB0aW9uOjpJTkRFWF9TSVpFX0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgRE9NU1RSSU5H
X1NJWkVfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6RE9NU1RSSU5HX1NJWkVfRVJSCURvbnREZWxl
dGV8UmVhZE9ubHkNCi0gIEhJRVJBUkNIWV9SRVFVRVNUX0VSUgkJRE9NOjpET01FeGNlcHRpb246
OkhJRVJBUkNIWV9SRVFVRVNUX0VSUglEb250RGVsZXRlfFJlYWRPbmx5DQotICBXUk9OR19ET0NV
TUVOVF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpXUk9OR19ET0NVTUVOVF9FUlIJRG9udERlbGV0
ZXxSZWFkT25seQ0KLSAgSU5WQUxJRF9DSEFSQUNURVJfRVJSCQlET006OkRPTUV4Y2VwdGlvbjo6
SU5WQUxJRF9DSEFSQUNURVJfRVJSCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIE5PX0RBVEFfQUxM
T1dFRF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpOT19EQVRBX0FMTE9XRURfRVJSCURvbnREZWxl
dGV8UmVhZE9ubHkNCi0gIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUglET006OkRPTUV4Y2Vw
dGlvbjo6Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSCURvbnREZWxldGV8UmVhZE9ubHkNCi0g
IE5PVF9GT1VORF9FUlIJCQlET006OkRPTUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUgkJRG9udERl
bGV0ZXxSZWFkT25seQ0KLSAgTk9UX1NVUFBPUlRFRF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpO
T1RfU1VQUE9SVEVEX0VSUglEb250RGVsZXRlfFJlYWRPbmx5DQotICBJTlVTRV9BVFRSSUJVVEVf
RVJSCQlET006OkRPTUV4Y2VwdGlvbjo6SU5VU0VfQVRUUklCVVRFX0VSUglEb250RGVsZXRlfFJl
YWRPbmx5DQotICBJTlZBTElEX1NUQVRFX0VSUgkJRE9NOjpET01FeGNlcHRpb246OklOVkFMSURf
U1RBVEVfRVJSCURvbnREZWxldGV8UmVhZE9ubHkNCi0gIFNZTlRBWF9FUlIJCQlET006OkRPTUV4
Y2VwdGlvbjo6U1lOVEFYX0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQ0KLSAgSU5WQUxJRF9NT0RJ
RklDQVRJT05fRVJSCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIJ
RG9udERlbGV0ZXxSZWFkT25seQ0KLSAgTkFNRVNQQUNFX0VSUgkJCURPTTo6RE9NRXhjZXB0aW9u
OjpOQU1FU1BBQ0VfRVJSCQlEb250RGVsZXRlfFJlYWRPbmx5DQotICBJTlZBTElEX0FDQ0VTU19F
UlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX0FDQ0VTU19FUlIJRG9udERlbGV0ZXxSZWFk
T25seQ0KKyAgSU5ERVhfU0laRV9FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTkRFWF9T
SVpFX0VSUiAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5DQorICBET01TVFJJTkdfU0laRV9FUlIg
ICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpET01TVFJJTkdfU0laRV9FUlIgICBEb250RGVsZXRl
fFJlYWRPbmx5DQorICBISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9u
OjpISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgV1JPTkdf
RE9DVU1FTlRfRVJSICAgICAgICBET006OkRPTUV4Y2VwdGlvbjo6V1JPTkdfRE9DVU1FTlRfRVJS
ICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICBET006
OkRPTUV4Y2VwdGlvbjo6SU5WQUxJRF9DSEFSQUNURVJfRVJSICAgIERvbnREZWxldGV8UmVhZE9u
bHkNCisgIE5PX0RBVEFfQUxMT1dFRF9FUlIgICAgICAgRE9NOjpET01FeGNlcHRpb246Ok5PX0RB
VEFfQUxMT1dFRF9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUiAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlIgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIE5PVF9GT1VORF9FUlIgICAgICAgICBET006OkRP
TUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAg
Tk9UX1NVUFBPUlRFRF9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT1RfU1VQUE9SVEVEX0VS
UiAgICBEb250RGVsZXRlfFJlYWRPbmx5DQorICBJTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgIERP
TTo6RE9NRXhjZXB0aW9uOjpJTlVTRV9BVFRSSUJVVEVfRVJSICBEb250RGVsZXRlfFJlYWRPbmx5
DQorICBJTlZBTElEX1NUQVRFX0VSUiAgICAgRE9NOjpET01FeGNlcHRpb246OklOVkFMSURfU1RB
VEVfRVJSICAgIERvbnREZWxldGV8UmVhZE9ubHkNCisgIFNZTlRBWF9FUlIgICAgICAgICAgICBE
T006OkRPTUV4Y2VwdGlvbjo6U1lOVEFYX0VSUiAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5DQor
ICBJTlZBTElEX01PRElGSUNBVElPTl9FUlIgIERPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX01P
RElGSUNBVElPTl9FUlIgRG9udERlbGV0ZXxSZWFkT25seQ0KKyAgTkFNRVNQQUNFX0VSUiAgICAg
ICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOQU1FU1BBQ0VfRVJSICAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5DQorICBJTlZBTElEX0FDQ0VTU19FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJ
TlZBTElEX0FDQ0VTU19FUlIgICBEb250RGVsZXRlfFJlYWRPbmx5DQogQGVuZA0KICovDQogDQpA
QCAtMTg3OCwxNiArMTg3NiwxNiBAQCBWYWx1ZSBET01OYW1lZE5vZGVzQ29sbGVjdGlvbjo6dHJ5
R2V0KEV4DQogICAgICAgRE9NOjpOb2RlIG5vZGUgPSAqaXQ7DQogICAgICAgRE9NOjpOYW1lZE5v
ZGVNYXAgYXR0cmlidXRlcyA9IG5vZGUuYXR0cmlidXRlcygpOw0KICAgICAgIGlmIChhdHRyaWJ1
dGVzLmlzTnVsbCgpKSB7DQotCWNvbnRpbnVlOw0KKyAgICBjb250aW51ZTsNCiAgICAgICB9DQog
DQogICAgICAgRE9NOjpOb2RlIGlkQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJpZCIp
Ow0KICAgICAgIGlmIChpZEF0dHIuaXNOdWxsKCkpIHsNCi0JY29udGludWU7DQorICAgIGNvbnRp
bnVlOw0KICAgICAgIH0NCiANCiAgICAgICBpZiAoaWRBdHRyLm5vZGVWYWx1ZSgpID09IHByb3Bl
cnR5TmFtZS5zdHJpbmcoKSkgew0KLQlyZXR1cm4gZ2V0RE9NTm9kZShleGVjLG5vZGUpOw0KKyAg
ICByZXR1cm4gZ2V0RE9NTm9kZShleGVjLG5vZGUpOw0KICAgICAgIH0NCiAgICAgfQ0KICAgfQ0K
QEAgLTE4OTgsMTggKzE4OTYsMTggQEAgVmFsdWUgRE9NTmFtZWROb2Rlc0NvbGxlY3Rpb246OnRy
eUdldChFeA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCiBjb25zdCBDbGFzc0luZm8gRE9NQ2hh
cmFjdGVyRGF0YTo6aW5mbyA9IHsgIkNoYXJhY3RlckltcCIsDQotCQkJCQkgICZET01Ob2RlOjpp
bmZvLCAmRE9NQ2hhcmFjdGVyRGF0YVRhYmxlLCAwIH07DQorICAgICAgICAgICAgICAgICAgICAg
ICZET01Ob2RlOjppbmZvLCAmRE9NQ2hhcmFjdGVyRGF0YVRhYmxlLCAwIH07DQogLyoNCiBAYmVn
aW4gRE9NQ2hhcmFjdGVyRGF0YVRhYmxlIDINCi0gIGRhdGEJCURPTUNoYXJhY3RlckRhdGE6OkRh
dGEJCURvbnREZWxldGUNCi0gIGxlbmd0aAlET01DaGFyYWN0ZXJEYXRhOjpMZW5ndGgJRG9udERl
bGV0ZXxSZWFkT25seQ0KKyAgZGF0YSAgICAgIERPTUNoYXJhY3RlckRhdGE6OkRhdGEgICAgICBE
b250RGVsZXRlDQorICBsZW5ndGggICAgRE9NQ2hhcmFjdGVyRGF0YTo6TGVuZ3RoICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkNCiBAZW5kDQogQGJlZ2luIERPTUNoYXJhY3RlckRhdGFQcm90b1RhYmxl
IDcNCi0gIHN1YnN0cmluZ0RhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6U3Vic3RyaW5nRGF0YQlEb250
RGVsZXRlfEZ1bmN0aW9uIDINCi0gIGFwcGVuZERhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6QXBwZW5k
RGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDENCi0gIGluc2VydERhdGEJRE9NQ2hhcmFjdGVyRGF0
YTo6SW5zZXJ0RGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDINCi0gIGRlbGV0ZURhdGEJRE9NQ2hh
cmFjdGVyRGF0YTo6RGVsZXRlRGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDINCi0gIHJlcGxhY2VE
YXRhCURPTUNoYXJhY3RlckRhdGE6OlJlcGxhY2VEYXRhCURvbnREZWxldGV8RnVuY3Rpb24gMg0K
KyAgc3Vic3RyaW5nRGF0YSBET01DaGFyYWN0ZXJEYXRhOjpTdWJzdHJpbmdEYXRhIERvbnREZWxl
dGV8RnVuY3Rpb24gMg0KKyAgYXBwZW5kRGF0YSAgICBET01DaGFyYWN0ZXJEYXRhOjpBcHBlbmRE
YXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQ0KKyAgaW5zZXJ0RGF0YSAgICBET01DaGFyYWN0
ZXJEYXRhOjpJbnNlcnREYXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24gMg0KKyAgZGVsZXRlRGF0
YSAgICBET01DaGFyYWN0ZXJEYXRhOjpEZWxldGVEYXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24g
Mg0KKyAgcmVwbGFjZURhdGEgICBET01DaGFyYWN0ZXJEYXRhOjpSZXBsYWNlRGF0YSAgIERvbnRE
ZWxldGV8RnVuY3Rpb24gMg0KIEBlbmQNCiAqLw0KIERFRklORV9QUk9UT1RZUEUoIkRPTUNoYXJh
Y3RlckRhdGEiLERPTUNoYXJhY3RlckRhdGFQcm90bykNCkBAIC0xOTE3LDEzICsxOTE1LDEzIEBA
IElNUExFTUVOVF9QUk9UT0ZVTkMoRE9NQ2hhcmFjdGVyRGF0YVByb3QNCiBJTVBMRU1FTlRfUFJP
VE9UWVBFX1dJVEhfUEFSRU5UKERPTUNoYXJhY3RlckRhdGFQcm90byxET01DaGFyYWN0ZXJEYXRh
UHJvdG9GdW5jLCBET01Ob2RlUHJvdG8pDQogDQogRE9NQ2hhcmFjdGVyRGF0YTo6RE9NQ2hhcmFj
dGVyRGF0YShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6Q2hhcmFjdGVyRGF0YSAmZCkNCi0g
OiBET01Ob2RlKGQpIA0KKyA6IERPTU5vZGUoZCkNCiB7DQogICBzZXRQcm90b3R5cGUoRE9NQ2hh
cmFjdGVyRGF0YVByb3RvOjpzZWxmKGV4ZWMpKTsNCiB9DQogDQogRE9NQ2hhcmFjdGVyRGF0YTo6
RE9NQ2hhcmFjdGVyRGF0YShjb25zdCBET006OkNoYXJhY3RlckRhdGEgJmQpDQotIDogRE9NTm9k
ZShkKSANCisgOiBET01Ob2RlKGQpDQogew0KIH0NCiANCkBAIC0xOTc0LDkgKzE5NzIsOSBAQCBW
YWx1ZSBET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jOjp0cnlDYWxsDQogICAgICAgICBET006Ol9l
eGNlcHRpb25jb2RlID0gRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUjsNCiAgICAgICAgIHJl
dHVybiBVbmRlZmluZWQoKTsNCiAgICAgICB9DQotI2Vsc2UgICAgICANCisjZWxzZQ0KICAgICAg
ICAgdGhyb3cgRE9NRXhjZXB0aW9uKERPTUV4Y2VwdGlvbjo6SU5ERVhfU0laRV9FUlIpOw0KLSNl
bmRpZiAgICAgICAgDQorI2VuZGlmDQogICAgICAgcmV0dXJuIGdldFN0cmluZ09yTnVsbChkYXRh
LnN1YnN0cmluZ0RhdGEoYXJnc1swXS50b0ludDMyKGV4ZWMpLCBjb3VudCkpOw0KICAgICB9DQog
ICAgIGNhc2UgRE9NQ2hhcmFjdGVyRGF0YTo6QXBwZW5kRGF0YToNCkBAIC0xOTkzLDkgKzE5OTEs
OSBAQCBWYWx1ZSBET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jOjp0cnlDYWxsDQogICAgICAgICBE
T006Ol9leGNlcHRpb25jb2RlID0gRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUjsNCiAgICAg
ICAgIHJldHVybiBVbmRlZmluZWQoKTsNCiAgICAgICB9DQotI2Vsc2UgICAgIA0KKyNlbHNlDQog
ICAgICAgICB0aHJvdyBET01FeGNlcHRpb24oRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUik7
DQotI2VuZGlmICANCisjZW5kaWYNCiAgICAgICBkYXRhLmRlbGV0ZURhdGEoYXJnc1swXS50b0lu
dDMyKGV4ZWMpLCBjb3VudCk7DQogICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOw0KICAgICB9DQpA
QCAtMjAwNyw5ICsyMDA1LDkgQEAgVmFsdWUgRE9NQ2hhcmFjdGVyRGF0YVByb3RvRnVuYzo6dHJ5
Q2FsbA0KICAgICAgICAgRE9NOjpfZXhjZXB0aW9uY29kZSA9IERPTUV4Y2VwdGlvbjo6SU5ERVhf
U0laRV9FUlI7DQogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7DQogICAgICAgfQ0KLSNlbHNl
ICAgICAgDQorI2Vsc2UNCiAgICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246
OklOREVYX1NJWkVfRVJSKTsNCi0jZW5kaWYgIA0KKyNlbmRpZg0KICAgICAgIGRhdGEucmVwbGFj
ZURhdGEoYXJnc1swXS50b0ludDMyKGV4ZWMpLCBjb3VudCwgYXJnc1syXS50b1N0cmluZyhleGVj
KS5zdHJpbmcoKSk7DQogICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOw0KICAgICB9DQpAQCAtMjAy
MSwxMCArMjAxOSwxMCBAQCBWYWx1ZSBET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jOjp0cnlDYWxs
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIGNvbnN0IENsYXNzSW5mbyBET01UZXh0OjppbmZv
ID0geyAiVGV4dCIsDQotCQkJCSAmRE9NQ2hhcmFjdGVyRGF0YTo6aW5mbywgMCwgMCB9Ow0KKyAg
ICAgICAgICAgICAgICAgJkRPTUNoYXJhY3RlckRhdGE6OmluZm8sIDAsIDAgfTsNCiAvKg0KIEBi
ZWdpbiBET01UZXh0UHJvdG9UYWJsZSAxDQotICBzcGxpdFRleHQJRE9NVGV4dDo6U3BsaXRUZXh0
CURvbnREZWxldGV8RnVuY3Rpb24gMQ0KKyAgc3BsaXRUZXh0IERPTVRleHQ6OlNwbGl0VGV4dCAg
RG9udERlbGV0ZXxGdW5jdGlvbiAxDQogQGVuZA0KICovDQogREVGSU5FX1BST1RPVFlQRSgiRE9N
VGV4dCIsRE9NVGV4dFByb3RvKQ0KQEAgLTIwMzIsOCArMjAzMCw4IEBAIElNUExFTUVOVF9QUk9U
T0ZVTkMoRE9NVGV4dFByb3RvRnVuYykNCiBJTVBMRU1FTlRfUFJPVE9UWVBFX1dJVEhfUEFSRU5U
KERPTVRleHRQcm90byxET01UZXh0UHJvdG9GdW5jLERPTUNoYXJhY3RlckRhdGFQcm90bykNCiAN
CiBET01UZXh0OjpET01UZXh0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpUZXh0ICZ0KQ0K
LSAgOiBET01DaGFyYWN0ZXJEYXRhKHQpIA0KLXsgDQorICA6IERPTUNoYXJhY3RlckRhdGEodCkN
Cit7DQogICBzZXRQcm90b3R5cGUoRE9NVGV4dFByb3RvOjpzZWxmKGV4ZWMpKTsNCiB9DQogDQpJ
bmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMjIs
NiArMzIyLDkgQEAgV2luZG93OjpXaW5kb3coS0hUTUxQYXJ0ICpwKQ0KICAgLCBoaXN0b3J5KDAp
DQogICAsIGZyYW1lcygwKQ0KICAgLCBsb2MoMCkNCisjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRT
DQorICAsIG1fd2lkZ2V0KDApDQorI2VuZGlmDQogICAsIG1fc2VsZWN0aW9uKDApDQogICAsIG1f
bG9jYXRpb25iYXIoMCkNCiAgICwgbV9tZW51YmFyKDApDQpAQCAtNDgzLDYgKzQ4NiwxMCBAQCB2
b2lkIFdpbmRvdzo6bWFyaygpDQogICAgIG1fc3RhdHVzYmFyLT5tYXJrKCk7DQogICBpZiAobV90
b29sYmFyICYmICFtX3Rvb2xiYXItPm1hcmtlZCgpKQ0KICAgICBtX3Rvb2xiYXItPm1hcmsoKTsN
CisjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRTDQorICBpZiAobV93aWRnZXQgJiYgIW1fd2lkZ2V0
LT5tYXJrZWQoKSkNCisgICAgbV93aWRnZXQtPm1hcmsoKTsNCisjZW5kaWYNCiB9DQogDQogVVN0
cmluZyBXaW5kb3c6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqKSBjb25zdA0KQEAgLTgwNyw2ICs4MTQs
MTIgQEAgVmFsdWUgV2luZG93OjpnZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdA0KICNlbmRpZg0K
ICAgICBjYXNlIExvY2F0aW9uYmFyOg0KICAgICAgIHJldHVybiBWYWx1ZShsb2NhdGlvbmJhcihl
eGVjKSk7DQorI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICBjYXNlIF9XaWRnZXQ6DQor
ICAgICAgICByZXR1cm4gVmFsdWUobV93aWRnZXQgPyBtX3dpZGdldCA6DQorICAgICAgICAgICAg
ICAgICAgIChjb25zdF9jYXN0PFdpbmRvdyo+KHRoaXMpLT5tX3dpZGdldCA9IEtXUShtX3BhcnQp
LT5jcmVhdGVXaWRnZXRPYmplY3QoZXhlYykpKTsNCisNCisjZW5kaWYNCiAgICAgY2FzZSBNZW51
YmFyOg0KICAgICAgIHJldHVybiBWYWx1ZShtZW51YmFyKGV4ZWMpKTsNCiAgICAgY2FzZSBPZmZz
Y3JlZW5CdWZmZXJpbmc6DQpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0xMDEsMTMgKzEwMSwxMyBAQCBuYW1lc3BhY2UgS0pTIHsNCiAgICAgYm9vbCBoYXNU
aW1lb3V0cygpOw0KICAgICBRTWFwPGludCwgU2NoZWR1bGVkQWN0aW9uKj4gKnBhdXNlVGltZW91
dHMoY29uc3Qgdm9pZCAqa2V5KTsNCiAgICAgdm9pZCByZXN1bWVUaW1lb3V0cyhRTWFwPGludCwg
U2NoZWR1bGVkQWN0aW9uKj4qc2EsIGNvbnN0IHZvaWQgKmtleSk7DQotICAgIA0KKw0KICAgICBL
SlM6OkludGVycHJldGVyICppbnRlcnByZXRlcigpIGNvbnN0Ow0KIA0KICAgICBzdGF0aWMgYm9v
bCBpc1NhZmVTY3JpcHQgKGNvbnN0IEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXIgKm9yaWdpbiwgY29u
c3QgS0pTOjpTY3JpcHRJbnRlcnByZXRlciAqdGFyZ2V0KTsNCiAjZW5kaWYNCiAgICAgdm9pZCBz
Y2hlZHVsZUNsb3NlKCk7DQotICAgICAgICANCisNCiAgICAgYm9vbCBpc1NhZmVTY3JpcHQoRXhl
Y1N0YXRlICpleGVjKSBjb25zdDsNCiAgICAgTG9jYXRpb24gKmxvY2F0aW9uKCkgY29uc3Q7DQog
ICAgIFNlbGVjdGlvbiAqc2VsZWN0aW9uKCkgY29uc3Q7DQpAQCAtMTQxLDEzICsxNDEsMTcgQEAg
bmFtZXNwYWNlIEtKUyB7DQogICAgICAgICAgICBTY3JlZW5Ub3AsIFNjcmVlbkxlZnQsDQogICAg
ICAgICAgICBTY3JvbGxUbywgU2Nyb2xsWCwgU2Nyb2xsWSwgTW92ZUJ5LCBNb3ZlVG8sIFJlc2l6
ZUJ5LCBSZXNpemVUbywgU2VsZiwgX1dpbmRvdywgVG9wLCBfU2NyZWVuLA0KICAgICAgICAgICAg
SW1hZ2UsIE9wdGlvbiwgQWxlcnQsIENvbmZpcm0sIFByb21wdCwgT3BlbiwgUHJpbnQsIFNldFRp
bWVvdXQsIENsZWFyVGltZW91dCwNCi0gICAgICAgICAgIEZvY3VzLCBHZXRTZWxlY3Rpb24sIEJs
dXIsIENsb3NlLCBTZXRJbnRlcnZhbCwgQ2xlYXJJbnRlcnZhbCwgQ2FwdHVyZUV2ZW50cywgDQor
ICAgICAgICAgICBGb2N1cywgR2V0U2VsZWN0aW9uLCBCbHVyLCBDbG9zZSwgU2V0SW50ZXJ2YWws
IENsZWFySW50ZXJ2YWwsIENhcHR1cmVFdmVudHMsDQogICAgICAgICAgICBSZWxlYXNlRXZlbnRz
LCBBZGRFdmVudExpc3RlbmVyLCBSZW1vdmVFdmVudExpc3RlbmVyLCBYTUxIdHRwUmVxdWVzdCwg
WE1MU2VyaWFsaXplciwgRE9NUGFyc2VyLA0KLSAgICAgT25hYm9ydCwgT25ibHVyLCBPbmNoYW5n
ZSwgT25jbGljaywgT25kYmxjbGljaywgT25kcmFnZHJvcCwgT25lcnJvciwgDQorICAgICBPbmFi
b3J0LCBPbmJsdXIsIE9uY2hhbmdlLCBPbmNsaWNrLCBPbmRibGNsaWNrLCBPbmRyYWdkcm9wLCBP
bmVycm9yLA0KICAgICAgT25mb2N1cywgT25rZXlkb3duLCBPbmtleXByZXNzLCBPbmtleXVwLCBP
bmxvYWQsIE9ubW91c2Vkb3duLCBPbm1vdXNlbW92ZSwNCiAgICAgICAgICAgIE9ubW91c2VvdXQs
IE9ubW91c2VvdmVyLCBPbm1vdXNldXAsIE9uV2luZG93TW91c2VXaGVlbCwgT25tb3ZlLCBPbnJl
c2V0LCBPbnJlc2l6ZSwgT25zY3JvbGwsIE9uc2VhcmNoLA0KICAgICAgICAgICAgT25zZWxlY3Qs
IE9uc3VibWl0LCBPbnVubG9hZCwgT25iZWZvcmV1bmxvYWQsDQotICAgICAgICAgICBTdGF0dXNi
YXIsIFRvb2xiYXIsIEZyYW1lRWxlbWVudCwgU2hvd01vZGFsRGlhbG9nIH07DQorICAgICAgICAg
ICBTdGF0dXNiYXIsIFRvb2xiYXIsIEZyYW1lRWxlbWVudCwgU2hvd01vZGFsRGlhbG9nDQorI2lm
ZGVmIE5PS0lBX0NIQU5HRVMNCisgICAgICAgICAgICxfV2lkZ2V0DQorI2VuZGlmDQorICAgICAg
ICAgICB9Ow0KICAgcHJvdGVjdGVkOg0KICAgICBWYWx1ZSBnZXRMaXN0ZW5lcihFeGVjU3RhdGUg
KmV4ZWMsIGludCBldmVudElkKSBjb25zdDsNCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihFeGVjU3Rh
dGUgKmV4ZWMsIGludCBldmVudElkLCBWYWx1ZSBmdW5jKTsNCkBAIC0xNTUsNiArMTU5LDkgQEAg
bmFtZXNwYWNlIEtKUyB7DQogICAgIHZvaWQgdXBkYXRlTGF5b3V0KGJvb2wgaWdub3JlU3R5bGVz
aGVldHMgPSB0cnVlKSBjb25zdDsNCiANCiAgICAgUUd1YXJkZWRQdHI8S0hUTUxQYXJ0PiBtX3Bh
cnQ7DQorI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICBPYmplY3RJbXAgKm1fd2lkZ2V0
Ow0KKyNlbmRpZg0KICAgICBTY3JlZW4gKnNjcmVlbjsNCiAgICAgSGlzdG9yeSAqaGlzdG9yeTsN
CiAgICAgRnJhbWVBcnJheSAqZnJhbWVzOw0KQEAgLTI0MSw4ICsyNDgsOCBAQCBuYW1lc3BhY2Ug
S0pTIHsNCiAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50
aWZpZXIgJnByb3BlcnR5TmFtZSwgY29uc3QgVmFsdWUgJnZhbHVlLCBpbnQgYXR0ciA9IE5vbmUp
Ow0KICAgICB2aXJ0dWFsIFZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqZXhlYywgVHlwZSBw
cmVmZXJyZWQpIGNvbnN0Ow0KICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
ICpleGVjKSBjb25zdDsNCi0gICAgZW51bSB7IEFuY2hvck5vZGUsIEFuY2hvck9mZnNldCwgRm9j
dXNOb2RlLCBGb2N1c09mZnNldCwgQmFzZU5vZGUsIEJhc2VPZmZzZXQsIEV4dGVudE5vZGUsIEV4
dGVudE9mZnNldCwgDQotICAgICAgICAgICBJc0NvbGxhcHNlZCwgX1R5cGUsIEVxdWFsRXF1YWws
IENvbGxhcHNlLCBDb2xsYXBzZVRvRW5kLCBDb2xsYXBzZVRvU3RhcnQsIEVtcHR5LCBUb1N0cmlu
ZywgDQorICAgIGVudW0geyBBbmNob3JOb2RlLCBBbmNob3JPZmZzZXQsIEZvY3VzTm9kZSwgRm9j
dXNPZmZzZXQsIEJhc2VOb2RlLCBCYXNlT2Zmc2V0LCBFeHRlbnROb2RlLCBFeHRlbnRPZmZzZXQs
DQorICAgICAgICAgICBJc0NvbGxhcHNlZCwgX1R5cGUsIEVxdWFsRXF1YWwsIENvbGxhcHNlLCBD
b2xsYXBzZVRvRW5kLCBDb2xsYXBzZVRvU3RhcnQsIEVtcHR5LCBUb1N0cmluZywNCiAgICAgICAg
ICAgIFNldEJhc2VBbmRFeHRlbnQsIFNldFBvc2l0aW9uLCBNb2RpZnkgfTsNCiAgICAgS0hUTUxQ
YXJ0ICpwYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJ0OyB9DQogICAgIHZpcnR1YWwgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQ0KSW5kZXg6IFdl
YkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9raHRtbC9lY21hL2tqc193aW5kb3cubHV0LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNv
cmUva2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNyAr
MjksNyBAQCBjb25zdCBzdHJ1Y3QgSGFzaEVudHJ5IFdpbmRvd1RhYmxlRW50cmllDQogICAgeyAi
Q1NTUnVsZSIsIFdpbmRvdzo6Q1NTUnVsZSwgRG9udERlbGV0ZSwgMCwgJldpbmRvd1RhYmxlRW50
cmllc1sxMTJdIH0sDQogICAgeyAibGVuZ3RoIiwgV2luZG93OjpMZW5ndGgsIERvbnREZWxldGV8
UmVhZE9ubHksIDAsIDAgfSwNCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwNCi0gICB7IDAsIDAsIDAs
IDAsIDAgfSwNCisgICB7ICJ3aWRnZXQiLCBXaW5kb3c6Ol9XaWRnZXQsIERvbnREZWxldGV8RnVu
Y3Rpb24sIDAsIDAgfSwNCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwNCiAgICB7IDAsIDAsIDAsIDAs
IDAgfSwNCiAgICB7IDAsIDAsIDAsIDAsIDAgfSwNCkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwv
aHRtbF9vYmplY3RpbXBsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvaHRtbC9o
dG1sX29iamVjdGltcGwuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2h0
bWwvaHRtbF9vYmplY3RpbXBsLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTE5OSw3ICsxOTksNiBA
QCBib29sIEhUTUxBcHBsZXRFbGVtZW50SW1wbDo6Y2FsbE1lbWJlcihjDQogfQ0KIA0KICNpZiBB
UFBMRV9DSEFOR0VTDQotI2lmICFOT0tJQV9DSEFOR0VTDQogS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2UgKkhUTUxBcHBsZXRFbGVtZW50SW1wbDo6Z2V0QXBwbGV0SW5zdGFuY2UoKSBjb25zdA0KIHsN
CiAgICAgS0hUTUxQYXJ0KiBwYXJ0ID0gZ2V0RG9jdW1lbnQoKS0+cGFydCgpOw0KQEAgLTIwOCw3
ICsyMDcsNyBAQCBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqSFRNTEFwcGxldEVsZW1lDQogDQog
ICAgIGlmIChhcHBsZXRJbnN0YW5jZSkNCiAgICAgICAgIHJldHVybiBhcHBsZXRJbnN0YW5jZTsN
Ci0NCisjaWYgIU5PS0lBX0NIQU5HRVMNCiAgICAgUmVuZGVyQXBwbGV0ICpyID0gc3RhdGljX2Nh
c3Q8UmVuZGVyQXBwbGV0Kj4obV9yZW5kZXIpOw0KICAgICBpZiAocikgew0KICAgICAgICAgci0+
Y3JlYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsNCkBAIC0yMTksOSArMjE4LDkgQEAgS0pTOjpCaW5k
aW5nczo6SW5zdGFuY2UgKkhUTUxBcHBsZXRFbGVtZQ0KICAgICAgICAgICAgIGFwcGxldEluc3Rh
bmNlID0gS1dRKHBhcnQpLT5nZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcoKE5TVmlldyAqKV92aWV3
KTsNCiAgICAgICAgIH0NCiAgICAgfQ0KKyNlbmRpZg0KICAgICByZXR1cm4gYXBwbGV0SW5zdGFu
Y2U7DQogfQ0KLSNlbmRpZg0KIA0KIHZvaWQgSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpjbG9zZVJl
bmRlcmVyKCkNCiB7DQpAQCAtMjQzLDkgKzI0Miw3IEBAIGJvb2wgSFRNTEFwcGxldEVsZW1lbnRJ
bXBsOjphbGxQYXJhbXNBdmENCiANCiBIVE1MRW1iZWRFbGVtZW50SW1wbDo6SFRNTEVtYmVkRWxl
bWVudEltcGwoRG9jdW1lbnRQdHIgKmRvYykNCiAgICAgOiBIVE1MRWxlbWVudEltcGwoZG9jKQ0K
LSNpZiAhTk9LSUFfQ0hBTkdFUw0KICAgICAsIGVtYmVkSW5zdGFuY2UoMCkNCi0jZW5kaWYNCiB7
DQogI2lmIE5PS0lBX0NIQU5HRVMNCiAgIG5lZWRXaWRnZXRVcGRhdGUgPSBmYWxzZTsNCkBAIC0y
NjEsNyArMjU4LDcgQEAgTm9kZUltcGw6OklkIEhUTUxFbWJlZEVsZW1lbnRJbXBsOjppZCgpIA0K
ICAgICByZXR1cm4gSURfRU1CRUQ7DQogfQ0KIA0KLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJ
QV9DSEFOR0VTDQorI2lmIEFQUExFX0NIQU5HRVMNCiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAq
SFRNTEVtYmVkRWxlbWVudEltcGw6OmdldEVtYmVkSW5zdGFuY2UoKSBjb25zdA0KIHsNCiAgICAg
S0hUTUxQYXJ0KiBwYXJ0ID0gZ2V0RG9jdW1lbnQoKS0+cGFydCgpOw0KQEAgLTI3NywxMCArMjc0
LDE3IEBAIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpIVE1MRW1iZWRFbGVtZW4NCiAgICAgICAg
ICAgICAvLyBDYWxsIGludG8gdGhlIHBhcnQgKGFuZCBvdmVyIHRoZSBicmlkZ2UpIHRvIHB1bGwg
dGhlIEJpbmRpbmdzOjpJbnN0YW5jZQ0KICAgICAgICAgICAgIC8vIGZyb20gdGhlIGd1dHMgb2Yg
dGhlIEphdmEgVk0uDQogICAgICAgICAgICAgdm9pZCAqX3ZpZXcgPSByLT53aWRnZXQoKS0+Z2V0
VmlldygpOw0KKyNpZiBOT0tJQV9DSEFOR0VTDQorICAgICAgICAgICAgZW1iZWRJbnN0YW5jZSA9
IEtXUShwYXJ0KS0+Z2V0RW1iZWRJbnN0YW5jZUZvclZpZXcoKE1XZWJDb3JlV2lkZ2V0ICopX3Zp
ZXcpOw0KKyAgICAgICAgICAgIC8vIEFwcGxldCBtYXkgc3BlY2lmaWVkIHdpdGggPGVtYmVkPiB0
YWcuDQorICAgICAgICAgICAgaWYgKCFlbWJlZEluc3RhbmNlKQ0KKyAgICAgICAgICAgICAgICBl
bWJlZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcoKE1XZWJD
b3JlV2lkZ2V0ICopX3ZpZXcpOw0KKyNlbHNlDQogICAgICAgICAgICAgZW1iZWRJbnN0YW5jZSA9
IEtXUShwYXJ0KS0+Z2V0RW1iZWRJbnN0YW5jZUZvclZpZXcoKE5TVmlldyAqKV92aWV3KTsNCiAg
ICAgICAgICAgICAvLyBBcHBsZXQgbWF5IHNwZWNpZmllZCB3aXRoIDxlbWJlZD4gdGFnLg0KICAg
ICAgICAgICAgIGlmICghZW1iZWRJbnN0YW5jZSkNCiAgICAgICAgICAgICAgICAgZW1iZWRJbnN0
YW5jZSA9IEtXUShwYXJ0KS0+Z2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3KChOU1ZpZXcgKilfdmll
dyk7DQorI2VuZGlmDQogICAgICAgICB9DQogICAgIH0NCiAgICAgcmV0dXJuIGVtYmVkSW5zdGFu
Y2U7DQpAQCAtNTY4LDcgKzU3Miw3IEBAIE5vZGVJbXBsOjpJZCBIVE1MT2JqZWN0RWxlbWVudElt
cGw6OmlkKCkNCiAgICAgcmV0dXJuIElEX09CSkVDVDsNCiB9DQogDQotI2lmIEFQUExFX0NIQU5H
RVMgJiYgIU5PS0lBX0NIQU5HRVMNCisjaWYgQVBQTEVfQ0hBTkdFUw0KIEtKUzo6QmluZGluZ3M6
Okluc3RhbmNlICpIVE1MT2JqZWN0RWxlbWVudEltcGw6OmdldE9iamVjdEluc3RhbmNlKCkgY29u
c3QNCiB7DQogICAgIEtIVE1MUGFydCogcGFydCA9IGdldERvY3VtZW50KCktPnBhcnQoKTsNCkBA
IC01ODEsNyArNTg1LDExIEBAIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpIVE1MT2JqZWN0RWxl
bWUNCiAgICAgaWYgKFJlbmRlck9iamVjdCAqciA9IG1fcmVuZGVyKSB7DQogICAgICAgICBpZiAo
ci0+aXNXaWRnZXQoKSkgew0KICAgICAgICAgICAgIGlmIChRV2lkZ2V0ICp3aWRnZXQgPSBzdGF0
aWNfY2FzdDxSZW5kZXJXaWRnZXQgKj4ociktPndpZGdldCgpKSB7DQorI2lmIE5PS0lBX0NIQU5H
RVMgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIGlmIChNV2ViQ29yZVdpZGdldCAq
dmlldyA9IHdpZGdldC0+Z2V0VmlldygpKSAgew0KKyNlbHNlDQogICAgICAgICAgICAgICAgIGlm
IChOU1ZpZXcgKnZpZXcgPSB3aWRnZXQtPmdldFZpZXcoKSkgIHsNCisjZW5kaWYNCiAgICAgICAg
ICAgICAgICAgICAgIC8vIENhbGwgaW50byB0aGUgcGFydCAoYW5kIG92ZXIgdGhlIGJyaWRnZSkg
dG8gcHVsbCB0aGUgQmluZGluZ3M6Okluc3RhbmNlDQogICAgICAgICAgICAgICAgICAgICAvLyBm
cm9tIHRoZSBndXRzIG9mIHRoZSBwbHVnaW4uDQogICAgICAgICAgICAgICAgICAgICBvYmplY3RJ
bnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0T2JqZWN0SW5zdGFuY2VGb3JWaWV3KHZpZXcpOw0KSW5k
ZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuaAkocmV2aXNpb24gMTcwNjkpDQor
KysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtNjQsMTkgKzY0LDE2IEBAIHB1YmxpYzoNCiAjaWYgQVBQTEVfQ0hBTkdFUw0KICAgICB2aXJ0
dWFsIGJvb2wgYWxsUGFyYW1zQXZhaWxhYmxlKCk7DQogICAgIHZvaWQgc2V0dXBBcHBsZXQoKSBj
b25zdDsNCi0jaWYgIU5PS0lBX0NIQU5HRVMNCisNCiAgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2UgKmdldEFwcGxldEluc3RhbmNlKCkgY29uc3Q7DQogI2VuZGlmDQotI2VuZGlmDQogDQogcHJv
dGVjdGVkOg0KICAgICBraHRtbDo6VkFsaWduIHZhbGlnbjsNCiANCiBwcml2YXRlOg0KICNpZiBB
UFBMRV9DSEFOR0VTDQotI2lmICFOT0tJQV9DSEFOR0VTDQogICAgIG11dGFibGUgS0pTOjpCaW5k
aW5nczo6SW5zdGFuY2UgKmFwcGxldEluc3RhbmNlOw0KLSNlbmRpZg0KICAgICBib29sIG1fYWxs
UGFyYW1zQXZhaWxhYmxlOw0KICNlbmRpZg0KIH07DQpAQCAtMTEzLDcgKzExMCw3IEBAIHB1Ymxp
YzoNCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnRJbXBsICpldnQp
Ow0KICNlbmRpZg0KIA0KLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTDQorI2lm
IEFQUExFX0NIQU5HRVMNCiAgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEVtYmVkSW5z
dGFuY2UoKSBjb25zdDsNCiAjZW5kaWYNCiANCkBAIC0xMjQsNyArMTIxLDcgQEAgcHVibGljOg0K
ICAgYm9vbCBuZWVkV2lkZ2V0VXBkYXRlOw0KICAgICBIVE1MSW1hZ2VMb2FkZXIqIG1faW1hZ2VM
b2FkZXI7DQogI2VuZGlmDQotI2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMNCisj
aWYgQVBQTEVfQ0hBTkdFUw0KIHByaXZhdGU6DQogICAgIG11dGFibGUgS0pTOjpCaW5kaW5nczo6
SW5zdGFuY2UgKmVtYmVkSW5zdGFuY2U7DQogI2VuZGlmDQpAQCAtMTg2LDcgKzE4Myw3IEBAIHB1
YmxpYzoNCiANCiAgICAgdm9pZCByZW5kZXJGYWxsYmFja0NvbnRlbnQoKTsNCiANCi0jaWYgQVBQ
TEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUw0KKyNpZiBBUFBMRV9DSEFOR0VTDQogICAgIEtK
Uzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRPYmplY3RJbnN0YW5jZSgpIGNvbnN0Ow0KICNlbmRp
Zg0KIA0KQEAgLTE5Nyw3ICsxOTQsNyBAQCBwdWJsaWM6DQogICAgIGJvb2wgbV91c2VGYWxsYmFj
a0NvbnRlbnQgOiAxOw0KICAgICBIVE1MSW1hZ2VMb2FkZXIqIG1faW1hZ2VMb2FkZXI7DQogDQot
I2lmIEFQUExFX0NIQU5HRVMgJiYgIU5PS0lBX0NIQU5HRVMNCisjaWYgQVBQTEVfQ0hBTkdFUw0K
IHByaXZhdGU6DQogICAgIG11dGFibGUgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKm9iamVjdElu
c3RhbmNlOw0KICNlbmRpZg0KSW5kZXg6IFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuY3BwCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
NjIsNiArNjIsOCBAQA0KICNpbmNsdWRlICJranNfd2luZG93LmgiDQogI2VuZGlmDQogDQorI2lu
Y2x1ZGUgInByb3RlY3QuaCINCisjaW5jbHVkZSAia2pzX3dpbmRvdy5oIg0KICNpbmNsdWRlICJy
ZW5kZXJfY2FudmFzLmgiDQogI2luY2x1ZGUgInJlbmRlcl9mcmFtZXMuaCINCiAjaW5jbHVkZSAi
cmVuZGVyX2ltYWdlLmgiDQpAQCAtMjE5LDEwICsyMjEsOSBAQCBLV1FLSFRNTFBhcnQ6OktXUUtI
VE1MUGFydCgpDQogICAgICwgX3VzZXNJbmFjdGl2ZVRleHRCYWNrZ3JvdW5kQ29sb3IoZmFsc2Up
DQogICAgICwgX3Nob3dzRmlyc3RSZXNwb25kZXIodHJ1ZSkNCiAgICAgLCBfZHJhd1NlbGVjdGlv
bk9ubHkoZmFsc2UpDQotI2lmICFLSFRNTF9OT19TQ1JJUFRJTkcNCi0vLyAgICAsIF9iaW5kaW5n
Um9vdCgwKQ0KKyAgICAsIF93aW5kb3dTY3JpcHROUE9iamVjdCgwKQ0KKyAgICAsIF9iaW5kaW5n
Um9vdCgwKQ0KICAgICAsIF93aW5kb3dTY3JpcHRPYmplY3QoMCkNCi0jZW5kaWYNCiAvLyAgICAs
IF9kcmFnU3JjKDApDQogLy8gICAgLCBfZHJhZ0NsaXBib2FyZCgwKQ0KICAgICAsIF9lbGVtZW50
VG9EcmF3KDApDQpAQCAtNzQ5LDcgKzc1MCw3IEBAIHZvaWQgS1dRS0hUTUxQYXJ0OjpzdWJtaXRG
b3JtKGNvbnN0IEtVUkwNCiAgICAgLy8gRklYTUU6IEZyYW1lIHRhcmdldGluZyBpcyBvbmx5IG9u
ZSBvZiB0aGUgd2F5cyB0aGUgc3VibWlzc2lvbiBjb3VsZCBlbmQgdXAgZG9pbmcgc29tZXRoaW5n
IG90aGVyDQogICAgIC8vIHRoYW4gcmVwbGFjaW5nIHRoaXMgZnJhbWUncyBjb250ZW50LCBzbyB0
aGlzIGNoZWNrIGlzIGZsYXdlZC4gT24gdGhlIG90aGVyIGhhbmQsIHRoZSBjaGVjayBpcyBoYXJk
bHkNCiAgICAgLy8gbmVlZGVkIGFueSBtb3JlIG5vdyB0aGF0IHdlIHJlc2V0IF9zdWJtaXR0ZWRG
b3JtVVJMIG9uIGVhY2ggbW91c2Ugb3Iga2V5IGRvd24gZXZlbnQuDQotICAgIA0KKw0KICAgICBD
V2ViQ29yZUJyaWRnZSAqdGFyZ2V0ID0gYXJncy5mcmFtZU5hbWUuaXNFbXB0eSgpID8gX2JyaWRn
ZSA6IF9icmlkZ2UtPkNsaWVudCgpLkZpbmRGcmFtZU5hbWVkKGFyZ3MuZnJhbWVOYW1lLkRlcygp
KTsNCiAgICAgS0hUTUxQYXJ0ICp0YXJnZXRQYXJ0ID0gdGFyZ2V0LT5QYXJ0KCk7DQogICAgIGJv
b2wgd2lsbFJlcGxhY2VUaGlzRnJhbWUgPSBmYWxzZTsNCkBAIC03NTksNyArNzYwLDcgQEAgdm9p
ZCBLV1FLSFRNTFBhcnQ6OnN1Ym1pdEZvcm0oY29uc3QgS1VSTA0KICAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICAgfQ0KICAgICB9DQotICAgIA0KKw0KICAgICBpZiAod2lsbFJlcGxhY2VUaGlz
RnJhbWUpIHsNCiAgICAgICAgIGlmIChfc3VibWl0dGVkRm9ybVVSTCA9PSB1cmwpIHsNCiAgICAg
ICAgICAgICByZXR1cm47DQpAQCAtMTI2MCw4ICsxMjYxLDcgQEAgUVN0cmluZyBLV1FLSFRNTFBh
cnQ6Om1pbWVUeXBlRm9yRmlsZU5hbQ0KICAgfQ0KIH0NCiANCi0jaWYgIUtIVE1MX05PX1NDUklQ
VElORw0KLS8qS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqS1dRS0hUTUxQYXJ0OjpiaW5kaW5n
Um9vdE9iamVjdCgpDQorS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqS1dRS0hUTUxQYXJ0Ojpi
aW5kaW5nUm9vdE9iamVjdCgpDQogew0KICAgICBpZiAoIV9iaW5kaW5nUm9vdCkgew0KICAgICAg
ICAgX2JpbmRpbmdSb290ID0gbmV3IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QoMCk7ICAgIC8v
IFRoZSByb290IGdldHMgZGVsZXRlZCBieSBKYXZhU2NyaXB0Q29yZS4NCkBAIC0xMjczLDcgKzEy
NzMsOCBAQCBRU3RyaW5nIEtXUUtIVE1MUGFydDo6bWltZVR5cGVGb3JGaWxlTmFtDQogICAgIHJl
dHVybiBfYmluZGluZ1Jvb3Q7DQogfQ0KIA0KLVdlYlNjcmlwdE9iamVjdCAqS1dRS0hUTUxQYXJ0
Ojp3aW5kb3dTY3JpcHRPYmplY3QoKQ0KKw0KKy8qV2ViU2NyaXB0T2JqZWN0ICpLV1FLSFRNTFBh
cnQ6OndpbmRvd1NjcmlwdE9iamVjdCgpDQogew0KICAgICBpZiAoIV93aW5kb3dTY3JpcHRPYmpl
Y3QpIHsNCiAgICAgICAgIEtKUzo6T2JqZWN0SW1wICp3aW4gPSBzdGF0aWNfY2FzdDxLSlM6Ok9i
amVjdEltcCAqPihLSlM6OldpbmRvdzo6cmV0cmlldmVXaW5kb3codGhpcykpOw0KQEAgLTEyODIs
NyArMTI4Myw2IEBAIFdlYlNjcmlwdE9iamVjdCAqS1dRS0hUTUxQYXJ0Ojp3aW5kb3dTY3INCiAN
CiAgICAgcmV0dXJuIF93aW5kb3dTY3JpcHRPYmplY3Q7DQogfSovDQotI2VuZGlmDQogDQogdm9p
ZCBLV1FLSFRNTFBhcnQ6OnBhcnRDbGVhcmVkSW5CZWdpbigpDQogew0KQEAgLTI5NTksNDYgKzI5
NTksNDYgQEAgUVJlY3QgS1dRS0hUTUxQYXJ0OjpzZWxlY3Rpb25SZWN0KCkgY29ucw0KIA0KIHZv
aWQgS1dRS0hUTUxQYXJ0OjpnZXRSZW5kZXJUZXh0UmVjdEFycmF5KGNvbnN0IFREZXNDJiBhVGV4
dEVudHJ5LCBjb25zdCBET006Ok5vZGUmIGFOb2RlLCBSQXJyYXk8VFJlY3Q+JiBhRW50cnlSZWN0
TGlzdCkNCiB7DQotICANCi0gICAgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nOjpGcm9tRGVzKGFU
ZXh0RW50cnkpOyAgICANCi0gICAgDQorDQorICAgIFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZzo6
RnJvbURlcyhhVGV4dEVudHJ5KTsNCisNCiAgICAgY29uc3QgbG9uZyBzdGFydCA9IDA7DQotICBS
ZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KGFOb2Rl
LmhhbmRsZSgpLT5yZW5kZXJlcigpKTsgICAgICAgICAgIA0KKyAgUmVuZGVyVGV4dCogdGV4dFJl
bmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihhTm9kZS5oYW5kbGUoKS0+cmVuZGVy
ZXIoKSk7DQogICBjb25zdCBsb25nIG9mZnNldCA9IHRleHRSZW5kZXJlci0+bGVuZ3RoKCk7DQot
ICAgIFJhbmdlIHNlYXJjaFJhbmdlKGFOb2RlLCBzdGFydCwgYU5vZGUsIG9mZnNldCk7ICAgICAN
Ci0gICAgICAgIA0KKyAgICBSYW5nZSBzZWFyY2hSYW5nZShhTm9kZSwgc3RhcnQsIGFOb2RlLCBv
ZmZzZXQpOw0KKw0KICAgICBSYW5nZSByZXN1bHRSYW5nZSA9IGtodG1sOjpmaW5kUGxhaW5UZXh0
KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUpOw0KIA0KICAgd2hpbGUgKCFyZXN1bHRS
YW5nZS5jb2xsYXBzZWQoKSkNCiAgICAgew0KLSAgICAgICAgDQorDQogICAgIHNldFNlbGVjdGlv
bihraHRtbDo6U2VsZWN0aW9uKHJlc3VsdFJhbmdlLCBraHRtbDo6RE9XTlNUUkVBTSwga2h0bWw6
OlNFTF9QUkVGRVJfVVBTVFJFQU1fQUZGSU5JVFkpLCBmYWxzZSk7DQotICAgIA0KLSAgICANCi0g
ICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkpIA0KKw0KKw0KKyAgICBp
ZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkNCiAgICAgICB7DQotICAgICAg
aWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpICYmIGQtPm1fc2Vs
ZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RleHQoKSkgICAgICAgICAgICAg
DQorICAgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpICYm
IGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RleHQoKSkNCiAg
ICAgICAgIHsNCi0gICAgICAgIC8vZ2V0IHRoZSBzZWxlY3Rpb24gcmVjdCAgICANCi0gICAgICAg
IFJlbmRlclRleHQgKnJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihkLT5tX3NlbGVjdGlv
bi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgDQotICAgICAgICAgICAgICBpZiAo
cnQpIA0KKyAgICAgICAgLy9nZXQgdGhlIHNlbGVjdGlvbiByZWN0DQorICAgICAgICBSZW5kZXJU
ZXh0ICpydCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24uc3RhcnQo
KS5ub2RlKCktPnJlbmRlcmVyKCkpOw0KKyAgICAgICAgICAgICAgaWYgKHJ0KQ0KICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgUVJlY3QgclNlbGVjdGlvbiA9IHJ0LT5zZWxl
Y3Rpb25SZWN0KCk7DQotICAgICAgICAgICAgICAgIF9mb2N1c2FibGVOb2RlTGlzdC0+YXBwZW5k
KHJTZWxlY3Rpb24pOyAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBfZm9jdXNh
YmxlTm9kZUxpc3QtPmFwcGVuZChyU2VsZWN0aW9uKTsNCiAgICAgICAgICAgICAgICAgICBhRW50
cnlSZWN0TGlzdC5BcHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9w
KCksIHJTZWxlY3Rpb24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20oKSkpOw0KICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICB9DQotICAgICAgfSAgICAgDQotICAgICAgDQotICAgIA0KLSAg
ICAgICAgc2VhcmNoUmFuZ2Uuc2V0U3RhcnQoYU5vZGUsIHJlc3VsdFJhbmdlLmVuZE9mZnNldCgp
KTsgICAgICAgICAgICAgDQorICAgICAgfQ0KKw0KKw0KKyAgICAgICAgc2VhcmNoUmFuZ2Uuc2V0
U3RhcnQoYU5vZGUsIHJlc3VsdFJhbmdlLmVuZE9mZnNldCgpKTsNCiAgICAgICAgIHNlYXJjaFJh
bmdlLnNldEVuZChhTm9kZSwgb2Zmc2V0KTsNCi0gICAgICAgICAgICAgICAgICAgICAgDQotICAg
ICAgcmVzdWx0UmFuZ2UgPSBraHRtbDo6ZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZSwgdGFyZ2V0
LCB0cnVlLCB0cnVlKTsgICAgDQotICAgIH0gICANCisNCisgICAgICByZXN1bHRSYW5nZSA9IGto
dG1sOjpmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUsIHRydWUpOw0KKyAg
ICB9DQogDQogICAgIGNsZWFyU2VsZWN0aW9uKCk7DQotICAgICAgDQorDQogfQ0KIA0KIC8qDQpA
QCAtMzAwOSw1MiArMzAwOSw1MiBAQCB2b2lkIEtXUUtIVE1MUGFydDo6Z2V0UmVuZGVyVGV4dFJl
Y3RBcnJhDQogICAgICAgew0KICAgICAgICAgZC0+bV9maXJzdEZvdW5kID0gZC0+bV9zZWxlY3Rp
b247DQogICAgICAgfQ0KLSAgICBlbHNlIA0KLSAgICAgIHsgICAgICAgIA0KKyAgICBlbHNlDQor
ICAgICAgew0KICAgICAgICAgZC0+bV9maXJzdEZvdW5kID0ga2h0bWw6OlNlbGVjdGlvbigpOw0K
ICAgICAgIH0NCi0gICAgDQorDQogICBraHRtbDo6U2VsZWN0aW9uIGZpcnN0Rm91bmQoZC0+bV9m
aXJzdEZvdW5kKTsNCiAgIGtodG1sOjpTZWxlY3Rpb24gbGFzdEZvdW5kKGQtPm1fbGFzdEZvdW5k
KTsNCiAgIGtodG1sOjpTZWxlY3Rpb24gY3Vyc2VsZWN0aW9uKGQtPm1fc2VsZWN0aW9uKTsNCiAN
CiANCiAgICAgVEludCByZXN1bHQgPSBGaW5kU3RyaW5nKGFUZXh0RW50cnksIHRydWUsIHRydWUs
IHRydWUsIHRydWUpOw0KLSAgDQorDQogICB3aGlsZSAocmVzdWx0ID09IFRCckN0bERlZnM6OkVG
aW5kTWF0Y2gpDQogICAgIHsNCiANCi0gICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNO
b3ROdWxsKCkpIA0KKyAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkN
CiAgICAgICB7DQotICAgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5k
ZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJlcigpLT5pc1Rl
eHQoKSkgICAgICAgICAgICAgDQorICAgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9k
ZSgpLT5yZW5kZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJl
cigpLT5pc1RleHQoKSkNCiAgICAgICAgIHsNCi0gICAgICAgIC8vZ2V0IHRoZSBzZWxlY3Rpb24g
cmVjdCAgICANCi0gICAgICAgIFJlbmRlclRleHQgKnJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4
dCAqPihkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgDQot
ICAgICAgICAgICAgICBpZiAocnQpIA0KKyAgICAgICAgLy9nZXQgdGhlIHNlbGVjdGlvbiByZWN0
DQorICAgICAgICBSZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+
bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOw0KKyAgICAgICAgICAgICAg
aWYgKHJ0KQ0KICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgUVJlY3QgclNl
bGVjdGlvbiA9IHJ0LT5zZWxlY3Rpb25SZWN0KCk7DQogDQogICAgICAgICAgIGJvb2wgYkV4aXN0
cyA9IEVGYWxzZTsNCi0gICAgICAgICAgICBmb3IoaW50IGkgPSAwO2kgPCBfZm9jdXNhYmxlTm9k
ZUxpc3QtPmNvdW50KCk7aSsrKSANCisgICAgICAgICAgICBmb3IoaW50IGkgPSAwO2kgPCBfZm9j
dXNhYmxlTm9kZUxpc3QtPmNvdW50KCk7aSsrKQ0KICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICBRUmVjdCBuciA9IF9mb2N1c2FibGVOb2RlTGlzdC0+b3BlcmF0b3JbXShpKTsNCiAg
ICAgICAgICAgICAgICAgaWYoIW5yLmludGVyc2VjdHMoclNlbGVjdGlvbikpDQotICAgICAgICAg
ICAgICAgICAgeyAgICAgDQorICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
IGJFeGlzdHMgPSBFVHJ1ZTsNCi0gICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAN
CisgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICB9DQotICAgICAgICAgIA0KKw0KICAgICAgICAgICBpZiAoIWJFeGlzdHMpDQotICAg
ICAgICAgICAgeyAgICAgICAgICAgDQotICAgICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVM
aXN0LT5hcHBlbmQoclNlbGVjdGlvbik7ICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAg
ew0KKyAgICAgICAgICAgICAgICAgIF9mb2N1c2FibGVOb2RlTGlzdC0+YXBwZW5kKHJTZWxlY3Rp
b24pOw0KICAgICAgICAgICAgIH0NCi0gICAgICANCisNCiAgICAgICAgICAgICAgICAgICBhRW50
cnlSZWN0TGlzdC5BcHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9w
KCksIHJTZWxlY3Rpb24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20oKSkpOw0KICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgfQ0KLSAgICAgIA0KKw0KICAgICByZXN1bHQg
PSBGaW5kU3RyaW5nKGFUZXh0RW50cnksIHRydWUsIHRydWUsIHRydWUsIHRydWUpOw0KICAgICB9
DQogDQpAQCAtMzA2Miw3ICszMDYyLDcgQEAgdm9pZCBLV1FLSFRNTFBhcnQ6OmdldFJlbmRlclRl
eHRSZWN0QXJyYQ0KICAgZC0+bV9maXJzdEZvdW5kID0gZmlyc3RGb3VuZDsNCiAgIGQtPm1fbGFz
dEZvdW5kID0gbGFzdEZvdW5kOw0KICAgZC0+bV9zZWxlY3Rpb24gPSBjdXJzZWxlY3Rpb247DQot
ICAgICAgICANCisNCiB9DQogKi8NCiAvLyByZXR1cm5zIE5TUmVjdCBiZWNhdXNlIGdvaW5nIHRo
cm91Z2ggUVJlY3Qgd291bGQgdHJ1bmNhdGUgYW55IGZsb2F0cw0KQEAgLTMzNTYsMjMgKzMzNTYs
MjEgQEAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKktXUUtIVE1MUGFydDo6Zw0KICAgICB9DQog
ICAgIHJldHVybiAwOw0KIH0NCisjZW5kaWYNCiANCiB2b2lkIEtXUUtIVE1MUGFydDo6YWRkUGx1
Z2luUm9vdE9iamVjdChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290KQ0KIHsN
CiAgICAgcm9vdE9iamVjdHMuYXBwZW5kIChyb290KTsNCiB9DQotI2VuZGlmDQogDQogdm9pZCBL
V1FLSFRNTFBhcnQ6OmNsZWFudXBQbHVnaW5Sb290T2JqZWN0cygpDQogew0KIC8vICMjIyBOT1Qg
SU1QTEVNRU5URUQgc2NyaXB0aW5nLCBwbHVnaW5zDQotLyoNCiAgICAgS0pTOjpCaW5kaW5nczo6
Um9vdE9iamVjdCAqcm9vdDsNCiAgICAgd2hpbGUgKChyb290ID0gcm9vdE9iamVjdHMuZ2V0TGFz
dCgpKSkgew0KICAgICAgICAgcm9vdC0+cmVtb3ZlQWxsTmF0aXZlUmVmZXJlbmNlcyAoKTsNCiAg
ICAgICAgIHJvb3RPYmplY3RzLnJlbW92ZUxhc3QoKTsNCiAgICAgfQ0KLSovDQogfQ0KIA0KIA0K
QEAgLTM3OTMsNyArMzc5MSw3IEBAIGJvb2wgS1dRS0hUTUxQYXJ0OjpnZXROZXdUYWJiZWRDdXJz
b3JQb3MNCiAgICAgICAgICAgUVBvaW50IG5wID0gbmVhcmVzdFBvaW50SW5SZWN0KF9jdXJzb3JQ
b3NpdGlvbixpbnRlcnNlY3RSZWN0KTsNCiAgICAgICAgICAgaW50IHggPSAobnAueCgpIC0gX2N1
cnNvclBvc2l0aW9uLngoKSk7DQogICAgICAgICAgIGludCB5ID0gKG5wLnkoKSAtIF9jdXJzb3JQ
b3NpdGlvbi55KCkpOw0KLSAgICAgICAgICANCisNCiAgICAgICAgICAgaWYobHIgIT0gMCAmJiBB
YnMoeSkgPiB2aWV3KCktPnZpc2libGVIZWlnaHQoKS80KSBjb250aW51ZTsNCiANCiAgICAgICAg
ICAgaWYoIWZvY3VzUmFuZ2UuaXNFbXB0eSgpICYmICFmb2N1c1JlY3QuaXNFbXB0eSgpKSB7DQpA
QCAtMzk4Miw3ICszOTgwLDcgQEAgYm9vbCBLV1FLSFRNTFBhcnQ6OnRhYmJlZE5hdmlnYXRpb24o
aW50IA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmKGZvY3VzUmVjdC5pc0Vt
cHR5KCkpIHJldHVybiBmYWxzZTsNCi0gICAgICAgDQorDQogICAgICAgIGZvY3VzZWRGcmFtZVBh
cnQtPmJyaWRnZSgpLT5Qb2ludGVyRXZlbnQoVFBvaW50ZXJFdmVudDo6RU1vdmUsZm9jdXNSZWN0
LmNlbnRlcigpLlBvaW50KCkpOw0KIA0KICAgICAgICBRUmVjdCB2aWV3UmVjdChmb2N1c2VkRnJh
bWVQYXJ0LT52aWV3KCktPmNvbnRlbnRzWCgpLGZvY3VzZWRGcmFtZVBhcnQtPnZpZXcoKS0+Y29u
dGVudHNZKCksDQpAQCAtNDA2NCw0ICs0MDYyLDM4IEBAIHZvaWQgS1dRS0hUTUxQYXJ0OjpwcmVw
YXJlRm9yVXNlckFjdGlvbigNCiAgICAgLy8gUmVzZXQgdGhlIG11bHRpcGxlIGZvcm0gc3VibWlz
c2lvbiBwcm90ZWN0aW9uIGNvZGUuDQogICAgIC8vIFdlJ2xsIGxldCB5b3Ugc3VibWl0IHRoZSBz
YW1lIGZvcm0gdHdpY2UgaWYgeW91IGRvIHR3byBzZXBhcmF0ZSB1c2VyIGFjdGlvbnMuDQogICAg
IF9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOw0KLX0NClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQ0KK30NCisNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK0tKUzo6T2JqZWN0SW1w
KiBLV1FLSFRNTFBhcnQ6OmNyZWF0ZVdpZGdldE9iamVjdChLSlM6OkV4ZWNTdGF0ZSogZXhlYykN
Cit7DQorICAgIEtKUzo6T2JqZWN0SW1wKiBvYmpJbXBsID0gc3RhdGljX2Nhc3Q8S0pTOjpPYmpl
Y3RJbXAgKj4oX2JyaWRnZS0+Q2xpZW50KCkuY3JlYXRlV2lkZ2V0T2JqZWN0KCh2b2lkKiApZXhl
YykpOw0KKyAgICByZXR1cm4gb2JqSW1wbDsNCit9DQorI2VuZGlmDQorDQorS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2UgKktXUUtIVE1MUGFydDo6Z2V0RW1iZWRJbnN0YW5jZUZvclZpZXcgKE1XZWJD
b3JlV2lkZ2V0ICphVmlldykNCit7DQorICAgIHJldHVybiBnZXRPYmplY3RJbnN0YW5jZUZvclZp
ZXcoYVZpZXcpOw0KK30NCisNCitLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqS1dRS0hUTUxQYXJ0
OjpnZXRPYmplY3RJbnN0YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICphVmlldykNCit7DQor
ICAgIHZvaWQqIG9iamVjdCA9IGFWaWV3LT5QbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCk7DQorICAg
IGlmIChvYmplY3QpIHsNCisgICAgICAgIC8vS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhl
Y3V0aW9uQ29udGV4dCA9IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6OmZpbmRSb290T2JqZWN0
Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb24gKCkoYVZpZXcpOw0KKyAgICAgICAgLy9yZXR1cm4gS0pT
OjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChL
SlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Q0xhbmd1YWdlLCBvYmplY3QsIGV4ZWN1dGlvbkNvbnRl
eHQpOw0KKyAgICAgICAgcmV0dXJuIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlOjpjcmVhdGVCaW5k
aW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OkNMYW5ndWFn
ZSwgb2JqZWN0KTsNCisgICAgfQ0KK30NCisNCitOUE9iamVjdCAqS1dRS0hUTUxQYXJ0Ojp3aW5k
b3dTY3JpcHROUE9iamVjdCgpDQorew0KKyAgICBpZiAoIV93aW5kb3dTY3JpcHROUE9iamVjdCkg
ew0KKyAgICAgICAgS0pTOjpPYmplY3RJbXAgKndpbiA9IHN0YXRpY19jYXN0PEtKUzo6T2JqZWN0
SW1wICo+KEtKUzo6V2luZG93OjpyZXRyaWV2ZVdpbmRvdyh0aGlzKSk7DQorICAgICAgICBfd2lu
ZG93U2NyaXB0TlBPYmplY3QgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoMCwgd2luLCBiaW5k
aW5nUm9vdE9iamVjdCgpLCBiaW5kaW5nUm9vdE9iamVjdCgpKTsNCisgICAgfQ0KKw0KKyAgICBy
ZXR1cm4gX3dpbmRvd1NjcmlwdE5QT2JqZWN0Ow0KK30NCisNCkluZGV4OiBXZWJDb3JlL2t3cS9L
V1FLSFRNTFBhcnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5o
CShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTM0LDYgKzM0LDcgQEANCiAjaW5jbHVkZSAiZG9tX25vZGVpbXBsLmgiDQog
I2luY2x1ZGUgImh0bWxfZm9ybWltcGwuaCINCiAjaW5jbHVkZSAiaHRtbF90YWJsZWltcGwuaCIN
CisjaW5jbHVkZSAib2JqZWN0LmgiDQogDQogI2luY2x1ZGUgIldlYkNvcmVLZXlib2FyZEFjY2Vz
cy5oIg0KICNpbmNsdWRlICJXZWJDb3JlS2V5VmFsdWVQYWlyLmgiDQpAQCAtNDEsNiArNDIsOSBA
QA0KIA0KICNpbmNsdWRlIDxlMzJiYXNlLmg+DQogI2luY2x1ZGUgPHczMnN0ZC5oPg0KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9ucHJ1bnRpbWUuaD4NCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvTlBfanNvYmplY3QuaD4NCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZS5oPg0K
IA0KICNpbmNsdWRlICJLV1FEaWN0LmgiDQogI2luY2x1ZGUgIktXUUNsaXBib2FyZC5oIg0KQEAg
LTU4LDYgKzYyLDcgQEAgbmFtZXNwYWNlIEtKUyB7DQogICAgIGNsYXNzIFNhdmVkUHJvcGVydGll
czsNCiAgICAgY2xhc3MgU2F2ZWRCdWlsdGluczsNCiAgICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9u
Ow0KKyAgICBjbGFzcyBQcm90ZWN0ZWRWYWx1ZTsNCiB9DQogDQogY2xhc3MgQ1dlYkNvcmVCcmlk
Z2U7DQpAQCAtMjAzLDcgKzIwOCw3IEBAIHB1YmxpYzoNCiANCiAgICAgUVJlY3Qgc2VsZWN0aW9u
UmVjdCgpIGNvbnN0Ow0KICAgICB2b2lkIGdldFJlbmRlclRleHRSZWN0QXJyYXkoY29uc3QgVERl
c0MmIGFUZXh0RW50cnksIGNvbnN0IERPTTo6Tm9kZSYgYU5vZGUsIFJBcnJheTxUUmVjdD4mIGFF
bnRyeVJlY3RMaXN0KTsNCi0gICAgDQorDQogLy8gICAgTlNSZWN0IHZpc2libGVTZWxlY3Rpb25S
ZWN0KCkgY29uc3Q7DQogLy8gICAgTlNJbWFnZSAqc2VsZWN0aW9uSW1hZ2UoKSBjb25zdDsNCiAv
LyAgICBOU0ltYWdlICpzbmFwc2hvdERyYWdJbWFnZShET006Ok5vZGUgbm9kZSwgTlNSZWN0ICpp
bWFnZVJlY3QsIE5TUmVjdCAqZWxlbWVudFJlY3QpIGNvbnN0Ow0KQEAgLTIyMiw2ICsyMjcsOSBA
QCBwdWJsaWM6DQogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgVEtleUV2ZW50JiBldmVudCwgYm9v
bCB1cCk7DQogICAgIC8vYm9vbCBMYXN0RXZlbnRJc01vdXNlVXAoKTsNCiANCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyAgICBLSlM6Ok9iamVjdEltcCogY3JlYXRlV2lkZ2V0T2JqZWN0
KEtKUzo6RXhlY1N0YXRlKiBleGVjKSA7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
DQogICAgIC8vTWV0aG9kcyB0byB1cGRhdGUgZm9jdXNhYmxlIG5vZGUgbGlzdA0KICAgICB2b2lk
IHVwZGF0ZUZvY3VzYWJsZVJlY3RMaXN0KCk7DQpAQCAtMjg5LDkgKzI5NywxMyBAQCBwdWJsaWM6
DQogICAgIHZvaWQgZGlkVGVsbEJyaWRnZUFib3V0TG9hZChjb25zdCBRU3RyaW5nICZ1cmxTdHJp
bmcpOw0KICAgICBib29sIGhhdmVUb2xkQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFFTdHJpbmcgJnVy
bFN0cmluZyk7DQogDQotLy8gICAgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmdldEVtYmVkSW5z
dGFuY2VGb3JWaWV3IChOU1ZpZXcgKmFWaWV3KTsNCi0vLyAgICBLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZSAqZ2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3IChOU1ZpZXcgKmFWaWV3KTsNCi0vLyAgICB2
b2lkIGFkZFBsdWdpblJvb3RPYmplY3QoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAq
cm9vdCk7DQorICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRFbWJlZEluc3RhbmNlRm9y
VmlldyAoTVdlYkNvcmVXaWRnZXQgKmFWaWV3KTsNCisgICAgS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2UgKmdldE9iamVjdEluc3RhbmNlRm9yVmlldyhNV2ViQ29yZVdpZGdldCAqYVZpZXcpOw0KKyAg
ICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3IChNV2Vi
Q29yZVdpZGdldCAqKSB7IHJldHVybiAwOyB9DQorICAgIHZvaWQgYWRkUGx1Z2luUm9vdE9iamVj
dChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290KTsNCisgICAgS0pTOjpCaW5k
aW5nczo6Um9vdE9iamVjdCAqYmluZGluZ1Jvb3RPYmplY3QoKTsNCisgICAgS0pTOjpCaW5kaW5n
czo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dEZvckRPTSgpOw0KKyAgICBOUE9iamVjdCAq
d2luZG93U2NyaXB0TlBPYmplY3QoKTsNCiAgICAgdm9pZCBjbGVhbnVwUGx1Z2luUm9vdE9iamVj
dHMoKTsNCiANCiAgICAgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKGNvbnN0IGtodG1sOjpF
ZGl0Q29tbWFuZFB0ciAmKTsNCkBAIC00MjcsOSArNDM5LDEwIEBAIHByaXZhdGU6DQogDQogICAg
IGZyaWVuZCBjbGFzcyBLSFRNTFBhcnQ7DQogDQotLy8gICAgS0pTOjpCaW5kaW5nczo6Um9vdE9i
amVjdCAqX2JpbmRpbmdSb290OyAgLy8gVGhlIHJvb3Qgb2JqZWN0IHVzZWQgZm9yIG9iamVjdHMN
CisgICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqX2JpbmRpbmdSb290OyAgLy8gVGhlIHJv
b3Qgb2JqZWN0IHVzZWQgZm9yIG9iamVjdHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGJvdW5kIG91dHNpZGUgdGhlIGNvbnRleHQgb2YgYSBwbHVnaW4u
DQotLy8gICAgUVB0ckxpc3Q8S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gcm9vdE9iamVjdHM7
DQorICAgIE5QT2JqZWN0ICpfd2luZG93U2NyaXB0TlBPYmplY3Q7DQorICAgIFFQdHJMaXN0PEtK
Uzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3RPYmplY3RzOw0KICAgICBDV2ViU2NyaXB0T2Jq
ZWN0ICpfd2luZG93U2NyaXB0T2JqZWN0Ow0KIA0KICAgICBET006Ok5vZGUgX2RyYWdTcmM7ICAg
ICAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBt
b3VzZSBnZXN0dXJlDQpJbmRleDogV2ViS2l0L0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjkyKQ0KKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkNCkBAIC0xLDMgKzEsNjQgQEANCisyMDA2LTEwLTI1ICB5YWRhdmFsbCAgPHNy
aXJhbS55YWRhdmFsbGlAbm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FjaGlu
IFBhZG1hIChzYWNoaW4ucGFkbWFAbm9raWEuY29tKS4NCisgICAgICAgIERFU0M6IFNjcmlwdGFi
bGUgcGx1Z2luICYgd2lkZ2V0IG9iamVjdCBpbXBsZW1lbnRhdGlvbg0KKyAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDcNCisNCisgICAgICAgICogQnJv
d3NlckNvbnRyb2wvaW5jL0JyQ3RsLmg6DQorICAgICAgICAqIEJyb3dzZXJDb250cm9sL2luYy9C
ckN0bERlZnMuaDoNCisgICAgICAgIChUQnJDdGxEZWZzOjopOg0KKyAgICAgICAgKiBCcm93c2Vy
Q29udHJvbC9pbmMvQnJDdGxJbnRlcmZhY2UuaDoNCisgICAgICAgICogQnJvd3NlckNvbnRyb2wv
c3JjL0JyQ3RsLmNwcDoNCisgICAgICAgIChDQnJDdGw6On5DQnJDdGwpOg0KKyAgICAgICAgKENC
ckN0bDo6SGFuZGxlQ29tbWFuZEwpOg0KKyAgICAgICAgKENCckN0bDo6QWRkT3B0aW9uTWVudUl0
ZW1zTCk6DQorICAgICAgICAoQ0JyQ3RsOjpVcGRhdGVEZWZhdWx0U29mdGtleXNMKToNCisgICAg
ICAgIChDQnJDdGw6OkNyZWF0ZVdpZGdldEV4dGVuc2lvbkwpOg0KKyAgICAgICAgKiBCcm93c2Vy
Vmlldy9pbmMvV2ViS2l0Q29udHJvbC5oOg0KKyAgICAgICAgKENXZWJLaXRDb250cm9sOjpXaWRn
ZXRFeHRlbnNpb24pOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmg6
DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9LZXlFdmVudEhhbmRsZXIuY3BwOg0KKyAgICAg
ICAgKENLZXlFdmVudEhhbmRsZXI6OkhhbmRsZUFjdGl2YXRlS2V5c0wpOg0KKyAgICAgICAgKiBC
cm93c2VyVmlldy9zcmMvV2ViS2l0Q29udHJvbC5jcHA6DQorICAgICAgICAoQ1dlYktpdENvbnRy
b2w6On5DV2ViS2l0Q29udHJvbCk6DQorICAgICAgICAoQ1dlYktpdENvbnRyb2w6OkNyZWF0ZVdp
ZGdldEV4dGVuc2lvbkwpOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5j
cHA6DQorICAgICAgICAoQ1dlYktpdFZpZXc6Ok1ha2VWaXNpYmxlKToNCisgICAgICAgIChDV2Vi
S2l0Vmlldzo6RHJhdyk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy93ZWJraXRicmlkZ2Uu
Y3BwOg0KKyAgICAgICAgKENXZWJLaXRCcmlkZ2U6OkxheW91dENoYW5nZWQpOg0KKyAgICAgICAg
KENXZWJLaXRCcmlkZ2U6OmNyZWF0ZVdpZGdldE9iamVjdCk6DQorICAgICAgICAqIFBsdWdpbi9p
bmMvUGx1Z2luSGFuZGxlci5oOg0KKyAgICAgICAgKiBQbHVnaW4vaW5jL1BsdWdpblNraW4uaDoN
CisgICAgICAgIChDUGx1Z2luU2tpbjo6V2ViS2l0Q29udHJvbCk6DQorICAgICAgICAoQ1BsdWdp
blNraW46OkZyYW1lKToNCisgICAgICAgICogUGx1Z2luL2luYy9QbHVnaW5XaW4uaDoNCisgICAg
ICAgICogUGx1Z2luL2luYy9ucGFwaS5oOg0KKyAgICAgICAgKiBQbHVnaW4vc3JjL05wbkltcGxl
bWVudGF0aW9uLmNwcDoNCisgICAgICAgIChOcG5HZXRWYWx1ZSk6DQorICAgICAgICAqIFBsdWdp
bi9zcmMvUGx1Z2luSGFuZGxlci5jcHA6DQorICAgICAgICAoQ1BsdWdpbkluZm86OlBhcnNlRGVm
YXVsdERhdGFMKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6TG9hZFBsdWdpbnNTeW5jTCk6
DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zTCk6DQorICAgICAgICAoQ1Bs
dWdpbkhhbmRsZXI6OlJlbG9hZFBsdWdpbnMpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpH
ZXRQbHVnaW5OYW1lKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luRmlsZU5h
bWUpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5EZXNjcmlwdGlvbik6DQor
ICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkNvdW50KToNCisgICAgICAgIChDUGx1
Z2luSGFuZGxlcjo6UmVsb2FkUGx1Z2luc0wpOg0KKyAgICAgICAgKiBQbHVnaW4vc3JjL1BsdWdp
blNraW4uY3BwOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpDb25zdHJ1Y3RMKToNCisgICAgICAg
IChDUGx1Z2luU2tpbjo6Q3JlYXRlUGx1Z2luV2luTCk6DQorICAgICAgICAoQ1BsdWdpblNraW46
OlNlbGVjdFZpZXdlckFuZERvd25sb2FkTCk6DQorICAgICAgICAoQ1BsdWdpblNraW46OlBsdWdp
blNjcmlwdGFibGVPYmplY3QpOg0KKyAgICAgICAgKiBQbHVnaW4vc3JjL1BsdWdpbldpbi5jcHA6
DQorICAgICAgICAoQ1BsdWdpbldpbjo6V2luZG93U2NyaXB0TlBPYmplY3QpOg0KKyAgICAgICAg
KENQbHVnaW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QpOg0KKyAgICAgICAgKiBncm91cC9C
cm93c2VyVmlldy5tbXA6DQorICAgICAgICAqIGdyb3VwL1BsdWdpbi5tbXA6DQorICAgICAgICAq
IGdyb3VwL3dlYmtpdC5tbXA6DQorICAgICAgICAqIHJvbS93ZWJraXQuaWJ5Og0KKw0KIDIwMDYt
MTAtMjMgIG5hZ3VvICA8Z2VvcmdlLmd1b0Bub2tpYS5jb20+DQogDQogICAgICAgICBSZXZpZXdl
ZCBieSBTYWNoaW4uDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bC5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bC5oCShyZXZpc2lv
biAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC02NDksNiArNjQ5LDE1IEBAIGNsYXNzIENCckN0bCA6IHB1YmxpYyBDQnJDdGxJ
bnRlcmZhY2UsIHANCiAgICAgICAgICovDQogICAgICAgICBJTVBPUlRfQyBUQnJDdGxEZWZzOjpU
QnJDdGxGaW5kUmVzcG9uc2UgRmluZEtleXdvcmRBZ2FpbiggVEJvb2wgYUZvd2FyZERpcmVjdGlv
biApOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAg
ICAgICogQ3JlYXRlcyB0aGUgd2lkZ2V0IGV4dGVuc2lvbiBvYmplY3QNCisgICAgICAgICogQHNp
bmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIE1XaWRnZXRFeHRlbnNpb24NCisgICAgICAgICov
DQorICAgICAgICBJTVBPUlRfQyBNV2lkZ2V0RXh0ZW5zaW9uKiBDcmVhdGVXaWRnZXRFeHRlbnNp
b25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKSA7DQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQorDQogICAgIHB1YmxpYzogLy8gZnJvbSBNQnJDdGxMb2FkRXZlbnRPYnNl
cnZlcg0KIA0KICAgICAgICAgdm9pZCBIYW5kbGVCcm93c2VyTG9hZEV2ZW50TCggVEJyQ3RsRGVm
czo6VEJyQ3RsTG9hZEV2ZW50IGFCckN0bExvYWRFdmVudCwNCkBAIC03MjMsNiArNzMyLDcgQEAg
Y2xhc3MgQ0JyQ3RsIDogcHVibGljIENCckN0bEludGVyZmFjZSwgcA0KICAgICAgICAgKi8NCiAg
ICAgICAgIFRCb29sIFNlbmRDb21tYW5kc1RvQ2xpZW50KFRCckN0bERlZnM6OlRCckN0bENsaWVu
dENvbW1hbmRzIGFDb21tYW5kLCBjb25zdCBDQXJyYXlGaXg8VFB0ckM+JiBhQXR0cmlidXRlc05h
bWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDQXJyYXlG
aXg8VFB0ckM+JiBhQXR0cmlidXRlVmFsdWVzKTsNCisNCiAgICAgcHJvdGVjdGVkOiAgLy8gRnVu
Y3Rpb25zIGZyb20gQ0NvZUNvbnRyb2wNCiANCiAgICAgICAgIC8qKg0KSW5kZXg6IFdlYktpdC9C
cm93c2VyQ29udHJvbC9pbmMvQnJDdGxEZWZzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJv
d3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQv
QnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNjAzLDcg
KzYwMyw3IEBAIGNsYXNzIFRCckN0bERlZnMNCiANCiAgICAgICAgICAgICBFRWxlbWVudE1vdXNl
QnV0dG9uTGlzdGVuZXIsIC8vLzwgQSBNb3VzZSBidXR0b24gbGlzdGVuZXINCiAgICAgICAgICAg
ICBFRWxlbWVudFNjcm9sbEJhciwgICAgLy8vPCBBIHNjcm9sbCBiYXINCi0gICAgICAgICAgICAN
CisNCiAgICAgICAgICAgICBFRWxlbWVudFNtYXJ0TGlua1RlbCwgLy8vPCBBIHRlbGVwaG9uZSBu
dW1iZXIgaW4gdGhlIHBhZ2UuDQogICAgICAgICAgICAgRUVsZW1lbnRTbWFydExpbmtFbWFpbCAv
Ly88IGFuIGVtYWlsIGFkZHJlc3MgaW4gdGhlIHBhZ2UuDQogICAgICAgICB9Ow0KQEAgLTcxNiw2
ICs3MTYsMTcgQEAgY2xhc3MgVEJyQ3RsRGVmcw0KICAgICAgICAgRUNsaWVudENvbW1hbmRMYXVu
Y2hGaW5kS2V5d29yZCA9IDAsDQogICAgICAgICBFQ2xpZW50Q29tbWFuZFN1YnNjcmliZVRvRmVl
ZHMNCiAgICAgICAgIH07DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgLyoqDQor
ICAgICogVGhlIHdpZGdldCBwYXJhbXMuDQorICAgICovDQorICAgIGVudW0gVEJyQ3RsV2lkZ2V0
UGFyYW1zDQorICAgICAgICB7DQorICAgICAgICBFV2lkZ2V0SWRlbnRpZmllciA9IDAsDQorICAg
ICAgICBFV2lkZ2V0QnVuZGxlSWQsDQorICAgICAgICBFV2lkZ2V0QmFzZVBhdGgNCisgICAgICAg
IH07DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgIH07DQogDQogI2VuZGlmICAg
ICAgLy8gQlJDVExERUZTX0gNCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3Rs
SW50ZXJmYWNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0Jy
Q3RsSW50ZXJmYWNlLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJv
bC9pbmMvQnJDdGxJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTcxLDcgKzcxLDEwIEBA
IGNsYXNzIFRCckN0bFdtbFNlcnZpY2VPcHRpb247DQogY2xhc3MgVEJyQ3RsU3Vic2NyaWJlVG87
DQogY2xhc3MgTUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlcjsNCiBjbGFzcyBNQnJDdGxDb21tYW5k
T2JzZXJ2ZXI7DQotDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitjbGFzcyBNV2lkZ2V0
Q2FsbGJhY2s7DQorY2xhc3MgTVdpZGdldEV4dGVuc2lvbjsNCisjZW5kaWYgLy9SRF9CUk9XU0VS
X1dJREdFVFMNCiBjbGFzcyBDQnJDdGxJbnRlcmZhY2U7DQogY2xhc3MgQ1BsdWdpbkluZm87DQog
DQpAQCAtNTk2LDYgKzU5OSwxNSBAQCBjbGFzcyBDQnJDdGxJbnRlcmZhY2UgOiBwdWJsaWMgQ0Nv
ZUNvbnRyDQogICAgICAgICAqLw0KICAgICAgICAgSU1QT1JUX0MgdmlydHVhbCB2b2lkIFJlbW92
ZUNvbW1hbmRPYnNlcnZlcihNQnJDdGxDb21tYW5kT2JzZXJ2ZXIqIGFCckN0bENvbW1hbmRPYnNl
cnZlcikgPSAwOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioN
CisgICAgICAgICogVW5yZWdpc3RlciBhIGNsaWVudCBjb21tYW5kIGludGVyZmFjZSBmb3IgdGhl
IGJyb3dzZXIgZW5naW5lDQorICAgICAgICAqIEBzaW5jZSAzLjENCisgICAgICAgICogQHBhcmFt
IFRoZSBvYnNlcnZlciB0byB1bnJlZ2lzdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAg
ICAgICAgKi8NCisgICAgICAgIElNUE9SVF9DIHZpcnR1YWwgTVdpZGdldEV4dGVuc2lvbiogQ3Jl
YXRlV2lkZ2V0RXh0ZW5zaW9uTChNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykgPSAw
Ow0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9Ow0KIA0KIA0KQEAgLTg2OCw2
ICs4ODAsNDkgQEAgY2xhc3MgTUJyQ3RsQ29tbWFuZE9ic2VydmVyDQogICAgICAgICB2aXJ0dWFs
IHZvaWQgSGFuZGxlQ29tbWFuZEwoVEJyQ3RsRGVmczo6VEJyQ3RsQ2xpZW50Q29tbWFuZHMgYUNv
bW1hbmQsIGNvbnN0IENBcnJheUZpeDxUUHRyQz4mIGFBdHRyaWJ1dGVzTmFtZXMsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENBcnJheUZpeDxUUHRyQz4mIGFB
dHRyaWJ1dGVWYWx1ZXMpID0gMDsNCiAgICAgfTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VU
Uw0KKy8vIENMQVNTIERFQ0xBUkFUSU9ODQorLyoqDQorKiAgVGhpcyBjbGFzcyBwcm92aWRlcyBh
IG1lY2hhbmlzbSBmb3IgdGhlIGJyb3dzZXIgZW5naW5lIHRvIGludGVyYWN0IHdpdGggdGhlIHdp
ZGdldCBob3N0IGFwcGxpY2F0aW9uDQorKg0KKyogIEBsaWIgQnJvd3NlckVuZ2luZS5saWINCisq
ICBAc2luY2UgMy4yDQorKi8NCitjbGFzcyBNV2lkZ2V0Q2FsbGJhY2sNCisgICAgew0KKyAgICBw
dWJsaWM6IC8vIE5ldyBmdW5jdGlvbnMNCisNCisgICAgICAgIC8vVE8gQkUgSU1QTEVNRU5URUQN
CisgICAgfTsNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKy8qKg0KKyogIFRoaXMgY2xhc3MgcHJv
dmlkZXMgYW4gZXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3IgdGhlIHdpZGdldCBob3N0IGFwcCB0byBp
bnRlcmFjdCB3aXRoIHRoZSBicm93c2VyIGVuZ2luZQ0KKyogIFRoaXMgY2xhc3MgaW5jbHVkZXMg
dGhlIFdpZGdldCBzcGVjaWZpYyBleHRlbnNpb24gbmVlZGVkIGluIHRoZSBicm93c2VyIGVuZ2lu
ZQ0KKyogIEBsaWIgQnJvd3NlckVuZ2luZS5saWINCisqICBAc2luY2UgMy4yDQorKi8NCitjbGFz
cyBNV2lkZ2V0RXh0ZW5zaW9uDQorICAgIHsNCisgICAgcHVibGljOiAvLyBOZXcgZnVuY3Rpb25z
DQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIHRvIHNldCBwYXJhbWV0ZXJzIGluIHRo
ZSBicm93c2VyIGVuZ2luZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJh
bSBUaGUgd2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBmb3Ig
dGhlIHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFt
cyBhUGFyYW0sIGNvbnN0IFREZXNDJiBhVmFsdWUpID0gMDsNCisNCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBNZXRob2QgdG8gc2V0IHBhcmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQor
ICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSB3aWRnZXQgcGFyYW1l
dGVyIGFQYXJhbQ0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHZhbHVlIGZvciB0aGUgcGFyYW1hdGVy
DQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZpcnR1YWwg
dm9pZCBTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgVFVp
bnQgYVZhbHVlKSA9IDA7DQorICAgIH07DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
I2VuZGlmICAgICAgLy8gQlJDVExJTlRFUkZBQ0VfSA0KIA0KIC8vIEVuZCBvZiBGaWxlDQpJbmRl
eDogV2ViS2l0L0Jyb3dzZXJDb250cm9sL3NyYy9CckN0bC5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJLaXQvQnJvd3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysg
V2ViS2l0L0Jyb3dzZXJDb250cm9sL3NyYy9CckN0bC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC03
Nyw2ICs3Nyw5IEBADQogI2luY2x1ZGUgIkZhdmljb24uaCINCiAjaW5jbHVkZSAiVXJsUmVxdWVz
dEluZm8uaCINCiAjaW5jbHVkZSAiVG9vbEJhci5oIg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURH
RVRTDQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNlbmRpZiAvL1JEX0JST1dTRVJf
V0lER0VUUw0KIA0KICNpZmRlZiBSRF8zMl9CUk9XU0VSDQogI2luY2x1ZGUgIlNtYXJ0TGlua0hh
bmRsZXIuaCINCkBAIC00MzUsMTQgKzQzOCwxNCBAQCBFWFBPUlRfQyBDQnJDdGw6On5DQnJDdGwo
KQ0KICAgICAgICAgZGVsZXRlIChDQnJDdGxTY3JvbGxpbmdQcm92aWRlciopaUJyQ3RsU2Nyb2xs
aW5nUHJvdmlkZXI7DQogICAgICAgICB9DQogDQotICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXIg
PSBOVUxMOyAgICANCisgICAgaUJyQ3RsU29mdGtleXNPYnNlcnZlciA9IE5VTEw7DQogICAgIGlC
ckN0bFNwZWNpYWxMb2FkT2JzZXJ2ZXIgPSBOVUxMOw0KLSAgICBpQnJDdGxMYXlvdXRPYnNlcnZl
ciA9IE5VTEw7ICAgICAgICANCisgICAgaUJyQ3RsTGF5b3V0T2JzZXJ2ZXIgPSBOVUxMOw0KICAg
ICBpQnJDdGxEaWFsb2dzUHJvdmlkZXIgPSBOVUxMOw0KICAgICBpQnJDdGxXaW5kb3dPYnNlcnZl
ciA9IE5VTEw7DQogICAgIGlCckN0bERvd25sb2FkT2JzZXJ2ZXIgPSBOVUxMOw0KLSAgICBpQnJD
dGxTY3JvbGxpbmdQcm92aWRlciA9IE5VTEw7ICAgIA0KLSAgICANCisgICAgaUJyQ3RsU2Nyb2xs
aW5nUHJvdmlkZXIgPSBOVUxMOw0KKw0KICAgICAvLw0KICAgICBkZWxldGUgaUh0dHBMb2FkZXJF
dmVudFRvVWlMaXN0ZW5lcjsNCiANCkBAIC00NjMsNyArNDY2LDcgQEAgRVhQT1JUX0MgQ0JyQ3Rs
Ojp+Q0JyQ3RsKCkNCiANCiAgICAgLy9EZWxldGUgdGhlIFdlYmtpdENvbnRyb2wNCiAgICAgZGVs
ZXRlIGlXZWJLaXRDb250cm9sOw0KLSAgICANCisNCiAgICAgLy8gY2xvc2UgdGhlIGFycmF5cywg
YXZvaWQgbWVtb3J5IGxlYWtzDQogICAgIGlMb2FkRXZlbnRPYnNlcnZlcnNBcnJheS5DbG9zZSgp
Ow0KICAgICBpU3RhdGVDaGFuZ2VPYnNlcnZlckFycmF5LkNsb3NlKCk7DQpAQCAtNDcyLDcgKzQ3
NSw3IEBAIEVYUE9SVF9DIENCckN0bDo6fkNCckN0bCgpDQogICAgIGlTdWJzY3JpYmVUb0l0ZW1z
LkNsb3NlKCk7DQogICAgIGlXbWxTZXJ2aWNlT3B0aW9uLkNsb3NlKCk7DQogDQotICAgIA0KKw0K
ICAgICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC03MzMsNyArNzM2LDcgQEAg
RVhQT1JUX0Mgdm9pZCBDQnJDdGw6OkhhbmRsZUNvbW1hbmRMKFRJbg0KICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICBpV2ViS2l0Q29udHJvbC0+V2ViS2l0VmlldygpLlNl
dFNtYXJ0TGlua01vZGUoRVNtYXJ0TGlua1Bob25lKTsNCiAgICAgICAgICAgICAgICAgaVdlYktp
dENvbnRyb2wtPldlYktpdFZpZXcoKS5GaW5kTmV4dFNtYXJ0TGluayhFVHJ1ZSk7DQotICAgICAg
ICAgICAgICAgIH0gICAgDQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgICAgICB9DQogICAgICAgICBjYXNlIFRCckN0bERlZnM6OkVDb21tYW5kRmluZEl0
ZW1FTWFpbDoNCkBAIC03NDMsOSArNzQ2LDkgQEAgRVhQT1JUX0Mgdm9pZCBDQnJDdGw6OkhhbmRs
ZUNvbW1hbmRMKFRJbg0KICAgICAgICAgICAgICAgICBmb3IgKCBUSW50IGk9MDsgaTxpU3RhdGVD
aGFuZ2VPYnNlcnZlckFycmF5LkNvdW50KCk7IGkrKyApDQogICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICBpU3RhdGVDaGFuZ2VPYnNlcnZlckFycmF5W2ldLT5TdGF0
ZUNoYW5nZWQoIFRCckN0bERlZnM6OkVTdGF0ZVNtYXJ0VGV4dFZpZXcsIEVUcnVlKTsNCi0gICAg
ICAgICAgICAgICAgICAgIH0gICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5TZXRTbWFydExpbmtN
b2RlKCBFU21hcnRMaW5rRW1haWwgKTsNCi0gICAgICAgICAgICAgICAgaVdlYktpdENvbnRyb2wt
PldlYktpdFZpZXcoKS5GaW5kTmV4dFNtYXJ0TGluayggRVRydWUgKTsgICAgDQorICAgICAgICAg
ICAgICAgIGlXZWJLaXRDb250cm9sLT5XZWJLaXRWaWV3KCkuRmluZE5leHRTbWFydExpbmsoIEVU
cnVlICk7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAg
ICAgfQ0KQEAgLTg3Niw2ICs4NzksMTcgQEAgRVhQT1JUX0Mgdm9pZCBDQnJDdGw6OkhhbmRsZUNv
bW1hbmRMKFRJbg0KICAgICAgICAgICAgICAgICBUUGx1Z2luQ29udHJvbCBwbHVnaW5Db250cm9s
KCppV2ViS2l0Q29udHJvbCk7DQogICAgICAgICAgICAgICAgIHBsdWdpbkNvbnRyb2wuSGFuZGxl
UGx1Z2luQ29tbWFuZEwoYUNvbW1hbmQpOw0KICAgICAgICAgICAgICAgICB9DQorI2lmZGVmICBS
RF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgIHsN
CisgICAgICAgICAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IGlXZWJLaXRDb250
cm9sLT5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgICAgICAgICAgICAgaWYgKHdkZ3RFeHQpDQor
ICAgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICB3ZGd0RXh0LT5PcHRp
b25zTWVudUl0ZW1TZWxlY3RlZChhQ29tbWFuZCk7DQorICAgICAgICAgICAgICAgICAgICB9DQor
ICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorI2VuZGlmIC8vUkRf
QlJPV1NFUl9XSURHRVRTDQogICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgfQ0KICAg
ICAgICAgfSAgIC8vIGVuZCBvZiBzd2l0Y2gNCkBAIC0xMTA2LDYgKzExMjAsMTMgQEAgRVhQT1JU
X0Mgdm9pZCBDQnJDdGw6OkFkZE9wdGlvbk1lbnVJdGVtcw0KICAgICAvLyBCYXNlIHdlJ3JlIHVz
aW5nIGZvciB0aGUgcGx1Zy1pbnMNCiAgICAgVFBsdWdpbkNvbnRyb2wgcGx1Z2luQ29udHJvbCgq
aVdlYktpdENvbnRyb2wpOw0KICAgICBwbHVnaW5Db250cm9sLkFkZFBsdWdpbk9wdGlvbk1lbnVJ
dGVtc0woYU1lbnVQYW5lLCBUQnJDdGxEZWZzOjpFQ29tbWFuZElkUGx1Z2luQmFzZSwgYUFmdGVy
KTsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3
ZGd0RXh0ID0gaVdlYktpdENvbnRyb2wtPldpZGdldEV4dGVuc2lvbigpOw0KKyAgICBpZiAod2Rn
dEV4dCkNCisgICAgICAgIHsNCisgICAgICAgIHdkZ3RFeHQtPkFkZE9wdGlvbk1lbnVJdGVtc0wo
YU1lbnVQYW5lKTsNCisgICAgICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAg
ICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtMTg5Myw3ICsxOTE0LDcgQEAg
dm9pZCBDQnJDdGw6OlVwZGF0ZURlZmF1bHRTb2Z0a2V5c0woKQ0KICAgICBpZiAoaUJyQ3RsU29m
dGtleXNPYnNlcnZlcikNCiAgICAgICAgIHsNCiAgICAgICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2
ZXItPlVwZGF0ZVNvZnRrZXlMKEVLZXlMZWZ0LCBLTnVsbERlc0MsIDAsIEVDaGFuZ2VSZWFzb25J
ZGxlKTsNCi0gICAgICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXItPlVwZGF0ZVNvZnRrZXlMKEVL
ZXlSaWdodCwgS051bGxEZXNDLCAwLCBFQ2hhbmdlUmVhc29uSWRsZSk7ICAgICAgICANCisgICAg
ICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXItPlVwZGF0ZVNvZnRrZXlMKEVLZXlSaWdodCwgS051
bGxEZXNDLCAwLCBFQ2hhbmdlUmVhc29uSWRsZSk7DQogICAgICAgICB9DQogICAgIH0NCiANCkBA
IC0yMzYzLDQgKzIzODQsMTYgQEAgVEJvb2wgQ0JyQ3RsOjpTZW5kQ29tbWFuZHNUb0NsaWVudCgN
CiAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdF
VFMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0
ZW5zaW9uDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorRVhQT1JUX0MgTVdp
ZGdldEV4dGVuc2lvbiogQ0JyQ3RsOjpDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxs
YmFjayYgYVdpZGdldENhbGxiYWNrKQ0KKyAgICB7DQorICAgIHJldHVybiBpV2ViS2l0Q29udHJv
bC0+Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTChhV2lkZ2V0Q2FsbGJhY2spOw0KKyAgICB9DQorDQor
I2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogLy8gIEVuZCBvZiBGaWxlDQpJbmRleDogV2Vi
S2l0L0Jyb3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvQnJvd3NlclZpZXcvaW5jL1dlYktpdENvbnRyb2wuaAkocmV2aXNpb24gMTcwNjkpDQorKysg
V2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XZWJLaXRDb250cm9sLmgJKHdvcmtpbmcgY29weSkNCkBA
IC05MCw2ICs5MCw5IEBAIGNsYXNzIENXZWJLaXRIaXN0b3J5UHJvdmlkZXI7DQogY2xhc3MgQ0h0
dHBDYWNoZU1hbmFnZXI7DQogY2xhc3MgQ1N0YXRpY0ltYWdlRGVjb2RlcjsNCiBjbGFzcyBDUGx1
Z2luQ29udGVudFBsYXllcjsNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK2NsYXNzIENX
aWRnZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogLy8gQ0xB
U1MgREVDTEFSQVRJT04NCiAvKioNCkBAIC0zMTEsNiArMzE0LDE2IEBAIGNsYXNzIENXZWJLaXRD
b250cm9sIDogcHVibGljIENCYXNlDQogICAgICAgICAqLw0KICAgICAgICAgQ1dlYktpdFZpZXcq
IENyZWF0ZVdpbmRvdyhjb25zdCBURGVzQyYgYUZyYW1lTmFtZSxUQm9vbCBhVXNlckluaXRpYXRl
ZCk7DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAgICAg
ICAgKiBDcmVhdGVXaWRnZXRFeHRlbnNpb24NCisgICAgICAgICogUHVycG9zZTogQ3JlYXRlcyB0
aGUgd2lkZ2V0IGV4dGVuc2lvbiBvYmplY3QNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAg
ICAgKiBAcGFyYW0gTVdpZGdldENhbGxiYWNrKiBhV2lkZ2V0Q2FsbGJhY2sNCisgICAgICAgICog
QHJldHVybiBNV2lkZ2V0RXh0ZW5zaW9uKg0KKyAgICAgICAgKi8NCisgICAgICAgIE1XaWRnZXRF
eHRlbnNpb24qIENyZWF0ZVdpZGdldEV4dGVuc2lvbkwoTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0
Q2FsbGJhY2spIDsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAgICAgICAgIC8q
Kg0KICAgICAgICAgKiBGaW5kV2luZG93TmFtZWQNCkBAIC00OTMsNiArNTA2LDE1IEBAIGNsYXNz
IENXZWJLaXRDb250cm9sIDogcHVibGljIENCYXNlDQogICAgICAgICAqLw0KICAgICAgICAgQ0Jy
Q3RsJiBCckN0bCgpIGNvbnN0IHsgcmV0dXJuICppQnJDdGw7IH0NCiANCisjaWZkZWYgIFJEX0JS
T1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEFzc29jaWF0ZWQgYnJvd3Nl
ciBjb250cm9sDQorICAgICAgICAqIEBzaW5jZSAzLjANCisgICAgICAgICogQHJldHVybiBBIHJl
ZmVyZW5jZSB0byBCckN0bA0KKyAgICAgICAgKi8NCisgICAgICAgIENXaWRnZXRFeHRlbnNpb24q
IFdpZGdldEV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIGlXaWRnZXRFeHRlbnNpb247IH0NCisj
ZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBS
ZXNvdXJjZSBsb2FkZXIgc2V0dGluZ3MgY29udHJvbGxlcg0KICAgICAgICAgKiBAc2luY2UgMy4w
DQpAQCAtODkzLDYgKzkxNSw5IEBAIGNsYXNzIENXZWJLaXRDb250cm9sIDogcHVibGljIENCYXNl
DQogICAgICAgICAvLyBwbHVnaW4gcGxheWVyDQogICAgICAgICBDUGx1Z2luQ29udGVudFBsYXll
ciogICAgICAgaVBsdWdpblBsYXllcjsNCiAjZW5kaWYNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lE
R0VUUw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiogaVdpZGdldEV4dGVuc2lvbjsNCisjZW5k
aWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfTsNCiANCiAjZW5kaWYgICAgICAvLyBXRUJL
SVRDT05UUk9MX0gNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL3dlYmtpdGJyaWRnZS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2UuaAko
cmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2Uu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTIsMTMgKzIsMTMgQEANCiAqID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KICogIE5hbWUgICAgICAgIDogd2Via2l0YnJpZGdlLmgNCiAqICBQYXJ0IG9mICAgICA6
IFdlYmtpdCAvIEJyb3dzZXJWaWV3DQotKiAgSW50ZXJmYWNlICAgOiANCisqICBJbnRlcmZhY2Ug
ICA6DQogKiAgRGVzY3JpcHRpb24gOg0KICogIFZlcnNpb24gICAgIDogMy4xDQogKg0KICogICAg
Q29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbg0KICogICAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4NCi0qICANCisqDQogKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogICBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqICAg
YXJlIG1ldDoNCkBAIC0yMiw3ICsyMiw3IEBADQogKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCiAqICAgICAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQNCiAqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uDQotKiAgDQorKg0KICogICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQogKiAgICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UDQogKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KQEAgLTkxLDYgKzkxLDEwIEBAIGNsYXNzIENXZWJL
aXRCcmlkZ2UgOiBwdWJsaWMgQ0Jhc2UsIHB1YmwNCiANCiAgICAgcHVibGljOiAvLyBNZXRob2Rz
IEZyb20gTVdlYkNsaWVudEJyaWRnZQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQor
ICAgICAgICB2b2lkKiBjcmVhdGVXaWRnZXRPYmplY3Qodm9pZCogZXhlYyk7DQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQorDQogICAgICAgICAvKioNCiAgICAgICAgICogQ2hpbGRGcmFt
ZXMNCiAgICAgICAgICogRnJvbSBNV2ViQ2xpZW50QnJpZGdlDQpAQCAtMTAyNiw3ICsxMDMwLDcg
QEAgY2xhc3MgQ1dlYktpdEJyaWRnZSA6IHB1YmxpYyBDQmFzZSwgcHVibA0KICAgICAgICAgQ1dl
YktpdExvYWRlciogICAgICAgICAgaUxvYWRlcjsgICAgICAgICAgICAgIC8vIG93bmVkDQogICAg
IC8vDQogICAgIENJZGxlKiAgICAgICAgICBpQ2xvc2VXaW5kb3dDYWxsYmFjazsgLy9vd2VkDQot
ICAgIA0KKw0KICAgICAgICAgLy8gVmFyaWFibGVzIHRvIHN0b3JlIHRoZSBzdGF0ZQ0KICAgICAg
ICAgSEJ1ZkMqIGlQYWdlVGl0bGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvd25lZA0K
ICAgICAgICAgSEJ1ZkMqIGlTdGF0dXNUZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAvLyAw
d25lZA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Q29udHJvbC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wuY3BwCShy
ZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtODEsNiArODEsOSBAQA0KICNpbmNsdWRlICJXZWJDb3Jl
SGlzdG9yeS5oIg0KICNpbmNsdWRlICJIdHRwQ2FjaGVNYW5hZ2VyLmgiDQogI2luY2x1ZGUgIlN0
YXRpY0ltYWdlRGVjb2Rlci5oIg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorI2luY2x1
ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0K
ICNpZmRlZiBSRF8zMl9CUk9XU0VSDQogI2luY2x1ZGUgIlBsdWdpbkNvbnRlbnRQbGF5ZXIuaCIN
CkBAIC02MjcsNiArNjMwLDkgQEAgQ1dlYktpdENvbnRyb2w6On5DV2ViS2l0Q29udHJvbCgpDQog
DQogICAgIC8vIGNsZWF1cCB0aGUgc3RhdGljIG9iamVjdA0KICAgICBDU3RhdGljT2JqZWN0Q29u
dGFpbmVyOjpJbnN0YW5jZSgpLkRlcmVmKCk7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMN
CisgICAgZGVsZXRlIGlXaWRnZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURH
RVRTDQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTIwOTAsNiArMjA5
NiwyMiBAQCB2b2lkIENXZWJLaXRDb250cm9sOjpGb3JlZ3JvdW5kRXZlbnQoVEJvDQogICAgICAg
ICBDV2ViQ29yZUJyaWRnZTo6U2V0RGVmZXJzVGltZXJzKCBFRmFsc2UgKTsNCiAgICAgICAgIH0N
CiAgICAgfQ0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisvLyBDV2ViS2l0Q29udHJvbDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uDQorLy8NCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorTVdpZGdldEV4dGVuc2lvbiogQ1dlYktpdENv
bnRyb2w6OkNyZWF0ZVdpZGdldEV4dGVuc2lvbkwoTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2Fs
bGJhY2spDQorICAgIHsNCisgICAgaWYoICFpV2lkZ2V0RXh0ZW5zaW9uICkNCisgICAgICAgIHsN
CisgICAgICAgIGlXaWRnZXRFeHRlbnNpb24gPSBDV2lkZ2V0RXh0ZW5zaW9uOjpOZXdMKCppV2Vi
S2l0VmlldyxhV2lkZ2V0Q2FsbGJhY2spOw0KKyAgICAgICAgfQ0KKyAgICBQbHVnaW5IYW5kbGVy
KCkuTG9hZFBsdWdpbnNTeW5jTCgpOw0KKyAgICByZXR1cm4gaVdpZGdldEV4dGVuc2lvbjsNCisg
ICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICNpZmRlZiBSRF8zMl9CUk9XU0VS
DQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ2FsbGVkIHdoZW4gdXNlciBjbGlja3Mg
YSBwbHVnaW4gd2hpY2ggaXMgYWJsZSB0byBhY2NlcHQgdXNlciBpbnB1dCwNCkluZGV4OiBXZWJL
aXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdFZpZXcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2Vi
S2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYw
LDYgKzYwLDExIEBADQogI2luY2x1ZGUgIldlYktpdFN1cmZhY2UuaCINCiAjaW5jbHVkZSAiV2Vi
S2l0VG9vbEJhckludGVyZmFjZS5oIg0KICNpbmNsdWRlICJUb29sQmFyLmgiDQorI2lmZGVmICBS
RF9CUk9XU0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2luY2x1
ZGUgIldpZGdldEVuZ2luZUJyaWRnZS5oIg0KKyNpbmNsdWRlICJXaWRnZXRSZW5kZXJlci5oIg0K
KyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICNpbmNsdWRlICJGZWF0TWdyLmgiDQogDQog
DQpAQCAtNjEzLDYgKzYxOCwxNyBAQCB2b2lkIENXZWJLaXRWaWV3OjpNYWtlVmlzaWJsZSgNCiAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgIH0NCiAgICAgU2V0Vmlld1Zpc2libGUoYVZpc2libGUp
Ow0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdk
Z3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmKCB3ZGd0
RXh0ICkNCisgICAgICAgIHsNCisgICAgICAgIE1XaWRnZXRFbmdpbmVCcmlkZ2UqIHdkZ3RCcmlk
Z2UgPSAmd2RndEV4dC0+V2lkZ2V0RW5naW5lQnJpZGdlKCk7DQorICAgICAgICBpZiggd2RndEJy
aWRnZSApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIHdkZ3RCcmlkZ2UtPlNldFdpZGdl
dFZpc2liaWxpdHkoYVZpc2libGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisjZW5k
aWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfQ0KIA0KIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KQEAgLTg3NCw2ICs4OTAsMTcgQEAgdm9pZCBDV2ViS2l0Vmlldzo6RHJhdygNCiAgICAg
Ly8gcHV0IG9mZnNjcmVlbiBiaXRtYXAgb250byB0aGUgc2NyZWVuDQogICBpUmVuZGVyVGFyZ2V0
LT5GbGlwKCBSZWN0KCkuaVRsLCBnYyApOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRT
DQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0
RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAgICAgew0KKyAgICAgICAgVFdp
ZGdldFJlbmRlcmVyKiB3aWRnZXRSZW5kZXJlciA9IGlXZWJLaXRDb250cm9sLT5XaWRnZXRFeHRl
bnNpb24oKS0+V2lkZ2V0UmVuZGVyZXIoKTsNCisgICAgICAgIGlmICh3aWRnZXRSZW5kZXJlciAm
JiB3aWRnZXRSZW5kZXJlci0+VHJhbnNpdGlvbkluUHJvZ3Jlc3MoKSkNCisgICAgICAgICAgICB7
DQorICAgICAgICAgICAgd2lkZ2V0UmVuZGVyZXItPkRyYXdUcmFuc2l0aW9uKGdjLCBPZmZzY3Jl
ZW5CaXRtYXAoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JS
T1dTRVJfV0lER0VUUw0KICAgICBpZiAoaUlzUGFnZVNjYWxlckVuYWJsZWQpDQogICAgICAgICB7
DQogICAgICAgICBpUGFnZVNjYWxlci0+RHJhdyggZ2MsYVJlY3QgKTsNCkluZGV4OiBXZWJLaXQv
QnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
QnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdl
YktpdC9Ccm93c2VyVmlldy9zcmMvd2Via2l0YnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTUxLDYgKzUxLDkgQEANCiAjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCINCiAjaW5jbHVk
ZSAiTG9hZGVyVXRpbHMuaCINCiAjaW5jbHVkZSAiV2ViS2l0TG9nZ2VyLmgiDQorI2lmZGVmICBS
RF9CUk9XU0VSX1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlm
IC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQogLy9DT05TVEFOVFMNCiBfTElUKEtEYXRlU3RyaW5n
LCAiJS1CJTowJUolOjElVCU6MiVTJS4lKkM0JTozJStCIik7DQpAQCAtOTE4LDcgKzkyMSw3IEBA
IHZvaWQgQ1dlYktpdEJyaWRnZTo6TGF5b3V0Q2hhbmdlZCgpDQogDQogICBpZihpRnJhbWUtPldl
YktpdFZpZXcoKS5XZWJLaXRDb250cm9sKCkuQnJDdGwoKS5DYXBhYmlsaXRpZXMoKSAmIFRCckN0
bERlZnM6OkVDYXBhYmlsaXR5R3JhcGhpY2FsUGFnZSkNCiAgICAgew0KLSAgICBUUkFQX0lHTk9S
RShpZiggaUZyYW1lLT5XZWJLaXRWaWV3KCkuUGFnZVNjYWxlcigpICkgDQorICAgIFRSQVBfSUdO
T1JFKGlmKCBpRnJhbWUtPldlYktpdFZpZXcoKS5QYWdlU2NhbGVyKCkgKQ0KICAgICAgICAgICAg
ICAgICAgICAgaUZyYW1lLT5XZWJLaXRWaWV3KCkuUGFnZVNjYWxlcigpLT5Eb2N1bWVudENoYW5n
ZWRMKCkpOw0KICAgICB9DQogICAgIC8vIGRvY3VtZW50IGlzIHBhcnNlZCBhbmQgbm8gcGVuZGlu
ZyB0cmFuc2FjdGlvbiBtZWFuIHRoYXQNCkBAIC0xMzUwLDQgKzEzNTMsMTUgQEAgdm9pZCBDV2Vi
S2l0QnJpZGdlOjpTZXRGb3JtQ29udHJvbFRleHRCeQ0KICAgICB9DQogICB9DQogDQorI2lmZGVm
ICBSRF9CUk9XU0VSX1dJREdFVFMNCit2b2lkKiBDV2ViS2l0QnJpZGdlOjpjcmVhdGVXaWRnZXRP
YmplY3Qodm9pZCogZXhlYykNCisgICAgew0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3ZGd0RXh0
ID0gaUZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpLldpZGdldEV4dGVuc2lvbigp
Ow0KKyAgICBpZih3ZGd0RXh0KQ0KKyAgICAgICB7DQorICAgICAgIHJldHVybiB3ZGd0RXh0LT5j
cmVhdGVXaWRnZXRPYmplY3QoZXhlYyk7DQorICAgICAgIH0NCisgICAgcmV0dXJuIDA7DQorICAg
IH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAvLyBlbmQgb2YgZmlsZQ0KSW5kZXg6
IFdlYktpdC9QbHVnaW4vaW5jL1BsdWdpbkhhbmRsZXIuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9QbHVnaW4vaW5jL1BsdWdpbkhhbmRsZXIuaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0
L1BsdWdpbi9pbmMvUGx1Z2luSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTM3LDYgKzEz
NywxNiBAQCBjbGFzcyBDUGx1Z2luSGFuZGxlciA6IHB1YmxpYyBDQmFzZSwgcHViDQogICAgICAg
ICAqLw0KICAgICAgICAgVFVpbnQgR2V0SW5kZXhGcm9tSGFuZGxlKFRJbnQgYUhhbmRsZSk7DQog
DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBH
ZXQgdGhlIGluZGV4IG9mIHBsdWdpbiBpbmZvIGZyb20gaXRzIGhhbmRsZS4NCisgICAgICAgICoN
CisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcGFyYW0gYUhhbmRsZSBUaGUgaGFu
ZGxlIG9mIHRoZSBwbHVnaW4sIHJldHVybmVkIGZyb20gRmluZFBsdWdpbi4NCisgICAgICAgICog
QHJldHVybiB0aGUgaW5kZXggb2YgdGhlIHBsdWdpbiBpbmZvLg0KKyAgICAgICAgKi8NCisgICAg
ICAgIFRCb29sIExvYWRQbHVnaW5zU3luY0woKTsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdF
VFMNCiAgICAgcHVibGljOiAvL0Zyb20gTVdlYkNvcmVQbHVnaW5IYW5kbGVyDQogICAgICAgICAv
KioNCiAgICAgICAgICogU2NhbnMgZm9yIG5ldyBwbHVnaW5zLg0KSW5kZXg6IFdlYktpdC9QbHVn
aW4vaW5jL1BsdWdpblNraW4uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5jL1Bs
dWdpblNraW4uaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2lu
U2tpbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTY4LDcgKzE2OCwxNCBAQCBjbGFzcyBDUGx1Z2lu
U2tpbiA6IHB1YmxpYyBDQmFzZSwNCiAgICAgICAgICogQHNpbmNlIDMuMQ0KICAgICAgICAgKiBA
cmV0dXJuIFRoZSBXZWJLaXRDb250cm9sIG9iamVjdA0KICAgICAgICAgKi8NCi0gICAgICAgIENX
ZWJLaXRDb250cm9sKiBXZWJLaXRDb250cm9sKCkgeyByZXR1cm4gJmlXZWJLaXRGcmFtZS0+V2Vi
S2l0VmlldygpLldlYktpdENvbnRyb2woKTsgfQ0KKyAgICAgICAgQ1dlYktpdENvbnRyb2wqIFdl
YktpdENvbnRyb2woKSBjb25zdCB7IHJldHVybiAmaVdlYktpdEZyYW1lLT5XZWJLaXRWaWV3KCku
V2ViS2l0Q29udHJvbCgpOyB9DQorICAgICAgICAvKioNCisgICAgICAgICogRnJhbWUNCisgICAg
ICAgICogUmV0dXJucyBhIHBvaW50ZXIgdG8gV2ViS2l0RnJhbWUgb2JqZWN0Lg0KKyAgICAgICAg
KiBAc2luY2UgMy4xDQorICAgICAgICAqIEByZXR1cm4gVGhlIFdlYktpdENvbnRyb2wgb2JqZWN0
DQorICAgICAgICAqLw0KKyAgICAgICAgQ1dlYktpdEZyYW1lKiBGcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIGlXZWJLaXRGcmFtZTsgfSANCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBIYXNSZXNp
emVkDQpAQCAtMzYyLDYgKzM2OSwxNSBAQCBjbGFzcyBDUGx1Z2luU2tpbiA6IHB1YmxpYyBDQmFz
ZSwNCiAgICAgICAgIFRCb29sIENhbkludGVyYWN0KCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJu
IGlDYW5QbHVnaW5JbnRlcmFjdDsgfQ0KICNlbmRpZg0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9X
SURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogR2V0IHRoZSBzY3JpcHRpbmcgb2JqZWN0
IGZyb20gcGx1Z2luDQorICAgICAgICAqIFNldHMgdGhlIGZvbnQNCisgICAgICAgICogQHNpbmNl
IDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCAqUGx1
Z2luU2NyaXB0YWJsZU9iamVjdCgpOyANCisjZW5kaWYNCiAgIHB1YmxpYzogLy8gRnVuY3Rpb25z
IGZyb20gTVZpZXdGb2N1c09ic2VydmVyDQogDQogICAgICAgICAvKioNCkluZGV4OiBXZWJLaXQv
UGx1Z2luL2luYy9QbHVnaW5XaW4uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5j
L1BsdWdpbldpbi5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL2luYy9QbHVn
aW5XaW4uaAkod29ya2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDkgQEAgY2xhc3MgQ1BsdWdpbkRh
dGE7DQogY2xhc3MgQ1dlYktpdENvbnRyb2w7DQogY2xhc3MgQ1BsdWdpblNraW47DQogY2xhc3Mg
Q1BsdWdpbkhhbmRsZXI7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitjbGFzcyBOUE9i
amVjdDsNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAvLyBMT0NBTCBDT05TVEFO
VFMgQU5EIE1BQ1JPUw0KIC8vIFRoZXNlIGFyZSB1c2VkIHRvIGRlc2lnbmF0ZSB0aGUgaGFuZGxp
bmcgb2YgaW5jb21pbmcgY29udGVudCBhbmQgbG9hZGluZyBQbHVnaW5zDQpAQCAtNDY2LDYgKzQ2
OSwyMSBAQCBjbGFzcyBDUGx1Z2luV2luIDogIHB1YmxpYyBDQ29lQ29udHJvbCwNCiAgICAgICAg
ICovDQogICAgIHZvaWQgSGFuZGxlTG9zaW5nRm9yZWdyb3VuZCgpOw0KIA0KKyNpZmRlZiAgUkRf
QlJPV1NFUl9XSURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogUmV0dXJuIHdpbmRvdyBv
YmplY3QgdXNhYmxlIGZyb20gc2NyaXB0YWJsZSBwbHVnaW5zIA0KKyAgICAgICAgKiBAc2luY2Ug
My4xDQorICAgICAgICAqIEByZXR1cm4gbm9uZQ0KKyAgICAgICAgKi8gICAgICAgIA0KKyAgICAg
ICAgTlBPYmplY3QqIFdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7IA0KKyAgICAgICAgLyoqDQorICAg
ICAgICAqIEdldCB0aGUgc2NyaXB0aW5nIG9iamVjdCBmcm9tIHBsdWdpbg0KKyAgICAgICAgKiBT
ZXRzIHRoZSBmb250DQorICAgICAgICAqIEBzaW5jZSAzLjENCisgICAgICAgICogQHJldHVybg0K
KyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgKlBsdWdpblNjcmlwdGFibGVPYmplY3QoKTsgICAg
ICAgICANCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAgICAgcHJvdGVjdGVkOiAv
LyBOZXcgZnVuY3Rpb25zDQogDQpJbmRleDogV2ViS2l0L1BsdWdpbi9pbmMvbnBhcGkuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgJKHJldmlzaW9uIDE3MDY5KQ0K
KysrIFdlYktpdC9QbHVnaW4vaW5jL25wYXBpLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xNCw3ICsx
NCw3IEBADQogICoNCiAgKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBtb3ppbGxhLm9yZyBjb2RlLg0K
ICAqDQotICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzIA0K
KyAqIFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcw0KICAqIE5l
dHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLg0KICAqIFBvcnRpb25zIGNyZWF0ZWQg
YnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgNCiAgKiB0aGUg
SW5pdGlhbCBEZXZlbG9wZXIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQpAQCAtNzMsMTIgKzczLDEy
IEBADQogI2VuZGlmDQogI2VuZGlmDQogDQotLyogDQotICogTk9fTlNQUl8xMF9TVVBQT1JUIGRp
c2FibGVzIHRoZSBpbmNsdXNpb24gDQotICogb2Ygb2Jzb2xldGUvcHJvdHlwZXMuaCwgd2hvc2Ug
aW50MTYsIHVpbnQxNiwgDQotICogaW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qg
d2l0aCB0aG9zZSANCi0gKiBpbiB0aGlzIGZpbGUuIA0KLSAqLyANCisvKg0KKyAqIE5PX05TUFJf
MTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVzaW9uDQorICogb2Ygb2Jzb2xldGUvcHJvdHlw
ZXMuaCwgd2hvc2UgaW50MTYsIHVpbnQxNiwNCisgKiBpbnQzMiwgYW5kIHVpbnQzMiB0eXBlZGVm
cyBjb25mbGljdCB3aXRoIHRob3NlDQorICogaW4gdGhpcyBmaWxlLg0KKyAqLw0KICNpZm5kZWYg
Tk9fTlNQUl8xMF9TVVBQT1JUDQogI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQNCiAjZW5kaWYN
CkBAIC0xMjAsNyArMTIwLDcgQEANCiAgICNpbmNsdWRlIDxFdmVudHMuaD4NCiAjZW5kaWYNCiAN
Ci0jaWYgZGVmaW5lZChYUF9VTklYKSANCisjaWYgZGVmaW5lZChYUF9VTklYKQ0KICMgaW5jbHVk
ZSA8c3RkaW8uaD4NCiAjIGlmIGRlZmluZWQoTU9aX1gxMSkNCiAjICAgaW5jbHVkZSA8WDExL1hs
aWIuaD4NCkBAIC0yOTgsMTEgKzI5OCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBfTlBSZWN0DQogICB1
aW50MTYgcmlnaHQ7DQogfSBOUFJlY3Q7DQogDQotdHlwZWRlZiBzdHJ1Y3QgX05QU2l6ZSANCi17
IA0KLSAgaW50MzIgd2lkdGg7IA0KLSAgaW50MzIgaGVpZ2h0OyANCi19IE5QU2l6ZTsgDQordHlw
ZWRlZiBzdHJ1Y3QgX05QU2l6ZQ0KK3sNCisgIGludDMyIHdpZHRoOw0KKyAgaW50MzIgaGVpZ2h0
Ow0KK30gTlBTaXplOw0KIA0KICNpZmRlZiBYUF9VTklYDQogLyoNCkBAIC0zNDUsMjEgKzM0NSwy
MSBAQCB0eXBlZGVmIHN0cnVjdA0KIA0KIA0KIC8qDQotICogICBUaGUgZm9sbG93aW5nIG1hc2tz
IGFyZSBhcHBsaWVkIG9uIGNlcnRhaW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kIA0KLSAqICAgTlBQ
ViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFyb3VuZCBwb2ludGVycyB0byBDT00gaW50ZXJmYWNlcy4g
TmV3ZXIgDQotICogICBjb21waWxlcnMgb24gc29tZSBwbGF0Zm9ybXMgbWF5IGdlbmVyYXRlIHZ0
YWJsZXMgdGhhdCBhcmUgbm90IA0KLSAqICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVy
cy4gVG8gcHJldmVudCBvbGRlciBwbHVnaW5zIGZyb20gDQotICogICBub3QgdW5kZXJzdGFuZGlu
ZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0aGVzZSBtYXNrcyBjaGFuZ2UgdGhlIA0KKyAqICAgVGhl
IGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0byBOUE5W
IGFuZA0KKyAqICAgTlBQViBzZWxlY3RvcnMgdGhhdCBwYXNzIGFyb3VuZCBwb2ludGVycyB0byBD
T00gaW50ZXJmYWNlcy4gTmV3ZXINCisgKiAgIGNvbXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBt
YXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QNCisgKiAgIGNvbXBhdGlibGUgd2l0aCBv
bGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBmcm9tDQorICogICBub3Qg
dW5kZXJzdGFuZGluZyBhIG5ldyBicm93c2VyJ3MgQUJJLCB0aGVzZSBtYXNrcyBjaGFuZ2UgdGhl
DQogICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3JzIG9uIHRob3NlIHBsYXRmb3Jtcy4gVG8g
cmVtYWluIGJhY2t3YXJkcw0KLSAqICAgY29tcGF0aWJsZSB3aXRoIGRpZmZlcmVuZXQgdmVyc2lv
bnMgb2YgdGhlIGJyb3dzZXIsIHBsdWdpbnMgY2FuIA0KKyAqICAgY29tcGF0aWJsZSB3aXRoIGRp
ZmZlcmVuZXQgdmVyc2lvbnMgb2YgdGhlIGJyb3dzZXIsIHBsdWdpbnMgY2FuDQogICogICB1c2Ug
dGhlc2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGFuZCB1c2UgdGhlIGNvcnJlY3Qg
QysrDQotICogICBBQkkgdGhhdCB0aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBu
b3QgYXBwbHkgdG8gV2luZG93cyANCisgKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVj
dGluZy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBXaW5kb3dzDQogICogICBhcyBNaWNyb3NvZnQn
cyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuDQogICovDQogDQogI2RlZmluZSBOUF9B
QklfR0NDM19NQVNLICAweDEwMDAwMDAwDQogLyoNCi0gKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0
YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBpbmNvbXBhdGlibGUgd2l0aCANCisgKiAgIGdjYyAz
LnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBpbmNvbXBhdGlibGUgd2l0
aA0KICAqICAgcHJldmlvdXMgY29tcGlsZXJzLg0KICAqLw0KICNpZiAoZGVmaW5lZCAoWFBfVU5J
WCkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQ0KQEAgLTM3NSw3ICsz
NzUsNyBAQCB0eXBlZGVmIHN0cnVjdA0KICAqICAgZGlmZmVyZW50IHRoYW4gQ0ZNLiBJbiBhZGRp
dGlvbiB0byBoYXZpbmcgYSBkaWZmZXJlbnQNCiAgKiAgIEMrKyBBQkksIGl0IGFsc28gaGFzIGhh
cyBkaWZmZXJlbnQgQyBjYWxsaW5nIGNvbnZlbnRpb24uDQogICogICBZb3UgbXVzdCB1c2UgZ2x1
ZSBjb2RlIHdoZW4gY2FsbGluZyBiZXR3ZWVuIENGTSBhbmQNCi0gKiAgIE1hY2gtTyBDIGZ1bmN0
aW9ucy4gDQorICogICBNYWNoLU8gQyBmdW5jdGlvbnMuDQogICovDQogI2lmIChkZWZpbmVkKFRB
UkdFVF9SVF9NQUNfTUFDSE8pKQ0KICNkZWZpbmUgX05QX0FCSV9NSVhJTl9GT1JfTUFDSE8gTlBf
QUJJX01BQ0hPX01BU0sNCkBAIC00MDQsMTEgKzQwNCwxNCBAQCB0eXBlZGVmIGVudW0gew0KICAg
LyogMTIgYW5kIG92ZXIgYXJlIGF2YWlsYWJsZSBvbiBNb3ppbGxhIGJ1aWxkcyBzdGFydGluZyB3
aXRoIDAuOS45ICovDQogICBOUFBWamF2YXNjcmlwdFB1c2hDYWxsZXJCb29sID0gMTIsDQogICBO
UFBWcGx1Z2luS2VlcExpYnJhcnlJbk1lbW9yeSA9IDEzLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3pp
bGxhIDEuMCAqLw0KLSAgLyogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWZpYyB0byBOb2tpYSwgc28g
dmFsdWUgaXMgDQotICAgKiBzdGFydGVkIGZyb20gMTAwLiBUaGUgbnVtYmVycyAxMyB0byAxMDAw
IGFyZSBsZWZ0DQorI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgTlBQVnBsdWdpbk5lZWRz
WEVtYmVkICAgICAgICAgPSAxNCwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0KKyAg
IC8qIHN0YXJ0ZWQgZnJvbSAxMDAuIFRoZSBudW1iZXJzIDEzIHRvIDEwMDAgYXJlIGxlZnQNCiAg
ICAqIGZvciBzdGFuZGFyaXphdGlvbiBhbmQgb3RoZXIgZnV0dXJlIHVzZS4gVmFsdWUgcmV0dXJu
IGlzIHplcm8gZm9yDQogICAgKiBpbmV0ZXJhY3RpdmUgYW5kICdvbmUnIGZvciBub24taW50ZXJh
Y3RpdmUuDQogICAgKi8NCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QgID0gMTUsDQor
I2VuZGlmDQogICBOUFBWcGx1Z2luSW50ZXJhY3RpdmVCb29sID0gMTAwMA0KIH0gTlBQVmFyaWFi
bGU7DQogDQpAQCAtNDI3LDYgKzQzMCwxNiBAQCB0eXBlZGVmIGVudW0gew0KICAgTlBOVnNlcnZp
Y2VNYW5hZ2VyID0gKDEwIHwgTlBfQUJJX01BU0spLA0KICAgTlBOVkRPTUVsZW1lbnQgICAgID0g
KDExIHwgTlBfQUJJX01BU0spLCAgIC8qIGF2YWlsYWJsZSBpbiBNb3ppbGxhIDEuMiAqLw0KICAg
TlBOVkRPTVdpbmRvdyAgICAgID0gKDEyIHwgTlBfQUJJX01BU0spDQorI2lmZGVmIFJEX0JST1dT
RVJfV0lER0VUUw0KKyAgLE5QTlZUb29sa2l0ICAgICAgICA9ICgxMyB8IE5QX0FCSV9NQVNLKSwg
IC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisgIE5QTlZTdXBwb3J0c1hFbWJlZEJv
b2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8NCisN
CisgIC8qIEdldCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAq
Lw0KKyAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsDQorDQorICAgIC8qIEdldCB0aGUgTlBPYmpl
Y3Qgd3JhcHBlciBmb3IgdGhlIHBsdWdpbnMgRE9NIGVsZW1lbnQuICovDQorICBOUE5WUGx1Z2lu
RWxlbWVudE5QT2JqZWN0ICAgICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2Vi
S2l0ICovDQorI2VuZGlmDQogfSBOUE5WYXJpYWJsZTsNCiANCiAvKg0KSW5kZXg6IFdlYktpdC9Q
bHVnaW4vc3JjL05wbkltcGxlbWVudGF0aW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Q
bHVnaW4vc3JjL05wbkltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2Vi
S2l0L1BsdWdpbi9zcmMvTnBuSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDI1LDcgKzQyNSwyMCBAQCBOUEVycm9yIE5wblVybExvYWRlcihOUFAgYUluc3RhbmNlLCBjb25z
DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGJyZWFrOw0K
LSAgICAgICAgICAgIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICBjYXNl
IE5QTlZXaW5kb3dOUE9iamVjdDoNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgQ1BsdWdp
bldpbiogcGx1Z2luV2luID0gKENQbHVnaW5XaW4qKWFJbnN0YW5jZS0+bmRhdGE7DQorICAgICAg
ICAgICAgTlBPYmplY3QqIHdpbmRvd09iamVjdCA9IHBsdWdpbldpbi0+V2luZG93U2NyaXB0TlBP
YmplY3QoKTsNCisgICAgICAgICAgICBpZiAod2luZG93T2JqZWN0KQ0KKyAgICAgICAgICAgICAg
ICB7DQorICAgICAgICAgICAgICAgIHZvaWQgKip2ID0gKHZvaWQgKiopYVJldFZhbHVlOw0KKyAg
ICAgICAgICAgICAgICAqdiA9IHdpbmRvd09iamVjdDsNCisgICAgICAgICAgICAgICAgcmV0dXJu
IE5QRVJSX05PX0VSUk9SOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJu
IE5QRVJSX0dFTkVSSUNfRVJST1I7DQorICAgICAgICAgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KICAgICAgICAgY2FzZSBOUE5WRE9NV2luZG93Og0KICAgICAgICAgY2FzZSBO
UE5WeERpc3BsYXk6ICAgICAgICAgIC8vIFVuaXggb25seTogUmV0dXJucyB0aGUgY3VycmVudCBE
aXNwbGF5DQogICAgICAgICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6ICAgICAgLy8gVW5peCBvbmx5
OiBSZXR1cm5zIHRoZSBhcHBsaWNhdGlvbidzIFh0QXBwQ29udGV4dA0KSW5kZXg6IFdlYktpdC9Q
bHVnaW4vc3JjL1BsdWdpbkhhbmRsZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdp
bi9zcmMvUGx1Z2luSGFuZGxlci5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVn
aW4vc3JjL1BsdWdpbkhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTAsOSArMTAsOSBA
QA0KICogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbg0KICogICAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCiAqICANCi0qICAJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotKiAgCW1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0K
LSogIAlhcmUgbWV0Og0KKyogICAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisqICAgICAgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorKiAg
ICAgIGFyZSBtZXQ6DQogKiAgDQogKiAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQpAQCAt
MjQsMTggKzI0LDE4IEBADQogKiAgICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICogIA0K
LSogIAlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTDQotKiAgCSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQotKiAgCUxJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KLSogIAlB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVA0KLSogIAlPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCi0qICAJU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KLSogIAlMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwNCi0qICAJREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQotKiAgCVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCi0qICAJKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUN
Ci0qICAJVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSA0KLSogIAlEQU1BR0UuDQorKiAgICAgIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisqICAgICAg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QNCisqICAgICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorKiAgICAgIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorKiAg
ICAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLA0KKyogICAgICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgICAgIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0K
KyogICAgICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkNCisqICAgICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyogICAgICAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RQ0KKyogICAgICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIDQorKiAgICAgIERBTUFHRS4NCiAqICANCiAqICAgIFBsZWFzZSBz
ZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuDQogKiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCkBAIC0zMjUsOCArMzI1LDggQEAgdm9pZCBDUGx1Z2luSW5mbzo6UGFy
c2VEZWZhdWx0RGF0YUwoY29ucw0KICAgICAgICAgICAgIGlmIChpID4gbWFya2VyKQ0KICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgIFRQdHJDOCBtaW1lRmlsZUV4dDgoYU1JTUVE
ZXNjcmlwdGlvbi5NaWQobWFya2VyLGktbWFya2VyKSk7DQotCSAgICAgICAgICAgIG5ld01pbWVG
aWxlRXh0RW50cnkgPSBIQnVmQzo6TmV3TEMoaS1tYXJrZXIpOw0KLQkgICAgICAgICAgICBuZXdN
aW1lRmlsZUV4dEVudHJ5LT5EZXMoKS5Db3B5KG1pbWVGaWxlRXh0OCk7DQorICAgICAgICAgICAg
ICAgIG5ld01pbWVGaWxlRXh0RW50cnkgPSBIQnVmQzo6TmV3TEMoaS1tYXJrZXIpOw0KKyAgICAg
ICAgICAgICAgICBuZXdNaW1lRmlsZUV4dEVudHJ5LT5EZXMoKS5Db3B5KG1pbWVGaWxlRXh0OCk7
DQogICAgICAgICAgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpTWltZUZpbGVFeHRlbnNpb25z
LkFwcGVuZChuZXdNaW1lRmlsZUV4dEVudHJ5KSk7DQogICAgICAgICAgICAgICAgIENsZWFudXBT
dGFjazo6UG9wKCk7IC8vcG9wIG5ld01pbWVGaWxlRXh0RW50cnkNCiANCkBAIC0zNjYsOCArMzY2
LDggQEAgdm9pZCBDUGx1Z2luSW5mbzo6UGFyc2VEZWZhdWx0RGF0YUwoY29ucw0KICAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBtaW1lRGVz
Y3JpcHRpb24gZW50cnkNCiAgICAgICAgICAgICAgICAgICAgIFRQdHJDOCBtaW1lRGVzYzgoYU1J
TUVEZXNjcmlwdGlvbi5NaWQobWFya2VyLGktbWFya2VyKSk7DQotCQkgICAgICAgICAgICBuZXdN
aW1lRGVzY3JpcHRpb25FbnRyeSA9IEhCdWZDOjpOZXdMQyhpLW1hcmtlcik7DQotCQkgICAgICAg
ICAgICBuZXdNaW1lRGVzY3JpcHRpb25FbnRyeS0+RGVzKCkuQ29weShtaW1lRGVzYzgpOw0KKyAg
ICAgICAgICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnkgPSBIQnVmQzo6TmV3TEMo
aS1tYXJrZXIpOw0KKyAgICAgICAgICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnkt
PkRlcygpLkNvcHkobWltZURlc2M4KTsNCiANCiAgICAgICAgICAgICAgICAgICAgIFVzZXI6Okxl
YXZlSWZFcnJvcihpTWltZURlc2NyaXB0aW9ucy5BcHBlbmQobmV3TWltZURlc2NyaXB0aW9uRW50
cnkpKTsNCiAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCk7ICAvL3BvcCBu
ZXdNaW1lRGVzY3JpcHRpb25FbnRyeQ0KQEAgLTUyMSw3ICs1MjEsMjggQEAgVEJvb2wgQ1BsdWdp
bkhhbmRsZXI6OkluaXRpYWxpemUoVEFueSogYQ0KICAgICByZXR1cm4gZG9uZUluaXQ7DQogICAg
IH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gQ1BsdWdpbkhhbmRsZXI6OkluaXRpYWxpemUNCisvLw0KKy8vIEluaXRpYWxpemVz
IHRoZSBQbHVnaW5IYW5kbGVyLCBwb3NzaWJseSBhc3luY2hyb25vdXNseQ0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorLy8NCitUQm9vbCBDUGx1Z2luSGFuZGxlcjo6TG9hZFBsdWdpbnNTeW5j
TCgpDQorICAgIHsNCisgICAgaWYoIGlQbHVnaW5JbmZvQXJyYXkuQ291bnQoKSAhPSAwICkNCisg
ICAgICAgIHsNCisgICAgICAgIHJldHVybiBFVHJ1ZTsNCisgICAgICAgIH0NCisNCisgICAgLy9D
YW5jZWwgdGhlIGVhcmxpZXIgcmVxdWVzdCBhbmQgbG9hZCBwbHVnaW5zIG5vdw0KKyAgICBpZigg
aUlkbGUgKQ0KKyAgICAgICAgew0KKyAgICAgICAgaUlkbGUtPkNhbmNlbCgpOw0KKyAgICAgICAg
fQ0KKyAgICByZXR1cm4gTG9hZFBsdWdpbnNMKCk7DQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9X
U0VSX1dJREdFVFMNCiAvLyBDUGx1Z2luSGFuZGxlcjo6TG9hZFBsdWdpbnNMDQogLy8NCiAvLyBM
b2FkcyBhbGwgdGhlIHBsdWdpbnMgYW5kIHF1ZXJ5IHRoZW0gZm9yIGRldGFpbHMuDQpAQCAtNTM1
LDMyICs1NTYsMzIgQEAgVEJvb2wgQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zTCgpDQogICAg
IC8vIENyZWF0ZSB0aGUgRUNvbSBpbmZvIGFycmF5LCBjb250YWlucyB0aGUgcGx1Z2luIGluZm9y
bWF0aW9uDQogICAgIFJJbXBsSW5mb1B0ckFycmF5IGVjb21QbHVnaW5JbmZvQXJyYXk7DQogDQot
CS8vIEdldCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0aGF0IG1hdGNoIHRoZSBLTkJyb3dzZXJQbHVn
aW5JbnRlcmZhY2VVaWQNCi0JUkVDb21TZXNzaW9uOjpMaXN0SW1wbGVtZW50YXRpb25zTChLQnJv
d3NlclBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBsdWdpbkluZm9BcnJheSk7DQorICAgIC8vIEdl
dCBsaXN0IG9mIEVDT00gcGx1Z2lucyB0aGF0IG1hdGNoIHRoZSBLTkJyb3dzZXJQbHVnaW5JbnRl
cmZhY2VVaWQNCisgICAgUkVDb21TZXNzaW9uOjpMaXN0SW1wbGVtZW50YXRpb25zTChLQnJvd3Nl
clBsdWdpbkludGVyZmFjZVVpZCwgZWNvbVBsdWdpbkluZm9BcnJheSk7DQogDQotCS8vIExvb3Ag
dGhyb3VnaCBhbGwgdGhlIE5ldHNjYXBlIHBsdWdpbnMgZm91bmQgYnkgRUNvbSBhbmQgcG9wdWxh
dGUgdGhlDQotCS8vIGlQbHVnaW5JbmZvQXJyYXkNCi0JY29uc3QgVEludCBwbHVnaW5Db3VudCA9
IGVjb21QbHVnaW5JbmZvQXJyYXkuQ291bnQoKTsNCi0JZm9yIChUSW50IGluZGV4PTA7IGluZGV4
PHBsdWdpbkNvdW50OyArK2luZGV4KQ0KLSAgICAgICAgew0KLQkJQ1BsdWdpbkluZm8qIHBsdWdp
bkluZm8gPSBuZXcoRUxlYXZlKSBDUGx1Z2luSW5mbzsNCi0JICAgIHBsdWdpbkluZm8tPmlIYW5k
bGUgPSBpTmV4dEhhbmRsZSsrOw0KLQkgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChwbHVnaW5JbmZv
KTsNCi0NCi0JICAgIC8vIFNldCB0aGUgcGx1Z2luIHByb3BlcnRpZXMNCi0JICAgIHBsdWdpbklu
Zm8tPmlQbHVnaW5JbmZvID0gZWNvbVBsdWdpbkluZm9BcnJheVtpbmRleF07DQotCSAgICAvLyBS
ZWFkIHRoZSBwbHVnaW4ncyBuYW1lIGFuZCBwbHVnaW4gRmlsZU5hbWUgKGRpc3BsYXlfbmFtZSkg
ZnJvbSB0aGUgSU1QTEVNRU5UQVRJT05fSU5GTw0KLQkgICAgcGx1Z2luSW5mby0+UGFyc2VEaXNw
bGF5TmFtZUwocGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPkRpc3BsYXlOYW1lKCkpOw0KLQkgICAg
cGx1Z2luSW5mby0+aURlc2NyaXB0aW9uID0gSEJ1ZkM6Ok5ld0wocGx1Z2luSW5mby0+aVBsdWdp
bkluZm8tPk9wYXF1ZURhdGEoKS5MZW5ndGgoKSk7DQotCSAgICBwbHVnaW5JbmZvLT5pRGVzY3Jp
cHRpb24tPkRlcygpLkNvcHkocGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPk9wYXF1ZURhdGEoKSk7
DQotCSAgICBwbHVnaW5JbmZvLT5pVWlkID0gcGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPkltcGxl
bWVudGF0aW9uVWlkKCk7DQotCSAgICAvLyBQYXJzZXMgdGhlIGFNSU1FRGVzY3JpcHRpb24gc3Ry
aW5nIHRvIHBvcHVsYXRlIHRoZSBtaW1lVHlwZXMsIG1pbWVFeHRlbnNpb25zLA0KLQkgICAgLy8g
YW5kIG1pbWVEZXNjcmlwdGlvbnMgYXJyYXlzLg0KLQkgICAgcGx1Z2luSW5mby0+UGFyc2VEZWZh
dWx0RGF0YUwocGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPkRhdGFUeXBlKCkpOw0KLQ0KLQkgICAg
Ly8gQWRkIHRoZSBmaWx0ZXIgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QNCi0JICAgIFVzZXI6Okxl
YXZlSWZFcnJvcihpUGx1Z2luSW5mb0FycmF5LkFwcGVuZChwbHVnaW5JbmZvKSk7DQotCSAgICBD
bGVhbnVwU3RhY2s6OlBvcCgpOyAgICAvLyBwbHVnaW5JbmZvDQorICAgIC8vIExvb3AgdGhyb3Vn
aCBhbGwgdGhlIE5ldHNjYXBlIHBsdWdpbnMgZm91bmQgYnkgRUNvbSBhbmQgcG9wdWxhdGUgdGhl
DQorICAgIC8vIGlQbHVnaW5JbmZvQXJyYXkNCisgICAgY29uc3QgVEludCBwbHVnaW5Db3VudCA9
IGVjb21QbHVnaW5JbmZvQXJyYXkuQ291bnQoKTsNCisgICAgZm9yIChUSW50IGluZGV4PTA7IGlu
ZGV4PHBsdWdpbkNvdW50OyArK2luZGV4KQ0KKyAgICAgICAgew0KKyAgICAgICAgQ1BsdWdpbklu
Zm8qIHBsdWdpbkluZm8gPSBuZXcoRUxlYXZlKSBDUGx1Z2luSW5mbzsNCisgICAgICAgIHBsdWdp
bkluZm8tPmlIYW5kbGUgPSBpTmV4dEhhbmRsZSsrOw0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQ
dXNoTChwbHVnaW5JbmZvKTsNCisNCisgICAgICAgIC8vIFNldCB0aGUgcGx1Z2luIHByb3BlcnRp
ZXMNCisgICAgICAgIHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvID0gZWNvbVBsdWdpbkluZm9BcnJh
eVtpbmRleF07DQorICAgICAgICAvLyBSZWFkIHRoZSBwbHVnaW4ncyBuYW1lIGFuZCBwbHVnaW4g
RmlsZU5hbWUgKGRpc3BsYXlfbmFtZSkgZnJvbSB0aGUgSU1QTEVNRU5UQVRJT05fSU5GTw0KKyAg
ICAgICAgcGx1Z2luSW5mby0+UGFyc2VEaXNwbGF5TmFtZUwocGx1Z2luSW5mby0+aVBsdWdpbklu
Zm8tPkRpc3BsYXlOYW1lKCkpOw0KKyAgICAgICAgcGx1Z2luSW5mby0+aURlc2NyaXB0aW9uID0g
SEJ1ZkM6Ok5ld0wocGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPk9wYXF1ZURhdGEoKS5MZW5ndGgo
KSk7DQorICAgICAgICBwbHVnaW5JbmZvLT5pRGVzY3JpcHRpb24tPkRlcygpLkNvcHkocGx1Z2lu
SW5mby0+aVBsdWdpbkluZm8tPk9wYXF1ZURhdGEoKSk7DQorICAgICAgICBwbHVnaW5JbmZvLT5p
VWlkID0gcGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPkltcGxlbWVudGF0aW9uVWlkKCk7DQorICAg
ICAgICAvLyBQYXJzZXMgdGhlIGFNSU1FRGVzY3JpcHRpb24gc3RyaW5nIHRvIHBvcHVsYXRlIHRo
ZSBtaW1lVHlwZXMsIG1pbWVFeHRlbnNpb25zLA0KKyAgICAgICAgLy8gYW5kIG1pbWVEZXNjcmlw
dGlvbnMgYXJyYXlzLg0KKyAgICAgICAgcGx1Z2luSW5mby0+UGFyc2VEZWZhdWx0RGF0YUwocGx1
Z2luSW5mby0+aVBsdWdpbkluZm8tPkRhdGFUeXBlKCkpOw0KKw0KKyAgICAgICAgLy8gQWRkIHRo
ZSBmaWx0ZXIgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QNCisgICAgICAgIFVzZXI6OkxlYXZlSWZF
cnJvcihpUGx1Z2luSW5mb0FycmF5LkFwcGVuZChwbHVnaW5JbmZvKSk7DQorICAgICAgICBDbGVh
bnVwU3RhY2s6OlBvcCgpOyAgICAvLyBwbHVnaW5JbmZvDQogICAgICAgICB9DQogDQogICAgIC8v
IENsZWFuIHVwIHRoZSBFQ29tIGluZm8gYXJyYXkNCkBAIC03MTksNyArNzQwLDcgQEAgVFVpbnQg
Q1BsdWdpbkhhbmRsZXI6OkdldEluZGV4RnJvbUhhbmRsZQ0KIC8vDQogdm9pZCBDUGx1Z2luSGFu
ZGxlcjo6UmVsb2FkUGx1Z2lucyhUQm9vbCBhUmVsb2FkUGFnZXMsICBNV2ViQ2xpZW50QnJpZGdl
JiBhV2ViQ2xpZW50QnJpZGdlKQ0KICAgIHsNCi0JVFJBUF9JR05PUkUoIFJlbG9hZFBsdWdpbnNM
KGFSZWxvYWRQYWdlcywgYVdlYkNsaWVudEJyaWRnZSkpOw0KKyAgICBUUkFQX0lHTk9SRSggUmVs
b2FkUGx1Z2luc0woYVJlbG9hZFBhZ2VzLCBhV2ViQ2xpZW50QnJpZGdlKSk7DQogICAgfQ0KIA0K
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtNzI5LDEyICs3NTAsMTIgQEAgdm9pZCBDUGx1
Z2luSGFuZGxlcjo6UmVsb2FkUGx1Z2lucyhUQm9vbA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogVFB0ckMgQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbk5hbWUoVEludCBhSW5kZXgpDQogICAg
IHsNCi0gCUNQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJheVthSW5kZXhd
Ow0KLSAJaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aU5hbWUpDQotIAkgICB7DQotIAkg
ICByZXR1cm4gcGx1Z2luSW5mby0+TmFtZSgpLT5EZXMoKTsNCi0gCSAgIH0NCi0gCXJldHVybiBU
UHRyQygpOw0KKyAgICAgQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5
W2FJbmRleF07DQorICAgICBpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pTmFtZSkNCisg
ICAgICAgIHsNCisgICAgICAgIHJldHVybiBwbHVnaW5JbmZvLT5OYW1lKCktPkRlcygpOw0KKyAg
ICAgICAgfQ0KKyAgICAgcmV0dXJuIFRQdHJDKCk7DQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KQEAgLTc0NCwxMiArNzY1LDEyIEBAIFRQdHJDIENQbHVnaW5IYW5kbGVyOjpH
ZXRQbHVnaW5OYW1lKFRJbnQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIFRQdHJDIENQbHVn
aW5IYW5kbGVyOjpHZXRQbHVnaW5GaWxlTmFtZShUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1Bs
dWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAo
cGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5pRmlsZU5hbWUpDQotIAkgICB7DQotIAkgICByZXR1
cm4gcGx1Z2luSW5mby0+RmlsZU5hbWUoKS0+RGVzKCk7DQotIAkgICB9DQotIAlyZXR1cm4gVFB0
ckMoKTsNCisgICAgIENQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJheVth
SW5kZXhdOw0KKyAgICAgaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aUZpbGVOYW1lKQ0K
KyAgICAgICAgew0KKyAgICAgICAgcmV0dXJuIHBsdWdpbkluZm8tPkZpbGVOYW1lKCktPkRlcygp
Ow0KKyAgICAgICAgfQ0KKyAgICAgcmV0dXJuIFRQdHJDKCk7DQogICAgIH0NCiANCiANCkBAIC03
NjAsMTIgKzc4MSwxMiBAQCBUUHRyQyBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luRmlsZU5hbWUo
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBUUHRyQyBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1
Z2luRGVzY3JpcHRpb24oVEludCBhSW5kZXgpDQogICAgIHsNCi0gCUNQbHVnaW5JbmZvKiBwbHVn
aW5JbmZvID0gaVBsdWdpbkluZm9BcnJheVthSW5kZXhdOw0KLSAJaWYgKHBsdWdpbkluZm8gJiYg
cGx1Z2luSW5mby0+aURlc2NyaXB0aW9uKQ0KLSAJICAgew0KLSAJICAgcmV0dXJuIHBsdWdpbklu
Zm8tPkRlc2NyaXB0aW9uKCktPkRlcygpOw0KLSAJICAgfQ0KLSAJcmV0dXJuIFRQdHJDKCk7DQor
ICAgICBDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsN
CisgICAgIGlmIChwbHVnaW5JbmZvICYmIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbikNCisgICAg
ICAgIHsNCisgICAgICAgIHJldHVybiBwbHVnaW5JbmZvLT5EZXNjcmlwdGlvbigpLT5EZXMoKTsN
CisgICAgICAgIH0NCisgICAgIHJldHVybiBUUHRyQygpOw0KICAgICB9DQogDQogDQpAQCAtNzc3
LDggKzc5OCw4IEBAIFRQdHJDIENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5EZXNjcmlwdGkNCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIFRJbnQgQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkNv
dW50KCkNCiAgICAgew0KLQlyZXR1cm4gaVBsdWdpbkluZm9BcnJheS5Db3VudCgpOw0KLQl9DQor
ICAgIHJldHVybiBpUGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQorICAgIH0NCiANCiANCiANCkBA
IC05MDYsNyArOTI3LDcgQEAgdm9pZCBDUGx1Z2luSGFuZGxlcjo6UmVsb2FkUGx1Z2luc0woVEJv
bw0KICAgICB0bXBQbHVnaW5JbmZvQXJyYXkuQ2xvc2UoKTsNCiAgICAgaWYgKGFSZWxvYWRQYWdl
cykNCiAgICAgICAgIHsNCi0JCWFXZWJDbGllbnRCcmlkZ2UuUmVsb2FkKCk7DQorICAgICAgICBh
V2ViQ2xpZW50QnJpZGdlLlJlbG9hZCgpOw0KICAgICAgICAgfQ0KICAgICB9DQogDQpJbmRleDog
V2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luU2tpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
UGx1Z2luL3NyYy9QbHVnaW5Ta2luLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1Bs
dWdpbi9zcmMvUGx1Z2luU2tpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02OSw2ICs2OSw5IEBA
DQogI2luY2x1ZGUgIldlYktpdFZpZXcuaCINCiAjaW5jbHVkZSAiV2ViS2l0Q29udHJvbC5oIg0K
ICNpbmNsdWRlICJXZWJDb3JlR3JhcGhpY3NDb250ZXh0LmgiDQorI2lmZGVmICBSRF9CUk9XU0VS
X1dJREdFVFMNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQogDQogLy8gQ09OU1RBTlRTDQogLy8gc2NoZW1lIGZvciBSVFNQIHVybA0K
QEAgLTE1NSw3ICsxNTgsNyBAQCB2b2lkIENQbHVnaW5Ta2luOjpDb25zdHJ1Y3RMKCBjb25zdCBU
RGVzDQogI2VuZGlmDQogICAgIHJlcC0+R2V0KCBLQnJvd3NlclVzQnVpbGQsIHZhbHVlICk7DQog
ICAgIGRlbGV0ZSByZXA7DQotICAgIA0KKw0KICAgICBpZiAoICF2YWx1ZSB8fCBhQ2FuUGx1Z2lu
SW50ZXJhY3QgKQ0KICAgICAgICAgew0KICAgICAgICAgaUNhblBsdWdpbkludGVyYWN0ID0gRVRy
dWU7DQpAQCAtMjA0LDcgKzIwNywxMiBAQCB2b2lkIENQbHVnaW5Ta2luOjpDb25zdHJ1Y3RMKCBj
b25zdCBURGVzDQogICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7ICAv
LyB1cmxTY2hlbWUNCiAgICAgICAgICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdF
VFMNCisgICAgICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0RnJhbWUtPldl
YktpdFZpZXcoKS5XZWJLaXRDb250cm9sKCkuV2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgICAgICBp
ZiAoIGJSdHNwRm91bmQgfHwgKHdkZ3RFeHQgJiYgYVVybC5MZW5ndGgoKSA9PSAwKSkNCisjZWxz
ZQ0KICAgICAgICAgaWYgKCBiUnRzcEZvdW5kICkNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdF
VFMNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgLy8gSWYgcnRzcCBzY2hlbWUgaW4gdXJs
LCBwYXNzIHRvIHBsdWdpbiBkaXJlY3RseSwNCiAgICAgICAgICAgICAvLyBhZnRlciB0aGUgYXR0
cmlidXRlIGFycmF5cyBpbml0aWFsaXplZA0KQEAgLTU1NSw3ICs1NjMsNyBAQCB2b2lkIENQbHVn
aW5Ta2luOjpDcmVhdGVQbHVnaW5XaW5MKCBjb25zDQogICAgIHsNCiAgICAgLy8gVGhlIGFMb2Fk
TW9kZSBpcyBub3QgY3VycmVudGx5IHVzZWQuICBJdCB3b3VsZCBiZSB1c2VkIGZvciBjaGVja2lu
ZyB0aGUNCiAgICAgLy8gbG9hZCBtb2RlIGFuZCBkZXRlcm1pbmluZyBpZiB0aGUgcGx1Z2luIHNo
b3VsZCBiZSBkZWxldGVkIGFuZCByZWNyZWF0ZWQuDQotICAgIA0KKw0KICAgICAvLyBDcmVhdGUg
dGhlIFBsdWdpbldpbiwgaWYgaXQgZG9lc24ndCBleGlzdCwNCiAgICAgaWYgKCAhaVBsdWdpbldp
biApDQogICAgICAgICB7DQpAQCAtNTYzLDcgKzU3MSw3IEBAIHZvaWQgQ1BsdWdpblNraW46OkNy
ZWF0ZVBsdWdpbldpbkwoIGNvbnMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqaUF0dHJpYnV0ZU5hbWVzLCAqaUF0dHJpYnV0ZVZhbHVlcywNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqdGhpcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpV2ViS2l0RnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRDb250cm9sKCkpICk7DQot
ICAgICAgICANCisNCiAgICAgICAgIGlmICggZXJyICE9IEtFcnJOb25lICkNCiAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgaWYgKCBlcnIgPT0gS0Vyck5vdFN1cHBvcnRlZCApDQpAQCAtNTc1
LDcgKzU4Myw3IEBAIHZvaWQgQ1BsdWdpblNraW46OkNyZWF0ZVBsdWdpbldpbkwoIGNvbnMNCiAg
ICAgICAgICAgICAgICAgVXNlcjo6TGVhdmUoIGVyciApOw0KICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIA0KKw0KICAgICAgICAgaWYgKCAhaUlzU291bmRz
dGFydCApDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIC8vIFJlZnJlc2gNCkBAIC02MTgs
NyArNjI2LDcgQEAgdm9pZCBDUGx1Z2luU2tpbjo6U2VsZWN0Vmlld2VyQW5kRG93bmxvYQ0KICAg
ICBDQXJyYXlGaXhGbGF0PFRCckN0bFNlbGVjdE9wdGlvbkRhdGE+KiBvYmpMaXN0ID0gbmV3IChF
TGVhdmUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
QXJyYXlGaXhGbGF0PFRCckN0bFNlbGVjdE9wdGlvbkRhdGE+KDIpOw0KICAgICBDbGVhbnVwU3Rh
Y2s6OlB1c2hMKG9iakxpc3QpOw0KLSAgICANCisNCiAgICAgLy8gQWRkIG9iamVjdCBsaXN0IGVu
dHJ5DQogICAgIGZvciAoaW50IGk9MDsgaTwyOyBpKyspDQogICAgICAgICB7DQpAQCAtNjUwLDEw
ICs2NTgsMTAgQEAgdm9pZCBDUGx1Z2luU2tpbjo6U2VsZWN0Vmlld2VyQW5kRG93bmxvYQ0KICAg
ICBvYmpMaXN0LT5SZXNldCgpOw0KICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koIDQg
KTsvLyBvYmpMaXN0LCB0ZXh0LCB0ZXh0LCB0aXRsZQ0KICAgICB9DQotICAgIA0KKw0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ1BsdWdpblNraW46OklzRm9jdXNhYmxlDQotLy8gDQor
Ly8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJvb2wgQ1BsdWdpblNraW46Oklz
Rm9jdXNhYmxlKCkgY29uc3QNCkBAIC02NjMsNCArNjcxLDExIEBAIFRCb29sIENQbHVnaW5Ta2lu
OjpJc0ZvY3VzYWJsZSgpIGNvbnN0DQogICAgIGVsc2UNCiAgICAgICAgIHJldHVybiBFRmFsc2U7
DQogICAgIH0NCisNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK3ZvaWQqIENQbHVnaW5T
a2luOjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCkNCisgICAgew0KKyAgICByZXR1cm4gaVBsdWdp
bldpbj9pUGx1Z2luV2luLT5QbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCk6MDsNCisgICAgfQ0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0KSW5kZXg6IFdlYktpdC9QbHVnaW4vc3JjL1Bs
dWdpbldpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5XaW4u
Y3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5XaW4uY3Bw
CSh3b3JraW5nIGNvcHkpDQpAQCAtNTMsNiArNTMsNyBAQA0KICNpbmNsdWRlICJQbHVnaW5Ta2lu
LmgiDQogI2luY2x1ZGUgIlBsdWdpbkhhbmRsZXIuaCINCiAjaW5jbHVkZSAiV2ViS2l0Q29udHJv
bC5oIg0KKyNpbmNsdWRlICJXZWJLaXRCcmlkZ2UuaCINCiANCiAvLyBDT05TVEFOVFMNCiBjb25z
dCBUSW50IEtQbHVnaW5HcmFudWxhcml0eSA9IDM7DQpAQCAtMTE5OSw2ICsxMjAwLDMxIEBAIHZv
aWQgQ1BsdWdpbldpbjo6SGFuZGxlTG9zaW5nRm9yZWdyb3VuZCgNCiAgICAgICAgIH0gICAgICAg
ICAgICAgICAgIA0KICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgDQorTlBPYmplY3QqIENQbHVnaW5XaW46OldpbmRvd1Nj
cmlwdE5QT2JqZWN0KCkNCisgICAgew0KKyAgICByZXR1cm4gaVBsdWdpblNraW4tPkZyYW1lKCkt
PldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5XaW5kb3dTY3JpcHROUE9iamVjdCgpOw0K
KyAgICB9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDUGx1Z2luV2luOjpQ
bHVnaW5TY3JpcHRhYmxlT2JqZWN0IA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gIA0K
K3ZvaWQqIENQbHVnaW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QoKQ0KKyAgICB7DQorICAg
IGlmIChpUGx1Z2luRnVuY3MtPmdldHZhbHVlKSB7DQorICAgICAgICB2b2lkICp2YWx1ZSA9IDA7
DQorICAgICAgICBOUEVycm9yIG5wRXJyID0gaVBsdWdpbkZ1bmNzLT5nZXR2YWx1ZSggaUluc3Rh
bmNlLCBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAodm9pZCAqKSZ2YWx1ZSk7DQorICAg
ICAgICBpZiAobnBFcnIgPT0gTlBFUlJfTk9fRVJST1IpIHsNCisgICAgICAgICAgICByZXR1cm4g
dmFsdWU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuICh2b2lkICopMDsgICAgDQor
ICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vIENQbHVnaW5XaW46OklzQ29udGVudEludGVyYWN0aXZlKCkNCkluZGV4OiBX
ZWJLaXQvZ3JvdXAvQnJvd3NlclZpZXcubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2dyb3Vw
L0Jyb3dzZXJWaWV3Lm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L2dyb3VwL0Jyb3dz
ZXJWaWV3Lm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTc3LDYgKzc3LDEyIEBAIFNPVVJDRSAgICAg
ICAgICBQbHVnaW5Db250ZW50UGxheWVyLmNwcA0KIFNPVVJDRSAgICAgICAgICBTbWFydExpbmtI
YW5kbGVyLmNwcA0KIFNPVVJDRSAgICAgICAgICBTbWFydExpbmtNYXAuY3BwDQogI2VuZGlmDQor
I2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitTT1VSQ0UgICAgICAgICAgV2lkZ2V0RXh0ZW5z
aW9uLmNwcA0KK1NPVVJDRSAgICAgICAgICBXaWRnZXRQcmVmZXJlbmNlcy5jcHANCitTT1VSQ0Ug
ICAgICAgICAgV2lkZ2V0UmVuZGVyZXIuY3BwDQorU1lTVEVNSU5DTFVERSAgICAgICAgLi5cLi5c
Li5cV2lkZ2V0RW5naW5lXGluYw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIFVTRVJJ
TkNMVURFICAgICAuLlxSZXNvdXJjZUxvYWRlclxJbmMNCiBVU0VSSU5DTFVERSAgICAgLi5cUmVz
b3VyY2VMb2FkZXJcY2FjaGVJbmMNCiBVU0VSSU5DTFVERSAgICAgLi5cQnJvd3NlclZpZXdcSW5j
DQpJbmRleDogV2ViS2l0L2dyb3VwL1BsdWdpbi5tbXANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Z3JvdXAvUGx1Z2luLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L2dyb3VwL1BsdWdp
bi5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC02MCw2ICs2MCw5IEBAIFVTRVJJTkNMVURFICAgICAu
LlxCcm93c2VyQ29yZVxSZW5kZXJlcnMNCiBVU0VSSU5DTFVERSAgICAgLi5cUmVzb3VyY2VMb2Fk
ZXJcSW5jDQogI2lmbmRlZiBfX0JST1dTRVJfU0RLDQogVVNFUklOQ0xVREUgICAgIC4uXC4uXC4u
XFBhZ2VTY2FsZXJcSW5jDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitVU0VSSU5DTFVE
RSAgICAgXFM2MFxtd1x3ZWJcV2ViRW5naW5lXFdpZGdldEVuZ2luZVxJbmMNCisjZW5kaWYgLy9S
RF9CUk9XU0VSX1dJREdFVFMNCiAjZW5kaWYNCiBVU0VSSU5DTFVERSAgICAgLi5cLi5cV0VCQ09S
RVxicmlkZ2UNCiANCkluZGV4OiBXZWJLaXQvZ3JvdXAvd2Via2l0Lm1tcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9ncm91cC93ZWJraXQubW1wCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQv
Z3JvdXAvd2Via2l0Lm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTExNSw2ICsxMTUsOSBAQCBVU0VS
SU5DTFVERSAgIC4uXC4uXC4uXFRvb2xCYXJcaW5jDQogU1lTVEVNSU5DTFVERSBcRXBvYzMyXGlu
Y2x1ZGUgXEVwb2MzMlxpbmNsdWRlXG9lbQ0KICNlbmRpZg0KIA0KKyNpZmRlZiAgUkRfQlJPV1NF
Ul9XSURHRVRTDQorVVNFUklOQ0xVREUgICAuLlwuLlwuLlxXaWRnZXRFbmdpbmVcaW5jDQorI2Vu
ZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogLy8tLQ0KIA0KIFNZU1RFTUlOQ0xVREUgXEVwb2Mz
MlxpbmNsdWRlXGh0dHANCkluZGV4OiBXZWJLaXQvcm9tL3dlYmtpdC5pYnkNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvcm9tL3dlYmtpdC5pYnkJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9y
b20vd2Via2l0LmlieQkod29ya2luZyBjb3B5KQ0KQEAgLTU4LDYgKzU4LDkgQEAgZmlsZT1BQklf
RElSXEJVSUxEX0RJUlxXbWxFbmdpbmUuZGxsICAgIA0KIGZpbGU9QUJJX0RJUlxCVUlMRF9ESVJc
QnJvd3NlckNhY2hlLmRsbCAgICAgICAgICAgICAgICAgU0hBUkVEX0xJQl9ESVJcQnJvd3NlckNh
Y2hlLmRsbA0KIGZpbGU9QUJJX0RJUlxCVUlMRF9ESVJcSGlzdG9yeVByb3ZpZGVyLmRsbCAgICAg
ICAgICAgICAgU0hBUkVEX0xJQl9ESVJcSGlzdG9yeVByb3ZpZGVyLmRsbA0KIGZpbGU9QUJJX0RJ
UlxCVUlMRF9ESVJcVG9vbEJhci5kbGwgICAgICAgICAgICAgICAgICAgICAgU0hBUkVEX0xJQl9E
SVJcVG9vbEJhci5kbGwNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KK2ZpbGU9QUJJX0RJ
UlxCVUlMRF9ESVJcV2lkZ2V0RW5naW5lLmRsbCAgICAgICAgICAgICAgICAgICAgICBTSEFSRURf
TElCX0RJUlxXaWRnZXRFbmdpbmUuZGxsDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
DQogRUNPTV9QTFVHSU4oQnJvd3NlclJlYy5kbGwsIDAxMDA1QTAyLnJzYykNCiBFQ09NX1BMVUdJ
TihNZW1vcnlQbHVnaW4uZGxsLCBtZW1vcnlwbHVnaW4uUlNDKQ0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11218</attachid>
            <date>2006-10-25 17:59:27 -0700</date>
            <delta_ts>2006-10-26 06:29:37 -0700</delta_ts>
            <desc>Fix build break in SDK</desc>
            <filename>Widget.patch</filename>
            <type>text/plain</type>
            <size>554835</size>
            <attacher name="Sriram">sriram.yadavalli</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQ0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2FsZ29yaXRobQkocmV2aXNpb24gMCkNCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9hbGdvcml0aG0JKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDE4
MSBAQA0KKy8vIEJpdHMgYW5kIHBpZWNlcyB1c2VkIGluIGFsZ29yaXRobXMgLSotIEMrKyAtKi0N
CisNCisvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorLy8NCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlDQorLy8gc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlDQor
Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUNCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikNCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisvLyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZg0KKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUNCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLg0KKw0KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KKy8v
IFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LA0KKy8vIFVTQS4NCisNCisvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUNCisvLyBs
aWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVz
IGluc3RhbnRpYXRlDQorLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0
aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUNCisvLyB0aGlzIGZpbGUgYW5kIGxp
bmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMNCisv
LyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUg
dG8gYmUgY292ZXJlZCBieQ0KKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRo
aXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXINCisvLyBpbnZhbGlkYXRlIGFueSBvdGhlciBy
ZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkNCisvLyB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQorDQorLyoNCisgKg0KKyAqIENvcHlyaWdo
dCAoYykgMTk5NA0KKyAqIEhld2xldHQtUGFja2FyZCBDb21wYW55DQorICoNCisgKiBQZXJtaXNz
aW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdh
cmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBn
cmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICogdGhhdCBib3RoIHRoYXQgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXINCisgKiBpbiBz
dXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBtYWtlcyBu
bw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0
d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91
dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICoNCisgKg0KKyAqIENvcHlyaWdodCAo
YykgMTk5Ni0xOTk4DQorICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMu
DQorICoNCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFu
ZCBzZWxsIHRoaXMgc29mdHdhcmUNCisgKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBw
dXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLA0KKyAqIHByb3ZpZGVkIHRoYXQg
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kDQorICog
dGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBhcHBlYXINCisgKiBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBo
aWNzIG1ha2VzIG5vDQorICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBv
ZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFz
IGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4NCisgKi8NCisNCisjaWZu
ZGVmIF9fQUxHT1JJVEhNDQorI2RlZmluZSBfX0FMR09SSVRITQ0KKw0KKyNkZWZpbmUgX19nbGli
Y3h4X2Z1bmN0aW9uX3JlcXVpcmVzKF9fQSkNCisjZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc192
YWxpZF9yYW5nZShfX0EsIF9fQikNCisNCituYW1lc3BhY2Ugc3RkDQorew0KKw0KKyAgdHlwZWRl
ZiBpbnQgcHRyZGlmZl90Ow0KKw0KKyAgI3VuZGVmIG1pbg0KKyAgI3VuZGVmIG1heA0KKw0KKyAg
LyoqDQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAg
ICogIEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0g
IGIgIEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRo
ZSBsZXNzZXIgb2YgdGhlIHBhcmFtZXRlcnMuDQorICAgKg0KKyAgICogIFRoaXMgaXMgdGhlIHNp
bXBsZSBjbGFzc2ljIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICBJdCB3aWxsIHdvcmsgb24NCisg
ICAqICB0ZW1wb3JhcnkgZXhwcmVzc2lvbnMsIHNpbmNlIHRoZXkgYXJlIG9ubHkgZXZhbHVhdGVk
IG9uY2UsIHVubGlrZSBhDQorICAgKiAgcHJlcHJvY2Vzc29yIG1hY3JvLg0KKyAgKi8NCisgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4NCisgICAgaW5saW5lIGNvbnN0IF9UcCYNCisgICAgbWluKGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikNCisgICAgew0KKyAgICAgIGlmIChfX2IgPCBf
X2EpDQorCXJldHVybiBfX2I7DQorICAgICAgcmV0dXJuIF9fYTsNCisgICAgfQ0KKw0KKyAgLyoq
DQorICAgKiAgQGJyaWVmIFRoaXMgZG9lcyB3aGF0IHlvdSB0aGluayBpdCBkb2VzLg0KKyAgICog
IEBwYXJhbSAgYSAgQSB0aGluZyBvZiBhcmJpdHJhcnkgdHlwZS4NCisgICAqICBAcGFyYW0gIGIg
IEFub3RoZXIgdGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHJldHVybiAgIFRoZSBn
cmVhdGVyIG9mIHRoZSBwYXJhbWV0ZXJzLg0KKyAgICoNCisgICAqICBUaGlzIGlzIHRoZSBzaW1w
bGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAgSXQgd2lsbCB3b3JrIG9uDQorICAg
KiAgdGVtcG9yYXJ5IGV4cHJlc3Npb25zLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGV2YWx1YXRlZCBv
bmNlLCB1bmxpa2UgYQ0KKyAgICogIHByZXByb2Nlc3NvciBtYWNyby4NCisgICovDQorICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+DQorICAgIGlubGluZSBjb25zdCBfVHAmDQorICAgIG1heChjb25z
dCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpDQorICAgIHsNCisgICAgICBpZiAoX19hIDwgX19i
KQ0KKwlyZXR1cm4gX19iOw0KKyAgICAgIHJldHVybiBfX2E7DQorICAgIH0NCisgICAgDQorICAv
KioNCisgICAqICBAYnJpZWYgU3dhcHMgdHdvIHZhbHVlcy4NCisgICAqICBAcGFyYW0gIGEgIEEg
dGhpbmcgb2YgYXJiaXRyYXJ5IHR5cGUuDQorICAgKiAgQHBhcmFtICBiICBBbm90aGVyIHRoaW5n
IG9mIGFyYml0cmFyeSB0eXBlLg0KKyAgICogIEByZXR1cm4gICBOb3RoaW5nLg0KKyAgICoNCisg
ICAqICBUaGlzIGlzIHRoZSBzaW1wbGUgY2xhc3NpYyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAg
SXQgd2lsbCB3b3JrIG9uDQorICAgKiAgYW55IHR5cGUgd2hpY2ggaGFzIGEgY29weSBjb25zdHJ1
Y3RvciBhbmQgYW4gYXNzaWdubWVudCBvcGVyYXRvci4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+DQorICAgIGlubGluZSB2b2lkDQorICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19i
KQ0KKyAgICB7DQorICAgICAgY29uc3QgX1RwIF9fdG1wID0gX19hOw0KKyAgICAgIF9fYSA9IF9f
YjsNCisgICAgICBfX2IgPSBfX3RtcDsNCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBs
aWVkIHZlcnNpb24gb2YgbGlic3RkYysrICogc3RkOjpjb3B5LA0KKyAgICogc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIG91ciBwdXJwb3NlLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+DQorICAgIGlubGluZSBfT3V0
cHV0SXRlcmF0b3INCisgICAgY29weSggX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQgKQ0KKyAgICB7DQorICAgICAg
ICBmb3IoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0ICkNCisgICAg
ICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAgICAgIHJldHVybiBfX3Jlc3VsdDsN
CisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiBhIHNpbXBsaWVkIHZlcnNpb24gb2YgbGlic3RkYysr
ICogc3RkOjpmaWxsLA0KKyAgICogc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nl
Lg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVl
Pg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBmaWxsKCBfSXRlcmF0b3IgX19zdGFydCwgX0l0ZXJh
dG9yIF9fZW5kLCBfVmFsdWUgX192YWwgKQ0KKyAgICB7DQorICAgICAgICBmb3IoOyBfX3N0YXJ0
ICE9IF9fZW5kOyArK19fc3RhcnQgKQ0KKyAgICAgICAgICAgICpfX3N0YXJ0ID0gX192YWw7DQor
ICAgIH0NCisgICAgDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCB0eXBlbmFtZSBDb21wYXJl
Pg0KKyAgICAgIGlubGluZSB2b2lkIHNvcnQoVHlwZSogYmVnaW4sIFR5cGUqIGVuZCwgQ29tcGFy
ZSBjb21wYXJlKQ0KKyAgICB7DQorICAgIHN0YWJsZV9zb3J0KGJlZ2luLGVuZCxjb21wYXJlKTsN
CisgICAgfQ0KKyAgICANCisgIC8vIEZJWE1FIGJ1YmJsZXNvcnQNCisgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGUsIHR5cGVuYW1lIENvbXBhcmU+DQorICAgIGlubGluZSB2b2lkIHN0YWJsZV9zb3J0
KFR5cGUqIGJlZ2luLCBUeXBlKiBlbmQsIENvbXBhcmUgY29tcGFyZSkNCisgICAgew0KKyAgICAg
ICAgVHlwZSogZSA9IGVuZDsNCisgICAgICAgIHdoaWxlIChlIT1iZWdpbikgew0KKyAgICAgICAg
ICAgIGJvb2wgc29ydGVkID0gdHJ1ZTsNCisgICAgICAgICAgICBmb3IgKFR5cGUqIGkgPSBiZWdp
bjsgaSE9ZTsgaSsrKSB7DQorICAgICAgICAgICAgICAgIGlmICghY29tcGFyZSgqaSwqKGkrMSkp
KSB7DQorICAgICAgICAgICAgICAgICAgICBUeXBlIHRlbXAgPSAqaTsNCisgICAgICAgICAgICAg
ICAgICAgICppID0gKihpKzEpOw0KKyAgICAgICAgICAgICAgICAgICAgKihpKzEpPXRlbXA7DQor
ICAgICAgICAgICAgICAgICAgICBzb3J0ZWQgPSBmYWxzZTsNCisgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgIH0NCisgICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoc29ydGVkKQ0K
KyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBlLS07DQorICAgICAgICB9DQor
ICAgIH0NCit9DQorDQorI2VuZGlmDQorDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
Yy9jX2NsYXNzLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2Mv
Y19jbGFzcy5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY19jbGFzcy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xLDUgKzEsNSBAQA0KIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIw
LDExNCArMjAsOTUgQEANCiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0jaW5jbHVkZSA8Y19jbGFzcy5o
PgotI2luY2x1ZGUgPGNfaW5zdGFuY2UuaD4KLSNpbmNsdWRlIDxjX3J1bnRpbWUuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiY19jbGFzcy5oIgogCi1ib29sIE5QTl9Jc1ZhbGlkSWRlbnRpZmllciAoY29uc3QgTlBVVEY4
ICpuYW1lKTsKKyNpbmNsdWRlICJjX2luc3RhbmNlLmgiCisjaW5jbHVkZSAiY19ydW50aW1lLmgi
CisjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKKyNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAK
LXZvaWQgQ0NsYXNzOjpfY29tbW9uRGVsZXRlKCkgewotICAgIENGUmVsZWFzZSAoX2ZpZWxkcyk7
Ci0gICAgQ0ZSZWxlYXNlIChfbWV0aG9kcyk7Ci19Ci0gICAgCisvLyBGSVhNRTogU2hvdWxkIHVz
ZSBIYXNoTWFwIGluc3RlYWQgb2YgQ0ZEaWN0aW9uYXJ5IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2Ug
YW5kIGZvciBwb3J0YWJpbGl0eS4KIAotdm9pZCBDQ2xhc3M6Ol9jb21tb25Db3B5KGNvbnN0IEND
bGFzcyAmb3RoZXIpIHsKLSAgICBfaXNhID0gb3RoZXIuX2lzYTsKLSAgICBfbWV0aG9kcyA9IENG
RGljdGlvbmFyeUNyZWF0ZUNvcHkgKE5VTEwsIG90aGVyLl9tZXRob2RzKTsKLSAgICBfZmllbGRz
ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weSAoTlVMTCwgb3RoZXIuX2ZpZWxkcyk7Ci19Ci0gICAg
CituYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBCaW5kaW5ncyB7CiAKLXZvaWQgQ0NsYXNzOjpf
Y29tbW9uSW5pdCAoTlBDbGFzcyAqYUNsYXNzKQorQ0NsYXNzOjpDQ2xhc3MoTlBDbGFzcyogYUNs
YXNzKQogewogICAgIF9pc2EgPSBhQ2xhc3M7Ci0gICAgX21ldGhvZHMgPSBDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKE5VTEwsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgTlVM
TCk7Ci0gICAgX2ZpZWxkcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKTsKIH0KIAotCi1zdGF0aWMgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBjbGFzc2VzQnlJc0EgPSAwOwotCi1zdGF0aWMgdm9pZCBfY3JlYXRl
Q2xhc3Nlc0J5SXNBSWZOZWNlc3NhcnkoKQorQ0NsYXNzOjp+Q0NsYXNzKCkKIHsKLSAgICBpZiAo
Y2xhc3Nlc0J5SXNBID09IDApCi0gICAgICAgIGNsYXNzZXNCeUlzQSA9IENGRGljdGlvbmFyeUNy
ZWF0ZU11dGFibGUgKE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhf
bWV0aG9kcyk7CisgICAgZGVsZXRlQWxsVmFsdWVzKF9maWVsZHMpOwogfQogCi1DQ2xhc3MgKkND
bGFzczo6Y2xhc3NGb3JJc0EgKE5QQ2xhc3MgKmlzYSkKK3R5cGVkZWYgSGFzaE1hcDxOUENsYXNz
KiwgQ0NsYXNzKj4gQ2xhc3Nlc0J5SXNBTWFwOworc3RhdGljIENsYXNzZXNCeUlzQU1hcCogY2xh
c3Nlc0J5SXNBID0gMDsKKworQ0NsYXNzKiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5QQ2xhc3MqIGlz
YSkKIHsKLSAgICBfY3JlYXRlQ2xhc3Nlc0J5SXNBSWZOZWNlc3NhcnkoKTsKLSAgICAKLSAgICBD
Q2xhc3MgKmFDbGFzcyA9IChDQ2xhc3MgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjbGFzc2VzQnlJ
c0EsIGlzYSk7Ci0gICAgaWYgKGFDbGFzcyA9PSBOVUxMKSB7Ci0gICAgICAgIGFDbGFzcyA9IG5l
dyBDQ2xhc3MgKGlzYSk7Ci0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlIChjbGFzc2VzQnlJ
c0EsIGlzYSwgYUNsYXNzKTsKKyAgICBpZiAoIWNsYXNzZXNCeUlzQSkKKyAgICAgICAgY2xhc3Nl
c0J5SXNBID0gbmV3IENsYXNzZXNCeUlzQU1hcDsKKworICAgIENDbGFzcyogYUNsYXNzID0gY2xh
c3Nlc0J5SXNBLT5nZXQoaXNhKTsKKyAgICBpZiAoIWFDbGFzcykgeworICAgICAgICBhQ2xhc3Mg
PSBuZXcgQ0NsYXNzKGlzYSk7CisgICAgICAgIGNsYXNzZXNCeUlzQS0+c2V0KGlzYSwgYUNsYXNz
KTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gYUNsYXNzOwogfQogCi0KLUNDbGFzczo6Q0Ns
YXNzIChOUENsYXNzICppc2EpCitjb25zdCBjaGFyKiBDQ2xhc3M6Om5hbWUoKSBjb25zdAogewot
ICAgIF9jb21tb25Jbml0IChpc2EpOwotfQotCi1jb25zdCBjaGFyICpDQ2xhc3M6Om5hbWUoKSBj
b25zdAotewogICAgIHJldHVybiAiIjsKIH0KIAotTWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNO
YW1lZChjb25zdCBjaGFyICpfbmFtZSwgSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdAorTWV0aG9k
TGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBjaGFyKiBpZGVudGlmaWVyLCBJbnN0YW5j
ZSogaW5zdGFuY2UpIGNvbnN0CiB7CisgICAgVVN0cmluZyBhKCBpZGVudGlmaWVyICk7CiAgICAg
TWV0aG9kTGlzdCBtZXRob2RMaXN0OwogCi0gICAgQ0ZTdHJpbmdSZWYgbWV0aG9kTmFtZSA9IENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgX25hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVND
SUkpOwotICAgIE1ldGhvZCAqbWV0aG9kID0gKE1ldGhvZCAqKUNGRGljdGlvbmFyeUdldFZhbHVl
IChfbWV0aG9kcywgbWV0aG9kTmFtZSk7CisgICAgTWV0aG9kKiBtZXRob2QgPSBfbWV0aG9kcy5n
ZXQoYS5hcmVwKCkpOwogICAgIGlmIChtZXRob2QpIHsKLSAgICAgICAgQ0ZSZWxlYXNlIChtZXRo
b2ROYW1lKTsKICAgICAgICAgbWV0aG9kTGlzdC5hZGRNZXRob2QobWV0aG9kKTsKICAgICAgICAg
cmV0dXJuIG1ldGhvZExpc3Q7CiAgICAgfQotICAgIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9
IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAoX25hbWUpOwotICAgIGNvbnN0IENJbnN0YW5jZSAq
aW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKLSAgICBOUE9i
amVjdCAqb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7Ci0gICAgaWYgKF9pc2EtPmhhc01ldGhvZCAm
JiBfaXNhLT5oYXNNZXRob2QgKG9iaiwgaWRlbnQpKXsKLSAgICAgICAgTWV0aG9kICphTWV0aG9k
ID0gbmV3IENNZXRob2QgKGlkZW50KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUgKChD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmKV9tZXRob2RzLCBtZXRob2ROYW1lLCBhTWV0aG9kKTsKLSAg
ICAgICAgbWV0aG9kTGlzdC5hZGRNZXRob2QgKGFNZXRob2QpOworCisgICAgTlBJZGVudGlmaWVy
IGlkZW50ID0gTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoYS5hc2NpaSgpKTsKKyAgICBjb25zdCBD
SW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7
CisgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOworICAgIGlmIChfaXNhLT5o
YXNNZXRob2QgJiYgX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKXsKKyAgICAgICAgTWV0aG9k
KiBhTWV0aG9kID0gbmV3IENNZXRob2QoaWRlbnQpOyAvLyBkZWxldGVkIGluIHRoZSBDQ2xhc3Mg
ZGVzdHJ1Y3RvcgorICAgICAgICBfbWV0aG9kcy5zZXQoYS5hcmVwKCksIGFNZXRob2QpOworICAg
ICAgICBtZXRob2RMaXN0LmFkZE1ldGhvZChhTWV0aG9kKTsKICAgICB9CiAKLSAgICBDRlJlbGVh
c2UgKG1ldGhvZE5hbWUpOwotICAgIAogICAgIHJldHVybiBtZXRob2RMaXN0OwogfQogCiAKLUZp
ZWxkICpDQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgY2hhciAqbmFtZSwgSW5zdGFuY2UgKmluc3Rh
bmNlKSBjb25zdAorRmllbGQqIENDbGFzczo6ZmllbGROYW1lZChjb25zdCBjaGFyKiBpZGVudGlm
aWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7Ci0gICAgQ0ZTdHJpbmdSZWYgZmllbGRO
YW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBuYW1lLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0FTQ0lJKTsKLSAgICBGaWVsZCAqYUZpZWxkID0gKEZpZWxkICopQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUgKF9maWVsZHMsIGZpZWxkTmFtZSk7Ci0gICAgaWYgKGFGaWVsZCkgewotICAgICAgICBD
RlJlbGVhc2UgKGZpZWxkTmFtZSk7CisgICAgVVN0cmluZyBhKCBpZGVudGlmaWVyICk7CisgICAg
RmllbGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KGEuYXJlcCgpKTsKKyAgICBpZiAoYUZpZWxkKQog
ICAgICAgICByZXR1cm4gYUZpZWxkOwotICAgIH0KIAotICAgIE5QSWRlbnRpZmllciBpZGVudCA9
IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllciAobmFtZSk7Ci0gICAgY29uc3QgQ0luc3RhbmNlICpp
bnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwotICAgIE5QT2Jq
ZWN0ICpvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKLSAgICBpZiAoX2lzYS0+aGFzUHJvcGVydHkg
JiYgX2lzYS0+aGFzUHJvcGVydHkgKG9iaiwgaWRlbnQpKXsKLSAgICAgICAgYUZpZWxkID0gbmV3
IENGaWVsZCAoaWRlbnQpOwotICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoKENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYpX2ZpZWxkcywgZmllbGROYW1lLCBhRmllbGQpOworICAgIE5QSWRlbnRp
ZmllciBpZGVudCA9IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGEuYXNjaWkoKSk7CisgICAgY29u
c3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFu
Y2UpOworICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKKyAgICBpZiAoX2lz
YS0+aGFzUHJvcGVydHkgJiYgX2lzYS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkpeworICAgICAg
ICBhRmllbGQgPSBuZXcgQ0ZpZWxkKGlkZW50KTsgLy8gZGVsZXRlZCBpbiB0aGUgQ0NsYXNzIGRl
c3RydWN0b3IKKyAgICAgICAgX2ZpZWxkcy5zZXQoYS5hcmVwKCksIGFGaWVsZCk7CiAgICAgfQot
ICAgIAotICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKLQogICAgIHJldHVybiBhRmllbGQ7Ci19
OworfQorCit9Cit9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19jbGFzcy5oCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfY2xhc3MuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTIwLDEyICsyMCwxMyBAQA0KICAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICNp
Zm5kZWYgX0JJTkRJTkdTX09CSkNfQ0xBU1NfSF8KICNkZWZpbmUgX0JJTkRJTkdTX09CSkNfQ0xB
U1NfSF8KIAotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5j
bHVkZSAiZmFzdF9tYWxsb2MuaCIKKyNpbmNsdWRlIDxIYXNoTWFwLmg+CiAKIAogI2luY2x1ZGUg
PHJ1bnRpbWUuaD4KQEAgLTM5LDU0ICs0MCwyOCBAQA0KIGNsYXNzIENDbGFzcyA6IHB1YmxpYyBL
SlM6OkJpbmRpbmdzOjpDbGFzcwogewogICAgIC8vIFVzZSB0aGUgcHVibGljIHN0YXRpYyBmYWN0
b3J5IG1ldGhvZHMgdG8gZ2V0IGluc3RhbmNlcyBvZiBKYXZhQ2xhc3MuCi0gICAgCisKIHByb3Rl
Y3RlZDoKLSAgICB2b2lkIF9jb21tb25Jbml0IChOUENsYXNzICphQ2xhc3MpOwotICAgIHZvaWQg
X2NvbW1vbkNvcHkoY29uc3QgQ0NsYXNzICZvdGhlcik7Ci0gICAgdm9pZCBfY29tbW9uRGVsZXRl
KCk7Ci0gICAgICAgIAorICAgIENDbGFzcyhOUENsYXNzKik7IC8vIFVzZSBjbGFzc0ZvcklzQSB0
byBjcmVhdGUgYSBDQ2xhc3MuCisKIHB1YmxpYzoKLSAgICBDQ2xhc3MgKE5QQ2xhc3MgKmFDbGFz
cyk7CisgICAgc3RhdGljIENDbGFzcyogY2xhc3NGb3JJc0EoTlBDbGFzcyopOworICAgIHZpcnR1
YWwgfkNDbGFzcygpOwogCi0gICAgLy8gUmV0dXJuIHRoZSBjYWNoZWQgT2JqQyBvZiB0aGUgc3Bl
Y2lmaWVkIG5hbWUuCi0gICAgLy9zdGF0aWMgQ0NsYXNzICpjbGFzc0Zvck5hbWUgKGNvbnN0IGNo
YXIgKm5hbWUpOwotICAgIHN0YXRpYyBDQ2xhc3MgKmNsYXNzRm9ySXNBIChOUENsYXNzICphQ2xh
c3MpOwotICAgICAgICAgICAgCi0gICAgfkNDbGFzcyAoKSB7Ci0gICAgICAgIF9jb21tb25EZWxl
dGUoKTsKLSAgICB9Ci0gICAgCi0gICAgQ0NsYXNzIChjb25zdCBDQ2xhc3MgJm90aGVyKSA6IENs
YXNzKCkgewotICAgICAgICBfY29tbW9uQ29weSAob3RoZXIpOwotICAgIH07CisgICAgdmlydHVh
bCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhv
ZHNOYW1lZChjb25zdCBjaGFyKiwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZpZWxk
KiBmaWVsZE5hbWVkKGNvbnN0IGNoYXIgKiwgSW5zdGFuY2UqKSBjb25zdDsKIAotICAgIENDbGFz
cyAmb3BlcmF0b3I9KGNvbnN0IENDbGFzcyAmb3RoZXIpCi0gICAgewotICAgICAgICBpZiAodGhp
cyA9PSAmb3RoZXIpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgX2NvbW1vbkRlbGV0ZSgpOwotICAgICAgICBfY29tbW9uQ29weSAob3RoZXIpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICB2aXJ0dWFsIENvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvckF0KGxvbmcpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IGxvbmcgbnVtQ29uc3RydWN0b3JzKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVh
bCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBNZXRob2RMaXN0
IG1ldGhvZHNOYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0
OwotICAgIAotICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoY29uc3QgY2hhciAqbmFtZSwg
SW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIENvbnN0cnVjdG9y
ICpjb25zdHJ1Y3RvckF0KGxvbmcgaSkgY29uc3QgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9
OwotICAgIAotICAgIHZpcnR1YWwgbG9uZyBudW1Db25zdHJ1Y3RvcnMoKSBjb25zdCB7IHJldHVy
biAwOyB9OwotICAgICAgICAKIHByaXZhdGU6Ci0gICAgTlBDbGFzcyAqX2lzYTsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgX21ldGhvZHM7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIF9maWVsZHM7CisgICAg
Q0NsYXNzKGNvbnN0IENDbGFzcyYpOyAvLyBwcm9oaWJpdCBjb3B5aW5nCisgICAgQ0NsYXNzJiBv
cGVyYXRvcj0oY29uc3QgQ0NsYXNzJik7IC8vIHByb2hpYml0IGFzc2lnbm1lbnQKKworICAgIE5Q
Q2xhc3MqIF9pc2E7CisgICAgbXV0YWJsZSBNZXRob2RNYXAgX21ldGhvZHM7CisgICAgbXV0YWJs
ZSBGaWVsZE1hcCBfZmllbGRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY19pbnN0YW5jZS5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjAsNyArMjAsNyBAQA0KICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICNpbmNsdWRl
IDxjX2NsYXNzLmg+CiAjaW5jbHVkZSA8Y19pbnN0YW5jZS5oPgpAQCAtMzMsMzIgKzMzLDI5IEBA
DQogI2lmZGVmIE5ERUJVRwogI2RlZmluZSBDX0xPRyhmb3JtYXRBbmRBcmdzLi4uKSAoKHZvaWQp
MCkKICNlbHNlCi0jZGVmaW5lIENfTE9HKGZvcm1hdEFuZEFyZ3MuLi4pIHsgXAotICAgIGZwcmlu
dGYgKHN0ZGVyciwgIiVzOiVkIC0tICVzOiAgIiwgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNU
SU9OX18pOyBcCi0gICAgZnByaW50ZihzdGRlcnIsIGZvcm1hdEFuZEFyZ3MpOyBcCi19CisjZGVm
aW5lIENfTE9HKGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQogI2VuZGlmCiAKIHVzaW5nIG5h
bWVzcGFjZSBLSlM6OkJpbmRpbmdzOwogdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAotQ0luc3RhbmNl
OjpDSW5zdGFuY2UgKE5QT2JqZWN0ICpvKSAKK0NJbnN0YW5jZTo6Q0luc3RhbmNlIChOUE9iamVj
dCAqbykKIHsKLSAgICBfb2JqZWN0ID0gX05QTl9SZXRhaW5PYmplY3QgKG8pOworICAgIF9vYmpl
Y3QgPSBOUE5fUmV0YWluT2JqZWN0IChvKTsKICAgICBfY2xhc3MgPSAwOwogICAgIHNldEV4ZWN1
dGlvbkNvbnRleHQgKDApOwogfTsKIAotQ0luc3RhbmNlOjp+Q0luc3RhbmNlICgpIAorQ0luc3Rh
bmNlOjp+Q0luc3RhbmNlICgpCiB7Ci0gICAgX05QTl9SZWxlYXNlT2JqZWN0IChfb2JqZWN0KTsK
KyAgICBOUE5fUmVsZWFzZU9iamVjdCAoX29iamVjdCk7CiAgICAgZGVsZXRlIF9jbGFzczsKIH0K
IAogCi1DSW5zdGFuY2U6OkNJbnN0YW5jZSAoY29uc3QgQ0luc3RhbmNlICZvdGhlcikgOiBJbnN0
YW5jZSgpIAorQ0luc3RhbmNlOjpDSW5zdGFuY2UgKGNvbnN0IENJbnN0YW5jZSAmb3RoZXIpIDog
SW5zdGFuY2UoKQogewotICAgIF9vYmplY3QgPSBfTlBOX1JldGFpbk9iamVjdCAob3RoZXIuX29i
amVjdCk7CisgICAgX29iamVjdCA9IE5QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3QpOwog
ICAgIF9jbGFzcyA9IDA7CiAgICAgc2V0RXhlY3V0aW9uQ29udGV4dCAob3RoZXIuZXhlY3V0aW9u
Q29udGV4dCgpKTsKIH07CkBAIC02NiwxOSArNjMsMTkgQEANCiBDSW5zdGFuY2UgJkNJbnN0YW5j
ZTo6b3BlcmF0b3I9KGNvbnN0IENJbnN0YW5jZSAmb3RoZXIpewogICAgIGlmICh0aGlzID09ICZv
dGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIAorCiAgICAgTlBPYmplY3QgKl9vbGRP
YmplY3QgPSBfb2JqZWN0OwotICAgIF9vYmplY3Q9IF9OUE5fUmV0YWluT2JqZWN0IChvdGhlci5f
b2JqZWN0KTsKLSAgICBfTlBOX1JlbGVhc2VPYmplY3QgKF9vbGRPYmplY3QpOworICAgIF9vYmpl
Y3Q9IE5QTl9SZXRhaW5PYmplY3QgKG90aGVyLl9vYmplY3QpOworICAgIE5QTl9SZWxlYXNlT2Jq
ZWN0IChfb2xkT2JqZWN0KTsKICAgICBfY2xhc3MgPSAwOwotICAgIAorCiAgICAgcmV0dXJuICp0
aGlzOwogfTsKIAogQ2xhc3MgKkNJbnN0YW5jZTo6Z2V0Q2xhc3MoKSBjb25zdAogewotICAgIGlm
ICghX2NsYXNzKSB7Ci0gICAgICAgIF9jbGFzcyA9IG5ldyBDQ2xhc3MgKF9vYmplY3QtPl9jbGFz
cyk7CisgICAgaWYgKCFfY2xhc3MpeworICAgICAgICBfY2xhc3MgPSBDQ2xhc3M6OmNsYXNzRm9y
SXNBKF9vYmplY3QtPl9jbGFzcyk7CiAgICAgfQogICAgIHJldHVybiBfY2xhc3M7CiB9CkBAIC0x
MDUsNyArMTAyLDcgQEANCiAgICAgQ01ldGhvZCAqbWV0aG9kID0gMDsKICAgICBtZXRob2QgPSBz
dGF0aWNfY2FzdDxDTWV0aG9kKj4obWV0aG9kTGlzdC5tZXRob2RBdCgwKSk7CiAKLSAgICBOUElk
ZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIgKG1ldGhvZC0+bmFtZSgp
KTsKKyAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBOUE5fR2V0U3RyaW5nSWRlbnRpZmllciAobWV0
aG9kLT5uYW1lKCkpOwogICAgIGlmICghX29iamVjdC0+X2NsYXNzLT5oYXNNZXRob2QgKF9vYmpl
Y3QsIGlkZW50KSkgewogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMTE3
LDcgKzExNCw3IEBADQogICAgICAgICBjQXJncyA9IChOUFZhcmlhbnQgKiltYWxsb2MgKHNpemVv
ZihOUFZhcmlhbnQpKmNvdW50KTsKICAgICBlbHNlCiAgICAgICAgIGNBcmdzID0gbG9jYWxCdWZm
ZXI7Ci0gICAgCisKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBj
b252ZXJ0VmFsdWVUb05QVmFyaWFudCAoZXhlYywgYXJncy5hdChpKSwgJmNBcmdzW2ldKTsKICAg
ICB9CkBAIC0xMjgsMjAgKzEyNSwyMCBAQA0KICAgICBfb2JqZWN0LT5fY2xhc3MtPmludm9rZSAo
X29iamVjdCwgaWRlbnQsIGNBcmdzLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOwogCiAgICAgZm9y
IChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZh
bHVlICgmY0FyZ3NbaV0pOworICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJmNBcmdz
W2ldKTsKICAgICB9CiAKICAgICBpZiAoY0FyZ3MgIT0gbG9jYWxCdWZmZXIpCiAgICAgICAgIGZy
ZWUgKCh2b2lkICopY0FyZ3MpOwotICAgICAgICAgICAgCisKICAgICBpZiAoIU5QVkFSSUFOVF9J
U19WT0lEKHJlc3VsdFZhcmlhbnQpKSB7CiAgICAgICAgIHJlc3VsdFZhbHVlID0gY29udmVydE5Q
VmFyaWFudFRvVmFsdWUgKGV4ZWMsICZyZXN1bHRWYXJpYW50KTsKLSAgICAgICAgCi0gICAgICAg
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJnJlc3VsdFZhcmlhbnQpOwotICAgICAgICAKKwor
ICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJnJlc3VsdFZhcmlhbnQpOworCiAgICAg
ICAgIHJldHVybiByZXN1bHRWYWx1ZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gVW5kZWZp
bmVkKCk7CiB9CiAKQEAgLTE1MCw3ICsxNDcsNyBAQA0KIHsKICAgICBWYWx1ZSByZXN1bHRWYWx1
ZTsKIAotICAgIGlmIChfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpIHsgICAgIAorICAg
IGlmIChfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpIHsKICAgICAgICAgdW5zaWduZWQg
aSwgY291bnQgPSBhcmdzLnNpemUoKTsKICAgICAgICAgTlBWYXJpYW50ICpjQXJnczsKICAgICAg
ICAgTlBWYXJpYW50IGxvY2FsQnVmZmVyWzEyOF07CkBAIC0xNTgsNyArMTU1LDcgQEANCiAgICAg
ICAgICAgICBjQXJncyA9IChOUFZhcmlhbnQgKiltYWxsb2MgKHNpemVvZihOUFZhcmlhbnQpKmNv
dW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY0FyZ3MgPSBsb2NhbEJ1ZmZlcjsKLSAg
ICAgICAgCisKICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAg
ICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50IChleGVjLCBhcmdzLmF0KGkpLCAmY0FyZ3NbaV0p
OwogICAgICAgICB9CkBAIC0xNjksMjEgKzE2NiwyMSBAQA0KICAgICAgICAgX29iamVjdC0+X2Ns
YXNzLT5pbnZva2VEZWZhdWx0IChfb2JqZWN0LCBjQXJncywgY291bnQsICZyZXN1bHRWYXJpYW50
KTsKIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAg
X05QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmY0FyZ3NbaV0pOworICAgICAgICAgICAgTlBOX1Jl
bGVhc2VWYXJpYW50VmFsdWUgKCZjQXJnc1tpXSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
Y0FyZ3MgIT0gbG9jYWxCdWZmZXIpCiAgICAgICAgICAgICBmcmVlICgodm9pZCAqKWNBcmdzKTsK
LSAgICAgICAgICAgICAgICAKKwogICAgICAgICBpZiAoIU5QVkFSSUFOVF9JU19WT0lEKHJlc3Vs
dFZhcmlhbnQpKSB7CiAgICAgICAgICAgICByZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRU
b1ZhbHVlIChleGVjLCAmcmVzdWx0VmFyaWFudCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoJnJlc3VsdFZhcmlhbnQpOwotICAgICAgICAgICAg
CisKKyAgICAgICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlICgmcmVzdWx0VmFyaWFudCk7
CisKICAgICAgICAgICAgIHJldHVybiByZXN1bHRWYWx1ZTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiBVbmRlZmluZWQoKTsKIH0KIApAQCAtMTk5LDE0ICsxOTYsMTQgQEAN
CiAgICAgZWxzZSBpZiAoaGludCA9PSBLSlM6OkJvb2xlYW5UeXBlKSB7CiAgICAgICAgIHJldHVy
biBib29sZWFuVmFsdWUoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdmFsdWVPZigpOwog
fQogCiBLSlM6OlZhbHVlIENJbnN0YW5jZTo6c3RyaW5nVmFsdWUoKSBjb25zdAogewogICAgIGNo
YXIgYnVmWzEwMjRdOwotICAgIHNucHJpbnRmIChidWYsIDEwMjQsICJOUE9iamVjdCAlcCwgTlBD
bGFzcyAlcCIsIF9vYmplY3QsIF9vYmplY3QtPl9jbGFzcyk7CisgICAgLy9zbnByaW50ZiAoYnVm
LCAxMDI0LCAiTlBPYmplY3QgJXAsIE5QQ2xhc3MgJXAiLCBfb2JqZWN0LCBfb2JqZWN0LT5fY2xh
c3MpOwogICAgIEtKUzo6U3RyaW5nIHYoYnVmKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTIyNSw3
ICsyMjIsNyBAQA0KICAgICByZXR1cm4gdjsKIH0KIAotS0pTOjpWYWx1ZSBDSW5zdGFuY2U6OnZh
bHVlT2YoKSBjb25zdCAKK0tKUzo6VmFsdWUgQ0luc3RhbmNlOjp2YWx1ZU9mKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc3RyaW5nVmFsdWUoKTsKIH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9jL2NfcnVudGltZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvYy9jX3J1bnRpbWUuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvYy9jX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDcgKzI1LDcgQEANCiAj
aWZuZGVmIF9CSU5ESU5HU19PQkpDX1JVTlRJTUVfSF8KICNkZWZpbmUgX0JJTkRJTkdTX09CSkNf
UlVOVElNRV9IXwogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
Ky8vI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKICNpbmNsdWRl
IDxucHJ1bnRpbWUuaD4KICNpbmNsdWRlIDxucHJ1bnRpbWVfaW1wbC5oPgpAQCAtNTIsNyArNTIs
NyBAQA0KICAgICB2aXJ0dWFsIEtKUzo6VmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoS0pTOjpFeGVj
U3RhdGUgKmV4ZWMsIGNvbnN0IEluc3RhbmNlICppbnN0YW5jZSkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSW5z
dGFuY2UgKmluc3RhbmNlLCBjb25zdCBLSlM6OlZhbHVlICZhVmFsdWUpIGNvbnN0OwogICAgIAot
ICAgIHZpcnR1YWwgY29uc3QgY2hhciAqbmFtZSgpIGNvbnN0IHsgcmV0dXJuIF9OUE5fVVRGOEZy
b21JZGVudGlmaWVyKF9maWVsZElkZW50aWZpZXIpOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFy
ICpuYW1lKCkgY29uc3QgeyByZXR1cm4gTlBOX1VURjhGcm9tSWRlbnRpZmllcihfZmllbGRJZGVu
dGlmaWVyKTsgfQogICAgIHZpcnR1YWwgUnVudGltZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
ICIiOyB9CiAgICAgCiBwcml2YXRlOgpAQCAtNjcsNyArNjcsNyBAQA0KIAogICAgIENNZXRob2Qo
TlBJZGVudGlmaWVyIGlkZW50KSA6IE1ldGhvZCgpLCBfbWV0aG9kSWRlbnRpZmllcihpZGVudCkg
e307CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpuYW1lKCkgY29uc3QgeyByZXR1cm4g
X05QTl9VVEY4RnJvbUlkZW50aWZpZXIoX21ldGhvZElkZW50aWZpZXIpOyB9OworICAgIHZpcnR1
YWwgY29uc3QgY2hhciAqbmFtZSgpIGNvbnN0IHsgcmV0dXJuIE5QTl9VVEY4RnJvbUlkZW50aWZp
ZXIoX21ldGhvZElkZW50aWZpZXIpOyB9OwogCiAgICAgdmlydHVhbCBsb25nIG51bVBhcmFtZXRl
cnMoKSBjb25zdCB7IHJldHVybiAwOyB9OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9jL2NfdXRpbGl0eS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9jL2NfdXRpbGl0eS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL2MvY191dGlsaXR5LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTIwLDEwICsyMCwxMCBA
QA0KICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSNpbmNsdWRlIDxjX2luc3RhbmNlLmg+IAotI2luY2x1
ZGUgPGNfdXRpbGl0eS5oPiAKKyNpbmNsdWRlIDxjX2luc3RhbmNlLmg+CisjaW5jbHVkZSA8Y191
dGlsaXR5Lmg+CiAjaW5jbHVkZSA8aW50ZXJuYWwuaD4KICNpbmNsdWRlIDxucHJ1bnRpbWVfaW1w
bC5oPgogI2luY2x1ZGUgPG5wcnVudGltZV9wcml2Lmg+CkBAIC00NSwyMCArNDUsNTAgQEANCiAv
LyBSZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgVVRGMTZDaGFycy4KIHZvaWQgY29udmVydFVU
RjhUb1VURjE2IChjb25zdCBOUFVURjggKlVURjhDaGFycywgaW50IFVURjhMZW5ndGgsIE5QVVRG
MTYgKipVVEYxNkNoYXJzLCB1bnNpZ25lZCBpbnQgKlVURjE2TGVuZ3RoKQogewotICAgIGFzc2Vy
dCAoVVRGOENoYXJzKTsKLSAgICAKICAgICBpZiAoVVRGOExlbmd0aCA9PSAtMSkKICAgICAgICAg
VVRGOExlbmd0aCA9IHN0cmxlbihVVEY4Q2hhcnMpOwotICAgICAgICAKLSAgICBDRlN0cmluZ1Jl
ZiBzdHJpbmdSZWYgPSBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyAoTlVMTCwgKGNvbnN0IFVJbnQ4
KilVVEY4Q2hhcnMsIChDRkluZGV4KVVURjhMZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
ZmFsc2UpOwogCi0gICAgKlVURjE2TGVuZ3RoID0gKHVuc2lnbmVkIGludClDRlN0cmluZ0dldExl
bmd0aCAoc3RyaW5nUmVmKTsKLSAgICAqVVRGMTZDaGFycyA9IChOUFVURjE2ICopbWFsbG9jIChz
aXplb2YoTlBVVEYxNikgKiAoKlVURjE2TGVuZ3RoKSk7CisgICAgKlVURjE2TGVuZ3RoID0gVVRG
OExlbmd0aDsKIAotICAgIC8vIENvbnZlcnQgdGhlIHN0cmluZyB0byBVVEYxNi4KLSAgICBDRlJh
bmdlIHJhbmdlID0geyAwLCAqVVRGMTZMZW5ndGggfTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3Rl
cnMgKHN0cmluZ1JlZiwgcmFuZ2UsIChVbmlDaGFyICopKlVURjE2Q2hhcnMpOwotICAgIENGUmVs
ZWFzZSAoc3RyaW5nUmVmKTsKKyAgICAqVVRGMTZDaGFycyA9IChOUFVURjE2ICopbWFsbG9jKHNp
emVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCAqVVRGMTZMZW5ndGg7IGkrKykKKyAgICAgICAgKCpVVEYxNkNoYXJzKVtpXSA9IFVU
RjhDaGFyc1tpXSAmIDB4RkY7CisKKyAgIC8qIGFzc2VydChVVEY4Q2hhcnMgfHwgVVRGOExlbmd0
aCA9PSAwKTsKKyAgICBhc3NlcnQoVVRGMTZDaGFycyk7CisKKyAgICBpZiAoVVRGOExlbmd0aCA9
PSAtMSkKKyAgICAgICAgVVRGOExlbmd0aCA9IHN0cmxlbihVVEY4Q2hhcnMpOworCisgICAgLy8g
VVRGMTZMZW5ndGggbWF4aW11bSBsZW5ndGggaXMgdGhlIGxlbmd0aCBvZiB0aGUgVVRGOCBzdHJp
bmcsIHBsdXMgb25lIHRvIGluY2x1ZGUgdGVybWluYXRvcgorICAgIC8vIFdpdGhvdXQgdGhlIHBs
dXMgb25lLCBpdCB3aWxsIGNvbnZlcnQgb2ssIGJ1dCBhIHdhcm5pbmcgaXMgZ2VuZXJhdGVkIGZy
b20gdGhlIGNvbnZlcnRlciBhcworICAgIC8vIHRoZXJlIGlzIG5vdCBlbm91Z2ggcm9vbSBmb3Ig
YSB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCisgICAgKlVURjE2TGVuZ3RoID0gVVRGOExlbmd0aCAr
IDE7CisKKyAgICAqVVRGMTZDaGFycyA9IDA7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgVUNvbnZlcnRlciogY29udiA9IHVjbnZfb3BlbigidXRmOCIsICZzdGF0
dXMpOworICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICAqVVRGMTZDaGFycyA9
IChOUFVURjE2ICopbWFsbG9jKHNpemVvZihOUFVURjE2KSAqICgqVVRGMTZMZW5ndGgpKTsKKyAg
ICAgICAgdWNudl9zZXRUb1VDYWxsQmFjayhjb252LCBVQ05WX1RPX1VfQ0FMTEJBQ0tfU1RPUCwg
MCwgMCwgMCwgJnN0YXR1cyk7CisgICAgICAgICpVVEYxNkxlbmd0aCA9IHVjbnZfdG9VQ2hhcnMo
Y29udiwgKDo6VUNoYXIqKSpVVEYxNkNoYXJzLCAqVVRGMTZMZW5ndGgsIFVURjhDaGFycywgVVRG
OExlbmd0aCwgJnN0YXR1cyk7CisgICAgICAgIHVjbnZfY2xvc2UoY29udik7CisgICAgfQorCisg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBjb252ZXJzaW9uIHdhcyBzdWNjZXNzZnVsCisgICAg
Ly8gU29tZSBwbHVnaW5zIHJldHVybiBpbnZhbGlkIFVURi04IGluIE5QVmFyaWFudFR5cGVfU3Ry
aW5nLCBzZWUgPGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTE2Mz4KKyAgICAvLyBUaGVyZSBpcyBubyAiYmFkIGRhdGEiIGZvciBsYXRpbjEuIEl0IGlzIHVu
bGlrZWx5IHRoYXQgdGhlIHBsdWdpbiB3YXMgcmVhbGx5IHNlbmRpbmcgdGV4dCBpbiB0aGlzIGVu
Y29kaW5nLAorICAgIC8vIGJ1dCBpdCBzaG91bGQgaGF2ZSB1c2VkIFVURi04LCBhbmQgbm93IHdl
IGFyZSBzaW1wbHkgYXZvaWRpbmcgYSBjcmFzaC4KKyAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMp
KSB7CisgICAgICAgICpVVEYxNkxlbmd0aCA9IFVURjhMZW5ndGg7CisKKyAgICAgICAgaWYgKCEq
VVRGMTZDaGFycykgICAvLyBJZiB0aGUgbWVtb3J5IHdhc24ndCBhbGxvY2F0ZWQsIGFsbG9jYXRl
IGl0LgorICAgICAgICAgICAgKlVURjE2Q2hhcnMgPSAoTlBVVEYxNiAqKW1hbGxvYyhzaXplb2Yo
TlBVVEYxNikgKiAoKlVURjE2TGVuZ3RoKSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8ICpVVEYxNkxlbmd0aDsgaSsrKQorICAgICAgICAgICAgKCpVVEYxNkNoYXJzKVtpXSA9
IFVURjhDaGFyc1tpXSAmIDB4RkY7CisgICAgfSovCiB9CiAKIC8vIFZhcmlhbnQgdmFsdWUgbXVz
dCBiZSByZWxlYXNlZCB3aXRoIE5QUmVsZWFzZVZhcmlhbnRWYWx1ZSgpCkBAIC03NCw3ICsxMDQs
NyBAQA0KIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQgKEtKUzo6RXhlY1N0YXRlICpleGVj
LCBjb25zdCBLSlM6OlZhbHVlICZ2YWx1ZSwgTlBWYXJpYW50ICpyZXN1bHQpCiB7CiAgICAgVHlw
ZSB0eXBlID0gdmFsdWUudHlwZSgpOwotICAgIAorCiAgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlw
ZSkgewogICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKICAg
ICAgICAgQ1N0cmluZyBjc3RyaW5nID0gdXN0cmluZy5VVEY4U3RyaW5nKCk7CkBAIC0xMDAsMzEg
KzEzMCwzMSBAQA0KICAgICAgICAgICAgIENJbnN0YW5jZSAqaW5zdGFuY2UgPSBzdGF0aWNfY2Fz
dDxDSW5zdGFuY2UqPihpbXAtPmdldEludGVybmFsSW5zdGFuY2UoKSk7CiAgICAgICAgICAgICBO
UE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoT2JqZWN0IChyZXN1bHQsIGluc3RhbmNlLT5nZXRPYmpl
Y3QoKSk7CiAgICAgICAgIH0KLQllbHNlIHsKKyAgICBlbHNlIHsKIAotCSAgICBLSlM6OkludGVy
cHJldGVyICpvcmlnaW5JbnRlcnByZXRlciA9IGV4ZWMtPmludGVycHJldGVyKCk7CisgICAgICAg
IEtKUzo6SW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gZXhlYy0+aW50ZXJwcmV0ZXIo
KTsKICAgICAgICAgICAgIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW5FeGVjdXRp
b25Db250ZXh0ID0gcm9vdEZvckludGVycHJldGVyKG9yaWdpbkludGVycHJldGVyKTsKIAotCSAg
ICBLSlM6OkludGVycHJldGVyICppbnRlcnByZXRlciA9IDA7Ci0JICAgIGlmIChvcmlnaW5JbnRl
cnByZXRlci0+aXNHbG9iYWxPYmplY3QodmFsdWUpKSB7Ci0JCWludGVycHJldGVyID0gb3JpZ2lu
SW50ZXJwcmV0ZXItPmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0ICh2YWx1ZS5pbXAoKSk7Ci0J
ICAgIH0KKyAgICAgICAgS0pTOjpJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXIgPSAwOworICAgICAg
ICBpZiAob3JpZ2luSW50ZXJwcmV0ZXItPmlzR2xvYmFsT2JqZWN0KHZhbHVlKSkgeworICAgICAg
ICBpbnRlcnByZXRlciA9IG9yaWdpbkludGVycHJldGVyLT5pbnRlcnByZXRlckZvckdsb2JhbE9i
amVjdCAodmFsdWUuaW1wKCkpOworICAgICAgICB9CiAKLQkgICAgaWYgKCFpbnRlcnByZXRlcikK
LQkJaW50ZXJwcmV0ZXIgPSBvcmlnaW5JbnRlcnByZXRlcjsKLQkJCisgICAgICAgIGlmICghaW50
ZXJwcmV0ZXIpCisgICAgICAgIGludGVycHJldGVyID0gb3JpZ2luSW50ZXJwcmV0ZXI7CisKICAg
ICAgICAgICAgIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0ID0g
cm9vdEZvckludGVycHJldGVyKGludGVycHJldGVyKTsKICAgICAgICAgICAgIGlmICghZXhlY3V0
aW9uQ29udGV4dCkgewogICAgICAgICAgICAgICAgIEJpbmRpbmdzOjpSb290T2JqZWN0ICpuZXdF
eGVjdXRpb25Db250ZXh0ID0gbmV3IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QoMCk7CiAgICAg
ICAgICAgICAgICAgbmV3RXhlY3V0aW9uQ29udGV4dC0+c2V0SW50ZXJwcmV0ZXIgKGludGVycHJl
dGVyKTsKICAgICAgICAgICAgICAgICBleGVjdXRpb25Db250ZXh0ID0gbmV3RXhlY3V0aW9uQ29u
dGV4dDsKICAgICAgICAgICAgIH0KLSAgICAKLQkgICAgTlBPYmplY3QgKm9iaiA9IChOUE9iamVj
dCAqKWV4ZWMtPmludGVycHJldGVyKCktPmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAo
ZXhlYywgSW5zdGFuY2U6OkNMYW5ndWFnZSwgdmFsdWUudG9PYmplY3QoZXhlYyksIG9yaWdpbkV4
ZWN1dGlvbkNvbnRleHQsIGV4ZWN1dGlvbkNvbnRleHQpOwotCSAgICBOUE5fSW5pdGlhbGl6ZVZh
cmlhbnRXaXRoT2JqZWN0IChyZXN1bHQsIG9iaik7Ci0JICAgIF9OUE5fUmVsZWFzZU9iamVjdCAo
b2JqKTsKLQl9CisKKyAgICAgICAgTlBPYmplY3QgKm9iaiA9IChOUE9iamVjdCAqKWV4ZWMtPmlu
dGVycHJldGVyKCktPmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgSW5zdGFu
Y2U6OkNMYW5ndWFnZSwgdmFsdWUudG9PYmplY3QoZXhlYyksIG9yaWdpbkV4ZWN1dGlvbkNvbnRl
eHQsIGV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRo
T2JqZWN0IChyZXN1bHQsIG9iaik7CisgICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0IChvYmopOwog
ICAgIH0KKyAgICB9CiAgICAgZWxzZQogICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc1Vu
ZGVmaW5lZChyZXN1bHQpOwogfQpAQCAtMTY3LDcgKzE5Nyw3IEBADQogICAgIH0KICAgICBlbHNl
IGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KSB7CiAgICAgICAgIE5QT2JqZWN0ICpv
YmogPSB2YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKLSAgICAgICAgCisKICAgICAgICAgaWYg
KG9iai0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIEdl
dCBPYmplY3RJbXAgZnJvbSBOUF9KYXZhU2NyaXB0T2JqZWN0LgogICAgICAgICAgICAgSmF2YVNj
cmlwdE9iamVjdCAqbyA9IChKYXZhU2NyaXB0T2JqZWN0ICopb2JqOwpAQCAtMTc4LDcgKzIwOCwx
NiBAQA0KICAgICAgICAgICAgIHJldHVybiBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChJ
bnN0YW5jZTo6Q0xhbmd1YWdlLCAodm9pZCAqKW9iaik7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiB9CiAKK0lkZW50aWZpZXIgaWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKQoreworICAgIE5QVVRGMTYgKm1ldGhv
ZE5hbWU7CisgICAgdW5zaWduZWQgVVRGMTZMZW5ndGg7CisgICAgY29udmVydFVURjhUb1VURjE2
KG5hbWUsIC0xLCAmbWV0aG9kTmFtZSwgJlVURjE2TGVuZ3RoKTsgLy8gcmVxdWlyZXMgZnJlZSgp
IG9mIHJldHVybmVkIG1lbW9yeS4KKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKGNvbnN0IEtK
Uzo6VUNoYXIqKW1ldGhvZE5hbWUsIFVURjE2TGVuZ3RoKTsKKyAgICBmcmVlKG1ldGhvZE5hbWUp
OworICAgIHJldHVybiBpZGVudGlmaWVyOworfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvYy9jX3V0aWxpdHkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY191dGlsaXR5LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL2MvY191dGlsaXR5LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2ICszMCw3IEBADQogI2lu
Y2x1ZGUgPHJ1bnRpbWUuaD4KICNpbmNsdWRlIDxydW50aW1lX29iamVjdC5oPgogI2luY2x1ZGUg
PHJ1bnRpbWVfcm9vdC5oPgorI2luY2x1ZGUgPGlkZW50aWZpZXIuaD4KIAogdHlwZWRlZiB1aW50
MTZfdCBOUFVURjE2OwogTlBVVEYxNiAqTlBOX1VURjE2RnJvbVN0cmluZyAoTlBTdHJpbmcgKm9i
aik7CkBAIC01MSw2ICs1Miw3IEBADQogZXh0ZXJuIHZvaWQgY29lcmNlVmFsdWVUb05QVmFyaWFu
dFN0cmluZ1R5cGUgKEtKUzo6RXhlY1N0YXRlICpleGVjLCBjb25zdCBLSlM6OlZhbHVlICZ2YWx1
ZSwgTlBWYXJpYW50ICpyZXN1bHQpOwogZXh0ZXJuIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlh
bnQgKEtKUzo6RXhlY1N0YXRlICpleGVjLCBjb25zdCBLSlM6OlZhbHVlICZ2YWx1ZSwgTlBWYXJp
YW50ICpyZXN1bHQpOwogZXh0ZXJuIEtKUzo6VmFsdWUgY29udmVydE5QVmFyaWFudFRvVmFsdWUg
KEtKUzo6RXhlY1N0YXRlICpleGVjLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQpOworS0pTOjpJ
ZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGNvbnN0IE5QVVRGOCogbmFtZSk7
CiAKIHR5cGVkZWYgc3RydWN0IAogewpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFz
aENvdW50ZWRTZXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hh
c2hDb3VudGVkU2V0LmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
SGFzaENvdW50ZWRTZXQuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTc4IEBADQorLy8gLSot
IG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
Lg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwNCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hNTENPUkVfSEFT
SF9DT1VOVEVEX1NFVF9IDQorI2RlZmluZSBLWE1MQ09SRV9IQVNIX0NPVU5URURfU0VUX0gNCisN
CisvLyNpbmNsdWRlICJBc3NlcnRpb25zLmgiDQorI2luY2x1ZGUgIkhhc2hNYXAuaCINCisNCitu
YW1lc3BhY2UgV1RGIHsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZT46Okhhc2gsDQorICAg
ICAgICB0eXBlbmFtZSBUcmFpdHMgPSBIYXNoVHJhaXRzPFZhbHVlPiA+IGNsYXNzIEhhc2hDb3Vu
dGVkU2V0IHsNCisgICAgcHJpdmF0ZToNCisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxWYWx1ZSwg
dW5zaWduZWQsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz4gSW1wbFR5cGU7DQorICAgIHB1YmxpYzoN
CisgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIEltcGxUeXBlOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsNCisNCisgICAgICAg
IEhhc2hDb3VudGVkU2V0KCkge30NCisNCisgICAgICAgIGludCBzaXplKCkgY29uc3Q7DQorICAg
ICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdDsNCisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
Ow0KKw0KKyAgICAgICAgLy8gaXRlcmF0b3JzIGl0ZXJhdGUgb3ZlciBwYWlycyBvZiB2YWx1ZXMg
YW5kIGNvdW50cw0KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKTsNCisgICAgICAgIGl0ZXJhdG9y
IGVuZCgpOw0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsNCisgICAgICAg
IGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0Ow0KKw0KKyAgICAgICAgaXRlcmF0b3IgZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKTsNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29u
c3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3Q7DQorICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0Ow0KKyAgICAgICAgdW5zaWduZWQgY291bnQoY29uc3Qg
VmFsdWVUeXBlJiB2YWx1ZSkgY29uc3Q7DQorDQorICAgICAgICAvLyBpbmNyZWFzZXMgdGhlIGNv
dW50IGlmIGFuIGVxdWFsIHZhbHVlIGlzIGFscmVhZHkgcHJlc2VudA0KKyAgICAgICAgLy8gdGhl
IHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgYW4gaW50ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUn
cyBsb2NhdGlvbiwNCisgICAgICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5l
dyBlbnRyeSB3YXMgYWRkZWQNCisgICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRk
KGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpOw0KKw0KKyAgICAgICAgLy8gcmVkdWNlcyB0aGUgY291
bnQgb2YgdGhlIHZhbHVlLCBhbmQgcmVtb3ZlcyBpdCBpZiBjb3VudA0KKyAgICAgICAgLy8gZ29l
cyBkb3duIHRvIHplcm8NCisgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFs
dWUpOw0KKyAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpOw0KKw0KKyAgICAgICB2b2lk
IGNsZWFyKCk7DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBJbXBsVHlwZSBtX2ltcGw7DQor
ICAgIH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSBpbnQgSGFzaENvdW50ZWRTZXQ8
VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnNpemUoKSBjb25zdA0KKyAgICB7DQorICAg
ICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAg
ICBpbmxpbmUgaW50IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
OjpjYXBhY2l0eSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNp
dHkoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXNFbXB0eSgpIGNvbnN0DQor
ICAgIHsNCisgICAgICAgIHJldHVybiBzaXplKCkgPT0gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+OjpiZWdpbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuYmVn
aW4oKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFz
aENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjplbmQoKQ0KKyAgICB7DQor
ICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQor
ICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6Y29uc3RfaXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cz46OmJlZ2luKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1w
bC5iZWdpbigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFt
ZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29uc3RfaXRl
cmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmVuZCgp
IGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQ0KKyAg
ICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29uc3RfaXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUs
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29u
c3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5maW5kKHZhbHVlKTsNCisgICAgfQ0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPg0KKyAgICBpbmxpbmUgYm9vbCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
Y29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1ZSk7DQor
ICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHVuc2lnbmVkIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb3VudChjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmdldCh2YWx1ZSk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5saW5lIHN0ZDo6cGFpcjx0eXBlbmFt
ZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3Is
IGJvb2w+IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjphZGQo
Y29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkNCisgICAgew0KKyAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7DQorICAgICAgICArK3Jlc3VsdC5m
aXJzdC0+c2Vjb25kOw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpDQorICAgIHsNCisg
ICAgICAgIHJlbW92ZShmaW5kKHZhbHVlKSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisg
ICAgaW5saW5lIHZvaWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OnJlbW92ZShpdGVyYXRvciBpdCkNCisgICAgew0KKyAgICAgICAgaWYgKGl0ID09IGVuZCgp
KQ0KKyAgICAgICAgICAgIHJldHVybjsNCisNCisgICAgICAgIHVuc2lnbmVkIG9sZFZhbCA9IGl0
LT5zZWNvbmQ7DQorICAgICAgICAvL0FTU0VSVChvbGRWYWwgIT0gMCk7DQorICAgICAgICB1bnNp
Z25lZCBuZXdWYWwgPSBvbGRWYWwgLSAxOw0KKyAgICAgICAgaWYgKG5ld1ZhbCA9PSAwKQ0KKyAg
ICAgICAgICAgIG1faW1wbC5yZW1vdmUoaXQpOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAg
IGl0LT5zZWNvbmQgPSBuZXdWYWw7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCisgICAgaW5s
aW5lIHZvaWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNs
ZWFyKCkNCisgICAgew0KKyAgICAgICAgbV9pbXBsLmNsZWFyKCk7DQorICAgIH0NCisNCit9IC8v
IG5hbWVzcGFjZSBraHRtbA0KKw0KK3VzaW5nIFdURjo6SGFzaENvdW50ZWRTZXQ7DQorDQorI2Vu
ZGlmIC8qIEtYTUxDT1JFX0hBU0hfQ09VTlRFRF9TRVRfSCAqLw0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL0hhc2hGdW5jdGlvbnMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9IYXNoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDEw
NSBAQA0KKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQ0KKy8qDQorICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMNCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4NCisgKg0KKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0K
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcg0KKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUNCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4NCisgKg0KKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bw0KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsDQorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisj
aWZuZGVmIEtYTUxDT1JFX0hBU0hfRlVOQ1RJT05TX0gNCisjZGVmaW5lIEtYTUxDT1JFX0hBU0hf
RlVOQ1RJT05TX0gNCisNCisjaW5jbHVkZSAiUmVmUHRyLmgiDQorI2luY2x1ZGUgPHN0ZGludC5o
Pg0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4gc3Ry
dWN0IEludFR5cGVzOw0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBlczwxPiB7IHR5cGVk
ZWYgaW50OF90IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDhfdCBVbnNpZ25lZFR5cGU7IH07DQor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDI+IHsgdHlwZWRlZiBpbnQxNl90IFNpZ25l
ZFR5cGU7IHR5cGVkZWYgdWludDE2X3QgVW5zaWduZWRUeXBlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBJbnRUeXBlczw0PiB7IHR5cGVkZWYgaW50MzJfdCBTaWduZWRUeXBlOyB0eXBlZGVm
IHVpbnQzMl90IFVuc2lnbmVkVHlwZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50VHlw
ZXM8OD4geyB0eXBlZGVmIGludDY0X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50NjRfdCBVbnNp
Z25lZFR5cGU7IH07DQorDQorICAgIC8vIGludGVnZXIgaGFzaCBmdW5jdGlvbg0KKw0KKyAgICAv
LyBUaG9tYXMgV2FuZydzIDMyIEJpdCBNaXggRnVuY3Rpb246IGh0dHA6Ly93d3cuY3Jpcy5jb20v
flR0d2FuZy90ZWNoL2ludGhhc2guaHRtDQorICAgIGlubGluZSB1bnNpZ25lZCBpbnRIYXNoKHVp
bnQzMl90IGtleSkNCisgICAgew0KKyAgICAgICAga2V5ICs9IH4oa2V5IDw8IDE1KTsNCisgICAg
ICAgIGtleSBePSAoa2V5ID4+IDEwKTsNCisgICAgICAgIGtleSArPSAoa2V5IDw8IDMpOw0KKyAg
ICAgICAga2V5IF49IChrZXkgPj4gNik7DQorICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOw0K
KyAgICAgICAga2V5IF49IChrZXkgPj4gMTYpOw0KKyAgICAgICAgcmV0dXJuIGtleTsNCisgICAg
fQ0KKw0KKyAgICAvLyBUaG9tYXMgV2FuZydzIDY0IGJpdCBNaXggRnVuY3Rpb246IGh0dHA6Ly93
d3cuY3Jpcy5jb20vflR0d2FuZy90ZWNoL2ludGhhc2guaHRtDQorICAgIGlubGluZSB1bnNpZ25l
ZCBpbnRIYXNoKHVpbnQ2NF90IGtleSkNCisgICAgew0KKyAgICAgICAga2V5ICs9IH4oa2V5IDw8
IDMyKTsNCisgICAgICAgIGtleSBePSAoa2V5ID4+IDIyKTsNCisgICAgICAgIGtleSArPSB+KGtl
eSA8PCAxMyk7DQorICAgICAgICBrZXkgXj0gKGtleSA+PiA4KTsNCisgICAgICAgIGtleSArPSAo
a2V5IDw8IDMpOw0KKyAgICAgICAga2V5IF49IChrZXkgPj4gMTUpOw0KKyAgICAgICAga2V5ICs9
IH4oa2V5IDw8IDI3KTsNCisgICAgICAgIGtleSBePSAoa2V5ID4+IDMxKTsNCisgICAgICAgIHJl
dHVybiBrZXk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElu
dEhhc2ggew0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goVCBrZXkpIHsgcmV0dXJuIGlu
dEhhc2goc3RhdGljX2Nhc3Q8dHlwZW5hbWUgSW50VHlwZXM8c2l6ZW9mKFQpPjo6VW5zaWduZWRU
eXBlPihrZXkpKTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoVCBhLCBUIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQ0KKyAgICB9Ow0KKw0KKyAgICAvLyBwb2ludGVyIGlkZW50aXR5IGhhc2gg
ZnVuY3Rpb24NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFB0ckhhc2ggew0K
KyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goVCBrZXkpIHsgcmV0dXJuIEludEhhc2g8dWlu
dHB0cl90Pjo6aGFzaChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oa2V5KSk7IH0NCisgICAg
ICAgIHN0YXRpYyBib29sIGVxdWFsKFQgYSwgVCBiKSB7IHJldHVybiBhID09IGI7IH0NCisgICAg
fTsNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFB0ckhhc2g8UmVmUHRyPFA+ID4g
ew0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPFA+JiBrZXkpIHsg
cmV0dXJuIFB0ckhhc2g8UCo+OjpoYXNoKGtleS5nZXQoKSk7IH0NCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFJlZlB0cjxQPiYgYSwgY29uc3QgUmVmUHRyPFA+JiBiKSB7IHJldHVy
biBhID09IGI7IH0NCisgICAgfTsNCisNCisgICAgLy8gZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZv
ciBlYWNoIHR5cGUNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoOw0KKw0KKyAgICAvLyBtYWtlIEludEhhc2ggdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiBm
b3IgbWFueSBpbnRlZ2VyIHR5cGVzDQorDQorICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPGludD4geyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQ+IEhhc2g7IH07DQorICAgIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHVuc2lnbmVkPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNp
Z25lZD4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8bG9uZz4g
eyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZz4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWduZWQgbG9uZz4geyB0eXBlZGVmIEludEhhc2g8dW5z
aWduZWQgbG9uZz4gSGFzaDsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
bG9uZyBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nIGxvbmc+IEhhc2g7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHVuc2lnbmVkIGxvbmcgbG9uZz4g
eyB0eXBlZGVmIEludEhhc2g8dW5zaWduZWQgbG9uZyBsb25nPiBIYXNoOyB9Ow0KKw0KKyAgICAv
LyBtYWtlIFB0ckhhc2ggdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiBmb3IgcG9pbnRlciB0eXBl
cyB0aGF0IGRvbid0IHNwZWNpYWxpemUNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFAqPiB7IHR5cGVkZWYgUHRySGFzaDxQKj4gSGFzaDsgfTsNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IERlZmF1bHRIYXNoPFJlZlB0cjxQPiA+IHsgdHlw
ZWRlZiBQdHJIYXNoPFJlZlB0cjxQPiA+IEhhc2g7IH07DQorDQorfSAvLyBuYW1lc3BhY2UgV1RG
DQorDQordXNpbmcgV1RGOjpEZWZhdWx0SGFzaDsNCit1c2luZyBXVEY6OkludEhhc2g7DQordXNp
bmcgV1RGOjpQdHJIYXNoOw0KKw0KKyNlbmRpZiAvLyBLWExNQ09SRV9IQVNIX0ZVTkNUSU9OU19I
DQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaE1hcC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaE1hcC5oCShyZXZpc2lvbiAwKQ0KKysrIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL0hhc2hNYXAuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEs
MzMyIEBADQorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotDQorLyoNCisg
KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcw0KKyAqDQorICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuDQorICoNCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICov
DQorDQorI2lmbmRlZiBLWE1MQ09SRV9IQVNIX01BUF9IDQorI2RlZmluZSBLWE1MQ09SRV9IQVNI
X01BUF9IDQorDQorI2luY2x1ZGUgIkhhc2hUYWJsZS5oIg0KKw0KK25hbWVzcGFjZSBXVEYgew0K
Kw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYWlyVHlwZT4gc3RydWN0IFBhaXJGaXJzdEV4dHJh
Y3RvcjsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRB
cmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNo
LA0KKyAgICAgICAgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxLZXlBcmc+LCB0
eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPE1hcHBlZEFyZz4gPg0KKyAgICBj
bGFzcyBIYXNoTWFwIHsNCisgICAgcHJpdmF0ZToNCisgICAgICAgIHR5cGVkZWYgS2V5VHJhaXRz
QXJnIEtleVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgTWFwcGVkVHJhaXRzQXJnIE1hcHBlZFRy
YWl0czsNCisgICAgICAgIHR5cGVkZWYgUGFpckJhc2VIYXNoVHJhaXRzPEtleVRyYWl0cywgTWFw
cGVkVHJhaXRzPiBWYWx1ZVRyYWl0czsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBLZXlUcmFpdHM6OlRyYWl0VHlwZSBLZXlUeXBlOw0KKyAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6OlRyYWl0VHlwZSBNYXBwZWRUeXBlOw0KKyAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlVHlwZTsNCisNCisg
ICAgcHJpdmF0ZToNCisgICAgICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVuY3Rpb25zOw0KKw0K
KyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoS2V5U3RvcmFnZVRyYWl0czxIYXNoRnVuY3Rp
b25zLCBLZXlUcmFpdHM+OjpIYXNoIFN0b3JhZ2VIYXNoRnVuY3Rpb25zOw0KKw0KKyAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBIYXNoS2V5U3RvcmFnZVRyYWl0czxIYXNoRnVuY3Rpb25zLCBLZXlU
cmFpdHM+OjpUcmFpdHMgS2V5U3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgTWFwcGVkVHJhaXRzOjpTdG9yYWdlVHJhaXRzIE1hcHBlZFN0b3JhZ2VUcmFpdHM7DQorICAg
ICAgICB0eXBlZGVmIFBhaXJIYXNoVHJhaXRzPEtleVN0b3JhZ2VUcmFpdHMsIE1hcHBlZFN0b3Jh
Z2VUcmFpdHM+IFZhbHVlU3RvcmFnZVRyYWl0czsNCisNCisgICAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgS2V5U3RvcmFnZVRyYWl0czo6VHJhaXRUeXBlIEtleVN0b3JhZ2VUeXBlOw0KKyAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBNYXBwZWRTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgTWFwcGVkU3Rv
cmFnZVR5cGU7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6
VHJhaXRUeXBlIFZhbHVlU3RvcmFnZVR5cGU7DQorDQorICAgICAgICB0eXBlZGVmIEhhc2hUYWJs
ZTxLZXlTdG9yYWdlVHlwZSwgVmFsdWVTdG9yYWdlVHlwZSwgUGFpckZpcnN0RXh0cmFjdG9yPFZh
bHVlU3RvcmFnZVR5cGU+LA0KKyAgICAgICAgICAgIFN0b3JhZ2VIYXNoRnVuY3Rpb25zLCBWYWx1
ZVN0b3JhZ2VUcmFpdHMsIEtleVN0b3JhZ2VUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQorDQorICAg
IHB1YmxpYzoNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hU
YWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7DQorICAgICAgICB0eXBlZGVmIEhhc2hUYWJs
ZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRl
cmF0b3I7DQorDQorICAgICAgICBIYXNoTWFwKCk7DQorICAgICAgICBIYXNoTWFwKGNvbnN0IEhh
c2hNYXAmKTsNCisgICAgICAgIEhhc2hNYXAmIG9wZXJhdG9yPShjb25zdCBIYXNoTWFwJik7DQor
ICAgICAgICB+SGFzaE1hcCgpOw0KKw0KKyAgICAgICAgaW50IHNpemUoKSBjb25zdDsNCisgICAg
ICAgIGludCBjYXBhY2l0eSgpIGNvbnN0Ow0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
DQorDQorICAgICAgICAvLyBpdGVyYXRvcnMgaXRlcmF0ZSBvdmVyIHBhaXJzIG9mIGtleXMgYW5k
IHZhbHVlcw0KKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKTsNCisgICAgICAgIGl0ZXJhdG9yIGVu
ZCgpOw0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsNCisgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0Ow0KKw0KKyAgICAgICAgaXRlcmF0b3IgZmluZChjb25z
dCBLZXlUeXBlJik7DQorICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUm
KSBjb25zdDsNCisgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0K
KyAgICAgICAgTWFwcGVkVHlwZSBnZXQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KKw0KKyAgICAg
ICAgLy8gcmVwbGFjZXMgdmFsdWUgYnV0IG5vdCBrZXkgaWYga2V5IGlzIGFscmVhZHkgcHJlc2Vu
dA0KKyAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8g
dGhlIGtleSBsb2NhdGlvbiwgDQorICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVl
IGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZA0KKyAgICAgICAgcGFpcjxpdGVyYXRv
ciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBjb25zdCBNYXBwZWRUeXBlJik7IA0KKw0KKyAg
ICAgICAgLy8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQNCisgICAgICAg
IC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9j
YXRpb24sIA0KKyAgICAgICAgLy8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2
YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQNCisgICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFk
ZChjb25zdCBLZXlUeXBlJiwgY29uc3QgTWFwcGVkVHlwZSYpOyANCisNCisgICAgICAgIHZvaWQg
cmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yIGl0
KTsNCisgICAgICAgIHZvaWQgY2xlYXIoKTsNCisNCisgICAgcHJpdmF0ZToNCisgICAgICAgIHBh
aXI8aXRlcmF0b3IsIGJvb2w+IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgY29uc3QgTWFwcGVk
VHlwZSYpOw0KKyAgICAgICAgdm9pZCByZWZBbGwoKTsNCisgICAgICAgIHZvaWQgZGVyZWZBbGwo
KTsNCisNCisgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOw0KKyAgICB9Ow0KKw0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQYWlyVHlwZT4gc3RydWN0IFBhaXJGaXJzdEV4dHJhY3RvciB7DQor
ICAgICAgICBzdGF0aWMgY29uc3QgdHlwZW5hbWUgUGFpclR5cGU6OmZpcnN0X3R5cGUmIGV4dHJh
Y3QoY29uc3QgUGFpclR5cGUmIHApIHsgcmV0dXJuIHAuZmlyc3Q7IH0NCisgICAgfTsNCisNCisg
ICAgdGVtcGxhdGU8Ym9vbCBjYW5SZXBsYWNlRGVsZXRlZEtleSwgdHlwZW5hbWUgVmFsdWVUeXBl
LCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHMsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+DQor
ICAgIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvcjsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHMsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnM+DQorICAgIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvcjx0cnVlLCBWYWx1ZVR5cGUsIFZh
bHVlU3RvcmFnZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBWYWx1ZVR5cGU6OmZpcnN0X3R5cGUgS2V5VHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgVmFsdWVUeXBlOjpzZWNvbmRfdHlwZSBNYXBwZWRUeXBlOw0KKyAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVN0b3JhZ2VUeXBl
Ow0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM6OkZpcnN0VHJh
aXRzIEtleVN0b3JhZ2VUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEtleVN0b3Jh
Z2VUcmFpdHM6OlRyYWl0VHlwZSBLZXlTdG9yYWdlVHlwZTsNCisNCisgICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6
aGFzaChrZXkpOyB9DQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXlTdG9yYWdl
VHlwZSYgYSwgY29uc3QgS2V5VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwo
KihLZXlUeXBlKikmYSwgYik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1
ZVN0b3JhZ2VUeXBlJiBsb2NhdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRU
eXBlJiBtYXBwZWQsIHVuc2lnbmVkKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgICooS2V5VHlw
ZSopJmxvY2F0aW9uLmZpcnN0ID0ga2V5Ow0KKyAgICAgICAgICAgICooTWFwcGVkVHlwZSopJmxv
Y2F0aW9uLnNlY29uZCA9IG1hcHBlZDsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHMsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnM+DQorICAgIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvcjxmYWxz
ZSwgVmFsdWVUeXBlLCBWYWx1ZVN0b3JhZ2VUcmFpdHMsIEhhc2hGdW5jdGlvbnM+IHsNCisgICAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUeXBlOjpmaXJzdF90eXBlIEtleVR5cGU7DQorICAg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHlwZTo6c2Vjb25kX3R5cGUgTWFwcGVkVHlwZTsN
CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUg
VmFsdWVTdG9yYWdlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdl
VHJhaXRzOjpGaXJzdFRyYWl0cyBLZXlTdG9yYWdlVHJhaXRzOw0KKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBLZXlTdG9yYWdlVHJhaXRzOjpUcmFpdFR5cGUgS2V5U3RvcmFnZVR5cGU7DQorDQor
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLZXlUeXBlJiBrZXkpIHsgcmV0dXJu
IEhhc2hGdW5jdGlvbnM6Omhhc2goa2V5KTsgfQ0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgS2V5U3RvcmFnZVR5cGUmIGEsIGNvbnN0IEtleVR5cGUmIGIpIHsgcmV0dXJuIEhhc2hG
dW5jdGlvbnM6OmVxdWFsKCooS2V5VHlwZSopJmEsIGIpOyB9DQorICAgICAgICBzdGF0aWMgdm9p
ZCB0cmFuc2xhdGUoVmFsdWVTdG9yYWdlVHlwZSYgbG9jYXRpb24sIGNvbnN0IEtleVR5cGUmIGtl
eSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkLCB1bnNpZ25lZCkNCisgICAgICAgIHsNCisgICAg
ICAgICAgICBpZiAobG9jYXRpb24uZmlyc3QgPT0gS2V5U3RvcmFnZVRyYWl0czo6ZGVsZXRlZFZh
bHVlKCkpDQorICAgICAgICAgICAgICAgIGxvY2F0aW9uLmZpcnN0ID0gS2V5U3RvcmFnZVRyYWl0
czo6ZW1wdHlWYWx1ZSgpOw0KKyAgICAgICAgICAgICooS2V5VHlwZSopJmxvY2F0aW9uLmZpcnN0
ID0ga2V5Ow0KKyAgICAgICAgICAgICooTWFwcGVkVHlwZSopJmxvY2F0aW9uLnNlY29uZCA9IG1h
cHBlZDsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5s
aW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6cmVmQWxsKCkNCisgICAgew0KKyAgICAg
ICAgSGFzaFRhYmxlUmVmQ291bnRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVRyYWl0cz46OnJlZkFs
bChtX2ltcGwpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB2b2lk
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmRlcmVmQWxsKCkNCisgICAgew0KKyAgICAgICAgSGFz
aFRhYmxlUmVmQ291bnRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVRyYWl0cz46OmRlcmVmQWxsKG1f
aW1wbCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46Okhhc2hNYXAoKQ0KKyAgICB7DQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5h
bWUgWD4NCisgICAgaW5saW5lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Okhhc2hNYXAoY29uc3Qg
SGFzaE1hcCYgb3RoZXIpDQorICAgICAgICA6IG1faW1wbChvdGhlci5tX2ltcGwpDQorICAgIHsN
CisgICAgICAgIHJlZkFsbCgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlu
bGluZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpvcGVy
YXRvcj0oY29uc3QgSGFzaE1hcCYgb3RoZXIpDQorICAgIHsNCisgICAgICAgIEhhc2hNYXAgdG1w
KG90aGVyKTsNCisgICAgICAgIG1faW1wbC5zd2FwKHRtcC5tX2ltcGwpOyANCisgICAgICAgIHJl
dHVybiAqdGhpczsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUgSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6fkhhc2hNYXAoKQ0KKyAgICB7DQorICAgICAgICBkZXJlZkFs
bCgpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSBpbnQgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPjo6c2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBt
X2ltcGwuc2l6ZSgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxpbmUg
aW50IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNhcGFjaXR5KCkgY29uc3QNCisgICAgeyANCisg
ICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgDQorICAgIH0NCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5h
bWUgWD4NCisgICAgaW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXNFbXB0eSgp
IGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOw0KKyAgICB9
DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUs
IFYsIFcsIFg+OjppdGVyYXRvciBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpDQorICAg
IHsNCisgICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkNCisgICAgew0KKyAgICAgICAgcmV0
dXJuIG1faW1wbC5lbmQoKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KKyAgICBpbmxp
bmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPjo6YmVnaW4oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4g
bV9pbXBsLmJlZ2luKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5l
IHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46OmVuZCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2lt
cGwuZW5kKCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHR5cGVu
YW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9p
bXBsLmZpbmQoKihjb25zdCBLZXlTdG9yYWdlVHlwZSopJmtleSk7DQorICAgIH0NCisNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46
OmNvbnN0X2l0ZXJhdG9yIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmZpbmQoY29uc3QgS2V5VHlw
ZSYga2V5KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQoKihjb25z
dCBLZXlTdG9yYWdlVHlwZSopJmtleSk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisg
ICAgaW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29udGFpbnMoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5z
KCooY29uc3QgS2V5U3RvcmFnZVR5cGUqKSZrZXkpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+DQorICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0
ZXJhdG9yLCBib29sPg0KKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpbmVBZGQoY29u
c3QgS2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiBtYXBwZWQpIA0KKyAgICB7IA0KKyNp
Zm5kZWYgX19BUk1DQ19fDQorICAgICAgICBjb25zdCBib29sIGNhblJlcGxhY2VEZWxldGVkS2V5
ID0gIUtleVRyYWl0czo6bmVlZHNEZXN0cnVjdGlvbiB8fCBLZXlTdG9yYWdlVHJhaXRzOjpuZWVk
c0Rlc3RydWN0aW9uOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvcjxjYW5SZXBs
YWNlRGVsZXRlZEtleSwgVmFsdWVUeXBlLCBWYWx1ZVN0b3JhZ2VUcmFpdHMsIEhhc2hGdW5jdGlv
bnM+IFRyYW5zbGF0b3JUeXBlOw0KKyNlbHNlDQorICAgICAgICAvLyBnZXQgYXJvdW5kIA0KKyAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvcjwgIUtleVRyYWl0czo6bmVlZHNEZXN0cnVj
dGlvbiB8fCBLZXlTdG9yYWdlVHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9uLCBWYWx1ZVR5cGUsIFZh
bHVlU3RvcmFnZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gVHJhbnNsYXRvclR5cGU7DQorI2VuZGlm
DQorICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxLZXlUeXBlLCBNYXBwZWRUeXBl
LCBUcmFuc2xhdG9yVHlwZT4oa2V5LCBtYXBwZWQpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+DQorICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3Is
IGJvb2w+DQorICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnNldChjb25zdCBLZXlUeXBlJiBr
ZXksIGNvbnN0IE1hcHBlZFR5cGUmIG1hcHBlZCkgDQorICAgIHsNCisgICAgICAgIHBhaXI8aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7DQorICAgICAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpDQorICAgICAgICAgICAgLy8gYWRkIGNhbGwgYWJvdmUgZGlkbid0
IGNoYW5nZSBhbnl0aGluZywgc28gc2V0IHRoZSBtYXBwZWQgdmFsdWUNCisgICAgICAgICAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IG1hcHBlZDsNCisgICAgICAgIHJldHVybiByZXN1bHQ7DQor
ICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCisgICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4NCisgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgTWFwcGVkVHlwZSYgbWFwcGVkKQ0KKyAg
ICB7DQorICAgICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsNCisgICAgfQ0KKw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+DQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFw
PFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46Ok1hcHBlZFR5cGUNCisgICAgSGFzaE1hcDxULCBV
LCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdA0KKyAg
ICB7DQorICAgICAgICBjb25zdF9pdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsNCisgICAgICAgIGlm
IChpdCA9PSBlbmQoKSkNCisgICAgICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjplbXB0eVZh
bHVlKCk7DQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUo
aXRlcmF0b3IgaXQpDQorICAgIHsNCisgICAgICAgIGlmIChpdC5tX2ltcGwgPT0gbV9pbXBsLmVu
ZCgpKQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIFJlZkNvdW50ZXI8VmFsdWVUcmFp
dHMsIFZhbHVlU3RvcmFnZVRyYWl0cz46OmRlcmVmKCppdC5tX2ltcGwpOw0KKyAgICAgICAgbV9p
bXBsLnJlbW92ZShpdC5tX2ltcGwpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQorICAg
IGlubGluZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShjb25zdCBLZXlUeXBl
JiBrZXkpDQorICAgIHsNCisgICAgICAgIHJlbW92ZShmaW5kKGtleSkpOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+DQorICAgIGlubGluZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46
OmNsZWFyKCkNCisgICAgew0KKyAgICAgICAgZGVyZWZBbGwoKTsNCisgICAgICAgIG1faW1wbC5j
bGVhcigpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5
cGVuYW1lIEhhc2hUYWJsZVR5cGU+DQorICAgIHZvaWQgZGVsZXRlQWxsUGFpclNlY29uZHMoSGFz
aFRhYmxlVHlwZSYgY29sbGVjdGlvbikNCisgICAgew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsNCisgICAgICAgIGl0ZXJh
dG9yIGVuZCA9IGNvbGxlY3Rpb24uZW5kKCk7DQorICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0g
Y29sbGVjdGlvbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpDQorICAgICAgICAgICAgZGVsZXRl
ICooTWFwcGVkVHlwZSopJml0LT5zZWNvbmQ7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4N
CisgICAgaW5saW5lIHZvaWQgZGVsZXRlQWxsVmFsdWVzKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwg
VywgWD4mIGNvbGxlY3Rpb24pDQorICAgIHsNCisgICAgICAgIGRlbGV0ZUFsbFBhaXJTZWNvbmRz
PHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Ok1hcHBlZFR5cGU+KGNvbGxlY3Rpb24p
Ow0KKyAgICB9DQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpIYXNoTWFw
Ow0KKw0KKyNlbmRpZiAvKiBLWE1MQ09SRV9IQVNIX01BUF9IICovDQpJbmRleDogSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvSGFzaFRhYmxlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9IYXNoVGFibGUuaAkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9IYXNoVGFibGUuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsOTM1IEBADQorLy8g
LSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwNCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgS1hN
TENPUkVfSEFTSF9UQUJMRV9IDQorI2RlZmluZSBLWE1MQ09SRV9IQVNIX1RBQkxFX0gNCisNCisj
aW5jbHVkZSAiRmFzdF9NYWxsb2MuaCINCisjaW5jbHVkZSAiSGFzaFRyYWl0cy5oIg0KKyNpbmNs
dWRlIDxhc3NlcnQuaD4NCisNCituYW1lc3BhY2UgV1RGIHsNCisNCisjZGVmaW5lIERVTVBfSEFT
SFRBQkxFX1NUQVRTIDANCisjZGVmaW5lIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWSAwDQor
DQorI2lmZGVmIE5ERUJVRw0KKyNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUyAwDQor
I2Vsc2UNCisjZGVmaW5lIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMgMQ0KKyNlbmRpZg0KKw0K
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKw0KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlU3RhdHMg
ew0KKyAgICAgICAgfkhhc2hUYWJsZVN0YXRzKCk7DQorICAgICAgICBzdGF0aWMgaW50IG51bUFj
Y2Vzc2VzOw0KKyAgICAgICAgc3RhdGljIGludCBudW1Db2xsaXNpb25zOw0KKyAgICAgICAgc3Rh
dGljIGludCBjb2xsaXNpb25HcmFwaFs0MDk2XTsNCisgICAgICAgIHN0YXRpYyBpbnQgbWF4Q29s
bGlzaW9uczsNCisgICAgICAgIHN0YXRpYyBpbnQgbnVtUmVoYXNoZXM7DQorICAgICAgICBzdGF0
aWMgaW50IG51bVJlbW92ZXM7DQorICAgICAgICBzdGF0aWMgaW50IG51bVJlaW5zZXJ0czsNCisg
ICAgICAgIHN0YXRpYyB2b2lkIHJlY29yZENvbGxpc2lvbkF0Q291bnQoaW50IGNvdW50KTsNCisg
ICAgfTsNCisNCisjZW5kaWYNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgY2xhc3MgSGFzaFRhYmxlOw0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjsNCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisg
ICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjsNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPiosDQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7DQorDQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
DQorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopOw0KKyNl
bHNlDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+DQorICAgIGlubGluZSB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPiosDQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KikgeyB9DQorDQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+DQorICAgIGlubGluZSB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4qKSB7IH0NCisjZW5kaWYNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgY2xhc3MgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvciB7DQorICAgIHByaXZhdGU6DQorICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBI
YXNoVGFibGVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRv
cjsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRv
cjsNCisgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBj
b25zdCBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7DQorICAgICAgICB0eXBlZGVmIGNvbnN0IFZh
bHVlVHlwZSogUG9pbnRlclR5cGU7DQorDQorICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
Ow0KKyAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ow0KKw0KKyAgICAgICAg
dm9pZCBza2lwRW1wdHlCdWNrZXRzKCkNCisgICAgICAgIHsNCisgICAgICAgICAgICB3aGlsZSAo
bV9wb3NpdGlvbiAhPSBtX2VuZFBvc2l0aW9uICYmIEhhc2hUYWJsZVR5cGU6OmlzRW1wdHlPckRl
bGV0ZWRCdWNrZXQoKm1fcG9zaXRpb24pKQ0KKyAgICAgICAgICAgICAgICArK21fcG9zaXRpb247
DQorICAgICAgICB9DQorDQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yKGNvbnN0IEhh
c2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBwb3NpdGlvbiwgUG9pbnRlclR5cGUgZW5k
UG9zaXRpb24pDQorICAgICAgICAgICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uKSwgbV9lbmRQb3Np
dGlvbihlbmRQb3NpdGlvbikNCisgICAgICAgIHsNCisgICAgICAgICAgICBhZGRJdGVyYXRvcih0
YWJsZSwgdGhpcyk7DQorICAgICAgICAgICAgc2tpcEVtcHR5QnVja2V0cygpOw0KKyAgICAgICAg
fQ0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yKCkNCisg
ICAgICAgIHsNCisgICAgICAgICAgICBhZGRJdGVyYXRvcigwLCB0aGlzKTsNCisgICAgICAgIH0N
CisNCisgICAgICAgIC8vIGRlZmF1bHQgY29weSwgYXNzaWdubWVudCBhbmQgZGVzdHJ1Y3RvciBh
cmUgT0sgaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUyBpcyAwDQorDQorI2lmIENIRUNLX0hB
U0hUQUJMRV9JVEVSQVRPUlMNCisgICAgICAgIH5IYXNoVGFibGVDb25zdEl0ZXJhdG9yKCkNCisg
ICAgICAgIHsNCisgICAgICAgICAgICByZW1vdmVJdGVyYXRvcih0aGlzKTsNCisgICAgICAgIH0N
CisNCisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IoY29uc3QgY29uc3RfaXRlcmF0b3Im
IG90aGVyKQ0KKyAgICAgICAgICAgIDogbV9wb3NpdGlvbihvdGhlci5tX3Bvc2l0aW9uKSwgbV9l
bmRQb3NpdGlvbihvdGhlci5tX2VuZFBvc2l0aW9uKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAg
IGFkZEl0ZXJhdG9yKG90aGVyLm1fdGFibGUsIHRoaXMpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg
ICAgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIp
DQorICAgICAgICB7DQorICAgICAgICAgICAgbV9wb3NpdGlvbiA9IG90aGVyLm1fcG9zaXRpb247
DQorICAgICAgICAgICAgbV9lbmRQb3NpdGlvbiA9IG90aGVyLm1fZW5kUG9zaXRpb247DQorDQor
ICAgICAgICAgICAgcmVtb3ZlSXRlcmF0b3IodGhpcyk7DQorICAgICAgICAgICAgYWRkSXRlcmF0
b3Iob3RoZXIubV90YWJsZSwgdGhpcyk7DQorDQorICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0K
KyAgICAgICAgfQ0KKyNlbmRpZg0KKw0KKyAgICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29uc3QN
CisgICAgICAgIHsNCisgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7DQorICAgICAgICAgICAg
cmV0dXJuIG1fcG9zaXRpb247DQorICAgICAgICB9DQorICAgICAgICBSZWZlcmVuY2VUeXBlIG9w
ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KKyAgICAgICAgUG9pbnRlclR5cGUg
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9DQorDQorICAgICAgICBjb25zdF9p
dGVyYXRvciYgb3BlcmF0b3IrKygpDQorICAgICAgICB7DQorICAgICAgICAgICAgY2hlY2tWYWxp
ZGl0eSgpOw0KKyAgICAgICAgICAgIGFzc2VydChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24p
Ow0KKyAgICAgICAgICAgICsrbV9wb3NpdGlvbjsNCisgICAgICAgICAgICBza2lwRW1wdHlCdWNr
ZXRzKCk7DQorICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg
ICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQNCisNCisgICAgICAgIC8vIENv
bXBhcmlzb24uDQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0b3Im
IG90aGVyKSBjb25zdA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkob3Ro
ZXIpOw0KKyAgICAgICAgICAgIHJldHVybiBtX3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRpb247
DQorICAgICAgICB9DQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0
b3ImIG90aGVyKSBjb25zdA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGNoZWNrVmFsaWRpdHko
b3RoZXIpOw0KKyAgICAgICAgICAgIHJldHVybiBtX3Bvc2l0aW9uICE9IG90aGVyLm1fcG9zaXRp
b247DQorICAgICAgICB9DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICB2b2lkIGNoZWNrVmFs
aWRpdHkoKSBjb25zdA0KKyAgICAgICAgew0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JT
DQorICAgICAgICAgICAgYXNzZXJ0KG1fdGFibGUpOw0KKyNlbmRpZg0KKyAgICAgICAgfQ0KKw0K
Kw0KKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgICAgICB2b2lkIGNoZWNrVmFs
aWRpdHkoY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBjb25zdA0KKyAgICAgICAgew0KKyAg
ICAgICAgICAgIGFzc2VydChtX3RhYmxlKTsNCisgICAgICAgICAgICBhc3NlcnQob3RoZXIubV90
YWJsZSk7DQorICAgICAgICAgICAgYXNzZXJ0KG1fdGFibGUgPT0gb3RoZXIubV90YWJsZSk7DQor
ICAgICAgICB9DQorI2Vsc2UNCisgICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25z
dF9pdGVyYXRvciYpIGNvbnN0IHsgfQ0KKyNlbmRpZg0KKw0KKyAgICAgICAgUG9pbnRlclR5cGUg
bV9wb3NpdGlvbjsNCisgICAgICAgIFBvaW50ZXJUeXBlIG1fZW5kUG9zaXRpb247DQorDQorI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisgICAgcHVibGljOg0KKyAgICAgICAgbXV0YWJs
ZSBjb25zdCBIYXNoVGFibGVUeXBlKiBtX3RhYmxlOw0KKyAgICAgICAgbXV0YWJsZSBjb25zdF9p
dGVyYXRvciogbV9uZXh0Ow0KKyAgICAgICAgbXV0YWJsZSBjb25zdF9pdGVyYXRvciogbV9wcmV2
aW91czsNCisjZW5kaWYNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgY2xhc3MgSGFzaFRh
YmxlSXRlcmF0b3Igew0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4g
SGFzaFRhYmxlVHlwZTsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0
b3I7DQorICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0
b3I7DQorICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsNCisgICAgICAgIHR5cGVkZWYg
VmFsdWVUeXBlJiBSZWZlcmVuY2VUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUqIFBv
aW50ZXJUeXBlOw0KKw0KKyAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsNCisNCisgICAg
ICAgIEhhc2hUYWJsZUl0ZXJhdG9yKEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBw
b3MsIFBvaW50ZXJUeXBlIGVuZCkgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCkgeyB9DQor
DQorICAgIHB1YmxpYzoNCisgICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yKCkgeyB9DQorDQorICAg
ICAgICAvLyBkZWZhdWx0IGNvcHksIGFzc2lnbm1lbnQgYW5kIGRlc3RydWN0b3IgYXJlIE9LDQor
DQorICAgICAgICBQb2ludGVyVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFBv
aW50ZXJUeXBlPihtX2l0ZXJhdG9yLmdldCgpKTsgfQ0KKyAgICAgICAgUmVmZXJlbmNlVHlwZSBv
cGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0NCisgICAgICAgIFBvaW50ZXJUeXBl
IG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQ0KKw0KKyAgICAgICAgaXRlcmF0
b3ImIG9wZXJhdG9yKysoKSB7ICsrbV9pdGVyYXRvcjsgcmV0dXJuICp0aGlzOyB9DQorDQorICAg
ICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZA0KKw0KKyAgICAgICAgLy8g
Q29tcGFyaXNvbi4NCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgPT0gb3RoZXIubV9pdGVyYXRvcjsgfQ0KKyAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvciAhPSBvdGhlci5tX2l0ZXJhdG9yOyB9DQorDQorICAgICAgICBvcGVyYXRv
ciBjb25zdF9pdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0NCisNCisgICAg
cHJpdmF0ZToNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3I7DQorICAgIH07DQor
DQorICAgIHVzaW5nIHN0ZDo6c3dhcDsNCisNCisvLyNpZiAhQ09NUElMRVIoTVNWQykNCisgICAg
Ly8gVmlzdWFsIEMrKyBoYXMgYSBzd2FwIGZvciBwYWlycyBkZWZpbmVkLg0KKw0KKyAgICAvLyBz
d2FwIHBhaXJzIGJ5IGNvbXBvbmVudCwgaW4gY2FzZSBvZiBwYWlyIG1lbWJlcnMgdGhhdCBzcGVj
aWFsaXplIHN3YXANCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IHZvaWQgc3dhcChwYWlyPFQsIFU+JiBhLCBwYWlyPFQsIFU+JiBiKQ0KKyAgICB7DQorICAgICAg
ICBzd2FwKGEuZmlyc3QsIGIuZmlyc3QpOw0KKyAgICAgICAgc3dhcChhLnNlY29uZCwgYi5zZWNv
bmQpOw0KKyAgICB9DQorLy8jZW5kaWYNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgYm9v
bCB1c2VTd2FwPiBzdHJ1Y3QgTW92ZXI7DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBNb3ZlcjxULCB0cnVlPiB7IHN0YXRpYyB2b2lkIG1vdmUoVCYgZnJvbSwgVCYgdG8pIHsgc3dh
cChmcm9tLCB0byk7IH0gfTsNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1vdmVy
PFQsIGZhbHNlPiB7IHN0YXRpYyB2b2lkIG1vdmUoVCYgZnJvbSwgVCYgdG8pIHsgdG8gPSBmcm9t
OyB9IH07DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnM+IGNsYXNzIElkZW50aXR5SGFzaFRyYW5zbGF0b3Igew0KKyAg
ICBwdWJsaWM6DQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLZXkmIGtleSkg
eyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9DQorICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9u
czo6ZXF1YWwoYSwgYik7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1ZSYg
bG9jYXRpb24sIGNvbnN0IEtleSYsIGNvbnN0IFZhbHVlJiB2YWx1ZSwgdW5zaWduZWQpIHsgbG9j
YXRpb24gPSB2YWx1ZTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBjbGFzcyBIYXNo
VGFibGUgew0KKyAgICBwdWJsaWM6DQorICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9y
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
IGl0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0
X2l0ZXJhdG9yOw0KKyAgICAgICAgdHlwZWRlZiBUcmFpdHMgVmFsdWVUcmFpdHM7DQorICAgICAg
ICB0eXBlZGVmIEtleSBLZXlUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7
DQorICAgICAgICB0eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0b3I8S2V5LCBWYWx1ZSwgSGFz
aEZ1bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsNCisNCisgICAgICAgIEhhc2hUYWJs
ZSgpOw0KKyAgICAgICAgfkhhc2hUYWJsZSgpIHsgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOyBkZWFs
bG9jYXRlVGFibGUobV90YWJsZSwgbV90YWJsZVNpemUpOyB9DQorDQorICAgICAgICBIYXNoVGFi
bGUoY29uc3QgSGFzaFRhYmxlJik7DQorICAgICAgICB2b2lkIHN3YXAoSGFzaFRhYmxlJik7DQor
ICAgICAgICBIYXNoVGFibGUmIG9wZXJhdG9yPShjb25zdCBIYXNoVGFibGUmKTsNCisNCisgICAg
ICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbWFrZUl0ZXJhdG9yKG1fdGFibGUpOyB9DQor
ICAgICAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtYWtlSXRlcmF0b3IobV90YWJsZSArIG1f
dGFibGVTaXplKTsgfQ0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtYWtlQ29uc3RJdGVyYXRvcihtX3RhYmxlKTsgfQ0KKyAgICAgICAgY29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IobV90YWJsZSArIG1fdGFi
bGVTaXplKTsgfQ0KKw0KKyAgICAgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2tleUNv
dW50OyB9DQorICAgICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlU2l6
ZTsgfQ0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fa2V5Q291bnQ7
IH0NCisNCisgICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSB7IHJldHVybiBhZGQ8S2V5VHlwZSwgVmFsdWVUeXBlLCBJZGVudGl0eVRyYW5zbGF0
b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCB2YWx1ZSk7IH0NCisNCisgICAgICAg
IC8vIEEgc3BlY2lhbCB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBo
YXNoaW5nIGFuZCBjb21wYXJpbmcNCisgICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBlLCB0
byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24gaWYgdGhlIG9iamVjdCBpcyBhbHJl
YWR5DQorICAgICAgICAvLyBpbiB0aGUgdGFibGUuDQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBFeHRyYSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IHBhaXI8aXRlcmF0
b3IsIGJvb2w+IGFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7DQorDQorICAgICAgICBp
dGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmKTsNCisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZp
bmQoY29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KKyAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBL
ZXlUeXBlJikgY29uc3Q7DQorDQorICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJik7
DQorICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7DQorICAgICAgICB2b2lkIGNsZWFyKCk7
DQorDQorICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5QnVja2V0KGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkgPT0gS2V5VHJhaXRzOjpl
bXB0eVZhbHVlKCk7IH0NCisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZEJ1Y2tldChjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpID09
IEtleVRyYWl0czo6ZGVsZXRlZFZhbHVlKCk7IH0NCisgICAgICAgIHN0YXRpYyBib29sIGlzRW1w
dHlPckRlbGV0ZWRCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0
eUJ1Y2tldCh2YWx1ZSkgfHwgaXNEZWxldGVkQnVja2V0KHZhbHVlKTsgfQ0KKw0KKyAgICBwcml2
YXRlOg0KKyAgICAgICAgc3RhdGljIFZhbHVlVHlwZSogYWxsb2NhdGVUYWJsZShpbnQgc2l6ZSk7
DQorICAgICAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlVGFibGUoVmFsdWVUeXBlKiB0YWJsZSwg
aW50IHNpemUpOw0KKw0KKyAgICAgICAgdHlwZWRlZiBwYWlyPFZhbHVlVHlwZSosIGJvb2w+IExv
b2t1cFR5cGU7DQorICAgICAgICB0eXBlZGVmIHBhaXI8TG9va3VwVHlwZSwgdW5zaWduZWQ+IEZ1
bGxMb29rdXBUeXBlOw0KKw0KKyAgICAgICAgTG9va3VwVHlwZSBsb29rdXAoY29uc3QgS2V5JiBr
ZXkpIHsgcmV0dXJuIGxvb2t1cDxLZXksIElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSkuZmly
c3Q7IH0NCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xh
dG9yPiBGdWxsTG9va3VwVHlwZSBsb29rdXAoY29uc3QgVCYpOw0KKw0KKyAgICAgICAgdm9pZCBy
ZW1vdmUoVmFsdWVUeXBlKik7DQorDQorICAgICAgICBib29sIHNob3VsZEV4cGFuZCgpIGNvbnN0
IHsgcmV0dXJuIChtX2tleUNvdW50ICsgbV9kZWxldGVkQ291bnQpICogbV9tYXhMb2FkID49IG1f
dGFibGVTaXplOyB9DQorICAgICAgICBib29sIG11c3RSZWhhc2hJblBsYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICogMjsgfQ0KKyAgICAg
ICAgYm9vbCBzaG91bGRTaHJpbmsoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5M
b2FkIDwgbV90YWJsZVNpemUgJiYgbV90YWJsZVNpemUgPiBtX21pblRhYmxlU2l6ZTsgfQ0KKyAg
ICAgICAgdm9pZCBleHBhbmQoKTsNCisgICAgICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV90
YWJsZVNpemUgLyAyKTsgfQ0KKw0KKyAgICAgICAgdm9pZCByZWhhc2goaW50IG5ld1RhYmxlU2l6
ZSk7DQorICAgICAgICB2b2lkIHJlaW5zZXJ0KFZhbHVlVHlwZSYpOw0KKw0KKyAgICAgICAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkgeyAvKm5ldyAoJmJ1
Y2tldCkgVmFsdWVUeXBlKFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsqLyB9DQorICAgICAgICBzdGF0
aWMgdm9pZCBkZWxldGVCdWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpIHsgYXNzaWduRGVsZXRlZDxW
YWx1ZVR5cGUsIFRyYWl0cz4oYnVja2V0KTsgfQ0KKw0KKyAgICAgICAgRnVsbExvb2t1cFR5cGUg
bWFrZUxvb2t1cFJlc3VsdChWYWx1ZVR5cGUqIHBvc2l0aW9uLCBib29sIGZvdW5kLCB1bnNpZ25l
ZCBoYXNoKQ0KKyAgICAgICAgICAgIHsgcmV0dXJuIEZ1bGxMb29rdXBUeXBlKExvb2t1cFR5cGUo
cG9zaXRpb24sIGZvdW5kKSwgaGFzaCk7IH0NCisNCisgICAgICAgIGl0ZXJhdG9yIG1ha2VJdGVy
YXRvcihWYWx1ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxl
ICsgbV90YWJsZVNpemUpOyB9DQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVy
YXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywg
cG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9DQorDQorI2lmIENIRUNLX0hBU0hUQUJMRV9D
T05TSVNURU5DWQ0KKyAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBjb25zdDsN
CisgICAgICAgIHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0Ow0K
KyNlbHNlDQorICAgICAgICBzdGF0aWMgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSB7IH0N
CisgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7
IH0NCisjZW5kaWYNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKyAgICAgICAg
dm9pZCBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorI2Vsc2UNCisgICAgICAgIHN0YXRpYyB2b2lk
IGludmFsaWRhdGVJdGVyYXRvcnMoKSB7IH0NCisjZW5kaWYNCisNCisgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgbV9taW5UYWJsZVNpemUgPSA2NDsNCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
bV9tYXhMb2FkID0gMjsNCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbV9taW5Mb2FkID0gNjsN
CisNCisgICAgICAgIFZhbHVlVHlwZSogbV90YWJsZTsNCisgICAgICAgIGludCBtX3RhYmxlU2l6
ZTsNCisgICAgICAgIGludCBtX3RhYmxlU2l6ZU1hc2s7DQorICAgICAgICBpbnQgbV9rZXlDb3Vu
dDsNCisgICAgICAgIGludCBtX2RlbGV0ZWRDb3VudDsNCisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUw0KKyAgICBwdWJsaWM6DQorICAgICAgICBtdXRhYmxlIGNvbnN0X2l0ZXJhdG9y
KiBtX2l0ZXJhdG9yczsNCisjZW5kaWYNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgaW5s
aW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKCkNCisgICAgICAgIDogbV90YWJsZSgwKQ0KKyAgICAg
ICAgLCBtX3RhYmxlU2l6ZSgwKQ0KKyAgICAgICAgLCBtX3RhYmxlU2l6ZU1hc2soMCkNCisgICAg
ICAgICwgbV9rZXlDb3VudCgwKQ0KKyAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQ0KKyNpZiBD
SEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgICAgICAsIG1faXRlcmF0b3JzKDApDQorI2Vu
ZGlmDQorICAgIHsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4NCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6RnVsbExvb2t1cFR5cGUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpsb29rdXAoY29uc3QgVCYga2V5KQ0KKyAg
ICB7DQorICAgICAgICBhc3NlcnQobV90YWJsZSk7DQorDQorICAgICAgICB1bnNpZ25lZCBoID0g
SGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsNCisgICAgICAgIGludCBzaXplTWFzayA9IG1fdGFi
bGVTaXplTWFzazsNCisgICAgICAgIGludCBpID0gaCAmIHNpemVNYXNrOw0KKyAgICAgICAgaW50
IGsgPSAwOw0KKw0KKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUw0KKyAgICAgICAgKytIYXNoVGFi
bGVTdGF0czo6bnVtQWNjZXNzZXM7DQorICAgICAgICBpbnQgcHJvYmVDb3VudCA9IDA7DQorI2Vu
ZGlmDQorDQorICAgICAgICBWYWx1ZVR5cGUgKnRhYmxlID0gbV90YWJsZTsNCisgICAgICAgIFZh
bHVlVHlwZSAqZW50cnk7DQorICAgICAgICBWYWx1ZVR5cGUgKmRlbGV0ZWRFbnRyeSA9IDA7DQor
ICAgICAgICB3aGlsZSAoIWlzRW1wdHlCdWNrZXQoKihlbnRyeSA9IHRhYmxlICsgaSkpKSB7DQor
ICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQ0KKyAgICAgICAgICAgICAg
ICBkZWxldGVkRW50cnkgPSBlbnRyeTsNCisgICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNs
YXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpDQorICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGVudHJ5LCB0cnVlLCBoKTsNCisjaWYgRFVN
UF9IQVNIVEFCTEVfU1RBVFMNCisgICAgICAgICAgICArK3Byb2JlQ291bnQ7DQorICAgICAgICAg
ICAgSGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291bnQocHJvYmVDb3VudCk7DQor
I2VuZGlmDQorICAgICAgICAgICAgaWYgKGsgPT0gMCkNCisgICAgICAgICAgICAgICAgayA9IDEg
fCAoaCAlIHNpemVNYXNrKTsNCisgICAgICAgICAgICBpID0gKGkgKyBrKSAmIHNpemVNYXNrOw0K
KyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQoZGVsZXRlZEVu
dHJ5ID8gZGVsZXRlZEVudHJ5IDogZW50cnksIGZhbHNlLCBoKTsNCisgICAgfQ0KKw0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPg0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYSwgdHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3I+DQorICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
aXRlcmF0b3IsIGJvb2w+IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEg
JmV4dHJhKQ0KKyAgICB7DQorICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorDQorICAg
ICAgICBpZiAoIW1fdGFibGUpDQorICAgICAgICAgICAgZXhwYW5kKCk7DQorDQorICAgICAgICBj
aGVja1RhYmxlQ29uc2lzdGVuY3koKTsNCisNCisgICAgICAgIEZ1bGxMb29rdXBUeXBlIGxvb2t1
cFJlc3VsdCA9IGxvb2t1cDxULCBIYXNoVHJhbnNsYXRvcj4oa2V5KTsNCisNCisgICAgICAgIFZh
bHVlVHlwZSAqZW50cnkgPSBsb29rdXBSZXN1bHQuZmlyc3QuZmlyc3Q7DQorICAgICAgICBib29s
IGZvdW5kID0gbG9va3VwUmVzdWx0LmZpcnN0LnNlY29uZDsNCisgICAgICAgIHVuc2lnbmVkIGgg
PSBsb29rdXBSZXN1bHQuc2Vjb25kOw0KKw0KKyAgICAgICAgaWYgKGZvdW5kKQ0KKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7DQor
DQorICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpDQorICAgICAgICAgICAgLS1t
X2RlbGV0ZWRDb3VudDsNCisNCisgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVu
dHJ5LCBrZXksIGV4dHJhLCBoKTsNCisgICAgICAgICsrbV9rZXlDb3VudDsNCisNCisgICAgICAg
IGlmIChzaG91bGRFeHBhbmQoKSkgew0KKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIG1ha2Vz
IGFuIGV4dHJhIGNvcHkgb24gZXhwYW5kLiBQcm9iYWJseSBub3QgdGhhdCBiYWQgc2luY2UNCisg
ICAgICAgICAgICAvLyBleHBhbmQgaXMgcmFyZSwgYnV0IHdvdWxkIGJlIGJldHRlciB0byBoYXZl
IGEgdmVyc2lvbiBvZiBleHBhbmQgdGhhdCBjYW4NCisgICAgICAgICAgICAvLyBmb2xsb3cgYSBw
aXZvdCBlbnRyeSBhbmQgcmV0dXJuIHRoZSBuZXcgcG9zaXRpb24NCisgICAgICAgICAgICBLZXlU
eXBlIGVudGVyZWRLZXkgPSBFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KTsNCisgICAgICAgICAg
ICBleHBhbmQoKTsNCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZmluZChlbnRl
cmVkS2V5KSwgdHJ1ZSk7DQorICAgICAgICB9DQorDQorICAgICAgICBjaGVja1RhYmxlQ29uc2lz
dGVuY3koKTsNCisNCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlSXRlcmF0b3Io
ZW50cnkpLCB0cnVlKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46OnJlaW5zZXJ0KFZhbHVlVHlwZSYgZW50cnkpDQorICAgIHsNCisgICAgICAgIGFz
c2VydChtX3RhYmxlKTsNCisgICAgICAgIGFzc2VydCghbG9va3VwKEV4dHJhY3Rvcjo6ZXh0cmFj
dChlbnRyeSkpLnNlY29uZCk7DQorICAgICAgICBhc3NlcnQoIWlzRGVsZXRlZEJ1Y2tldCgqKGxv
b2t1cChFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5maXJzdCkpKTsNCisjaWYgRFVNUF9IQVNI
VEFCTEVfU1RBVFMNCisgICAgICAgICsrSGFzaFRhYmxlU3RhdHM6Om51bVJlaW5zZXJ0czsNCisj
ZW5kaWYNCisNCisgICAgICAgIE1vdmVyPFZhbHVlVHlwZSwgVHJhaXRzOjpuZWVkc0Rlc3RydWN0
aW9uPjo6bW92ZShlbnRyeSwgKihsb29rdXAoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuZmly
c3QpKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB0eXBlbmFtZSBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Oml0
ZXJhdG9yIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBLZXkmIGtleSkNCisgICAgew0KKyAgICAgICAg
aWYgKCFtX3RhYmxlKQ0KKyAgICAgICAgICAgIHJldHVybiBlbmQoKTsNCisNCisgICAgICAgIExv
b2t1cFR5cGUgcmVzdWx0ID0gbG9va3VwKGtleSk7DQorICAgICAgICBpZiAoIXJlc3VsdC5zZWNv
bmQpDQorICAgICAgICAgICAgcmV0dXJuIGVuZCgpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VJdGVy
YXRvcihyZXN1bHQuZmlyc3QpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHR5cGVuYW1l
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPjo6Y29uc3RfaXRlcmF0b3IgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IEtleSYga2V5
KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAgICAgICAgcmV0
dXJuIGVuZCgpOw0KKw0KKyAgICAgICAgTG9va3VwVHlwZSByZXN1bHQgPSBjb25zdF9jYXN0PEhh
c2hUYWJsZSAqPih0aGlzKS0+bG9va3VwKGtleSk7DQorICAgICAgICBpZiAoIXJlc3VsdC5zZWNv
bmQpDQorICAgICAgICAgICAgcmV0dXJuIGVuZCgpOw0KKyAgICAgICAgcmV0dXJuIG1ha2VDb25z
dEl0ZXJhdG9yKHJlc3VsdC5maXJzdCk7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgYm9v
bCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz46OmNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QNCisgICAgew0K
KyAgICAgICAgaWYgKCFtX3RhYmxlKQ0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCisNCisg
ICAgICAgIHJldHVybiBjb25zdF9jYXN0PEhhc2hUYWJsZSAqPih0aGlzKS0+bG9va3VwKGtleSku
c2Vjb25kOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1v
dmUoVmFsdWVUeXBlKiBwb3MpDQorICAgIHsNCisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMo
KTsNCisgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KKw0KKyNpZiBEVU1QX0hBU0hU
QUJMRV9TVEFUUw0KKyAgICAgICAgKytIYXNoVGFibGVTdGF0czo6bnVtUmVtb3ZlczsNCisjZW5k
aWYNCisNCisgICAgICAgIGRlbGV0ZUJ1Y2tldCgqcG9zKTsNCisgICAgICAgICsrbV9kZWxldGVk
Q291bnQ7DQorICAgICAgICAtLW1fa2V5Q291bnQ7DQorDQorICAgICAgICBpZiAoc2hvdWxkU2hy
aW5rKCkpDQorICAgICAgICAgICAgc2hyaW5rKCk7DQorDQorICAgICAgICBjaGVja1RhYmxlQ29u
c2lzdGVuY3koKTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICBpbmxpbmUgdm9pZCBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OnJlbW92ZShpdGVyYXRvciBpdCkNCisgICAgew0KKyAgICAgICAgaWYgKGl0ID09IGVu
ZCgpKQ0KKyAgICAgICAgICAgIHJldHVybjsNCisNCisgICAgICAgIHJlbW92ZShjb25zdF9jYXN0
PFZhbHVlVHlwZSo+KGl0Lm1faXRlcmF0b3IubV9wb3NpdGlvbikpOw0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+DQorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUm
IGtleSkNCisgICAgew0KKyAgICAgICAgcmVtb3ZlKGZpbmQoa2V5KSk7DQorICAgIH0NCisNCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4NCisgICAgVmFsdWUgKkhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWxsb2NhdGVUYWJsZShpbnQgc2l6ZSkN
CisgICAgew0KKyAgICAgICAgLy8gd291bGQgdXNlIGEgdGVtcGxhdGUgbWVtYmVyIGZ1bmN0aW9u
IHdpdGggZXhwbGljaXQgc3BlY2lhbGl6YXRpb25zIGhlcmUsIGJ1dA0KKyAgICAgICAgLy8gZ2Nj
IGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQgdGhhdA0KKyAgICAgICAgaWYgKFRyYWl0czo6ZW1w
dHlWYWx1ZUlzWmVybykNCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWVUeXBl
ICo+KEtKUzo6a2pzX2Zhc3RfY2FsbG9jKHNpemUsIHNpemVvZihWYWx1ZVR5cGUpKSk7DQorICAg
ICAgICBWYWx1ZVR5cGUqIHJlc3VsdCA9IHN0YXRpY19jYXN0PFZhbHVlVHlwZSo+KEtKUzo6a2pz
X2Zhc3RfbWFsbG9jKHNpemUgKiBzaXplb2YoVmFsdWVUeXBlKSkpOw0KKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzaXplOyBpKyspDQorICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldChy
ZXN1bHRbaV0pOw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZGVhbGxvY2F0ZVRhYmxlKFZhbHVlVHlwZSAqdGFibGUs
IGludCBzaXplKQ0KKyAgICB7DQorICAgICAgICBpZiAoVHJhaXRzOjpuZWVkc0Rlc3RydWN0aW9u
KQ0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQ0KKyAgICAgICAg
ICAgICAgICB0YWJsZVtpXS5+VmFsdWVUeXBlKCk7DQorICAgICAgICBLSlM6Omtqc19mYXN0X2Zy
ZWUodGFibGUpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpl
eHBhbmQoKQ0KKyAgICB7DQorICAgICAgICBpbnQgbmV3U2l6ZTsNCisgICAgICAgIGlmIChtX3Rh
YmxlU2l6ZSA9PSAwKQ0KKyAgICAgICAgICAgIG5ld1NpemUgPSBtX21pblRhYmxlU2l6ZTsNCisg
ICAgICAgIGVsc2UgaWYgKG11c3RSZWhhc2hJblBsYWNlKCkpDQorICAgICAgICAgICAgbmV3U2l6
ZSA9IG1fdGFibGVTaXplOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIG5ld1NpemUgPSBt
X3RhYmxlU2l6ZSAqIDI7DQorDQorICAgICAgICByZWhhc2gobmV3U2l6ZSk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlaGFzaChpbnQgbmV3VGFibGVTaXpl
KQ0KKyAgICB7DQorICAgICAgICBjaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCk7DQor
DQorICAgICAgICBpbnQgb2xkVGFibGVTaXplID0gbV90YWJsZVNpemU7DQorICAgICAgICBWYWx1
ZVR5cGUgKm9sZFRhYmxlID0gbV90YWJsZTsNCisNCisjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMN
CisgICAgICAgIGlmIChvbGRUYWJsZVNpemUgIT0gMCkNCisgICAgICAgICAgICArK0hhc2hUYWJs
ZVN0YXRzOjpudW1SZWhhc2hlczsNCisjZW5kaWYNCisNCisgICAgICAgIG1fdGFibGVTaXplID0g
bmV3VGFibGVTaXplOw0KKyAgICAgICAgbV90YWJsZVNpemVNYXNrID0gbmV3VGFibGVTaXplIC0g
MTsNCisgICAgICAgIG1fdGFibGUgPSBhbGxvY2F0ZVRhYmxlKG5ld1RhYmxlU2l6ZSk7DQorDQor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBvbGRUYWJsZVNpemU7ICsraSkNCisgICAgICAg
ICAgICBpZiAoIWlzRW1wdHlPckRlbGV0ZWRCdWNrZXQob2xkVGFibGVbaV0pKQ0KKyAgICAgICAg
ICAgICAgICByZWluc2VydChvbGRUYWJsZVtpXSk7DQorDQorICAgICAgICBtX2RlbGV0ZWRDb3Vu
dCA9IDA7DQorDQorICAgICAgICBkZWFsbG9jYXRlVGFibGUob2xkVGFibGUsIG9sZFRhYmxlU2l6
ZSk7DQorDQorICAgICAgICBjaGVja1RhYmxlQ29uc2lzdGVuY3koKTsNCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7DQorICAgICAgICBkZWFsbG9jYXRlVGFibGUobV90YWJsZSwg
bV90YWJsZVNpemUpOw0KKyAgICAgICAgbV90YWJsZSA9IDA7DQorICAgICAgICBtX3RhYmxlU2l6
ZSA9IDA7DQorICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSAwOw0KKyAgICAgICAgbV9rZXlDb3Vu
dCA9IDA7DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUo
Y29uc3QgSGFzaFRhYmxlJiBvdGhlcikNCisgICAgICAgIDogbV90YWJsZSgwKQ0KKyAgICAgICAg
LCBtX3RhYmxlU2l6ZSgwKQ0KKyAgICAgICAgLCBtX3RhYmxlU2l6ZU1hc2soMCkNCisgICAgICAg
ICwgbV9rZXlDb3VudCgwKQ0KKyAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQ0KKyNpZiBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTDQorICAgICAgICAsIG1faXRlcmF0b3JzKDApDQorI2VuZGlm
DQorICAgIHsNCisgICAgICAgIC8vIENvcHkgdGhlIGhhc2ggdGFibGUgdGhlIGR1bWIgd2F5LCBi
eSBhZGRpbmcgZWFjaCBlbGVtZW50IHRvIHRoZSBuZXcgdGFibGUuDQorICAgICAgICAvLyBJdCBt
aWdodCBiZSBtb3JlIGVmZmljaWVudCB0byBjb3B5IHRoZSB0YWJsZSBzbG90cywgYnV0IGl0J3Mg
bm90IGNsZWFyIHRoYXQgZWZmaWNpZW5jeSBpcyBuZWVkZWQuDQorICAgICAgICBjb25zdF9pdGVy
YXRvciBlbmQgPSBvdGhlci5lbmQoKTsNCisgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXQg
PSBvdGhlci5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpDQorICAgICAgICAgICAgYWRkKCppdCk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnN3YXAoSGFzaFRh
YmxlJiBvdGhlcikNCisgICAgew0KKyAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KKyAg
ICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KKw0KKyAgICAgICAgVmFsdWVUeXBl
ICp0bXBfdGFibGUgPSBtX3RhYmxlOw0KKyAgICAgICAgbV90YWJsZSA9IG90aGVyLm1fdGFibGU7
DQorICAgICAgICBvdGhlci5tX3RhYmxlID0gdG1wX3RhYmxlOw0KKw0KKyAgICAgICAgaW50IHRt
cF90YWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsNCisgICAgICAgIG1fdGFibGVTaXplID0gb3RoZXIu
bV90YWJsZVNpemU7DQorICAgICAgICBvdGhlci5tX3RhYmxlU2l6ZSA9IHRtcF90YWJsZVNpemU7
DQorDQorICAgICAgICBpbnQgdG1wX3RhYmxlU2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7DQor
ICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBvdGhlci5tX3RhYmxlU2l6ZU1hc2s7DQorICAgICAg
ICBvdGhlci5tX3RhYmxlU2l6ZU1hc2sgPSB0bXBfdGFibGVTaXplTWFzazsNCisNCisgICAgICAg
IGludCB0bXBfa2V5Q291bnQgPSBtX2tleUNvdW50Ow0KKyAgICAgICAgbV9rZXlDb3VudCA9IG90
aGVyLm1fa2V5Q291bnQ7DQorICAgICAgICBvdGhlci5tX2tleUNvdW50ID0gdG1wX2tleUNvdW50
Ow0KKw0KKyAgICAgICAgaW50IHRtcF9kZWxldGVkQ291bnQgPSBtX2RlbGV0ZWRDb3VudDsNCisg
ICAgICAgIG1fZGVsZXRlZENvdW50ID0gb3RoZXIubV9kZWxldGVkQ291bnQ7DQorICAgICAgICBv
dGhlci5tX2RlbGV0ZWRDb3VudCA9IHRtcF9kZWxldGVkQ291bnQ7DQorICAgIH0NCisNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4NCisgICAgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+JiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJhdG9yPShjb25zdCBIYXNoVGFi
bGUmIG90aGVyKQ0KKyAgICB7DQorICAgICAgICBIYXNoVGFibGUgdG1wKG90aGVyKTsNCisgICAg
ICAgIHN3YXAodG1wKTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKw0KKyNpZiBD
SEVDS19IQVNIVEFCTEVfQ09OU0lTVEVOQ1kNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCisgICAgdm9pZCBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsNCisgICAgICAgIGFzc2VydCghc2hvdWxk
RXhwYW5kKCkpOw0KKyAgICAgICAgYXNzZXJ0KCFzaG91bGRTaHJpbmsoKSk7DQorICAgIH0NCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4NCisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeUV4
Y2VwdFNpemUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIW1fdGFibGUpDQorICAgICAg
ICAgICAgcmV0dXJuOw0KKw0KKyAgICAgICAgaW50IGNvdW50ID0gMDsNCisgICAgICAgIGludCBk
ZWxldGVkQ291bnQgPSAwOw0KKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3RhYmxlU2l6
ZTsgKytqKSB7DQorICAgICAgICAgICAgVmFsdWVUeXBlICplbnRyeSA9IG1fdGFibGUgKyBqOw0K
KyAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpDQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOw0KKw0KKyAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkg
ew0KKyAgICAgICAgICAgICAgICArK2RlbGV0ZWRDb3VudDsNCisgICAgICAgICAgICAgICAgY29u
dGludWU7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0
ID0gZmluZChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSk7DQorICAgICAgICAgICAgYXNzZXJ0
KGVudHJ5ID09IGl0Lm1fcG9zaXRpb24pOw0KKyAgICAgICAgICAgICsrY291bnQ7DQorICAgICAg
ICB9DQorDQorICAgICAgICBhc3NlcnQoY291bnQgPT0gbV9rZXlDb3VudCk7DQorICAgICAgICBh
c3NlcnQoZGVsZXRlZENvdW50ID09IG1fZGVsZXRlZENvdW50KTsNCisgICAgICAgIGFzc2VydCht
X3RhYmxlU2l6ZSA+PSBtX21pblRhYmxlU2l6ZSk7DQorICAgICAgICBhc3NlcnQobV90YWJsZVNp
emVNYXNrKTsNCisgICAgICAgIGFzc2VydChtX3RhYmxlU2l6ZSA9PSBtX3RhYmxlU2l6ZU1hc2sg
KyAxKTsNCisgICAgfQ0KKw0KKyNlbmRpZiAvLyBDSEVDS19IQVNIVEFCTEVfQ09OU0lTVEVOQ1kN
CisNCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6aW52YWxpZGF0ZUl0ZXJhdG9ycygpDQorICAgIHsNCisgICAgICAgIGNv
bnN0X2l0ZXJhdG9yKiBuZXh0Ow0KKyAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciogcCA9IG1f
aXRlcmF0b3JzOyBwOyBwID0gbmV4dCkgew0KKyAgICAgICAgICAgIG5leHQgPSBwLT5tX25leHQ7
DQorICAgICAgICAgICAgcC0+bV90YWJsZSA9IDA7DQorICAgICAgICAgICAgcC0+bV9uZXh0ID0g
MDsNCisgICAgICAgICAgICBwLT5tX3ByZXZpb3VzID0gMDsNCisgICAgICAgIH0NCisgICAgICAg
IG1faXRlcmF0b3JzID0gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIGFkZEl0
ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPiogdGFibGUsDQorICAgICAgICBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+KiBpdCkNCisgICAgew0KKyAgICAgICAgaXQtPm1fdGFibGUgPSB0YWJsZTsNCisgICAg
ICAgIGl0LT5tX3ByZXZpb3VzID0gMDsNCisNCisgICAgICAgIC8vIEluc2VydCBpdGVyYXRvciBh
dCBoZWFkIG9mIGRvdWJseS1saW5rZWQgbGlzdCBvZiBpdGVyYXRvcnMuDQorICAgICAgICBpZiAo
IXRhYmxlKSB7DQorICAgICAgICAgICAgaXQtPm1fbmV4dCA9IDA7DQorICAgICAgICB9IGVsc2Ug
ew0KKyAgICAgICAgICAgIGFzc2VydCh0YWJsZS0+bV9pdGVyYXRvcnMgIT0gaXQpOw0KKyAgICAg
ICAgICAgIGl0LT5tX25leHQgPSB0YWJsZS0+bV9pdGVyYXRvcnM7DQorICAgICAgICAgICAgdGFi
bGUtPm1faXRlcmF0b3JzID0gaXQ7DQorICAgICAgICAgICAgaWYgKGl0LT5tX25leHQpIHsNCisg
ICAgICAgICAgICAgICAgYXNzZXJ0KCFpdC0+bV9uZXh0LT5tX3ByZXZpb3VzKTsNCisgICAgICAg
ICAgICAgICAgaXQtPm1fbmV4dC0+bV9wcmV2aW91cyA9IGl0Ow0KKyAgICAgICAgICAgIH0NCisg
ICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KKyAgICB2b2lkIHJlbW92ZUl0ZXJhdG9y
KEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQ0KKyAgICB7DQorICAgICAgICB0eXBlZGVmIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPiBIYXNoVGFibGVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KKw0KKyAgICAgICAgLy8gRGVsZXRlIGl0ZXJhdG9yIGZy
b20gZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGl0ZXJhdG9ycy4NCisgICAgICAgIGlmICghaXQtPm1f
dGFibGUpIHsNCisgICAgICAgICAgICBhc3NlcnQoIWl0LT5tX25leHQpOw0KKyAgICAgICAgICAg
IGFzc2VydCghaXQtPm1fcHJldmlvdXMpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAg
ICBpZiAoaXQtPm1fbmV4dCkgew0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXQtPm1fbmV4dC0+
bV9wcmV2aW91cyA9PSBpdCk7DQorICAgICAgICAgICAgICAgIGl0LT5tX25leHQtPm1fcHJldmlv
dXMgPSBpdC0+bV9wcmV2aW91czsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGl0
LT5tX3ByZXZpb3VzKSB7DQorICAgICAgICAgICAgICAgIGFzc2VydChpdC0+bV90YWJsZS0+bV9p
dGVyYXRvcnMgIT0gaXQpOw0KKyAgICAgICAgICAgICAgICBhc3NlcnQoaXQtPm1fcHJldmlvdXMt
Pm1fbmV4dCA9PSBpdCk7DQorICAgICAgICAgICAgICAgIGl0LT5tX3ByZXZpb3VzLT5tX25leHQg
PSBpdC0+bV9uZXh0Ow0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGFz
c2VydChpdC0+bV90YWJsZS0+bV9pdGVyYXRvcnMgPT0gaXQpOw0KKyAgICAgICAgICAgICAgICBp
dC0+bV90YWJsZS0+bV9pdGVyYXRvcnMgPSBpdC0+bV9uZXh0Ow0KKyAgICAgICAgICAgIH0NCisg
ICAgICAgIH0NCisNCisgICAgICAgIGl0LT5tX3RhYmxlID0gMDsNCisgICAgICAgIGl0LT5tX25l
eHQgPSAwOw0KKyAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOw0KKyAgICB9DQorDQorI2VuZGlm
IC8vIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMNCisNCisgICAgLy8gaXRlcmF0b3IgYWRhcHRl
cnMNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFs
dWVUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIgew0KKyAgICAgICAg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgdHlwZW5hbWUgSGFzaFRhYmxlVHlw
ZTo6Y29uc3RfaXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9DQorDQorICAgICAgICBj
b25zdCBWYWx1ZVR5cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBWYWx1ZVR5cGUqKW1f
aW1wbC5nZXQoKTsgfQ0KKyAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqZ2V0KCk7IH0NCisgICAgICAgIGNvbnN0IFZhbHVlVHlwZSogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9DQorDQorICAgICAgICBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQ0K
KyAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQNCisNCisgICAgICAg
IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yIG1faW1wbDsNCisgICAgfTsN
CisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVU
eXBlPiBzdHJ1Y3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyIHsNCisgICAgICAgIEhhc2hUYWJs
ZUl0ZXJhdG9yQWRhcHRlcihjb25zdCB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjppdGVyYXRvciYg
aW1wbCkgOiBtX2ltcGwoaW1wbCkge30NCisNCisgICAgICAgIFZhbHVlVHlwZSogZ2V0KCkgY29u
c3QgeyByZXR1cm4gKFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9DQorICAgICAgICBWYWx1ZVR5
cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KKyAgICAgICAgVmFsdWVU
eXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0NCisNCisgICAgICAgIEhh
c2hUYWJsZUl0ZXJhdG9yQWRhcHRlciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAq
dGhpczsgfQ0KKyAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQNCisN
CisgICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJs
ZVR5cGUsIFZhbHVlVHlwZT4oKSB7DQorICAgICAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlw
ZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1faW1wbDsNCisgICAgICAgICAgICByZXR1cm4gaTsNCisg
ICAgICAgIH0NCisNCisgICAgICAgIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yIG1f
aW1wbDsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4N
CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
QWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwg
VT4mIGIpDQorICAgIHsNCisgICAgICAgIHJldHVybiBhLm1faW1wbCA9PSBiLm1faW1wbDsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KKyAgICBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQs
IFU+JiBhLCBjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQorICAgIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBI
YXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQorICAgIHsNCisgICAgICAgIHJldHVy
biBhLm1faW1wbCA9PSBiLm1faW1wbDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPg0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hU
YWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFw
dGVyPFQsIFU+JiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2lt
cGw7DQorICAgIH0NCisNCisgICAgLy8gcmVmZXJlbmNlIGNvdW50IG1hbmFnZXINCisNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0
cz4gc3RydWN0IE5lZWRzUmVmIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
VmFsdWVUcmFpdHM6Om5lZWRzUmVmICYmICFWYWx1ZVN0b3JhZ2VUcmFpdHM6Om5lZWRzUmVmOw0K
KyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0cywgdHlwZW5hbWUgU2Vj
b25kVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VUcmFpdHM+DQorICAgIHN0cnVjdCBOZWVk
c1JlZjxQYWlyQmFzZUhhc2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4sIFZhbHVl
U3RvcmFnZVRyYWl0cz4gew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0b3JhZ2VU
cmFpdHM6OkZpcnN0VHJhaXRzIEZpcnN0U3RvcmFnZVRyYWl0czsNCisgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzOjpTZWNvbmRUcmFpdHMgU2Vjb25kU3RvcmFnZVRy
YWl0czsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGZpcnN0TmVlZHNSZWYgPSBOZWVkc1Jl
ZjxGaXJzdFRyYWl0cywgRmlyc3RTdG9yYWdlVHJhaXRzPjo6dmFsdWU7DQorICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzZWNvbmROZWVkc1JlZiA9IE5lZWRzUmVmPFNlY29uZFRyYWl0cywgU2Vj
b25kU3RvcmFnZVRyYWl0cz46OnZhbHVlOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSBmaXJzdE5lZWRzUmVmIHx8IHNlY29uZE5lZWRzUmVmOw0KKyAgICB9Ow0KKw0KKyAgICB0
ZW1wbGF0ZTxib29sIG5lZWRzUmVmLCB0eXBlbmFtZSBWYWx1ZVRyYWl0cz4gc3RydWN0IFJlZkNv
dW50ZXJCYXNlOw0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cz4NCisgICAg
c3RydWN0IFJlZkNvdW50ZXJCYXNlPGZhbHNlLCBWYWx1ZVRyYWl0cz4gew0KKyAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6VHJhaXRUeXBlIFZhbHVlVHlwZTsNCisgICAgICAg
IHN0YXRpYyB2b2lkIHJlZihjb25zdCBWYWx1ZVR5cGUmKSB7IH0NCisgICAgICAgIHN0YXRpYyB2
b2lkIGRlcmVmKGNvbnN0IFZhbHVlVHlwZSYpIHsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cz4NCisgICAgc3RydWN0IFJlZkNvdW50ZXJCYXNlPHRydWUs
IFZhbHVlVHJhaXRzPiB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpU
cmFpdFR5cGUgVmFsdWVUeXBlOw0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVmKGNvbnN0IFZhbHVl
VHlwZSYgdikgeyBWYWx1ZVRyYWl0czo6cmVmKCooY29uc3QgVmFsdWVUeXBlKikmdik7IH0NCisg
ICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmKGNvbnN0IFZhbHVlVHlwZSYgdikgeyBWYWx1ZVRyYWl0
czo6ZGVyZWYoKihjb25zdCBWYWx1ZVR5cGUqKSZ2KTsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRzPiBz
dHJ1Y3QgUmVmQ291bnRlciB7DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRz
OjpUcmFpdFR5cGUgVmFsdWVUeXBlOw0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVN0
b3JhZ2VUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVN0b3JhZ2VUeXBlOw0KKyAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgbmVlZHNSZWYgPSBOZWVkc1JlZjxWYWx1ZVRyYWl0cywgVmFsdWVTdG9yYWdl
VHJhaXRzPjo6dmFsdWU7DQorICAgICAgICB0eXBlZGVmIFJlZkNvdW50ZXJCYXNlPG5lZWRzUmVm
LCBWYWx1ZVRyYWl0cz4gQmFzZTsNCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZihjb25zdCBWYWx1
ZVN0b3JhZ2VUeXBlJiB2KSB7IEJhc2U6OnJlZigqKGNvbnN0IFZhbHVlVHlwZSopJnYpOyB9DQor
ICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZihjb25zdCBWYWx1ZVN0b3JhZ2VUeXBlJiB2KSB7IEJh
c2U6OmRlcmVmKCooY29uc3QgVmFsdWVUeXBlKikmdik7IH0NCisgICAgfTsNCisNCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRmlyc3RUcmFpdHMsIHR5cGVuYW1lIFNlY29uZFRyYWl0cywgdHlwZW5h
bWUgVmFsdWVTdG9yYWdlVHJhaXRzPg0KKyAgICBzdHJ1Y3QgUmVmQ291bnRlcjxQYWlyQmFzZUhh
c2hUcmFpdHM8Rmlyc3RUcmFpdHMsIFNlY29uZFRyYWl0cz4sIFZhbHVlU3RvcmFnZVRyYWl0cz4g
ew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGaXJzdFRyYWl0czo6VHJhaXRUeXBlIEZpcnN0
VHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGUg
U2Vjb25kVHlwZTsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVTdG9yYWdlVHJhaXRz
OjpGaXJzdFRyYWl0cyBGaXJzdFN0b3JhZ2VUcmFpdHM7DQorICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6U2Vjb25kVHJhaXRzIFNlY29uZFN0b3JhZ2VUcmFpdHM7
DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlU3RvcmFnZVRyYWl0czo6VHJhaXRUeXBl
IFZhbHVlU3RvcmFnZVR5cGU7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBmaXJzdE5lZWRz
UmVmID0gTmVlZHNSZWY8Rmlyc3RUcmFpdHMsIEZpcnN0U3RvcmFnZVRyYWl0cz46OnZhbHVlOw0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Vjb25kTmVlZHNSZWYgPSBOZWVkc1JlZjxTZWNv
bmRUcmFpdHMsIFNlY29uZFN0b3JhZ2VUcmFpdHM+Ojp2YWx1ZTsNCisgICAgICAgIHR5cGVkZWYg
UmVmQ291bnRlckJhc2U8Zmlyc3ROZWVkc1JlZiwgRmlyc3RUcmFpdHM+IEZpcnN0QmFzZTsNCisg
ICAgICAgIHR5cGVkZWYgUmVmQ291bnRlckJhc2U8c2Vjb25kTmVlZHNSZWYsIFNlY29uZFRyYWl0
cz4gU2Vjb25kQmFzZTsNCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZihjb25zdCBWYWx1ZVN0b3Jh
Z2VUeXBlJiB2KSB7DQorICAgICAgICAgICAgRmlyc3RCYXNlOjpyZWYoKihjb25zdCBGaXJzdFR5
cGUqKSZ2LmZpcnN0KTsNCisgICAgICAgICAgICBTZWNvbmRCYXNlOjpyZWYoKihjb25zdCBTZWNv
bmRUeXBlKikmdi5zZWNvbmQpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVy
ZWYoY29uc3QgVmFsdWVTdG9yYWdlVHlwZSYgdikgew0KKyAgICAgICAgICAgIEZpcnN0QmFzZTo6
ZGVyZWYoKihjb25zdCBGaXJzdFR5cGUqKSZ2LmZpcnN0KTsNCisgICAgICAgICAgICBTZWNvbmRC
YXNlOjpkZXJlZigqKGNvbnN0IFNlY29uZFR5cGUqKSZ2LnNlY29uZCk7DQorICAgICAgICB9DQor
ICAgIH07DQorDQorICAgIHRlbXBsYXRlPGJvb2wgbmVlZHNSZWYsIHR5cGVuYW1lIEhhc2hUYWJs
ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzPiBzdHJ1Y3QgSGFzaFRhYmxlUmVmQ291bnRlckJh
c2U7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZh
bHVlVHJhaXRzPg0KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlUmVmQ291bnRlckJhc2U8ZmFsc2UsIEhh
c2hUYWJsZVR5cGUsIFZhbHVlVHJhaXRzPg0KKyAgICB7DQorICAgICAgICBzdGF0aWMgdm9pZCBy
ZWZBbGwoSGFzaFRhYmxlVHlwZSYpIHsgfQ0KKyAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZBbGwo
SGFzaFRhYmxlVHlwZSYpIHsgfQ0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVRyYWl0cz4NCisgICAgc3RydWN0IEhhc2hUYWJs
ZVJlZkNvdW50ZXJCYXNlPHRydWUsIEhhc2hUYWJsZVR5cGUsIFZhbHVlVHJhaXRzPg0KKyAgICB7
DQorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yIGl0ZXJh
dG9yOw0KKyAgICAgICAgdHlwZWRlZiBSZWZDb3VudGVyPFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBI
YXNoVGFibGVUeXBlOjpWYWx1ZVRyYWl0cz4gVmFsdWVSZWZDb3VudGVyOw0KKyAgICAgICAgc3Rh
dGljIHZvaWQgcmVmQWxsKEhhc2hUYWJsZVR5cGUmKTsNCisgICAgICAgIHN0YXRpYyB2b2lkIGRl
cmVmQWxsKEhhc2hUYWJsZVR5cGUmKTsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+DQorICAgIHZvaWQgSGFzaFRh
YmxlUmVmQ291bnRlckJhc2U8dHJ1ZSwgSGFzaFRhYmxlVHlwZSwgVmFsdWVUcmFpdHM+OjpyZWZB
bGwoSGFzaFRhYmxlVHlwZSYgdGFibGUpDQorICAgIHsNCisgICAgICAgIGl0ZXJhdG9yIGVuZCA9
IHRhYmxlLmVuZCgpOw0KKyAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHRhYmxlLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkNCisgICAgICAgICAgICBWYWx1ZVJlZkNvdW50ZXI6OnJlZigqaXQp
Ow0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVu
YW1lIFZhbHVlVHJhaXRzPg0KKyAgICB2b2lkIEhhc2hUYWJsZVJlZkNvdW50ZXJCYXNlPHRydWUs
IEhhc2hUYWJsZVR5cGUsIFZhbHVlVHJhaXRzPjo6ZGVyZWZBbGwoSGFzaFRhYmxlVHlwZSYgdGFi
bGUpDQorICAgIHsNCisgICAgICAgIGl0ZXJhdG9yIGVuZCA9IHRhYmxlLmVuZCgpOw0KKyAgICAg
ICAgZm9yIChpdGVyYXRvciBpdCA9IHRhYmxlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkNCisg
ICAgICAgICAgICBWYWx1ZVJlZkNvdW50ZXI6OmRlcmVmKCppdCk7DQorICAgIH0NCisNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM+IHN0
cnVjdCBIYXNoVGFibGVSZWZDb3VudGVyIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5l
ZWRzUmVmID0gTmVlZHNSZWY8VmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZh
bHVlVHJhaXRzPjo6dmFsdWU7DQorICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZVJlZkNvdW50ZXJC
YXNlPG5lZWRzUmVmLCBIYXNoVGFibGVUeXBlLCBWYWx1ZVRyYWl0cz4gQmFzZTsNCisgICAgICAg
IHN0YXRpYyB2b2lkIHJlZkFsbChIYXNoVGFibGVUeXBlJiB0YWJsZSkgeyBCYXNlOjpyZWZBbGwo
dGFibGUpOyB9DQorICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZkFsbChIYXNoVGFibGVUeXBlJiB0
YWJsZSkgeyBCYXNlOjpkZXJlZkFsbCh0YWJsZSk7IH0NCisgICAgfTsNCisNCit9IC8vIG5hbWVz
cGFjZSBXVEYNCisNCisjZW5kaWYgLy8gS1hNTENPUkVfSEFTSF9UQUJMRV9IDQpJbmRleDogSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvSGFzaFRyYWl0cy5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvSGFzaFRyYWl0cy5oCShyZXZpc2lvbiAwKQ0KKysrIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL0hhc2hUcmFpdHMuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTk1
IEBADQorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotDQorLyoNCisgKiBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcw0KKyAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyDQorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQ0KKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
Lg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvDQorICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwNCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4NCisgKg0KKyAqLw0KKw0KKyNp
Zm5kZWYgS1hNTENPUkVfSEFTSF9UUkFJVFNfSA0KKyNkZWZpbmUgS1hNTENPUkVfSEFTSF9UUkFJ
VFNfSA0KKw0KKyNpbmNsdWRlICJIYXNoRnVuY3Rpb25zLmgiDQorI2luY2x1ZGUgPHV0aWxpdHk+
DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIHVzaW5nIHN0ZDo6cGFpcjsNCisgICAgdXNp
bmcgc3RkOjptYWtlX3BhaXI7DQorDQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
c0ludGVnZXIgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsN
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGJvb2w+ICAgICAgICAgICAgICAgeyBz
dGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0
IElzSW50ZWdlcjxjaGFyPiAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUg
PSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8c2lnbmVkIGNoYXI+
ICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGNoYXI+ICAgICAgeyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxz
aG9ydD4gICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0K
KyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgc2hvcnQ+ICAgICB7IHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
SXNJbnRlZ2VyPGludD4gICAgICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9
IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBpbnQ+
ICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBJc0ludGVnZXI8bG9uZz4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBi
b29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVu
c2lnbmVkIGxvbmc+ICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxsb25nIGxvbmc+ICAgICAgICAgIHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJ
c0ludGVnZXI8dW5zaWduZWQgbG9uZyBsb25nPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
dHJ1ZTsgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7
DQorDQorICAgIHRlbXBsYXRlPGJvb2wgaXNJbnRlZ2VyLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgR2Vu
ZXJpY0hhc2hUcmFpdHNCYXNlOw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2Vu
ZXJpY0hhc2hUcmFpdHNCYXNlPHRydWUsIFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUcmFpdFR5
cGU7DQorICAgICAgICB0eXBlZGVmIEhhc2hUcmFpdHM8dHlwZW5hbWUgSW50VHlwZXM8c2l6ZW9m
KFQpPjo6U2lnbmVkVHlwZT4gU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
bmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOw0KKyAgICB9Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHNCYXNlPGZhbHNlLCBUPiB7DQorICAgICAgICB0
eXBlZGVmIFQgVHJhaXRUeXBlOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPFQ+IFN0b3Jh
Z2VUcmFpdHM7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0g
ZmFsc2U7DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsNCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEdlbmVyaWNI
YXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHNCYXNlPElzSW50ZWdlcjxUPjo6dmFsdWUsIFQ+
IHsNCisgICAgICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBUKCk7IH0NCisgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzUmVmID0gZmFsc2U7DQorICAgIH07DQorDQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFp
dHM8VD4geyB9Ow0KKw0KKyAgICAvLyBzaWduZWQgaW50ZWdlciB0cmFpdHMgbWF5IG5vdCBiZSBh
cHByb3ByaWF0ZSBmb3IgYWxsIHVzZXMgc2luY2UgdGhleSBkaXNhbGxvdyAwIGFuZCAtMSBhcyBr
ZXlzDQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8c2lnbmVkIGNoYXI+IDogR2Vu
ZXJpY0hhc2hUcmFpdHM8aW50PiB7DQorICAgICAgICBzdGF0aWMgc2lnbmVkIGNoYXIgZGVsZXRl
ZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisgICAgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxzaG9ydD4gOiBHZW5lcmljSGFzaFRyYWl0czxpbnQ+IHsNCisgICAgICAgIHN0
YXRpYyBzaG9ydCBkZWxldGVkVmFsdWUoKSB7IHJldHVybiAtMTsgfQ0KKyAgICB9Ow0KKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPGludD4gOiBHZW5lcmljSGFzaFRyYWl0czxpbnQ+
IHsNCisgICAgICAgIHN0YXRpYyBpbnQgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisg
ICAgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxsb25nPiA6IEdlbmVyaWNI
YXNoVHJhaXRzPGxvbmc+IHsNCisgICAgICAgIHN0YXRpYyBsb25nIGRlbGV0ZWRWYWx1ZSgpIHsg
cmV0dXJuIC0xOyB9DQorICAgIH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
bG9uZyBsb25nPiA6IEdlbmVyaWNIYXNoVHJhaXRzPGxvbmcgbG9uZz4gew0KKyAgICAgICAgc3Rh
dGljIGxvbmcgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gLTE7IH0NCisgICAgfTsNCisNCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8UCo+IDogR2VuZXJpY0hhc2hU
cmFpdHM8UCo+IHsNCisgICAgICAgIHR5cGVkZWYgSGFzaFRyYWl0czx0eXBlbmFtZSBJbnRUeXBl
czxzaXplb2YoUCopPjo6U2lnbmVkVHlwZT4gU3RvcmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRp
YyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOw0KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOw0KKyAgICAgICAgc3RhdGljIFAqIGRl
bGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UCo+KC0xKTsgfQ0KKyAgICB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWZQdHI8
UD4gPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFJlZlB0cjxQPiA+IHsNCisgICAgICAgIHR5cGVkZWYg
SGFzaFRyYWl0czx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoUCopPjo6U2lnbmVkVHlwZT4gU3Rv
cmFnZVRyYWl0czsNCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8g
PSB0cnVlOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNSZWYgPSB0cnVlOw0KKyAg
ICAgICAgc3RhdGljIHZvaWQgcmVmKGNvbnN0IFJlZlB0cjxQPiYgcCkgeyBpZiAocCkgcC0+cmVm
KCk7IH0NCisgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmKGNvbnN0IFJlZlB0cjxQPiYgcCkgeyBp
ZiAocCkgcC0+ZGVyZWYoKTsgfQ0KKyAgICB9Ow0KKw0KKyAgICAvLyB0ZW1wbGF0ZSB0byBzZXQg
ZGVsZXRlZCB2YWx1ZXMNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPiBzdHJ1Y3Qg
RGVsZXRlZFZhbHVlQXNzaWduZXIgew0KKyAgICAgICAgc3RhdGljIHZvaWQgYXNzaWduRGVsZXRl
ZFZhbHVlKHR5cGVuYW1lIFRyYWl0czo6VHJhaXRUeXBlJiBsb2NhdGlvbikgeyBsb2NhdGlvbiA9
IFRyYWl0czo6ZGVsZXRlZFZhbHVlKCk7IH0NCisgICAgfTsNCisNCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPiBpbmxpbmUgdm9pZCBhc3NpZ25EZWxldGVkKFQmIGxv
Y2F0aW9uKQ0KKyAgICB7DQorICAgICAgICBEZWxldGVkVmFsdWVBc3NpZ25lcjxUcmFpdHM+Ojph
c3NpZ25EZWxldGVkVmFsdWUobG9jYXRpb24pOw0KKyAgICB9DQorDQorICAgIC8vIHNwZWNpYWwg
dHJhaXRzIGZvciBwYWlycywgaGVscGZ1bCBmb3IgdGhlaXIgdXNlIGluIEhhc2hNYXAgaW1wbGVt
ZW50YXRpb24NCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUcmFpdHMsIHR5cGVuYW1l
IFNlY29uZFRyYWl0cz4gc3RydWN0IFBhaXJIYXNoVHJhaXRzOw0KKw0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGaXJzdFRyYWl0c0FyZywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzQXJnPg0KKyAgICBz
dHJ1Y3QgUGFpckJhc2VIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8cGFpcjx0eXBlbmFt
ZSBGaXJzdFRyYWl0c0FyZzo6VHJhaXRUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHNBcmc6OlRy
YWl0VHlwZT4gPiB7DQorICAgICAgICB0eXBlZGVmIEZpcnN0VHJhaXRzQXJnIEZpcnN0VHJhaXRz
Ow0KKyAgICAgICAgdHlwZWRlZiBTZWNvbmRUcmFpdHNBcmcgU2Vjb25kVHJhaXRzOw0KKyAgICAg
ICAgdHlwZWRlZiBwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpUcmFpdFR5cGUsIHR5cGVuYW1l
IFNlY29uZFRyYWl0czo6VHJhaXRUeXBlPiBUcmFpdFR5cGU7DQorDQorICAgICAgICB0eXBlZGVm
IFBhaXJIYXNoVHJhaXRzPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpTdG9yYWdlVHJhaXRzLCB0eXBl
bmFtZSBTZWNvbmRUcmFpdHM6OlN0b3JhZ2VUcmFpdHM+IFN0b3JhZ2VUcmFpdHM7DQorDQorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gRmlyc3RUcmFpdHM6OmVt
cHR5VmFsdWVJc1plcm8gJiYgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvOw0KKw0KKyAg
ICAgICAgc3RhdGljIFRyYWl0VHlwZSBlbXB0eVZhbHVlKCkNCisgICAgICAgIHsNCisgICAgICAg
ICAgICByZXR1cm4gbWFrZV9wYWlyKEZpcnN0VHJhaXRzOjplbXB0eVZhbHVlKCksIFNlY29uZFRy
YWl0czo6ZW1wdHlWYWx1ZSgpKTsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRmlyc3RUcmFpdHMsIHR5cGVuYW1lIFNlY29uZFRyYWl0cz4NCisgICAgc3Ry
dWN0IFBhaXJIYXNoVHJhaXRzIDogUGFpckJhc2VIYXNoVHJhaXRzPEZpcnN0VHJhaXRzLCBTZWNv
bmRUcmFpdHM+IHsNCisgICAgICAgIHR5cGVkZWYgcGFpcjx0eXBlbmFtZSBGaXJzdFRyYWl0czo6
VHJhaXRUeXBlLCB0eXBlbmFtZSBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZT4gVHJhaXRUeXBlOw0K
Kw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IEZpcnN0VHJh
aXRzOjpuZWVkc0Rlc3RydWN0aW9uIHx8IFNlY29uZFRyYWl0czo6bmVlZHNEZXN0cnVjdGlvbjsN
CisNCisgICAgICAgIHN0YXRpYyBUcmFpdFR5cGUgZGVsZXRlZFZhbHVlKCkNCisgICAgICAgIHsN
CisgICAgICAgICAgICByZXR1cm4gVHJhaXRUeXBlKEZpcnN0VHJhaXRzOjpkZWxldGVkVmFsdWUo
KSwgU2Vjb25kVHJhaXRzOjplbXB0eVZhbHVlKCkpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAg
c3RhdGljIHZvaWQgYXNzaWduRGVsZXRlZFZhbHVlKFRyYWl0VHlwZSYgbG9jYXRpb24pDQorICAg
ICAgICB7DQorICAgICAgICAgICAgYXNzaWduRGVsZXRlZDx0eXBlbmFtZSBGaXJzdFRyYWl0czo6
VHJhaXRUeXBlLCBGaXJzdFRyYWl0cz4obG9jYXRpb24uZmlyc3QpOw0KKyAgICAgICAgICAgIGxv
Y2F0aW9uLnNlY29uZCA9IFNlY29uZFRyYWl0czo6ZW1wdHlWYWx1ZSgpOw0KKyAgICAgICAgfQ0K
KyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25k
Pg0KKyAgICBzdHJ1Y3QgSGFzaFRyYWl0czxwYWlyPEZpcnN0LCBTZWNvbmQ+ID4gOiBwdWJsaWMg
UGFpckhhc2hUcmFpdHM8SGFzaFRyYWl0czxGaXJzdD4sIEhhc2hUcmFpdHM8U2Vjb25kPiA+IHsg
fTsNCisNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUcmFpdHMsIHR5cGVuYW1lIFNlY29u
ZFRyYWl0cz4NCisgICAgc3RydWN0IERlbGV0ZWRWYWx1ZUFzc2lnbmVyPFBhaXJIYXNoVHJhaXRz
PEZpcnN0VHJhaXRzLCBTZWNvbmRUcmFpdHM+ID4NCisgICAgew0KKyAgICAgICAgc3RhdGljIHZv
aWQgYXNzaWduRGVsZXRlZFZhbHVlKHBhaXI8dHlwZW5hbWUgRmlyc3RUcmFpdHM6OlRyYWl0VHlw
ZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+JiBsb2NhdGlvbikNCisgICAgICAg
IHsNCisgICAgICAgICAgICBQYWlySGFzaFRyYWl0czxGaXJzdFRyYWl0cywgU2Vjb25kVHJhaXRz
Pjo6YXNzaWduRGVsZXRlZFZhbHVlKGxvY2F0aW9uKTsNCisgICAgICAgIH0NCisgICAgfTsNCisN
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4NCisgICAgc3Ry
dWN0IERlbGV0ZWRWYWx1ZUFzc2lnbmVyPEhhc2hUcmFpdHM8cGFpcjxGaXJzdCwgU2Vjb25kPiA+
ID4NCisgICAgew0KKyAgICAgICAgc3RhdGljIHZvaWQgYXNzaWduRGVsZXRlZFZhbHVlKHBhaXI8
Rmlyc3QsIFNlY29uZD4mIGxvY2F0aW9uKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIEhhc2hU
cmFpdHM8cGFpcjxGaXJzdCwgU2Vjb25kPiA+Ojphc3NpZ25EZWxldGVkVmFsdWUobG9jYXRpb24p
Ow0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKyAgICAvLyBoYXNzaCBmdW5jdGlvbnMgYW5kIHRy
YWl0cyB0aGF0IGFyZSBlcXVpdmFsZW50IChmb3IgY29kZSBzaGFyaW5nKQ0KKw0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBUcmFpdHNBcmc+IHN0cnVjdCBIYXNoS2V5
U3RvcmFnZVRyYWl0cyB7DQorICAgICAgICB0eXBlZGVmIEhhc2hBcmcgSGFzaDsNCisgICAgICAg
IHR5cGVkZWYgVHJhaXRzQXJnIFRyYWl0czsNCisgICAgfTsNCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUD4gc3RydWN0IEhhc2hLZXlTdG9yYWdlVHJhaXRzPFB0ckhhc2g8UCo+LCBIYXNoVHJhaXRz
PFAqPiA+IHsNCisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW50VHlwZXM8c2l6ZW9mKFAqKT46
OlNpZ25lZFR5cGUgSW50VHlwZTsNCisgICAgICAgIHR5cGVkZWYgSW50SGFzaDxJbnRUeXBlPiBI
YXNoOw0KKyAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPEludFR5cGU+IFRyYWl0czsNCisgICAg
fTsNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hLZXlTdG9yYWdlVHJhaXRz
PFB0ckhhc2g8UmVmUHRyPFA+ID4sIEhhc2hUcmFpdHM8UmVmUHRyPFA+ID4gPiB7DQorICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihQKik+OjpTaWduZWRUeXBlIEludFR5
cGU7DQorICAgICAgICB0eXBlZGVmIEludEhhc2g8SW50VHlwZT4gSGFzaDsNCisgICAgICAgIHR5
cGVkZWYgSGFzaFRyYWl0czxJbnRUeXBlPiBUcmFpdHM7DQorICAgIH07DQorDQorfSAvLyBuYW1l
c3BhY2UgV1RGDQorDQordXNpbmcgV1RGOjpIYXNoVHJhaXRzOw0KK3VzaW5nIFdURjo6UGFpckhh
c2hUcmFpdHM7DQorDQorI2VuZGlmIC8vIEtYTUxDT1JFX0hBU0hfVFJBSVRTX0gNCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9pdGVyYXRvcg0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL2l0ZXJhdG9yCShyZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL2l0ZXJhdG9yCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxNzAgQEANCisvLyBU
eXBlcyB1c2VkIGluIGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uIC0qLSBDKysgLSotDQorDQorLy8g
Q29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLg0KKy8vDQorLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJh
cnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQ0KKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQ0KKy8vIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlDQorLy8gRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pDQor
Ly8gYW55IGxhdGVyIHZlcnNpb24uDQorDQorLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorLy8gYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisvLyBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
DQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisNCisv
LyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhbG9uZw0KKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUNCisvLyBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywNCisv
LyBVU0EuDQorDQorLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBm
aWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlDQorLy8gbGlicmFyeSB3aXRob3V0IHJlc3Ry
aWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQ0KKy8vIHRl
bXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUs
IG9yIHlvdSBjb21waWxlDQorLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmls
ZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzDQorLy8gZmlsZSBkb2VzIG5vdCBieSBp
dHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkNCisv
LyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5v
dCBob3dldmVyDQorLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1
dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5DQorLy8gdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlLg0KKw0KKy8qDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDE5OTQNCisgKiBIZXds
ZXR0LVBhY2thcmQgQ29tcGFueQ0KKyAqDQorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgZGlzdHJpYnV0ZSBhbmQgc2VsbCB0aGlzIHNvZnR3YXJlDQorICogYW5kIGl0cyBkb2N1
bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwN
CisgKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBh
bGwgY29waWVzIGFuZA0KKyAqIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyDQorICogaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0
aW9uLiAgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgbWFrZXMgbm8NCisgKiByZXByZXNlbnRhdGlv
bnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQ0KKyAqIHB1
cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVk
IHdhcnJhbnR5Lg0KKyAqDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDE5OTYtMTk5OA0KKyAqIFNp
bGljb24gR3JhcGhpY3MgQ29tcHV0ZXIgU3lzdGVtcywgSW5jLg0KKyAqDQorICogUGVybWlzc2lv
biB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSBhbmQgc2VsbCB0aGlzIHNvZnR3YXJl
DQorICogYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3Jh
bnRlZCB3aXRob3V0IGZlZSwNCisgKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZA0KKyAqIHRoYXQgYm90aCB0aGF0IGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyDQorICogaW4gc3Vw
cG9ydGluZyBkb2N1bWVudGF0aW9uLiAgU2lsaWNvbiBHcmFwaGljcyBtYWtlcyBubw0KKyAqIHJl
cHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3Ig
YW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNz
IG9yIGltcGxpZWQgd2FycmFudHkuDQorICovDQorDQorLyoqIEBmaWxlIHN0bF9pdGVyYXRvcl9i
YXNlX3R5cGVzLmgNCisgKiAgVGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSwgaW5jbHVk
ZWQgYnkgb3RoZXIgbGlicmFyeSBoZWFkZXJzLg0KKyAqICBZb3Ugc2hvdWxkIG5vdCBhdHRlbXB0
IHRvIHVzZSBpdCBkaXJlY3RseS4NCisgKg0KKyAqICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIG9m
IHRoZSBnZW5lcmFsIGl0ZXJhdG9yLXJlbGF0ZWQgdXRpbGl0eSB0eXBlcywNCisgKiAgc3VjaCBh
cyBpdGVyYXRvcl90cmFpdHMgYW5kIHN0cnVjdCBpdGVyYXRvci4NCisgKi8NCisNCisjaWZuZGVm
IF9JVEVSQVRPUl9CQVNFX1RZUEVTX0gNCisjZGVmaW5lIF9JVEVSQVRPUl9CQVNFX1RZUEVTX0gg
MQ0KKw0KKy8vI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcg0KKw0KK25hbWVzcGFjZSBzdGQNCit7
DQorICAvL0B7DQorICAvKioNCisgICAqICBAZGVmZ3JvdXAgaXRlcmF0b3JfdGFncyBJdGVyYXRv
ciBUYWdzDQorICAgKiAgVGhlc2UgYXJlIGVtcHR5IHR5cGVzLCB1c2VkIHRvIGRpc3Rpbmd1aXNo
IGRpZmZlcmVudCBpdGVyYXRvcnMuICBUaGUNCisgICAqICBkaXN0aW5jdGlvbiBpcyBub3QgbWFk
ZSBieSB3aGF0IHRoZXkgY29udGFpbiwgYnV0IHNpbXBseSBieSB3aGF0IHRoZXkNCisgICAqICBh
cmUuICBEaWZmZXJlbnQgdW5kZXJseWluZyBhbGdvcml0aG1zIGNhbiB0aGVuIGJlIHVzZWQgYmFz
ZWQgb24gdGhlDQorICAgKiAgZGlmZmVyZW50IG9wZXJhdGlvbnMgc3VwcG9yZXRkIGJ5IGRpZmZl
cmVudCBpdGVyYXRvciB0eXBlcy4NCisgICovDQorICAvLy8gIE1hcmtpbmcgaW5wdXQgaXRlcmF0
b3JzLg0KKyAgc3RydWN0IGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsNCisgIC8vLyAgTWFya2luZyBv
dXRwdXQgaXRlcmF0b3JzLg0KKyAgc3RydWN0IG91dHB1dF9pdGVyYXRvcl90YWcge307DQorICAv
Ly8gRm9yd2FyZCBpdGVyYXRvcnMgc3VwcG9ydCBhIHN1cGVyc2V0IG9mIGlucHV0IGl0ZXJhdG9y
IG9wZXJhdGlvbnMuDQorICBzdHJ1Y3QgZm9yd2FyZF9pdGVyYXRvcl90YWcgOiBwdWJsaWMgaW5w
dXRfaXRlcmF0b3JfdGFnIHt9Ow0KKyAgLy8vIEJpZGlyZWN0aW9uYWwgaXRlcmF0b3JzIHN1cHBv
cnQgYSBzdXBlcnNldCBvZiBmb3J3YXJkIGl0ZXJhdG9yDQorICAvLy8gb3BlcmF0aW9ucy4NCisg
IHN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBmb3J3YXJkX2l0ZXJh
dG9yX3RhZyB7fTsNCisgIC8vLyBSYW5kb20tYWNjZXNzIGl0ZXJhdG9ycyBzdXBwb3J0IGEgc3Vw
ZXJzZXQgb2YgYmlkaXJlY3Rpb25hbCBpdGVyYXRvcg0KKyAgLy8vIG9wZXJhdGlvbnMuDQorICBz
dHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgOiBwdWJsaWMgYmlkaXJlY3Rpb25hbF9p
dGVyYXRvcl90YWcge307DQorICAvL0B9DQorDQorDQorICAvKioNCisgICAqICBAYnJpZWYgIENv
bW1vbiAlaXRlcmF0b3IgY2xhc3MuDQorICAgKg0KKyAgICogIFRoaXMgY2xhc3MgZG9lcyBub3Ro
aW5nIGJ1dCBkZWZpbmUgbmVzdGVkIHR5cGVkZWZzLiAgJUl0ZXJhdG9yIGNsYXNzZXMNCisgICAq
ICBjYW4gaW5oZXJpdCBmcm9tIHRoaXMgY2xhc3MgdG8gc2F2ZSBzb21lIHdvcmsuICBUaGUgdHlw
ZWRlZnMgYXJlIHRoZW4NCisgICAqICB1c2VkIGluIHNwZWNpYWxpemF0aW9ucyBhbmQgb3Zlcmxv
YWRpbmcuDQorICAgKg0KKyAgICogIEluIHBhcnRpY3VsYXIsIHRoZXJlIGFyZSBubyBkZWZhdWx0
IGltcGxlbWVudGF0aW9ucyBvZiByZXF1aXJlbWVudHMNCisgICAqICBzdWNoIGFzIEBjIG9wZXJh
dG9yKysgYW5kIHRoZSBsaWtlLiAgKEhvdyBjb3VsZCB0aGVyZSBiZT8pDQorICAqLw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NhdGVnb3J5LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EaXN0YW5j
ZSA9IHB0cmRpZmZfdCwNCisgICAgICAgICAgIHR5cGVuYW1lIF9Qb2ludGVyID0gX1RwKiwgdHlw
ZW5hbWUgX1JlZmVyZW5jZSA9IF9UcCY+DQorICAgIHN0cnVjdCBpdGVyYXRvcg0KKyAgICB7DQor
ICAgICAgLy8vIE9uZSBvZiB0aGUgQGxpbmsgaXRlcmF0b3JfdGFncyB0YWcgdHlwZXNAZW5kbGlu
ay4NCisgICAgICB0eXBlZGVmIF9DYXRlZ29yeSAgaXRlcmF0b3JfY2F0ZWdvcnk7DQorICAgICAg
Ly8vIFRoZSB0eXBlICJwb2ludGVkIHRvIiBieSB0aGUgaXRlcmF0b3IuDQorICAgICAgdHlwZWRl
ZiBfVHAgICAgICAgIHZhbHVlX3R5cGU7DQorICAgICAgLy8vIERpc3RhbmNlIGJldHdlZW4gaXRl
cmF0b3JzIGlzIHJlcHJlc2VudGVkIGFzIHRoaXMgdHlwZS4NCisgICAgICB0eXBlZGVmIF9EaXN0
YW5jZSAgZGlmZmVyZW5jZV90eXBlOw0KKyAgICAgIC8vLyBUaGlzIHR5cGUgcmVwcmVzZW50cyBh
IHBvaW50ZXItdG8tdmFsdWVfdHlwZS4NCisgICAgICB0eXBlZGVmIF9Qb2ludGVyICAgcG9pbnRl
cjsNCisgICAgICAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSByZWZlcmVuY2UtdG8tdmFsdWVf
dHlwZS4NCisgICAgICB0eXBlZGVmIF9SZWZlcmVuY2UgcmVmZXJlbmNlOw0KKyAgICB9Ow0KKw0K
KyAgLyoqDQorICAgKiAgVGhpcyBjbGFzcyBkb2VzIG5vdGhpbmcgYnV0IGRlZmluZSBuZXN0ZWQg
dHlwZWRlZnMuICBUaGUgZ2VuZXJhbA0KKyAgICogIHZlcnNpb24gc2ltcGx5ICJmb3J3YXJkcyIg
dGhlIG5lc3RlZCB0eXBlZGVmcyBmcm9tIHRoZSBJdGVyYXRvcg0KKyAgICogIGFyZ3VtZW50LiAg
U3BlY2lhbGl6ZWQgdmVyc2lvbnMgZm9yIHBvaW50ZXJzIGFuZCBwb2ludGVycy10by1jb25zdA0K
KyAgICogIHByb3ZpZGUgdGlnaHRlciwgbW9yZSBjb3JyZWN0IHNlbWFudGljcy4NCisgICovDQor
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+DQorICAgIHN0cnVjdCBpdGVyYXRvcl90cmFp
dHMNCisgICAgew0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjppdGVyYXRvcl9j
YXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsNCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVy
YXRvcjo6dmFsdWVfdHlwZSAgICAgICAgdmFsdWVfdHlwZTsNCisgICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9JdGVyYXRvcjo6ZGlmZmVyZW5jZV90eXBlICAgZGlmZmVyZW5jZV90eXBlOw0KKyAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpwb2ludGVyICAgICAgICAgICBwb2ludGVyOw0K
KyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpyZWZlcmVuY2UgICAgICAgICByZWZl
cmVuY2U7DQorICAgIH07DQorDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+DQorICAgIHN0cnVj
dCBpdGVyYXRvcl90cmFpdHM8X1RwKj4NCisgICAgew0KKyAgICAgIHR5cGVkZWYgcmFuZG9tX2Fj
Y2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7DQorICAgICAgdHlwZWRlZiBfVHAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsNCisgICAgICB0eXBlZGVmIHB0cmRp
ZmZfdCAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7DQorICAgICAgdHlwZWRlZiBf
VHAqICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsNCisgICAgICB0eXBlZGVmIF9UcCYg
ICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7DQorICAgIH07DQorDQorICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+DQorICAgIHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4N
CisgICAgew0KKyAgICAgIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0
b3JfY2F0ZWdvcnk7DQorICAgICAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWVfdHlwZTsNCisgICAgICB0eXBlZGVmIHB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICBk
aWZmZXJlbmNlX3R5cGU7DQorICAgICAgdHlwZWRlZiBjb25zdCBfVHAqICAgICAgICAgICAgICAg
ICAgcG9pbnRlcjsNCisgICAgICB0eXBlZGVmIGNvbnN0IF9UcCYgICAgICAgICAgICAgICAgICBy
ZWZlcmVuY2U7DQorICAgIH07DQorDQorICAvKioNCisgICAqICBAaWYgbWFpbnQNCisgICAqICBU
aGlzIGZ1bmN0aW9uIGlzIG5vdCBhIHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZCBidXQgaXMgc3lu
dGFjdGljDQorICAgKiAgc3VnYXIgZm9yIGludGVybmFsIGxpYnJhcnkgdXNlIG9ubHkuDQorICAg
KiAgQGVuZGlmDQorICAqLw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXI+DQorICAgIGlubGlu
ZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeQ0KKyAg
ICBfX2l0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IF9JdGVyJikNCisgICAgeyByZXR1cm4gdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkoKTsgfQ0KKw0KK30g
Ly8gbmFtZXNwYWNlIHN0ZA0KKw0KKyNlbmRpZiAvKiBfSVRFUkFUT1JfQkFTRV9UWVBFU19IICov
DQorDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbmV3DQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbmV3CShyZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL25ldwkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEgQEANCisjaW5jbHVkZSA8
ZTMyY21uLmg+DQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTIw
LDcgKzIwLDcgQEANCiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAjaW5jbHVkZSA8TlBfanNvYmplY3Qu
aD4KIApAQCAtMzUsMTUgKzM1LDE1IEBADQogCiBzdGF0aWMgS0pTOjpMaXN0IGxpc3RGcm9tVmFy
aWFudEFyZ3MoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdW5z
aWduZWQgYXJnQ291bnQpCiB7Ci0gICAgS0pTOjpMaXN0IGFMaXN0OyAKKyAgICBLSlM6Okxpc3Qg
YUxpc3Q7CiAgICAgdW5zaWduZWQgaTsKICAgICBjb25zdCBOUFZhcmlhbnQgKnYgPSBhcmdzOwot
ICAgIAorCiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ0NvdW50OyBpKyspIHsKICAgICAgICAgYUxp
c3QuYXBwZW5kIChjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSAoZXhlYywgdikpOwogICAgICAgICB2
Kys7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGFMaXN0OwogfQogCkBAIC01NywxMCArNTcs
MTAgQEANCiAgICAgZnJlZSAob2JqKTsKIH0KIAotc3RhdGljIE5QQ2xhc3MgX2phdmFzY3JpcHRD
bGFzcyA9IHsgCitzdGF0aWMgTlBDbGFzcyBfamF2YXNjcmlwdENsYXNzID0gewogICAgIDEsCi0g
ICAganNBbGxvY2F0ZSwgCi0gICAgKE5QRGVhbGxvY2F0ZUZ1bmN0aW9uUHRyKWpzRGVhbGxvY2F0
ZSwgCisgICAganNBbGxvY2F0ZSwKKyAgICAoTlBEZWFsbG9jYXRlRnVuY3Rpb25QdHIpanNEZWFs
bG9jYXRlLAogICAgIDAsCiAgICAgMCwKICAgICAwLApAQCAtNzMsMTI3ICs3MywxMzAgQEANCiAK
IE5QQ2xhc3MgKk5QU2NyaXB0T2JqZWN0Q2xhc3MgPSAmX2phdmFzY3JpcHRDbGFzczsKIAotc3Rh
dGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIoY29uc3QgTlBVVEY4ICpu
YW1lKQotewotICAgIE5QVVRGMTYgKm1ldGhvZE5hbWU7Ci0gICAgdW5zaWduZWQgaW50IFVURjE2
TGVuZ3RoOwotICAgIAotICAgIGNvbnZlcnRVVEY4VG9VVEYxNiAobmFtZSwgLTEsICZtZXRob2RO
YW1lLCAmVVRGMTZMZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5
LgotICAgIElkZW50aWZpZXIgaWRlbnRpZmllciAoKGNvbnN0IEtKUzo6VUNoYXIqKW1ldGhvZE5h
bWUsIFVURjE2TGVuZ3RoKTsKLSAgICBmcmVlICgodm9pZCAqKW1ldGhvZE5hbWUpOwotICAgIAot
ICAgIHJldHVybiBpZGVudGlmaWVyOwotfQogCiBzdGF0aWMgYm9vbCBfaXNTYWZlU2NyaXB0KEph
dmFTY3JpcHRPYmplY3QgKm9iaikKIHsKICAgICBpZiAob2JqLT5vcmlnaW5FeGVjdXRpb25Db250
ZXh0KSB7Ci0JSW50ZXJwcmV0ZXIgKm9yaWdpbkludGVycHJldGVyID0gb2JqLT5vcmlnaW5FeGVj
dXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpOwotCWlmIChvcmlnaW5JbnRlcnByZXRlcikgewot
CSAgICByZXR1cm4gb3JpZ2luSW50ZXJwcmV0ZXItPmlzU2FmZVNjcmlwdCAob2JqLT5leGVjdXRp
b25Db250ZXh0LT5pbnRlcnByZXRlcigpKTsKLQl9CisgICAgSW50ZXJwcmV0ZXIgKm9yaWdpbklu
dGVycHJldGVyID0gb2JqLT5vcmlnaW5FeGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpOwor
ICAgIGlmIChvcmlnaW5JbnRlcnByZXRlcikgeworICAgICAgICByZXR1cm4gb3JpZ2luSW50ZXJw
cmV0ZXItPmlzU2FmZVNjcmlwdCAob2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigp
KTsKICAgICB9CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCitFWFBPUlRfQwogTlBPYmpl
Y3QgKl9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IChOUFAgbnBwLCBLSlM6Ok9iamVjdEltcCAqaW1w
LCBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpvcmlnaW5FeGVjdXRpb25Db250ZXh0
LCBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0KQogewot
ICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopX05QTl9DcmVh
dGVPYmplY3QobnBwLCBOUFNjcmlwdE9iamVjdENsYXNzKTsKKyAgICBKYXZhU2NyaXB0T2JqZWN0
ICpvYmogPSAoSmF2YVNjcmlwdE9iamVjdCAqKU5QTl9DcmVhdGVPYmplY3QobnBwLCBOUFNjcmlw
dE9iamVjdENsYXNzKTsKIAogICAgIG9iai0+aW1wID0gaW1wOwotICAgIG9iai0+b3JpZ2luRXhl
Y3V0aW9uQ29udGV4dCA9IG9yaWdpbkV4ZWN1dGlvbkNvbnRleHQ7ICAgIAotICAgIG9iai0+ZXhl
Y3V0aW9uQ29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQ7ICAgIAorICAgIG9iai0+b3JpZ2luRXhl
Y3V0aW9uQ29udGV4dCA9IG9yaWdpbkV4ZWN1dGlvbkNvbnRleHQ7CisgICAgb2JqLT5leGVjdXRp
b25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dDsKIAogICAgIGFkZE5hdGl2ZVJlZmVyZW5jZSAo
ZXhlY3V0aW9uQ29udGV4dCwgaW1wKTsKLSAgICAKKwogICAgIHJldHVybiAoTlBPYmplY3QgKilv
Ymo7CiB9CiAKLWJvb2wgX05QTl9JbnZva2VEZWZhdWx0IChOUFAgbnBwLCBOUE9iamVjdCAqbywg
Y29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpyZXN1
bHQpCitFWFBPUlRfQworYm9vbCBOUE5fSW52b2tlRGVmYXVsdCAoTlBQIG5wcCwgTlBPYmplY3Qg
Km8sIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAq
cmVzdWx0KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgewot
ICAgICAgICAvLyBObyBub3Rpb24gb2YgYSBkZWZhdWx0IGZ1bmN0aW9uIG9uIEpTIG9iamVjdHMu
ICBKdXN0IHJldHVybiBmYWxzZSwgY2FuJ3QgaGFuZGxlLgotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsK
KyAgICAgICAgT2JqZWN0SW1wICpmdW5jSW1wID0gb2JqLT5pbXA7CisgICAgICAgIGlmICghZnVu
Y0ltcC0+aW1wbGVtZW50c0NhbGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigp
LT5nbG9iYWxFeGVjKCk7CisgICAgICAgIE9iamVjdCB0aGlzT2JqID0gT2JqZWN0KGNvbnN0X2Nh
c3Q8T2JqZWN0SW1wKj4ob2JqLT5pbXApKTsKKyAgICAgICAgTGlzdCBhcmdMaXN0ID0gbGlzdEZy
b21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCk7CisgICAgICAgIFZhbHVlIHJlc3Vs
dFYgPSBPYmplY3QoZnVuY0ltcCkuY2FsbCAoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7CisKKyAg
ICAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNh
bGwuCisgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYg
KG8tPl9jbGFzcy0+aW52b2tlRGVmYXVsdCkgewogICAgICAgICAgICAgcmV0dXJuIG8tPl9jbGFz
cy0+aW52b2tlRGVmYXVsdCAobywgYXJncywgYXJnQ291bnQsIHJlc3VsdCk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBfTlBOX0ludm9rZSAo
TlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZh
cmlhbnQgKmFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCkKK0VYUE9S
VF9DCitib29sIE5QTl9JbnZva2UgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIg
bWV0aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBW
YXJpYW50ICpyZXN1bHQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENs
YXNzKSB7Ci0gICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0
ICopbzsgCi0gICAgICAgIAotCWlmICghX2lzU2FmZVNjcmlwdChvYmopKQotCSAgICByZXR1cm4g
ZmFsc2U7Ci0JICAgIAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAoSmF2YVNjcmlw
dE9iamVjdCAqKW87CisKKyAgICBpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyICppID0gKFByaXZhdGVJZGVu
dGlmaWVyICopbWV0aG9kTmFtZTsKICAgICAgICAgaWYgKCFpLT5pc1N0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotCS8vIFNwZWNpYWwgY2FzZSB0aGUgImV2
YWwiIG1ldGhvZC4KLQlpZiAobWV0aG9kTmFtZSA9PSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
ImV2YWwiKSkgewotCSAgICBpZiAoYXJnQ291bnQgIT0gMSkKLQkJcmV0dXJuIGZhbHNlOwotCSAg
ICBpZiAoYXJnc1swXS50eXBlICE9IE5QVmFyaWFudFR5cGVfU3RyaW5nKQotCQlyZXR1cm4gZmFs
c2U7Ci0JICAgIAotCSAgICByZXR1cm4gX05QTl9FdmFsdWF0ZSAobnBwLCBvLCAoTlBTdHJpbmcg
KikmYXJnc1swXS52YWx1ZS5zdHJpbmdWYWx1ZSwgcmVzdWx0KTsKLQl9Ci0JZWxzZSB7Ci0JICAg
IC8vIExvb2t1cCB0aGUgZnVuY3Rpb24gb2JqZWN0LgotCSAgICBFeGVjU3RhdGUgKmV4ZWMgPSBv
YmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKLQkgICAg
SW50ZXJwcmV0ZXJMb2NrIGxvY2s7Ci0JICAgIFZhbHVlIGZ1bmMgPSBvYmotPmltcC0+Z2V0IChl
eGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKIAotCSAg
ICBpZiAoZnVuYy5pc051bGwoKSkgewotCQlOUE5fSW5pdGlhbGl6ZVZhcmlhbnRBc051bGwocmVz
dWx0KTsKLQkJcmV0dXJuIGZhbHNlOwotCSAgICB9IGVsc2UgaWYgKGZ1bmMudHlwZSgpID09IFVu
ZGVmaW5lZFR5cGUpIHsKLQkJTlBOX0luaXRpYWxpemVWYXJpYW50QXNVbmRlZmluZWQocmVzdWx0
KTsKLQkJcmV0dXJuIGZhbHNlOwotCSAgICB9IGVsc2UgewotCQkvLyBDYWxsIHRoZSBmdW5jdGlv
biBvYmplY3QuCi0JCU9iamVjdEltcCAqZnVuY0ltcCA9IHN0YXRpY19jYXN0PE9iamVjdEltcCo+
KGZ1bmMuaW1wKCkpOwotCQlPYmplY3QgdGhpc09iaiA9IE9iamVjdChjb25zdF9jYXN0PE9iamVj
dEltcCo+KG9iai0+aW1wKSk7Ci0JCUxpc3QgYXJnTGlzdCA9IGxpc3RGcm9tVmFyaWFudEFyZ3Mo
ZXhlYywgYXJncywgYXJnQ291bnQpOwotCQlWYWx1ZSByZXN1bHRWID0gT2JqZWN0KGZ1bmNJbXAp
LmNhbGwgKGV4ZWMsIHRoaXNPYmosIGFyZ0xpc3QpOworICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUg
ImV2YWwiIG1ldGhvZC4KKyAgICBpZiAobWV0aG9kTmFtZSA9PSBOUE5fR2V0U3RyaW5nSWRlbnRp
ZmllcigiZXZhbCIpKSB7CisgICAgICAgIGlmIChhcmdDb3VudCAhPSAxKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChhcmdzWzBdLnR5cGUgIT0gTlBWYXJpYW50VHlwZV9TdHJp
bmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotCQkvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhl
IHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KLQkJY29udmVydFZhbHVlVG9OUFZhcmlhbnQo
ZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKLQkJcmV0dXJuIHRydWU7Ci0JICAgIH0KLQl9CisgICAg
ICAgIHJldHVybiBOUE5fRXZhbHVhdGUgKG5wcCwgbywgKE5QU3RyaW5nICopJmFyZ3NbMF0udmFs
dWUuc3RyaW5nVmFsdWUsIHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvLyBM
b29rdXAgdGhlIGZ1bmN0aW9uIG9iamVjdC4KKyAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2Jq
LT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CisgICAgICAg
IEludGVycHJldGVyTG9jayBsb2NrOworICAgICAgICBWYWx1ZSBmdW5jID0gb2JqLT5pbXAtPmdl
dCAoZXhlYywgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIoaS0+dmFsdWUuc3RyaW5nKSk7CisK
KyAgICAgICAgaWYgKGZ1bmMuaXNOdWxsKCkpIHsKKyAgICAgICAgTlBOX0luaXRpYWxpemVWYXJp
YW50QXNOdWxsKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNl
IGlmIChmdW5jLnR5cGUoKSA9PSBVbmRlZmluZWRUeXBlKSB7CisgICAgICAgIE5QTl9Jbml0aWFs
aXplVmFyaWFudEFzVW5kZWZpbmVkKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgorICAg
ICAgICBPYmplY3RJbXAgKmZ1bmNJbXAgPSBzdGF0aWNfY2FzdDxPYmplY3RJbXAqPihmdW5jLmlt
cCgpKTsKKyAgICAgICAgT2JqZWN0IHRoaXNPYmogPSBPYmplY3QoY29uc3RfY2FzdDxPYmplY3RJ
bXAqPihvYmotPmltcCkpOworICAgICAgICBMaXN0IGFyZ0xpc3QgPSBsaXN0RnJvbVZhcmlhbnRB
cmdzKGV4ZWMsIGFyZ3MsIGFyZ0NvdW50KTsKKyAgICAgICAgVmFsdWUgcmVzdWx0ViA9IE9iamVj
dChmdW5jSW1wKS5jYWxsIChleGVjLCB0aGlzT2JqLCBhcmdMaXN0KTsKKworICAgICAgICAvLyBD
b252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAg
ICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiAgICAgfSBlbHNlIGlmIChvLT5fY2xh
c3MtPmludm9rZSkKICAgICAgICAgcmV0dXJuIG8tPl9jbGFzcy0+aW52b2tlIChvLCBtZXRob2RO
YW1lLCBhcmdzLCBhcmdDb3VudCwgcmVzdWx0KTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIF9OUE5fRXZhbHVhdGUgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUFN0cmluZyAq
cywgTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MKK2Jvb2wgTlBOX0V2YWx1YXRlIChOUFAg
bnBwLCBOUE9iamVjdCAqbywgTlBTdHJpbmcgKnMsIE5QVmFyaWFudCAqdmFyaWFudCkKIHsKICAg
ICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSmF2YVNj
cmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKKyAgICAgICAgSmF2YVNj
cmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOwogCi0JaWYgKCFfaXNTYWZl
U2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIV9pc1NhZmVTY3JpcHQo
b2JqKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9
IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFsRXhlYygpOwogICAg
ICAgICBPYmplY3QgdGhpc09iaiA9IE9iamVjdChjb25zdF9jYXN0PE9iamVjdEltcCo+KG9iai0+
aW1wKSk7CiAgICAgICAgIFZhbHVlIHJlc3VsdDsKLSAgICAgICAgCisKICAgICAgICAgSW50ZXJw
cmV0ZXJMb2NrIGxvY2s7CiAgICAgICAgIE5QVVRGMTYgKnNjcmlwdFN0cmluZzsKICAgICAgICAg
dW5zaWduZWQgaW50IFVURjE2TGVuZ3RoOwogICAgICAgICBjb252ZXJ0TlBTdHJpbmdUb1VURjE2
IChzLCAmc2NyaXB0U3RyaW5nLCAmVVRGMTZMZW5ndGgpOyAgICAvLyByZXF1aXJlcyBmcmVlKCkg
b2YgcmV0dXJuZWQgbWVtb3J5LgogICAgICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBvYmot
PmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmV2YWx1YXRlKFVTdHJpbmcoKSwgMCwg
VVN0cmluZygoY29uc3QgVUNoYXIgKilzY3JpcHRTdHJpbmcsVVRGMTZMZW5ndGgpKTsKICAgICAg
ICAgQ29tcGxUeXBlIHR5cGUgPSBjb21wbGV0aW9uLmNvbXBsVHlwZSgpOwotICAgICAgICAKKwog
ICAgICAgICBpZiAodHlwZSA9PSBOb3JtYWwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBs
ZXRpb24udmFsdWUoKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpIHsKQEAgLTIw
MiwyMyArMjA1LDI0IEBADQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
c3VsdCA9IFVuZGVmaW5lZCgpOwotICAgICAgICAgICAgCisKICAgICAgICAgZnJlZSAoKHZvaWQg
KilzY3JpcHRTdHJpbmcpOwotICAgICAgICAKKwogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudChleGVjLCByZXN1bHQsIHZhcmlhbnQpOwotICAgIAorCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgX05QTl9HZXRQcm9wZXJ0eSAo
TlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIE5QVmFyaWFu
dCAqdmFyaWFudCkKK0VYUE9SVF9DCitib29sIE5QTl9HZXRQcm9wZXJ0eSAoTlBQIG5wcCwgTlBP
YmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIE5QVmFyaWFudCAqdmFyaWFudCkK
IHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKKyAgICAgICAg
SmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOwogCi0JaWYgKCFf
aXNTYWZlU2NyaXB0KG9iaikpCi0JICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIV9pc1NhZmVT
Y3JpcHQob2JqKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEV4ZWNTdGF0ZSAq
ZXhlYyA9IG9iai0+ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFsRXhlYygp
OwogCkBAIC0yMzUsMTQgKzIzOSwxNCBAQA0KICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgSW50ZXJwcmV0
ZXJMb2NrIGxvY2s7CiAgICAgICAgIFZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKGktPmlzU3Ry
aW5nKQogICAgICAgICAgICAgcmVzdWx0ID0gb2JqLT5pbXAtPmdldCAoZXhlYywgaWRlbnRpZmll
ckZyb21OUElkZW50aWZpZXIoaS0+dmFsdWUuc3RyaW5nKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHJlc3VsdCA9IG9iai0+aW1wLT5nZXQgKGV4ZWMsIGktPnZhbHVlLm51bWJlcik7Ci0g
ICAgICAgIAorCiAgICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIE5Q
Tl9Jbml0aWFsaXplVmFyaWFudEFzTnVsbCh2YXJpYW50KTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI2OCwxMyArMjcyLDE0IEBADQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBfTlBOX1NldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSwgY29uc3QgTlBWYXJpYW50ICp2YXJpYW50KQorRVhQT1JUX0MKK2Jvb2wgTlBO
X1NldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgY29uc3QgTlBWYXJpYW50ICp2YXJpYW50KQogewogICAgIGlmIChvLT5fY2xhc3MgPT0g
TlBTY3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAo
SmF2YVNjcmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAo
SmF2YVNjcmlwdE9iamVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250
ZXh0LT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIEludGVycHJldGVyTG9j
ayBsb2NrOwpAQCAtMjgzLDcgKzI4OCw3IEBADQogICAgICAgICAgICAgb2JqLT5pbXAtPnB1dChl
eGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJpbmcpLCBjb252ZXJ0
TlBWYXJpYW50VG9WYWx1ZShleGVjLCB2YXJpYW50KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG9iai0+aW1wLT5wdXQoZXhlYywgaS0+dmFsdWUubnVtYmVyLCBjb252ZXJ0TlBWYXJpYW50
VG9WYWx1ZShleGVjLCB2YXJpYW50KSk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0gZWxzZSBpZiAoby0+X2NsYXNzLT5zZXRQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJu
IG8tPl9jbGFzcy0+c2V0UHJvcGVydHkgKG8sIHByb3BlcnR5TmFtZSwgdmFyaWFudCk7CkBAIC0y
OTEsMTMgKzI5NiwxNCBAQA0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgX05QTl9SZW1v
dmVQcm9wZXJ0eSAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUpCitFWFBPUlRfQworYm9vbCBOUE5fUmVtb3ZlUHJvcGVydHkgKE5QUCBucHAsIE5QT2JqZWN0
ICpvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChvLT5fY2xhc3MgPT0g
TlBTY3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAo
SmF2YVNjcmlwdE9iamVjdCAqKW87IAorICAgICAgICBKYXZhU2NyaXB0T2JqZWN0ICpvYmogPSAo
SmF2YVNjcmlwdE9iamVjdCAqKW87CiAKLQlpZiAoIV9pc1NhZmVTY3JpcHQob2JqKSkKLQkgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250
ZXh0LT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCk7CiAKQEAgLTMxOCwxOSArMzI0LDIwIEBA
DQogICAgICAgICAgICAgb2JqLT5pbXAtPmRlbGV0ZVByb3BlcnR5IChleGVjLCBpZGVudGlmaWVy
RnJvbU5QSWRlbnRpZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgb2JqLT5pbXAtPmRlbGV0ZVByb3BlcnR5IChleGVjLCBpLT52YWx1ZS5udW1iZXIpOwot
ICAgICAgICAKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIF9OUE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUpCitFWFBPUlRfQworYm9vbCBOUE5fSGFzUHJvcGVydHkoTlBQ
IG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYg
KG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAgIEphdmFTY3JpcHRP
YmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCisgICAgICAgIEphdmFTY3JpcHRP
YmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsKIAotCWlmICghX2lzU2FmZVNjcmlw
dChvYmopKQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFfaXNTYWZlU2NyaXB0KG9iaikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmot
PmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKIApAQCAtMzM5
LDI2ICszNDYsMjcgQEANCiAKICAgICAgICAgaWYgKGktPmlzU3RyaW5nKQogICAgICAgICAgICAg
cmV0dXJuIG9iai0+aW1wLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudGlmaWVyRnJvbU5QSWRlbnRp
ZmllcihpLT52YWx1ZS5zdHJpbmcpKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIG9iai0+
aW1wLT5oYXNQcm9wZXJ0eShleGVjLCBpLT52YWx1ZS5udW1iZXIpOwogICAgIH0gZWxzZSBpZiAo
by0+X2NsYXNzLT5oYXNQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIG8tPl9jbGFzcy0+aGFzUHJv
cGVydHkgKG8sIHByb3BlcnR5TmFtZSk7Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgX05QTl9IYXNNZXRob2QoTlBQIG5wcCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciBt
ZXRob2ROYW1lKQorRVhQT1JUX0MKK2Jvb2wgTlBOX0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVj
dCAqbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBO
UFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChK
YXZhU2NyaXB0T2JqZWN0ICopbzsgCi0gICAgICAgIAotCWlmICghX2lzU2FmZVNjcmlwdChvYmop
KQotCSAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChK
YXZhU2NyaXB0T2JqZWN0ICopbzsKIAorICAgIGlmICghX2lzU2FmZVNjcmlwdChvYmopKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgUHJpdmF0ZUlkZW50aWZpZXIgKmkgPSAoUHJp
dmF0ZUlkZW50aWZpZXIgKiltZXRob2ROYW1lOwogICAgICAgICBpZiAoIWktPmlzU3RyaW5nKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCisKICAgICAgICAgLy8gTG9v
a3VwIHRoZSBmdW5jdGlvbiBvYmplY3QuCiAgICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IG9iai0+
ZXhlY3V0aW9uQ29udGV4dC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFsRXhlYygpOwogCkBAIC0zNjgs
MjEgKzM3NiwyMiBAQA0KICAgICAgICAgaWYgKGZ1bmMuaXNOdWxsKCkgfHwgZnVuYy50eXBlKCkg
PT0gVW5kZWZpbmVkVHlwZSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIGVs
c2UgaWYgKG8tPl9jbGFzcy0+aGFzTWV0aG9kKSB7CiAgICAgICAgIHJldHVybiBvLT5fY2xhc3Mt
Pmhhc01ldGhvZCAobywgbWV0aG9kTmFtZSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIF9OUE5fU2V0RXhjZXB0aW9uIChOUE9iamVjdCAqbywgY29uc3QgTlBV
VEY4ICptZXNzYWdlKQorRVhQT1JUX0MKK3ZvaWQgTlBOX1NldEV4Y2VwdGlvbiAoTlBPYmplY3Qg
Km8sIGNvbnN0IE5QVVRGOCAqbWVzc2FnZSkKIHsKICAgICBpZiAoby0+X2NsYXNzID09IE5QU2Ny
aXB0T2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFT
Y3JpcHRPYmplY3QgKilvOyAKKyAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAqb2JqID0gKEphdmFT
Y3JpcHRPYmplY3QgKilvOwogICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBvYmotPmV4ZWN1dGlv
bkNvbnRleHQtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKTsKICAgICAgICAgSW50ZXJwcmV0
ZXJMb2NrIGxvY2s7CiAgICAgICAgIE9iamVjdCBlcnIgPSBFcnJvcjo6Y3JlYXRlKGV4ZWMsIEdl
bmVyYWxFcnJvciwgbWVzc2FnZSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9q
c29iamVjdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNv
YmplY3QuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvTlBf
anNvYmplY3QuaAkod29ya2luZyBjb3B5KQ0KQEAgLTQ1LDYgKzQ1LDcgQEANCiAgICAgY29uc3Qg
S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dDsKIH0gSmF2YVNjcmlw
dE9iamVjdDsKIAorSU1QT1JUX0MKIE5QT2JqZWN0ICpfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAo
TlBQIG5wcCwgS0pTOjpPYmplY3RJbXAgKmltcCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9i
amVjdCAqb3JpZ2luRXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9i
amVjdCAqZXhlY3V0aW9uQ29udGV4dCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDogSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvbnBhcGkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL25wYXBpLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL25wYXBpLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xLDEwICsxLDExIEBADQorLyog
LSotIE1vZGU6IEM7IHRhYi13aWR0aDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2lj
LW9mZnNldDogMiAtKi0gKi8KIC8qICoqKioqIEJFR0lOIExJQ0VOU0UgQkxPQ0sgKioqKioKLSAq
IFZlcnNpb246IE1QTCAxLjEvR1BMIDIuMC9MR1BMIDIuMQorICogVmVyc2lvbjogTlBMIDEuMS9H
UEwgMi4wL0xHUEwgMi4xCiAgKgotICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3Vi
amVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCi0gKiAxLjEgKHRoZSAi
TGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGgKLSAqIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworICogVGhlIGNvbnRlbnRzIG9m
IHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTmV0c2NhcGUgUHVibGljIExpY2Vuc2UKKyAq
IFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL05QTC8K
ICAqCiAgKiBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLAogICogV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlCkBAIC0xOSwxMTEg
KzIwLDIxMCBAQA0KICAqIHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KICAqCiAgKiBDb250cmlidXRvcihzKToKKyAqICAgIFBvcnRpb25zIENvcHlyaWdodCAoYykg
MjAwNC0yMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgogICoKKyAqCiAgKiBBbHRlcm5hdGl2ZWx5LCB0
aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZgog
ICogZWl0aGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIgb3IgbGF0
ZXIgKHRoZSAiR1BMIiksIG9yCiAgKiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIFZlcnNpb24gMi4xIG9yIGxhdGVyICh0aGUgIkxHUEwiKSwKICAqIGluIHdoaWNoIGNhc2Ug
dGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBvciB0aGUgTEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0
ZWFkCiAgKiBvZiB0aG9zZSBhYm92ZS4gSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIg
dmVyc2lvbiBvZiB0aGlzIGZpbGUgb25seQogICogdW5kZXIgdGhlIHRlcm1zIG9mIGVpdGhlciB0
aGUgR1BMIG9yIHRoZSBMR1BMLCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0bwotICogdXNlIHlv
dXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNUEwsIGluZGlj
YXRlIHlvdXIKKyAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgTlBMLCBpbmRpY2F0ZSB5b3VyCiAgKiBkZWNpc2lvbiBieSBkZWxldGluZyB0aGUg
cHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQogICogYW5k
IG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTCBvciB0aGUgTEdQTC4gSWYgeW91
IGRvIG5vdCBkZWxldGUKICAqIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkg
dXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKLSAqIHRoZSB0ZXJtcyBvZiBhbnkg
b25lIG9mIHRoZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCisgKiB0aGUgdGVybXMgb2YgYW55
IG9uZSBvZiB0aGUgTlBMLCB0aGUgR1BMIG9yIHRoZSBMR1BMLgogICoKICAqICoqKioqIEVORCBM
SUNFTlNFIEJMT0NLICoqKioqICovCi0gCi0gCi0gLyoKLSAgKiAgTmV0c2NhcGUgY2xpZW50IHBs
dWctaW4gQVBJIHNwZWMKLSAgKi8KLSAKIAorLyogTk9URVM6CisgKiBOb2tpYSBtb2RpZmllZCB0
aGlzIGZpbGUsIGJ5IGNoYW5naW5nIGNlcnRhaW4gdmFyaWFibGVzIGZvciB0aGUgcHVycG9zZSBv
ZgorICogcG9ydGluZyB0aGUgZmlsZSB0byB0aGUgU3ltYmlhbiBwbGF0Zm9ybSBvbiBNYXkgMXN0
LCAyMDA0LgorICovCisKKworLyoKKyAqICBucGFwaS5oICRSZXZpc2lvbiQKKyAqICBOZXRzY2Fw
ZSBjbGllbnQgcGx1Zy1pbiBBUEkgc3BlYworICovCisKICNpZm5kZWYgX05QQVBJX0hfCiAjZGVm
aW5lIF9OUEFQSV9IXwogCi0jaWZkZWYgSU5DTFVERV9KQVZBCisjaWZkZWYgX19PUzJfXworI3By
YWdtYSBwYWNrKDEpCisjZW5kaWYKKworI2luY2x1ZGUgInBydHlwZXMuaCIKKy8qIENvcGllZCBm
cm9tIHhwX2NvcmUuaCAqLworLyogcmVtb3ZlZCAjaWZkZWYgZm9yIGhwdXggZGVmaW5lZCBpbiAv
dXNyL2luY2x1ZGUvbW9kZWwuaCAqLworI2lmbmRlZiBYUF9NQUMKKyNpZm5kZWYgX0lOVDE2Cisj
ZGVmaW5lIF9JTlQxNgorI2VuZGlmCisjaWZuZGVmIF9JTlQzMgorI2RlZmluZSBfSU5UMzIKKyNl
bmRpZgorI2lmbmRlZiBfVUlOVDE2CisjZGVmaW5lIF9VSU5UMTYKKyNlbmRpZgorI2lmbmRlZiBf
VUlOVDMyCisjZGVmaW5lIF9VSU5UMzIKKyNlbmRpZgorI2VuZGlmCisKKy8qCisgKiBOT19OU1BS
XzEwX1NVUFBPUlQgZGlzYWJsZXMgdGhlIGluY2x1c2lvbgorICogb2Ygb2Jzb2xldGUvcHJvdHlw
ZXMuaCwgd2hvc2UgaW50MTYsIHVpbnQxNiwKKyAqIGludDMyLCBhbmQgdWludDMyIHR5cGVkZWZz
IGNvbmZsaWN0IHdpdGggdGhvc2UKKyAqIGluIHRoaXMgZmlsZS4KKyAqLworI2lmbmRlZiBOT19O
U1BSXzEwX1NVUFBPUlQKKyNkZWZpbmUgTk9fTlNQUl8xMF9TVVBQT1JUCisjZW5kaWYKKyNpZmRl
ZiBPSkkKICNpbmNsdWRlICJqcmkuaCIgICAgICAgICAgICAgICAgLyogSmF2YSBSdW50aW1lIElu
dGVyZmFjZSAqLwotI2Vsc2UKLSNkZWZpbmUganJlZiAgICB2b2lkICoKLSNkZWZpbmUgSlJJRW52
ICB2b2lkCiAjZW5kaWYKIAorI2lmIGRlZmluZWQgKF9fT1MyX18gKSB8fCBkZWZpbmVkIChPUzIp
CisjIGlmbmRlZiBYUF9PUzIKKyMgICBkZWZpbmUgWFBfT1MyIDEKKyMgZW5kaWYgLyogWFBfT1My
ICovCisjZW5kaWYgLyogX19PUzJfXyAqLworCiAjaWZkZWYgX1dJTkRPV1MKLSMgICAgaWZuZGVm
IFhQX1dJTgotIyAgICAgICAgZGVmaW5lIFhQX1dJTiAxCi0jICAgIGVuZGlmIC8qIFhQX1dJTiAq
LworIyBpbmNsdWRlIDx3aW5kZWYuaD4KKyMgaWZuZGVmIFhQX1dJTgorIyAgIGRlZmluZSBYUF9X
SU4gMQorIyBlbmRpZiAvKiBYUF9XSU4gKi8KICNlbmRpZiAvKiBfV0lORE9XUyAqLwogCiAjaWZk
ZWYgX19NV0VSS1NfXwotIyAgICBkZWZpbmUgX2RlY2xzcGVjIF9fZGVjbHNwZWMKLSMgICAgaWZk
ZWYgbWFjaW50b3NoCi0jICAgICAgICBpZm5kZWYgWFBfTUFDCi0jICAgICAgICAgICAgZGVmaW5l
IFhQX01BQyAxCi0jICAgICAgICBlbmRpZiAvKiBYUF9NQUMgKi8KLSMgICAgZW5kaWYgLyogbWFj
aW50b3NoICovCi0jICAgIGlmZGVmIF9fSU5URUxfXwotIyAgICAgICAgdW5kZWYgTlVMTAotIyAg
ICAgICAgaWZuZGVmIFhQX1dJTgotIyAgICAgICAgICAgIGRlZmluZSBYUF9XSU4gMQotIyAgICAg
ICAgZW5kaWYgLyogX19JTlRFTF9fICovCi0jICAgIGVuZGlmIC8qIFhQX1BDICovCisjIGRlZmlu
ZSBfZGVjbHNwZWMgX19kZWNsc3BlYworIyBpZmRlZiBtYWNpbnRvc2gKKyMgICBpZm5kZWYgWFBf
TUFDCisjICAgICBkZWZpbmUgWFBfTUFDIDEKKyMgICBlbmRpZiAvKiBYUF9NQUMgKi8KKyMgZW5k
aWYgLyogbWFjaW50b3NoICovCisjIGlmZGVmIF9fSU5URUxfXworIyAgIHVuZGVmIE5VTEwKKyMg
ICBpZm5kZWYgWFBfV0lOCisjICAgICBkZWZpbmUgWFBfV0lOIDEKKyMgICBlbmRpZiAvKiBYUF9X
SU4gKi8KKyMgZW5kaWYgLyogX19JTlRFTF9fICovCiAjZW5kaWYgLyogX19NV0VSS1NfXyAqLwog
Ci0jaWYgZGVmaW5lZChfX0FQUExFX0NDX18pICYmICFkZWZpbmVkKF9fTUFDT1NfQ0xBU1NJQ19f
KQotIyAgIGRlZmluZSBYUF9NQUNPU1gKKyNpZm5kZWYgX19TWU1CSUFOMzJfXworI2lmIGRlZmlu
ZWQoWFBfTUFDKSB8fCBkZWZpbmVkKFhQX01BQ09TWCkKKyAgI2luY2x1ZGUgPFF1aWNrZHJhdy5o
PgorICAjaW5jbHVkZSA8RXZlbnRzLmg+CiAjZW5kaWYKIAotI2lmZGVmIFhQX01BQwotICAgICNp
bmNsdWRlIDxRdWlja2RyYXcuaD4KLSAgICAjaW5jbHVkZSA8RXZlbnRzLmg+CisjaWYgZGVmaW5l
ZChYUF9VTklYKQorIyBpbmNsdWRlIDxzdGRpby5oPgorIyBpZiBkZWZpbmVkKE1PWl9YMTEpCisj
ICAgaW5jbHVkZSA8WDExL1hsaWIuaD4KKyMgICBpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKyMgZW5k
aWYKICNlbmRpZgotCi0jaWZkZWYgWFBfTUFDT1NYCi0gICAgI2luY2x1ZGUgPENhcmJvbi9DYXJi
b24uaD4KLSAgICAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmg+CisjZWxzZQorY2xhc3MgVERlc0M4OworY2xhc3MgVERlc0MxNjsKK2NsYXNzIEhCdWZD
MTY7CitjbGFzcyBDRGVzQ0FycmF5OworI2luY2x1ZGUgPGUzMmRlZi5oPgogI2VuZGlmCiAKLSNp
ZmRlZiBYUF9VTklYCi0gICAgI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0gICAgI2luY2x1ZGUgPFgx
MS9YdXRpbC5oPgotI2VuZGlmCi0KLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qICAgICAgICAgICAg
IFBsdWdpbiBWZXJzaW9uIENvbnN0YW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIFBsdWdpbiBWZXJzaW9uIENvbnN0YW50cyAg
ICAgICAgICAgICAgICAgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogI2RlZmluZSBOUF9W
RVJTSU9OX01BSk9SIDAKLSNkZWZpbmUgTlBfVkVSU0lPTl9NSU5PUiAxNAorI2RlZmluZSBOUF9W
RVJTSU9OX01JTk9SIDEzCiAKIAorLyogVGhlIE9TLzIgdmVyc2lvbiBvZiBOZXRzY2FwZSB1c2Vz
IFJDX0RBVEEgdG8gZGVmaW5lIHRoZQorICAgbWltZSB0eXBlcywgZmlsZSBleHRlbnRpb25zLCBl
dGMgdGhhdCBhcmUgcmVxdWlyZWQuCisgICBVc2UgYSB2ZXJ0aWNhbCBiYXIgdG8gc2VwYXJhdGUg
dHlwZXMsIGVuZCB0eXBlcyB3aXRoIFwwLgorICAgRmlsZVZlcnNpb24gYW5kIFByb2R1Y3RWZXJz
aW9uIGFyZSAzMmJpdCBpbnRzLCBhbGwgb3RoZXIKKyAgIGVudHJpZXMgYXJlIHN0cmluZ3MgdGhl
IE1VU1QgYmUgdGVybWluYXRlZCB3d2l0aCBhIFwwLgogCitBTiBFWEFNUExFOgorCitSQ0RBVEEg
TlBfSU5GT19Qcm9kdWN0VmVyc2lvbiB7IDEsMCwwLDEsfQorCitSQ0RBVEEgTlBfSU5GT19NSU1F
VHlwZSAgICB7ICJ2aWRlby94LXZpZGVvfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ2aWRlby94LWZsaWNrXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVFeHRlbnRzIHsgImF2aXwi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxjXDAiIH0KK1JDREFUQSBOUF9JTkZP
X0ZpbGVPcGVuTmFtZXsgIk1NT1MyIHZpZGVvIHBsYXllcigqLmF2aSl8IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1NT1MyIEZsYy9GbGkgcGxheWVyKCouZmxjKVwwIiB9CisKK1JD
REFUQSBOUF9JTkZPX0ZpbGVWZXJzaW9uICAgICAgIHsgMSwwLDAsMSB9CitSQ0RBVEEgTlBfSU5G
T19Db21wYW55TmFtZSAgICAgICB7ICJOZXRzY2FwZSBDb21tdW5pY2F0aW9uc1wwIiB9CitSQ0RB
VEEgTlBfSU5GT19GaWxlRGVzY3JpcHRpb24gICB7ICJOUEFWSTMyIEV4dGVuc2lvbiBETExcMCIK
K1JDREFUQSBOUF9JTkZPX0ludGVybmFsTmFtZSAgICAgIHsgIk5QQVZJMzJcMCIgKQorUkNEQVRB
IE5QX0lORk9fTGVnYWxDb3B5cmlnaHQgICAgeyAiQ29weXJpZ2h0IE5ldHNjYXBlIENvbW11bmlj
YXRpb25zIFwyNTEgMTk5NlwwIgorUkNEQVRBIE5QX0lORk9fT3JpZ2luYWxGaWxlbmFtZSAgeyAi
TlZBUEkzMi5ETEwiIH0KK1JDREFUQSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAgIHsgIk5QQVZJ
MzIgRHluYW1pYyBMaW5rIExpYnJhcnlcMCIgfQorCisqLworCisKKy8qIFJDX0RBVEEgdHlwZXMg
Zm9yIHZlcnNpb24gaW5mbyAtIHJlcXVpcmVkICovCisjZGVmaW5lIE5QX0lORk9fUHJvZHVjdFZl
cnNpb24gICAgICAxCisjZGVmaW5lIE5QX0lORk9fTUlNRVR5cGUgICAgICAgICAgICAyCisjZGVm
aW5lIE5QX0lORk9fRmlsZU9wZW5OYW1lICAgICAgICAzCisjZGVmaW5lIE5QX0lORk9fRmlsZUV4
dGVudHMgICAgICAgICA0CisKKy8qIFJDX0RBVEEgdHlwZXMgZm9yIHZlcnNpb24gaW5mbyAtIHVz
ZWQgaWYgZm91bmQgKi8KKyNkZWZpbmUgTlBfSU5GT19GaWxlRGVzY3JpcHRpb24gICAgIDUKKyNk
ZWZpbmUgTlBfSU5GT19Qcm9kdWN0TmFtZSAgICAgICAgIDYKKworLyogUkNfREFUQSB0eXBlcyBm
b3IgdmVyc2lvbiBpbmZvIC0gb3B0aW9uYWwgKi8KKyNkZWZpbmUgTlBfSU5GT19Db21wYW55TmFt
ZSAgICAgICAgIDcKKyNkZWZpbmUgTlBfSU5GT19GaWxlVmVyc2lvbiAgICAgICAgIDgKKyNkZWZp
bmUgTlBfSU5GT19JbnRlcm5hbE5hbWUgICAgICAgIDkKKyNkZWZpbmUgTlBfSU5GT19MZWdhbENv
cHlyaWdodCAgICAgIDEwCisjZGVmaW5lIE5QX0lORk9fT3JpZ2luYWxGaWxlbmFtZSAgICAxMQor
CisjaWZuZGVmIFJDX0lOVk9LRUQKKworCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiAgICAgICAg
ICAgICBEZWZpbml0aW9uIG9mIEJhc2ljIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gb2YgQmFzaWMgVHlw
ZXMgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZm5kZWYg
X1VJTlQxNgogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTY7CiAjZW5kaWYKKwogI2lmbmRl
ZiBfVUlOVDMyCi0jaWYgZGVmaW5lZChfX2FscGhhKQorIyAgICBpZiBkZWZpbmVkKF9fYWxwaGEp
CiB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzI7Ci0jZWxzZSAvKiBfX2FscGhhICovCisjICAg
IGVsc2UgIC8qIF9fYWxwaGEgKi8KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50MzI7Ci0jZW5k
aWYgLyogX19hbHBoYSAqLworIyAgICBlbmRpZiAvKiBfX2FscGhhICovCiAjZW5kaWYKKworLyoK
KyAqIEFJWCBkZWZpbmVzIHRoZXNlIGluIHN5cy9pbnR0eXBlcy5oIGluY2x1ZGVkIGZyb20gc3lz
L3R5cGVzLmgKKyAqLworI2lmbmRlZiBBSVgKICNpZm5kZWYgX0lOVDE2CiB0eXBlZGVmIHNob3J0
IGludDE2OwogI2VuZGlmCisKICNpZm5kZWYgX0lOVDMyCi0jaWYgZGVmaW5lZChfX2FscGhhKQor
IyAgICBpZiBkZWZpbmVkKF9fYWxwaGEpCiB0eXBlZGVmIGludCBpbnQzMjsKLSNlbHNlIC8qIF9f
YWxwaGEgKi8KKyMgICAgZWxzZSAgLyogX19hbHBoYSAqLwogdHlwZWRlZiBsb25nIGludDMyOwot
I2VuZGlmIC8qIF9fYWxwaGEgKi8KKyMgICAgZW5kaWYgLyogX19hbHBoYSAqLwogI2VuZGlmCisj
ZW5kaWYKIAogI2lmbmRlZiBGQUxTRQogI2RlZmluZSBGQUxTRSAoMCkKQEAgLTEzNSwxNSArMjM1
LDE5IEBADQogI2RlZmluZSBOVUxMICgwTCkKICNlbmRpZgogCi10eXBlZGVmIHVuc2lnbmVkIGNo
YXIgICAgTlBCb29sOwotdHlwZWRlZiBpbnQxNiAgICAgICAgICAgIE5QRXJyb3I7Ci10eXBlZGVm
IGludDE2ICAgICAgICAgICAgTlBSZWFzb247Ci10eXBlZGVmIGNoYXIqICAgICAgICAgICAgTlBN
SU1FVHlwZTsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBOUEJvb2w7Cit0eXBlZGVmIGludDE2ICAg
ICBOUEVycm9yOwordHlwZWRlZiBpbnQxNiAgICAgTlBSZWFzb247CisjaWZuZGVmIF9fU1lNQklB
TjMyX18KK3R5cGVkZWYgY2hhciogICAgIE5QTUlNRVR5cGU7CisjZWxzZS8qIF9fU1lNQklBTjMy
X18gKi8KK3R5cGVkZWYgY29uc3QgVERlc0M4JiBOUE1JTUVUeXBlOworI2VuZGlmCiAKIAogCiAv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgU3RydWN0dXJlcyBhbmQgZGVmaW5pdGlv
bnMgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVzIGFu
ZCBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICovCiAvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwog
CiAjaWZkZWYgWFBfTUFDCkBAIC0xNTUsNDcgKzI1OSw1NiBAQA0KICAqLwogdHlwZWRlZiBzdHJ1
Y3QgX05QUAogewotICAgIHZvaWQqICAgIHBkYXRhOyAgICAgICAgICAgIC8qIHBsdWctaW4gcHJp
dmF0ZSBkYXRhICovCi0gICAgdm9pZCogICAgbmRhdGE7ICAgICAgICAgICAgLyogbmV0c2NhcGUg
cHJpdmF0ZSBkYXRhICovCisgIHZvaWQqIHBkYXRhOyAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBk
YXRhICovCisgIHZvaWQqIG5kYXRhOyAgICAgIC8qIG5ldHNjYXBlIHByaXZhdGUgZGF0YSAqLwog
fSBOUFBfdDsKIAotdHlwZWRlZiBOUFBfdCogICAgTlBQOwordHlwZWRlZiBOUFBfdCogIE5QUDsK
IAogCiB0eXBlZGVmIHN0cnVjdCBfTlBTdHJlYW0KIHsKLSAgICB2b2lkKiAgICAgICAgcGRhdGE7
ICAgICAgICAvKiBwbHVnLWluIHByaXZhdGUgZGF0YSAqLwotICAgIHZvaWQqICAgICAgICBuZGF0
YTsgICAgICAgIC8qIG5ldHNjYXBlIHByaXZhdGUgZGF0YSAqLwotICAgIGNvbnN0IGNoYXIqICB1
cmw7Ci0gICAgdWludDMyICAgICAgIGVuZDsKLSAgICB1aW50MzIgICAgICAgbGFzdG1vZGlmaWVk
OwotICAgIHZvaWQqICAgICAgICBub3RpZnlEYXRhOworICB2b2lkKiAgcGRhdGE7IC8qIHBsdWct
aW4gcHJpdmF0ZSBkYXRhICovCisgIHZvaWQqICBuZGF0YTsgLyogbmV0c2NhcGUgcHJpdmF0ZSBk
YXRhICovCisjaWZuZGVmIF9fU1lNQklBTjMyX18KKyAgY29uc3QgIGNoYXIqIHVybDsKKyNlbHNl
LyogX19TWU1CSUFOMzJfXyAqLworICBIQnVmQzE2KiAgdXJsOworI2VuZGlmCisgIHVpbnQzMiBl
bmQ7CisgIHVpbnQzMiBsYXN0bW9kaWZpZWQ7CisgIHZvaWQqICBub3RpZnlEYXRhOwogfSBOUFN0
cmVhbTsKIAogCiB0eXBlZGVmIHN0cnVjdCBfTlBCeXRlUmFuZ2UKIHsKLSAgICBpbnQzMiAgICAg
IG9mZnNldDsgICAgICAgICAvKiBuZWdhdGl2ZSBvZmZzZXQgbWVhbnMgZnJvbSB0aGUgZW5kICov
Ci0gICAgdWludDMyICAgICBsZW5ndGg7Ci0gICAgc3RydWN0IF9OUEJ5dGVSYW5nZSogbmV4dDsK
KyAgaW50MzIgIG9mZnNldDsgLyogbmVnYXRpdmUgb2Zmc2V0IG1lYW5zIGZyb20gdGhlIGVuZCAq
LworICB1aW50MzIgbGVuZ3RoOworICBzdHJ1Y3QgX05QQnl0ZVJhbmdlKiBuZXh0OwogfSBOUEJ5
dGVSYW5nZTsKIAogCiB0eXBlZGVmIHN0cnVjdCBfTlBTYXZlZERhdGEKIHsKLSAgICBpbnQzMiAg
ICBsZW47Ci0gICAgdm9pZCogICAgYnVmOworICBpbnQzMiBsZW47CisgIHZvaWQqIGJ1ZjsKIH0g
TlBTYXZlZERhdGE7CiAKIAogdHlwZWRlZiBzdHJ1Y3QgX05QUmVjdAogewotICAgIHVpbnQxNiAg
ICB0b3A7Ci0gICAgdWludDE2ICAgIGxlZnQ7Ci0gICAgdWludDE2ICAgIGJvdHRvbTsKLSAgICB1
aW50MTYgICAgcmlnaHQ7CisgIHVpbnQxNiB0b3A7CisgIHVpbnQxNiBsZWZ0OworICB1aW50MTYg
Ym90dG9tOworICB1aW50MTYgcmlnaHQ7CiB9IE5QUmVjdDsKIAordHlwZWRlZiBzdHJ1Y3QgX05Q
U2l6ZQoreworICBpbnQzMiB3aWR0aDsKKyAgaW50MzIgaGVpZ2h0OworfSBOUFNpemU7CiAKICNp
ZmRlZiBYUF9VTklYCiAvKgpAQCAtMjA4LDQ4ICszMjEsNTEgQEANCiAgKiBUaGVzZSBhcmUgdXNl
ZCB0byBwYXNzIGFkZGl0aW9uYWwgcGxhdGZvcm0gc3BlY2lmaWMgaW5mb3JtYXRpb24uCiAgKi8K
IGVudW0gewotICAgIE5QX1NFVFdJTkRPVyA9IDEsCi0gICAgTlBfUFJJTlQKKyAgTlBfU0VUV0lO
RE9XID0gMSwKKyAgTlBfUFJJTlQKIH07CiAKIHR5cGVkZWYgc3RydWN0CiB7Ci0gICAgaW50MzIg
ICAgICAgIHR5cGU7CisgIGludDMyIHR5cGU7CiB9IE5QQW55Q2FsbGJhY2tTdHJ1Y3Q7CiAKIHR5
cGVkZWYgc3RydWN0CiB7Ci0gICAgaW50MzIgICAgICAgICAgIHR5cGU7Ci0gICAgRGlzcGxheSog
ICAgICAgIGRpc3BsYXk7Ci0gICAgVmlzdWFsKiAgICAgICAgIHZpc3VhbDsKLSAgICBDb2xvcm1h
cCAgICAgICAgY29sb3JtYXA7Ci0gICAgdW5zaWduZWQgaW50ICAgIGRlcHRoOworICBpbnQzMiAg
ICAgICAgdHlwZTsKKyNpZmRlZiBNT1pfWDExCisgIERpc3BsYXkqICAgICBkaXNwbGF5OworICBW
aXN1YWwqICAgICAgdmlzdWFsOworICBDb2xvcm1hcCAgICAgY29sb3JtYXA7CisgIHVuc2lnbmVk
IGludCBkZXB0aDsKKyNlbmRpZgogfSBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0OwogCiB0eXBl
ZGVmIHN0cnVjdAogewotICAgIGludDMyICAgICAgICAgICAgdHlwZTsKLSAgICBGSUxFKiAgICAg
ICAgICAgIGZwOworICBpbnQzMiB0eXBlOworICBGSUxFKiBmcDsKIH0gTlBQcmludENhbGxiYWNr
U3RydWN0OwogCiAjZW5kaWYgLyogWFBfVU5JWCAqLwogCisKIC8qCi0gKiAgIFRoZSBmb2xsb3dp
bmcgbWFza3MgYXJlIGFwcGxpZWQgb24gY2VydGFpbiBwbGF0Zm9ybXMgdG8gTlBOViBhbmQgCi0g
KiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVy
ZmFjZXMuIE5ld2VyIAotICogICBjb21waWxlcnMgb24gc29tZSBwbGF0Zm9ybXMgbWF5IGdlbmVy
YXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90IAotICogICBjb21wYXRpYmxlIHdpdGggb2xkZXIgY29t
cGlsZXJzLiBUbyBwcmV2ZW50IG9sZGVyIHBsdWdpbnMgZnJvbSAKLSAqICAgbm90IHVuZGVyc3Rh
bmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2UgbWFza3MgY2hhbmdlIHRoZSAKKyAqICAg
VGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0byBO
UE5WIGFuZAorICogICBOUFBWIHNlbGVjdG9ycyB0aGF0IHBhc3MgYXJvdW5kIHBvaW50ZXJzIHRv
IENPTSBpbnRlcmZhY2VzLiBOZXdlcgorICogICBjb21waWxlcnMgb24gc29tZSBwbGF0Zm9ybXMg
bWF5IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90CisgKiAgIGNvbXBhdGlibGUgd2l0aCBv
bGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBmcm9tCisgKiAgIG5vdCB1
bmRlcnN0YW5kaW5nIGEgbmV3IGJyb3dzZXIncyBBQkksIHRoZXNlIG1hc2tzIGNoYW5nZSB0aGUK
ICAqICAgdmFsdWVzIG9mIHRob3NlIHNlbGVjdG9ycyBvbiB0aG9zZSBwbGF0Zm9ybXMuIFRvIHJl
bWFpbiBiYWNrd2FyZHMKLSAqICAgY29tcGF0aWJsZSB3aXRoIGRpZmZlcmVuZXQgdmVyc2lvbnMg
b2YgdGhlIGJyb3dzZXIsIHBsdWdpbnMgY2FuIAorICogICBjb21wYXRpYmxlIHdpdGggZGlmZmVy
ZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4KICAqICAgdXNlIHRoZXNl
IG1hc2tzIHRvIGR5bmFtaWNhbGx5IGRldGVybWluZSBhbmQgdXNlIHRoZSBjb3JyZWN0IEMrKwot
ICogICBBQkkgdGhhdCB0aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBw
bHkgdG8gV2luZG93cyAKKyAqICAgQUJJIHRoYXQgdGhlIGJyb3dzZXIgaXMgZXhwZWN0aW5nLiBU
aGlzIGRvZXMgbm90IGFwcGx5IHRvIFdpbmRvd3MKICAqICAgYXMgTWljcm9zb2Z0J3MgQ09NIEFC
SSB3aWxsIGxpa2VseSBub3QgY2hhbmdlLgogICovCiAKICNkZWZpbmUgTlBfQUJJX0dDQzNfTUFT
SyAgMHgxMDAwMDAwMAogLyoKLSAqICAgZ2NjIDMueCBnZW5lcmF0ZWQgdnRhYmxlcyBvbiBVTklY
IGFuZCBPU1ggYXJlIGluY29tcGF0aWJsZSB3aXRoIAorICogICBnY2MgMy54IGdlbmVyYXRlZCB2
dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdpdGgKICAqICAgcHJldmlv
dXMgY29tcGlsZXJzLgogICovCiAjaWYgKGRlZmluZWQgKFhQX1VOSVgpICYmIGRlZmluZWQoX19H
TlVDX18pICYmIChfX0dOVUNfXyA+PSAzKSkKQEAgLTI1OCwxMyArMzc0LDE0IEBADQogI2RlZmlu
ZSBfTlBfQUJJX01JWElOX0ZPUl9HQ0MzIDAKICNlbmRpZgogCisKICNkZWZpbmUgTlBfQUJJX01B
Q0hPX01BU0sgMHgwMTAwMDAwMAogLyoKICAqICAgT24gT1NYLCB0aGUgTWFjaC1PIGV4ZWN1dGFi
bGUgZm9ybWF0IGlzIHNpZ25pZmljYW50bHkKICAqICAgZGlmZmVyZW50IHRoYW4gQ0ZNLiBJbiBh
ZGRpdGlvbiB0byBoYXZpbmcgYSBkaWZmZXJlbnQKICAqICAgQysrIEFCSSwgaXQgYWxzbyBoYXMg
aGFzIGRpZmZlcmVudCBDIGNhbGxpbmcgY29udmVudGlvbi4KICAqICAgWW91IG11c3QgdXNlIGds
dWUgY29kZSB3aGVuIGNhbGxpbmcgYmV0d2VlbiBDRk0gYW5kCi0gKiAgIE1hY2gtTyBDIGZ1bmN0
aW9ucy4gCisgKiAgIE1hY2gtTyBDIGZ1bmN0aW9ucy4KICAqLwogI2lmIChkZWZpbmVkKFRBUkdF
VF9SVF9NQUNfTUFDSE8pKQogI2RlZmluZSBfTlBfQUJJX01JWElOX0ZPUl9NQUNITyBOUF9BQklf
TUFDSE9fTUFTSwpAQCAtMjc5LDUwICszOTYsNDggQEANCiAgKiBMaXN0IG9mIHZhcmlhYmxlIG5h
bWVzIGZvciB3aGljaCBOUFBfR2V0VmFsdWUgc2hhbGwgYmUgaW1wbGVtZW50ZWQKICAqLwogdHlw
ZWRlZiBlbnVtIHsKLSAgICBOUFBWcGx1Z2luTmFtZVN0cmluZyA9IDEsCi0gICAgTlBQVnBsdWdp
bkRlc2NyaXB0aW9uU3RyaW5nLAotICAgIE5QUFZwbHVnaW5XaW5kb3dCb29sLAotICAgIE5QUFZw
bHVnaW5UcmFuc3BhcmVudEJvb2wsCisgIE5QUFZwbHVnaW5OYW1lU3RyaW5nID0gMSwKKyAgTlBQ
VnBsdWdpbkRlc2NyaXB0aW9uU3RyaW5nLAorICBOUFBWcGx1Z2luV2luZG93Qm9vbCwKKyAgTlBQ
VnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVmphdmFDbGFzcywgICAgICAgICAgICAgICAg
LyogTm90IGltcGxlbWVudGVkIGluIE1vemlsbGEgMS4wICovCisgIE5QUFZwbHVnaW5XaW5kb3dT
aXplLAorICBOUFBWcGx1Z2luVGltZXJJbnRlcnZhbCwKIAotICAgIE5QUFZqYXZhQ2xhc3MsICAg
ICAgICAgICAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUFBWcGx1
Z2luV2luZG93U2l6ZSwgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0g
ICAgTlBQVnBsdWdpblRpbWVySW50ZXJ2YWwsICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdl
YktpdCAqLworICBOUFBWcGx1Z2luU2NyaXB0YWJsZUluc3RhbmNlID0gKDEwIHwgTlBfQUJJX01B
U0spLAorICBOUFBWcGx1Z2luU2NyaXB0YWJsZUlJRCA9IDExLAogCi0gICAgTlBQVnBsdWdpblNj
cmlwdGFibGVJbnN0YW5jZSA9ICgxMCB8IE5QX0FCSV9NQVNLKSwgLyogTm90IGltcGxlbWVudGVk
IGluIFdlYktpdCAqLwotICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlSUlEID0gMTEsIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLQotICAgIC8qIDEyIGFuZCBvdmVyIGFyZSBhdmFpbGFi
bGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuOSAqLwotICAgIE5QUFZqYXZh
c2NyaXB0UHVzaENhbGxlckJvb2wgPSAxMiwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQg
Ki8KLSAgICBOUFBWcGx1Z2luS2VlcExpYnJhcnlJbk1lbW9yeSA9IDEzLCAvKiBOb3QgaW1wbGVt
ZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAx
NCwgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotCisgIC8qIDEyIGFuZCBvdmVyIGFy
ZSBhdmFpbGFibGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuOSAqLworICBO
UFBWamF2YXNjcmlwdFB1c2hDYWxsZXJCb29sID0gMTIsCisgIE5QUFZwbHVnaW5LZWVwTGlicmFy
eUluTWVtb3J5ID0gMTMsICAgLyogYXZhaWxhYmxlIGluIE1vemlsbGEgMS4wICovCisgIE5QUFZw
bHVnaW5OZWVkc1hFbWJlZCAgICAgICAgID0gMTQsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJL
aXQgKi8KICAgICAvKiBHZXQgdGhlIE5QT2JqZWN0IGZvciBzY3JpcHRpbmcgdGhlIHBsdWdpbi4g
Ki8KLSAgICBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0ICA9IDE1CisgIE5QUFZwbHVnaW5T
Y3JpcHRhYmxlTlBPYmplY3QgID0gMTUKIH0gTlBQVmFyaWFibGU7CiAKIC8qCiAgKiBMaXN0IG9m
IHZhcmlhYmxlIG5hbWVzIGZvciB3aGljaCBOUE5fR2V0VmFsdWUgaXMgaW1wbGVtZW50ZWQgYnkg
TW96aWxsYQogICovCiB0eXBlZGVmIGVudW0gewotICAgIE5QTlZ4RGlzcGxheSA9IDEsCi0gICAg
TlBOVnh0QXBwQ29udGV4dCwKLSAgICBOUE5WbmV0c2NhcGVXaW5kb3csCi0gICAgTlBOVmphdmFz
Y3JpcHRFbmFibGVkQm9vbCwKLSAgICBOUE5WYXNkRW5hYmxlZEJvb2wsCi0gICAgTlBOVmlzT2Zm
bGluZUJvb2wsCisgIE5QTlZ4RGlzcGxheSA9IDEsCisgIE5QTlZ4dEFwcENvbnRleHQsCisgIE5Q
TlZuZXRzY2FwZVdpbmRvdywKKyAgTlBOVmphdmFzY3JpcHRFbmFibGVkQm9vbCwKKyAgTlBOVmFz
ZEVuYWJsZWRCb29sLAorICBOUE5WaXNPZmZsaW5lQm9vbCwKIAotICAgIC8qIDEwIGFuZCBvdmVy
IGFyZSBhdmFpbGFibGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0aCAwLjkuNCAqLwot
ICAgIE5QTlZzZXJ2aWNlTWFuYWdlciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUE5WRE9NRWxlbWVudCAgICAgPSAoMTEgfCBOUF9B
QklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gICAgTlBOVkRPTVdp
bmRvdyAgICAgID0gKDEyIHwgTlBfQUJJX01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdl
YktpdCAqLwotICAgIE5QTlZUb29sa2l0ICAgICAgICA9ICgxMyB8IE5QX0FCSV9NQVNLKSwgIC8q
IE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgICBOUE5WU3VwcG9ydHNYRW1iZWRCb29s
ID0gMTQsICAgICAgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIC8q
IDEwIGFuZCBvdmVyIGFyZSBhdmFpbGFibGUgb24gTW96aWxsYSBidWlsZHMgc3RhcnRpbmcgd2l0
aCAwLjkuNCAqLworICBOUE5Wc2VydmljZU1hbmFnZXIgPSAoMTAgfCBOUF9BQklfTUFTSyksCisg
IE5QTlZET01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgICAvKiBhdmFpbGFibGUg
aW4gTW96aWxsYSAxLjIgKi8KKyAgTlBOVkRPTVdpbmRvdyAgICAgID0gKDEyIHwgTlBfQUJJX01B
U0spLAorICBOUE5WVG9vbGtpdCAgICAgICAgPSAoMTMgfCBOUF9BQklfTUFTSyksICAvKiBOb3Qg
aW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwg
ICAgICAgICAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KIAotICAgIC8qIEdl
dCB0aGUgTlBPYmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLwotICAgIE5Q
TlZXaW5kb3dOUE9iamVjdCA9IDE1LAorICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9y
IHRoZSBicm93c2VyIHdpbmRvdy4gKi8KKyAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCiAKLSAg
ICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVnaW5zIERPTSBlbGVtZW50
LiAqLwotICAgIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3QgICAgICAgICAgICAgICAgIC8qIE5v
dCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVy
IGZvciB0aGUgcGx1Z2lucyBET00gZWxlbWVudC4gKi8KKyAgTlBOVlBsdWdpbkVsZW1lbnROUE9i
amVjdCAgICAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwogfSBO
UE5WYXJpYWJsZTsKIAogLyoKQEAgLTMzMCw3MSArNDQ1LDc4IEBADQogICogcmV0dXJuZWQgaW4g
dGhlIHdpbmRvdyBmaWVsZC4KICAqLwogdHlwZWRlZiBlbnVtIHsKLSAgICBOUFdpbmRvd1R5cGVX
aW5kb3cgPSAxLAotICAgIE5QV2luZG93VHlwZURyYXdhYmxlCisgIE5QV2luZG93VHlwZVdpbmRv
dyA9IDEsCisgIE5QV2luZG93VHlwZURyYXdhYmxlCiB9IE5QV2luZG93VHlwZTsKIAogdHlwZWRl
ZiBzdHJ1Y3QgX05QV2luZG93CiB7Ci0gICAgdm9pZCogICAgd2luZG93OyAgICAgLyogUGxhdGZv
cm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSAqLwotICAgIGludDMyICAgIHg7ICAgICAgICAgICAg
LyogUG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJlbGF0aXZlICovCi0gICAgaW50MzIgICAg
eTsgICAgICAgICAgICAvKiAgICB0byBhIG5ldHNjYXBlIHBhZ2UuICAgICAgICAgICAgICAgICAg
ICAqLwotICAgIHVpbnQzMiAgICB3aWR0aDsgICAgICAgIC8qIE1heGltdW0gd2luZG93IHNpemUg
Ki8KLSAgICB1aW50MzIgICAgaGVpZ2h0OwotICAgIE5QUmVjdCAgICBjbGlwUmVjdDsgICAgLyog
Q2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBvcnQgY29vcmRpbmF0ZXMgKi8KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFVzZWQgYnkgTUFDIG9ubHkuICAgICAgICAgICAgICAqLwotI2lmZGVmIFhQ
X1VOSVgKLSAgICB2b2lkICogICAgd3NfaW5mbzsgICAgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFk
ZGl0b25hbCBkYXRhICovCisgIHZvaWQqIHdpbmRvdzsgIC8qIFBsYXRmb3JtIHNwZWNpZmljIHdp
bmRvdyBoYW5kbGUgKi8KKyAgICAgICAgICAgICAgICAgLyogT1MvMjogeCAtIFBvc2l0aW9uIG9m
IGJvdHRvbSBsZWZ0IGNvcm5lciAgKi8KKyAgICAgICAgICAgICAgICAgLyogT1MvMjogeSAtIHJl
bGF0aXZlIHRvIHZpc2libGUgbmV0c2NhcGUgd2luZG93ICovCisgIGludDMyIHg7ICAgICAgIC8q
IFBvc2l0aW9uIG9mIHRvcCBsZWZ0IGNvcm5lciByZWxhdGl2ZSAqLworICBpbnQzMiB5OyAgICAg
ICAvKiB0byBhIG5ldHNjYXBlIHBhZ2UuICAgICAgICAgKi8KKyAgdWludDMyIHdpZHRoOyAgLyog
TWF4aW11bSB3aW5kb3cgc2l6ZSAqLworICB1aW50MzIgaGVpZ2h0OworICBOUFJlY3QgY2xpcFJl
Y3Q7IC8qIENsaXBwaW5nIHJlY3RhbmdsZSBpbiBwb3J0IGNvb3JkaW5hdGVzICovCisgICAgICAg
ICAgICAgICAgICAgLyogVXNlZCBieSBNQUMgb25seS4gICAgICAgKi8KKyNpZiBkZWZpbmVkKFhQ
X1VOSVgpICYmICFkZWZpbmVkKFhQX01BQ09TWCkKKyAgdm9pZCAqIHdzX2luZm87IC8qIFBsYXRm
b3JtLWRlcGVuZGVudCBhZGRpdG9uYWwgZGF0YSAqLwogI2VuZGlmIC8qIFhQX1VOSVggKi8KLSAg
ICBOUFdpbmRvd1R5cGUgdHlwZTsgICAgLyogSXMgdGhpcyBhIHdpbmRvdyBvciBhIGRyYXdhYmxl
PyAqLworICBOUFdpbmRvd1R5cGUgdHlwZTsgLyogSXMgdGhpcyBhIHdpbmRvdyBvciBhIGRyYXdh
YmxlPyAqLwogfSBOUFdpbmRvdzsKIAogCiB0eXBlZGVmIHN0cnVjdCBfTlBGdWxsUHJpbnQKIHsK
LSAgICBOUEJvb2wgICAgcGx1Z2luUHJpbnRlZDsgICAgLyogU2V0IFRSVUUgaWYgcGx1Z2luIGhh
bmRsZWQgZnVsbHNjcmVlbiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgIHBy
aW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIE5QQm9vbCAgICBwcmlu
dE9uZTsgICAgICAgIC8qIFRSVUUgaWYgcGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSAgKi8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICB0byBkZWZhdWx0IHByaW50ZXIgICAg
ICAgICAgICAgICAgICAgICAqLwotICAgIHZvaWQqICAgIHBsYXRmb3JtUHJpbnQ7ICAgIC8qIFBs
YXRmb3JtLXNwZWNpZmljIHByaW50aW5nIGluZm8gKi8KKyAgTlBCb29sIHBsdWdpblByaW50ZWQ7
LyogU2V0IFRSVUUgaWYgcGx1Z2luIGhhbmRsZWQgZnVsbHNjcmVlbiBwcmludGluZyAqLworICBO
UEJvb2wgcHJpbnRPbmU7ICAgICAvKiBUUlVFIGlmIHBsdWdpbiBzaG91bGQgcHJpbnQgb25lIGNv
cHkgdG8gZGVmYXVsdCBwcmludGVyICovCisgIHZvaWQqIHBsYXRmb3JtUHJpbnQ7IC8qIFBsYXRm
b3JtLXNwZWNpZmljIHByaW50aW5nIGluZm8gKi8KIH0gTlBGdWxsUHJpbnQ7CiAKIHR5cGVkZWYg
c3RydWN0IF9OUEVtYmVkUHJpbnQKIHsKLSAgICBOUFdpbmRvdyAgICB3aW5kb3c7Ci0gICAgdm9p
ZCogICAgcGxhdGZvcm1QcmludDsgICAgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5m
byAqLworICBOUFdpbmRvdyB3aW5kb3c7CisgIHZvaWQqIHBsYXRmb3JtUHJpbnQ7IC8qIFBsYXRm
b3JtLXNwZWNpZmljIHByaW50aW5nIGluZm8gKi8KIH0gTlBFbWJlZFByaW50OwogCiB0eXBlZGVm
IHN0cnVjdCBfTlBQcmludAogewotICAgIHVpbnQxNiAgICBtb2RlOyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8KLSAgICB1bmlvbgotICAgIHsKLSAgICAg
ICAgTlBGdWxsUHJpbnQgICAgIGZ1bGxQcmludDsgICAgICAgIC8qIGlmIG1vZGUgaXMgTlBfRlVM
TCAqLwotICAgICAgICBOUEVtYmVkUHJpbnQgICAgZW1iZWRQcmludDsgICAgICAgIC8qIGlmIG1v
ZGUgaXMgTlBfRU1CRUQgKi8KLSAgICB9IHByaW50OworICB1aW50MTYgbW9kZTsgICAgICAgICAg
ICAgICAvKiBOUF9GVUxMIG9yIE5QX0VNQkVEICovCisgIHVuaW9uCisgIHsKKyAgICBOUEZ1bGxQ
cmludCBmdWxsUHJpbnQ7ICAgLyogaWYgbW9kZSBpcyBOUF9GVUxMICovCisgICAgTlBFbWJlZFBy
aW50IGVtYmVkUHJpbnQ7IC8qIGlmIG1vZGUgaXMgTlBfRU1CRUQgKi8KKyAgfSBwcmludDsKIH0g
TlBQcmludDsKIAogI2lmIGRlZmluZWQoWFBfTUFDKSB8fCBkZWZpbmVkKFhQX01BQ09TWCkKLXR5
cGVkZWYgRXZlbnRSZWNvcmQgICAgTlBFdmVudDsKK3R5cGVkZWYgRXZlbnRSZWNvcmQgTlBFdmVu
dDsKICNlbGlmIGRlZmluZWQoWFBfV0lOKQogdHlwZWRlZiBzdHJ1Y3QgX05QRXZlbnQKIHsKLSAg
ICB1aW50MTYgICBldmVudDsKLSAgICB1aW50MzIgICB3UGFyYW07Ci0gICAgdWludDMyICAgbFBh
cmFtOworICB1aW50MTYgZXZlbnQ7CisgIHVpbnQzMiB3UGFyYW07CisgIHVpbnQzMiBsUGFyYW07
CiB9IE5QRXZlbnQ7Ci0jZWxpZiBkZWZpbmVkIChYUF9VTklYKQorI2VsaWYgZGVmaW5lZChYUF9P
UzIpCit0eXBlZGVmIHN0cnVjdCBfTlBFdmVudAoreworICB1aW50MzIgZXZlbnQ7CisgIHVpbnQz
MiB3UGFyYW07CisgIHVpbnQzMiBsUGFyYW07Cit9IE5QRXZlbnQ7CisjZWxpZiBkZWZpbmVkIChY
UF9VTklYKSAmJiBkZWZpbmVkKE1PWl9YMTEpCiB0eXBlZGVmIFhFdmVudCBOUEV2ZW50OwogI2Vs
c2UKLXR5cGVkZWYgdm9pZCogICAgICAgICAgICBOUEV2ZW50OwordHlwZWRlZiB2b2lkKiAgICAg
TlBFdmVudDsKICNlbmRpZiAvKiBYUF9NQUMgKi8KIAogI2lmIGRlZmluZWQoWFBfTUFDKSB8fCBk
ZWZpbmVkKFhQX01BQ09TWCkKIHR5cGVkZWYgUmduSGFuZGxlIE5QUmVnaW9uOwogI2VsaWYgZGVm
aW5lZChYUF9XSU4pCiB0eXBlZGVmIEhSR04gTlBSZWdpb247Ci0jZWxpZiBkZWZpbmVkKFhQX1VO
SVgpCisjZWxpZiBkZWZpbmVkKFhQX1VOSVgpICYmIGRlZmluZWQoTU9aX1gxMSkKIHR5cGVkZWYg
UmVnaW9uIE5QUmVnaW9uOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCAqTlBSZWdpb247CkBAIC00MDcs
MzYgKzUyOSw0NyBAQA0KIAogdHlwZWRlZiBzdHJ1Y3QgTlBfUG9ydAogewotICAgIENHcmFmUHRy
ICAgICBwb3J0OyAgICAgICAgLyogR3JhZnBvcnQgKi8KLSAgICBpbnQzMiAgICAgICAgcG9ydHg7
ICAgICAgICAvKiBwb3NpdGlvbiBpbnNpZGUgdGhlIHRvcG1vc3Qgd2luZG93ICovCi0gICAgaW50
MzIgICAgICAgIHBvcnR5OworICBDR3JhZlB0ciBwb3J0OyAvKiBHcmFmcG9ydCAqLworICBpbnQz
MiBwb3J0eDsgICAvKiBwb3NpdGlvbiBpbnNpZGUgdGhlIHRvcG1vc3Qgd2luZG93ICovCisgIGlu
dDMyIHBvcnR5OwogfSBOUF9Qb3J0OwogCiAvKgogICogIE5vbi1zdGFuZGFyZCBldmVudCB0eXBl
cyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gSGFuZGxlRXZlbnQKICAqLwotI2RlZmluZSBnZXRGb2N1
c0V2ZW50ICAgICAgICAob3NFdnQgKyAxNikKLSNkZWZpbmUgbG9zZUZvY3VzRXZlbnQgICAgICAg
IChvc0V2dCArIDE3KQotI2RlZmluZSBhZGp1c3RDdXJzb3JFdmVudCAgIChvc0V2dCArIDE4KQog
CitlbnVtIE5QRXZlbnRUeXBlIHsKKyAgTlBFdmVudFR5cGVfR2V0Rm9jdXNFdmVudCA9IChvc0V2
dCArIDE2KSwKKyAgTlBFdmVudFR5cGVfTG9zZUZvY3VzRXZlbnQsCisgIE5QRXZlbnRUeXBlX0Fk
anVzdEN1cnNvckV2ZW50LAorICBOUEV2ZW50VHlwZV9NZW51Q29tbWFuZEV2ZW50LAorICBOUEV2
ZW50VHlwZV9DbGlwcGluZ0NoYW5nZWRFdmVudCwKKyAgTlBFdmVudFR5cGVfU2Nyb2xsaW5nQmVn
aW5zRXZlbnQgPSAxMDAwLAorICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdFbmRzRXZlbnQKK307CisK
KyNpZmRlZiBPQlNPTEVURQorI2RlZmluZSBnZXRGb2N1c0V2ZW50ICAgICAob3NFdnQgKyAxNikK
KyNkZWZpbmUgbG9zZUZvY3VzRXZlbnQgICAgKG9zRXZ0ICsgMTcpCisjZGVmaW5lIGFkanVzdEN1
cnNvckV2ZW50IChvc0V2dCArIDE4KQorI2VuZGlmCiAjZW5kaWYgLyogWFBfTUFDICovCiAKLQog
LyoKICAqIFZhbHVlcyBmb3IgbW9kZSBwYXNzZWQgdG8gTlBQX05ldzoKICAqLwotI2RlZmluZSBO
UF9FTUJFRCAgICAgICAgMQotI2RlZmluZSBOUF9GVUxMICAgICAgICAgMgorI2RlZmluZSBOUF9F
TUJFRCAxCisjZGVmaW5lIE5QX0ZVTEwgIDIKIAogLyoKICAqIFZhbHVlcyBmb3Igc3RyZWFtIHR5
cGUgcGFzc2VkIHRvIE5QUF9OZXdTdHJlYW06CiAgKi8KLSNkZWZpbmUgTlBfTk9STUFMICAgICAg
ICAxCi0jZGVmaW5lIE5QX1NFRUsgICAgICAgICAyCi0jZGVmaW5lIE5QX0FTRklMRSAgICAgICAg
MwotI2RlZmluZSBOUF9BU0ZJTEVPTkxZICAgICAgICA0CisjZGVmaW5lIE5QX05PUk1BTCAgICAg
MQorI2RlZmluZSBOUF9TRUVLICAgICAgIDIKKyNkZWZpbmUgTlBfQVNGSUxFICAgICAzCisjZGVm
aW5lIE5QX0FTRklMRU9OTFkgNAogCi0jZGVmaW5lIE5QX01BWFJFQURZICAgICgoKHVuc2lnbmVk
KSh+MCk8PDEpPj4xKQorI2RlZmluZSBOUF9NQVhSRUFEWSAoKCh1bnNpZ25lZCkofjApPDwxKT4+
MSkKIAogI2lmZGVmIFhQX01BQwogI3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CkBAIC00NDQs
MzggKzU3NywzOCBAQA0KIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgRXJy
b3IgYW5kIFJlYXNvbiBDb2RlIGRlZmluaXRpb25zICAgICAgICAgICAgKi8KKy8qICAgICAgICAg
RXJyb3IgYW5kIFJlYXNvbiBDb2RlIGRlZmluaXRpb25zICAgICAgKi8KIC8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCiAKIC8qCi0gKiAgICBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgorICogVmFsdWVzIG9mIHR5
cGUgTlBFcnJvcjoKICAqLwotI2RlZmluZSBOUEVSUl9CQVNFICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAKLSNkZWZpbmUgTlBFUlJfTk9fRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAo
TlBFUlJfQkFTRSArIDApCi0jZGVmaW5lIE5QRVJSX0dFTkVSSUNfRVJST1IgICAgICAgICAgICAg
ICAgICAgIChOUEVSUl9CQVNFICsgMSkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9JTlNUQU5DRV9F
UlJPUiAgICAgICAgKE5QRVJSX0JBU0UgKyAyKQotI2RlZmluZSBOUEVSUl9JTlZBTElEX0ZVTkNU
QUJMRV9FUlJPUiAgICAgICAgKE5QRVJSX0JBU0UgKyAzKQotI2RlZmluZSBOUEVSUl9NT0RVTEVf
TE9BRF9GQUlMRURfRVJST1IgICAgICAgIChOUEVSUl9CQVNFICsgNCkKLSNkZWZpbmUgTlBFUlJf
T1VUX09GX01FTU9SWV9FUlJPUiAgICAgICAgICAgIChOUEVSUl9CQVNFICsgNSkKLSNkZWZpbmUg
TlBFUlJfSU5WQUxJRF9QTFVHSU5fRVJST1IgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDYpCi0j
ZGVmaW5lIE5QRVJSX0lOVkFMSURfUExVR0lOX0RJUl9FUlJPUiAgICAgICAgKE5QRVJSX0JBU0Ug
KyA3KQotI2RlZmluZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lPTl9FUlJPUiAgICAoTlBFUlJf
QkFTRSArIDgpCi0jZGVmaW5lIE5QRVJSX0lOVkFMSURfUEFSQU0gICAgICAgICAgICAgICAgKE5Q
RVJSX0JBU0UgKyA5KQotI2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAgICAgICAgICAgICAgICAg
ICAgKE5QRVJSX0JBU0UgKyAxMCkKLSNkZWZpbmUgTlBFUlJfRklMRV9OT1RfRk9VTkQgICAgICAg
ICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMSkKLSNkZWZpbmUgTlBFUlJfTk9fREFUQSAgICAgICAg
ICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTIpCi0jZGVmaW5lIE5QRVJSX1NUUkVBTV9O
T1RfU0VFS0FCTEUgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDEzKQorI2RlZmluZSBOUEVSUl9C
QVNFICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgTlBFUlJfTk9fRVJST1IgICAg
ICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMCkKKyNkZWZpbmUgTlBFUlJfR0VORVJJQ19F
UlJPUiAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMSkKKyNkZWZpbmUgTlBFUlJfSU5WQUxJ
RF9JTlNUQU5DRV9FUlJPUiAgICAgIChOUEVSUl9CQVNFICsgMikKKyNkZWZpbmUgTlBFUlJfSU5W
QUxJRF9GVU5DVEFCTEVfRVJST1IgICAgIChOUEVSUl9CQVNFICsgMykKKyNkZWZpbmUgTlBFUlJf
TU9EVUxFX0xPQURfRkFJTEVEX0VSUk9SICAgIChOUEVSUl9CQVNFICsgNCkKKyNkZWZpbmUgTlBF
UlJfT1VUX09GX01FTU9SWV9FUlJPUiAgICAgICAgIChOUEVSUl9CQVNFICsgNSkKKyNkZWZpbmUg
TlBFUlJfSU5WQUxJRF9QTFVHSU5fRVJST1IgICAgICAgIChOUEVSUl9CQVNFICsgNikKKyNkZWZp
bmUgTlBFUlJfSU5WQUxJRF9QTFVHSU5fRElSX0VSUk9SICAgIChOUEVSUl9CQVNFICsgNykKKyNk
ZWZpbmUgTlBFUlJfSU5DT01QQVRJQkxFX1ZFUlNJT05fRVJST1IgIChOUEVSUl9CQVNFICsgOCkK
KyNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QQVJBTSAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsg
OSkKKyNkZWZpbmUgTlBFUlJfSU5WQUxJRF9VUkwgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNF
ICsgMTApCisjZGVmaW5lIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EICAgICAgICAgICAgICAoTlBFUlJf
QkFTRSArIDExKQorI2RlZmluZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgKE5Q
RVJSX0JBU0UgKyAxMikKKyNkZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAg
IChOUEVSUl9CQVNFICsgMTMpCiAKIC8qCi0gKiAgICBWYWx1ZXMgb2YgdHlwZSBOUFJlYXNvbjoK
KyAqIFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgogICovCi0jZGVmaW5lIE5QUkVTX0JBU0UgICAg
ICAgICAgICAgICAgMAotI2RlZmluZSBOUFJFU19ET05FICAgICAgICAgICAgICAgICAgICAoTlBS
RVNfQkFTRSArIDApCi0jZGVmaW5lIE5QUkVTX05FVFdPUktfRVJSICAgICAgICAgICAgKE5QUkVT
X0JBU0UgKyAxKQotI2RlZmluZSBOUFJFU19VU0VSX0JSRUFLICAgICAgICAgICAgKE5QUkVTX0JB
U0UgKyAyKQorI2RlZmluZSBOUFJFU19CQVNFICAgICAgICAgIDAKKyNkZWZpbmUgTlBSRVNfRE9O
RSAgICAgICAgIChOUFJFU19CQVNFICsgMCkKKyNkZWZpbmUgTlBSRVNfTkVUV09SS19FUlIgIChO
UFJFU19CQVNFICsgMSkKKyNkZWZpbmUgTlBSRVNfVVNFUl9CUkVBSyAgIChOUFJFU19CQVNFICsg
MikKIAogLyoKLSAqICAgICAgRG9uJ3QgdXNlIHRoZXNlIG9ic29sZXRlIGVycm9yIGNvZGVzIGFu
eSBtb3JlLgorICogRG9uJ3QgdXNlIHRoZXNlIG9ic29sZXRlIGVycm9yIGNvZGVzIGFueSBtb3Jl
LgogICovCiAjZGVmaW5lIE5QX05PRVJSICBOUF9OT0VSUl9pc19vYnNvbGV0ZV91c2VfTlBFUlJf
Tk9fRVJST1IKICNkZWZpbmUgTlBfRUlOVkFMIE5QX0VJTlZBTF9pc19vYnNvbGV0ZV91c2VfTlBF
UlJfR0VORVJJQ19FUlJPUgpAQCAtNDg0LDI2ICs2MTcsMzIgQEANCiAvKgogICogVmVyc2lvbiBm
ZWF0dXJlIGluZm9ybWF0aW9uCiAgKi8KLSNkZWZpbmUgTlBWRVJTX0hBU19TVFJFQU1PVVRQVVQg
ICAgIDgKLSNkZWZpbmUgTlBWRVJTX0hBU19OT1RJRklDQVRJT04gICAgIDkKLSNkZWZpbmUgTlBW
RVJTX0hBU19MSVZFQ09OTkVDVCAgICAgICAgOQotI2RlZmluZSBOUFZFUlNfV0lOMTZfSEFTX0xJ
VkVDT05ORUNUICAgIDkKLSNkZWZpbmUgTlBWRVJTXzY4S19IQVNfTElWRUNPTk5FQ1QgICAgMTEK
LSNkZWZpbmUgTlBWRVJTX0hBU19XSU5ET1dMRVNTICAgICAgIDExCisjZGVmaW5lIE5QVkVSU19I
QVNfU1RSRUFNT1VUUFVUICAgICAgOAorI2RlZmluZSBOUFZFUlNfSEFTX05PVElGSUNBVElPTiAg
ICAgIDkKKyNkZWZpbmUgTlBWRVJTX0hBU19MSVZFQ09OTkVDVCAgICAgICA5CisjZGVmaW5lIE5Q
VkVSU19XSU4xNl9IQVNfTElWRUNPTk5FQ1QgOQorI2RlZmluZSBOUFZFUlNfNjhLX0hBU19MSVZF
Q09OTkVDVCAgIDExCisjZGVmaW5lIE5QVkVSU19IQVNfV0lORE9XTEVTUyAgICAgICAgMTEKKyNk
ZWZpbmUgTlBWRVJTX0hBU19YUENPTk5FQ1RfU0NSSVBUSU5HIDEzCiAKLQogLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KLS8qICAgICAgICAgICAgIEZ1bmN0aW9uIFByb3RvdHlwZXMgICAgICAgICAgICAgICAg
Ki8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb24gUHJvdG90eXBlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjaWYgZGVmaW5lZChf
V0lORE9XUykgJiYgIWRlZmluZWQoV0lOMzIpCiAjZGVmaW5lIE5QX0xPQUREUyAgX2xvYWRkcwog
I2Vsc2UKKyNpZiBkZWZpbmVkKF9fT1MyX18pCisjZGVmaW5lIE5QX0xPQUREUyBfU3lzdGVtCisj
ZWxzZQogI2RlZmluZSBOUF9MT0FERFMKICNlbmRpZgorI2VuZGlmCiAKLSNpZmRlZiBfX2NwbHVz
cGx1cwotZXh0ZXJuICJDIiB7CisjaWZuZGVmIF9fU1lNQklBTjMyX18KKyAjaWZkZWYgX19jcGx1
c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKICNlbmRpZgogCiAvKgpAQCAtNTExLDc4ICs2
NTAsMTUwIEBADQogICovCiAKICNpZmRlZiBYUF9VTklYCi1jaGFyKiAgICAgICAgICAgICAgICAg
ICAgTlBQX0dldE1JTUVEZXNjcmlwdGlvbih2b2lkKTsKK2NoYXIqIE5QUF9HZXRNSU1FRGVzY3Jp
cHRpb24odm9pZCk7CiAjZW5kaWYgLyogWFBfVU5JWCAqLwogCi1OUEVycm9yICAgICBOUFBfSW5p
dGlhbGl6ZSh2b2lkKTsKLXZvaWQgICAgICAgIE5QUF9TaHV0ZG93bih2b2lkKTsKLU5QRXJyb3Ig
ICAgIE5QX0xPQUREUyAgICBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTYgbW9kZSwgaW50MTYg
YXJnYywgY2hhciogYXJnbltdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
KiBhcmd2W10sIE5QU2F2ZWREYXRhKiBzYXZlZCk7Ci1OUEVycm9yICAgICBOUF9MT0FERFMgICAg
TlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpOwotTlBFcnJvciAg
ICAgTlBfTE9BRERTICAgIE5QUF9TZXRXaW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2lu
ZG93KTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyAgICBOUFBfTmV3U3RyZWFtKE5QUCBpbnN0YW5j
ZSwgTlBNSU1FVHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQxNiogc3R5cGUpOwotTlBFcnJvciAgICAgTlBfTE9BRERT
ICAgIE5QUF9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbik7
Ci1pbnQzMiAgICAgICAgTlBfTE9BRERTICAgIE5QUF9Xcml0ZVJlYWR5KE5QUCBpbnN0YW5jZSwg
TlBTdHJlYW0qIHN0cmVhbSk7Ci1pbnQzMiAgICAgICAgTlBfTE9BRERTICAgIE5QUF9Xcml0ZShO
UFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7Ci12b2lkICAg
ICAgICBOUF9MT0FERFMgICAgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGZuYW1lKTsKLXZvaWQgICAgICAgIE5QX0xPQUREUyAgICBOUFBfUHJpbnQoTlBQIGlu
c3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KTsKLWludDE2ICAgICAgICAgICAgTlBQX0hh
bmRsZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpOwotdm9pZCAgICAgICAgTlBfTE9B
RERTICAgIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSk7Ci1qcmVmICAgICAgICBOUF9MT0FERFMgICAgICAgICAgICBOUFBfR2V0SmF2
YUNsYXNzKHZvaWQpOwotTlBFcnJvciAgICAgTlBQX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQ
VmFyaWFibGUgdmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqdmFsdWUpOwotTlBFcnJvciAgICAgTlBQX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBO
VmFyaWFibGUgdmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqdmFsdWUpOworI2lmZGVmIF9fU1lNQklBTjMyX18KK0lNUE9SVF9DIGNvbnN0IFREZXND
MTYqIE5QUF9HZXRNSU1FRGVzY3JpcHRpb24odm9pZCk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJf
XyAqLwogCitOUEVycm9yIE5QX0xPQUREUyBOUFBfSW5pdGlhbGl6ZSh2b2lkKTsKKyNpZmRlZiBf
X1NZTUJJQU4zMl9fCitJTVBPUlRfQworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KK3ZvaWQg
ICAgTlBfTE9BRERTIE5QUF9TaHV0ZG93bih2b2lkKTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9f
CitOUEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGlu
c3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTYgbW9kZSwgaW50MTYgYXJn
YywgY2hhciogYXJnbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBhcmd2W10s
IE5QU2F2ZWREYXRhKiBzYXZlZCk7CisjZWxzZQorTlBFcnJvciBOUF9MT0FERFMgTlBQX05ldyhO
UE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwKKyAgICAgICAgICAgICAgdWludDE2
IG1vZGUsIENEZXNDQXJyYXkqIGFyZ24sCisgICAgICAgICAgICAgIENEZXNDQXJyYXkqIGFyZ3Ys
IE5QU2F2ZWREYXRhKiBzYXZlZCk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCitOUEVy
cm9yIE5QX0xPQUREUyBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2
ZSk7CitOUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5k
b3cqIHdpbmRvdyk7CitOUEVycm9yIE5QX0xPQUREUyBOUFBfTmV3U3RyZWFtKE5QUCBpbnN0YW5j
ZSwgTlBNSU1FVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFN0
cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNiogc3R5cGUpOworTlBFcnJvciBOUF9MT0FERFMgTlBQX0Rlc3Ryb3lTdHJl
YW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlBSZWFzb24gcmVhc29uKTsKK2ludDMyICAgTlBfTE9BRERTIE5QUF9X
cml0ZVJlYWR5KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSk7CitpbnQzMiAgIE5QX0xP
QUREUyBOUFBfV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzIgbGVuLCB2b2lkKiBidWZmZXIp
OworCisjaWZuZGVmIF9fU1lNQklBTjMyX18KK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9TdHJlYW1B
c0ZpbGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbmFtZSk7CisjZWxzZS8qIF9fU1lNQklBTjMy
X18gKi8KK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9TdHJlYW1Bc0ZpbGUoTlBQIGluc3RhbmNlLCBO
UFN0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBURGVzQzE2JiBmbmFtZSk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCit2b2lkICAg
IE5QX0xPQUREUyBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50
KTsKK2ludDE2ICAgTlBfTE9BRERTIE5QUF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQq
IGV2ZW50KTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9fCit2b2lkICAgIE5QX0xPQUREUyBOUFBf
VVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24sIHZvaWQqIG5vdGlmeURhdGEpOworI2Vs
c2UvKiBfX1NZTUJJQU4zMl9fICovCit2b2lkICAgIE5QX0xPQUREUyBOUFBfVVJMTm90aWZ5KE5Q
UCBpbnN0YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOUFJlYXNvbiByZWFzb24sIHZvaWQqIG5vdGlmeURhdGEpOworI2VuZGlmIC8qIF9f
U1lNQklBTjMyX18gKi8KKworI2lmZGVmIE9KSQoranJlZiAgICBOUF9MT0FERFMgTlBQX0dldEph
dmFDbGFzcyh2b2lkKTsKKyNlbmRpZgorCisjaWZkZWYgX19TWU1CSUFOMzJfXworSU1QT1JUX0MK
KyNlbmRpZiAvKiBfX1NZTUJJQU4zMl9fICovCitOUEVycm9yIE5QX0xPQUREUyBOUFBfR2V0VmFs
dWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOworTlBF
cnJvciBOUF9MT0FERFMgTlBQX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFy
aWFibGUsIHZvaWQgKnZhbHVlKTsKKwogLyoKICAqIE5QTl8qIGZ1bmN0aW9ucyBhcmUgcHJvdmlk
ZWQgYnkgdGhlIG5hdmlnYXRvciBhbmQgY2FsbGVkIGJ5IHRoZSBwbHVnaW4uCiAgKi8KK3ZvaWQg
ICAgTlBfTE9BRERTIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9t
aW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbmV0c2NhcGVfbWFqb3Is
IGludCogbmV0c2NhcGVfbWlub3IpOwogCi12b2lkICAgICAgICBOUE5fVmVyc2lvbihpbnQqIHBs
dWdpbl9tYWpvciwgaW50KiBwbHVnaW5fbWlub3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50KiBuZXRzY2FwZV9tYWpvciwgaW50KiBuZXRzY2FwZV9taW5vcik7Ci1OUEVycm9yICAg
ICBOUE5fR2V0VVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB2b2lkKiBub3Rp
ZnlEYXRhKTsKLU5QRXJyb3IgICAgIE5QTl9HZXRVUkwoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFy
KiB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQpOwot
TlBFcnJvciAgICAgTlBOX1Bvc3RVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1
cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0
LCB1aW50MzIgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGJ1ZiwgTlBCb29sIGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCogbm90aWZ5RGF0YSk7Ci1OUEVycm9yICAgICBOUE5fUG9zdFVSTChOUFAgaW5zdGFuY2Us
IGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiB0YXJnZXQsIHVpbnQzMiBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYnVmLCBOUEJvb2wgZmlsZSk7Ci1OUEVycm9yICAgICBOUE5fUmVxdWVzdFJlYWQoTlBT
dHJlYW0qIHN0cmVhbSwgTlBCeXRlUmFuZ2UqIHJhbmdlTGlzdCk7Ci1OUEVycm9yICAgICBOUE5f
TmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCBOUFN0cmVhbSoqIHN0cmVhbSk7Ci1p
bnQzMiAgICAgICAgTlBOX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgaW50
MzIgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBidWZmZXIpOwotTlBFcnJv
ciAgICAgTlBOX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbik7Ci12b2lk
ICAgICAgICBOUE5fU3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Ci1j
b25zdCBjaGFyKiAgICBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7Ci12b2lkKiAgICAgICAg
TlBOX01lbUFsbG9jKHVpbnQzMiBzaXplKTsKLXZvaWQgICAgICAgIE5QTl9NZW1GcmVlKHZvaWQq
IHB0cik7Ci11aW50MzIgICAgICAgIE5QTl9NZW1GbHVzaCh1aW50MzIgc2l6ZSk7Ci12b2lkICAg
ICAgICBOUE5fUmVsb2FkUGx1Z2lucyhOUEJvb2wgcmVsb2FkUGFnZXMpOwotSlJJRW52KiAgICAg
TlBOX0dldEphdmFFbnYodm9pZCk7Ci1qcmVmICAgICAgICBOUE5fR2V0SmF2YVBlZXIoTlBQIGlu
c3RhbmNlKTsKLU5QRXJyb3IgICAgIE5QTl9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlh
YmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7
Ci1OUEVycm9yICAgICBOUE5fU2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJp
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpOwotdm9pZCAg
ICAgICAgTlBOX0ludmFsaWRhdGVSZWN0KE5QUCBpbnN0YW5jZSwgTlBSZWN0ICppbnZhbGlkUmVj
dCk7Ci12b2lkICAgICAgICBOUE5fSW52YWxpZGF0ZVJlZ2lvbihOUFAgaW5zdGFuY2UsIE5QUmVn
aW9uIGludmFsaWRSZWdpb24pOwotdm9pZCAgICAgICAgTlBOX0ZvcmNlUmVkcmF3KE5QUCBpbnN0
YW5jZSk7CisjaWZuZGVmIF9fU1lNQklBTjMyX18KK05QRXJyb3IgTlBfTE9BRERTIE5QTl9HZXRV
UkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdm9pZCogbm90aWZ5RGF0YSk7
CitOUEVycm9yIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQpOwor
TlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBj
aGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiB0YXJnZXQsIHVpbnQzMiBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCogbm90aWZ5RGF0YSk7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fUG9z
dFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyIGxlbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUpOworI2Vsc2UvKiBf
X1NZTUJJQU4zMl9fICovCitOUEVycm9yIE5QX0xPQUREUyBOUE5fR2V0VVJMTm90aWZ5KE5QUCBp
bnN0YW5jZSwgY29uc3QgVERlc0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsIHZvaWQqIG5vdGlmeURhdGEpOworTlBFcnJv
ciBOUF9MT0FERFMgTlBOX0dldFVSTChOUFAgaW5zdGFuY2UsIGNvbnN0IFREZXNDMTYmIHVybCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVERlc0MxNiogdGFyZ2V0KTsKK05Q
RXJyb3IgTlBfTE9BRERTIE5QTl9Qb3N0VVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgVERl
c0MxNiYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVERl
c0MxNiogdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VERlc0MxNiYgYnVmLCBOUEJvb2wgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQqIG5vdGlmeURhdGEpOworTlBFcnJvciBOUF9MT0FERFMgTlBOX1Bvc3RVUkwo
TlBQIGluc3RhbmNlLCBjb25zdCBURGVzQzE2JiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBURGVzQzE2KiB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBURGVzQzE2JiBidWYsIE5QQm9vbCBmaWxlKTsKKyNlbmRpZiAvKiBfX1NZTUJJ
QU4zMl9fICovCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotfSAgLyogZW5kIGV4dGVybiAiQyIgKi8K
K05QRXJyb3IgTlBfTE9BRERTIE5QTl9SZXF1ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5
dGVSYW5nZSogcmFuZ2VMaXN0KTsKKworI2lmbmRlZiBfX1NZTUJJQU4zMl9fCitOUEVycm9yIE5Q
X0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIE5QU3RyZWFt
Kiogc3RyZWFtKTsKKyNlbHNlLyogX19TWU1CSUFOMzJfXyAqLworTlBFcnJvciBOUF9MT0FERFMg
TlBOX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVERlc0MxNiogdGFyZ2V0LCBOUFN0cmVhbSoqIHN0
cmVhbSk7CisjZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCitpbnQzMiAgIE5QX0xPQUREUyBO
UE5fV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBsZW4sIHZvaWQq
IGJ1ZmZlcik7CitOUEVycm9yIE5QX0xPQUREUyBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5zdGFu
Y2UsIE5QU3RyZWFtKiBzdHJlYW0sIE5QUmVhc29uIHJlYXNvbik7CisKKyNpZm5kZWYgX19TWU1C
SUFOMzJfXwordm9pZCAgICBOUF9MT0FERFMgTlBOX1N0YXR1cyhOUFAgaW5zdGFuY2UsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpOworI2Vsc2UvKiBfX1NZTUJJQU4zMl9fICovCit2b2lkICAgIE5QX0xP
QUREUyBOUE5fU3RhdHVzKE5QUCBpbnN0YW5jZSwgY29uc3QgVERlc0MxNiYgbWVzc2FnZSk7Cisj
ZW5kaWYgLyogX19TWU1CSUFOMzJfXyAqLworCisjaWZuZGVmIF9fU1lNQklBTjMyX18KK2NvbnN0
IGNoYXIqIE5QX0xPQUREUyBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSk7CisjZWxzZS8qIF9f
U1lNQklBTjMyX18gKi8KK2NvbnN0IFREZXNDMTYqIE5QX0xPQUREUyAgTlBOX1VzZXJBZ2VudChO
UFAgaW5zdGFuY2UpOworI2VuZGlmIC8qIF9fU1lNQklBTjMyX18gKi8KKworCit2b2lkKiAgIE5Q
X0xPQUREUyBOUE5fTWVtQWxsb2ModWludDMyIHNpemUpOwordm9pZCAgICBOUF9MT0FERFMgTlBO
X01lbUZyZWUodm9pZCogcHRyKTsKK3VpbnQzMiAgTlBfTE9BRERTIE5QTl9NZW1GbHVzaCh1aW50
MzIgc2l6ZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fUmVsb2FkUGx1Z2lucyhOUEJvb2wgcmVs
b2FkUGFnZXMpOworI2lmZGVmIE9KSQorSlJJRW52KiBOUF9MT0FERFMgTlBOX0dldEphdmFFbnYo
dm9pZCk7CitqcmVmICAgIE5QX0xPQUREUyBOUE5fR2V0SmF2YVBlZXIoTlBQIGluc3RhbmNlKTsK
ICNlbmRpZgorTlBFcnJvciBOUF9MT0FERFMgTlBOX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QTl9T
ZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7
Cit2b2lkICAgIE5QX0xPQUREUyBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGluc3RhbmNlLCBOUFJl
Y3QgKmludmFsaWRSZWN0KTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QTl9JbnZhbGlkYXRlUmVnaW9u
KE5QUCBpbnN0YW5jZSwgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Cit2b2lkICAgIE5QX0xPQURE
UyBOUE5fRm9yY2VSZWRyYXcoTlBQIGluc3RhbmNlKTsKIAorI2lmbmRlZiBfX1NZTUJJQU4zMl9f
CisgI2lmZGVmIF9fY3BsdXNwbHVzCisgfSAgLyogZW5kIGV4dGVybiAiQyIgKi8KKyAjZW5kaWYK
KyNlbmRpZgorCisjZW5kaWYgLyogUkNfSU5WT0tFRCAqLworI2lmZGVmIF9fT1MyX18KKyNwcmFn
bWEgcGFjaygpCisjZW5kaWYKKwogI2VuZGlmIC8qIF9OUEFQSV9IXyAqLwpJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL25wcnVudGltZS5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL25wcnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMCwx
NSArMjAsMTYgQEANCiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPEhhc2hNYXAuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9ucHJ1bnRpbWVfaW1wbC5oPgorI2luY2x1ZGUgPGlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxucHJ1bnRpbWUuaD4KICNpbmNsdWRlIDxjX3V0aWxpdHkuaD4KIAotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZV9pbXBsLmg+Ci0KKy8qCiBzdGF0aWMgQm9vbGVh
biBzdHJpbmdJZGVudGlmaWVyRXF1YWwoY29uc3Qgdm9pZCAqdmFsdWUxLCBjb25zdCB2b2lkICp2
YWx1ZTIpCiB7CiAgICAgcmV0dXJuIHN0cmNtcCgoY29uc3QgY2hhciAqKXZhbHVlMSwgKGNvbnN0
IGNoYXIgKil2YWx1ZTIpID09IDA7CkBAIC0xMDAsMTQgKzEwMSwxNCBAQA0KICAgICByZXR1cm4g
aW50SWRlbnRpZmllckRpY3Rpb25hcnk7CiB9CiAKLU5QSWRlbnRpZmllciBfTlBOX0dldFN0cmlu
Z0lkZW50aWZpZXIgKGNvbnN0IE5QVVRGOCAqbmFtZSkKK05QSWRlbnRpZmllciBOUE5fR2V0U3Ry
aW5nSWRlbnRpZmllciAoY29uc3QgTlBVVEY4ICpuYW1lKQogewogICAgIGFzc2VydCAobmFtZSk7
Ci0gICAgCisKICAgICBpZiAobmFtZSkgewogICAgICAgICBQcml2YXRlSWRlbnRpZmllciAqaWRl
bnRpZmllciA9IDA7Ci0gICAgICAgIAotICAgICAgICBpZGVudGlmaWVyID0gKFByaXZhdGVJZGVu
dGlmaWVyICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9u
YXJ5KCksIChjb25zdCB2b2lkICopbmFtZSk7CisKKyAgICAgICAgLy9pZGVudGlmaWVyID0gKFBy
aXZhdGVJZGVudGlmaWVyICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKGdldFN0cmluZ0lkZW50aWZp
ZXJEaWN0aW9uYXJ5KCksIChjb25zdCB2b2lkICopbmFtZSk7CiAgICAgICAgIGlmIChpZGVudGlm
aWVyID09IDApIHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIg
KiltYWxsb2MgKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOwogICAgICAgICAgICAgLy8gV2Ug
bmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVyIG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBn
cm93LCBhcyB3aWxsCkBAIC0xMTYsNjAgKzExNywxMzggQEANCiAgICAgICAgICAgICBjb25zdCBj
aGFyICppZGVudGlmaWVyTmFtZSA9IHN0cmR1cCAobmFtZSk7CiAgICAgICAgICAgICBpZGVudGlm
aWVyLT52YWx1ZS5zdHJpbmcgPSBpZGVudGlmaWVyTmFtZTsKIAotICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUgKGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5KCksIGlkZW50aWZp
ZXJOYW1lLCAoY29uc3Qgdm9pZCAqKWlkZW50aWZpZXIpOworICAgICAgICAgICAgLy9DRkRpY3Rp
b25hcnlBZGRWYWx1ZSAoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgaWRlbnRpZmll
ck5hbWUsIChjb25zdCB2b2lkICopaWRlbnRpZmllcik7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIChOUElkZW50aWZpZXIpaWRlbnRpZmllcjsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIChjb25zdCBOUFVURjggKipu
YW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciAqaWRlbnRpZmllcnMpCit2b2lk
IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyAoY29uc3QgTlBVVEY4ICoqbmFtZXMsIGludDMyX3Qg
bmFtZUNvdW50LCBOUElkZW50aWZpZXIgKmlkZW50aWZpZXJzKQogewogICAgIGFzc2VydCAobmFt
ZXMpOwogICAgIGFzc2VydCAoaWRlbnRpZmllcnMpOwotICAgIAorCiAgICAgaWYgKG5hbWVzICYm
IGlkZW50aWZpZXJzKSB7CiAgICAgICAgIGludCBpOwotICAgICAgICAKKwogICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgbmFtZUNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIGlkZW50aWZpZXJzW2ld
ID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1lc1tpXSk7CisgICAgICAgICAgICBpZGVu
dGlmaWVyc1tpXSA9IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyIChuYW1lc1tpXSk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKLU5QSWRlbnRpZmllciBfTlBOX0dldEludElkZW50aWZpZXIoaW50MzJf
dCBpbnRpZCkKK05QSWRlbnRpZmllciBOUE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludGlk
KQogeworLy9mb3JjZSBhc3NlcnQKKworCiAgICAgUHJpdmF0ZUlkZW50aWZpZXIgKmlkZW50aWZp
ZXIgPSAwOwotICAgIAotICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZSAoZ2V0SW50SWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZv
aWQgKilpbnRpZCk7Cithc3NlcnQoIGlkZW50aWZpZXIgKTsKKyAgICAvL2lkZW50aWZpZXIgPSAo
UHJpdmF0ZUlkZW50aWZpZXIgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoZ2V0SW50SWRlbnRpZmll
ckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilpbnRpZCk7CiAgICAgaWYgKGlkZW50aWZpZXIg
PT0gMCkgewogICAgICAgICBpZGVudGlmaWVyID0gKFByaXZhdGVJZGVudGlmaWVyICopbWFsbG9j
IChzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIpKTsKICAgICAgICAgLy8gV2UgbmV2ZXIgcmVsZWFz
ZSBpZGVudGlmaWVyIG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25hcnkgd2lsbCBncm93LgogICAgICAg
ICBpZGVudGlmaWVyLT5pc1N0cmluZyA9IGZhbHNlOwogICAgICAgICBpZGVudGlmaWVyLT52YWx1
ZS5udW1iZXIgPSBpbnRpZDsKIAotICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoZ2V0SW50
SWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilpbnRpZCwgKGNvbnN0IHZvaWQg
KilpZGVudGlmaWVyKTsKKyAgICAgICAgLy9DRkRpY3Rpb25hcnlBZGRWYWx1ZSAoZ2V0SW50SWRl
bnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQgKilpbnRpZCwgKGNvbnN0IHZvaWQgKilp
ZGVudGlmaWVyKTsKICAgICB9CiAgICAgcmV0dXJuIChOUElkZW50aWZpZXIpaWRlbnRpZmllcjsK
K30qLworCit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEtKUzo6VVN0cmluZzo6UmVwPiwgUHJpdmF0
ZUlkZW50aWZpZXIqPiBTdHJpbmdJZGVudGlmaWVyTWFwOworCitzdGF0aWMgU3RyaW5nSWRlbnRp
Zmllck1hcCogZ2V0U3RyaW5nSWRlbnRpZmllck1hcCgpCit7CisgICAgc3RhdGljIFN0cmluZ0lk
ZW50aWZpZXJNYXAqIHN0cmluZ0lkZW50aWZpZXJNYXAgPSAwOworICAgIGlmICghc3RyaW5nSWRl
bnRpZmllck1hcCkKKyAgICAgICAgc3RyaW5nSWRlbnRpZmllck1hcCA9IG5ldyBTdHJpbmdJZGVu
dGlmaWVyTWFwOworICAgIHJldHVybiBzdHJpbmdJZGVudGlmaWVyTWFwOwogfQogCi1ib29sIF9O
UE5fSWRlbnRpZmllcklzU3RyaW5nKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKQordHlwZWRlZiBI
YXNoTWFwPGludCwgUHJpdmF0ZUlkZW50aWZpZXIqPiBJbnRJZGVudGlmaWVyTWFwOworCitzdGF0
aWMgSW50SWRlbnRpZmllck1hcCogZ2V0SW50SWRlbnRpZmllck1hcCgpCiB7CisgICAgc3RhdGlj
IEludElkZW50aWZpZXJNYXAqIGludElkZW50aWZpZXJNYXAgPSAwOworICAgIGlmICghaW50SWRl
bnRpZmllck1hcCkKKyAgICAgICAgaW50SWRlbnRpZmllck1hcCA9IG5ldyBJbnRJZGVudGlmaWVy
TWFwOworICAgIHJldHVybiBpbnRJZGVudGlmaWVyTWFwOworfQorCitFWFBPUlRfQworTlBJZGVu
dGlmaWVyIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGNvbnN0IE5QVVRGOCogbmFtZSkKK3sKKyAg
ICBhc3NlcnQobmFtZSk7CisKKyAgICBpZiAobmFtZSkgeworICAgICAgICBQcml2YXRlSWRlbnRp
ZmllciogaWRlbnRpZmllciA9IDA7CisKKyAgICAgICAgaWRlbnRpZmllciA9IGdldFN0cmluZ0lk
ZW50aWZpZXJNYXAoKS0+Z2V0KGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKG5hbWUpLnVzdHJp
bmcoKS5hcmVwKCkpOworICAgICAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7CisgICAgICAgICAg
ICBpZGVudGlmaWVyID0gKFByaXZhdGVJZGVudGlmaWVyKiltYWxsb2Moc2l6ZW9mKFByaXZhdGVJ
ZGVudGlmaWVyKSk7CisgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIg
bmFtZXMsIHNvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwKKyAgICAgICAgICAg
IC8vIHRoZSBtZW1vcnkgZm9yIHRoZSBpZGVudGlmaWVyIG5hbWUgc3RyaW5ncy4KKyAgICAgICAg
ICAgIGlkZW50aWZpZXItPmlzU3RyaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGlkZW50aWZpZXIt
PnZhbHVlLnN0cmluZyA9IHN0cmR1cChuYW1lKTsKKworICAgICAgICAgICAgZ2V0U3RyaW5nSWRl
bnRpZmllck1hcCgpLT5zZXQoaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIobmFtZSkudXN0cmlu
ZygpLmFyZXAoKSwgaWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChOUElk
ZW50aWZpZXIpaWRlbnRpZmllcjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworRVhQT1JU
X0MKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5QVVRGOCoqIG5hbWVzLCBp
bnQzMl90IG5hbWVDb3VudCwgTlBJZGVudGlmaWVyKiBpZGVudGlmaWVycykKK3sKKyAgICBhc3Nl
cnQobmFtZXMpOworICAgIGFzc2VydChpZGVudGlmaWVycyk7CisKKyAgICBpZiAobmFtZXMgJiYg
aWRlbnRpZmllcnMpCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFtZUNvdW50OyBpKysp
CisgICAgICAgICAgICBpZGVudGlmaWVyc1tpXSA9IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5h
bWVzW2ldKTsKK30KKworRVhQT1JUX0MKK05QSWRlbnRpZmllciBOUE5fR2V0SW50SWRlbnRpZmll
cihpbnQzMl90IGludGlkKQoreworICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0g
MDsKKworICAgIGlkZW50aWZpZXIgPSBnZXRJbnRJZGVudGlmaWVyTWFwKCktPmdldChpbnRpZCk7
CisgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgeworICAgICAgICBpZGVudGlmaWVyID0gKFByaXZh
dGVJZGVudGlmaWVyKiltYWxsb2Moc2l6ZW9mKFByaXZhdGVJZGVudGlmaWVyKSk7CisgICAgICAg
IC8vIFdlIG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5
IHdpbGwgZ3Jvdy4KKyAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSBmYWxzZTsKKyAgICAg
ICAgaWRlbnRpZmllci0+dmFsdWUubnVtYmVyID0gaW50aWQ7CisKKyAgICAgICAgZ2V0SW50SWRl
bnRpZmllck1hcCgpLT5zZXQoaW50aWQsIGlkZW50aWZpZXIpOworICAgIH0KKyAgICByZXR1cm4g
KE5QSWRlbnRpZmllcilpZGVudGlmaWVyOworfQorCitFWFBPUlRfQworYm9vbCBOUE5fSWRlbnRp
ZmllcklzU3RyaW5nKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKQorewogICAgIFByaXZhdGVJZGVu
dGlmaWVyICppID0gKFByaXZhdGVJZGVudGlmaWVyICopaWRlbnRpZmllcjsKICAgICByZXR1cm4g
aS0+aXNTdHJpbmc7CiB9CiAKLU5QVVRGOCAqX05QTl9VVEY4RnJvbUlkZW50aWZpZXIgKE5QSWRl
bnRpZmllciBpZGVudGlmaWVyKQorRVhQT1JUX0MKK05QVVRGOCAqTlBOX1VURjhGcm9tSWRlbnRp
ZmllciAoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIg
KmkgPSAoUHJpdmF0ZUlkZW50aWZpZXIgKilpZGVudGlmaWVyOwogICAgIGlmICghaS0+aXNTdHJp
bmcgfHwgIWktPnZhbHVlLnN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIAor
CiAgICAgcmV0dXJuIChOUFVURjggKilzdHJkdXAoaS0+dmFsdWUuc3RyaW5nKTsKIH0KIAotaW50
MzJfdCBfTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKQorRVhQ
T1JUX0MKK2ludDMyX3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIFByaXZhdGVJZGVudGlmaWVyICppID0gKFByaXZhdGVJZGVudGlmaWVyICop
aWRlbnRpZmllcjsKICAgICBpZiAoIWktPmlzU3RyaW5nKQpAQCAtMjIxLDkgKzMwMCw5IEBADQog
ewogICAgIGlmICh2YXJpYW50LT50eXBlICE9IE5QVmFyaWFudFR5cGVfQm9vbCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAKKwogICAgICpyZXN1bHQgPSB2YXJpYW50LT52YWx1ZS5i
b29sVmFsdWU7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjMzLDcgKzMxMiw3
IEBADQogICAgICAgICBOUFN0cmluZyBlbXB0eVN0cmluZyA9IHsgMCwgMCB9OwogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmc7CiAgICAgfQotICAgICAgICAgICAgCisKICAgICByZXR1cm4gdmFy
aWFudC0+dmFsdWUuc3RyaW5nVmFsdWU7CiB9CiAKQEAgLTI0NSw3ICszMjQsNyBAQA0KICAgICAg
ICAgKnJlc3VsdCA9IChpbnQzMl90KXZhcmlhbnQtPnZhbHVlLmRvdWJsZVZhbHVlOwogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTI1Nyw3ICszMzYsNyBAQA0KICAgICAgICAgKnJlc3VsdCA9IHZhcmlhbnQtPnZhbHVlLmRv
dWJsZVZhbHVlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NSw5ICszNDQsOSBAQA0KIHsKICAgICBpZiAodmFyaWFu
dC0+dHlwZSAhPSBOUFZhcmlhbnRUeXBlX09iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgCisKICAgICAqcmVzdWx0ID0gdmFyaWFudC0+dmFsdWUub2JqZWN0VmFsdWU7
Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzIxLDcgKzQwMCw3IEBADQogdm9p
ZCBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoT2JqZWN0IChOUFZhcmlhbnQgKnZhcmlhbnQsIE5Q
T2JqZWN0ICp2YWx1ZSkKIHsKICAgICB2YXJpYW50LT50eXBlID0gTlBWYXJpYW50VHlwZV9PYmpl
Y3Q7Ci0gICAgdmFyaWFudC0+dmFsdWUub2JqZWN0VmFsdWUgPSBfTlBOX1JldGFpbk9iamVjdCAo
dmFsdWUpOworICAgIHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVlID0gTlBOX1JldGFpbk9iamVj
dCAodmFsdWUpOwogfQogCiB2b2lkIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhWYXJpYW50IChO
UFZhcmlhbnQgKmRlc3RpbmF0aW9uLCBjb25zdCBOUFZhcmlhbnQgKnNvdXJjZSkKQEAgLTM2Miwx
MiArNDQxLDEzIEBADQogICAgIH0KIH0KIAotdm9pZCBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUg
KE5QVmFyaWFudCAqdmFyaWFudCkKK0VYUE9SVF9DCit2b2lkIE5QTl9SZWxlYXNlVmFyaWFudFZh
bHVlIChOUFZhcmlhbnQgKnZhcmlhbnQpCiB7CiAgICAgYXNzZXJ0ICh2YXJpYW50KTsKLSAgICAK
KwogICAgIGlmICh2YXJpYW50LT50eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KSB7Ci0gICAg
ICAgIF9OUE5fUmVsZWFzZU9iamVjdCAodmFyaWFudC0+dmFsdWUub2JqZWN0VmFsdWUpOworICAg
ICAgICBOUE5fUmVsZWFzZU9iamVjdCAodmFyaWFudC0+dmFsdWUub2JqZWN0VmFsdWUpOwogICAg
ICAgICB2YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZSA9IDA7CiAgICAgfQogICAgIGVsc2UgaWYg
KHZhcmlhbnQtPnR5cGUgPT0gTlBWYXJpYW50VHlwZV9TdHJpbmcpIHsKQEAgLTM3NSwzNCArNDU1
LDM2IEBADQogICAgICAgICB2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4Q2hhcmFjdGVy
cyA9IDA7CiAgICAgICAgIHZhcmlhbnQtPnZhbHVlLnN0cmluZ1ZhbHVlLlVURjhMZW5ndGggPSAw
OwogICAgIH0KLSAgICAKKwogICAgIHZhcmlhbnQtPnR5cGUgPSBOUFZhcmlhbnRUeXBlX1ZvaWQ7
CiB9CiAKIAotTlBPYmplY3QgKl9OUE5fQ3JlYXRlT2JqZWN0IChOUFAgbnBwLCBOUENsYXNzICph
Q2xhc3MpCitFWFBPUlRfQworTlBPYmplY3QgKk5QTl9DcmVhdGVPYmplY3QgKE5QUCBucHAsIE5Q
Q2xhc3MgKmFDbGFzcykKIHsKICAgICBhc3NlcnQgKGFDbGFzcyk7CiAKICAgICBpZiAoYUNsYXNz
KSB7CiAgICAgICAgIE5QT2JqZWN0ICpvYmo7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChhQ2xh
c3MtPmFsbG9jYXRlICE9IE5VTEwpCiAgICAgICAgICAgICBvYmogPSBhQ2xhc3MtPmFsbG9jYXRl
IChucHAsIGFDbGFzcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9iaiA9IChOUE9iamVj
dCAqKW1hbGxvYyAoc2l6ZW9mKE5QT2JqZWN0KSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICBv
YmotPl9jbGFzcyA9IGFDbGFzczsKICAgICAgICAgb2JqLT5yZWZlcmVuY2VDb3VudCA9IDE7CiAK
ICAgICAgICAgcmV0dXJuIG9iajsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gMDsKIH0KIAog
Ci1OUE9iamVjdCAqX05QTl9SZXRhaW5PYmplY3QgKE5QT2JqZWN0ICpvYmopCitFWFBPUlRfQwor
TlBPYmplY3QgKk5QTl9SZXRhaW5PYmplY3QgKE5QT2JqZWN0ICpvYmopCiB7CiAgICAgYXNzZXJ0
IChvYmopOwogCkBAIC00MTMsMTQgKzQ5NSwxNSBAQA0KIH0KIAogCi12b2lkIF9OUE5fUmVsZWFz
ZU9iamVjdCAoTlBPYmplY3QgKm9iaikKK0VYUE9SVF9DCit2b2lkIE5QTl9SZWxlYXNlT2JqZWN0
IChOUE9iamVjdCAqb2JqKQogewogICAgIGFzc2VydCAob2JqKTsKICAgICBhc3NlcnQgKG9iai0+
cmVmZXJlbmNlQ291bnQgPj0gMSk7CiAKICAgICBpZiAob2JqICYmIG9iai0+cmVmZXJlbmNlQ291
bnQgPj0gMSkgewogICAgICAgICBvYmotPnJlZmVyZW5jZUNvdW50LS07Ci0gICAgICAgICAgICAg
ICAgCisKICAgICAgICAgaWYgKG9iai0+cmVmZXJlbmNlQ291bnQgPT0gMCkgewogICAgICAgICAg
ICAgaWYgKG9iai0+X2NsYXNzLT5kZWFsbG9jYXRlKQogICAgICAgICAgICAgICAgIG9iai0+X2Ns
YXNzLT5kZWFsbG9jYXRlIChvYmopOwpAQCAtNDMwLDEyICs1MTMsMTMgQEANCiAgICAgfQogfQog
Ci12b2lkIF9OUE5fU2V0RXhjZXB0aW9uV2l0aFVURjggKE5QT2JqZWN0ICpvYmosIGNvbnN0IE5Q
VVRGOCAqbWVzc2FnZSwgaW50MzJfdCBsZW5ndGgpCitFWFBPUlRfQwordm9pZCBOUE5fU2V0RXhj
ZXB0aW9uV2l0aFVURjggKE5QT2JqZWN0ICpvYmosIGNvbnN0IE5QVVRGOCAqbWVzc2FnZSwgaW50
MzJfdCBsZW5ndGgpCiB7CiAgICAgYXNzZXJ0IChvYmopOwogICAgIGFzc2VydCAobWVzc2FnZSk7
Ci0gCisKICAgICBpZiAob2JqICYmIG1lc3NhZ2UpIHsKLSAgICAgICAgX05QTl9TZXRFeGNlcHRp
b24gKG9iaiwgbWVzc2FnZSk7CisgICAgICAgIE5QTl9TZXRFeGNlcHRpb24gKG9iaiwgbWVzc2Fn
ZSk7CiAgICAgfQogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucHJ1bnRpbWUuaAkocmV2
aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvbnBydW50aW1lLmgJKHdv
cmtpbmcgY29weSkNCkBAIC03Myw2ICs3Myw3IEBADQogI2VuZGlmCiAKICNpbmNsdWRlICJucGFw
aS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3N0ZGludC5oPgogCiAvKgogICAgIFRoaXMg
QVBJIGlzIHVzZWQgdG8gZmFjaWxpdGF0ZSBiaW5kaW5nIGNvZGUgd3JpdHRlbiBpbiBDIHRvIHNj
cmlwdApAQCAtMTUxLDYgKzE1Miw3IEBADQogICAgIEFmdGVyIGNhbGxpbmcgTlBSZWxlYXNlVmFy
aWFudFZhbHVlLCB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB3aWxsCiAgICAgYmUgc2V0IHRvIE5Q
VmFyaWFudFVuZGVmaW5lZFR5cGUuCiAqLworSU1QT1JUX0MKIHZvaWQgTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUgKE5QVmFyaWFudCAqdmFyaWFudCk7CiAKICNkZWZpbmUgTlBWQVJJQU5UX0lTX1ZP
SUQoX3YpICAgICgoX3YpLnR5cGUgPT0gTlBWYXJpYW50VHlwZV9Wb2lkKQpAQCAtMjEyLDIwICsy
MTQsMjYgQEANCiAgICAgY29tcGFyZWQgdXNpbmcgPT0uICBJbiBjYXNlIG9mIGFueSBlcnJvcnMs
IHRoZSByZXF1ZXN0ZWQKICAgICBOUElkZW50aWZpZXIocykgd2lsbCBiZSBOVUxMLgogKi8KK0lN
UE9SVF9DCiBOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY29uc3QgTlBVVEY4
ICpuYW1lKTsKK0lNUE9SVF9DCiB2b2lkIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyhjb25zdCBO
UFVURjggKipuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciAqaWRlbnRpZmll
cnMpOworSU1QT1JUX0MKIE5QSWRlbnRpZmllciBOUE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90
IGludGlkKTsKK0lNUE9SVF9DCiBib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpOwogCiAvKgogICAgIFRoZSBOUFVURjggcmV0dXJuZWQgZnJvbSBOUE5f
VVRGOEZyb21JZGVudGlmaWVyIFNIT1VMRCBiZSBmcmVlZC4KICovCitJTVBPUlRfQwogTlBVVEY4
ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKIAogLyoK
ICAgICBHZXQgdGhlIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgaWRlbnRpZmllci4gSWYgaWRlbnRp
ZmllciBpcyBub3QgYW4KICAgICBpbnRlZ2VyIGlkZW50aWZpZXIsIHRoZSBiZWhhdmlvdXIgaXMg
dW5kZWZpbmVkLgogKi8KK0lNUE9SVF9DCiBpbnQzMl90IE5QTl9JbnRGcm9tSWRlbnRpZmllcihO
UElkZW50aWZpZXIgaWRlbnRpZmllcik7CiAKIC8qCkBAIC0yOTEsMTEgKzI5OSwxMyBAQA0KICAg
ICBmdW5jdGlvbiBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBpbXBsZW1lbnRhdGlv
biB0byBzZXQgdGhlIGluaXRpYWwgcmV0YWluCiAgICAgY291bnQgdG8gMS4KICovCitJTVBPUlRf
QwogTlBPYmplY3QgKk5QTl9DcmVhdGVPYmplY3QoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKTsK
IAogLyoKICAgICBJbmNyZW1lbnQgdGhlIE5QT2JqZWN0J3MgcmVmZXJlbmNlIGNvdW50LgogKi8K
K0lNUE9SVF9DCiBOUE9iamVjdCAqTlBOX1JldGFpbk9iamVjdCAoTlBPYmplY3QgKm9iaik7CiAK
IC8qCkBAIC0zMDMsNiArMzEzLDcgQEANCiAgICAgY291bnQgZ29lcyB0byB6ZXJvLCB0aGUgY2xh
c3MncyBkZXN0cm95IGZ1bmN0aW9uIGlzIGludm9rZSBpZgogICAgIHNwZWNpZmllZCwgb3RoZXJ3
aXNlIHRoZSBvYmplY3QgaXMgZnJlZWQgZGlyZWN0bHkuCiAqLworSU1QT1JUX0MKIHZvaWQgTlBO
X1JlbGVhc2VPYmplY3QgKE5QT2JqZWN0ICpvYmopOwogCiAvKgpAQCAtMzE2LDE5ICszMjcsMjgg
QEANCiAgICAgQ2FsbHMgbWFkZSBmcm9tIHBsdWdpbiBjb2RlIHRvIHNjcmlwdCBtdXN0IGJlIG1h
ZGUgZnJvbSB0aGUgdGhyZWFkCiAgICAgb24gd2hpY2ggdGhlIHBsdWdpbiB3YXMgaW5pdGlhbGl6
ZWQuCiAqLworSU1QT1JUX0MKIGJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCAqbnBv
YmosIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQz
Ml90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7CitJTVBPUlRfQwogYm9vbCBOUE5fSW52
b2tlRGVmYXVsdChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIGNvbnN0IE5QVmFyaWFudCAqYXJn
cywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0KTsKK0lNUE9SVF9DCiBib29s
IE5QTl9FdmFsdWF0ZShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QU3RyaW5nICpzY3JpcHQs
IE5QVmFyaWFudCAqcmVzdWx0KTsKK0lNUE9SVF9DCiBib29sIE5QTl9HZXRQcm9wZXJ0eShOUFAg
bnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIE5QVmFyaWFu
dCAqcmVzdWx0KTsKK0lNUE9SVF9DCiBib29sIE5QTl9TZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9i
amVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIGNvbnN0IE5QVmFyaWFudCAq
dmFsdWUpOworSU1QT1JUX0MKIGJvb2wgTlBOX1JlbW92ZVByb3BlcnR5KE5QUCBucHAsIE5QT2Jq
ZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSk7CitJTVBPUlRfQwogYm9vbCBO
UE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJv
cGVydHlOYW1lKTsKK0lNUE9SVF9DCiBib29sIE5QTl9IYXNNZXRob2QoTlBQIG5wcCwgTlBPYmpl
Y3QgKm5wb2JqLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSk7CiAKIC8qCiAgICAgTlBOX1NldEV4
Y2VwdGlvbiBtYXkgYmUgY2FsbGVkIHRvIHRyaWdnZXIgYSBzY3JpcHQgZXhjZXB0aW9uIHVwb24g
cmV0dXJuCiAgICAgZnJvbSBlbnRyeSBwb2ludHMgaW50byBOUE9iamVjdHMuCiAqLworSU1QT1JU
X0MKIHZvaWQgTlBOX1NldEV4Y2VwdGlvbiAoTlBPYmplY3QgKm9iaiwgY29uc3QgTlBVVEY4ICpt
ZXNzYWdlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9QYXNzUmVmUHRyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
UGFzc1JlZlB0ci5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxODggQEANCisvLyAtKi0gbW9k
ZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0NCisvKg0KKyAqICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIGxpYnJhcmllcw0KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4NCisgKg0KKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uDQorICoNCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQor
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAq
DQorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisgKiAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwNCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisjaWZu
ZGVmIEtYTUxDT1JFX1BBU1NfUkVGX1BUUl9IDQorI2RlZmluZSBLWE1MQ09SRV9QQVNTX1JFRl9Q
VFJfSA0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBSZWZQdHI7DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7
DQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQgKnAp
Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiANCisgICAgY2xhc3MgUGFzc1JlZlB0cg0K
KyAgICB7DQorICAgIHB1YmxpYzoNCisgICAgICAgIFBhc3NSZWZQdHIoKSA6IG1fcHRyKDApIHt9
DQorICAgICAgICBQYXNzUmVmUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsgaWYgKHB0cikgcHRy
LT5yZWYoKTsgfQ0KKyAgICAgICAgLy8gSXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3Rl
bSB0byBhbGxvdyB0cmFuc2ZlciBvZiBvd25lcnNoaXAgb3V0IG9mDQorICAgICAgICAvLyBhIGNv
bnN0IFBhc3NSZWZQdHIuIEhvd2V2ZXIsIGl0IG1ha2VzIGl0IG11Y2ggZWFzaWVyIHRvIHdvcmsg
d2l0aCBQYXNzUmVmUHRyDQorICAgICAgICAvLyB0ZW1wb3JhcmllcywgYW5kIHdlIGRvbid0IHJl
YWxseSBoYXZlIGEgbmVlZCB0byB1c2UgcmVhbCBjb25zdCBQYXNzUmVmUHRycyANCisgICAgICAg
IC8vIGFueXdheS4NCisgICAgICAgIFBhc3NSZWZQdHIoY29uc3QgUGFzc1JlZlB0ciYgbykgOiBt
X3B0cihvLnJlbGVhc2UoKSkge30NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBQYXNz
UmVmUHRyKGNvbnN0IFBhc3NSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5yZWxlYXNlKCkpIHsgfQ0K
Kw0KKyAgICAgICAgflBhc3NSZWZQdHIoKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5kZXJl
ZigpOyB9DQorICAgICAgICANCisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiANCisgICAgICAg
IFBhc3NSZWZQdHIoY29uc3QgUmVmUHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgaWYgKFQg
KnB0ciA9IG1fcHRyKSBwdHItPnJlZigpOyB9DQorICAgICAgICANCisgICAgICAgIFQgKmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9DQorDQorICAgICAgICBUICpyZWxlYXNlKCkgY29uc3Qg
eyBUICp0bXAgPSBtX3B0cjsgbV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9DQorDQorICAgICAgICBU
JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0NCisgICAgICAgIFQgKm9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQ0KKyAgICAgICAgDQorICAgICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQ0KKw0KKyAgICAgICAgLy8gVGhp
cyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wg
YnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLg0KKyAgICAgICAgdHlwZWRlZiBUKiAoUGFz
c1JlZlB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpKCkgY29uc3Q7DQorICAgICAgICBvcGVyYXRv
ciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUGFzc1JlZlB0
cjo6Z2V0IDogMDsgfQ0KKyAgICAgICAgDQorICAgICAgICBQYXNzUmVmUHRyJiBvcGVyYXRvcj0o
VCAqKTsNCisgICAgICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyJik7
DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUGFzc1JlZlB0ciYgb3BlcmF0b3I9KGNv
bnN0IFBhc3NSZWZQdHI8VT4mKTsNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBQYXNz
UmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7DQorDQorICAgICAgICBmcmllbmQg
UGFzc1JlZlB0ciBhZG9wdFJlZjxUPihUICopOw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgLy8g
YWRvcHRpbmcgY29uc3RydWN0b3INCisgICAgICAgIFBhc3NSZWZQdHIoVCAqcHRyLCBib29sKSA6
IG1fcHRyKHB0cikge30NCisgICAgICAgIG11dGFibGUgVCAqbV9wdHI7DQorICAgIH07DQorICAg
IA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGlu
ZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+
JiBvKSANCisgICAgew0KKyAgICAgICAgVCogb3B0ciA9IG8uZ2V0KCk7DQorICAgICAgICBpZiAo
b3B0cikNCisgICAgICAgICAgICBvcHRyLT5yZWYoKTsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRy
Ow0KKyAgICAgICAgbV9wdHIgPSBvcHRyOw0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAgICAg
ICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAgDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiYgUGFzc1JlZlB0
cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpDQorICAgIHsNCisgICAgICAgIGlmIChvcHRyKQ0KKyAg
ICAgICAgICAgIG9wdHItPnJlZigpOw0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQorICAgICAg
ICBtX3B0ciA9IG9wdHI7DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVy
ZWYoKTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9y
PShjb25zdCBQYXNzUmVmUHRyPFQ+JiByZWYpDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1f
cHRyOw0KKyAgICAgICAgbV9wdHIgPSByZWYucmVsZWFzZSgpOw0KKyAgICAgICAgaWYgKHB0cikN
CisgICAgICAgICAgICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAg
IH0NCisgICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQ
YXNzUmVmUHRyPFU+JiByZWYpDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRyOw0KKyAg
ICAgICAgbV9wdHIgPSByZWYucmVsZWFzZSgpOw0KKyAgICAgICAgaWYgKHB0cikNCisgICAgICAg
ICAgICBwdHItPmRlcmVmKCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAg
DQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIA0K
KyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsgDQorICAgIH0NCisN
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUmVmUHRyPFU+JiBiKSANCisgICAg
eyANCisgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7IA0KKyAgICB9DQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsgDQor
ICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQYXNzUmVmUHRyPFQ+JiBhLCBVKiBiKSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhLmdl
dCgpID09IGI7IA0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+
JiBiKSANCisgICAgew0KKyAgICAgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgDQorICAgIH0NCisg
ICAgDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIp
IA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgDQorICAgIH0N
CisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29uc3QgUmVmUHRyPFU+JiBiKSANCisg
ICAgeyANCisgICAgICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IA0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikgDQorICAgIHsg
DQorICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBVKiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBi
KSANCisgICAgeyANCisgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IA0KKyAgICB9DQorICAg
IA0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4gYWRvcHRS
ZWYoVCAqcCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VD4ocCwgdHJ1ZSk7
DQorICAgIH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGlu
ZSBQYXNzUmVmUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYg
cCkgDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8VCAqPihw
LnJlbGVhc2UoKSkpOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4gY29uc3RfcG9pbnRlcl9jYXN0KGNvbnN0IFBh
c3NSZWZQdHI8VT4mIHApIA0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGNvbnN0
X2Nhc3Q8VCAqPihwLnJlbGVhc2UoKSkpOyANCisgICAgfQ0KKw0KK30gLy8gbmFtZXNwYWNlIFdU
Rg0KKw0KK3VzaW5nIFdURjo6UGFzc1JlZlB0cjsNCit1c2luZyBXVEY6OmFkb3B0UmVmOw0KK3Vz
aW5nIFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDsNCit1c2luZyBXVEY6OmNvbnN0X3BvaW50ZXJf
Y2FzdDsNCisNCisjZW5kaWYgLy8gS1hNTENPUkVfUEFTU19SRUZfUFRSX0gNCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9SZWZQdHIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1JlZlB0ci5oCShyZXZpc2lvbiAwKQ0KKysrIEphdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1JlZlB0ci5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwxODUgQEANCisvLyAtKi0g
bW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0NCisvKg0KKyAqICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcw0KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4NCisgKg0KKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQorICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0K
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uDQorICoNCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
DQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0K
KyAqDQorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwNCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuDQorICoNCisgKi8NCisNCisj
aWZuZGVmIEtYTUxDT1JFX1JFRl9QVFJfSA0KKyNkZWZpbmUgS1hNTENPUkVfUkVGX1BUUl9IDQor
DQorI2luY2x1ZGUgPGFsZ29yaXRobT4NCisjaW5jbHVkZSA8UGFzc1JlZlB0ci5oPg0KKw0KK25h
bWVzcGFjZSBXVEYgew0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1Jl
ZlB0cjsNCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cg0KKyAgICB7
DQorICAgIHB1YmxpYzoNCisgICAgICAgIFJlZlB0cigpIDogbV9wdHIoMCkge30NCisgICAgICAg
IFJlZlB0cihUICpwdHIpIDogbV9wdHIocHRyKSB7IGlmIChwdHIpIHB0ci0+cmVmKCk7IH0NCisg
ICAgICAgIFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyBpZiAoVCAq
cHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0NCisgICAgICAgIC8vIHNlZSBjb21tZW50IGluIFBh
c3NSZWZQdHIuaCBmb3Igd2h5IHRoaXMgdGFrZXMgY29uc3QgcmVmZXJlbmNlDQorICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRyKGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsNCisNCisg
ICAgICAgIH5SZWZQdHIoKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5kZXJlZigpOyB9DQor
ICAgICAgICANCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29uc3QgUmVm
UHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgaWYgKFQgKnB0ciA9IG1fcHRyKSBwdHItPnJl
ZigpOyB9DQorICAgICAgICANCisgICAgICAgIFQgKmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRy
OyB9DQorICAgICAgICANCisgICAgICAgIFBhc3NSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUGFzc1Jl
ZlB0cjxUPiB0bXAgPSBhZG9wdFJlZihtX3B0cik7IG1fcHRyID0gMDsgcmV0dXJuIHRtcDsgfQ0K
Kw0KKyAgICAgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fcHRyOyB9DQorICAg
ICAgICBUICpvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCisgICAgICAgIA0K
KyAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0NCisgICAg
DQorICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNv
bnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuDQorICAgICAg
ICB0eXBlZGVmIFQgKiAoUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZSkoKSBjb25zdDsNCisg
ICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0
ciA/ICZSZWZQdHI6OmdldCA6IDA7IH0NCisgICAgICAgIA0KKyAgICAgICAgUmVmUHRyJiBvcGVy
YXRvcj0oY29uc3QgUmVmUHRyJik7DQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShUICopOw0K
KyAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxUPiYpOw0KKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxV
PiYpOw0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNv
bnN0IFBhc3NSZWZQdHI8VT4mKTsNCisNCisgICAgICAgIHZvaWQgc3dhcChSZWZQdHImKTsNCisN
CisgICAgcHJpdmF0ZToNCisgICAgICAgIFQgKm1fcHRyOw0KKyAgICB9Ow0KKyAgICANCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRy
PFQ+OjpSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYgbykNCisgICAgICAgIDogbV9wdHIoby5y
ZWxlYXNlKCkpDQorICAgIHsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFQ+JiBv
KQ0KKyAgICB7DQorICAgICAgICBUKiBvcHRyID0gby5nZXQoKTsNCisgICAgICAgIGlmIChvcHRy
KQ0KKyAgICAgICAgICAgIG9wdHItPnJlZigpOw0KKyAgICAgICAgVCogcHRyID0gbV9wdHI7DQor
ICAgICAgICBtX3B0ciA9IG9wdHI7DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0
ci0+ZGVyZWYoKTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICANCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRy
PFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mIG8pDQorICAgIHsNCisg
ICAgICAgIFQqIG9wdHIgPSBvLmdldCgpOw0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAg
ICAgb3B0ci0+cmVmKCk7DQorICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRy
ID0gb3B0cjsNCisgICAgICAgIGlmIChwdHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0K
KyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIA0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikN
CisgICAgew0KKyAgICAgICAgaWYgKG9wdHIpDQorICAgICAgICAgICAgb3B0ci0+cmVmKCk7DQor
ICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gb3B0cjsNCisgICAgICAg
IGlmIChwdHIpDQorICAgICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0
aGlzOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRy
PFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBvKQ0KKyAgICB7
DQorICAgICAgICBUKiBwdHIgPSBtX3B0cjsNCisgICAgICAgIG1fcHRyID0gby5yZWxlYXNlKCk7
DQorICAgICAgICBpZiAocHRyKQ0KKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsNCisgICAgICAg
IHJldHVybiAqdGhpczsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVt
cGxhdGUgPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9
KGNvbnN0IFBhc3NSZWZQdHI8VT4mIG8pDQorICAgIHsNCisgICAgICAgIFQqIHB0ciA9IG1fcHRy
Ow0KKyAgICAgICAgbV9wdHIgPSBvLnJlbGVhc2UoKTsNCisgICAgICAgIGlmIChwdHIpDQorICAg
ICAgICAgICAgcHRyLT5kZXJlZigpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQor
DQorICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBSZWZQdHI8VD46OnN3YXAoUmVm
UHRyPFQ+JiBvKQ0KKyAgICB7DQorICAgICAgICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOw0K
KyAgICB9DQorDQorICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFJlZlB0
cjxUPiYgYSwgUmVmUHRyPFQ+JiBiKQ0KKyAgICB7DQorICAgICAgICBhLnN3YXAoYik7DQorICAg
IH0NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpDQorICAg
IHsgDQorICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyANCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpDQorICAgIHsgDQorICAgICAgICByZXR1cm4gYS5n
ZXQoKSA9PSBiOyANCisgICAgfQ0KKyAgICANCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUmVmUHRyPFU+JiBi
KSANCisgICAgew0KKyAgICAgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgDQorICAgIH0NCisgICAg
DQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUmVmUHRyPFU+JiBiKQ0KKyAgICB7IA0K
KyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgDQorICAgIH0NCisNCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmVmUHRyPFQ+JiBhLCBVKiBiKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYS5nZXQoKSAh
PSBiOyANCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpDQorICAgIHsg
DQorICAgICAgICByZXR1cm4gYSAhPSBiLmdldCgpOyANCisgICAgfQ0KKyAgICANCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4gc3RhdGljX3Bv
aW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHApDQorICAgIHsgDQorICAgICAgICByZXR1cm4g
UmVmUHRyPFQ+KHN0YXRpY19jYXN0PFQgKj4ocC5nZXQoKSkpOyANCisgICAgfQ0KKw0KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPiBjb25zdF9w
b2ludGVyX2Nhc3QoY29uc3QgUmVmUHRyPFU+JiBwKQ0KKyAgICB7IA0KKyAgICAgICAgcmV0dXJu
IFJlZlB0cjxUPihjb25zdF9jYXN0PFQgKj4ocC5nZXQoKSkpOyANCisgICAgfQ0KKw0KK30gLy8g
bmFtZXNwYWNlIFdURg0KKw0KK3VzaW5nIFdURjo6UmVmUHRyOw0KK3VzaW5nIFdURjo6c3RhdGlj
X3BvaW50ZXJfY2FzdDsNCit1c2luZyBXVEY6OmNvbnN0X3BvaW50ZXJfY2FzdDsNCisNCisjZW5k
aWYgLy8gS1hNTENPUkVfUkVGX1BUUl9IDQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
cnVudGltZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50
aW1lLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVu
dGltZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yNiwxMSArMjYsMTEgQEANCiAjaW5jbHVkZSA8
aW50ZXJwcmV0ZXIuaD4KIAogI2luY2x1ZGUgPHJ1bnRpbWVfb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8
am5pX2luc3RhbmNlLmg+Ci0jaW5jbHVkZSA8b2JqY19pbnN0YW5jZS5oPgorLy8jaW5jbHVkZSA8
am5pX2luc3RhbmNlLmg+CisvLyNpbmNsdWRlIDxvYmpjX2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8
Y19pbnN0YW5jZS5oPgogI2luY2x1ZGUgPE5QX2pzb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8am5pX2pz
b2JqZWN0Lmg+CisvLyNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEtKUzsKIHVzaW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOwpAQCAtOTksMzMgKzk5LDM1IEBA
DQogICAgIGFGaWVsZC0+c2V0VmFsdWVUb0luc3RhbmNlIChleGVjLCB0aGlzLCBhVmFsdWUpOwog
fQogCitFWFBPUlRfQwogSW5zdGFuY2UgKkluc3RhbmNlOjpjcmVhdGVCaW5kaW5nRm9yTGFuZ3Vh
Z2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5j
ZSwgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBJbnN0YW5jZSAq
bmV3SW5zdGFuY2UgPSAwOwogICAgIAogICAgIHN3aXRjaCAobGFuZ3VhZ2UpIHsKLQljYXNlIElu
c3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6
OkphdmFJbnN0YW5jZSAoKGpvYmplY3QpbmF0aXZlSW5zdGFuY2UsIGV4ZWN1dGlvbkNvbnRleHQp
OwotCSAgICBicmVhazsKLQl9Ci0JY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlOiB7
Ci0JICAgIG5ld0luc3RhbmNlID0gbmV3IEJpbmRpbmdzOjpPYmpjSW5zdGFuY2UgKChzdHJ1Y3Qg
b2JqY19vYmplY3QgKiluYXRpdmVJbnN0YW5jZSk7Ci0JICAgIGJyZWFrOwotCX0KLQljYXNlIElu
c3RhbmNlOjpDTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6OkNJ
bnN0YW5jZSAoKE5QT2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOwotCSAgICBicmVhazsKLQl9Ci0J
ZGVmYXVsdDoKLQkgICAgYnJlYWs7CisgICAgY2FzZSBJbnN0YW5jZTo6SmF2YUxhbmd1YWdlOiB7
CisgICAgICAgIC8vbmV3SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6OkphdmFJbnN0YW5jZSAoKGpv
YmplY3QpbmF0aXZlSW5zdGFuY2UsIGV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBicmVhazsK
ICAgICB9CisgICAgY2FzZSBJbnN0YW5jZTo6T2JqZWN0aXZlQ0xhbmd1YWdlOiB7CisgICAgICAg
IC8vbmV3SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6Ok9iamNJbnN0YW5jZSAoKHN0cnVjdCBvYmpj
X29iamVjdCAqKW5hdGl2ZUluc3RhbmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogeworICAgICAgICBuZXdJbnN0YW5jZSA9IG5ldyBCaW5k
aW5nczo6Q0luc3RhbmNlICgoTlBPYmplY3QgKiluYXRpdmVJbnN0YW5jZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBp
ZiAobmV3SW5zdGFuY2UpCi0JbmV3SW5zdGFuY2UtPnNldEV4ZWN1dGlvbkNvbnRleHQgKGV4ZWN1
dGlvbkNvbnRleHQpOwotCQorICAgIG5ld0luc3RhbmNlLT5zZXRFeGVjdXRpb25Db250ZXh0IChl
eGVjdXRpb25Db250ZXh0KTsKKyAgICAKICAgICByZXR1cm4gbmV3SW5zdGFuY2U7CiB9CiAKK0VY
UE9SVF9DCiBPYmplY3QgSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QgKEJpbmRpbmdMYW5n
dWFnZSBsYW5ndWFnZSwgdm9pZCAqbmF0aXZlSW5zdGFuY2UsIGNvbnN0IFJvb3RPYmplY3QgKmV4
ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgSW5zdGFuY2UgKmludGVyZmFjZU9iamVjdCA9IEluc3Rh
bmNlOjpjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAobGFuZ3VhZ2UsICh2b2lkICop
bmF0aXZlSW5zdGFuY2UsIGV4ZWN1dGlvbkNvbnRleHQpOwpAQCAtMTM0LDMyICsxMzYsMzMgQEAN
CiAgICAgcmV0dXJuIE9iamVjdChuZXcgUnVudGltZU9iamVjdEltcChpbnRlcmZhY2VPYmplY3Qs
dHJ1ZSkpOwogfQogCitFWFBPUlRfQwogdm9pZCAqSW5zdGFuY2U6OmNyZWF0ZUxhbmd1YWdlSW5z
dGFuY2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2Us
IGNvbnN0IE9iamVjdCAmdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgUm9v
dE9iamVjdCAqY3VycmVudCkKIHsKICAgICB2b2lkICpyZXN1bHQgPSAwOwogICAgIAogICAgIGlm
ICh2YWx1ZS50eXBlKCkgIT0gT2JqZWN0VHlwZSkKLQlyZXR1cm4gMDsKKyAgICByZXR1cm4gMDsK
IAogICAgIE9iamVjdEltcCAqaW1wID0gc3RhdGljX2Nhc3Q8T2JqZWN0SW1wKj4odmFsdWUuaW1w
KCkpOwogICAgIAogICAgIHN3aXRjaCAobGFuZ3VhZ2UpIHsKLQljYXNlIEluc3RhbmNlOjpPYmpl
Y3RpdmVDTGFuZ3VhZ2U6IHsKLQkgICAgcmVzdWx0ID0gY3JlYXRlT2JqY0luc3RhbmNlRm9yVmFs
dWUgKHZhbHVlLCBvcmlnaW4sIGN1cnJlbnQpOwotCSAgICBicmVhazsKLQl9Ci0JY2FzZSBJbnN0
YW5jZTo6Q0xhbmd1YWdlOiB7Ci0JICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0
ICgwLCBpbXAsIG9yaWdpbiwgY3VycmVudCk7Ci0JICAgIGJyZWFrOwotCX0KLQljYXNlIEluc3Rh
bmNlOjpKYXZhTGFuZ3VhZ2U6IHsKLQkgICAgLy8gRklYTUU6ICBmYWN0b3IgY3JlYXRpb24gb2Yg
am5pX2pzb2JqZWN0cywgYWxzbyByZW1vdmUgdW5uZWNlc3NhcnkgdGhyZWFkCi0JICAgIC8vIGlu
dm9jYXRpb24gY29kZS4KLQkgICAgYnJlYWs7Ci0JfQotCWRlZmF1bHQ6Ci0JICAgIGJyZWFrOwor
ICAgIGNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogeworICAgICAgICAvL3Jlc3Vs
dCA9IGNyZWF0ZU9iamNJbnN0YW5jZUZvclZhbHVlICh2YWx1ZSwgb3JpZ2luLCBjdXJyZW50KTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgSW5zdGFuY2U6OkNMYW5ndWFnZTogewor
ICAgICAgICByZXN1bHQgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoMCwgaW1wLCBvcmlnaW4s
IGN1cnJlbnQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnN0YW5jZTo6SmF2
YUxhbmd1YWdlOiB7CisgICAgICAgIC8vIEZJWE1FOiAgZmFjdG9yIGNyZWF0aW9uIG9mIGpuaV9q
c29iamVjdHMsIGFsc28gcmVtb3ZlIHVubmVjZXNzYXJ5IHRocmVhZAorICAgICAgICAvLyBpbnZv
Y2F0aW9uIGNvZGUuCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL3J1bnRpbWUuaAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvcnVudGltZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0K
ICNpbmNsdWRlICJsaXN0LmgiCiAjaW5jbHVkZSAib2JqZWN0LmgiCiAjaW5jbHVkZSAidmFsdWUu
aCIKKyNpbmNsdWRlICJoYXNobWFwLmgiCiAKIG5hbWVzcGFjZSBLSlMgCiB7CkBAIC0xMzYsOSAr
MTM3LDkgQEANCiAgICAgc3RhdGljIHZvaWQgc2V0RGlkRXhlY3V0ZUZ1bmN0aW9uIChLSlNEaWRF
eGVjdXRlRnVuY3Rpb25QdHIgZnVuYyk7CiAgICAgc3RhdGljIEtKU0RpZEV4ZWN1dGVGdW5jdGlv
blB0ciBkaWRFeGVjdXRlRnVuY3Rpb24gKCk7CiAgICAgCi0gICAgc3RhdGljIEluc3RhbmNlICpj
cmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdl
LCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOwotICAgIHN0
YXRpYyB2b2lkICpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKEV4ZWNTdGF0ZSAqZXhl
YywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBjb25zdCBPYmplY3QgJnZhbHVlLCBjb25zdCBS
b290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QgKmN1cnJlbnQpOwotICAgIHN0YXRp
YyBPYmplY3QgY3JlYXRlUnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2
b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOworICAgIElNUE9S
VF9DIHN0YXRpYyBJbnN0YW5jZSAqY3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UgKEJp
bmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgdm9pZCAqbmF0aXZlSW5zdGFuY2UsIGNvbnN0IFJvb3RP
YmplY3QgKnIgPSAwKTsKKyAgICBJTVBPUlRfQyBzdGF0aWMgdm9pZCAqY3JlYXRlTGFuZ3VhZ2VJ
bnN0YW5jZUZvclZhbHVlIChFeGVjU3RhdGUgKmV4ZWMsIEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFn
ZSwgY29uc3QgT2JqZWN0ICZ2YWx1ZSwgY29uc3QgUm9vdE9iamVjdCAqb3JpZ2luLCBjb25zdCBS
b290T2JqZWN0ICpjdXJyZW50KTsKKyAgICBJTVBPUlRfQyBzdGF0aWMgT2JqZWN0IGNyZWF0ZVJ1
bnRpbWVPYmplY3QgKEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgdm9pZCAqbmF0aXZlSW5zdGFu
Y2UsIGNvbnN0IFJvb3RPYmplY3QgKnIgPSAwKTsKIAogICAgIEluc3RhbmNlICgpIDogX2V4ZWN1
dGlvbkNvbnRleHQoMCkge307CiAgICAgCkBAIC0xODcsNiArMTg4LDkgQEANCiAKIGNvbnN0IGNo
YXIgKnNpZ25hdHVyZUZvclBhcmFtZXRlcnMoY29uc3QgS0pTOjpMaXN0ICZhTGlzdCk7CiAKK3R5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgTWV0aG9kTGlzdCo+IE1ldGhvZExp
c3RNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIE1ldGhvZCo+IE1l
dGhvZE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgRmllbGQqPiBG
aWVsZE1hcDsKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCiAKIH0gLy8gbmFtZXNwYWNlIEtKUwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9vYmplY3QuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9vYmplY3QuY3BwCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX29iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC01NCw3ICs1NCw3IEBADQogICAgIH0KIH0KIAotUnVudGlt
ZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChCaW5kaW5nczo6SW5zdGFuY2UgKmksIGJvb2wg
b2kpIDogT2JqZWN0SW1wICgoT2JqZWN0SW1wICopMCkKK0VYUE9SVF9DIFJ1bnRpbWVPYmplY3RJ
bXA6OlJ1bnRpbWVPYmplY3RJbXAoQmluZGluZ3M6Okluc3RhbmNlICppLCBib29sIG9pKSA6IE9i
amVjdEltcCAoKE9iamVjdEltcCAqKTApCiB7CiAgICAgb3duc0luc3RhbmNlID0gb2k7CiAgICAg
aW5zdGFuY2UgPSBpOwpAQCAtODMsNyArODMsNyBAQA0KICAgICAgICAgICAgICAgICByZXN1bHQg
PSBPYmplY3QgKG5ldyBSdW50aW1lTWV0aG9kSW1wKGV4ZWMsIHByb3BlcnR5TmFtZSwgbWV0aG9k
TGlzdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0JCisgICAgCiAgICAgICAgIGlmIChy
ZXN1bHQudHlwZSgpID09IFVuZGVmaW5lZFR5cGUpIHsKICAgICAgICAgICAgIC8vIFRyeSBhIGZh
bGxiYWNrIG9iamVjdC4KICAgICAgICAgICAgIHJlc3VsdCA9IGFDbGFzcy0+ZmFsbGJhY2tPYmpl
Y3QgKGV4ZWMsIGluc3RhbmNlLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTA3LDEwICsxMDcsMTAgQEAN
CiAgICAgICAgIGdldEludGVybmFsSW5zdGFuY2UoKS0+c2V0VmFsdWVPZkZpZWxkKGV4ZWMsIGFG
aWVsZCwgdmFsdWUpOwogICAgIH0KICAgICBlbHNlIHsKLQlpZiAoZ2V0SW50ZXJuYWxJbnN0YW5j
ZSgpLT5zdXBwb3J0c1NldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCgpKXsKLQkgICAgZ2V0SW50ZXJu
YWxJbnN0YW5jZSgpLT5zZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSk7Ci0JfQorICAgIGlmIChnZXRJbnRlcm5hbEluc3RhbmNlKCktPnN1cHBvcnRzU2V0
VmFsdWVPZlVuZGVmaW5lZEZpZWxkKCkpeworICAgICAgICBnZXRJbnRlcm5hbEluc3RhbmNlKCkt
PnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAg
ICB9CisgICAgfQogCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBA
DQogICAgIGluc3RhbmNlLT5lbmQoKTsKIAogICAgIGlmIChhRmllbGQpCi0JcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAxNzA2OSkN
CisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzcsNyArMzcsNyBAQA0KICAgICAKICAgICB+UnVudGltZU9iamVjdEltcCgpOwog
ICAgIAotICAgIFJ1bnRpbWVPYmplY3RJbXAoQmluZGluZ3M6Okluc3RhbmNlICppLCBib29sIG93
bnNJbnN0YW5jZSA9IHRydWUpOworICAgIElNUE9SVF9DIFJ1bnRpbWVPYmplY3RJbXAoQmluZGlu
Z3M6Okluc3RhbmNlICppLCBib29sIG93bnNJbnN0YW5jZSA9IHRydWUpOwogCiAgICAgY29uc3Qg
Q2xhc3NJbmZvICpjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQogCkBAIC00OSw3
ICs0OSw3IEBADQogICAgIHZpcnR1YWwgYm9vbCBjYW5QdXQoRXhlY1N0YXRlICpleGVjLCBjb25z
dCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhh
c093blByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywKLQkJCSAgICAgY29uc3QgSWRlbnRpZmllciAm
cHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciAm
cHJvcGVydHlOYW1lKSBjb25zdDsKIAogCiAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5
KEV4ZWNTdGF0ZSAqZXhlYywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVf
cm9vdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1l
X3Jvb3QuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9y
dW50aW1lX3Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsOSArMjAsOSBAQA0KICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KLSNpbmNsdWRlIDxqbmlfanNvYmplY3QuaD4KKy8vI2luY2x1ZGUgPGpu
aV9qc29iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWVfcm9vdC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgS0pTOwpAQCAtNDIsNiArNDIsNyBAQA0KIC8vIDEgT1IgdGhlIGFwcGxldCBpcyBzaHV0ZG93
biB3ZSBkZXJlZiB0aGUgSmF2YVNjcmlwdCBpbnN0YW5jZS4gIEFwcGxldCBpbnN0YW5jZXMKIC8v
IGFyZSByZXByZXNlbnRlZCBieSBhIGpsb25nLgogCisvKgogc3RhdGljIENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgcmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgPSAwOwogCiBzdGF0aWMgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBnZXRSZWZlcmVuY2VzQnlSb290RGljdGlvbmFyeSgpCkBAIC01NSw3
ICs1Niw3IEBADQogewogICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmc0J5Um9vdCA9IGdl
dFJlZmVyZW5jZXNCeVJvb3REaWN0aW9uYXJ5KCk7CiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IDA7Ci0gICAgCisKICAgICByZWZlcmVuY2VzRGljdGlv
bmFyeSA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlIChyZWZz
QnlSb290LCAoY29uc3Qgdm9pZCAqKXJvb3QpOwogICAgIGlmICghcmVmZXJlbmNlc0RpY3Rpb25h
cnkpIHsKICAgICAgICAgcmVmZXJlbmNlc0RpY3Rpb25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKE5VTEwsIDAsIE5VTEwsIE5VTEwpOwpAQCAtNjUsNyArNjYsNyBAQA0KICAgICByZXR1
cm4gcmVmZXJlbmNlc0RpY3Rpb25hcnk7CiB9CiAKLS8vIFNjYW4gYWxsIHRoZSBkaWN0aW9uYXJ5
IGZvciBhbGwgdGhlIHJvb3RzIHRvIHNlZSBpZiBhbnkgaGF2ZSBhIAorLy8gU2NhbiBhbGwgdGhl
IGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9vdHMgdG8gc2VlIGlmIGFueSBoYXZlIGEKIC8vIHJl
ZmVyZW5jZSB0byB0aGUgaW1wLCBhbmQgaWYgc28sIHJldHVybiBpdCdzIHJlZmVyZW5jZSBjb3Vu
dAogLy8gZGljdGlvbmFyeS4KIC8vIEZJWE1FOiAgVGhpcyBpcyBhIHBvdGVudGlhbCBwZXJmb3Jt
YW5jZSBib3R0bGVuZWNrIHdpdGggbWFueSBhcHBsZXRzLiAgV2UgY291bGQgZml4IGJlIGFkZGlu
ZyBhCkBAIC03NCwxMSArNzUsMTEgQEANCiB7CiAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBy
ZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNlc0J5Um9vdERpY3Rpb25hcnkgKCk7CiAgICAgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBmb3VuZERpY3Rpb25hcnkgPSAwOwotICAgIAorCiAgICAgaWYgKHJl
ZnNCeVJvb3QpIHsKICAgICAgICAgY29uc3Qgdm9pZCAqKmFsbFZhbHVlcyA9IDA7CiAgICAgICAg
IENGSW5kZXggY291bnQsIGk7Ci0gICAgICAgIAorCiAgICAgICAgIGNvdW50ID0gQ0ZEaWN0aW9u
YXJ5R2V0Q291bnQocmVmc0J5Um9vdCk7CiAgICAgICAgIGFsbFZhbHVlcyA9IChjb25zdCB2b2lk
ICoqKW1hbGxvYyAoc2l6ZW9mKHZvaWQgKikgKiBjb3VudCk7CiAgICAgICAgIENGRGljdGlvbmFy
eUdldEtleXNBbmRWYWx1ZXMgKHJlZnNCeVJvb3QsIE5VTEwsIGFsbFZhbHVlcyk7CkBAIC04OSw3
ICs5MCw3IEBADQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIGZyZWUgKCh2b2lkICopYWxsVmFsdWVzKTsKICAgICB9
CiAgICAgcmV0dXJuIGZvdW5kRGljdGlvbmFyeTsKQEAgLTEwMSwxMiArMTAyLDEyIEBADQogewog
ICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJv
b3REaWN0aW9uYXJ5ICgpOwogICAgIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290T2Jq
ZWN0ID0gMDsKLSAgICAKKwogICAgIGlmIChyZWZzQnlSb290KSB7CiAgICAgICAgIGNvbnN0IHZv
aWQgKiphbGxWYWx1ZXMgPSAwOwogICAgICAgICBjb25zdCB2b2lkICoqYWxsS2V5cyA9IDA7CiAg
ICAgICAgIENGSW5kZXggY291bnQsIGk7Ci0gICAgICAgIAorCiAgICAgICAgIGNvdW50ID0gQ0ZE
aWN0aW9uYXJ5R2V0Q291bnQocmVmc0J5Um9vdCk7CiAgICAgICAgIGFsbEtleXMgPSAoY29uc3Qg
dm9pZCAqKiltYWxsb2MgKHNpemVvZih2b2lkICopICogY291bnQpOwogICAgICAgICBhbGxWYWx1
ZXMgPSAoY29uc3Qgdm9pZCAqKiltYWxsb2MgKHNpemVvZih2b2lkICopICogY291bnQpOwpAQCAt
MTE4LDcgKzExOSw3IEBADQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGZyZWUgKCh2b2lkICopYWxsS2V5cyk7CiAg
ICAgICAgIGZyZWUgKCh2b2lkICopYWxsVmFsdWVzKTsKICAgICB9CkBAIC0xMjksMTIgKzEzMCwx
MiBAQA0KIHsKICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZnNCeVJvb3QgPSBnZXRSZWZl
cmVuY2VzQnlSb290RGljdGlvbmFyeSAoKTsKICAgICBjb25zdCBCaW5kaW5nczo6Um9vdE9iamVj
dCAqYVJvb3RPYmplY3QgPSAwLCAqcmVzdWx0ID0gMDsKLSAgICAKKwogICAgIGlmIChyZWZzQnlS
b290KSB7CiAgICAgICAgIGNvbnN0IHZvaWQgKiphbGxWYWx1ZXMgPSAwOwogICAgICAgICBjb25z
dCB2b2lkICoqYWxsS2V5cyA9IDA7CiAgICAgICAgIENGSW5kZXggY291bnQsIGk7Ci0gICAgICAg
IAorCiAgICAgICAgIGNvdW50ID0gQ0ZEaWN0aW9uYXJ5R2V0Q291bnQocmVmc0J5Um9vdCk7CiAg
ICAgICAgIGFsbEtleXMgPSAoY29uc3Qgdm9pZCAqKiltYWxsb2MgKHNpemVvZih2b2lkICopICog
Y291bnQpOwogICAgICAgICBhbGxWYWx1ZXMgPSAoY29uc3Qgdm9pZCAqKiltYWxsb2MgKHNpemVv
Zih2b2lkICopICogY291bnQpOwpAQCAtMTQ2LDcgKzE0Nyw3IEBADQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGZy
ZWUgKCh2b2lkICopYWxsS2V5cyk7CiAgICAgICAgIGZyZWUgKCh2b2lkICopYWxsVmFsdWVzKTsK
ICAgICB9CkBAIC0xNTcsNyArMTU4LDcgQEANCiB7CiAgICAgaWYgKHJvb3QpIHsKICAgICAgICAg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZWZlcmVuY2VzRGljdGlvbmFyeSA9IGdldFJlZmVyZW5j
ZXNEaWN0aW9uYXJ5IChyb290KTsKLSAgICAgICAgCisKICAgICAgICAgdW5zaWduZWQgaW50IG51
bVJlZmVyZW5jZXMgPSAodW5zaWduZWQgaW50KUNGRGljdGlvbmFyeUdldFZhbHVlIChyZWZlcmVu
Y2VzRGljdGlvbmFyeSwgaW1wKTsKICAgICAgICAgaWYgKG51bVJlZmVyZW5jZXMgPT0gMCkgewog
I2lmICFVU0VfQ09OU0VSVkFUSVZFX0dDCkBAIC0xNjYsNyArMTY3LDcgQEANCiAjaWYgVVNFX0NP
TlNFUlZBVElWRV9HQyB8IFRFU1RfQ09OU0VSVkFUSVZFX0dDCiAgICAgICAgICAgICBJbnRlcnBy
ZXRlckxvY2sgbG9jazsKICAgICAgICAgICAgIGdjUHJvdGVjdChpbXApOwotI2VuZGlmIAorI2Vu
ZGlmCiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAocmVmZXJlbmNlc0RpY3Rpb25h
cnksIGltcCwgIChjb25zdCB2b2lkICopMSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBA
IC0xNzgsOCArMTc5LDggQEANCiB2b2lkIEtKUzo6QmluZGluZ3M6OnJlbW92ZU5hdGl2ZVJlZmVy
ZW5jZSAoT2JqZWN0SW1wICppbXApCiB7CiAgICAgaWYgKCFpbXApCi0JcmV0dXJuOwotCQorICAg
IHJldHVybjsKKwogICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJlbmNlc0RpY3Rpb25h
cnkgPSBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeSAoaW1wKTsKIAogICAgIGlmIChyZWZlcmVuY2Vz
RGljdGlvbmFyeSkgewpAQCAtMTkxLDcgKzE5Miw3IEBADQogI2lmIFVTRV9DT05TRVJWQVRJVkVf
R0MgfCBURVNUX0NPTlNFUlZBVElWRV9HQwogICAgICAgICAgICAgSW50ZXJwcmV0ZXJMb2NrIGxv
Y2s7CiAgICAgICAgICAgICBnY1VucHJvdGVjdChpbXApOwotI2VuZGlmIAorI2VuZGlmCiAgICAg
ICAgICAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZSAocmVmZXJlbmNlc0RpY3Rpb25hcnksIGlt
cCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0yMjMsMTAgKzIyNCwxMCBAQA0KIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVKYXZhU2NyaXB0QWNjZXNzTG9jaygpCiB7CiAgICAgcHRocmVh
ZF9tdXRleGF0dHJfdCBhdHRyOwotICAgIAorCiAgICAgcHRocmVhZF9tdXRleGF0dHJfaW5pdCgm
YXR0cik7CiAgICAgcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSAoJmF0dHIsIFBUSFJFQURfTVVU
RVhfUkVDVVJTSVZFKTsKLSAgICAKKwogICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmamF2YVNjcmlw
dEFjY2Vzc0xvY2ssICZhdHRyKTsKIH0KIApAQCAtMjYwLDcgKzI2MSw3IEBADQogICAgIC8vIGNh
bGwgY29tcGxldGVzLgogICAgIC8vCiAgICAgLy8gRklYTUU6ICBUaGlzIGNvdWxkIGJlIGEgcG90
ZW50aWFsIHBlcmZvcm1hbmNlIGlzc3VlLiAgQ3JlYXRpbmcgYW5kCi0gICAgLy8gYWRkaW5nIHJ1
biBsb29wIHNvdXJjZXMgaXMgZXhwZW5zaXZlLiAgV2UgY291bGQgY3JlYXRlIG9uZSBzb3VyY2Ug
CisgICAgLy8gYWRkaW5nIHJ1biBsb29wIHNvdXJjZXMgaXMgZXhwZW5zaXZlLiAgV2UgY291bGQg
Y3JlYXRlIG9uZSBzb3VyY2UKICAgICAvLyBwZXIgdGhyZWFkLCBhcyBuZWVkZWQsIGluc3RlYWQu
CiAgICAgY29udGV4dC0+b3JpZ2luYXRpbmdMb29wID0gY3VycmVudFJ1bkxvb3A7CiAgICAgQ0ZS
dW5Mb29wU291cmNlQ29udGV4dCBzb3VyY2VDb250ZXh0ID0gezAsIGNvbnRleHQsIE5VTEwsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGNvbXBsZXRlZEphdmFTY3JpcHRBY2Nl
c3N9OwpAQCAtMjcyLDcgKzI3Myw3IEBADQogICAgIGlmIChDRlJ1bkxvb3BJc1dhaXRpbmcoUm9v
dE9iamVjdDo6cnVuTG9vcCgpKSkgewogICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoUm9vdE9iamVj
dDo6cnVuTG9vcCgpKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBXYWl0IHVudGlsIHRoZSBKYXZh
U2NyaXB0IGFjY2VzcyB0aHJlYWQgaXMgZG9uZS4KICAgICBDRlJ1bkxvb3BSdW4gKCk7CiAKQEAg
LTI4NiwxNSArMjg3LDE1IEBADQogc3RhdGljIHZvaWQgcGVyZm9ybUphdmFTY3JpcHRBY2Nlc3Mo
dm9pZCAqaSkKIHsKICAgICBhc3NlcnQgKENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBSb290T2Jq
ZWN0OjpydW5Mb29wKCkpOwotICAgIAorCiAgICAgLy8gRGlzcGF0Y2ggSmF2YVNjcmlwdCBjYWxs
cyBoZXJlLgogICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgc291cmNlQ29udGV4dDsKICAgICBD
RlJ1bkxvb3BTb3VyY2VHZXRDb250ZXh0IChjb21wbGV0aW9uU291cmNlLCAmc291cmNlQ29udGV4
dCk7Ci0gICAgSlNPYmplY3RDYWxsQ29udGV4dCAqY2FsbENvbnRleHQgPSAoSlNPYmplY3RDYWxs
Q29udGV4dCAqKXNvdXJjZUNvbnRleHQuaW5mbzsgICAgCisgICAgSlNPYmplY3RDYWxsQ29udGV4
dCAqY2FsbENvbnRleHQgPSAoSlNPYmplY3RDYWxsQ29udGV4dCAqKXNvdXJjZUNvbnRleHQuaW5m
bzsKICAgICBDRlJ1bkxvb3BSZWYgb3JpZ2luYXRpbmdMb29wID0gY2FsbENvbnRleHQtPm9yaWdp
bmF0aW5nTG9vcDsKIAogICAgIEpTT2JqZWN0OjppbnZva2UgKGNhbGxDb250ZXh0KTsKLSAgICAK
KwogICAgIC8vIFNpZ25hbCB0aGUgb3JpZ2luYXRpbmcgdGhyZWFkIHRoYXQgd2UncmUgZG9uZS4K
ICAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwgKGNvbXBsZXRpb25Tb3VyY2UpOwogICAgIGlmIChD
RlJ1bkxvb3BJc1dhaXRpbmcob3JpZ2luYXRpbmdMb29wKSkgewpAQCAtMzEyLDggKzMxMyw4IEBA
DQogICAgIGFzc2VydCAoX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25QdHIg
PT0gMCk7CiAKICAgICBfZmluZFJvb3RPYmplY3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciA9
IGFGdW5jOwotICAgIAotICAgIC8vIEFzc3VtZSB0aGF0IHdlIGNhbiByZXRhaW4gdGhpcyBydW4g
bG9vcCBmb3JldmVyLiAgSXQnbGwgbW9zdCAKKworICAgIC8vIEFzc3VtZSB0aGF0IHdlIGNhbiBy
ZXRhaW4gdGhpcyBydW4gbG9vcCBmb3JldmVyLiAgSXQnbGwgbW9zdAogICAgIC8vIGxpa2VseSAo
YWx3YXlzPykgYmUgdGhlIG1haW4gbG9vcC4KICAgICBfcnVuTG9vcCA9IChDRlJ1bkxvb3BSZWYp
Q0ZSZXRhaW4gKENGUnVuTG9vcEdldEN1cnJlbnQgKCkpOwogCkBAIC0zMjQsMTUgKzMyNSwxNyBA
QA0KICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQmluZGluZ3M6OlJvb3RPYmplY3Q6Ol9ydW5Mb29w
LCBCaW5kaW5nczo6Um9vdE9iamVjdDo6X3BlcmZvcm1KYXZhU2NyaXB0U291cmNlLCBrQ0ZSdW5M
b29wRGVmYXVsdE1vZGUpOwogfQogCisqLwogLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgYXBw
bGV0IGlzIHNodXRkb3duLgorRVhQT1JUX0MKIHZvaWQgUm9vdE9iamVjdDo6cmVtb3ZlQWxsTmF0
aXZlUmVmZXJlbmNlcyAoKQogewotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVmZXJlbmNl
c0RpY3Rpb25hcnkgPSBnZXRSZWZlcmVuY2VzRGljdGlvbmFyeSAodGhpcyk7Ci0gICAgCisvKiAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlZmVyZW5jZXNEaWN0aW9uYXJ5ID0gZ2V0UmVmZXJl
bmNlc0RpY3Rpb25hcnkgKHRoaXMpOworCiAgICAgaWYgKHJlZmVyZW5jZXNEaWN0aW9uYXJ5KSB7
CiAgICAgICAgIHZvaWQgKiphbGxJbXBzID0gMDsKICAgICAgICAgQ0ZJbmRleCBjb3VudCwgaTsK
LSAgICAgICAgCisKICAgICAgICAgY291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChyZWZlcmVu
Y2VzRGljdGlvbmFyeSk7CiAgICAgICAgIGFsbEltcHMgPSAodm9pZCAqKiltYWxsb2MgKHNpemVv
Zih2b2lkICopICogY291bnQpOwogICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVz
IChyZWZlcmVuY2VzRGljdGlvbmFyeSwgKGNvbnN0IHZvaWQgKiopYWxsSW1wcywgTlVMTCk7CkBA
IC0zNTQsMTEgKzM1NywxMjcgQEANCiAgICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcmVm
c0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3REaWN0aW9uYXJ5KCk7CiAgICAgICAgIENGRGlj
dGlvbmFyeVJlbW92ZVZhbHVlIChyZWZzQnlSb290LCAoY29uc3Qgdm9pZCAqKXRoaXMpOwogICAg
ICAgICBkZWxldGUgdGhpczsKKyAgICB9Ki8KK30KKworCit0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
QmluZGluZ3M6OlJvb3RPYmplY3QqLCBSZWZlcmVuY2VzU2V0Kj4gUmVmZXJlbmNlc0J5Um9vdE1h
cDsKKworc3RhdGljIFJlZmVyZW5jZXNCeVJvb3RNYXAqIGdldFJlZmVyZW5jZXNCeVJvb3RNYXAo
KQoreworICAgIHN0YXRpYyBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZlcmVuY2VzQnlSb290TWFw
ID0gMDsKKworICAgIGlmICghcmVmZXJlbmNlc0J5Um9vdE1hcCkKKyAgICAgICAgcmVmZXJlbmNl
c0J5Um9vdE1hcCA9IG5ldyBSZWZlcmVuY2VzQnlSb290TWFwOworCisgICAgcmV0dXJuIHJlZmVy
ZW5jZXNCeVJvb3RNYXA7Cit9CisKK3N0YXRpYyBSZWZlcmVuY2VzU2V0KiBnZXRSZWZlcmVuY2Vz
U2V0KGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290KQoreworICAgIFJlZmVyZW5jZXNC
eVJvb3RNYXAqIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290TWFwKCk7CisgICAgUmVm
ZXJlbmNlc1NldCogcmVmZXJlbmNlc1NldCA9IDA7CisKKyAgICByZWZlcmVuY2VzU2V0ID0gcmVm
c0J5Um9vdC0+Z2V0KHJvb3QpOworICAgIGlmICghcmVmZXJlbmNlc1NldCkgeworICAgICAgICBy
ZWZlcmVuY2VzU2V0ICA9IG5ldyBSZWZlcmVuY2VzU2V0OworICAgICAgICByZWZzQnlSb290LT5h
ZGQocm9vdCwgcmVmZXJlbmNlc1NldCk7CiAgICAgfQorICAgIHJldHVybiByZWZlcmVuY2VzU2V0
OwogfQogCi12b2lkIFJvb3RPYmplY3Q6OnNldEludGVycHJldGVyIChLSlM6OkludGVycHJldGVy
ICppKQorLy8gU2NhbiBhbGwgdGhlIGRpY3Rpb25hcnkgZm9yIGFsbCB0aGUgcm9vdHMgdG8gc2Vl
IGlmIGFueSBoYXZlIGEKKy8vIHJlZmVyZW5jZSB0byB0aGUgaW1wLCBhbmQgaWYgc28sIHJldHVy
biBpdCdzIHJlZmVyZW5jZSBjb3VudAorLy8gZGljdGlvbmFyeS4KKy8vIEZJWE1FOiAgVGhpcyBp
cyBhIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIHdpdGggbWFueSBhcHBsZXRzLiAg
V2UgY291bGQgZml4IGJlIGFkZGluZyBhCisvLyBpbXAgdG8gcm9vdCBkaWN0aW9uYXJ5LgorUmVm
ZXJlbmNlc1NldCogS0pTOjpCaW5kaW5nczo6ZmluZFJlZmVyZW5jZVNldChPYmplY3RJbXAgKmlt
cCkKIHsKKyAgICBSZWZlcmVuY2VzQnlSb290TWFwKiByZWZzQnlSb290ID0gZ2V0UmVmZXJlbmNl
c0J5Um9vdE1hcCAoKTsKKyAgICBpZiAocmVmc0J5Um9vdCkgeworICAgICAgICBSZWZlcmVuY2Vz
QnlSb290TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZWZzQnlSb290LT5lbmQoKTsKKyAgICAg
ICAgZm9yIChSZWZlcmVuY2VzQnlSb290TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlZnNCeVJv
b3QtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUmVmZXJlbmNlc1Nl
dCogc2V0ID0gaXQtPnNlY29uZDsKKworICAgICAgICAgICAgaWYgKHNldC0+Y29udGFpbnMoaW1w
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2V0OworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKKy8vIEZJWE1FOiAgVGhpcyBpcyBhIHBvdGVudGlhbCBwZXJmb3JtYW5j
ZSBib3R0bGVuZWNrIHdpdGggbWFueSBhcHBsZXRzLiAgV2UgY291bGQgZml4IGJlIGFkZGluZyBh
CisvLyBpbXAgdG8gcm9vdCBkaWN0aW9uYXJ5LgorY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3Qg
KktKUzo6QmluZGluZ3M6OnJvb3RGb3JJbXAgKE9iamVjdEltcCAqaW1wKQoreworICAgIFJlZmVy
ZW5jZXNCeVJvb3RNYXAqIHJlZnNCeVJvb3QgPSBnZXRSZWZlcmVuY2VzQnlSb290TWFwICgpOwor
ICAgIGNvbnN0IEJpbmRpbmdzOjpSb290T2JqZWN0ICpyb290T2JqZWN0ID0gMDsKKworICAgIGlm
IChyZWZzQnlSb290KSB7CisgICAgICAgIFJlZmVyZW5jZXNCeVJvb3RNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IHJlZnNCeVJvb3QtPmVuZCgpOworICAgICAgICBmb3IgKFJlZmVyZW5jZXNCeVJv
b3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVmc0J5Um9vdC0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgICAgICBSZWZlcmVuY2VzU2V0KiBzZXQgPSBpdC0+c2Vjb25kOwor
ICAgICAgICAgICAgaWYgKHNldC0+Y29udGFpbnMoaW1wKSkgeworICAgICAgICAgICAgICAgIHJv
b3RPYmplY3QgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcm9vdE9iamVjdDsKK30KKworY29u
c3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKktKUzo6QmluZGluZ3M6OnJvb3RGb3JJbnRlcnByZXRl
ciAoS0pTOjpJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXIpCit7CisgICAgUmVmZXJlbmNlc0J5Um9v
dE1hcCogcmVmc0J5Um9vdCA9IGdldFJlZmVyZW5jZXNCeVJvb3RNYXAgKCk7CisKKyAgICBpZiAo
cmVmc0J5Um9vdCkgeworICAgICAgICBSZWZlcmVuY2VzQnlSb290TWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSByZWZzQnlSb290LT5lbmQoKTsKKyAgICAgICAgZm9yIChSZWZlcmVuY2VzQnlSb290
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlZnNCeVJvb3QtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICAgICAgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QqIGFSb290T2Jq
ZWN0ID0gaXQtPmZpcnN0OworCisgICAgICAgICAgICBpZiAoYVJvb3RPYmplY3QtPmludGVycHJl
dGVyKCkgPT0gaW50ZXJwcmV0ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFSb290T2JqZWN0
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgS0pTOjpCaW5k
aW5nczo6YWRkTmF0aXZlUmVmZXJlbmNlIChjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9v
dCwgT2JqZWN0SW1wICppbXApCit7CisgICAgaWYgKHJvb3QpIHsKKyAgICAgICAgUmVmZXJlbmNl
c1NldCogcmVmZXJlbmNlTWFwID0gZ2V0UmVmZXJlbmNlc1NldCAocm9vdCk7CisKKyAgICAgICAg
dW5zaWduZWQgbnVtUmVmZXJlbmNlcyA9IHJlZmVyZW5jZU1hcC0+Y291bnQoaW1wKTsKKyAgICAg
ICAgaWYgKG51bVJlZmVyZW5jZXMgPT0gMCkgeworLy8gICAgICAgICAgICBKU0xvY2sgbG9jazsK
KyAgICAgICAgICAgIGdjUHJvdGVjdChpbXApOworICAgICAgICB9CisgICAgICAgIHJlZmVyZW5j
ZU1hcC0+YWRkKGltcCk7CisgICAgfQorfQorCitFWFBPUlRfQyB2b2lkIEtKUzo6QmluZGluZ3M6
OnJlbW92ZU5hdGl2ZVJlZmVyZW5jZSAoT2JqZWN0SW1wICppbXApCit7CisgICAgaWYgKCFpbXAp
CisgICAgICAgIHJldHVybjsKKworICAgIFJlZmVyZW5jZXNTZXQgKnJlZmVyZW5jZXNTZXQgPSBm
aW5kUmVmZXJlbmNlU2V0KGltcCk7CisgICAgaWYgKHJlZmVyZW5jZXNTZXQpIHsKKyAgICAgICAg
dW5zaWduZWQgbnVtUmVmZXJlbmNlcyA9IHJlZmVyZW5jZXNTZXQtPmNvdW50KGltcCk7CisKKyAg
ICAgICAgaWYgKG51bVJlZmVyZW5jZXMgPT0gMSkgeworLy8gICAgICAgICAgICBKU0xvY2sgbG9j
azsKKyAgICAgICAgICAgIGdjVW5wcm90ZWN0KGltcCk7CisgICAgICAgIH0KKyAgICAgICAgcmVm
ZXJlbmNlc1NldC0+cmVtb3ZlKGltcCk7CisgICAgfQorfQorCitFWFBPUlRfQyB2b2lkIFJvb3RP
YmplY3Q6OnNldEludGVycHJldGVyIChLSlM6OkludGVycHJldGVyICppKQorewogICAgIF9pbnRl
cnByZXRlciA9IGk7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVf
cm9vdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9y
b290LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRp
bWVfcm9vdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsOCArMjcsOSBAQA0KIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
b2JqZWN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvam5pX2pzb2JqZWN0Lmg+CisvLyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9qbmlfanNvYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9wcm90ZWN0Lmg+CisjaW5jbHVkZSA8SGFzaENvdW50ZWRTZXQuaD4KIAogbmFtZXNw
YWNlIEtKUyB7CiAKQEAgLTM2LDkgKzM3LDExIEBADQogCiBjbGFzcyBSb290T2JqZWN0OwogCit0
eXBlZGVmIEhhc2hDb3VudGVkU2V0PE9iamVjdEltcCo+IFJlZmVyZW5jZXNTZXQ7CiB0eXBlZGVm
IFJvb3RPYmplY3QgKigqRmluZFJvb3RPYmplY3RGb3JOYXRpdmVIYW5kbGVGdW5jdGlvblB0ciko
dm9pZCAqKTsKIAotZXh0ZXJuIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZmluZFJlZmVyZW5jZURp
Y3Rpb25hcnkoT2JqZWN0SW1wICppbXApOworLy9leHRlcm4gQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiBmaW5kUmVmZXJlbmNlRGljdGlvbmFyeShPYmplY3RJbXAgKmltcCk7CitleHRlcm4gUmVmZXJl
bmNlc1NldCogZmluZFJlZmVyZW5jZVNldChPYmplY3RJbXAgKmltcCk7CiBleHRlcm4gY29uc3Qg
Um9vdE9iamVjdCAqcm9vdEZvckltcCAoT2JqZWN0SW1wICppbXApOwogZXh0ZXJuIGNvbnN0IFJv
b3RPYmplY3QgKnJvb3RGb3JJbnRlcnByZXRlciAoSW50ZXJwcmV0ZXIgKmludGVycHJldGVyKTsK
IGV4dGVybiB2b2lkIGFkZE5hdGl2ZVJlZmVyZW5jZSAoY29uc3QgUm9vdE9iamVjdCAqcm9vdCwg
T2JqZWN0SW1wICppbXApOwpAQCAtNzQsMTAgKzc3LDEwIEBADQogICAgIAogICAgIE9iamVjdElt
cCAqcm9vdE9iamVjdEltcCgpIGNvbnN0IHsgcmV0dXJuIF9pbXA7IH0KICAgICAKLSAgICB2b2lk
IHNldEludGVycHJldGVyIChJbnRlcnByZXRlciAqaSk7CisgICAgSU1QT1JUX0Mgdm9pZCBzZXRJ
bnRlcnByZXRlciAoSW50ZXJwcmV0ZXIgKmkpOwogICAgIEludGVycHJldGVyICppbnRlcnByZXRl
cigpIGNvbnN0IHsgcmV0dXJuIF9pbnRlcnByZXRlcjsgfQogCi0gICAgdm9pZCByZW1vdmVBbGxO
YXRpdmVSZWZlcmVuY2VzICgpOworICAgIElNUE9SVF9DIHZvaWQgcmVtb3ZlQWxsTmF0aXZlUmVm
ZXJlbmNlcyAoKTsKIAogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgdGhyZWFkIHRo
YXQgd2lsbCBiZSB1c2VkIHRvIGFjY2VzcyBKYXZhU2NyaXB0LgpAQCAtODYsMTEgKzg5LDExIEBA
DQogICAgICAgICByZXR1cm4gX2ZpbmRSb290T2JqZWN0Rm9yTmF0aXZlSGFuZGxlRnVuY3Rpb25Q
dHI7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIHsgcmV0
dXJuIF9ydW5Mb29wOyB9Ci0gICAgc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBwZXJmb3JtSmF2
YVNjcmlwdFNvdXJjZSgpIHsgcmV0dXJuIF9wZXJmb3JtSmF2YVNjcmlwdFNvdXJjZTsgfQorICAg
IC8vc3RhdGljIENGUnVuTG9vcFJlZiBydW5Mb29wKCkgeyByZXR1cm4gX3J1bkxvb3A7IH0KKyAg
ICAvL3N0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgcGVyZm9ybUphdmFTY3JpcHRTb3VyY2UoKSB7
IHJldHVybiBfcGVyZm9ybUphdmFTY3JpcHRTb3VyY2U7IH0KKworICAgIC8vc3RhdGljIHZvaWQg
ZGlzcGF0Y2hUb0phdmFTY3JpcHRUaHJlYWQoSlNPYmplY3RDYWxsQ29udGV4dCAqY29udGV4dCk7
CiAgICAgCi0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb0phdmFTY3JpcHRUaHJlYWQoSlNPYmpl
Y3RDYWxsQ29udGV4dCAqY29udGV4dCk7Ci0gICAgCiAgICAgY29uc3Qgdm9pZCAqbmF0aXZlSGFu
ZGxlKCkgY29uc3QgeyByZXR1cm4gX25hdGl2ZUhhbmRsZTsgfQogCiBwcml2YXRlOgpAQCAtOTks
OCArMTAyLDggQEANCiAgICAgSW50ZXJwcmV0ZXIgKl9pbnRlcnByZXRlcjsKIAogICAgIHN0YXRp
YyBGaW5kUm9vdE9iamVjdEZvck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyIF9maW5kUm9vdE9iamVj
dEZvck5hdGl2ZUhhbmRsZUZ1bmN0aW9uUHRyOwotICAgIHN0YXRpYyBDRlJ1bkxvb3BSZWYgX3J1
bkxvb3A7Ci0gICAgc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBfcGVyZm9ybUphdmFTY3JpcHRT
b3VyY2U7CisgICAgLy9zdGF0aWMgQ0ZSdW5Mb29wUmVmIF9ydW5Mb29wOworICAgIC8vc3RhdGlj
IENGUnVuTG9vcFNvdXJjZVJlZiBfcGVyZm9ybUphdmFTY3JpcHRTb3VyY2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvdXRpbGl0
eQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3V0aWxpdHkJKHJldmlz
aW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvdXRpbGl0eQkocmV2aXNpb24gMCkN
CkBAIC0wLDAgKzEsNTQ5IEBADQorLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDA0IEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KKy8vDQorLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQ0KKy8vIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQ0KKy8v
IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlDQorLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAo
YXQgeW91ciBvcHRpb24pDQorLy8gYW55IGxhdGVyIHZlcnNpb24uDQorDQorLy8gVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQor
Ly8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlDQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4NCisNCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZw0KKy8vIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUNCisvLyBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywNCisvLyBVU0EuDQorDQorLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwg
eW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlDQorLy8gbGli
cmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBp
bnN0YW50aWF0ZQ0KKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlv
bnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlDQorLy8gdGhpcyBmaWxlIGFuZCBsaW5r
IGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzDQorLy8g
ZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRv
IGJlIGNvdmVyZWQgYnkNCisvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlz
IGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyDQorLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVh
c29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5DQorLy8gdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KKw0KKy8qDQorICoNCisgKiBDb3B5cmlnaHQg
KGMpIDE5OTQNCisgKiBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQ0KKyAqDQorICogUGVybWlzc2lv
biB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSBhbmQgc2VsbCB0aGlzIHNvZnR3YXJl
DQorICogYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3Jh
bnRlZCB3aXRob3V0IGZlZSwNCisgKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZA0KKyAqIHRoYXQgYm90aCB0aGF0IGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyDQorICogaW4gc3Vw
cG9ydGluZyBkb2N1bWVudGF0aW9uLiAgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgbWFrZXMgbm8N
CisgKiByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdh
cmUgZm9yIGFueQ0KKyAqIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQg
ZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5Lg0KKyAqDQorICoNCisgKiBDb3B5cmlnaHQgKGMp
IDE5OTYsMTk5Nw0KKyAqIFNpbGljb24gR3JhcGhpY3MgQ29tcHV0ZXIgU3lzdGVtcywgSW5jLg0K
KyAqDQorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSBhbmQg
c2VsbCB0aGlzIHNvZnR3YXJlDQorICogYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVy
cG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwNCisgKiBwcm92aWRlZCB0aGF0IHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZA0KKyAqIHRo
YXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
YXBwZWFyDQorICogaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLiAgU2lsaWNvbiBHcmFwaGlj
cyBtYWtlcyBubw0KKyAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2Yg
dGhpcyBzb2Z0d2FyZSBmb3IgYW55DQorICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBp
cyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuDQorICovDQorDQorLy8gaGFj
a2VkIHRvZ2V0aGVyIGZyb20gdmFyaW91cyBzdGwgcGFydCB0byBtYWtlIEpTQywgV0MgY29tcGls
ZQ0KKw0KKyNpZm5kZWYgX1VUSUxJVFlfSA0KKyNkZWZpbmUgX1VUSUxJVFlfSCAxDQorDQorI2lu
Y2x1ZGUgPGl0ZXJhdG9yPg0KKw0KKyNkZWZpbmUgX19nbGliY3h4X2Z1bmN0aW9uX3JlcXVpcmVz
KGEpDQorI2RlZmluZSBfX2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoYSkNCisjZGVmaW5lIF9f
Z2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShhLGIpDQorI2RlZmluZSBfX2dsaWJjeHhfcmVx
dWlyZXNfaGVhcChhLGIpDQorDQorbmFtZXNwYWNlIHN0ZA0KK3sNCisgIC8vLyBwYWlyIGhvbGRz
IHR3byBvYmplY3RzIG9mIGFyYml0cmFyeSB0eXBlLg0KKyAgdGVtcGxhdGU8Y2xhc3MgX1QxLCBj
bGFzcyBfVDI+DQorICAgIHN0cnVjdCBwYWlyDQorICAgIHsNCisgICAgICB0eXBlZGVmIF9UMSBm
aXJzdF90eXBlOyAgICAvLy88ICBAYyBmaXJzdF90eXBlIGlzIHRoZSBmaXJzdCBib3VuZCB0eXBl
DQorICAgICAgdHlwZWRlZiBfVDIgc2Vjb25kX3R5cGU7ICAgLy8vPCAgQGMgc2Vjb25kX3R5cGUg
aXMgdGhlIHNlY29uZCBib3VuZCB0eXBlDQorDQorICAgICAgX1QxIGZpcnN0OyAgICAgICAgICAg
ICAgICAgLy8vPCBAYyBmaXJzdCBpcyBhIGNvcHkgb2YgdGhlIGZpcnN0IG9iamVjdA0KKyAgICAg
IF9UMiBzZWNvbmQ7ICAgICAgICAgICAgICAgIC8vLzwgQGMgc2Vjb25kIGlzIGEgY29weSBvZiB0
aGUgc2Vjb25kIG9iamVjdA0KKw0KKyAgICAgIC8vIF9HTElCQ1hYX1JFU09MVkVfTElCX0RFRkVD
VFMNCisgICAgICAvLyAyNjUuICBzdGQ6OnBhaXI6OnBhaXIoKSBlZmZlY3RzIG92ZXJseSByZXN0
cmljdGl2ZQ0KKyAgICAgIC8qKiBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBjcmVhdGVzIEBjIGZp
cnN0IGFuZCBAYyBzZWNvbmQgdXNpbmcgdGhlaXINCisgICAgICAgKiAgcmVzcGVjdGl2ZSBkZWZh
dWx0IGNvbnN0cnVjdG9ycy4gICovDQorICAgICAgcGFpcigpDQorICAgICAgOiBmaXJzdCgpLCBz
ZWNvbmQoKSB7IH0NCisNCisgICAgICAvKiogVHdvIG9iamVjdHMgbWF5IGJlIHBhc3NlZCB0byBh
IEBjIHBhaXIgY29uc3RydWN0b3IgdG8gYmUgY29waWVkLiAgKi8NCisgICAgICBwYWlyKGNvbnN0
IF9UMSYgX19hLCBjb25zdCBfVDImIF9fYikNCisgICAgICA6IGZpcnN0KF9fYSksIHNlY29uZChf
X2IpIHsgfQ0KKw0KKyAgICAgIC8qKiBUaGVyZSBpcyBhbHNvIGEgdGVtcGxhdGVkIGNvcHkgY3Rv
ciBmb3IgdGhlIEBjIHBhaXIgY2xhc3MgaXRzZWxmLiAgKi8NCisgICAgICB0ZW1wbGF0ZTxjbGFz
cyBfVTEsIGNsYXNzIF9VMj4NCisgICAgICAgIHBhaXIoY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9f
cCkNCisJOiBmaXJzdChfX3AuZmlyc3QpLCBzZWNvbmQoX19wLnNlY29uZCkgeyB9DQorICAgIH07
DQorDQorICAvLy8gVHdvIHBhaXJzIG9mIHRoZSBzYW1lIHR5cGUgYXJlIGVxdWFsIGlmZiB0aGVp
ciBtZW1iZXJzIGFyZSBlcXVhbC4NCisgIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0K
KyAgICBpbmxpbmUgYm9vbA0KKyAgICBvcGVyYXRvcj09KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBf
X3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpDQorICAgIHsgcmV0dXJuIF9feC5maXJzdCA9
PSBfX3kuZmlyc3QgJiYgX194LnNlY29uZCA9PSBfX3kuc2Vjb25kOyB9DQorDQorICAvLy8gPGh0
dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2xpYnN0ZGMrKy8yMF91dGlsL2hvd3RvLmh0bWwj
cGFpcmx0Pg0KKyAgdGVtcGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQorICAgIGlubGluZSBi
b29sDQorICAgIG9wZXJhdG9yPChjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWly
PF9UMSwgX1QyPiYgX195KQ0KKyAgICB7IHJldHVybiBfX3guZmlyc3QgPCBfX3kuZmlyc3QNCisJ
ICAgICB8fCAoIShfX3kuZmlyc3QgPCBfX3guZmlyc3QpICYmIF9feC5zZWNvbmQgPCBfX3kuc2Vj
b25kKTsgfQ0KKw0KKyAgLy8vIFVzZXMgQGMgb3BlcmF0b3I9PSB0byBmaW5kIHRoZSByZXN1bHQu
DQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wNCisg
ICAgb3BlcmF0b3IhPShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwg
X1QyPiYgX195KQ0KKyAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9DQorDQorICAvLy8gVXNl
cyBAYyBvcGVyYXRvcjwgdG8gZmluZCB0aGUgcmVzdWx0Lg0KKyAgdGVtcGxhdGU8Y2xhc3MgX1Qx
LCBjbGFzcyBfVDI+DQorICAgIGlubGluZSBib29sDQorICAgIG9wZXJhdG9yPihjb25zdCBwYWly
PF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KQ0KKyAgICB7IHJldHVy
biBfX3kgPCBfX3g7IH0NCisNCisgIC8vLyBVc2VzIEBjIG9wZXJhdG9yPCB0byBmaW5kIHRoZSBy
ZXN1bHQuDQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJv
b2wNCisgICAgb3BlcmF0b3I8PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWly
PF9UMSwgX1QyPiYgX195KQ0KKyAgICB7IHJldHVybiAhKF9feSA8IF9feCk7IH0NCisNCisgIC8v
LyBVc2VzIEBjIG9wZXJhdG9yPCB0byBmaW5kIHRoZSByZXN1bHQuDQorICB0ZW1wbGF0ZTxjbGFz
cyBfVDEsIGNsYXNzIF9UMj4NCisgICAgaW5saW5lIGJvb2wNCisgICAgb3BlcmF0b3I+PShjb25z
dCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KQ0KKyAgICB7
IHJldHVybiAhKF9feCA8IF9feSk7IH0NCisNCisgIC8qKg0KKyAgICogIEBicmllZiBBIGNvbnZl
bmllbmNlIHdyYXBwZXIgZm9yIGNyZWF0aW5nIGEgcGFpciBmcm9tIHR3byBvYmplY3RzLg0KKyAg
ICogIEBwYXJhbSAgeCAgVGhlIGZpcnN0IG9iamVjdC4NCisgICAqICBAcGFyYW0gIHkgIFRoZSBz
ZWNvbmQgb2JqZWN0Lg0KKyAgICogIEByZXR1cm4gICBBIG5ld2x5LWNvbnN0cnVjdGVkIHBhaXI8
PiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuDQorICAgKg0KKyAgICogIFRoZSBzdGFu
ZGFyZCByZXF1aXJlcyB0aGF0IHRoZSBvYmplY3RzIGJlIHBhc3NlZCBieSByZWZlcmVuY2UtdG8t
Y29uc3QsDQorICAgKiAgYnV0IExXRyBpc3N1ZSAjMTgxIHNheXMgdGhleSBzaG91bGQgYmUgcGFz
c2VkIGJ5IGNvbnN0IHZhbHVlLiAgV2UgZm9sbG93DQorICAgKiAgdGhlIExXRyBieSBkZWZhdWx0
Lg0KKyAgICovDQorICAvLyBfR0xJQkNYWF9SRVNPTFZFX0xJQl9ERUZFQ1RTDQorICAvLyAxODEu
ICBtYWtlX3BhaXIoKSB1bmludGVuZGVkIGJlaGF2aW9yDQorICB0ZW1wbGF0ZTxjbGFzcyBfVDEs
IGNsYXNzIF9UMj4NCisgICAgaW5saW5lIHBhaXI8X1QxLCBfVDI+DQorICAgIG1ha2VfcGFpcihf
VDEgX194LCBfVDIgX195KQ0KKyAgICB7IHJldHVybiBwYWlyPF9UMSwgX1QyPihfX3gsIF9feSk7
IH0NCisNCisNCisNCisgIC8vIGlzX2hlYXAsIGEgcHJlZGljYXRlIHRlc3Rpbmcgd2hldGhlciBv
ciBub3QgYSByYW5nZSBpcw0KKyAgLy8gYSBoZWFwLiAgVGhpcyBmdW5jdGlvbiBpcyBhbiBleHRl
bnNpb24sIG5vdCBwYXJ0IG9mIHRoZSBDKysNCisgIC8vIHN0YW5kYXJkLg0KKyAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+DQorICAg
IGJvb2wNCisgICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlz
dGFuY2UgX19uKQ0KKyAgICB7DQorICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsNCisgICAg
ICBmb3IgKF9EaXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKQ0K
Kwl7DQorCSAgaWYgKF9fZmlyc3RbX19wYXJlbnRdIDwgX19maXJzdFtfX2NoaWxkXSkNCisJICAg
IHJldHVybiBmYWxzZTsNCisJICBpZiAoKF9fY2hpbGQgJiAxKSA9PSAwKQ0KKwkgICAgKytfX3Bh
cmVudDsNCisJfQ0KKyAgICAgIHJldHVybiB0cnVlOw0KKyAgICB9DQorDQorICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwNCisgICAg
ICAgICAgIHR5cGVuYW1lIF9TdHJpY3RXZWFrT3JkZXJpbmc+DQorICAgIGJvb2wNCisgICAgX19p
c19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfU3RyaWN0V2Vha09yZGVyaW5n
IF9fY29tcCwNCisJICAgICAgX0Rpc3RhbmNlIF9fbikNCisgICAgew0KKyAgICAgIF9EaXN0YW5j
ZSBfX3BhcmVudCA9IDA7DQorICAgICAgZm9yIChfRGlzdGFuY2UgX19jaGlsZCA9IDE7IF9fY2hp
bGQgPCBfX247ICsrX19jaGlsZCkNCisJew0KKwkgIGlmIChfX2NvbXAoX19maXJzdFtfX3BhcmVu
dF0sIF9fZmlyc3RbX19jaGlsZF0pKQ0KKwkgICAgcmV0dXJuIGZhbHNlOw0KKwkgIGlmICgoX19j
aGlsZCAmIDEpID09IDApDQorCSAgICArK19fcGFyZW50Ow0KKwl9DQorICAgICAgcmV0dXJuIHRy
dWU7DQorICAgIH0NCisNCisgIC8qdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yPg0KKyAgICBib29sDQorICAgIF9faXNfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19m
aXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkNCisgICAgeyByZXR1cm4gc3RkOjpf
X2lzX2hlYXAoX19maXJzdCwgc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpKTsgfQ0KKw0K
KyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfU3Ry
aWN0V2Vha09yZGVyaW5nPg0KKyAgICBib29sDQorICAgIF9faXNfaGVhcChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgIF9T
dHJpY3RXZWFrT3JkZXJpbmcgX19jb21wKQ0KKyAgICB7IHJldHVybiBzdGQ6Ol9faXNfaGVhcChf
X2ZpcnN0LCBfX2NvbXAsIHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0KSk7IH0qLw0KKw0K
KyAgLy8gSGVhcC1tYW5pcHVsYXRpb24gZnVuY3Rpb25zOiBwdXNoX2hlYXAsIHBvcF9oZWFwLCBt
YWtlX2hlYXAsIHNvcnRfaGVhcC4NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfVHA+DQorICAgIHZvaWQN
CisgICAgX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsDQorCQlfRGlz
dGFuY2UgX19ob2xlSW5kZXgsIF9EaXN0YW5jZSBfX3RvcEluZGV4LCBfVHAgX192YWx1ZSkNCisg
ICAgew0KKyAgICAgIF9EaXN0YW5jZSBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsN
CisgICAgICB3aGlsZSAoX19ob2xlSW5kZXggPiBfX3RvcEluZGV4ICYmICooX19maXJzdCArIF9f
cGFyZW50KSA8IF9fdmFsdWUpDQorCXsNCisJICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAq
KF9fZmlyc3QgKyBfX3BhcmVudCk7DQorCSAgX19ob2xlSW5kZXggPSBfX3BhcmVudDsNCisJICBf
X3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsNCisJfQ0KKyAgICAgICooX19maXJzdCAr
IF9faG9sZUluZGV4KSA9IF9fdmFsdWU7DQorICAgIH0NCisNCisgIC8qKg0KKyAgICogIEBicmll
ZiAgUHVzaCBhbiBlbGVtZW50IG9udG8gYSBoZWFwLg0KKyAgICogIEBwYXJhbSAgZmlyc3QgIFN0
YXJ0IG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBsYXN0ICAgRW5kIG9mIGhlYXAgKyBlbGVtZW50
Lg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhpcyBvcGVyYXRpb24gcHVz
aGVzIHRoZSBlbGVtZW50IGF0IGxhc3QtMSBvbnRvIHRoZSB2YWxpZCBoZWFwIG92ZXIgdGhlDQor
ICAgKiAgcmFuZ2UgW2ZpcnN0LGxhc3QtMSkuICBBZnRlciBjb21wbGV0aW9uLCBbZmlyc3QsbGFz
dCkgaXMgYSB2YWxpZCBoZWFwLg0KKyAgKi8NCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcj4NCisgICAgaW5saW5lIHZvaWQNCisgICAgcHVzaF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAg
ICB7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlDQorCSAgX0Rpc3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVt
ZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21B
Y2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAg
ICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2Vw
dDxfVmFsdWVUeXBlPikNCisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19m
aXJzdCwgX19sYXN0KTsNCisgICAgICAvLyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwKF9f
Zmlyc3QsIF9fbGFzdCAtIDEpOw0KKw0KKyAgICAgIHN0ZDo6X19wdXNoX2hlYXAoX19maXJzdCwg
X0Rpc3RhbmNlVHlwZSgoX19sYXN0IC0gX19maXJzdCkgLSAxKSwNCisJCSAgICAgICBfRGlzdGFu
Y2VUeXBlKDApLCBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpKTsNCisgICAgfQ0KKw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2Us
IHR5cGVuYW1lIF9UcCwNCisJICAgIHR5cGVuYW1lIF9Db21wYXJlPg0KKyAgICB2b2lkDQorICAg
IF9fcHVzaF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19o
b2xlSW5kZXgsDQorCQlfRGlzdGFuY2UgX190b3BJbmRleCwgX1RwIF9fdmFsdWUsIF9Db21wYXJl
IF9fY29tcCkNCisgICAgew0KKyAgICAgIF9EaXN0YW5jZSBfX3BhcmVudCA9IChfX2hvbGVJbmRl
eCAtIDEpIC8gMjsNCisgICAgICB3aGlsZSAoX19ob2xlSW5kZXggPiBfX3RvcEluZGV4DQorCSAg
ICAgJiYgX19jb21wKCooX19maXJzdCArIF9fcGFyZW50KSwgX192YWx1ZSkpDQorCXsNCisJICAq
KF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3BhcmVudCk7DQorCSAgX19o
b2xlSW5kZXggPSBfX3BhcmVudDsNCisJICBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8g
MjsNCisJfQ0KKyAgICAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9IF9fdmFsdWU7DQorICAg
IH0NCisNCisgIC8qKg0KKyAgICogIEBicmllZiAgUHVzaCBhbiBlbGVtZW50IG9udG8gYSBoZWFw
IHVzaW5nIGNvbXBhcmlzb24gZnVuY3Rvci4NCisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFydCBv
ZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFzdCAgIEVuZCBvZiBoZWFwICsgZWxlbWVudC4NCisg
ICAqICBAcGFyYW0gIGNvbXAgICBDb21wYXJpc29uIGZ1bmN0b3IuDQorICAgKiAgQGluZ3JvdXAg
aGVhcA0KKyAgICoNCisgICAqICBUaGlzIG9wZXJhdGlvbiBwdXNoZXMgdGhlIGVsZW1lbnQgYXQg
bGFzdC0xIG9udG8gdGhlIHZhbGlkIGhlYXAgb3ZlciB0aGUNCisgICAqICByYW5nZSBbZmlyc3Qs
bGFzdC0xKS4gIEFmdGVyIGNvbXBsZXRpb24sIFtmaXJzdCxsYXN0KSBpcyBhIHZhbGlkIGhlYXAu
DQorICAgKiAgQ29tcGFyZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgdXNpbmcgY29tcC4NCisg
ICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1l
IF9Db21wYXJlPg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBwdXNoX2hlYXAoX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsDQorCSAgICAg
IF9Db21wYXJlIF9fY29tcCkNCisgICAgew0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUNCisJICBfVmFsdWVU
eXBlOw0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQ0KKwkgIF9EaXN0YW5jZVR5cGU7DQorDQorICAg
ICAgLy8gY29uY2VwdCByZXF1aXJlbWVudHMNCisgICAgICBfX2dsaWJjeHhfZnVuY3Rpb25fcmVx
dWlyZXMoX011dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0PA0KKwkgICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yPikNCisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2Uo
X19maXJzdCwgX19sYXN0KTsNCisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfaGVhcF9wcmVkKF9f
Zmlyc3QsIF9fbGFzdCAtIDEsIF9fY29tcCk7DQorDQorICAgICAgc3RkOjpfX3B1c2hfaGVhcChf
X2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0KSAtIDEpLA0KKwkJICAgICAg
IF9EaXN0YW5jZVR5cGUoMCksIF9WYWx1ZVR5cGUoKihfX2xhc3QgLSAxKSksIF9fY29tcCk7DQor
ICAgIH0NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlw
ZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfVHA+DQorICAgIHZvaWQNCisgICAgX19hZGp1c3Rf
aGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4
LA0KKwkJICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgY29u
c3QgX0Rpc3RhbmNlIF9fdG9wSW5kZXggPSBfX2hvbGVJbmRleDsNCisgICAgICBfRGlzdGFuY2Ug
X19zZWNvbmRDaGlsZCA9IDIgKiBfX2hvbGVJbmRleCArIDI7DQorICAgICAgd2hpbGUgKF9fc2Vj
b25kQ2hpbGQgPCBfX2xlbikNCisJew0KKwkgIGlmICgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxk
KSA8ICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpKQ0KKwkgICAgX19zZWNvbmRDaGls
ZC0tOw0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIF9fc2Vjb25k
Q2hpbGQpOw0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsNCisJICBfX3NlY29uZENo
aWxkID0gMiAqIChfX3NlY29uZENoaWxkICsgMSk7DQorCX0NCisgICAgICBpZiAoX19zZWNvbmRD
aGlsZCA9PSBfX2xlbikNCisJew0KKwkgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19m
aXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpOw0KKwkgIF9faG9sZUluZGV4ID0gX19zZWNvbmRD
aGlsZCAtIDE7DQorCX0NCisgICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUlu
ZGV4LCBfX3RvcEluZGV4LCBfX3ZhbHVlKTsNCisgICAgfQ0KKw0KKyAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+DQorICAgIGlubGluZSB2b2lk
DQorICAgIF9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QsDQorCSAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19y
ZXN1bHQsIF9UcCBfX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQorCV9E
aXN0YW5jZTsNCisgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAgICBzdGQ6Ol9fYWRq
dXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlzdGFuY2UoX19sYXN0IC0gX19maXJz
dCksDQorCQkJIF9fdmFsdWUpOw0KKyAgICB9DQorDQorICAvKioNCisgICAqICBAYnJpZWYgIFBv
cCBhbiBlbGVtZW50IG9mZiBhIGhlYXAuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2Yg
aGVhcC4NCisgICAqICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAaW5ncm91
cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3BlcmF0aW9uIHBvcHMgdGhlIHRvcCBvZiB0aGUg
aGVhcC4gIFRoZSBlbGVtZW50cyBmaXJzdCBhbmQgbGFzdC0xDQorICAgKiAgYXJlIHN3YXBwZWQg
YW5kIFtmaXJzdCxsYXN0LTEpIGlzIG1hZGUgaW50byBhIGhlYXAuDQorICAqLw0KKyAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPg0KKyAgICBpbmxpbmUgdm9pZA0KKyAg
ICBwb3BfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yIF9fbGFzdCkNCisgICAgew0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUNCisJX1ZhbHVlVHlwZTsN
CisNCisgICAgICAvLyBjb25jZXB0IHJlcXVpcmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5j
dGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAg
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1
aXJlcyhfTGVzc1RoYW5Db21wYXJhYmxlQ29uY2VwdDxfVmFsdWVUeXBlPikNCisgICAgICBfX2ds
aWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsNCisgICAgICBfX2ds
aWJjeHhfcmVxdWlyZXNfaGVhcChfX2ZpcnN0LCBfX2xhc3QpOw0KKw0KKyAgICAgIHN0ZDo6X19w
b3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBfX2xhc3QgLSAxLA0KKwkJICAgICAgX1ZhbHVl
VHlwZSgqKF9fbGFzdCAtIDEpKSk7DQorICAgIH0NCisNCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLA0KKwkgICB0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9Db21wYXJlPg0KKyAgICB2b2lkDQorICAgIF9fYWRqdXN0X2hlYXAoX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwNCisJCSAg
X0Rpc3RhbmNlIF9fbGVuLCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQor
ICAgICAgY29uc3QgX0Rpc3RhbmNlIF9fdG9wSW5kZXggPSBfX2hvbGVJbmRleDsNCisgICAgICBf
RGlzdGFuY2UgX19zZWNvbmRDaGlsZCA9IDIgKiBfX2hvbGVJbmRleCArIDI7DQorICAgICAgd2hp
bGUgKF9fc2Vjb25kQ2hpbGQgPCBfX2xlbikNCisJew0KKwkgIGlmIChfX2NvbXAoKihfX2ZpcnN0
ICsgX19zZWNvbmRDaGlsZCksDQorCQkgICAgICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0g
MSkpKSkNCisJICAgIF9fc2Vjb25kQ2hpbGQtLTsNCisJICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRl
eCkgPSAqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKTsNCisJICBfX2hvbGVJbmRleCA9IF9fc2Vj
b25kQ2hpbGQ7DQorCSAgX19zZWNvbmRDaGlsZCA9IDIgKiAoX19zZWNvbmRDaGlsZCArIDEpOw0K
Kwl9DQorICAgICAgaWYgKF9fc2Vjb25kQ2hpbGQgPT0gX19sZW4pDQorCXsNCisJICAqKF9fZmly
c3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyAoX19zZWNvbmRDaGlsZCAtIDEpKTsNCisJ
ICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hpbGQgLSAxOw0KKwl9DQorICAgICAgc3RkOjpfX3B1
c2hfaGVhcChfX2ZpcnN0LCBfX2hvbGVJbmRleCwgX190b3BJbmRleCwgX192YWx1ZSwgX19jb21w
KTsNCisgICAgfQ0KKw0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPg0KKyAgICBpbmxpbmUgdm9pZA0KKyAg
ICBfX3BvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0LA0KKwkgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0
LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlDQorCV9EaXN0YW5jZTsNCisgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCisgICAg
ICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlzdGFuY2UoX19s
YXN0IC0gX19maXJzdCksDQorCQkJIF9fdmFsdWUsIF9fY29tcCk7DQorICAgIH0NCisNCisgIC8q
Kg0KKyAgICogIEBicmllZiAgUG9wIGFuIGVsZW1lbnQgb2ZmIGEgaGVhcCB1c2luZyBjb21wYXJp
c29uIGZ1bmN0b3IuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAq
ICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGNvbXAgICBDb21w
YXJpc29uIGZ1bmN0b3IgdG8gdXNlLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAg
KiAgVGhpcyBvcGVyYXRpb24gcG9wcyB0aGUgdG9wIG9mIHRoZSBoZWFwLiAgVGhlIGVsZW1lbnRz
IGZpcnN0IGFuZCBsYXN0LTENCisgICAqICBhcmUgc3dhcHBlZCBhbmQgW2ZpcnN0LGxhc3QtMSkg
aXMgbWFkZSBpbnRvIGEgaGVhcC4gIENvbXBhcmlzb25zIGFyZQ0KKyAgICogIG1hZGUgdXNpbmcg
Y29tcC4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9Db21wYXJlPg0KKyAgICBpbmxpbmUgdm9pZA0KKyAgICBwb3BfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwNCisJICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19sYXN0LCBfQ29tcGFyZSBfX2NvbXApDQorICAgIHsNCisgICAgICAvLyBjb25jZXB0IHJlcXVp
cmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJsZV9SYW5k
b21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+KQ0K
KyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QpOw0K
KyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwX3ByZWQoX19maXJzdCwgX19sYXN0LCBfX2Nv
bXApOw0KKw0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUNCisJX1ZhbHVlVHlwZTsNCisgICAgICBzdGQ6Ol9f
cG9wX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSwgX19sYXN0IC0gMSwNCisJCSAgICAgIF9WYWx1
ZVR5cGUoKihfX2xhc3QgLSAxKSksIF9fY29tcCk7DQorICAgIH0NCisNCisgIC8qKg0KKyAgICog
IEBicmllZiAgQ29uc3RydWN0IGEgaGVhcCBvdmVyIGEgcmFuZ2UuDQorICAgKiAgQHBhcmFtICBm
aXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGxhc3QgICBFbmQgb2YgaGVhcC4N
CisgICAqICBAaW5ncm91cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3BlcmF0aW9uIG1ha2Vz
IHRoZSBlbGVtZW50cyBpbiBbZmlyc3QsbGFzdCkgaW50byBhIGhlYXAuDQorICAqLw0KKyAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPg0KKyAgICB2b2lkDQorICAgIG1h
a2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCkNCisgICAgew0KKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUNCisJICBfVmFsdWVUeXBlOw0K
KyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVy
YXRvcj46OmRpZmZlcmVuY2VfdHlwZQ0KKwkgIF9EaXN0YW5jZVR5cGU7DQorDQorICAgICAgLy8g
Y29uY2VwdCByZXF1aXJlbWVudHMNCisgICAgICBfX2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMo
X011dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0PA0KKwkgICAgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPikNCisgICAgICBfX2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoX0xlc3NUaGFu
Q29tcGFyYWJsZUNvbmNlcHQ8X1ZhbHVlVHlwZT4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVz
X3ZhbGlkX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorDQorICAgICAgaWYgKF9fbGFzdCAtIF9f
Zmlyc3QgPCAyKQ0KKwlyZXR1cm47DQorDQorICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xl
biA9IF9fbGFzdCAtIF9fZmlyc3Q7DQorICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChf
X2xlbiAtIDIpIC8gMjsNCisgICAgICB3aGlsZSAodHJ1ZSkNCisJew0KKwkgIHN0ZDo6X19hZGp1
c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sDQorCQkJICAgICBfVmFsdWVUeXBlKCoo
X19maXJzdCArIF9fcGFyZW50KSkpOw0KKwkgIGlmIChfX3BhcmVudCA9PSAwKQ0KKwkgICAgcmV0
dXJuOw0KKwkgIF9fcGFyZW50LS07DQorCX0NCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJy
aWVmICBDb25zdHJ1Y3QgYSBoZWFwIG92ZXIgYSByYW5nZSB1c2luZyBjb21wYXJpc29uIGZ1bmN0
b3IuDQorICAgKiAgQHBhcmFtICBmaXJzdCAgU3RhcnQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0g
IGxhc3QgICBFbmQgb2YgaGVhcC4NCisgICAqICBAcGFyYW0gIGNvbXAgICBDb21wYXJpc29uIGZ1
bmN0b3IgdG8gdXNlLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhpcyBv
cGVyYXRpb24gbWFrZXMgdGhlIGVsZW1lbnRzIGluIFtmaXJzdCxsYXN0KSBpbnRvIGEgaGVhcC4N
CisgICAqICBDb21wYXJpc29ucyBhcmUgbWFkZSB1c2luZyBjb21wLg0KKyAgKi8NCisgIHRlbXBs
YXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQor
ICAgIGlubGluZSB2b2lkDQorICAgIG1ha2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19m
aXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAgX0NvbXBhcmUgX19j
b21wKQ0KKyAgICB7DQorICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQ0KKwkgIF9WYWx1ZVR5cGU7DQorICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
ZGlmZmVyZW5jZV90eXBlDQorCSAgX0Rpc3RhbmNlVHlwZTsNCisNCisgICAgICAvLyBjb25jZXB0
IHJlcXVpcmVtZW50cw0KKyAgICAgIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyhfTXV0YWJs
ZV9SYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8DQorCSAgICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+KQ0KKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc192YWxpZF9yYW5nZShfX2ZpcnN0LCBfX2xh
c3QpOw0KKw0KKyAgICAgIGlmIChfX2xhc3QgLSBfX2ZpcnN0IDwgMikNCisJcmV0dXJuOw0KKw0K
KyAgICAgIGNvbnN0IF9EaXN0YW5jZVR5cGUgX19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0Ow0KKyAg
ICAgIF9EaXN0YW5jZVR5cGUgX19wYXJlbnQgPSAoX19sZW4gLSAyKSAvIDI7DQorICAgICAgd2hp
bGUgKHRydWUpDQorCXsNCisJICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19maXJzdCwgX19wYXJlbnQs
IF9fbGVuLA0KKwkJCSAgICAgX1ZhbHVlVHlwZSgqKF9fZmlyc3QgKyBfX3BhcmVudCkpLCBfX2Nv
bXApOw0KKwkgIGlmIChfX3BhcmVudCA9PSAwKQ0KKwkgICAgcmV0dXJuOw0KKwkgIF9fcGFyZW50
LS07DQorCX0NCisgICAgfQ0KKw0KKyAgLyoqDQorICAgKiAgQGJyaWVmICBTb3J0IGEgaGVhcC4N
CisgICAqICBAcGFyYW0gIGZpcnN0ICBTdGFydCBvZiBoZWFwLg0KKyAgICogIEBwYXJhbSAgbGFz
dCAgIEVuZCBvZiBoZWFwLg0KKyAgICogIEBpbmdyb3VwIGhlYXANCisgICAqDQorICAgKiAgVGhp
cyBvcGVyYXRpb24gc29ydHMgdGhlIHZhbGlkIGhlYXAgaW4gdGhlIHJhbmdlIFtmaXJzdCxsYXN0
KS4NCisgICovDQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQor
ICAgIHZvaWQNCisgICAgc29ydF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KKyAgICB7DQorICAgICAgLy8gY29uY2VwdCBy
ZXF1aXJlbWVudHMNCisgICAgICBfX2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoX011dGFibGVf
UmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0PA0KKwkgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
PikNCisgICAgICBfX2dsaWJjeHhfZnVuY3Rpb25fcmVxdWlyZXMoX0xlc3NUaGFuQ29tcGFyYWJs
ZUNvbmNlcHQ8DQorCSAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yPjo6dmFsdWVfdHlwZT4pDQorICAgICAgX19nbGliY3h4X3JlcXVpcmVzX3ZhbGlkX3Jh
bmdlKF9fZmlyc3QsIF9fbGFzdCk7DQorICAgICAgLy8gICAgICBfX2dsaWJjeHhfcmVxdWlyZXNf
aGVhcChfX2ZpcnN0LCBfX2xhc3QpOw0KKw0KKyAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0
ID4gMSkNCisJc3RkOjpwb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QtLSk7DQorICAgIH0NCisNCisg
IC8qKg0KKyAgICogIEBicmllZiAgU29ydCBhIGhlYXAgdXNpbmcgY29tcGFyaXNvbiBmdW5jdG9y
Lg0KKyAgICogIEBwYXJhbSAgZmlyc3QgIFN0YXJ0IG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBs
YXN0ICAgRW5kIG9mIGhlYXAuDQorICAgKiAgQHBhcmFtICBjb21wICAgQ29tcGFyaXNvbiBmdW5j
dG9yIHRvIHVzZS4NCisgICAqICBAaW5ncm91cCBoZWFwDQorICAgKg0KKyAgICogIFRoaXMgb3Bl
cmF0aW9uIHNvcnRzIHRoZSB2YWxpZCBoZWFwIGluIHRoZSByYW5nZSBbZmlyc3QsbGFzdCkuDQor
ICAgKiAgQ29tcGFyaXNvbnMgYXJlIG1hZGUgdXNpbmcgY29tcC4NCisgICovDQorICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPg0KKyAg
ICB2b2lkDQorICAgIHNvcnRfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCisJICAgICAgX0NvbXBhcmUgX19jb21wKQ0KKyAg
ICB7DQorICAgICAgLy8gY29uY2VwdCByZXF1aXJlbWVudHMNCisgICAgICBfX2dsaWJjeHhfZnVu
Y3Rpb25fcmVxdWlyZXMoX011dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0PA0KKwkg
ICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPikNCisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfdmFs
aWRfcmFuZ2UoX19maXJzdCwgX19sYXN0KTsNCisgICAgICBfX2dsaWJjeHhfcmVxdWlyZXNfaGVh
cF9wcmVkKF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsNCisNCisgICAgICB3aGlsZSAoX19sYXN0
IC0gX19maXJzdCA+IDEpDQorCXN0ZDo6cG9wX2hlYXAoX19maXJzdCwgX19sYXN0LS0sIF9fY29t
cCk7DQorICAgIH0NCisNCit9IC8vIG5hbWVzcGFjZSBzdGQNCisNCisNCisNCisjZW5kaWYgDQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI5MikNCisrKyBKYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsMTA5IEBADQorMjAwNi0xMC0yNSAgeWFk
YXZhbGwgIDxzcmlyYW0ueWFkYXZhbGxpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBaYWxhbiBCdWp0YXMgKHpidWp0YXNAZ21haWwuY29tKS4KKyAgICAgICAgREVTQzogU2NyaXB0
YWJsZSBwbHVnaW4gJiB3aWRnZXQgb2JqZWN0IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDA3CisKKyAgICAgICAgKiBiaW5k
aW5ncy9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChsaXN0RnJvbVZhcmlhbnRBcmdzKToKKyAg
ICAgICAgKF9pc1NhZmVTY3JpcHQpOgorICAgICAgICAoX05QTl9DcmVhdGVTY3JpcHRPYmplY3Qp
OgorICAgICAgICAoTlBOX0ludm9rZURlZmF1bHQpOgorICAgICAgICAoTlBOX0ludm9rZSk6Cisg
ICAgICAgIChOUE5fRXZhbHVhdGUpOgorICAgICAgICAoTlBOX0dldFByb3BlcnR5KToKKyAgICAg
ICAgKE5QTl9TZXRQcm9wZXJ0eSk6CisgICAgICAgIChOUE5fUmVtb3ZlUHJvcGVydHkpOgorICAg
ICAgICAoTlBOX0hhc1Byb3BlcnR5KToKKyAgICAgICAgKE5QTl9IYXNNZXRob2QpOgorICAgICAg
ICAoTlBOX1NldEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvTlBfanNvYmplY3QuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoS0pTOjpCaW5kaW5n
czo6Q0NsYXNzOjpDQ2xhc3MpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjp+Q0Ns
YXNzKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFzczo6Y2xhc3NGb3JJc0EpOgorICAg
ICAgICAoS0pTOjpCaW5kaW5nczo6Q0NsYXNzOjpuYW1lKToKKyAgICAgICAgKEtKUzo6QmluZGlu
Z3M6OkNDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OkNDbGFz
czo6ZmllbGROYW1lZCk6CisgICAgICAgICogYmluZGluZ3MvYy9jX2NsYXNzLmg6CisgICAgICAg
IChLSlM6OkJpbmRpbmdzOjpDQ2xhc3M6OmNvbnN0cnVjdG9yQXQpOgorICAgICAgICAoS0pTOjpC
aW5kaW5nczo6Q0NsYXNzOjpudW1Db25zdHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2Mv
Y19pbnN0YW5jZS5jcHA6CisgICAgICAgIChDSW5zdGFuY2U6OkNJbnN0YW5jZSk6CisgICAgICAg
IChDSW5zdGFuY2U6On5DSW5zdGFuY2UpOgorICAgICAgICAoQ0luc3RhbmNlOjpvcGVyYXRvcj0p
OgorICAgICAgICAoQ0luc3RhbmNlOjpnZXRDbGFzcyk6CisgICAgICAgIChDSW5zdGFuY2U6Omlu
dm9rZU1ldGhvZCk6CisgICAgICAgIChDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QpOgor
ICAgICAgICAoQ0luc3RhbmNlOjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoQ0luc3RhbmNlOjpz
dHJpbmdWYWx1ZSk6CisgICAgICAgIChDSW5zdGFuY2U6OnZhbHVlT2YpOgorICAgICAgICAqIGJp
bmRpbmdzL2MvY19ydW50aW1lLmg6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDRmllbGQ6Om5h
bWUpOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Q01ldGhvZDo6bmFtZSk6CisgICAgICAgICog
YmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoY29udmVydFVURjhUb1VURjE2KToK
KyAgICAgICAgKGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToKKyAgICAgICAgKGNvbnZlcnROUFZh
cmlhbnRUb1ZhbHVlKToKKyAgICAgICAgKGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9jL2NfdXRpbGl0eS5oOgorICAgICAgICAqIGJpbmRpbmdzL25wYXBp
Lmg6CisgICAgICAgIChfTlBQcmludDo6KToKKyAgICAgICAgKiBiaW5kaW5ncy9ucHJ1bnRpbWUu
Y3BwOgorICAgICAgICAoZ2V0U3RyaW5nSWRlbnRpZmllck1hcCk6CisgICAgICAgIChnZXRJbnRJ
ZGVudGlmaWVyTWFwKToKKyAgICAgICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKToKKyAgICAg
ICAgKE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyk6CisgICAgICAgIChOUE5fR2V0SW50SWRlbnRp
Zmllcik6CisgICAgICAgIChOUE5fSWRlbnRpZmllcklzU3RyaW5nKToKKyAgICAgICAgKE5QTl9V
VEY4RnJvbUlkZW50aWZpZXIpOgorICAgICAgICAoTlBOX0ludEZyb21JZGVudGlmaWVyKToKKyAg
ICAgICAgKE5QTl9WYXJpYW50VG9Cb29sKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9TdHJpbmcp
OgorICAgICAgICAoTlBOX1ZhcmlhbnRUb0ludDMyKToKKyAgICAgICAgKE5QTl9WYXJpYW50VG9E
b3VibGUpOgorICAgICAgICAoTlBOX1ZhcmlhbnRUb09iamVjdCk6CisgICAgICAgIChOUE5fSW5p
dGlhbGl6ZVZhcmlhbnRXaXRoT2JqZWN0KToKKyAgICAgICAgKE5QTl9SZWxlYXNlVmFyaWFudFZh
bHVlKToKKyAgICAgICAgKE5QTl9DcmVhdGVPYmplY3QpOgorICAgICAgICAoTlBOX1JldGFpbk9i
amVjdCk6CisgICAgICAgIChOUE5fUmVsZWFzZU9iamVjdCk6CisgICAgICAgIChOUE5fU2V0RXhj
ZXB0aW9uV2l0aFVURjgpOgorICAgICAgICAqIGJpbmRpbmdzL25wcnVudGltZS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3J1bnRpbWUuY3BwOgorICAgICAgICAoSW5zdGFuY2U6OmNyZWF0ZUJpbmRp
bmdGb3JMYW5ndWFnZUluc3RhbmNlKToKKyAgICAgICAgKEluc3RhbmNlOjpjcmVhdGVMYW5ndWFn
ZUluc3RhbmNlRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChSdW50aW1lT2JqZWN0
SW1wOjpSdW50aW1lT2JqZWN0SW1wKToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OmdldCk6
CisgICAgICAgIChSdW50aW1lT2JqZWN0SW1wOjpwdXQpOgorICAgICAgICAoUnVudGltZU9iamVj
dEltcDo6Y2FuUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgIChSb290T2JqZWN0Ojpy
ZW1vdmVBbGxOYXRpdmVSZWZlcmVuY2VzKToKKyAgICAgICAgKGdldFJlZmVyZW5jZXNCeVJvb3RN
YXApOgorICAgICAgICAoZ2V0UmVmZXJlbmNlc1NldCk6CisgICAgICAgIChLSlM6OkJpbmRpbmdz
OjpmaW5kUmVmZXJlbmNlU2V0KToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6OnJvb3RGb3JJbXAp
OgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6cm9vdEZvckludGVycHJldGVyKToKKyAgICAgICAg
KEtKUzo6QmluZGluZ3M6OmFkZE5hdGl2ZVJlZmVyZW5jZSk6CisgICAgICAgIChLSlM6OkJpbmRp
bmdzOjpyZW1vdmVOYXRpdmVSZWZlcmVuY2UpOgorICAgICAgICAoUm9vdE9iamVjdDo6c2V0SW50
ZXJwcmV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfcm9vdC5oOgorICAgICAgICAq
IGdyb3VwL0J3aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRjoKKyAgICAgICAgKiBncm91cC9FQUJJ
L0phdmFzY3JpcHRDb3JlVS5kZWY6CisgICAgICAgICogZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1w
OgorICAgICAgICAqIGdyb3VwL2JsZC5pbmY6CisgICAgICAgICoga2pzL2ludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKEludGVycHJldGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChJbnRlcnByZXRl
cjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToKKyAgICAgICAgKFNhdmVkQnVpbHRp
bnM6OlNhdmVkQnVpbHRpbnMpOgorICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5oOgorICAgICAg
ICAqIGtqcy9zdGRpbnQuaDoKKyAgICAgICAgKiBranMvdXN0cmluZy5oOgorICAgICAgICAoS0pT
OjpVU3RyaW5nOjphcmVwKToKKwogMjAwNi0xMC0wNCAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ncm91cC9ibGQuaW5mDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUv
Z3JvdXAvYmxkLmluZgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUvZ3JvdXAv
YmxkLmluZgkod29ya2luZyBjb3B5KQ0KQEAgLTIxLDYgKzIxLDIxIEBADQogUFJKX1BMQVRGT1JN
Uw0KIERFRkFVTFQNCiANCitQUkpfRVhQT1JUUw0KKy4uXGtqc1xpbnRlcm5hbC5oICAgICAgICAg
XGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxpbnRlcm5hbC5oDQorLi5ca2pzXGlu
dGVycHJldGVyLmggICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXGludGVy
cHJldGVyLmgNCisuLlxranNcb2JqZWN0LmggICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1c
amF2YXNjcmlwdGNvcmVcb2JqZWN0LmgNCisuLlxranNccHJvdGVjdC5oICAgICAgICAgIFxlcG9j
MzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVccHJvdGVjdC5oDQorLi5ca2pzXHN0ZGludC5o
ICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHN0ZGludC5oDQor
DQorLi5cYmluZGluZ3NcbnBydW50aW1lLmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2Vt
XGphdmFzY3JpcHRjb3JlXG5wcnVudGltZS5oDQorLi5cYmluZGluZ3NcbnBydW50aW1lX2ltcGwu
aCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNjcmlwdGNvcmVcbnBydW50aW1l
X2ltcGwuaA0KKy4uXGJpbmRpbmdzXG5wcnVudGltZV9wcml2LmggICAgICAgICAgICBcZXBvYzMy
XGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXG5wcnVudGltZV9wcml2LmgNCisuLlxiaW5kaW5n
c1xydW50aW1lLmggICAgICAgICAgICBcZXBvYzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3Jl
XHJ1bnRpbWUuaA0KKy4uXGJpbmRpbmdzXHJ1bnRpbWVfb2JqZWN0LmggICAgICAgICAgICBcZXBv
YzMyXGluY2x1ZGVcb2VtXGphdmFzY3JpcHRjb3JlXHJ1bnRpbWVfb2JqZWN0LmgNCisuLlxiaW5k
aW5nc1xydW50aW1lX3Jvb3QuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1camF2YXNj
cmlwdGNvcmVccnVudGltZV9yb290LmgNCisuLlxiaW5kaW5nc1xOUF9qc29iamVjdC5oICAgICAg
ICAgICAgXGVwb2MzMlxpbmNsdWRlXG9lbVxqYXZhc2NyaXB0Y29yZVxOUF9qc29iamVjdC5oDQor
Li5cYmluZGluZ3NcY1xjX3V0aWxpdHkuaCAgICAgICAgICAgIFxlcG9jMzJcaW5jbHVkZVxvZW1c
amF2YXNjcmlwdGNvcmVcY191dGlsaXR5LmgNCiBQUkpfTU1QRklMRVMNCiBwY3JlLm1tcA0KIEph
dmFTY3JpcHRDb3JlLm1tcA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3aW5zY3cvSkFW
QVNDUklQVENPUkVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2dyb3VwL0J3
aW5zY3cvSkFWQVNDUklQVENPUkVVLkRFRgkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlw
dENvcmUvZ3JvdXAvQndpbnNjdy9KQVZBU0NSSVBUQ09SRVUuREVGCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwxMzkgKzEsMTY4IEBADQogRVhQT1JUUw0KLQk/PzBCb29sZWFuQEtKU0BAUUFFQF9OQFog
QCAxIE5PTkFNRSA7IEtKUzo6Qm9vbGVhbjo6Qm9vbGVhbihib29sKQ0KLQk/PzBJbnRlcnByZXRl
ckBLSlNAQFFBRUBBQlZPYmplY3RAMUBAWiBAIDIgTk9OQU1FIDsgS0pTOjpJbnRlcnByZXRlcjo6
SW50ZXJwcmV0ZXIoY2xhc3MgS0pTOjpPYmplY3QgY29uc3QgJikNCi0JPz8wTGlzdEBLSlNAQFFB
RUBYWiBAIDMgTk9OQU1FIDsgS0pTOjpMaXN0OjpMaXN0KHZvaWQpDQotCT8/ME51bGxAS0pTQEBR
QUVAWFogQCA0IE5PTkFNRSA7IEtKUzo6TnVsbDo6TnVsbCh2b2lkKQ0KLQk/PzBOdW1iZXJAS0pT
QEBRQUVASEBaIEAgNSBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGludCkNCi0JPz8wTnVt
YmVyQEtKU0BAUUFFQElAWiBAIDYgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJlcih1bnNpZ25l
ZCBpbnQpDQotCT8/ME51bWJlckBLSlNAQFFBRUBKQFogQCA3IE5PTkFNRSA7IEtKUzo6TnVtYmVy
OjpOdW1iZXIobG9uZykNCi0JPz8wTnVtYmVyQEtKU0BAUUFFQEtAWiBAIDggTk9OQU1FIDsgS0pT
OjpOdW1iZXI6Ok51bWJlcih1bnNpZ25lZCBsb25nKQ0KLQk/PzBOdW1iZXJAS0pTQEBRQUVATkBa
IEAgOSBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGRvdWJsZSkNCi0JPz8wT2JqZWN0SW1w
QEtKU0BAUUFFQEFCVk9iamVjdEAxQEBaIEAgMTAgTk9OQU1FIDsgS0pTOjpPYmplY3RJbXA6Ok9i
amVjdEltcChjbGFzcyBLSlM6Ok9iamVjdCBjb25zdCAmKQ0KLQk/PzBPYmplY3RJbXBAS0pTQEBR
QUVAWFogQCAxMSBOT05BTUUgOyBLSlM6Ok9iamVjdEltcDo6T2JqZWN0SW1wKHZvaWQpDQotCT8/
MFN0cmluZ0BLSlNAQFFBRUBBQlZVU3RyaW5nQDFAQFogQCAxMiBOT05BTUUgOyBLSlM6OlN0cmlu
Zzo6U3RyaW5nKGNsYXNzIEtKUzo6VVN0cmluZyBjb25zdCAmKQ0KLQk/PzBVU3RyaW5nQEtKU0BA
UUFFQEFCVjAxQDBAWiBAIDEzIE5PTkFNRSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjbGFzcyBL
SlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQotCT8/MFVT
dHJpbmdAS0pTQEBRQUVAREBaIEAgMTQgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNo
YXIpDQotCT8/MFVTdHJpbmdAS0pTQEBRQUVAUEFVVUNoYXJAMUBIX05AWiBAIDE1IE5PTkFNRSA7
IEtKUzo6VVN0cmluZzo6VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQsIGJvb2wpDQot
CT8/MFVTdHJpbmdAS0pTQEBRQUVAUEJEQFogQCAxNiBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVT
dHJpbmcoY2hhciBjb25zdCAqKQ0KLQk/PzBVU3RyaW5nQEtKU0BAUUFFQFBCVVVDaGFyQDFASEBa
IEAgMTcgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKHN0cnVjdCBLSlM6OlVDaGFyIGNv
bnN0ICosIGludCkNCi0JPz8wVVN0cmluZ0BLSlNAQFFBRUBYWiBAIDE4IE5PTkFNRSA7IEtKUzo6
VVN0cmluZzo6VVN0cmluZyh2b2lkKQ0KLQk/PzBVbmRlZmluZWRAS0pTQEBRQUVAWFogQCAxOSBO
T05BTUUgOyBLSlM6OlVuZGVmaW5lZDo6VW5kZWZpbmVkKHZvaWQpDQotCT8/MFZhbHVlQEtKU0BA
UUFFQEFCVjAxQEBaIEAgMjAgTk9OQU1FIDsgS0pTOjpWYWx1ZTo6VmFsdWUoY2xhc3MgS0pTOjpW
YWx1ZSBjb25zdCAmKQ0KLQk/PzBWYWx1ZUBLSlNAQFFBRUBQQVZWYWx1ZUltcEAxQEBaIEAgMjEg
Tk9OQU1FIDsgS0pTOjpWYWx1ZTo6VmFsdWUoY2xhc3MgS0pTOjpWYWx1ZUltcCAqKQ0KLQk/PzFJ
bnRlcnByZXRlckBLSlNAQFVBRUBYWiBAIDIyIE5PTkFNRSA7IEtKUzo6SW50ZXJwcmV0ZXI6On5J
bnRlcnByZXRlcih2b2lkKQ0KLQk/PzFPYmplY3RJbXBAS0pTQEBVQUVAWFogQCAyMyBOT05BTUUg
OyBLSlM6Ok9iamVjdEltcDo6fk9iamVjdEltcCh2b2lkKQ0KLQk/PzFWYWx1ZUBLSlNAQFFBRUBY
WiBAIDI0IE5PTkFNRSA7IEtKUzo6VmFsdWU6On5WYWx1ZSh2b2lkKQ0KLQk/PzJWYWx1ZUltcEBL
SlNAQFNBUEFYSUBaIEAgMjUgTk9OQU1FIDsgdm9pZCAqIEtKUzo6VmFsdWVJbXA6Om9wZXJhdG9y
IG5ldyh1bnNpZ25lZCBpbnQpDQotCT8/M1ZhbHVlSW1wQEtKU0BAU0FYUEFYQFogQCAyNiBOT05B
TUUgOyB2b2lkIEtKUzo6VmFsdWVJbXA6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkICopDQotCT8/NENT
dHJpbmdAS0pTQEBRQUVBQVYwMUBQQkRAWiBAIDI3IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q1N0cmlu
ZyAmIEtKUzo6Q1N0cmluZzo6b3BlcmF0b3I9KGNoYXIgY29uc3QgKikNCi0JPz80TGlzdEBLSlNA
QFFBRUFBVjAxQEFCVjAxQEBaIEAgMjggTk9OQU1FIDsgY2xhc3MgS0pTOjpMaXN0ICYgS0pTOjpM
aXN0OjpvcGVyYXRvcj0oY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT8/NFNjb3BlQ2hhaW5A
S0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDI5IE5PTkFNRSA7IGNsYXNzIEtKUzo6U2NvcGVDaGFp
biAmIEtKUzo6U2NvcGVDaGFpbjo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6U2NvcGVDaGFpbiBjb25z
dCAmKQ0KLQk/PzRVU3RyaW5nQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMCBOT05BTUUgOyBj
bGFzcyBLSlM6OlVTdHJpbmcgJiBLSlM6OlVTdHJpbmc6Om9wZXJhdG9yPShjbGFzcyBLSlM6OlVT
dHJpbmcgY29uc3QgJikNCi0JPz80VmFsdWVAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDMxIE5P
TkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgJiBLSlM6OlZhbHVlOjpvcGVyYXRvcj0oY2xhc3MgS0pT
OjpWYWx1ZSBjb25zdCAmKQ0KLQk/PzhLSlNAQFlBX05BQlZVU3RyaW5nQDBAUEJEQFogQCAzMiBO
T05BTUUgOyBib29sIEtKUzo6b3BlcmF0b3I9PShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwg
Y2hhciBjb25zdCAqKQ0KLQk/YWRkQElkZW50aWZpZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJA
UEFVMzQyQEBaIEAgMzMgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pTOjpJ
ZGVudGlmaWVyOjphZGQoc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICopDQotCT9hZGRASWRlbnRp
ZmllckBLSlNAQENBUEFVUmVwQFVTdHJpbmdAMkBQQkRAWiBAIDM0IE5PTkFNRSA7IHN0cnVjdCBL
SlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6SWRlbnRpZmllcjo6YWRkKGNoYXIgY29uc3QgKikNCi0J
P2FwcGVuZEBMaXN0QEtKU0BAUUFFWFBBVlZhbHVlSW1wQDJAQFogQCAzNSBOT05BTUUgOyB2b2lk
IEtKUzo6TGlzdDo6YXBwZW5kKGNsYXNzIEtKUzo6VmFsdWVJbXAgKikNCi0JP2FwcGVuZEBVU3Ry
aW5nQEtKU0BAUUFFQUFWMTJAQUJWMTJAQFogQCAzNiBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJp
bmcgJiBLSlM6OlVTdHJpbmc6OmFwcGVuZChjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCi0J
P2FwcGVuZEBVU3RyaW5nQEtKU0BAUUFFQUFWMTJAUEJEQFogQCAzNyBOT05BTUUgOyBjbGFzcyBL
SlM6OlVTdHJpbmcgJiBLSlM6OlVTdHJpbmc6OmFwcGVuZChjaGFyIGNvbnN0ICopDQotCT9hc2Np
aUBVU3RyaW5nQEtKU0BAUUJFUEFEWFogQCAzOCBOT05BTUUgOyBjaGFyICogS0pTOjpVU3RyaW5n
Ojphc2NpaSh2b2lkKSBjb25zdA0KLQk/YXR0YWNoTnVsbEBVU3RyaW5nQEtKU0BAQUFFWFhaIEAg
MzkgTk9OQU1FIDsgdm9pZCBLSlM6OlVTdHJpbmc6OmF0dGFjaE51bGwodm9pZCkNCi0JP2J1aWx0
aW5BcnJheUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDAgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbkFycmF5KHZvaWQpIGNv
bnN0DQotCT9idWlsdGluRnVuY3Rpb25ASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBY
WiBAIDQxIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0
aW5GdW5jdGlvbih2b2lkKSBjb25zdA0KLQk/YnVpbHRpbk9iamVjdEBJbnRlcnByZXRlckBLSlNA
QFFCRT9BVk9iamVjdEAyQFhaIEAgNDIgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJ
bnRlcnByZXRlcjo6YnVpbHRpbk9iamVjdCh2b2lkKSBjb25zdA0KLQk/YnVpbHRpbk9iamVjdFBy
b3RvdHlwZUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVk9iamVjdEAyQFhaIEAgNDMgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpPYmplY3QgS0pTOjpJbnRlcnByZXRlcjo6YnVpbHRpbk9iamVjdFByb3RvdHlw
ZSh2b2lkKSBjb25zdA0KLQk/Y2FsbEBPYmplY3RAS0pTQEBRQUU/QVZWYWx1ZUAyQFBBVkV4ZWNT
dGF0ZUAyQEFBVjEyQEFCVkxpc3RAMkBAWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUg
S0pTOjpPYmplY3Q6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpPYmpl
Y3QgJiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jYWxsQE9iamVjdEltcEBLSlNAQFVB
RT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUFWT2JqZWN0QDJAQUJWTGlzdEAyQEBaIEAgNDUg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9iamVjdEltcDo6Y2FsbChjbGFzcyBLSlM6
OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Ok9iamVjdCAmLCBjbGFzcyBLSlM6Okxpc3QgY29uc3Qg
JikNCi0JP2NhblB1dEBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50
aWZpZXJAMkBAWiBAIDQ2IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6OmNhblB1dChjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QN
Ci0JP2NsYXNzSW5mb0BPYmplY3RJbXBAS0pTQEBVQkVQQlVDbGFzc0luZm9AMkBYWiBAIDQ3IE5P
TkFNRSA7IHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0SW1wOjpjbGFz
c0luZm8odm9pZCkgY29uc3QNCi0JP2NsYXNzTmFtZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZVU3Ry
aW5nQDJAWFogQCA0OCBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpPYmplY3RJbXA6
OmNsYXNzTmFtZSh2b2lkKSBjb25zdA0KLQk/Y29sbGVjdEBDb2xsZWN0b3JAS0pTQEBTQV9OWFog
QCA0OSBOT05BTUUgOyBib29sIEtKUzo6Q29sbGVjdG9yOjpjb2xsZWN0KHZvaWQpDQotCT9jb21w
YXRNb2RlQEludGVycHJldGVyQEtKU0BAUUJFP0FXNENvbXBhdE1vZGVAMTJAWFogQCA1MCBOT05B
TUUgOyBlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1vZGUgS0pTOjpJbnRlcnByZXRlcjo6
Y29tcGF0TW9kZSh2b2lkKSBjb25zdA0KLQk/Y29uc3RydWN0QE9iamVjdEltcEBLSlNAQFVBRT9B
Vk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxpc3RAMkBAWiBAIDUxIE5PTkFNRSA7IGNsYXNz
IEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjpjb25zdHJ1Y3QoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQotCT9jb25zdHJ1Y3RAT2JqZWN0SW1wQEtK
U0BAVUFFP0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQUJWTGlzdEAyQEFCVlVTdHJpbmdAMkBI
QFogQCA1MiBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3Ry
dWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmLCBjbGFz
cyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgaW50KQ0KLQk/Y29weVRhaWxATGlzdEBLSlNAQFFCRT9B
VjEyQFhaIEAgNTMgTk9OQU1FIDsgY2xhc3MgS0pTOjpMaXN0IEtKUzo6TGlzdDo6Y29weVRhaWwo
dm9pZCkgY29uc3QNCi0JP2NyZWF0ZUBFcnJvckBLSlNAQFNBP0FWT2JqZWN0QDJAUEFWRXhlY1N0
YXRlQDJAVzRFcnJvclR5cGVAMkBQQkRISFBCVlVTdHJpbmdAMkBAWiBAIDU0IE5PTkFNRSA7IGNs
YXNzIEtKUzo6T2JqZWN0IEtKUzo6RXJyb3I6OmNyZWF0ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
LCBlbnVtIEtKUzo6RXJyb3JUeXBlLCBjaGFyIGNvbnN0ICosIGludCwgaW50LCBjbGFzcyBLSlM6
OlVTdHJpbmcgY29uc3QgKikNCi0JP2NyZWF0ZUBSZXBAVVN0cmluZ0BLSlNAQFNBUEFVMTIzQFBB
VVVDaGFyQDNASEBaIEAgNTUgTk9OQU1FIDsgc3RydWN0IEtKUzo6VVN0cmluZzo6UmVwICogS0pT
OjpVU3RyaW5nOjpSZXA6OmNyZWF0ZShzdHJ1Y3QgS0pTOjpVQ2hhciAqLCBpbnQpDQotCT9jcmVh
dGVDb3B5aW5nQFJlcEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BIQFogQCA1NiBO
T05BTUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3Jl
YXRlQ29weWluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQotCT9kZWZhdWx0VmFs
dWVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFR5cGVAMkBA
WiBAIDU3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pTOjpPYmplY3RJbXA6OmRlZmF1bHRW
YWx1ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6VHlwZSkgY29uc3QNCi0JP2Rl
bGV0ZUFsbFByb3BlcnRpZXNAT2JqZWN0SW1wQEtKU0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEBaIEAg
NTggTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6ZGVsZXRlQWxsUHJvcGVydGllcyhjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqKQ0KLQk/ZGVsZXRlUHJvcGVydHlAT2JqZWN0SW1wQEtKU0BAVUFF
X05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA1OSBOT05BTUUgOyBib29sIEtK
Uzo6T2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFz
cyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikNCi0JP2RlbGV0ZVByb3BlcnR5QE9iamVjdEltcEBL
SlNAQFVBRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgNjAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVj
dEltcDo6ZGVsZXRlUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50
KQ0KLQk/ZGVyZWZWYWx1ZXNATGlzdEBLSlNAQEFBRVhYWiBAIDYxIE5PTkFNRSA7IHZvaWQgS0pT
OjpMaXN0OjpkZXJlZlZhbHVlcyh2b2lkKQ0KLQk/ZGVzdHJveUBSZXBAVVN0cmluZ0BLSlNAQFFB
RVhYWiBAIDYyIE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjpSZXA6OmRlc3Ryb3kodm9pZCkN
Ci0JP2Rpc3BhdGNoVG9PYmplY3RAVmFsdWVJbXBAS0pTQEBRQkU/QVZPYmplY3RAMkBQQVZFeGVj
U3RhdGVAMkBAWiBAIDYzIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6VmFsdWVJbXA6
OmRpc3BhdGNoVG9PYmplY3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP2R5bmFt
aWNDYXN0QE9iamVjdEBLSlNAQFNBP0FWMTJAQUJWVmFsdWVAMkBAWiBAIDY0IE5PTkFNRSA7IGNs
YXNzIEtKUzo6T2JqZWN0IEtKUzo6T2JqZWN0OjpkeW5hbWljQ2FzdChjbGFzcyBLSlM6OlZhbHVl
IGNvbnN0ICYpDQotCT9lcXVhbEBJZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJA
UEJEQFogQCA2NSBOT05BTUUgOyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtK
Uzo6VVN0cmluZzo6UmVwICosIGNoYXIgY29uc3QgKikNCi0JP2VxdWFsQElkZW50aWZpZXJAS0pT
QEBDQV9OUEFVUmVwQFVTdHJpbmdAMkBQQlVVQ2hhckAyQEhAWiBAIDY2IE5PTkFNRSA7IGJvb2wg
S0pTOjpJZGVudGlmaWVyOjplcXVhbChzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiwgc3RydWN0
IEtKUzo6VUNoYXIgY29uc3QgKiwgaW50KQ0KLQk/ZXZhbHVhdGVASW50ZXJwcmV0ZXJAS0pTQEBR
QUU/QVZDb21wbGV0aW9uQDJAQUJWVVN0cmluZ0AyQEFCVlZhbHVlQDJAMEBaIEAgNjcgTk9OQU1F
IDsgY2xhc3MgS0pTOjpDb21wbGV0aW9uIEtKUzo6SW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGNsYXNz
IEtKUzo6VVN0cmluZyBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlIGNvbnN0ICYsIGNsYXNzIEtK
Uzo6VVN0cmluZyBjb25zdCAmKQ0KLQk/ZXZhbHVhdGVASW50ZXJwcmV0ZXJAS0pTQEBRQUU/QVZD
b21wbGV0aW9uQDJAQUJWVVN0cmluZ0AyQEgwQUJWVmFsdWVAMkBAWiBAIDY4IE5PTkFNRSA7IGNs
YXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6OkludGVycHJldGVyOjpldmFsdWF0ZShjbGFzcyBLSlM6
OlVTdHJpbmcgY29uc3QgJiwgaW50LCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3Mg
S0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/ZmluZEVudHJ5QExvb2t1cEBLSlNAQFNBUEJWSGFzaEVu
dHJ5QDJAUEJWSGFzaFRhYmxlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNjkgTk9OQU1FIDsgY2xh
c3MgS0pTOjpIYXNoRW50cnkgY29uc3QgKiBLSlM6Okxvb2t1cDo6ZmluZEVudHJ5KGNsYXNzIEtK
Uzo6SGFzaFRhYmxlIGNvbnN0ICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKQ0KLQk/
ZnJvbUBVU3RyaW5nQEtKU0BAU0E/QVYxMkBKQFogQCA3MCBOT05BTUUgOyBjbGFzcyBLSlM6OlVT
dHJpbmcgS0pTOjpVU3RyaW5nOjpmcm9tKGxvbmcpDQotCT9nZXRAT2JqZWN0SW1wQEtKU0BAVUJF
P0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3MSBOT05BTUUg
OyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9nZXRAT2JqZWN0
SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBJQFogQCA3MiBOT05BTUUgOyBj
bGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpnZXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUg
KiwgdW5zaWduZWQgaW50KSBjb25zdA0KLQk/Z2V0QFByb3BlcnR5TWFwQEtKU0BAUUJFUEFWVmFs
dWVJbXBAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA3MyBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVl
SW1wICogS0pTOjpQcm9wZXJ0eU1hcDo6Z2V0KGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAm
KSBjb25zdA0KLQk/Z2xvYmFsRXhlY0BJbnRlcnByZXRlckBLSlNAQFFBRVBBVkV4ZWNTdGF0ZUAy
QFhaIEAgNzQgTk9OQU1FIDsgY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiBLSlM6OkludGVycHJldGVy
OjpnbG9iYWxFeGVjKHZvaWQpDQotCT9nbG9iYWxPYmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQkVB
QVZPYmplY3RAMkBYWiBAIDc1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0ICYgS0pTOjpJbnRl
cnByZXRlcjo6Z2xvYmFsT2JqZWN0KHZvaWQpIGNvbnN0DQotCT9oYXNJbnN0YW5jZUBPYmplY3RJ
bXBAS0pTQEBVQUU/QVZCb29sZWFuQDJAUEFWRXhlY1N0YXRlQDJAQUJWVmFsdWVAMkBAWiBAIDc2
IE5PTkFNRSA7IGNsYXNzIEtKUzo6Qm9vbGVhbiBLSlM6Ok9iamVjdEltcDo6aGFzSW5zdGFuY2Uo
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpWYWx1ZSBjb25zdCAmKQ0KLQk/aGFz
T3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVy
QDJAQFogQCA3NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShjbGFz
cyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QN
Ci0JP2hhc093blByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJW
SWRlbnRpZmllckAyQEBaIEAgNzggTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzT3du
UHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNv
bnN0ICYpIGNvbnN0DQotCT9oYXNPd25Qcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4
ZWNTdGF0ZUAyQElAWiBAIDc5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blBy
b3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hh
c1Byb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAy
QEBaIEAgODAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pT
OjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9o
YXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDgxIE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICos
IHVuc2lnbmVkIGludCkgY29uc3QNCi0JP2hhc1Byb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9O
UEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODIgTk9OQU1FIDsgYm9vbCBLSlM6
Ok9iamVjdEltcDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQotCT9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pT
QEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDgzIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJ
bXA6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29u
c3QNCi0JP2ltcEF0QExpc3RAS0pTQEBRQkVQQVZWYWx1ZUltcEAyQEhAWiBAIDg0IE5PTkFNRSA7
IGNsYXNzIEtKUzo6VmFsdWVJbXAgKiBLSlM6Okxpc3Q6OmltcEF0KGludCkgY29uc3QNCi0JP2lt
cGxlbWVudHNDYWxsQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA4NSBOT05BTUUgOyBib29sIEtK
Uzo6T2JqZWN0SW1wOjppbXBsZW1lbnRzQ2FsbCh2b2lkKSBjb25zdA0KLQk/aW1wbGVtZW50c0Nv
bnN0cnVjdEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgODYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9i
amVjdEltcDo6aW1wbGVtZW50c0NvbnN0cnVjdCh2b2lkKSBjb25zdA0KLQk/aW1wbGVtZW50c0hh
c0luc3RhbmNlQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA4NyBOT05BTUUgOyBib29sIEtKUzo6
T2JqZWN0SW1wOjppbXBsZW1lbnRzSGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCi0JP2luY1N0YXRl
bWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgODggTk9OQU1FIDsgdm9pZCBLSlM6
OkludGVycHJldGVyOjppbmNTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KLQk/aW5oZXJpdHNAT2JqZWN0
SW1wQEtKU0BAUUJFX05QQlVDbGFzc0luZm9AMkBAWiBAIDg5IE5PTkFNRSA7IGJvb2wgS0pTOjpP
YmplY3RJbXA6OmluaGVyaXRzKHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqKSBjb25zdA0K
LQk/aW5pdEdsb2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDkwIE5PTkFNRSA7
IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVjdCh2b2lkKQ0KLQk/aXNOdWxs
QFVTdHJpbmdAS0pTQEBRQkVfTlhaIEAgOTEgTk9OQU1FIDsgYm9vbCBLSlM6OlVTdHJpbmc6Omlz
TnVsbCh2b2lkKSBjb25zdA0KLQk/bGVuZ3RoUHJvcGVydHlAS0pTQEBZQUFCVklkZW50aWZpZXJA
MUBYWiBAIDkyIE5PTkFNRSA7IGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmIEtKUzo6bGVu
Z3RoUHJvcGVydHkodm9pZCkNCi0JP2xleGljYWxJbnRlcnByZXRlckBFeGVjU3RhdGVAS0pTQEBR
QkVQQVZJbnRlcnByZXRlckAyQFhaIEAgOTMgTk9OQU1FIDsgY2xhc3MgS0pTOjpJbnRlcnByZXRl
ciAqIEtKUzo6RXhlY1N0YXRlOjpsZXhpY2FsSW50ZXJwcmV0ZXIodm9pZCkgY29uc3QNCi0JP2xv
Y2tASW50ZXJwcmV0ZXJAS0pTQEBTQVhYWiBAIDk0IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnBy
ZXRlcjo6bG9jayh2b2lkKQ0KLQk/bWFya0BPYmplY3RJbXBAS0pTQEBVQUVYWFogQCA5NSBOT05B
TUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjptYXJrKHZvaWQpDQotCT9tYXJrZWRAVmFsdWVJbXBA
S0pTQEBRQkVfTlhaIEAgOTYgTk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjptYXJrZWQodm9p
ZCkgY29uc3QNCi0JP21lc3NhZ2VQcm9wZXJ0eUBLSlNAQFlBQUJWSWRlbnRpZmllckAxQFhaIEAg
OTcgTk9OQU1FIDsgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjptZXNzYWdlUHJv
cGVydHkodm9pZCkNCi0JP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RA
MkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgOTggTk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VM
aXN0IEtKUzo6T2JqZWN0Ojpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0K
LQk/cHJvcExpc3RAT2JqZWN0SW1wQEtKU0BAVUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBBVkV4ZWNT
dGF0ZUAyQF9OQFogQCA5OSBOT05BTUUgOyBjbGFzcyBLSlM6OlJlZmVyZW5jZUxpc3QgS0pTOjpP
YmplY3RJbXA6OnByb3BMaXN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGJvb2wpDQotCT9wcm90
b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUJFP0FWVmFsdWVAMkBYWiBAIDEwMCBOT05BTUUgOyBjbGFz
cyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpwcm90b3R5cGUodm9pZCkgY29uc3QNCi0JP3B1
c2hAU2NvcGVDaGFpbkBLSlNAQFFBRVhBQlYxMkBAWiBAIDEwMSBOT05BTUUgOyB2b2lkIEtKUzo6
U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6OlNjb3BlQ2hhaW4gY29uc3QgJikNCi0JP3B1c2hA
U2NvcGVDaGFpbkBLSlNAQFFBRVhQQVZPYmplY3RJbXBAMkBAWiBAIDEwMiBOT05BTUUgOyB2b2lk
IEtKUzo6U2NvcGVDaGFpbjo6cHVzaChjbGFzcyBLSlM6Ok9iamVjdEltcCAqKQ0KLQk/cHV0QE9i
amVjdEltcEBLSlNAQFVBRVhQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQUJWVmFsdWVA
MkBIQFogQCAxMDMgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0KGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZh
bHVlIGNvbnN0ICYsIGludCkNCi0JP3B1dEBPYmplY3RJbXBAS0pTQEBVQUVYUEFWRXhlY1N0YXRl
QDJASUFCVlZhbHVlQDJASEBaIEAgMTA0IE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1
dChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQsIGNsYXNzIEtKUzo6VmFsdWUg
Y29uc3QgJiwgaW50KQ0KLQk/cHV0RGlyZWN0QE9iamVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlm
aWVyQDJASEhAWiBAIDEwNSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3Qo
Y2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGludCwgaW50KQ0KLQk/cHV0RGlyZWN0QE9i
amVjdEltcEBLSlNAQFFBRVhBQlZJZGVudGlmaWVyQDJAUEFWVmFsdWVJbXBAMkBIQFogQCAxMDYg
Tk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6cHV0RGlyZWN0KGNsYXNzIEtKUzo6SWRlbnRp
ZmllciBjb25zdCAmLCBjbGFzcyBLSlM6OlZhbHVlSW1wICosIGludCkNCi0JP3JlZlZhbHVlc0BM
aXN0QEtKU0BAQUFFWFhaIEAgMTA3IE5PTkFNRSA7IHZvaWQgS0pTOjpMaXN0OjpyZWZWYWx1ZXMo
dm9pZCkNCi0JP3JlbGVhc2VATGlzdEBLSlNAQEFBRVhYWiBAIDEwOCBOT05BTUUgOyB2b2lkIEtK
Uzo6TGlzdDo6cmVsZWFzZSh2b2lkKQ0KLQk/cmVsZWFzZUBTY29wZUNoYWluQEtKU0BAQUFFWFha
IEAgMTA5IE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNoYWluOjpyZWxlYXNlKHZvaWQpDQotCT9y
ZXNldFN0YXRlbWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgMTEwIE5PTkFNRSA7
IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzZXRTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KLQk/cmVz
dG9yZUBQcm9wZXJ0eU1hcEBLSlNAQFFBRVhBQlZTYXZlZFByb3BlcnRpZXNAMkBAWiBAIDExMSBO
T05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6OnJlc3RvcmUoY2xhc3MgS0pTOjpTYXZlZFBy
b3BlcnRpZXMgY29uc3QgJikNCi0JP3Jlc3RvcmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFB
RVhBQlZTYXZlZEJ1aWx0aW5zQDJAQFogQCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJl
dGVyOjpyZXN0b3JlQnVpbHRpbnMoY2xhc3MgS0pTOjpTYXZlZEJ1aWx0aW5zIGNvbnN0ICYpDQot
CT9zYXZlQFByb3BlcnR5TWFwQEtKU0BAUUJFWEFBVlNhdmVkUHJvcGVydGllc0AyQEBaIEAgMTEz
IE5PTkFNRSA7IHZvaWQgS0pTOjpQcm9wZXJ0eU1hcDo6c2F2ZShjbGFzcyBLSlM6OlNhdmVkUHJv
cGVydGllcyAmKSBjb25zdA0KLQk/c2F2ZUJ1aWx0aW5zQEludGVycHJldGVyQEtKU0BAUUJFWEFB
VlNhdmVkQnVpbHRpbnNAMkBAWiBAIDExNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6
OnNhdmVCdWlsdGlucyhjbGFzcyBLSlM6OlNhdmVkQnVpbHRpbnMgJikgY29uc3QNCi0JP3NldENv
bXBhdE1vZGVASW50ZXJwcmV0ZXJAS0pTQEBRQUVYVzRDb21wYXRNb2RlQDEyQEBaIEAgMTE1IE5P
TkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6c2V0Q29tcGF0TW9kZShlbnVtIEtKUzo6SW50
ZXJwcmV0ZXI6OkNvbXBhdE1vZGUpDQotCT9zZXRQcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUFF
WEFCVlZhbHVlQDJAQFogQCAxMTYgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6c2V0UHJv
dG90eXBlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCi0JP3NldFNob3VsZFByaW50RXhjZXB0
aW9uc0BJbnRlcnByZXRlckBLSlNAQFNBWF9OQFogQCAxMTcgTk9OQU1FIDsgdm9pZCBLSlM6Oklu
dGVycHJldGVyOjpzZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCkNCi0JP3Nob3VsZFByaW50
RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNBX05YWiBAIDExOCBOT05BTUUgOyBib29sIEtK
Uzo6SW50ZXJwcmV0ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucyh2b2lkKQ0KLQk/dG9BcnJheUlu
ZGV4QFVTdHJpbmdAS0pTQEBRQkVJUEFfTkBaIEAgMTE5IE5PTkFNRSA7IHVuc2lnbmVkIGludCBL
SlM6OlVTdHJpbmc6OnRvQXJyYXlJbmRleChib29sICopIGNvbnN0DQotCT90b0Jvb2xlYW5AT2Jq
ZWN0SW1wQEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBAWiBAIDEyMCBOT05BTUUgOyBib29sIEtK
Uzo6T2JqZWN0SW1wOjp0b0Jvb2xlYW4oY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0J
P3RvSW50MzJAVmFsdWVJbXBAS0pTQEBRQkVKUEFWRXhlY1N0YXRlQDJAQFogQCAxMjEgTk9OQU1F
IDsgbG9uZyBLSlM6OlZhbHVlSW1wOjp0b0ludDMyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNv
bnN0DQotCT90b0ludGVnZXJAVmFsdWVJbXBAS0pTQEBRQkVOUEFWRXhlY1N0YXRlQDJAQFogQCAx
MjIgTk9OQU1FIDsgZG91YmxlIEtKUzo6VmFsdWVJbXA6OnRvSW50ZWdlcihjbGFzcyBLSlM6OkV4
ZWNTdGF0ZSAqKSBjb25zdA0KLQk/dG9OdW1iZXJAT2JqZWN0SW1wQEtKU0BAVUJFTlBBVkV4ZWNT
dGF0ZUAyQEBaIEAgMTIzIE5PTkFNRSA7IGRvdWJsZSBLSlM6Ok9iamVjdEltcDo6dG9OdW1iZXIo
Y2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCi0JP3RvT2JqZWN0QE9iamVjdEltcEBLSlNA
QFVCRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTI0IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6T2JqZWN0IEtKUzo6T2JqZWN0SW1wOjp0b09iamVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAq
KSBjb25zdA0KLQk/dG9QcmltaXRpdmVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVmFsdWVAMkBQQVZF
eGVjU3RhdGVAMkBXNFR5cGVAMkBAWiBAIDEyNSBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtK
Uzo6T2JqZWN0SW1wOjp0b1ByaW1pdGl2ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtK
Uzo6VHlwZSkgY29uc3QNCi0JP3RvU3RyaW5nQE9iamVjdEltcEBLSlNAQFVCRT9BVlVTdHJpbmdA
MkBQQVZFeGVjU3RhdGVAMkBAWiBAIDEyNiBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pT
OjpPYmplY3RJbXA6OnRvU3RyaW5nKGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90
b1VJbnQxNkBWYWx1ZUltcEBLSlNAQFFCRUdQQVZFeGVjU3RhdGVAMkBAWiBAIDEyNyBOT05BTUUg
OyB1bnNpZ25lZCBzaG9ydCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQxNihjbGFzcyBLSlM6OkV4ZWNT
dGF0ZSAqKSBjb25zdA0KLQk/dG9VSW50MzJAVmFsdWVJbXBAS0pTQEBFQkVfTkFBSUBaIEAgMTI4
IE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6dG9VSW50MzIodW5zaWduZWQgaW50ICYpIGNv
bnN0DQotCT90b1VJbnQzMkBWYWx1ZUltcEBLSlNAQFFCRUtQQVZFeGVjU3RhdGVAMkBAWiBAIDEy
OSBOT05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6VmFsdWVJbXA6OnRvVUludDMyKGNsYXNzIEtK
Uzo6RXhlY1N0YXRlICopIGNvbnN0DQotCT90b1VMb25nQFVTdHJpbmdAS0pTQEBRQkVLUEFfTkBa
IEAgMTMwIE5PTkFNRSA7IHVuc2lnbmVkIGxvbmcgS0pTOjpVU3RyaW5nOjp0b1VMb25nKGJvb2wg
KikgY29uc3QNCi0JP3R5cGVAT2JqZWN0SW1wQEtKU0BAVUJFP0FXNFR5cGVAMkBYWiBAIDEzMSBO
T05BTUUgOyBlbnVtIEtKUzo6VHlwZSBLSlM6Ok9iamVjdEltcDo6dHlwZSh2b2lkKSBjb25zdA0K
LQk/dW5sb2NrQEludGVycHJldGVyQEtKU0BAU0FYWFogQCAxMzIgTk9OQU1FIDsgdm9pZCBLSlM6
OkludGVycHJldGVyOjp1bmxvY2sodm9pZCkNCi0JP3ZhbHVlQFN0cmluZ0BLSlNAQFFCRT9BVlVT
dHJpbmdAMkBYWiBAIDEzMyBOT05BTUUgOyBjbGFzcyBLSlM6OlVTdHJpbmcgS0pTOjpTdHJpbmc6
OnZhbHVlKHZvaWQpIGNvbnN0DQotCT92aXJ0dWFsX2hvb2tASW50ZXJwcmV0ZXJAS0pTQEBNQUVY
SFBBWEBaIEAgMTM0IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dmlydHVhbF9ob29r
KGludCwgdm9pZCAqKQ0KLQlranNfc3RydG9kIEAgMTM1IE5PTkFNRQ0KLQk/Y2xhc3NJbmZvQE9i
amVjdEBLSlNAQFFCRVBCVUNsYXNzSW5mb0AyQFhaIEAgMTM2IE5PTkFNRSA7IHN0cnVjdCBLSlM6
OkNsYXNzSW5mbyBjb25zdCAqIEtKUzo6T2JqZWN0OjpjbGFzc0luZm8odm9pZCkgY29uc3QNCi0J
P2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJASUBaIEAgMTM3
IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhl
Y1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgPz8wQm9vbGVhbkBLSlNAQFFBRUBf
TkBaIEAgMSBOT05BTUUgOyBLSlM6OkJvb2xlYW46OkJvb2xlYW4oYm9vbCkNCisgICAgPz8wSW50
ZXJwcmV0ZXJAS0pTQEBRQUVAQUJWT2JqZWN0QDFAQFogQCAyIE5PTkFNRSA7IEtKUzo6SW50ZXJw
cmV0ZXI6OkludGVycHJldGVyKGNsYXNzIEtKUzo6T2JqZWN0IGNvbnN0ICYpDQorICAgID8/MExp
c3RAS0pTQEBRQUVAWFogQCAzIE5PTkFNRSA7IEtKUzo6TGlzdDo6TGlzdCh2b2lkKQ0KKyAgICA/
PzBOdWxsQEtKU0BAUUFFQFhaIEAgNCBOT05BTUUgOyBLSlM6Ok51bGw6Ok51bGwodm9pZCkNCisg
ICAgPz8wTnVtYmVyQEtKU0BAUUFFQEhAWiBAIDUgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51bWJl
cihpbnQpDQorICAgID8/ME51bWJlckBLSlNAQFFBRUBJQFogQCA2IE5PTkFNRSA7IEtKUzo6TnVt
YmVyOjpOdW1iZXIodW5zaWduZWQgaW50KQ0KKyAgICA/PzBOdW1iZXJAS0pTQEBRQUVASkBaIEAg
NyBOT05BTUUgOyBLSlM6Ok51bWJlcjo6TnVtYmVyKGxvbmcpDQorICAgID8/ME51bWJlckBLSlNA
QFFBRUBLQFogQCA4IE5PTkFNRSA7IEtKUzo6TnVtYmVyOjpOdW1iZXIodW5zaWduZWQgbG9uZykN
CisgICAgPz8wTnVtYmVyQEtKU0BAUUFFQE5AWiBAIDkgTk9OQU1FIDsgS0pTOjpOdW1iZXI6Ok51
bWJlcihkb3VibGUpDQorICAgID8/ME9iamVjdEltcEBLSlNAQFFBRUBBQlZPYmplY3RAMUBAWiBA
IDEwIE5PTkFNRSA7IEtKUzo6T2JqZWN0SW1wOjpPYmplY3RJbXAoY2xhc3MgS0pTOjpPYmplY3Qg
Y29uc3QgJikNCisgICAgPz8wT2JqZWN0SW1wQEtKU0BAUUFFQFhaIEAgMTEgTk9OQU1FIDsgS0pT
OjpPYmplY3RJbXA6Ok9iamVjdEltcCh2b2lkKQ0KKyAgICA/PzBSdW50aW1lT2JqZWN0SW1wQEtK
U0BAUUFFQFBBVkluc3RhbmNlQEJpbmRpbmdzQDFAX05AWiBAIDEyIE5PTkFNRSA7IEtKUzo6UnVu
dGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChjbGFzcyBLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZSAqLCBib29sKQ0KKyAgICA/PzBTdHJpbmdAS0pTQEBRQUVAQUJWVVN0cmluZ0AxQEBaIEAg
MTMgTk9OQU1FIDsgS0pTOjpTdHJpbmc6OlN0cmluZyhjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3Qg
JikNCisgICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBBQlYwMUAwQFogQCAxNCBOT05BTUUgOyBLSlM6
OlVTdHJpbmc6OlVTdHJpbmcoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6
VVN0cmluZyBjb25zdCAmKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQERAWiBAIDE1IE5PTkFN
RSA7IEtKUzo6VVN0cmluZzo6VVN0cmluZyhjaGFyKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFF
QFBBVVVDaGFyQDFASF9OQFogQCAxNiBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmcoc3Ry
dWN0IEtKUzo6VUNoYXIgKiwgaW50LCBib29sKQ0KKyAgICA/PzBVU3RyaW5nQEtKU0BAUUFFQFBC
REBaIEAgMTcgTk9OQU1FIDsgS0pTOjpVU3RyaW5nOjpVU3RyaW5nKGNoYXIgY29uc3QgKikNCisg
ICAgPz8wVVN0cmluZ0BLSlNAQFFBRUBQQlVVQ2hhckAxQEhAWiBAIDE4IE5PTkFNRSA7IEtKUzo6
VVN0cmluZzo6VVN0cmluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQorICAgID8/
MFVTdHJpbmdAS0pTQEBRQUVAWFogQCAxOSBOT05BTUUgOyBLSlM6OlVTdHJpbmc6OlVTdHJpbmco
dm9pZCkNCisgICAgPz8wVW5kZWZpbmVkQEtKU0BAUUFFQFhaIEAgMjAgTk9OQU1FIDsgS0pTOjpV
bmRlZmluZWQ6OlVuZGVmaW5lZCh2b2lkKQ0KKyAgICA/PzBWYWx1ZUBLSlNAQFFBRUBBQlYwMUBA
WiBAIDIxIE5PTkFNRSA7IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWUgY29uc3Qg
JikNCisgICAgPz8wVmFsdWVAS0pTQEBRQUVAUEFWVmFsdWVJbXBAMUBAWiBAIDIyIE5PTkFNRSA7
IEtKUzo6VmFsdWU6OlZhbHVlKGNsYXNzIEtKUzo6VmFsdWVJbXAgKikNCisgICAgPz8xSW50ZXJw
cmV0ZXJAS0pTQEBVQUVAWFogQCAyMyBOT05BTUUgOyBLSlM6OkludGVycHJldGVyOjp+SW50ZXJw
cmV0ZXIodm9pZCkNCisgICAgPz8xT2JqZWN0SW1wQEtKU0BAVUFFQFhaIEAgMjQgTk9OQU1FIDsg
S0pTOjpPYmplY3RJbXA6On5PYmplY3RJbXAodm9pZCkNCisgICAgPz8xVmFsdWVAS0pTQEBRQUVA
WFogQCAyNSBOT05BTUUgOyBLSlM6OlZhbHVlOjp+VmFsdWUodm9pZCkNCisgICAgPz8yVmFsdWVJ
bXBAS0pTQEBTQVBBWElAWiBAIDI2IE5PTkFNRSA7IHZvaWQgKiBLSlM6OlZhbHVlSW1wOjpvcGVy
YXRvciBuZXcodW5zaWduZWQgaW50KQ0KKyAgICA/PzNWYWx1ZUltcEBLSlNAQFNBWFBBWEBaIEAg
MjcgTk9OQU1FIDsgdm9pZCBLSlM6OlZhbHVlSW1wOjpvcGVyYXRvciBkZWxldGUodm9pZCAqKQ0K
KyAgICA/PzRDU3RyaW5nQEtKU0BAUUFFQUFWMDFAUEJEQFogQCAyOCBOT05BTUUgOyBjbGFzcyBL
SlM6OkNTdHJpbmcgJiBLSlM6OkNTdHJpbmc6Om9wZXJhdG9yPShjaGFyIGNvbnN0ICopDQorICAg
ID8/NExpc3RAS0pTQEBRQUVBQVYwMUBBQlYwMUBAWiBAIDI5IE5PTkFNRSA7IGNsYXNzIEtKUzo6
TGlzdCAmIEtKUzo6TGlzdDo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAg
ICA/PzRTY29wZUNoYWluQEtKU0BAUUFFQUFWMDFAQUJWMDFAQFogQCAzMCBOT05BTUUgOyBjbGFz
cyBLSlM6OlNjb3BlQ2hhaW4gJiBLSlM6OlNjb3BlQ2hhaW46Om9wZXJhdG9yPShjbGFzcyBLSlM6
OlNjb3BlQ2hhaW4gY29uc3QgJikNCisgICAgPz80VVN0cmluZ0BLSlNAQFFBRUFBVjAxQEFCVjAx
QEBaIEAgMzEgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjpvcGVy
YXRvcj0oY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYpDQorICAgID8/NFZhbHVlQEtKU0BAUUFF
QUFWMDFAQUJWMDFAQFogQCAzMiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlICYgS0pTOjpWYWx1
ZTo6b3BlcmF0b3I9KGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgPz84S0pTQEBZQV9O
QUJWVVN0cmluZ0AwQFBCREBaIEAgMzMgTk9OQU1FIDsgYm9vbCBLSlM6Om9wZXJhdG9yPT0oY2xh
c3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGNoYXIgY29uc3QgKikNCisgICAgP05QTl9TZXRFeGNl
cHRpb25XaXRoVVRGOEBAWUFYUEFVTlBPYmplY3RAQFBCREhAWiBAIDM0IE5PTkFNRSA7IHZvaWQg
TlBOX1NldEV4Y2VwdGlvbldpdGhVVEY4KHN0cnVjdCBOUE9iamVjdCAqLCBjaGFyIGNvbnN0ICos
IGludCkNCisgICAgP2FkZEBJZGVudGlmaWVyQEtKU0BAQ0FQQVVSZXBAVVN0cmluZ0AyQFBBVTM0
MkBAWiBAIDM1IE5PTkFNRSA7IHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqIEtKUzo6SWRlbnRp
Zmllcjo6YWRkKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqKQ0KKyAgICA/YWRkQElkZW50aWZp
ZXJAS0pTQEBDQVBBVVJlcEBVU3RyaW5nQDJAUEJEQFogQCAzNiBOT05BTUUgOyBzdHJ1Y3QgS0pT
OjpVU3RyaW5nOjpSZXAgKiBLSlM6OklkZW50aWZpZXI6OmFkZChjaGFyIGNvbnN0ICopDQorICAg
ID9hcHBlbmRATGlzdEBLSlNAQFFBRVhQQVZWYWx1ZUltcEAyQEBaIEAgMzcgTk9OQU1FIDsgdm9p
ZCBLSlM6Okxpc3Q6OmFwcGVuZChjbGFzcyBLSlM6OlZhbHVlSW1wICopDQorICAgID9hcHBlbmRA
VVN0cmluZ0BLSlNAQFFBRUFBVjEyQEFCVjEyQEBaIEAgMzggTk9OQU1FIDsgY2xhc3MgS0pTOjpV
U3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYp
DQorICAgID9hcHBlbmRAVVN0cmluZ0BLSlNAQFFBRUFBVjEyQFBCREBaIEAgMzkgTk9OQU1FIDsg
Y2xhc3MgS0pTOjpVU3RyaW5nICYgS0pTOjpVU3RyaW5nOjphcHBlbmQoY2hhciBjb25zdCAqKQ0K
KyAgICA/YXNjaWlAVVN0cmluZ0BLSlNAQFFCRVBBRFhaIEAgNDAgTk9OQU1FIDsgY2hhciAqIEtK
Uzo6VVN0cmluZzo6YXNjaWkodm9pZCkgY29uc3QNCisgICAgP2F0dGFjaE51bGxAVVN0cmluZ0BL
SlNAQEFBRVhYWiBAIDQxIE5PTkFNRSA7IHZvaWQgS0pTOjpVU3RyaW5nOjphdHRhY2hOdWxsKHZv
aWQpDQorICAgID9idWlsdGluQXJyYXlASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBY
WiBAIDQyIE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0
aW5BcnJheSh2b2lkKSBjb25zdA0KKyAgICA/YnVpbHRpbkZ1bmN0aW9uQEludGVycHJldGVyQEtK
U0BAUUJFP0FWT2JqZWN0QDJAWFogQCA0MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6
OkludGVycHJldGVyOjpidWlsdGluRnVuY3Rpb24odm9pZCkgY29uc3QNCisgICAgP2J1aWx0aW5P
YmplY3RASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZPYmplY3RAMkBYWiBAIDQ0IE5PTkFNRSA7IGNs
YXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0ZXI6OmJ1aWx0aW5PYmplY3Qodm9pZCkgY29u
c3QNCisgICAgP2J1aWx0aW5PYmplY3RQcm90b3R5cGVASW50ZXJwcmV0ZXJAS0pTQEBRQkU/QVZP
YmplY3RAMkBYWiBAIDQ1IE5PTkFNRSA7IGNsYXNzIEtKUzo6T2JqZWN0IEtKUzo6SW50ZXJwcmV0
ZXI6OmJ1aWx0aW5PYmplY3RQcm90b3R5cGUodm9pZCkgY29uc3QNCisgICAgP2NhbGxAT2JqZWN0
QEtKU0BAUUFFP0FWVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBBQVYxMkBBQlZMaXN0QDJAQFogQCA0
NiBOT05BTUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0OjpjYWxsKGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6T2JqZWN0ICYsIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAm
KQ0KKyAgICA/Y2FsbEBPYmplY3RJbXBAS0pTQEBVQUU/QVZWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAy
QEFBVk9iamVjdEAyQEFCVkxpc3RAMkBAWiBAIDQ3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUg
S0pTOjpPYmplY3RJbXA6OmNhbGwoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpP
YmplY3QgJiwgY2xhc3MgS0pTOjpMaXN0IGNvbnN0ICYpDQorICAgID9jYW5QdXRAT2JqZWN0SW1w
QEtKU0BAVUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCA0OCBOT05BTUUg
OyBib29sIEtKUzo6T2JqZWN0SW1wOjpjYW5QdXQoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xh
c3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9jbGFzc0luZm9AT2JqZWN0
QEtKU0BAUUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA0OSBOT05BTUUgOyBzdHJ1Y3QgS0pTOjpDbGFz
c0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdDo6Y2xhc3NJbmZvKHZvaWQpIGNvbnN0DQorICAgID9j
bGFzc0luZm9AT2JqZWN0SW1wQEtKU0BAVUJFUEJVQ2xhc3NJbmZvQDJAWFogQCA1MCBOT05BTUUg
OyBzdHJ1Y3QgS0pTOjpDbGFzc0luZm8gY29uc3QgKiBLSlM6Ok9iamVjdEltcDo6Y2xhc3NJbmZv
KHZvaWQpIGNvbnN0DQorICAgID9jbGFzc05hbWVAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmlu
Z0AyQFhaIEAgNTEgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6T2JqZWN0SW1wOjpj
bGFzc05hbWUodm9pZCkgY29uc3QNCisgICAgP2NvbGxlY3RAQ29sbGVjdG9yQEtKU0BAU0FfTlha
IEAgNTIgTk9OQU1FIDsgYm9vbCBLSlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCh2b2lkKQ0KKyAgICA/
Y29tcGF0TW9kZUBJbnRlcnByZXRlckBLSlNAQFFCRT9BVzRDb21wYXRNb2RlQDEyQFhaIEAgNTMg
Tk9OQU1FIDsgZW51bSBLSlM6OkludGVycHJldGVyOjpDb21wYXRNb2RlIEtKUzo6SW50ZXJwcmV0
ZXI6OmNvbXBhdE1vZGUodm9pZCkgY29uc3QNCisgICAgP2NvbnN0cnVjdEBPYmplY3RJbXBAS0pT
QEBVQUU/QVZPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBBQlZMaXN0QDJAQFogQCA1NCBOT05BTUUg
OyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdEltcDo6Y29uc3RydWN0KGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6TGlzdCBjb25zdCAmKQ0KKyAgICA/Y29uc3RydWN0QE9i
amVjdEltcEBLSlNAQFVBRT9BVk9iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEFCVkxpc3RAMkBBQlZV
U3RyaW5nQDJASEBaIEAgNTUgTk9OQU1FIDsgY2xhc3MgS0pTOjpPYmplY3QgS0pTOjpPYmplY3RJ
bXA6OmNvbnN0cnVjdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBjbGFzcyBLSlM6Okxpc3QgY29u
c3QgJiwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCkNCisgICAgP2NvcHlUYWlsQExp
c3RAS0pTQEBRQkU/QVYxMkBYWiBAIDU2IE5PTkFNRSA7IGNsYXNzIEtKUzo6TGlzdCBLSlM6Okxp
c3Q6OmNvcHlUYWlsKHZvaWQpIGNvbnN0DQorICAgID9jcmVhdGVARXJyb3JAS0pTQEBTQT9BVk9i
amVjdEAyQFBBVkV4ZWNTdGF0ZUAyQFc0RXJyb3JUeXBlQDJAUEJESEhQQlZVU3RyaW5nQDJAQFog
QCA1NyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OkVycm9yOjpjcmVhdGUoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OkVycm9yVHlwZSwgY2hhciBjb25zdCAqLCBpbnQs
IGludCwgY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICopDQorICAgID9jcmVhdGVAUmVwQFVTdHJp
bmdAS0pTQEBTQVBBVTEyM0BQQVVVQ2hhckAzQEhAWiBAIDU4IE5PTkFNRSA7IHN0cnVjdCBLSlM6
OlVTdHJpbmc6OlJlcCAqIEtKUzo6VVN0cmluZzo6UmVwOjpjcmVhdGUoc3RydWN0IEtKUzo6VUNo
YXIgKiwgaW50KQ0KKyAgICA/Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2VASW5zdGFu
Y2VAQmluZGluZ3NAS0pTQEBTQVBBVjEyM0BXNEJpbmRpbmdMYW5ndWFnZUAxMjNAUEFYUEJWUm9v
dE9iamVjdEAyM0BAWiBAIDU5IE5PTkFNRSA7IGNsYXNzIEtKUzo6QmluZGluZ3M6Okluc3RhbmNl
ICogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3Rh
bmNlKGVudW0gS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSwgdm9pZCAq
LCBjbGFzcyBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0IGNvbnN0ICopDQorICAgID9jcmVhdGVD
b3B5aW5nQFJlcEBVU3RyaW5nQEtKU0BAU0FQQVUxMjNAUEJVVUNoYXJAM0BIQFogQCA2MCBOT05B
TUUgOyBzdHJ1Y3QgS0pTOjpVU3RyaW5nOjpSZXAgKiBLSlM6OlVTdHJpbmc6OlJlcDo6Y3JlYXRl
Q29weWluZyhzdHJ1Y3QgS0pTOjpVQ2hhciBjb25zdCAqLCBpbnQpDQorICAgID9jcmVhdGVMYW5n
dWFnZUluc3RhbmNlRm9yVmFsdWVASW5zdGFuY2VAQmluZGluZ3NAS0pTQEBTQVBBWFBBVkV4ZWNT
dGF0ZUAzQFc0QmluZGluZ0xhbmd1YWdlQDEyM0BBQlZPYmplY3RAM0BQQlZSb290T2JqZWN0QDIz
QDNAWiBAIDYxIE5PTkFNRSA7IHZvaWQgKiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRl
TGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pT
OjpCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSwgY2xhc3MgS0pTOjpPYmplY3Qg
Y29uc3QgJiwgY2xhc3MgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqLCBjbGFzcyBL
SlM6OkJpbmRpbmdzOjpSb290T2JqZWN0IGNvbnN0ICopDQorICAgID9jcmVhdGVMYW5ndWFnZUlu
c3RhbmNlRm9yVmFsdWVASW50ZXJwcmV0ZXJAS0pTQEBVQUVQQVhQQVZFeGVjU3RhdGVAMkBXNEJp
bmRpbmdMYW5ndWFnZUBJbnN0YW5jZUBCaW5kaW5nc0AyQEFCVk9iamVjdEAyQFBCVlJvb3RPYmpl
Y3RANjJAM0BaIEAgNjIgTk9OQU1FIDsgdm9pZCAqIEtKUzo6SW50ZXJwcmV0ZXI6OmNyZWF0ZUxh
bmd1YWdlSW5zdGFuY2VGb3JWYWx1ZShjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBlbnVtIEtKUzo6
QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIGNsYXNzIEtKUzo6T2JqZWN0IGNv
bnN0ICYsIGNsYXNzIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgY29uc3QgKiwgY2xhc3MgS0pT
OjpCaW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/Y3JlYXRlUnVudGltZU9iamVj
dEBJbnN0YW5jZUBCaW5kaW5nc0BLSlNAQFNBP0FWT2JqZWN0QDNAVzRCaW5kaW5nTGFuZ3VhZ2VA
MTIzQFBBWFBCVlJvb3RPYmplY3RAMjNAQFogQCA2MyBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVj
dCBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChlbnVtIEtKUzo6
QmluZGluZ3M6Okluc3RhbmNlOjpCaW5kaW5nTGFuZ3VhZ2UsIHZvaWQgKiwgY2xhc3MgS0pTOjpC
aW5kaW5nczo6Um9vdE9iamVjdCBjb25zdCAqKQ0KKyAgICA/ZGVmYXVsdFZhbHVlQE9iamVjdElt
cEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAVzRUeXBlQDJAQFogQCA2NCBOT05B
TUUgOyBjbGFzcyBLSlM6OlZhbHVlIEtKUzo6T2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgZW51bSBLSlM6OlR5cGUpIGNvbnN0DQorICAgID9kZWxldGVBbGxQ
cm9wZXJ0aWVzQE9iamVjdEltcEBLSlNAQFFBRVhQQVZFeGVjU3RhdGVAMkBAWiBAIDY1IE5PTkFN
RSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OmRlbGV0ZUFsbFByb3BlcnRpZXMoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKikNCisgICAgP2RlbGV0ZVByb3BlcnR5QE9iamVjdEltcEBLSlNAQFVBRV9OUEFW
RXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgNjYgTk9OQU1FIDsgYm9vbCBLSlM6Ok9i
amVjdEltcDo6ZGVsZXRlUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYpDQorICAgID9kZWxldGVQcm9wZXJ0eUBPYmplY3RJbXBAS0pT
QEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDY3IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJ
bXA6OmRlbGV0ZVByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkN
CisgICAgP2RlcmVmVmFsdWVzQExpc3RAS0pTQEBBQUVYWFogQCA2OCBOT05BTUUgOyB2b2lkIEtK
Uzo6TGlzdDo6ZGVyZWZWYWx1ZXModm9pZCkNCisgICAgP2Rlc3Ryb3lAUmVwQFVTdHJpbmdAS0pT
QEBRQUVYWFogQCA2OSBOT05BTUUgOyB2b2lkIEtKUzo6VVN0cmluZzo6UmVwOjpkZXN0cm95KHZv
aWQpDQorICAgID9kaXNwYXRjaFRvT2JqZWN0QFZhbHVlSW1wQEtKU0BAUUJFP0FWT2JqZWN0QDJA
UEFWRXhlY1N0YXRlQDJAQFogQCA3MCBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6OlZh
bHVlSW1wOjpkaXNwYXRjaFRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNvbnN0DQor
ICAgID9keW5hbWljQ2FzdEBPYmplY3RAS0pTQEBTQT9BVjEyQEFCVlZhbHVlQDJAQFogQCA3MSBO
T05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCBLSlM6Ok9iamVjdDo6ZHluYW1pY0Nhc3QoY2xhc3Mg
S0pTOjpWYWx1ZSBjb25zdCAmKQ0KKyAgICA/ZXF1YWxASWRlbnRpZmllckBLSlNAQENBX05QQVVS
ZXBAVVN0cmluZ0AyQFBCREBaIEAgNzIgTk9OQU1FIDsgYm9vbCBLSlM6OklkZW50aWZpZXI6OmVx
dWFsKHN0cnVjdCBLSlM6OlVTdHJpbmc6OlJlcCAqLCBjaGFyIGNvbnN0ICopDQorICAgID9lcXVh
bEBJZGVudGlmaWVyQEtKU0BAQ0FfTlBBVVJlcEBVU3RyaW5nQDJAUEJVVUNoYXJAMkBIQFogQCA3
MyBOT05BTUUgOyBib29sIEtKUzo6SWRlbnRpZmllcjo6ZXF1YWwoc3RydWN0IEtKUzo6VVN0cmlu
Zzo6UmVwICosIHN0cnVjdCBLSlM6OlVDaGFyIGNvbnN0ICosIGludCkNCisgICAgP2V2YWx1YXRl
QEludGVycHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBBQlZWYWx1
ZUAyQDBAWiBAIDc0IE5PTkFNRSA7IGNsYXNzIEtKUzo6Q29tcGxldGlvbiBLSlM6OkludGVycHJl
dGVyOjpldmFsdWF0ZShjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJiwgY2xhc3MgS0pTOjpWYWx1
ZSBjb25zdCAmLCBjbGFzcyBLSlM6OlVTdHJpbmcgY29uc3QgJikNCisgICAgP2V2YWx1YXRlQElu
dGVycHJldGVyQEtKU0BAUUFFP0FWQ29tcGxldGlvbkAyQEFCVlVTdHJpbmdAMkBIMEFCVlZhbHVl
QDJAQFogQCA3NSBOT05BTUUgOyBjbGFzcyBLSlM6OkNvbXBsZXRpb24gS0pTOjpJbnRlcnByZXRl
cjo6ZXZhbHVhdGUoY2xhc3MgS0pTOjpVU3RyaW5nIGNvbnN0ICYsIGludCwgY2xhc3MgS0pTOjpV
U3RyaW5nIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2ZpbmRFbnRy
eUBMb29rdXBAS0pTQEBTQVBCVkhhc2hFbnRyeUAyQFBCVkhhc2hUYWJsZUAyQEFCVklkZW50aWZp
ZXJAMkBAWiBAIDc2IE5PTkFNRSA7IGNsYXNzIEtKUzo6SGFzaEVudHJ5IGNvbnN0ICogS0pTOjpM
b29rdXA6OmZpbmRFbnRyeShjbGFzcyBLSlM6Okhhc2hUYWJsZSBjb25zdCAqLCBjbGFzcyBLSlM6
OklkZW50aWZpZXIgY29uc3QgJikNCisgICAgP2Zyb21AVVN0cmluZ0BLSlNAQFNBP0FWMTJASkBa
IEAgNzcgTk9OQU1FIDsgY2xhc3MgS0pTOjpVU3RyaW5nIEtKUzo6VVN0cmluZzo6ZnJvbShsb25n
KQ0KKyAgICA/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJAUEFWRXhlY1N0YXRlQDJA
QUJWSWRlbnRpZmllckAyQEBaIEAgNzggTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9i
amVjdEltcDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmll
ciBjb25zdCAmKSBjb25zdA0KKyAgICA/Z2V0QE9iamVjdEltcEBLSlNAQFVCRT9BVlZhbHVlQDJA
UEFWRXhlY1N0YXRlQDJASUBaIEAgNzkgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZSBLSlM6Ok9i
amVjdEltcDo6Z2V0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QN
CisgICAgP2dldEBQcm9wZXJ0eU1hcEBLSlNAQFFCRVBBVlZhbHVlSW1wQDJAQUJWSWRlbnRpZmll
ckAyQEBaIEAgODAgTk9OQU1FIDsgY2xhc3MgS0pTOjpWYWx1ZUltcCAqIEtKUzo6UHJvcGVydHlN
YXA6OmdldChjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJikgY29uc3QNCisgICAgP2dsb2Jh
bEV4ZWNASW50ZXJwcmV0ZXJAS0pTQEBRQUVQQVZFeGVjU3RhdGVAMkBYWiBAIDgxIE5PTkFNRSA7
IGNsYXNzIEtKUzo6RXhlY1N0YXRlICogS0pTOjpJbnRlcnByZXRlcjo6Z2xvYmFsRXhlYyh2b2lk
KQ0KKyAgICA/Z2xvYmFsT2JqZWN0QEludGVycHJldGVyQEtKU0BAUUJFQUFWT2JqZWN0QDJAWFog
QCA4MiBOT05BTUUgOyBjbGFzcyBLSlM6Ok9iamVjdCAmIEtKUzo6SW50ZXJwcmV0ZXI6Omdsb2Jh
bE9iamVjdCh2b2lkKSBjb25zdA0KKyAgICA/aGFzSW5zdGFuY2VAT2JqZWN0SW1wQEtKU0BAVUFF
P0FWQm9vbGVhbkAyQFBBVkV4ZWNTdGF0ZUAyQEFCVlZhbHVlQDJAQFogQCA4MyBOT05BTUUgOyBj
bGFzcyBLSlM6OkJvb2xlYW4gS0pTOjpPYmplY3RJbXA6Omhhc0luc3RhbmNlKGNsYXNzIEtKUzo6
RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6VmFsdWUgY29uc3QgJikNCisgICAgP2hhc093blByb3Bl
cnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAg
ODQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9o
YXNPd25Qcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg1IE5P
TkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdElt
cEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODYgTk9OQU1F
IDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNPd25Q
cm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg3IE5PTkFN
RSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0
YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEBLSlNA
QFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgODggTk9OQU1FIDsgYm9v
bCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3Mg
S0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RA
S0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQElAWiBAIDg5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmpl
Y3Q6Omhhc1Byb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29u
c3QNCisgICAgP2hhc1Byb3BlcnR5QE9iamVjdEltcEBLSlNAQFVCRV9OUEFWRXhlY1N0YXRlQDJA
QUJWSWRlbnRpZmllckAyQEBaIEAgOTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdEltcDo6aGFz
UHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNv
bnN0ICYpIGNvbnN0DQorICAgID9oYXNQcm9wZXJ0eUBPYmplY3RJbXBAS0pTQEBVQkVfTlBBVkV4
ZWNTdGF0ZUAyQElAWiBAIDkxIE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3RJbXA6Omhhc1Byb3Bl
cnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCkgY29uc3QNCisgICAgP2lt
cEF0QExpc3RAS0pTQEBRQkVQQVZWYWx1ZUltcEAyQEhAWiBAIDkyIE5PTkFNRSA7IGNsYXNzIEtK
Uzo6VmFsdWVJbXAgKiBLSlM6Okxpc3Q6OmltcEF0KGludCkgY29uc3QNCisgICAgP2ltcGxlbWVu
dHNDYWxsQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA5MyBOT05BTUUgOyBib29sIEtKUzo6T2Jq
ZWN0SW1wOjppbXBsZW1lbnRzQ2FsbCh2b2lkKSBjb25zdA0KKyAgICA/aW1wbGVtZW50c0NvbnN0
cnVjdEBPYmplY3RJbXBAS0pTQEBVQkVfTlhaIEAgOTQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVj
dEltcDo6aW1wbGVtZW50c0NvbnN0cnVjdCh2b2lkKSBjb25zdA0KKyAgICA/aW1wbGVtZW50c0hh
c0luc3RhbmNlQE9iamVjdEltcEBLSlNAQFVCRV9OWFogQCA5NSBOT05BTUUgOyBib29sIEtKUzo6
T2JqZWN0SW1wOjppbXBsZW1lbnRzSGFzSW5zdGFuY2Uodm9pZCkgY29uc3QNCisgICAgP2luY1N0
YXRlbWVudENvdW50QEludGVycHJldGVyQEtKU0BAUUFFWFhaIEAgOTYgTk9OQU1FIDsgdm9pZCBL
SlM6OkludGVycHJldGVyOjppbmNTdGF0ZW1lbnRDb3VudCh2b2lkKQ0KKyAgICA/aW5oZXJpdHNA
T2JqZWN0SW1wQEtKU0BAUUJFX05QQlVDbGFzc0luZm9AMkBAWiBAIDk3IE5PTkFNRSA7IGJvb2wg
S0pTOjpPYmplY3RJbXA6OmluaGVyaXRzKHN0cnVjdCBLSlM6OkNsYXNzSW5mbyBjb25zdCAqKSBj
b25zdA0KKyAgICA/aW5pdEdsb2JhbE9iamVjdEBJbnRlcnByZXRlckBLSlNAQFFBRVhYWiBAIDk4
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVjdCh2b2lkKQ0K
KyAgICA/aXNOdWxsQFVTdHJpbmdAS0pTQEBRQkVfTlhaIEAgOTkgTk9OQU1FIDsgYm9vbCBLSlM6
OlVTdHJpbmc6OmlzTnVsbCh2b2lkKSBjb25zdA0KKyAgICA/bGVuZ3RoUHJvcGVydHlAS0pTQEBZ
QUFCVklkZW50aWZpZXJAMUBYWiBAIDEwMCBOT05BTUUgOyBjbGFzcyBLSlM6OklkZW50aWZpZXIg
Y29uc3QgJiBLSlM6Omxlbmd0aFByb3BlcnR5KHZvaWQpDQorICAgID9sZXhpY2FsSW50ZXJwcmV0
ZXJARXhlY1N0YXRlQEtKU0BAUUJFUEFWSW50ZXJwcmV0ZXJAMkBYWiBAIDEwMSBOT05BTUUgOyBj
bGFzcyBLSlM6OkludGVycHJldGVyICogS0pTOjpFeGVjU3RhdGU6OmxleGljYWxJbnRlcnByZXRl
cih2b2lkKSBjb25zdA0KKyAgICA/bG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTAyIE5P
TkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6bG9jayh2b2lkKQ0KKyAgICA/bWFya0BPYmpl
Y3RJbXBAS0pTQEBVQUVYWFogQCAxMDMgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6bWFy
ayh2b2lkKQ0KKyAgICA/bWFya2VkQFZhbHVlSW1wQEtKU0BAUUJFX05YWiBAIDEwNCBOT05BTUUg
OyBib29sIEtKUzo6VmFsdWVJbXA6Om1hcmtlZCh2b2lkKSBjb25zdA0KKyAgICA/bWVzc2FnZVBy
b3BlcnR5QEtKU0BAWUFBQlZJZGVudGlmaWVyQDFAWFogQCAxMDUgTk9OQU1FIDsgY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYgS0pTOjptZXNzYWdlUHJvcGVydHkodm9pZCkNCisgICAgP3By
b3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBf
TkBaIEAgMTA2IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6
cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP3Byb3BMaXN0QE9i
amVjdEltcEBLSlNAQFVBRT9BVlJlZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAg
MTA3IE5PTkFNRSA7IGNsYXNzIEtKUzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdEltcDo6cHJv
cExpc3QoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgYm9vbCkNCisgICAgP3Byb3RvdHlwZUBPYmpl
Y3RJbXBAS0pTQEBRQkU/QVZWYWx1ZUAyQFhaIEAgMTA4IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFs
dWUgS0pTOjpPYmplY3RJbXA6OnByb3RvdHlwZSh2b2lkKSBjb25zdA0KKyAgICA/cHVzaEBTY29w
ZUNoYWluQEtKU0BAUUFFWEFCVjEyQEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQgS0pTOjpTY29wZUNo
YWluOjpwdXNoKGNsYXNzIEtKUzo6U2NvcGVDaGFpbiBjb25zdCAmKQ0KKyAgICA/cHVzaEBTY29w
ZUNoYWluQEtKU0BAUUFFWFBBVk9iamVjdEltcEAyQEBaIEAgMTEwIE5PTkFNRSA7IHZvaWQgS0pT
OjpTY29wZUNoYWluOjpwdXNoKGNsYXNzIEtKUzo6T2JqZWN0SW1wICopDQorICAgID9wdXRAT2Jq
ZWN0SW1wQEtKU0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBBQlZWYWx1ZUAy
QEhAWiBAIDExMSBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXQoY2xhc3MgS0pTOjpF
eGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFs
dWUgY29uc3QgJiwgaW50KQ0KKyAgICA/cHV0QE9iamVjdEltcEBLSlNAQFVBRVhQQVZFeGVjU3Rh
dGVAMkBJQUJWVmFsdWVAMkBIQFogQCAxMTIgTk9OQU1FIDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6
cHV0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIHVuc2lnbmVkIGludCwgY2xhc3MgS0pTOjpWYWx1
ZSBjb25zdCAmLCBpbnQpDQorICAgID9wdXREaXJlY3RAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVklk
ZW50aWZpZXJAMkBISEBaIEAgMTEzIE5PTkFNRSA7IHZvaWQgS0pTOjpPYmplY3RJbXA6OnB1dERp
cmVjdChjbGFzcyBLSlM6OklkZW50aWZpZXIgY29uc3QgJiwgaW50LCBpbnQpDQorICAgID9wdXRE
aXJlY3RAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVklkZW50aWZpZXJAMkBQQVZWYWx1ZUltcEAyQEhA
WiBAIDExNCBOT05BTUUgOyB2b2lkIEtKUzo6T2JqZWN0SW1wOjpwdXREaXJlY3QoY2xhc3MgS0pT
OjpJZGVudGlmaWVyIGNvbnN0ICYsIGNsYXNzIEtKUzo6VmFsdWVJbXAgKiwgaW50KQ0KKyAgICA/
cmVmVmFsdWVzQExpc3RAS0pTQEBBQUVYWFogQCAxMTUgTk9OQU1FIDsgdm9pZCBLSlM6Okxpc3Q6
OnJlZlZhbHVlcyh2b2lkKQ0KKyAgICA/cmVsZWFzZUBMaXN0QEtKU0BAQUFFWFhaIEAgMTE2IE5P
TkFNRSA7IHZvaWQgS0pTOjpMaXN0OjpyZWxlYXNlKHZvaWQpDQorICAgID9yZWxlYXNlQFNjb3Bl
Q2hhaW5AS0pTQEBBQUVYWFogQCAxMTcgTk9OQU1FIDsgdm9pZCBLSlM6OlNjb3BlQ2hhaW46OnJl
bGVhc2Uodm9pZCkNCisgICAgP3JlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXNAUm9vdE9iamVjdEBC
aW5kaW5nc0BLSlNAQFFBRVhYWiBAIDExOCBOT05BTUUgOyB2b2lkIEtKUzo6QmluZGluZ3M6OlJv
b3RPYmplY3Q6OnJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXModm9pZCkNCisgICAgP3JlbW92ZU5h
dGl2ZVJlZmVyZW5jZUBCaW5kaW5nc0BLSlNAQFlBWFBBVk9iamVjdEltcEAyQEBaIEAgMTE5IE5P
TkFNRSA7IHZvaWQgS0pTOjpCaW5kaW5nczo6cmVtb3ZlTmF0aXZlUmVmZXJlbmNlKGNsYXNzIEtK
Uzo6T2JqZWN0SW1wICopDQorICAgID9yZXNldFN0YXRlbWVudENvdW50QEludGVycHJldGVyQEtK
U0BAUUFFWFhaIEAgMTIwIE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6cmVzZXRTdGF0
ZW1lbnRDb3VudCh2b2lkKQ0KKyAgICA/cmVzdG9yZUBQcm9wZXJ0eU1hcEBLSlNAQFFBRVhBQlZT
YXZlZFByb3BlcnRpZXNAMkBAWiBAIDEyMSBOT05BTUUgOyB2b2lkIEtKUzo6UHJvcGVydHlNYXA6
OnJlc3RvcmUoY2xhc3MgS0pTOjpTYXZlZFByb3BlcnRpZXMgY29uc3QgJikNCisgICAgP3Jlc3Rv
cmVCdWlsdGluc0BJbnRlcnByZXRlckBLSlNAQFFBRVhBQlZTYXZlZEJ1aWx0aW5zQDJAQFogQCAx
MjIgTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpyZXN0b3JlQnVpbHRpbnMoY2xhc3Mg
S0pTOjpTYXZlZEJ1aWx0aW5zIGNvbnN0ICYpDQorICAgID9zYXZlQFByb3BlcnR5TWFwQEtKU0BA
UUJFWEFBVlNhdmVkUHJvcGVydGllc0AyQEBaIEAgMTIzIE5PTkFNRSA7IHZvaWQgS0pTOjpQcm9w
ZXJ0eU1hcDo6c2F2ZShjbGFzcyBLSlM6OlNhdmVkUHJvcGVydGllcyAmKSBjb25zdA0KKyAgICA/
c2F2ZUJ1aWx0aW5zQEludGVycHJldGVyQEtKU0BAUUJFWEFBVlNhdmVkQnVpbHRpbnNAMkBAWiBA
IDEyNCBOT05BTUUgOyB2b2lkIEtKUzo6SW50ZXJwcmV0ZXI6OnNhdmVCdWlsdGlucyhjbGFzcyBL
SlM6OlNhdmVkQnVpbHRpbnMgJikgY29uc3QNCisgICAgP3NldENvbXBhdE1vZGVASW50ZXJwcmV0
ZXJAS0pTQEBRQUVYVzRDb21wYXRNb2RlQDEyQEBaIEAgMTI1IE5PTkFNRSA7IHZvaWQgS0pTOjpJ
bnRlcnByZXRlcjo6c2V0Q29tcGF0TW9kZShlbnVtIEtKUzo6SW50ZXJwcmV0ZXI6OkNvbXBhdE1v
ZGUpDQorICAgID9zZXRJbnRlcnByZXRlckBSb290T2JqZWN0QEJpbmRpbmdzQEtKU0BAUUFFWFBB
VkludGVycHJldGVyQDNAQFogQCAxMjYgTk9OQU1FIDsgdm9pZCBLSlM6OkJpbmRpbmdzOjpSb290
T2JqZWN0OjpzZXRJbnRlcnByZXRlcihjbGFzcyBLSlM6OkludGVycHJldGVyICopDQorICAgID9z
ZXRQcm90b3R5cGVAT2JqZWN0SW1wQEtKU0BAUUFFWEFCVlZhbHVlQDJAQFogQCAxMjcgTk9OQU1F
IDsgdm9pZCBLSlM6Ok9iamVjdEltcDo6c2V0UHJvdG90eXBlKGNsYXNzIEtKUzo6VmFsdWUgY29u
c3QgJikNCisgICAgP3NldFNob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRlckBLSlNAQFNB
WF9OQFogQCAxMjggTk9OQU1FIDsgdm9pZCBLSlM6OkludGVycHJldGVyOjpzZXRTaG91bGRQcmlu
dEV4Y2VwdGlvbnMoYm9vbCkNCisgICAgP3Nob3VsZFByaW50RXhjZXB0aW9uc0BJbnRlcnByZXRl
ckBLSlNAQFNBX05YWiBAIDEyOSBOT05BTUUgOyBib29sIEtKUzo6SW50ZXJwcmV0ZXI6OnNob3Vs
ZFByaW50RXhjZXB0aW9ucyh2b2lkKQ0KKyAgICA/dG9BcnJheUluZGV4QFVTdHJpbmdAS0pTQEBR
QkVJUEFfTkBaIEAgMTMwIE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlVTdHJpbmc6OnRvQXJy
YXlJbmRleChib29sICopIGNvbnN0DQorICAgID90b0Jvb2xlYW5AT2JqZWN0SW1wQEtKU0BAVUJF
X05QQVZFeGVjU3RhdGVAMkBAWiBAIDEzMSBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0SW1wOjp0
b0Jvb2xlYW4oY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3RvSW50MzJAVmFs
dWVJbXBAS0pTQEBRQkVIUEFWRXhlY1N0YXRlQDJAQFogQCAxMzIgTk9OQU1FIDsgaW50IEtKUzo6
VmFsdWVJbXA6OnRvSW50MzIoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisgICAgP3Rv
SW50ZWdlckBWYWx1ZUltcEBLSlNAQFFCRU5QQVZFeGVjU3RhdGVAMkBAWiBAIDEzMyBOT05BTUUg
OyBkb3VibGUgS0pTOjpWYWx1ZUltcDo6dG9JbnRlZ2VyKGNsYXNzIEtKUzo6RXhlY1N0YXRlICop
IGNvbnN0DQorICAgID90b051bWJlckBPYmplY3RJbXBAS0pTQEBVQkVOUEFWRXhlY1N0YXRlQDJA
QFogQCAxMzQgTk9OQU1FIDsgZG91YmxlIEtKUzo6T2JqZWN0SW1wOjp0b051bWJlcihjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9PYmplY3RAT2JqZWN0SW1wQEtKU0BAVUJF
P0FWT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFogQCAxMzUgTk9OQU1FIDsgY2xhc3MgS0pTOjpP
YmplY3QgS0pTOjpPYmplY3RJbXA6OnRvT2JqZWN0KGNsYXNzIEtKUzo6RXhlY1N0YXRlICopIGNv
bnN0DQorICAgID90b1ByaW1pdGl2ZUBPYmplY3RJbXBAS0pTQEBVQkU/QVZWYWx1ZUAyQFBBVkV4
ZWNTdGF0ZUAyQFc0VHlwZUAyQEBaIEAgMTM2IE5PTkFNRSA7IGNsYXNzIEtKUzo6VmFsdWUgS0pT
OjpPYmplY3RJbXA6OnRvUHJpbWl0aXZlKGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGVudW0gS0pT
OjpUeXBlKSBjb25zdA0KKyAgICA/dG9TdHJpbmdAT2JqZWN0SW1wQEtKU0BAVUJFP0FWVVN0cmlu
Z0AyQFBBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM3IE5PTkFNRSA7IGNsYXNzIEtKUzo6VVN0cmluZyBL
SlM6Ok9iamVjdEltcDo6dG9TdHJpbmcoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKikgY29uc3QNCisg
ICAgP3RvVUludDE2QFZhbHVlSW1wQEtKU0BAUUJFR1BBVkV4ZWNTdGF0ZUAyQEBaIEAgMTM4IE5P
TkFNRSA7IHVuc2lnbmVkIHNob3J0IEtKUzo6VmFsdWVJbXA6OnRvVUludDE2KGNsYXNzIEtKUzo6
RXhlY1N0YXRlICopIGNvbnN0DQorICAgID90b1VJbnQzMkBWYWx1ZUltcEBLSlNAQEVCRV9OQUFJ
QFogQCAxMzkgTk9OQU1FIDsgYm9vbCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQzMih1bnNpZ25lZCBp
bnQgJikgY29uc3QNCisgICAgP3RvVUludDMyQFZhbHVlSW1wQEtKU0BAUUJFSVBBVkV4ZWNTdGF0
ZUAyQEBaIEAgMTQwIE5PTkFNRSA7IHVuc2lnbmVkIGludCBLSlM6OlZhbHVlSW1wOjp0b1VJbnQz
MihjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqKSBjb25zdA0KKyAgICA/dG9VTG9uZ0BVU3RyaW5nQEtK
U0BAUUJFS1BBX05AWiBAIDE0MSBOT05BTUUgOyB1bnNpZ25lZCBsb25nIEtKUzo6VVN0cmluZzo6
dG9VTG9uZyhib29sICopIGNvbnN0DQorICAgID90eXBlQE9iamVjdEltcEBLSlNAQFVCRT9BVzRU
eXBlQDJAWFogQCAxNDIgTk9OQU1FIDsgZW51bSBLSlM6OlR5cGUgS0pTOjpPYmplY3RJbXA6OnR5
cGUodm9pZCkgY29uc3QNCisgICAgP3VubG9ja0BJbnRlcnByZXRlckBLSlNAQFNBWFhaIEAgMTQz
IE5PTkFNRSA7IHZvaWQgS0pTOjpJbnRlcnByZXRlcjo6dW5sb2NrKHZvaWQpDQorICAgID92YWx1
ZUBTdHJpbmdAS0pTQEBRQkU/QVZVU3RyaW5nQDJAWFogQCAxNDQgTk9OQU1FIDsgY2xhc3MgS0pT
OjpVU3RyaW5nIEtKUzo6U3RyaW5nOjp2YWx1ZSh2b2lkKSBjb25zdA0KKyAgICA/dmlydHVhbF9o
b29rQEludGVycHJldGVyQEtKU0BATUFFWEhQQVhAWiBAIDE0NSBOT05BTUUgOyB2b2lkIEtKUzo6
SW50ZXJwcmV0ZXI6OnZpcnR1YWxfaG9vayhpbnQsIHZvaWQgKikNCisgICAgTlBOX0NyZWF0ZU9i
amVjdCBAIDE0NiBOT05BTUUNCisgICAgTlBOX0V2YWx1YXRlIEAgMTQ3IE5PTkFNRQ0KKyAgICBO
UE5fR2V0SW50SWRlbnRpZmllciBAIDE0OCBOT05BTUUNCisgICAgTlBOX0dldFByb3BlcnR5IEAg
MTQ5IE5PTkFNRQ0KKyAgICBOUE5fR2V0U3RyaW5nSWRlbnRpZmllciBAIDE1MCBOT05BTUUNCisg
ICAgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzIEAgMTUxIE5PTkFNRQ0KKyAgICBOUE5fSGFzTWV0
aG9kIEAgMTUyIE5PTkFNRQ0KKyAgICBOUE5fSGFzUHJvcGVydHkgQCAxNTMgTk9OQU1FDQorICAg
IE5QTl9JZGVudGlmaWVySXNTdHJpbmcgQCAxNTQgTk9OQU1FDQorICAgIE5QTl9JbnRGcm9tSWRl
bnRpZmllciBAIDE1NSBOT05BTUUNCisgICAgTlBOX0ludm9rZSBAIDE1NiBOT05BTUUNCisgICAg
TlBOX0ludm9rZURlZmF1bHQgQCAxNTcgTk9OQU1FDQorICAgIE5QTl9SZWxlYXNlT2JqZWN0IEAg
MTU4IE5PTkFNRQ0KKyAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSBAIDE1OSBOT05BTUUNCisg
ICAgTlBOX1JlbW92ZVByb3BlcnR5IEAgMTYwIE5PTkFNRQ0KKyAgICBOUE5fUmV0YWluT2JqZWN0
IEAgMTYxIE5PTkFNRQ0KKyAgICBOUE5fU2V0RXhjZXB0aW9uIEAgMTYyIE5PTkFNRQ0KKyAgICBO
UE5fU2V0UHJvcGVydHkgQCAxNjMgTk9OQU1FDQorICAgIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIg
QCAxNjQgTk9OQU1FDQorICAgIF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0IEAgMTY1IE5PTkFNRQ0K
KyAgICBranNfc3RydG9kIEAgMTY2IE5PTkFNRQ0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2dy
b3VwL0VBQkkvSmF2YXNjcmlwdENvcmVVLmRlZg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL2dyb3VwL0VBQkkvSmF2YXNjcmlwdENvcmVVLmRlZgkocmV2aXNpb24gMTcwNjkpDQorKysg
SmF2YVNjcmlwdENvcmUvZ3JvdXAvRUFCSS9KYXZhc2NyaXB0Q29yZVUuZGVmCSh3b3JraW5nIGNv
cHkpDQpAQCAtMSwzOTAgKzEsNDM0IEBADQogRVhQT1JUUw0KLQlfWk4zS0pTMTBJZGVudGlmaWVy
M2FkZEVQS2MgQCAxIE5PTkFNRQ0KLQlfWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQTlNfN1VTdHJp
bmczUmVwRSBAIDIgTk9OQU1FDQotCV9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3Ry
aW5nM1JlcEVQS05TXzVVQ2hhckVpIEAgMyBOT05BTUUNCi0JX1pOM0tKUzEwSWRlbnRpZmllcjVl
cXVhbEVQTlNfN1VTdHJpbmczUmVwRVBLYyBAIDQgTk9OQU1FDQotCV9aTjNLSlMxMFNjb3BlQ2hh
aW40cHVzaEVQTlNfOU9iamVjdEltcEUgQCA1IE5PTkFNRQ0KLQlfWk4zS0pTMTBTY29wZUNoYWlu
N3JlbGVhc2VFdiBAIDYgTk9OQU1FDQotCV9aTjNLSlMxMFNjb3BlQ2hhaW5hU0VSS1MwXyBAIDcg
Tk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTBnbG9iYWxFeGVjRXYgQCA4IE5PTkFNRQ0K
LQlfWk4zS0pTMTFJbnRlcnByZXRlcjEydmlydHVhbF9ob29rRWlQdiBAIDkgTk9OQU1FDQotCV9a
TjNLSlMxMUludGVycHJldGVyMTNzZXRDb21wYXRNb2RlRU5TMF8xMENvbXBhdE1vZGVFIEAgMTAg
Tk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTVyZXN0b3JlQnVpbHRpbnNFUktOU18xM1Nh
dmVkQnVpbHRpbnNFIEAgMTEgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyMTZpbml0R2xv
YmFsT2JqZWN0RXYgQCAxMiBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxN2luY1N0YXRl
bWVudENvdW50RXYgQCAxMyBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIxOXJlc2V0U3Rh
dGVtZW50Q291bnRFdiBAIDE0IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjIxc2hvdWxk
UHJpbnRFeGNlcHRpb25zRXYgQCAxNSBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXIyNHNl
dFNob3VsZFByaW50RXhjZXB0aW9uc0ViIEAgMTYgTk9OQU1FDQotCV9aTjNLSlMxMUludGVycHJl
dGVyNGxvY2tFdiBAIDE3IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjZ1bmxvY2tFdiBA
IDE4IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5n
RVJLTlNfNVZhbHVlRVMzXyBAIDE5IE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFs
dWF0ZUVSS05TXzdVU3RyaW5nRWlTM19SS05TXzVWYWx1ZUUgQCAyMCBOT05BTUUNCi0JX1pOM0tK
UzExSW50ZXJwcmV0ZXJDMUVSS05TXzZPYmplY3RFIEAgMjEgTk9OQU1FDQotCV9aTjNLSlMxMUlu
dGVycHJldGVyQzJFUktOU182T2JqZWN0RSBAIDIyIE5PTkFNRQ0KLQlfWk4zS0pTMTFJbnRlcnBy
ZXRlckQwRXYgQCAyMyBOT05BTUUNCi0JX1pOM0tKUzExSW50ZXJwcmV0ZXJEMUV2IEAgMjQgTk9O
QU1FDQotCV9aTjNLSlMxMUludGVycHJldGVyRDJFdiBAIDI1IE5PTkFNRQ0KLQlfWk4zS0pTMTFQ
cm9wZXJ0eU1hcDdyZXN0b3JlRVJLTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMjYgTk9OQU1FDQot
CV9aTjNLSlMxNGxlbmd0aFByb3BlcnR5RXYgQCAyNyBOT05BTUUNCi0JX1pOM0tKUzE1bWVzc2Fn
ZVByb3BlcnR5RXYgQCAyOCBOT05BTUUNCi0JX1pOM0tKUzRMaXN0MTFkZXJlZlZhbHVlc0V2IEAg
MjkgTk9OQU1FDQotCV9aTjNLSlM0TGlzdDZhcHBlbmRFUE5TXzhWYWx1ZUltcEUgQCAzMCBOT05B
TUUNCi0JX1pOM0tKUzRMaXN0N3JlbGVhc2VFdiBAIDMxIE5PTkFNRQ0KLQlfWk4zS0pTNExpc3Q5
cmVmVmFsdWVzRXYgQCAzMiBOT05BTUUNCi0JX1pOM0tKUzRMaXN0QzFFdiBAIDMzIE5PTkFNRQ0K
LQlfWk4zS0pTNExpc3RDMkV2IEAgMzQgTk9OQU1FDQotCV9aTjNLSlM0TGlzdGFTRVJLUzBfIEAg
MzUgTk9OQU1FDQotCV9aTjNLSlM0TnVsbEMxRXYgQCAzNiBOT05BTUUNCi0JX1pOM0tKUzROdWxs
QzJFdiBAIDM3IE5PTkFNRQ0KLQlfWk4zS0pTNUVycm9yNmNyZWF0ZUVQTlNfOUV4ZWNTdGF0ZUVO
U185RXJyb3JUeXBlRVBLY2lpUEtOU183VVN0cmluZ0UgQCAzOCBOT05BTUUNCi0JX1pOM0tKUzVW
YWx1ZUMxRVBOU184VmFsdWVJbXBFIEAgMzkgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVDMUVSS1Mw
XyBAIDQwIE5PTkFNRQ0KLQlfWk4zS0pTNVZhbHVlQzJFUE5TXzhWYWx1ZUltcEUgQCA0MSBOT05B
TUUNCi0JX1pOM0tKUzVWYWx1ZUMyRVJLUzBfIEAgNDIgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVE
MUV2IEAgNDMgTk9OQU1FDQotCV9aTjNLSlM1VmFsdWVEMkV2IEAgNDQgTk9OQU1FDQotCV9aTjNL
SlM1VmFsdWVhU0VSS1MwXyBAIDQ1IE5PTkFNRQ0KLQlfWk4zS0pTNkxvb2t1cDlmaW5kRW50cnlF
UEtOU185SGFzaFRhYmxlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDQ2IE5PTkFNRQ0KLQlfWk4zS0pT
Nk51bWJlckMxRWQgQCA0NyBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVpIEAgNDggTk9OQU1F
DQotCV9aTjNLSlM2TnVtYmVyQzFFaiBAIDQ5IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMxRWwg
QCA1MCBOT05BTUUNCi0JX1pOM0tKUzZOdW1iZXJDMUVtIEAgNTEgTk9OQU1FDQotCV9aTjNLSlM2
TnVtYmVyQzJFZCBAIDUyIE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRWkgQCA1MyBOT05BTUUN
Ci0JX1pOM0tKUzZOdW1iZXJDMkVqIEAgNTQgTk9OQU1FDQotCV9aTjNLSlM2TnVtYmVyQzJFbCBA
IDU1IE5PTkFNRQ0KLQlfWk4zS0pTNk51bWJlckMyRW0gQCA1NiBOT05BTUUNCi0JX1pOM0tKUzZP
YmplY3QxMWR5bmFtaWNDYXN0RVJLTlNfNVZhbHVlRSBAIDU3IE5PTkFNRQ0KLQlfWk4zS0pTNk9i
amVjdDRjYWxsRVBOU185RXhlY1N0YXRlRVJTMF9SS05TXzRMaXN0RSBAIDU4IE5PTkFNRQ0KLQlf
Wk4zS0pTNlN0cmluZ0MxRVJLTlNfN1VTdHJpbmdFIEAgNTkgTk9OQU1FDQotCV9aTjNLSlM2U3Ry
aW5nQzJFUktOU183VVN0cmluZ0UgQCA2MCBOT05BTUUNCi0JX1pOM0tKUzdCb29sZWFuQzFFYiBA
IDYxIE5PTkFNRQ0KLQlfWk4zS0pTN0Jvb2xlYW5DMkViIEAgNjIgTk9OQU1FDQotCV9aTjNLSlM3
Q1N0cmluZ2FTRVBLYyBAIDYzIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmcxMGF0dGFjaE51bGxF
diBAIDY0IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmczUmVwMTNjcmVhdGVDb3B5aW5nRVBLTlNf
NVVDaGFyRWkgQCA2NSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nM1JlcDZjcmVhdGVFUE5TXzVV
Q2hhckVpIEAgNjYgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzNSZXA3ZGVzdHJveUV2IEAgNjcg
Tk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZzRmcm9tRWwgQCA2OCBOT05BTUUNCi0JX1pOM0tKUzdV
U3RyaW5nNmFwcGVuZEVQS2MgQCA2OSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nNmFwcGVuZEVS
S1MwXyBAIDcwIE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMUVQS05TXzVVQ2hhckVpIEAgNzEg
Tk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRVBLYyBAIDcyIE5PTkFNRQ0KLQlfWk4zS0pTN1VT
dHJpbmdDMUVQTlNfNVVDaGFyRWliIEAgNzMgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRVJL
UzBfUzJfIEAgNzQgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MxRWMgQCA3NSBOT05BTUUNCi0J
X1pOM0tKUzdVU3RyaW5nQzFFdiBAIDc2IE5PTkFNRQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVQS05T
XzVVQ2hhckVpIEAgNzcgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRVBLYyBAIDc4IE5PTkFN
RQ0KLQlfWk4zS0pTN1VTdHJpbmdDMkVQTlNfNVVDaGFyRWliIEAgNzkgTk9OQU1FDQotCV9aTjNL
SlM3VVN0cmluZ0MyRVJLUzBfUzJfIEAgODAgTk9OQU1FDQotCV9aTjNLSlM3VVN0cmluZ0MyRWMg
QCA4MSBOT05BTUUNCi0JX1pOM0tKUzdVU3RyaW5nQzJFdiBAIDgyIE5PTkFNRQ0KLQlfWk4zS0pT
N1VTdHJpbmdhU0VSS1MwXyBAIDgzIE5PTkFNRQ0KLQlfWk4zS0pTOFZhbHVlSW1wZGxFUHYgQCA4
NCBOT05BTUUNCi0JX1pOM0tKUzhWYWx1ZUltcG53RWogQCA4NSBOT05BTUUNCi0JX1pOM0tKUzlD
b2xsZWN0b3I3Y29sbGVjdEV2IEAgODYgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wMTFoYXNJ
bnN0YW5jZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzVWYWx1ZUUgQCA4NyBOT05BTUUNCi0JX1pOM0tK
UzlPYmplY3RJbXAxMnNldFByb3RvdHlwZUVSS05TXzVWYWx1ZUUgQCA4OCBOT05BTUUNCi0JX1pO
M0tKUzlPYmplY3RJbXAxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRSBAIDg5IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlF
UE5TXzlFeGVjU3RhdGVFaiBAIDkwIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDE5ZGVsZXRl
QWxsUHJvcGVydGllc0VQTlNfOUV4ZWNTdGF0ZUUgQCA5MSBOT05BTUUNCi0JX1pOM0tKUzlPYmpl
Y3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfNVZhbHVlRWkg
QCA5MiBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRWpSS05T
XzVWYWx1ZUVpIEAgOTMgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wNGNhbGxFUE5TXzlFeGVj
U3RhdGVFUk5TXzZPYmplY3RFUktOU180TGlzdEUgQCA5NCBOT05BTUUNCi0JX1pOM0tKUzlPYmpl
Y3RJbXA0bWFya0V2IEAgOTUgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOHByb3BMaXN0RVBO
U185RXhlY1N0YXRlRWIgQCA5NiBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXA5Y29uc3RydWN0
RVBOU185RXhlY1N0YXRlRVJLTlNfNExpc3RFIEAgOTcgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0
SW1wOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RVJLTlNfN1VTdHJpbmdFaSBA
IDk4IE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZp
ZXJFUE5TXzhWYWx1ZUltcEVpIEAgOTkgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wOXB1dERp
cmVjdEVSS05TXzEwSWRlbnRpZmllckVpaSBAIDEwMCBOT05BTUUNCi0JX1pOM0tKUzlPYmplY3RJ
bXBDMUVSS05TXzZPYmplY3RFIEAgMTAxIE5PTkFNRQ0KLQlfWk4zS0pTOU9iamVjdEltcEMxRXYg
QCAxMDIgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wQzJFUktOU182T2JqZWN0RSBAIDEwMyBO
T05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBDMkV2IEAgMTA0IE5PTkFNRQ0KLQlfWk4zS0pTOU9i
amVjdEltcEQwRXYgQCAxMDUgTk9OQU1FDQotCV9aTjNLSlM5T2JqZWN0SW1wRDFFdiBAIDEwNiBO
T05BTUUNCi0JX1pOM0tKUzlPYmplY3RJbXBEMkV2IEAgMTA3IE5PTkFNRQ0KLQlfWk4zS0pTOVVu
ZGVmaW5lZEMxRXYgQCAxMDggTk9OQU1FDQotCV9aTjNLSlM5VW5kZWZpbmVkQzJFdiBAIDEwOSBO
T05BTUUNCi0JX1pOM0tKU2VxRVJLTlNfN1VTdHJpbmdFUEtjIEAgMTEwIE5PTkFNRQ0KLQlfWk5L
M0tKUzExSW50ZXJwcmV0ZXIxMGNvbXBhdE1vZGVFdiBAIDExMSBOT05BTUUNCi0JX1pOSzNLSlMx
MUludGVycHJldGVyMTJidWlsdGluQXJyYXlFdiBAIDExMiBOT05BTUUNCi0JX1pOSzNLSlMxMUlu
dGVycHJldGVyMTJnbG9iYWxPYmplY3RFdiBAIDExMyBOT05BTUUNCi0JX1pOSzNLSlMxMUludGVy
cHJldGVyMTJzYXZlQnVpbHRpbnNFUk5TXzEzU2F2ZWRCdWlsdGluc0UgQCAxMTQgTk9OQU1FDQot
CV9aTkszS0pTMTFJbnRlcnByZXRlcjEzYnVpbHRpbk9iamVjdEV2IEAgMTE1IE5PTkFNRQ0KLQlf
Wk5LM0tKUzExSW50ZXJwcmV0ZXIxNWJ1aWx0aW5GdW5jdGlvbkV2IEAgMTE2IE5PTkFNRQ0KLQlf
Wk5LM0tKUzExSW50ZXJwcmV0ZXIyMmJ1aWx0aW5PYmplY3RQcm90b3R5cGVFdiBAIDExNyBOT05B
TUUNCi0JX1pOSzNLSlMxMVByb3BlcnR5TWFwM2dldEVSS05TXzEwSWRlbnRpZmllckUgQCAxMTgg
Tk9OQU1FDQotCV9aTkszS0pTMTFQcm9wZXJ0eU1hcDRzYXZlRVJOU18xNVNhdmVkUHJvcGVydGll
c0UgQCAxMTkgTk9OQU1FDQotCV9aTkszS0pTNExpc3Q1aW1wQXRFaSBAIDEyMCBOT05BTUUNCi0J
X1pOSzNLSlM0TGlzdDhjb3B5VGFpbEV2IEAgMTIxIE5PTkFNRQ0KLQlfWk5LM0tKUzZPYmplY3Qx
MWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDEyMiBOT05B
TUUNCi0JX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTIz
IE5PTkFNRQ0KLQlfWk5LM0tKUzZPYmplY3QxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRSBAIDEyNCBOT05BTUUNCi0JX1pOSzNLSlM2U3RyaW5nNXZhbHVl
RXYgQCAxMjUgTk9OQU1FDQotCV9aTkszS0pTN1VTdHJpbmcxMnRvQXJyYXlJbmRleEVQYiBAIDEy
NiBOT05BTUUNCi0JX1pOSzNLSlM3VVN0cmluZzVhc2NpaUV2IEAgMTI3IE5PTkFNRQ0KLQlfWk5L
M0tKUzdVU3RyaW5nNmlzTnVsbEV2IEAgMTI4IE5PTkFNRQ0KLQlfWk5LM0tKUzdVU3RyaW5nN3Rv
VUxvbmdFUGIgQCAxMjkgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wMTZkaXNwYXRjaFRvT2Jq
ZWN0RVBOU185RXhlY1N0YXRlRSBAIDEzMCBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA2bWFy
a2VkRXYgQCAxMzEgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wN3RvSW50MzJFUE5TXzlFeGVj
U3RhdGVFIEAgMTMyIE5PTkFNRQ0KLQlfWk5LM0tKUzhWYWx1ZUltcDh0b1VJbnQxNkVQTlNfOUV4
ZWNTdGF0ZUUgQCAxMzMgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wOHRvVUludDMyRVBOU185
RXhlY1N0YXRlRSBAIDEzNCBOT05BTUUNCi0JX1pOSzNLSlM4VmFsdWVJbXA4dG9VSW50MzJFUmog
QCAxMzUgTk9OQU1FDQotCV9aTkszS0pTOFZhbHVlSW1wOXRvSW50ZWdlckVQTlNfOUV4ZWNTdGF0
ZUUgQCAxMzYgTk9OQU1FDQotCV9aTkszS0pTOUV4ZWNTdGF0ZTE4bGV4aWNhbEludGVycHJldGVy
RXYgQCAxMzcgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDExaGFzUHJvcGVydHlFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTM4IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmpl
Y3RJbXAxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxMzkgTk9OQU1FDQotCV9aTksz
S0pTOU9iamVjdEltcDExdG9QcmltaXRpdmVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTQw
IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAxMmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0
ZUVOU180VHlwZUUgQCAxNDEgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE0aGFzT3duUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTQyIE5PTkFNRQ0KLQlf
Wk5LM0tKUzlPYmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhlY1N0YXRlRWogQCAxNDMg
Tk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDE0aW1wbGVtZW50c0NhbGxFdiBAIDE0NCBOT05B
TUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wMTlpbXBsZW1lbnRzQ29uc3RydWN0RXYgQCAxNDUgTk9O
QU1FDQotCV9aTkszS0pTOU9iamVjdEltcDIxaW1wbGVtZW50c0hhc0luc3RhbmNlRXYgQCAxNDYg
Tk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDNnZXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFIEAgMTQ3IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185RXhl
Y1N0YXRlRWogQCAxNDggTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDR0eXBlRXYgQCAxNDkg
Tk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDZjYW5QdXRFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFIEAgMTUwIE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA4aW5oZXJpdHNF
UEtOU185Q2xhc3NJbmZvRSBAIDE1MSBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRvTnVt
YmVyRVBOU185RXhlY1N0YXRlRSBAIDE1MiBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOHRv
T2JqZWN0RVBOU185RXhlY1N0YXRlRSBAIDE1MyBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1w
OHRvU3RyaW5nRVBOU185RXhlY1N0YXRlRSBAIDE1NCBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0
SW1wOWNsYXNzSW5mb0V2IEAgMTU1IE5PTkFNRQ0KLQlfWk5LM0tKUzlPYmplY3RJbXA5Y2xhc3NO
YW1lRXYgQCAxNTYgTk9OQU1FDQotCV9aTkszS0pTOU9iamVjdEltcDlwcm90b3R5cGVFdiBAIDE1
NyBOT05BTUUNCi0JX1pOSzNLSlM5T2JqZWN0SW1wOXRvQm9vbGVhbkVQTlNfOUV4ZWNTdGF0ZUUg
QCAxNTggTk9OQU1FDQotCV9aVElOM0tKUzEwQXNzaWduTm9kZUUgQCAxNTkgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBCb29sZWFuSW1wRSBAIDE2MCBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMERlbGV0ZU5vZGVFIEAgMTYxIE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzEwTmVnYXRlTm9kZUUgQCAxNjIgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTBOdW1iZXJOb2RlRSBAIDE2MyBOT05BTUUgREFUQSAxMiA7
ICM8VEk+Iw0KLQlfWlRJTjNLSlMxMFByZWZpeE5vZGVFIEAgMTY0IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzEwUmVnRXhwTm9kZUUgQCAxNjUgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTBSZXR1cm5Ob2RlRSBAIDE2NiBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxMFN0cmluZ05vZGVFIEAgMTY3IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzEwU3dpdGNoTm9kZUUgQCAxNjggTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTBUeXBlT2ZOb2RlRSBAIDE2OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMUJpdE9wZXJOb2RlRSBAIDE3MCBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMUJvb2xlYW5Ob2RlRSBAIDE3MSBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMURvV2hpbGVOb2RlRSBAIDE3MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMUVsZW1lbnROb2RlRSBAIDE3MyBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMUZpbmFsbHlOb2RlRSBAIDE3NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDE3NSBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMUludGVycHJldGVyRSBAIDE3NiBOT05BTUUgREFUQSA4IDsgIzxUST4j
DQotCV9aVElOM0tKUzExTWF0aEZ1bmNJbXBFIEAgMTc3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzExTmV3RXhwck5vZGVFIEAgMTc4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzExUG9zdGZpeE5vZGVFIEAgMTc5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMTgwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzExVmFyRGVjbE5vZGVFIEAgMTgxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzEyQ29udGludWVOb2RlRSBAIDE4MiBOT05BTUUgREFUQSAxMiA7ICM8VEk+
Iw0KLQlfWlRJTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAxODMgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTJGdW5jRXhwck5vZGVFIEAgMTg0IE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzEyUHJvcGVydHlOb2RlRSBAIDE4NSBOT05BTUUgREFUQSAxMiA7ICM8
VEk+Iw0KLQlfWlRJTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAxODYgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTJVbmRlZmluZWRJbXBFIEAgMTg3IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzEzQWNjZXNzb3JOb2RlMUUgQCAxODggTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDE4OSBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMTkwIE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzQXJndW1lbnRzTm9kZUUgQCAxOTEgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNDYXNlQmxvY2tOb2RlRSBAIDE5MiBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM0RhdGVPYmplY3RJbXBFIEAgMTkzIE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzR2xvYmFsRnVuY0ltcEUgQCAxOTQgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDE5NSBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxM1BhcmFtZXRlck5vZGVFIEAgMTk2
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzEzU3RhdGVtZW50Tm9kZUUgQCAx
OTcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTNVbmFyeVBsdXNOb2RlRSBA
IDE5OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFycmF5T2JqZWN0SW1w
RSBAIDE5OSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEFzc2lnbkV4cHJO
b2RlRSBAIDIwMCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNEJpdHdpc2VO
b3ROb2RlRSBAIDIwMSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNENhc2VD
bGF1c2VOb2RlRSBAIDIwMiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNENs
YXVzZUxpc3ROb2RlRSBAIDIwMyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
NEVycm9yT2JqZWN0SW1wRSBAIDIwNCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlMxNExvZ2ljYWxOb3ROb2RlRSBAIDIwNSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJ
TjNLSlMxNE5hdGl2ZUVycm9ySW1wRSBAIDIwNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxNFJlbGF0aW9uYWxOb2RlRSBAIDIwNyBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlMxNUNvbmRpdGlvbmFsTm9kZUUgQCAyMDggTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTVOdW1iZXJPYmplY3RJbXBFIEAgMjA5IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDIxMCBOT05BTUUgREFUQSAx
MiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAyMTEgTk9OQU1FIERB
VEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAgMjEyIE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE1VmFyRGVjbExpc3ROb2RlRSBAIDIxMyBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAg
MjE0IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2QXJyYXlJbnN0YW5jZUlt
cEUgQCAyMTUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTZCb29sZWFuT2Jq
ZWN0SW1wRSBAIDIxNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxNkRhdGVQ
cm90b0Z1bmNJbXBFIEAgMjE3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE2
RGF0ZVByb3RvdHlwZUltcEUgQCAyMTggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4z
S0pTMTZGdW5jdGlvbkJvZHlOb2RlRSBAIDIxOSBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlf
WlRJTjNLSlMxNkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMjIwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAyMjEgTk9OQU1FIERBVEEgMTIgOyAj
PFRJPiMNCi0JX1pUSU4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAyMjIgTk9OQU1FIERBVEEg
MTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdBcnJheVByb3RvdHlwZUltcEUgQCAyMjMgTk9OQU1F
IERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAyMjQg
Tk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdEYXRlT2JqZWN0RnVuY0ltcEUg
QCAyMjUgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdFcnJvclByb3RvRnVu
Y0ltcEUgQCAyMjYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdFeHByU3Rh
dGVtZW50Tm9kZUUgQCAyMjcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMTdG
dW5jdGlvbk9iamVjdEltcEUgQCAyMjggTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4z
S0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAyMjkgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0J
X1pUSU4zS0pTMTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAyMzAgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTMTdTdHJpbmdJbnN0YW5jZUltcEUgQCAyMzEgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMjMyIE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBAIDIzMyBO
T05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOE9iamVjdFByb3RvRnVuY0ltcEUg
QCAyMzQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMThSZWdFeHBQcm90b0Z1
bmNJbXBFIEAgMjM1IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE4U291cmNl
RWxlbWVudHNOb2RlRSBAIDIzNiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMx
OFN0cmluZ1Byb3RvRnVuY0ltcEUgQCAyMzcgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAgMjM4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzE5Qm9vbGVhblByb3RvRnVuY0ltcEUgQCAyMzkgTk9OQU1FIERBVEEgMTIg
OyAjPFRJPiMNCi0JX1pUSU4zS0pTMTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBAIDI0MCBOT05BTUUg
REFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAgMjQx
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzE5U3RyaW5nT2JqZWN0RnVuY0lt
cEUgQCAyNDIgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMjBGdW5jdGlvblBy
b3RvRnVuY0ltcEUgQCAyNDMgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTMjBG
dW5jdGlvblByb3RvdHlwZUltcEUgQCAyNDQgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pU
SU4zS0pTNE5vZGVFIEAgMjQ1IE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pUSU4zS0pTNklm
Tm9kZUUgQCAyNDYgTk9OQU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTN0FkZE5vZGVF
IEAgMjQ3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzdGb3JOb2RlRSBAIDI0
OCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM3TnVsbEltcEUgQCAyNDkgTk9O
QU1FIERBVEEgMTIgOyAjPFRJPiMNCi0JX1pUSU4zS0pTN1RyeU5vZGVFIEAgMjUwIE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzhEZWJ1Z2dlckUgQCAyNTEgTk9OQU1FIERBVEEg
OCA7ICM8VEk+Iw0KLQlfWlRJTjNLSlM4TXVsdE5vZGVFIEAgMjUyIE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzhOdWxsTm9kZUUgQCAyNTMgTk9OQU1FIERBVEEgMTIgOyAjPFRJ
PiMNCi0JX1pUSU4zS0pTOFRoaXNOb2RlRSBAIDI1NCBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0K
LQlfWlRJTjNLSlM4VmFsdWVJbXBFIEAgMjU1IE5PTkFNRSBEQVRBIDggOyAjPFRJPiMNCi0JX1pU
SU4zS0pTOFZvaWROb2RlRSBAIDI1NiBOT05BTUUgREFUQSAxMiA7ICM8VEk+Iw0KLQlfWlRJTjNL
SlM4V2l0aE5vZGVFIEAgMjU3IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlB
cnJheU5vZGVFIEAgMjU4IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlCbG9j
a05vZGVFIEAgMjU5IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlCcmVha05v
ZGVFIEAgMjYwIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlDYXRjaE5vZGVF
IEAgMjYxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlDb21tYU5vZGVFIEAg
MjYyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlFcXVhbE5vZGVFIEAgMjYz
IE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlGb3JJbk5vZGVFIEAgMjY0IE5P
TkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlHcm91cE5vZGVFIEAgMjY1IE5PTkFN
RSBEQVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlMYWJlbE5vZGVFIEAgMjY2IE5PTkFNRSBE
QVRBIDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlOdW1iZXJJbXBFIEAgMjY3IE5PTkFNRSBEQVRB
IDEyIDsgIzxUST4jDQotCV9aVElOM0tKUzlPYmplY3RJbXBFIEAgMjY4IE5PTkFNRSBEQVRBIDEy
IDsgIzxUST4jDQotCV9aVElOM0tKUzlSZWdFeHBJbXBFIEAgMjY5IE5PTkFNRSBEQVRBIDEyIDsg
IzxUST4jDQotCV9aVElOM0tKUzlTaGlmdE5vZGVFIEAgMjcwIE5PTkFNRSBEQVRBIDEyIDsgIzxU
ST4jDQotCV9aVElOM0tKUzlTdHJpbmdJbXBFIEAgMjcxIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4j
DQotCV9aVElOM0tKUzlUaHJvd05vZGVFIEAgMjcyIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQot
CV9aVElOM0tKUzlXaGlsZU5vZGVFIEAgMjczIE5PTkFNRSBEQVRBIDEyIDsgIzxUST4jDQotCV9a
VFZOM0tKUzEwQXNzaWduTm9kZUUgQCAyNzQgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTBCb29sZWFuSW1wRSBAIDI3NSBOT05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRW
TjNLSlMxMERlbGV0ZU5vZGVFIEAgMjc2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzEwTmVnYXRlTm9kZUUgQCAyNzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTBOdW1iZXJOb2RlRSBAIDI3OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxMFByZWZpeE5vZGVFIEAgMjc5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzEwUmVnRXhwTm9kZUUgQCAyODAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTBSZXR1cm5Ob2RlRSBAIDI4MSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
MFN0cmluZ05vZGVFIEAgMjgyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEw
U3dpdGNoTm9kZUUgQCAyODMgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTBU
eXBlT2ZOb2RlRSBAIDI4NCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUJp
dE9wZXJOb2RlRSBAIDI4NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUJv
b2xlYW5Ob2RlRSBAIDI4NiBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMURv
V2hpbGVOb2RlRSBAIDI4NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUVs
ZW1lbnROb2RlRSBAIDI4OCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUZp
bmFsbHlOb2RlRSBAIDI4OSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxMUZ1
bmN0aW9uSW1wRSBAIDI5MCBOT05BTUUgREFUQSAxNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFJ
bnRlcnByZXRlckUgQCAyOTEgTk9OQU1FIERBVEEgNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTFN
YXRoRnVuY0ltcEUgQCAyOTIgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEx
TmV3RXhwck5vZGVFIEAgMjkzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEx
UG9zdGZpeE5vZGVFIEAgMjk0IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEx
UmVzb2x2ZU5vZGVFIEAgMjk1IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEx
VmFyRGVjbE5vZGVFIEAgMjk2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEy
Q29udGludWVOb2RlRSBAIDI5NyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMx
MkZ1bmNEZWNsTm9kZUUgQCAyOTggTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTJGdW5jRXhwck5vZGVFIEAgMjk5IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzEyUHJvcGVydHlOb2RlRSBAIDMwMCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNL
SlMxMlN0YXRMaXN0Tm9kZUUgQCAzMDEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTJVbmRlZmluZWRJbXBFIEAgMzAyIE5PTkFNRSBEQVRBIDQ4IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzEzQWNjZXNzb3JOb2RlMUUgQCAzMDMgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTMTNBY2Nlc3Nvck5vZGUyRSBAIDMwNCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMzA1IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0K
LQlfWlRWTjNLSlMxM0FyZ3VtZW50c05vZGVFIEAgMzA2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzEzQ2FzZUJsb2NrTm9kZUUgQCAzMDcgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTMTNEYXRlT2JqZWN0SW1wRSBAIDMwOCBOT05BTUUgREFUQSAxMzYgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTMTNHbG9iYWxGdW5jSW1wRSBAIDMwOSBOT05BTUUgREFUQSAxNDAg
OyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNNYXRoT2JqZWN0SW1wRSBAIDMxMCBOT05BTUUgREFUQSAx
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDMxMSBOT05BTUUgREFU
QSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxM1N0YXRlbWVudE5vZGVFIEAgMzEyIE5PTkFNRSBE
QVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzEzVW5hcnlQbHVzTm9kZUUgQCAzMTMgTk9OQU1F
IERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAzMTQgTk9O
QU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMzE1
IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Qml0d2lzZU5vdE5vZGVFIEAg
MzE2IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Q2FzZUNsYXVzZU5vZGVF
IEAgMzE3IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0Q2xhdXNlTGlzdE5v
ZGVFIEAgMzE4IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE0RXJyb3JPYmpl
Y3RJbXBFIEAgMzE5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNExvZ2lj
YWxOb3ROb2RlRSBAIDMyMCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxNE5h
dGl2ZUVycm9ySW1wRSBAIDMyMSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
MTRSZWxhdGlvbmFsTm9kZUUgQCAzMjIgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMzIzIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9a
VFZOM0tKUzE1TnVtYmVyT2JqZWN0SW1wRSBAIDMyNCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTMTVPYmplY3RPYmplY3RJbXBFIEAgMzI1IE5PTkFNRSBEQVRBIDEzNiA7ICM8
VlQ+Iw0KLQlfWlRWTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAzMjYgTk9OQU1FIERBVEEgMTM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE1U3RyaW5nT2JqZWN0SW1wRSBAIDMyNyBOT05BTUUgREFU
QSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTVWYXJEZWNsTGlzdE5vZGVFIEAgMzI4IE5PTkFN
RSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE2QXJndW1lbnRMaXN0Tm9kZUUgQCAzMjkg
Tk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZBcnJheUluc3RhbmNlSW1wRSBA
IDMzMCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZCb29sZWFuT2JqZWN0
SW1wRSBAIDMzMSBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZEYXRlUHJv
dG9GdW5jSW1wRSBAIDMzMiBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTZE
YXRlUHJvdG90eXBlSW1wRSBAIDMzMyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMTZGdW5jdGlvbkJvZHlOb2RlRSBAIDMzNCBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxNkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMzM1IE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAzMzYgTk9OQU1FIERBVEEgNDQgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTMTdBcnJheVByb3RvRnVuY0ltcEUgQCAzMzcgTk9OQU1FIERBVEEg
MTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3QXJyYXlQcm90b3R5cGVJbXBFIEAgMzM4IE5PTkFN
RSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0JpbmFyeUxvZ2ljYWxOb2RlRSBAIDMz
OSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN0RhdGVPYmplY3RGdW5jSW1w
RSBAIDM0MCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTdFcnJvclByb3Rv
RnVuY0ltcEUgQCAzNDEgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE3RXhw
clN0YXRlbWVudE5vZGVFIEAgMzQyIE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzE3RnVuY3Rpb25PYmplY3RJbXBFIEAgMzQzIE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxN09iamVjdExpdGVyYWxOb2RlRSBAIDM0NCBOT05BTUUgREFUQSAzNiA7ICM8VlQ+
Iw0KLQlfWlRWTjNLSlMxN1Byb3BlcnR5VmFsdWVOb2RlRSBAIDM0NSBOT05BTUUgREFUQSAzNiA7
ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDM0NiBOT05BTUUgREFU
QSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMzQ3IE5P
TkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1wRSBA
IDM0OCBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMThPYmplY3RQcm90b0Z1
bmNJbXBFIEAgMzQ5IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlMxOFJlZ0V4
cFByb3RvRnVuY0ltcEUgQCAzNTAgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tK
UzE4U291cmNlRWxlbWVudHNOb2RlRSBAIDM1MSBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlf
WlRWTjNLSlMxOFN0cmluZ1Byb3RvRnVuY0ltcEUgQCAzNTIgTk9OQU1FIERBVEEgMTM2IDsgIzxW
VD4jDQotCV9aVFZOM0tKUzE4U3RyaW5nUHJvdG90eXBlSW1wRSBAIDM1MyBOT05BTUUgREFUQSAx
MzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlCb29sZWFuUHJvdG9GdW5jSW1wRSBAIDM1NCBOT05B
TUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlEZWNsYXJlZEZ1bmN0aW9uSW1wRSBA
IDM1NSBOT05BTUUgREFUQSAxNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlJbnRlcm5hbEZ1bmN0
aW9uSW1wRSBAIDM1NiBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTMTlTdHJp
bmdPYmplY3RGdW5jSW1wRSBAIDM1NyBOT05BTUUgREFUQSAxMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTMjBGdW5jdGlvblByb3RvRnVuY0ltcEUgQCAzNTggTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4j
DQotCV9aVFZOM0tKUzIwRnVuY3Rpb25Qcm90b3R5cGVJbXBFIEAgMzU5IE5PTkFNRSBEQVRBIDEz
NiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM0Tm9kZUUgQCAzNjAgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTNklmTm9kZUUgQCAzNjEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTN0FkZE5vZGVFIEAgMzYyIE5PTkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZO
M0tKUzdGb3JOb2RlRSBAIDM2MyBOT05BTUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM3
TnVsbEltcEUgQCAzNjQgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTN1RyeU5v
ZGVFIEAgMzY1IE5PTkFNRSBEQVRBIDQ0IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhEZWJ1Z2dlckUg
QCAzNjYgTk9OQU1FIERBVEEgNDAgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOE11bHROb2RlRSBAIDM2
NyBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4TnVsbE5vZGVFIEAgMzY4IE5P
TkFNRSBEQVRBIDM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhUaGlzTm9kZUUgQCAzNjkgTk9OQU1F
IERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOFZhbHVlSW1wRSBAIDM3MCBOT05BTUUgREFU
QSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM4Vm9pZE5vZGVFIEAgMzcxIE5PTkFNRSBEQVRBIDM2
IDsgIzxWVD4jDQotCV9aVFZOM0tKUzhXaXRoTm9kZUUgQCAzNzIgTk9OQU1FIERBVEEgNDQgOyAj
PFZUPiMNCi0JX1pUVk4zS0pTOUFycmF5Tm9kZUUgQCAzNzMgTk9OQU1FIERBVEEgMzYgOyAjPFZU
PiMNCi0JX1pUVk4zS0pTOUJsb2NrTm9kZUUgQCAzNzQgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMN
Ci0JX1pUVk4zS0pTOUJyZWFrTm9kZUUgQCAzNzUgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0J
X1pUVk4zS0pTOUNhdGNoTm9kZUUgQCAzNzYgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pU
Vk4zS0pTOUNvbW1hTm9kZUUgQCAzNzcgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4z
S0pTOUVxdWFsTm9kZUUgQCAzNzggTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pT
OUZvckluTm9kZUUgQCAzNzkgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUdy
b3VwTm9kZUUgQCAzODAgTk9OQU1FIERBVEEgMzYgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOUxhYmVs
Tm9kZUUgQCAzODEgTk9OQU1FIERBVEEgNDQgOyAjPFZUPiMNCi0JX1pUVk4zS0pTOU51bWJlcklt
cEUgQCAzODIgTk9OQU1FIERBVEEgNDggOyAjPFZUPiMNCi0JX1pUVk4zS0pTOU9iamVjdEltcEUg
QCAzODMgTk9OQU1FIERBVEEgMTM2IDsgIzxWVD4jDQotCV9aVFZOM0tKUzlSZWdFeHBJbXBFIEAg
Mzg0IE5PTkFNRSBEQVRBIDEzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5U2hpZnROb2RlRSBAIDM4
NSBOT05BTUUgREFUQSAzNiA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5U3RyaW5nSW1wRSBAIDM4NiBO
T05BTUUgREFUQSA0OCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5VGhyb3dOb2RlRSBAIDM4NyBOT05B
TUUgREFUQSA0NCA7ICM8VlQ+Iw0KLQlfWlRWTjNLSlM5V2hpbGVOb2RlRSBAIDM4OCBOT05BTUUg
REFUQSA0NCA7ICM8VlQ+Iw0KKyAgICBOUE5fQ3JlYXRlT2JqZWN0IEAgMSBOT05BTUUNCisgICAg
TlBOX0V2YWx1YXRlIEAgMiBOT05BTUUNCisgICAgTlBOX0dldEludElkZW50aWZpZXIgQCAzIE5P
TkFNRQ0KKyAgICBOUE5fR2V0UHJvcGVydHkgQCA0IE5PTkFNRQ0KKyAgICBOUE5fR2V0U3RyaW5n
SWRlbnRpZmllciBAIDUgTk9OQU1FDQorICAgIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycyBAIDYg
Tk9OQU1FDQorICAgIE5QTl9IYXNNZXRob2QgQCA3IE5PTkFNRQ0KKyAgICBOUE5fSGFzUHJvcGVy
dHkgQCA4IE5PTkFNRQ0KKyAgICBOUE5fSWRlbnRpZmllcklzU3RyaW5nIEAgOSBOT05BTUUNCisg
ICAgTlBOX0ludEZyb21JZGVudGlmaWVyIEAgMTAgTk9OQU1FDQorICAgIE5QTl9JbnZva2UgQCAx
MSBOT05BTUUNCisgICAgTlBOX0ludm9rZURlZmF1bHQgQCAxMiBOT05BTUUNCisgICAgTlBOX1Jl
bGVhc2VPYmplY3QgQCAxMyBOT05BTUUNCisgICAgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgQCAx
NCBOT05BTUUNCisgICAgTlBOX1JlbW92ZVByb3BlcnR5IEAgMTUgTk9OQU1FDQorICAgIE5QTl9S
ZXRhaW5PYmplY3QgQCAxNiBOT05BTUUNCisgICAgTlBOX1NldEV4Y2VwdGlvbiBAIDE3IE5PTkFN
RQ0KKyAgICBOUE5fU2V0UHJvcGVydHkgQCAxOCBOT05BTUUNCisgICAgTlBOX1VURjhGcm9tSWRl
bnRpZmllciBAIDE5IE5PTkFNRQ0KKyAgICBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCBAIDIwIE5P
TkFNRQ0KKyAgICBfWjI0TlBOX1NldEV4Y2VwdGlvbldpdGhVVEY4UDhOUE9iamVjdFBLY2kgQCAy
MSBOT05BTUUNCisgICAgX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEtjIEAgMjIgTk9OQU1FDQor
ICAgIF9aTjNLSlMxMElkZW50aWZpZXIzYWRkRVBOU183VVN0cmluZzNSZXBFIEAgMjMgTk9OQU1F
DQorICAgIF9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdVU3RyaW5nM1JlcEVQS05TXzVV
Q2hhckVpIEAgMjQgTk9OQU1FDQorICAgIF9aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUE5TXzdV
U3RyaW5nM1JlcEVQS2MgQCAyNSBOT05BTUUNCisgICAgX1pOM0tKUzEwU2NvcGVDaGFpbjRwdXNo
RVBOU185T2JqZWN0SW1wRSBAIDI2IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBTY29wZUNoYWluN3Jl
bGVhc2VFdiBAIDI3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTBTY29wZUNoYWluYVNFUktTMF8gQCAy
OCBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXIxMGdsb2JhbEV4ZWNFdiBAIDI5IE5P
TkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjEydmlydHVhbF9ob29rRWlQdiBAIDMwIE5P
TkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjEzc2V0Q29tcGF0TW9kZUVOUzBfMTBDb21w
YXRNb2RlRSBAIDMxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjE1cmVzdG9yZUJ1
aWx0aW5zRVJLTlNfMTNTYXZlZEJ1aWx0aW5zRSBAIDMyIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJ
bnRlcnByZXRlcjE2aW5pdEdsb2JhbE9iamVjdEV2IEAgMzMgTk9OQU1FDQorICAgIF9aTjNLSlMx
MUludGVycHJldGVyMTdpbmNTdGF0ZW1lbnRDb3VudEV2IEAgMzQgTk9OQU1FDQorICAgIF9aTjNL
SlMxMUludGVycHJldGVyMTlyZXNldFN0YXRlbWVudENvdW50RXYgQCAzNSBOT05BTUUNCisgICAg
X1pOM0tKUzExSW50ZXJwcmV0ZXIyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2IEAgMzYgTk9OQU1F
DQorICAgIF9aTjNLSlMxMUludGVycHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYiBA
IDM3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjMwY3JlYXRlTGFuZ3VhZ2VJbnN0
YW5jZUZvclZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzhCaW5kaW5nczhJbnN0YW5jZTE1QmluZGlu
Z0xhbmd1YWdlRVJLTlNfNk9iamVjdEVQS05TM18xMFJvb3RPYmplY3RFU0JfIEAgMzggTk9OQU1F
DQorICAgIF9aTjNLSlMxMUludGVycHJldGVyNGxvY2tFdiBAIDM5IE5PTkFNRQ0KKyAgICBfWk4z
S0pTMTFJbnRlcnByZXRlcjZ1bmxvY2tFdiBAIDQwIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRl
cnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRVJLTlNfNVZhbHVlRVMzXyBAIDQxIE5PTkFN
RQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVSS05TXzdVU3RyaW5nRWlTM19S
S05TXzVWYWx1ZUUgQCA0MiBOT05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXJDMUVSS05T
XzZPYmplY3RFIEAgNDMgTk9OQU1FDQorICAgIF9aTjNLSlMxMUludGVycHJldGVyQzJFUktOU182
T2JqZWN0RSBAIDQ0IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFJbnRlcnByZXRlckQwRXYgQCA0NSBO
T05BTUUNCisgICAgX1pOM0tKUzExSW50ZXJwcmV0ZXJEMUV2IEAgNDYgTk9OQU1FDQorICAgIF9a
TjNLSlMxMUludGVycHJldGVyRDJFdiBAIDQ3IE5PTkFNRQ0KKyAgICBfWk4zS0pTMTFQcm9wZXJ0
eU1hcDdyZXN0b3JlRVJLTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgNDggTk9OQU1FDQorICAgIF9a
TjNLSlMxNGxlbmd0aFByb3BlcnR5RXYgQCA0OSBOT05BTUUNCisgICAgX1pOM0tKUzE1bWVzc2Fn
ZVByb3BlcnR5RXYgQCA1MCBOT05BTUUNCisgICAgX1pOM0tKUzE2UnVudGltZU9iamVjdEltcEMx
RVBOU184QmluZGluZ3M4SW5zdGFuY2VFYiBAIDUxIE5PTkFNRQ0KKyAgICBfWk4zS0pTMTZSdW50
aW1lT2JqZWN0SW1wQzJFUE5TXzhCaW5kaW5nczhJbnN0YW5jZUViIEAgNTIgTk9OQU1FDQorICAg
IF9aTjNLSlM0TGlzdDExZGVyZWZWYWx1ZXNFdiBAIDUzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNExp
c3Q2YXBwZW5kRVBOU184VmFsdWVJbXBFIEAgNTQgTk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdDdy
ZWxlYXNlRXYgQCA1NSBOT05BTUUNCisgICAgX1pOM0tKUzRMaXN0OXJlZlZhbHVlc0V2IEAgNTYg
Tk9OQU1FDQorICAgIF9aTjNLSlM0TGlzdEMxRXYgQCA1NyBOT05BTUUNCisgICAgX1pOM0tKUzRM
aXN0QzJFdiBAIDU4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNExpc3RhU0VSS1MwXyBAIDU5IE5PTkFN
RQ0KKyAgICBfWk4zS0pTNE51bGxDMUV2IEAgNjAgTk9OQU1FDQorICAgIF9aTjNLSlM0TnVsbEMy
RXYgQCA2MSBOT05BTUUNCisgICAgX1pOM0tKUzVFcnJvcjZjcmVhdGVFUE5TXzlFeGVjU3RhdGVF
TlNfOUVycm9yVHlwZUVQS2NpaVBLTlNfN1VTdHJpbmdFIEAgNjIgTk9OQU1FDQorICAgIF9aTjNL
SlM1VmFsdWVDMUVQTlNfOFZhbHVlSW1wRSBAIDYzIE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVl
QzFFUktTMF8gQCA2NCBOT05BTUUNCisgICAgX1pOM0tKUzVWYWx1ZUMyRVBOU184VmFsdWVJbXBF
IEAgNjUgTk9OQU1FDQorICAgIF9aTjNLSlM1VmFsdWVDMkVSS1MwXyBAIDY2IE5PTkFNRQ0KKyAg
ICBfWk4zS0pTNVZhbHVlRDFFdiBAIDY3IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlRDJFdiBA
IDY4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNVZhbHVlYVNFUktTMF8gQCA2OSBOT05BTUUNCisgICAg
X1pOM0tKUzZMb29rdXA5ZmluZEVudHJ5RVBLTlNfOUhhc2hUYWJsZUVSS05TXzEwSWRlbnRpZmll
ckUgQCA3MCBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVkIEAgNzEgTk9OQU1FDQorICAg
IF9aTjNLSlM2TnVtYmVyQzFFaSBAIDcyIE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMxRWog
QCA3MyBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMUVsIEAgNzQgTk9OQU1FDQorICAgIF9a
TjNLSlM2TnVtYmVyQzFFbSBAIDc1IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWQgQCA3
NiBOT05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMkVpIEAgNzcgTk9OQU1FDQorICAgIF9aTjNL
SlM2TnVtYmVyQzJFaiBAIDc4IE5PTkFNRQ0KKyAgICBfWk4zS0pTNk51bWJlckMyRWwgQCA3OSBO
T05BTUUNCisgICAgX1pOM0tKUzZOdW1iZXJDMkVtIEAgODAgTk9OQU1FDQorICAgIF9aTjNLSlM2
T2JqZWN0MTFkeW5hbWljQ2FzdEVSS05TXzVWYWx1ZUUgQCA4MSBOT05BTUUNCisgICAgX1pOM0tK
UzZPYmplY3Q0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVSUzBfUktOU180TGlzdEUgQCA4MiBOT05BTUUN
CisgICAgX1pOM0tKUzZTdHJpbmdDMUVSS05TXzdVU3RyaW5nRSBAIDgzIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTNlN0cmluZ0MyRVJLTlNfN1VTdHJpbmdFIEAgODQgTk9OQU1FDQorICAgIF9aTjNLSlM3
Qm9vbGVhbkMxRWIgQCA4NSBOT05BTUUNCisgICAgX1pOM0tKUzdCb29sZWFuQzJFYiBAIDg2IE5P
TkFNRQ0KKyAgICBfWk4zS0pTN0NTdHJpbmdhU0VQS2MgQCA4NyBOT05BTUUNCisgICAgX1pOM0tK
UzdVU3RyaW5nMTBhdHRhY2hOdWxsRXYgQCA4OCBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5n
M1JlcDEzY3JlYXRlQ29weWluZ0VQS05TXzVVQ2hhckVpIEAgODkgTk9OQU1FDQorICAgIF9aTjNL
SlM3VVN0cmluZzNSZXA2Y3JlYXRlRVBOU181VUNoYXJFaSBAIDkwIE5PTkFNRQ0KKyAgICBfWk4z
S0pTN1VTdHJpbmczUmVwN2Rlc3Ryb3lFdiBAIDkxIE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJp
bmc0ZnJvbUVsIEAgOTIgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUEtjIEAg
OTMgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZzZhcHBlbmRFUktTMF8gQCA5NCBOT05BTUUN
CisgICAgX1pOM0tKUzdVU3RyaW5nQzFFUEtOU181VUNoYXJFaSBAIDk1IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTN1VTdHJpbmdDMUVQS2MgQCA5NiBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzFF
UE5TXzVVQ2hhckVpYiBAIDk3IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVSS1MwX1My
XyBAIDk4IE5PTkFNRQ0KKyAgICBfWk4zS0pTN1VTdHJpbmdDMUVjIEAgOTkgTk9OQU1FDQorICAg
IF9aTjNLSlM3VVN0cmluZ0MxRXYgQCAxMDAgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0My
RVBLTlNfNVVDaGFyRWkgQCAxMDEgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0MyRVBLYyBA
IDEwMiBOT05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzJFUE5TXzVVQ2hhckVpYiBAIDEwMyBO
T05BTUUNCisgICAgX1pOM0tKUzdVU3RyaW5nQzJFUktTMF9TMl8gQCAxMDQgTk9OQU1FDQorICAg
IF9aTjNLSlM3VVN0cmluZ0MyRWMgQCAxMDUgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ0My
RXYgQCAxMDYgTk9OQU1FDQorICAgIF9aTjNLSlM3VVN0cmluZ2FTRVJLUzBfIEAgMTA3IE5PTkFN
RQ0KKyAgICBfWk4zS0pTOEJpbmRpbmdzMTBSb290T2JqZWN0MTRzZXRJbnRlcnByZXRlckVQTlNf
MTFJbnRlcnByZXRlckUgQCAxMDggTk9OQU1FDQorICAgIF9aTjNLSlM4QmluZGluZ3MxMFJvb3RP
YmplY3QyNXJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXNFdiBAIDEwOSBOT05BTUUNCisgICAgX1pO
M0tKUzhCaW5kaW5nczIxcmVtb3ZlTmF0aXZlUmVmZXJlbmNlRVBOU185T2JqZWN0SW1wRSBAIDEx
MCBOT05BTUUNCisgICAgX1pOM0tKUzhCaW5kaW5nczhJbnN0YW5jZTE5Y3JlYXRlUnVudGltZU9i
amVjdEVOUzFfMTVCaW5kaW5nTGFuZ3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RFIEAgMTExIE5P
TkFNRQ0KKyAgICBfWk4zS0pTOEJpbmRpbmdzOEluc3RhbmNlMzBjcmVhdGVMYW5ndWFnZUluc3Rh
bmNlRm9yVmFsdWVFUE5TXzlFeGVjU3RhdGVFTlMxXzE1QmluZGluZ0xhbmd1YWdlRVJLTlNfNk9i
amVjdEVQS05TMF8xMFJvb3RPYmplY3RFU0FfIEAgMTEyIE5PTkFNRQ0KKyAgICBfWk4zS0pTOEJp
bmRpbmdzOEluc3RhbmNlMzJjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZUVOUzFfMTVC
aW5kaW5nTGFuZ3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RFIEAgMTEzIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTOFZhbHVlSW1wZGxFUHYgQCAxMTQgTk9OQU1FDQorICAgIF9aTjNLSlM4VmFsdWVJbXBu
d0VqIEAgMTE1IE5PTkFNRQ0KKyAgICBfWk4zS0pTOUNvbGxlY3Rvcjdjb2xsZWN0RXYgQCAxMTYg
Tk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wMTFoYXNJbnN0YW5jZUVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzVWYWx1ZUUgQCAxMTcgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wMTJzZXRQ
cm90b3R5cGVFUktOU181VmFsdWVFIEAgMTE4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdElt
cDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFIEAgMTE5
IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVj
U3RhdGVFaiBAIDEyMCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAxOWRlbGV0ZUFsbFBy
b3BlcnRpZXNFUE5TXzlFeGVjU3RhdGVFIEAgMTIxIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVj
dEltcDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUktOU181VmFsdWVFaSBA
IDEyMiBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXAzcHV0RVBOU185RXhlY1N0YXRlRWpS
S05TXzVWYWx1ZUVpIEAgMTIzIE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDRjYWxsRVBO
U185RXhlY1N0YXRlRVJOU182T2JqZWN0RVJLTlNfNExpc3RFIEAgMTI0IE5PTkFNRQ0KKyAgICBf
Wk4zS0pTOU9iamVjdEltcDRtYXJrRXYgQCAxMjUgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0
SW1wOHByb3BMaXN0RVBOU185RXhlY1N0YXRlRWIgQCAxMjYgTk9OQU1FDQorICAgIF9aTjNLSlM5
T2JqZWN0SW1wOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzRMaXN0RSBAIDEyNyBOT05B
TUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXA5Y29uc3RydWN0RVBOU185RXhlY1N0YXRlRVJLTlNf
NExpc3RFUktOU183VVN0cmluZ0VpIEAgMTI4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdElt
cDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFUE5TXzhWYWx1ZUltcEVpIEAgMTI5IE5PTkFN
RQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcDlwdXREaXJlY3RFUktOU18xMElkZW50aWZpZXJFaWkg
QCAxMzAgTk9OQU1FDQorICAgIF9aTjNLSlM5T2JqZWN0SW1wQzFFUktOU182T2JqZWN0RSBAIDEz
MSBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBDMUV2IEAgMTMyIE5PTkFNRQ0KKyAgICBf
Wk4zS0pTOU9iamVjdEltcEMyRVJLTlNfNk9iamVjdEUgQCAxMzMgTk9OQU1FDQorICAgIF9aTjNL
SlM5T2JqZWN0SW1wQzJFdiBAIDEzNCBOT05BTUUNCisgICAgX1pOM0tKUzlPYmplY3RJbXBEMEV2
IEAgMTM1IE5PTkFNRQ0KKyAgICBfWk4zS0pTOU9iamVjdEltcEQxRXYgQCAxMzYgTk9OQU1FDQor
ICAgIF9aTjNLSlM5T2JqZWN0SW1wRDJFdiBAIDEzNyBOT05BTUUNCisgICAgX1pOM0tKUzlVbmRl
ZmluZWRDMUV2IEAgMTM4IE5PTkFNRQ0KKyAgICBfWk4zS0pTOVVuZGVmaW5lZEMyRXYgQCAxMzkg
Tk9OQU1FDQorICAgIF9aTjNLSlNlcUVSS05TXzdVU3RyaW5nRVBLYyBAIDE0MCBOT05BTUUNCisg
ICAgX1pOSzNLSlMxMUludGVycHJldGVyMTBjb21wYXRNb2RlRXYgQCAxNDEgTk9OQU1FDQorICAg
IF9aTkszS0pTMTFJbnRlcnByZXRlcjEyYnVpbHRpbkFycmF5RXYgQCAxNDIgTk9OQU1FDQorICAg
IF9aTkszS0pTMTFJbnRlcnByZXRlcjEyZ2xvYmFsT2JqZWN0RXYgQCAxNDMgTk9OQU1FDQorICAg
IF9aTkszS0pTMTFJbnRlcnByZXRlcjEyc2F2ZUJ1aWx0aW5zRVJOU18xM1NhdmVkQnVpbHRpbnNF
IEAgMTQ0IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExSW50ZXJwcmV0ZXIxM2J1aWx0aW5PYmplY3RF
diBAIDE0NSBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMTVidWlsdGluRnVuY3Rp
b25FdiBAIDE0NiBOT05BTUUNCisgICAgX1pOSzNLSlMxMUludGVycHJldGVyMjJidWlsdGluT2Jq
ZWN0UHJvdG90eXBlRXYgQCAxNDcgTk9OQU1FDQorICAgIF9aTkszS0pTMTFQcm9wZXJ0eU1hcDNn
ZXRFUktOU18xMElkZW50aWZpZXJFIEAgMTQ4IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzExUHJvcGVy
dHlNYXA0c2F2ZUVSTlNfMTVTYXZlZFByb3BlcnRpZXNFIEAgMTQ5IE5PTkFNRQ0KKyAgICBfWk5L
M0tKUzRMaXN0NWltcEF0RWkgQCAxNTAgTk9OQU1FDQorICAgIF9aTkszS0pTNExpc3Q4Y29weVRh
aWxFdiBAIDE1MSBOT05BTUUNCisgICAgX1pOSzNLSlM2T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUgQCAxNTIgTk9OQU1FDQorICAgIF9aTkszS0pT
Nk9iamVjdDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFaiBAIDE1MyBOT05BTUUNCisgICAg
X1pOSzNLSlM2T2JqZWN0MTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckUgQCAxNTQgTk9OQU1FDQorICAgIF9aTkszS0pTNlN0cmluZzV2YWx1ZUV2IEAgMTU1
IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzdVU3RyaW5nMTJ0b0FycmF5SW5kZXhFUGIgQCAxNTYgTk9O
QU1FDQorICAgIF9aTkszS0pTN1VTdHJpbmc1YXNjaWlFdiBAIDE1NyBOT05BTUUNCisgICAgX1pO
SzNLSlM3VVN0cmluZzZpc051bGxFdiBAIDE1OCBOT05BTUUNCisgICAgX1pOSzNLSlM3VVN0cmlu
Zzd0b1VMb25nRVBiIEAgMTU5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDE2ZGlzcGF0
Y2hUb09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjAgTk9OQU1FDQorICAgIF9aTkszS0pTOFZh
bHVlSW1wNm1hcmtlZEV2IEAgMTYxIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUltcDd0b0lu
dDMyRVBOU185RXhlY1N0YXRlRSBAIDE2MiBOT05BTUUNCisgICAgX1pOSzNLSlM4VmFsdWVJbXA4
dG9VSW50MTZFUE5TXzlFeGVjU3RhdGVFIEAgMTYzIE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1
ZUltcDh0b1VJbnQzMkVQTlNfOUV4ZWNTdGF0ZUUgQCAxNjQgTk9OQU1FDQorICAgIF9aTkszS0pT
OFZhbHVlSW1wOHRvVUludDMyRVJqIEAgMTY1IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzhWYWx1ZUlt
cDl0b0ludGVnZXJFUE5TXzlFeGVjU3RhdGVFIEAgMTY2IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlF
eGVjU3RhdGUxOGxleGljYWxJbnRlcnByZXRlckV2IEAgMTY3IE5PTkFNRQ0KKyAgICBfWk5LM0tK
UzlPYmplY3RJbXAxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RSBAIDE2OCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wMTFoYXNQcm9wZXJ0eUVQTlNf
OUV4ZWNTdGF0ZUVqIEAgMTY5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxMXRvUHJp
bWl0aXZlRVBOU185RXhlY1N0YXRlRU5TXzRUeXBlRSBAIDE3MCBOT05BTUUNCisgICAgX1pOSzNL
SlM5T2JqZWN0SW1wMTJkZWZhdWx0VmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfNFR5cGVFIEAgMTcx
IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAxNGhhc093blByb3BlcnR5RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE3MiBOT05BTUUNCisgICAgX1pOSzNLSlM5T2Jq
ZWN0SW1wMTRoYXNPd25Qcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqIEAgMTczIE5PTkFNRQ0KKyAg
ICBfWk5LM0tKUzlPYmplY3RJbXAxNGltcGxlbWVudHNDYWxsRXYgQCAxNzQgTk9OQU1FDQorICAg
IF9aTkszS0pTOU9iamVjdEltcDE5aW1wbGVtZW50c0NvbnN0cnVjdEV2IEAgMTc1IE5PTkFNRQ0K
KyAgICBfWk5LM0tKUzlPYmplY3RJbXAyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2IEAgMTc2IE5P
TkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXAzZ2V0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRSBAIDE3NyBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0SW1wM2dldEVQTlNf
OUV4ZWNTdGF0ZUVqIEAgMTc4IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA0dHlwZUV2
IEAgMTc5IE5PTkFNRQ0KKyAgICBfWk5LM0tKUzlPYmplY3RJbXA2Y2FuUHV0RVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRSBAIDE4MCBOT05BTUUNCisgICAgX1pOSzNLSlM5T2JqZWN0
SW1wOGluaGVyaXRzRVBLTlNfOUNsYXNzSW5mb0UgQCAxODEgTk9OQU1FDQorICAgIF9aTkszS0pT
OU9iamVjdEltcDh0b051bWJlckVQTlNfOUV4ZWNTdGF0ZUUgQCAxODIgTk9OQU1FDQorICAgIF9a
TkszS0pTOU9iamVjdEltcDh0b09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUgQCAxODMgTk9OQU1FDQor
ICAgIF9aTkszS0pTOU9iamVjdEltcDh0b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUgQCAxODQgTk9O
QU1FDQorICAgIF9aTkszS0pTOU9iamVjdEltcDljbGFzc0luZm9FdiBAIDE4NSBOT05BTUUNCisg
ICAgX1pOSzNLSlM5T2JqZWN0SW1wOWNsYXNzTmFtZUV2IEAgMTg2IE5PTkFNRQ0KKyAgICBfWk5L
M0tKUzlPYmplY3RJbXA5cHJvdG90eXBlRXYgQCAxODcgTk9OQU1FDQorICAgIF9aTkszS0pTOU9i
amVjdEltcDl0b0Jvb2xlYW5FUE5TXzlFeGVjU3RhdGVFIEAgMTg4IE5PTkFNRQ0KKyAgICBfWlRJ
TjNLSlMxMEFzc2lnbk5vZGVFIEAgMTg5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
MEJvb2xlYW5JbXBFIEAgMTkwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMERlbGV0
ZU5vZGVFIEAgMTkxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxME5lZ2F0ZU5vZGVF
IEAgMTkyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxME51bWJlck5vZGVFIEAgMTkz
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFByZWZpeE5vZGVFIEAgMTk0IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFJlZ0V4cE5vZGVFIEAgMTk1IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxMFJldHVybk5vZGVFIEAgMTk2IE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxMFN0cmluZ05vZGVFIEAgMTk3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxMFN3aXRjaE5vZGVFIEAgMTk4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxMFR5cGVPZk5vZGVFIEAgMTk5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUJp
dE9wZXJOb2RlRSBAIDIwMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFCb29sZWFu
Tm9kZUUgQCAyMDEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExRG9XaGlsZU5vZGVF
IEAgMjAyIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUVsZW1lbnROb2RlRSBAIDIw
MyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTFGaW5hbGx5Tm9kZUUgQCAyMDQgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzExRnVuY3Rpb25JbXBFIEAgMjA1IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMUludGVycHJldGVyRSBAIDIwNiBOT05BTUUgOyAjPFRJ
PiMNCisgICAgX1pUSU4zS0pTMTFNYXRoRnVuY0ltcEUgQCAyMDcgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzExTmV3RXhwck5vZGVFIEAgMjA4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxMVBvc3RmaXhOb2RlRSBAIDIwOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTMTFSZXNvbHZlTm9kZUUgQCAyMTAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEx
VmFyRGVjbE5vZGVFIEAgMjExIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMkNvbnRp
bnVlTm9kZUUgQCAyMTIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyRnVuY0RlY2xO
b2RlRSBAIDIxMyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTJGdW5jRXhwck5vZGVF
IEAgMjE0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxMlByb3BlcnR5Tm9kZUUgQCAy
MTUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzEyU3RhdExpc3ROb2RlRSBAIDIxNiBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTJVbmRlZmluZWRJbXBFIEAgMjE3IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTFFIEAgMjE4IE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0FjY2Vzc29yTm9kZTJFIEAgMjE5IE5PTkFNRSA7ICM8
VEk+Iw0KKyAgICBfWlRJTjNLSlMxM0FjdGl2YXRpb25JbXBFIEAgMjIwIE5PTkFNRSA7ICM8VEk+
Iw0KKyAgICBfWlRJTjNLSlMxM0FyZ3VtZW50c05vZGVFIEAgMjIxIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlMxM0Nhc2VCbG9ja05vZGVFIEAgMjIyIE5PTkFNRSA7ICM8VEk+Iw0KKyAg
ICBfWlRJTjNLSlMxM0RhdGVPYmplY3RJbXBFIEAgMjIzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMxM0dsb2JhbEZ1bmNJbXBFIEAgMjI0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlMxM01hdGhPYmplY3RJbXBFIEAgMjI1IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlMxM1BhcmFtZXRlck5vZGVFIEAgMjI2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMx
M1N0YXRlbWVudE5vZGVFIEAgMjI3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxM1Vu
YXJ5UGx1c05vZGVFIEAgMjI4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNEFycmF5
T2JqZWN0SW1wRSBAIDIyOSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRBc3NpZ25F
eHByTm9kZUUgQCAyMzAgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0Qml0d2lzZU5v
dE5vZGVFIEAgMjMxIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNENhc2VDbGF1c2VO
b2RlRSBAIDIzMiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTRDbGF1c2VMaXN0Tm9k
ZUUgQCAyMzMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0RXJyb3JPYmplY3RJbXBF
IEAgMjM0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNExvZ2ljYWxOb3ROb2RlRSBA
IDIzNSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTROYXRpdmVFcnJvckltcEUgQCAy
MzYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE0UmVsYXRpb25hbE5vZGVFIEAgMjM3
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNUNvbmRpdGlvbmFsTm9kZUUgQCAyMzgg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1TnVtYmVyT2JqZWN0SW1wRSBAIDIzOSBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVPYmplY3RPYmplY3RJbXBFIEAgMjQwIE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNVJlZ0V4cE9iamVjdEltcEUgQCAyNDEgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE1UnVudGltZUFycmF5SW1wRSBAIDI0MiBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTVTdHJpbmdPYmplY3RJbXBFIEAgMjQzIE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxNVZhckRlY2xMaXN0Tm9kZUUgQCAyNDQgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2QXJndW1lbnRMaXN0Tm9kZUUgQCAyNDUgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2QXJyYXlJbnN0YW5jZUltcEUgQCAyNDYgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2Qm9vbGVhbk9iamVjdEltcEUgQCAyNDcgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RGF0ZVByb3RvRnVuY0ltcEUgQCAyNDggTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RGF0ZVByb3RvdHlwZUltcEUgQCAyNDkgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RnVuY3Rpb25Cb2R5Tm9kZUUgQCAyNTAgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2RnVuY3Rpb25DYWxsTm9kZUUgQCAyNTEgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2UnVudGltZU1ldGhvZEltcEUgQCAyNTIgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2UnVudGltZU9iamVjdEltcEUgQCAyNTMgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE2VmFyU3RhdGVtZW50Tm9kZUUgQCAyNTQgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3QXJyYXlQcm90b0Z1bmNJbXBFIEAgMjU1IE5PTkFN
RSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0FycmF5UHJvdG90eXBlSW1wRSBAIDI1NiBOT05B
TUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdCaW5hcnlMb2dpY2FsTm9kZUUgQCAyNTcgTk9O
QU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3RGF0ZU9iamVjdEZ1bmNJbXBFIEAgMjU4IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN0Vycm9yUHJvdG9GdW5jSW1wRSBAIDI1OSBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdFeHByU3RhdGVtZW50Tm9kZUUgQCAyNjAg
Tk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3RnVuY3Rpb25PYmplY3RJbXBFIEAgMjYx
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxN09iamVjdExpdGVyYWxOb2RlRSBAIDI2
MiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMTdQcm9wZXJ0eVZhbHVlTm9kZUUgQCAy
NjMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE3U3RyaW5nSW5zdGFuY2VJbXBFIEAg
MjY0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOEVtcHR5U3RhdGVtZW50Tm9kZUUg
QCAyNjUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4TnVtYmVyUHJvdG9GdW5jSW1w
RSBAIDI2NiBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThPYmplY3RQcm90b0Z1bmNJ
bXBFIEAgMjY3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFJlZ0V4cFByb3RvRnVu
Y0ltcEUgQCAyNjggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE4U291cmNlRWxlbWVu
dHNOb2RlRSBAIDI2OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTMThTdHJpbmdQcm90
b0Z1bmNJbXBFIEAgMjcwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlMxOFN0cmluZ1By
b3RvdHlwZUltcEUgQCAyNzEgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5Qm9vbGVh
blByb3RvRnVuY0ltcEUgQCAyNzIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5RGVj
bGFyZWRGdW5jdGlvbkltcEUgQCAyNzMgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzE5
SW50ZXJuYWxGdW5jdGlvbkltcEUgQCAyNzQgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzE5U3RyaW5nT2JqZWN0RnVuY0ltcEUgQCAyNzUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElO
M0tKUzIwRnVuY3Rpb25Qcm90b0Z1bmNJbXBFIEAgMjc2IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJTjNLSlMyMEZ1bmN0aW9uUHJvdG90eXBlSW1wRSBAIDI3NyBOT05BTUUgOyAjPFRJPiMNCisg
ICAgX1pUSU4zS0pTNE5vZGVFIEAgMjc4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM2
SWZOb2RlRSBAIDI3OSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTN0FkZE5vZGVFIEAg
MjgwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM3Rm9yTm9kZUUgQCAyODEgTk9OQU1F
IDsgIzxUST4jDQorICAgIF9aVElOM0tKUzdOdWxsSW1wRSBAIDI4MiBOT05BTUUgOyAjPFRJPiMN
CisgICAgX1pUSU4zS0pTN1RyeU5vZGVFIEAgMjgzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlM4QmluZGluZ3M2Q0NsYXNzRSBAIDI4NCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4z
S0pTOEJpbmRpbmdzNkNGaWVsZEUgQCAyODUgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzhCaW5kaW5nczhJbnN0YW5jZUUgQCAyODYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tK
UzhCaW5kaW5nczlDSW5zdGFuY2VFIEAgMjg3IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNL
SlM4RGVidWdnZXJFIEAgMjg4IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4TXVsdE5v
ZGVFIEAgMjg5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4TnVsbE5vZGVFIEAgMjkw
IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4VGhpc05vZGVFIEAgMjkxIE5PTkFNRSA7
ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM4VmFsdWVJbXBFIEAgMjkyIE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlM4Vm9pZE5vZGVFIEAgMjkzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlM4V2l0aE5vZGVFIEAgMjk0IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5QXJy
YXlOb2RlRSBAIDI5NSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUJsb2NrTm9kZUUg
QCAyOTYgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlCcmVha05vZGVFIEAgMjk3IE5P
TkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5Q2F0Y2hOb2RlRSBAIDI5OCBOT05BTUUgOyAj
PFRJPiMNCisgICAgX1pUSU4zS0pTOUNvbW1hTm9kZUUgQCAyOTkgTk9OQU1FIDsgIzxUST4jDQor
ICAgIF9aVElOM0tKUzlFcXVhbE5vZGVFIEAgMzAwIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJ
TjNLSlM5Rm9ySW5Ob2RlRSBAIDMwMSBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOUdy
b3VwTm9kZUUgQCAzMDIgTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlMYWJlbE5vZGVF
IEAgMzAzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5TnVtYmVySW1wRSBAIDMwNCBO
T05BTUUgOyAjPFRJPiMNCisgICAgX1pUSU4zS0pTOU9iamVjdEltcEUgQCAzMDUgTk9OQU1FIDsg
IzxUST4jDQorICAgIF9aVElOM0tKUzlSZWdFeHBJbXBFIEAgMzA2IE5PTkFNRSA7ICM8VEk+Iw0K
KyAgICBfWlRJTjNLSlM5U2hpZnROb2RlRSBAIDMwNyBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pU
SU4zS0pTOVN0cmluZ0ltcEUgQCAzMDggTk9OQU1FIDsgIzxUST4jDQorICAgIF9aVElOM0tKUzlU
aHJvd05vZGVFIEAgMzA5IE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBfWlRJTjNLSlM5V2hpbGVOb2Rl
RSBAIDMxMCBOT05BTUUgOyAjPFRJPiMNCisgICAgX1pUVk4zS0pTMTBBc3NpZ25Ob2RlRSBAIDMx
MSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBCb29sZWFuSW1wRSBAIDMxMiBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBEZWxldGVOb2RlRSBAIDMxMyBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTBOZWdhdGVOb2RlRSBAIDMxNCBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTBOdW1iZXJOb2RlRSBAIDMxNSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTBQcmVmaXhOb2RlRSBAIDMxNiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTBSZWdFeHBOb2RlRSBAIDMxNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBS
ZXR1cm5Ob2RlRSBAIDMxOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBTdHJpbmdO
b2RlRSBAIDMxOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBTd2l0Y2hOb2RlRSBA
IDMyMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTBUeXBlT2ZOb2RlRSBAIDMyMSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFCaXRPcGVyTm9kZUUgQCAzMjIgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExQm9vbGVhbk5vZGVFIEAgMzIzIE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMURvV2hpbGVOb2RlRSBAIDMyNCBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTFFbGVtZW50Tm9kZUUgQCAzMjUgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzExRmluYWxseU5vZGVFIEAgMzI2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxMUZ1bmN0aW9uSW1wRSBAIDMyNyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTFJbnRlcnByZXRlckUgQCAzMjggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExTWF0
aEZ1bmNJbXBFIEAgMzI5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMU5ld0V4cHJO
b2RlRSBAIDMzMCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTFQb3N0Zml4Tm9kZUUg
QCAzMzEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzExUmVzb2x2ZU5vZGVFIEAgMzMy
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMVZhckRlY2xOb2RlRSBAIDMzMyBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTJDb250aW51ZU5vZGVFIEAgMzM0IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxMkZ1bmNEZWNsTm9kZUUgQCAzMzUgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzEyRnVuY0V4cHJOb2RlRSBAIDMzNiBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTJQcm9wZXJ0eU5vZGVFIEAgMzM3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxMlN0YXRMaXN0Tm9kZUUgQCAzMzggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzEyVW5kZWZpbmVkSW1wRSBAIDMzOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTNBY2Nlc3Nvck5vZGUxRSBAIDM0MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
MTNBY2Nlc3Nvck5vZGUyRSBAIDM0MSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNB
Y3RpdmF0aW9uSW1wRSBAIDM0MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNBcmd1
bWVudHNOb2RlRSBAIDM0MyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNDYXNlQmxv
Y2tOb2RlRSBAIDM0NCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNEYXRlT2JqZWN0
SW1wRSBAIDM0NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNHbG9iYWxGdW5jSW1w
RSBAIDM0NiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNNYXRoT2JqZWN0SW1wRSBA
IDM0NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNQYXJhbWV0ZXJOb2RlRSBAIDM0
OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNTdGF0ZW1lbnROb2RlRSBAIDM0OSBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTNVbmFyeVBsdXNOb2RlRSBAIDM1MCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMTRBcnJheU9iamVjdEltcEUgQCAzNTEgTk9OQU1F
IDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzE0QXNzaWduRXhwck5vZGVFIEAgMzUyIE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxNEJpdHdpc2VOb3ROb2RlRSBAIDM1MyBOT05BTUUgOyAj
PFZUPiMNCisgICAgX1pUVk4zS0pTMTRDYXNlQ2xhdXNlTm9kZUUgQCAzNTQgTk9OQU1FIDsgIzxW
VD4jDQorICAgIF9aVFZOM0tKUzE0Q2xhdXNlTGlzdE5vZGVFIEAgMzU1IE5PTkFNRSA7ICM8VlQ+
Iw0KKyAgICBfWlRWTjNLSlMxNEVycm9yT2JqZWN0SW1wRSBAIDM1NiBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTMTRMb2dpY2FsTm90Tm9kZUUgQCAzNTcgTk9OQU1FIDsgIzxWVD4jDQor
ICAgIF9aVFZOM0tKUzE0TmF0aXZlRXJyb3JJbXBFIEAgMzU4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxNFJlbGF0aW9uYWxOb2RlRSBAIDM1OSBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTVDb25kaXRpb25hbE5vZGVFIEAgMzYwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlMxNU51bWJlck9iamVjdEltcEUgQCAzNjEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzE1T2JqZWN0T2JqZWN0SW1wRSBAIDM2MiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTVSZWdFeHBPYmplY3RJbXBFIEAgMzYzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxNVJ1bnRpbWVBcnJheUltcEUgQCAzNjQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzE1U3RyaW5nT2JqZWN0SW1wRSBAIDM2NSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTVWYXJEZWNsTGlzdE5vZGVFIEAgMzY2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNkFyZ3VtZW50TGlzdE5vZGVFIEAgMzY3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNkFycmF5SW5zdGFuY2VJbXBFIEAgMzY4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNkJvb2xlYW5PYmplY3RJbXBFIEAgMzY5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNkRhdGVQcm90b0Z1bmNJbXBFIEAgMzcwIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNkRhdGVQcm90b3R5cGVJbXBFIEAgMzcxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNkZ1bmN0aW9uQm9keU5vZGVFIEAgMzcyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNkZ1bmN0aW9uQ2FsbE5vZGVFIEAgMzczIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNlJ1bnRpbWVNZXRob2RJbXBFIEAgMzc0IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNlJ1bnRpbWVPYmplY3RJbXBFIEAgMzc1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxNlZhclN0YXRlbWVudE5vZGVFIEAgMzc2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlMxN0FycmF5UHJvdG9GdW5jSW1wRSBAIDM3NyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4z
S0pTMTdBcnJheVByb3RvdHlwZUltcEUgQCAzNzggTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZO
M0tKUzE3QmluYXJ5TG9naWNhbE5vZGVFIEAgMzc5IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRW
TjNLSlMxN0RhdGVPYmplY3RGdW5jSW1wRSBAIDM4MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTMTdFcnJvclByb3RvRnVuY0ltcEUgQCAzODEgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzE3RXhwclN0YXRlbWVudE5vZGVFIEAgMzgyIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBf
WlRWTjNLSlMxN0Z1bmN0aW9uT2JqZWN0SW1wRSBAIDM4MyBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTMTdPYmplY3RMaXRlcmFsTm9kZUUgQCAzODQgTk9OQU1FIDsgIzxWVD4jDQorICAg
IF9aVFZOM0tKUzE3UHJvcGVydHlWYWx1ZU5vZGVFIEAgMzg1IE5PTkFNRSA7ICM8VlQ+Iw0KKyAg
ICBfWlRWTjNLSlMxN1N0cmluZ0luc3RhbmNlSW1wRSBAIDM4NiBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTMThFbXB0eVN0YXRlbWVudE5vZGVFIEAgMzg3IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlMxOE51bWJlclByb3RvRnVuY0ltcEUgQCAzODggTk9OQU1FIDsgIzxWVD4j
DQorICAgIF9aVFZOM0tKUzE4T2JqZWN0UHJvdG9GdW5jSW1wRSBAIDM4OSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTMThSZWdFeHBQcm90b0Z1bmNJbXBFIEAgMzkwIE5PTkFNRSA7ICM8
VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOFNvdXJjZUVsZW1lbnRzTm9kZUUgQCAzOTEgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzE4U3RyaW5nUHJvdG9GdW5jSW1wRSBAIDM5MiBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMThTdHJpbmdQcm90b3R5cGVJbXBFIEAgMzkzIE5PTkFN
RSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOUJvb2xlYW5Qcm90b0Z1bmNJbXBFIEAgMzk0IE5P
TkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOURlY2xhcmVkRnVuY3Rpb25JbXBFIEAgMzk1
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOUludGVybmFsRnVuY3Rpb25JbXBFIEAg
Mzk2IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMxOVN0cmluZ09iamVjdEZ1bmNJbXBF
IEAgMzk3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlMyMEZ1bmN0aW9uUHJvdG9GdW5j
SW1wRSBAIDM5OCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTMjBGdW5jdGlvblByb3Rv
dHlwZUltcEUgQCAzOTkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzROb2RlRSBAIDQw
MCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTNklmTm9kZUUgQCA0MDEgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzdBZGROb2RlRSBAIDQwMiBOT05BTUUgOyAjPFZUPiMNCisg
ICAgX1pUVk4zS0pTN0Zvck5vZGVFIEAgNDAzIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNL
SlM3TnVsbEltcEUgQCA0MDQgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzdUcnlOb2Rl
RSBAIDQwNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOEJpbmRpbmdzNkNDbGFzc0Ug
QCA0MDYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzhCaW5kaW5nczZDRmllbGRFIEAg
NDA3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4QmluZGluZ3M4SW5zdGFuY2VFIEAg
NDA4IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM4QmluZGluZ3M5Q0luc3RhbmNlRSBA
IDQwOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOERlYnVnZ2VyRSBAIDQxMCBOT05B
TUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOE11bHROb2RlRSBAIDQxMSBOT05BTUUgOyAjPFZU
PiMNCisgICAgX1pUVk4zS0pTOE51bGxOb2RlRSBAIDQxMiBOT05BTUUgOyAjPFZUPiMNCisgICAg
X1pUVk4zS0pTOFRoaXNOb2RlRSBAIDQxMyBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pT
OFZhbHVlSW1wRSBAIDQxNCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFZvaWROb2Rl
RSBAIDQxNSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOFdpdGhOb2RlRSBAIDQxNiBO
T05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUFycmF5Tm9kZUUgQCA0MTcgTk9OQU1FIDsg
IzxWVD4jDQorICAgIF9aVFZOM0tKUzlCbG9ja05vZGVFIEAgNDE4IE5PTkFNRSA7ICM8VlQ+Iw0K
KyAgICBfWlRWTjNLSlM5QnJlYWtOb2RlRSBAIDQxOSBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pU
Vk4zS0pTOUNhdGNoTm9kZUUgQCA0MjAgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlD
b21tYU5vZGVFIEAgNDIxIE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5RXF1YWxOb2Rl
RSBAIDQyMiBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOUZvckluTm9kZUUgQCA0MjMg
Tk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlHcm91cE5vZGVFIEAgNDI0IE5PTkFNRSA7
ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5TGFiZWxOb2RlRSBAIDQyNSBOT05BTUUgOyAjPFZUPiMN
CisgICAgX1pUVk4zS0pTOU51bWJlckltcEUgQCA0MjYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9a
VFZOM0tKUzlPYmplY3RJbXBFIEAgNDI3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5
UmVnRXhwSW1wRSBAIDQyOCBOT05BTUUgOyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVNoaWZ0Tm9k
ZUUgQCA0MjkgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFZOM0tKUzlTdHJpbmdJbXBFIEAgNDMw
IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICBfWlRWTjNLSlM5VGhyb3dOb2RlRSBAIDQzMSBOT05BTUUg
OyAjPFZUPiMNCisgICAgX1pUVk4zS0pTOVdoaWxlTm9kZUUgQCA0MzIgTk9OQU1FIDsgIzxWVD4j
DQogDQpJbmRleDogSmF2YVNjcmlwdENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvZ3JvdXAvSmF2YVNjcmlwdENvcmUubW1wCShyZXZp
c2lvbiAxNzA2OSkNCisrKyBKYXZhU2NyaXB0Q29yZS9ncm91cC9KYXZhU2NyaXB0Q29yZS5tbXAJ
KHdvcmtpbmcgY29weSkNCkBAIC00OCwxMiArNDgsMTUgQEANCiANCiANCiBTWVNURU1JTkNMVURF
IC4uXGtqcw0KK1VTRVJJTkNMVURFIC4uXGJpbmRpbmdzDQorU1lTVEVNSU5DTFVERSAuLlxiaW5k
aW5ncw0KK1NZU1RFTUlOQ0xVREUgLi5cYmluZGluZ3NcYw0KIFNZU1RFTUlOQ0xVREUgLi5ccGNy
ZQ0KIFNZU1RFTUlOQ0xVREUgLi5cLi5cTWVtb3J5TWFuYWdlclxpbmMNCiAjaWZuZGVmIF9fQlJP
V1NFUl9TREsNCiBNV19MQVlFUl9TWVNURU1JTkNMVURFDQogI2Vsc2UNCi1TWVNURU1JTkNMVURF
IFxFUE9DMzJcSU5DTFVERQ0KK1NZU1RFTUlOQ0xVREUgXEVQT0MzMlxJTkNMVURFIFxlcG9jMzJc
aW5jbHVkZVxvZW0NCiAjZW5kaWYNCiBTWVNURU1JTkNMVURFIFxFUE9DMzJcSU5DTFVERVxMSUJD
DQogDQpAQCAtMTAyLDYgKzEwNSwyNCBAQA0KIFNPVVJDRSB2YWx1ZS5jcHANCiAvL1NPVVJDRSBX
cnRTdGF0aWNzLmNwcA0KIA0KK1NPVVJDRVBBVEggIC4uXGJpbmRpbmdzDQorDQorU09VUkNFIG5w
cnVudGltZS5jcHANCitTT1VSQ0UgTlBfanNvYmplY3QuY3BwIA0KK1NPVVJDRSBydW50aW1lLmNw
cCANCitTT1VSQ0UgcnVudGltZV9hcnJheS5jcHAgDQorU09VUkNFIHJ1bnRpbWVfbWV0aG9kLmNw
cCANCitTT1VSQ0UgcnVudGltZV9vYmplY3QuY3BwIA0KK1NPVVJDRSBydW50aW1lX3Jvb3QuY3Bw
IA0KKy8vU09VUkNFIHNvZnRsaW5raW5nLmMgDQorDQorU09VUkNFUEFUSCAgLi5cYmluZGluZ3Nc
Yw0KKw0KK1NPVVJDRSBjX2NsYXNzLmNwcA0KK1NPVVJDRSBjX2luc3RhbmNlLmNwcA0KK1NPVVJD
RSBjX3J1bnRpbWUuY3BwDQorU09VUkNFIGNfdXRpbGl0eS5jcHANCisNCiBMSUJSQVJZICAgICAg
ICAgZXN0bGliLmxpYg0KIExJQlJBUlkgICAgICAgICBldXNlci5saWINCiANCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUva2pzL2ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlw
dENvcmUva2pzL2ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTEzNSwxMiArMTM1
LDEyIEBADQogICAgIEludGVycHJldGVyTG9jayBsb2NrOwogICAgIEV4ZWNTdGF0ZSAqZXhlYyA9
IHJlcC0+Z2xvYmFsRXhlYygpOwogI2lmbmRlZiBfX09PTV9fCi0JLy9GSVhNRTogbWFrZSBhIG1l
bW9yeW1hbmFnZXIgdmVyc2lvbiBmb3Igc3RyZHVwCisgICAgLy9GSVhNRTogbWFrZSBhIG1lbW9y
eW1hbmFnZXIgdmVyc2lvbiBmb3Igc3RyZHVwCiAgICAgY2hhciAqZiA9IHN0cmR1cChzb3VyY2VV
UkwuYXNjaWkoKSk7CiAjZWxzZQotCWNvbnN0IGNoYXIqIHNzID0gc291cmNlVVJMLmFzY2lpKCk7
CisgICAgY29uc3QgY2hhciogc3MgPSBzb3VyY2VVUkwuYXNjaWkoKTsKICAgICBjaGFyICpmID0g
KGNoYXIqKU1lbW9yeU1hbmFnZXI6OkNhbGxvYyggc3RybGVuKHNzKSArIDEsIHNpemVvZiggY2hh
ciApICk7Ci0JbWVtY3B5KCBmLCBzcywgc3RybGVuKCBzcyApICk7CisgICAgbWVtY3B5KCBmLCBz
cywgc3RybGVuKCBzcyApICk7CiAjZW5kaWYKICAgICBjb25zdCBjaGFyICptZXNzYWdlID0gY29t
cC52YWx1ZSgpLnRvT2JqZWN0KGV4ZWMpLnRvU3RyaW5nKGV4ZWMpLmFzY2lpKCk7CiAjaWZuZGVm
IE5PS0lBX0NIQU5HRVMKQEAgLTM2MiwxMiArMzYyLDExIEBADQogICBwcmludEV4Y2VwdGlvbnMg
PSBwcmludDsKIH0KIAotI2lmbmRlZiBOT0tJQV9DSEFOR0VTCitFWFBPUlRfQwogdm9pZCAqSW50
ZXJwcmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVj
LCBCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2Jq
ZWN0ICZ2YWx1ZSwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgQmlu
ZGluZ3M6OlJvb3RPYmplY3QgKmN1cnJlbnQpCiB7CiAgICAgcmV0dXJuIEJpbmRpbmdzOjpJbnN0
YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBsYW5ndWFnZSwgdmFs
dWUsIG9yaWdpbiwgY3VycmVudCk7CiB9Ci0jZW5kaWYKIAogI2VuZGlmCiAKQEAgLTM4MSw3ICsz
ODAsNyBAQA0KICAgcmVwLT5yZXN0b3JlQnVpbHRpbnMoYnVpbHRpbnMpOwogfQogCi1TYXZlZEJ1
aWx0aW5zOjpTYXZlZEJ1aWx0aW5zKCkgOiAKK1NhdmVkQnVpbHRpbnM6OlNhdmVkQnVpbHRpbnMo
KSA6CiAgIF9pbnRlcm5hbCgwKQogewogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVy
cHJldGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIu
aAkocmV2aXNpb24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkNCkBAIC0yOCw3ICsyOCw3IEBADQogI2luY2x1ZGUgIm9iamVjdC5oIgog
I2luY2x1ZGUgInR5cGVzLmgiCiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VT
CisjaWYgQVBQTEVfQ0hBTkdFUwogCiAjaW5jbHVkZSAicnVudGltZS5oIgogCkBAIC0xMTQsNyAr
MTE0LDcgQEANCiAgIGNsYXNzIFNhdmVkQnVpbHRpbnNJbnRlcm5hbDsKIAogICBjbGFzcyBTYXZl
ZEJ1aWx0aW5zIHsKLQlPT01fTkVXX0RFTEVURQorICAgIE9PTV9ORVdfREVMRVRFCiAgICAgZnJp
ZW5kIGNsYXNzIEludGVycHJldGVySW1wOwogICBwdWJsaWM6CiAgICAgU2F2ZWRCdWlsdGlucygp
OwpAQCAtMjA1LDggKzIwNSw4IEBADQogICAgICAqLwogICAgIElNUE9SVF9DIENvbXBsZXRpb24g
ZXZhbHVhdGUoY29uc3QgVVN0cmluZyAmc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVy
LCBjb25zdCBVU3RyaW5nICZjb2RlLCBjb25zdCBWYWx1ZSAmdGhpc1YgPSBWYWx1ZSgpKTsKIAot
CS8vIE92ZXJsb2FkIG9mIGV2YWx1YXRlIHRvIGtlZXAgSmF2YVNjcmlwdEdsdWUgYm90aCBzb3Vy
Y2UgYW5kIGJpbmFyeSBjb21wYXRpYmxlLgotCUlNUE9SVF9DIENvbXBsZXRpb24gZXZhbHVhdGUo
Y29uc3QgVVN0cmluZyAmY29kZSwgY29uc3QgVmFsdWUgJnRoaXNWID0gVmFsdWUoKSwgY29uc3Qg
VVN0cmluZyAmc291cmNlRmlsZW5hbWUgPSBVU3RyaW5nKCkpOworICAgIC8vIE92ZXJsb2FkIG9m
IGV2YWx1YXRlIHRvIGtlZXAgSmF2YVNjcmlwdEdsdWUgYm90aCBzb3VyY2UgYW5kIGJpbmFyeSBj
b21wYXRpYmxlLgorICAgIElNUE9SVF9DIENvbXBsZXRpb24gZXZhbHVhdGUoY29uc3QgVVN0cmlu
ZyAmY29kZSwgY29uc3QgVmFsdWUgJnRoaXNWID0gVmFsdWUoKSwgY29uc3QgVVN0cmluZyAmc291
cmNlRmlsZW5hbWUgPSBVU3RyaW5nKCkpOwogCiAgICAgLyoqCiAgICAgICogQGludGVybmFsCkBA
IC0zNDAsNyArMzQwLDcgQEANCiAKICNpZmRlZiBOT0tJQV9DSEFOR0VTCiAgICAgSU1QT1JUX0Mg
dm9pZCBpbmNTdGF0ZW1lbnRDb3VudCgpOwotCUlNUE9SVF9DIHZvaWQgcmVzZXRTdGF0ZW1lbnRD
b3VudCgpOworICAgIElNUE9SVF9DIHZvaWQgcmVzZXRTdGF0ZW1lbnRDb3VudCgpOwogICAgIGlu
dCBzdGF0ZW1lbnRDb3VudCgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTM4Myw4ICszODMsOCBAQA0K
ICAgICAgKiBzZWN1cml0eSBjaGVja3MuCiAgICAgICovCiAgICAgdmlydHVhbCBib29sIGlzR2xv
YmFsT2JqZWN0KGNvbnN0IFZhbHVlICZ2KSB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIC8q
KiAKKworICAgIC8qKgogICAgICAqIEZpbmQgdGhlIGludGVycHJldGVyIGZvciBhIHBhcnRpY3Vs
YXIgZ2xvYmFsIG9iamVjdC4gIFRoaXMgc2hvdWxkIHJlYWxseQogICAgICAqIGJlIGEgc3RhdGlj
IG1ldGhvZCwgYnV0IHdlIGNhbid0IGRvIHRoYXQgaXMgQysrLiAgQWdhaW4sIGFzIHdpdGggaXNH
bG9iYWxPYmplY3QoKQogICAgICAqIGltcGxlbWVudGF0aW9uIHJlYWxseSBuZWVkIHRvIGtub3cg
YWJvdXQgYWxsIGluc3RhbmNlcyBvZiBJbnRlcnByZXRlcgpAQCAtMzkyLDcgKzM5Miw3IEBADQog
ICAgICAqIG92ZXJyaWRlIG9mIHRoaXMgbWV0aG9kIGlzIGN1cnJlbnRseSBpbiBXZWJDb3JlLgog
ICAgICAqLwogICAgIHZpcnR1YWwgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyRm9yR2xvYmFsT2Jq
ZWN0IChjb25zdCBWYWx1ZUltcCAqaW1wKSB7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICAvKioK
ICAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIGl0IGlzICdzYWZlJyB0byBleGVjdXRlIGNvZGUgaW4g
dGhlIHRhcmdldCBpbnRlcnByZXRlciBmcm9tIGFuCiAgICAgICogb2JqZWN0IHRoYXQgb3JpZ2lu
YXRlZCBpbiB0aGlzIGludGVycHJldGVyLiAgVGhpcyBjaGVjayBpcyB1c2VkIHRvIGVuZm9yY2Ug
V2ViQ29yZQpAQCAtNDAxLDExICs0MDEsMTAgQEANCiAgICAgICovCiAgICAgdmlydHVhbCBib29s
IGlzU2FmZVNjcmlwdCAoY29uc3QgSW50ZXJwcmV0ZXIgKnRhcmdldCkgeyByZXR1cm4gdHJ1ZTsg
fQogCi0jaWZuZGVmIE5PS0lBX0NIQU5HRVMgICAgCisgICAgSU1QT1JUX0MKICAgICB2aXJ0dWFs
IHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoRXhlY1N0YXRlICpleGVjLCBC
aW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgY29uc3QgT2JqZWN0
ICZ2YWx1ZSwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgQmluZGlu
Z3M6OlJvb3RPYmplY3QgKmN1cnJlbnQpOwogI2VuZGlmCi0jZW5kaWYKLSAgICAKKwogICBwcml2
YXRlOgogICAgIEludGVycHJldGVySW1wICpyZXA7CiAKQEAgLTQzMiw3ICs0MzEsNyBAQA0KICAg
ICogYW5kIGFsc28gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlIGNvbnRleHQuCiAgICAqLwog
ICBjbGFzcyBFeGVjU3RhdGUgewotCU9PTV9ORVdfREVMRVRFCisgICAgT09NX05FV19ERUxFVEUK
ICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXJJbXA7CiAgICAgZnJpZW5kIGNsYXNzIEZ1bmN0
aW9uSW1wOwogI2lmIEFQUExFX0NIQU5HRVMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9zdGRp
bnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9zdGRpbnQuaAkocmV2aXNp
b24gMTcwNjkpDQorKysgSmF2YVNjcmlwdENvcmUva2pzL3N0ZGludC5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjUsMzYgKzI1LDMzIEBADQogDQogI2luY2x1ZGUgPGUzMmRlZi5oPg0KIA0KLSNpZm5k
ZWYgdWludDMyX3QNCi0jZGVmaW5lIHVpbnQzMl90IFRVaW50MzINCi0jZGVmaW5lIGludDMyX3QJ
VEludDMyDQotI2VuZGlmDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7DQordHlwZWRl
ZiBzaWduZWQgY2hhciBpbnQ4X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsN
Cit0eXBlZGVmIHNob3J0IGludDE2X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7
DQordHlwZWRlZiBpbnQgaW50MzJfdDsNCit0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NF90Ow0KK3R5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NF90Ow0KIA0KLSNpZm5kZWYgdWludDE2X3QN
Ci0jZGVmaW5lIHVpbnQxNl90IFRVaW50MTYNCi0jZGVmaW5lIGludDE2X3QJVEludDE2DQotI2Vu
ZGlmDQordHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnRwdHJfdDsNCit0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50cHRyX3Q7DQogDQotI2lmbmRlZiB1aW50OF90DQotI2RlZmluZSB1aW50OF90IFRV
aW50OA0KLSNkZWZpbmUgaW50OF90CVRJbnQ4DQotI2VuZGlmDQotDQogI2Vsc2UNCiANCiAjaWZu
ZGVmIHVpbnQzMl90DQogI2RlZmluZSB1aW50MzJfdCB1bnNpZ25lZCBpbnQNCi0jZGVmaW5lIGlu
dDMyX3QJaW50DQorI2RlZmluZSBpbnQzMl90ICAgIGludA0KICNlbmRpZg0KIA0KICNpZm5kZWYg
dWludDE2X3QNCiAjZGVmaW5lIHVpbnQxNl90IHVuc2lnbmVkIHNob3J0IGludA0KLSNkZWZpbmUg
aW50MTZfdAkgc2hvcnQgaW50DQorI2RlZmluZSBpbnQxNl90ICAgICBzaG9ydCBpbnQNCiAjZW5k
aWYNCiANCiAjaWZuZGVmIHVpbnQ4X3QNCiAjZGVmaW5lIHVpbnQ4X3QgdW5zaWduZWQgY2hhcg0K
LSNkZWZpbmUgaW50OF90CWNoYXINCisjZGVmaW5lIGludDhfdCAgICBjaGFyDQogI2VuZGlmDQog
DQogDQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC00NzcsNiArNDc3LDcg
QEANCiAgICAgICovCiAgICAgc3RhdGljIHZvaWQgZ2xvYmFsQ2xlYXIoKTsKICNlbmRpZgorICAg
IFJlcCAqYXJlcCgpIGNvbnN0IHsgcmV0dXJuIHJlcDsgfQogICBwcml2YXRlOgogICAgIFVTdHJp
bmcoUmVwICpyKSB7IGF0dGFjaChyKTsgfQogICAgIHZvaWQgYXR0YWNoKFJlcCAqcikgeyByZXAg
PSByOyByLT5yZWYoKTsgfQpJbmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHAN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlQnJpZGdlLmNwcAkocmV2aXNp
b24gMTcwNjkpDQorKysgV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC0xNjUsNyArMTY1LDcgQEANCiAgICAgfQ0KICAgICBpUGFydC0+c2V0QnJpZGdl
KDApOw0KICAgICBpUGFydC0+ZGVyZWYoKTsNCi0gICAgDQorDQogICAgIGRlbGV0ZSBpU21hcnRU
ZXh0QnVmZmVyOw0KICAgICB9DQogDQpAQCAtMjkxLDcgKzI5MSw3IEBADQogRVhQT1JUX0MNCiB2
b2lkIENXZWJDb3JlQnJpZGdlOjpDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZyhjb25zdCBURGVz
QyYgYUVuY29kaW5nLCBUQm9vbCBhVXNlckNob3NlbikNCiB7DQotICAgIGlTbWFydExpbmtOb2Rl
ID0gTlVMTDsgICAgDQorICAgIGlTbWFydExpbmtOb2RlID0gTlVMTDsNCiAgICAgaVBhcnQtPnNl
dEVuY29kaW5nKFFTdHJpbmc6OkZyb21EZXMoYUVuY29kaW5nKSwgYVVzZXJDaG9zZW4pOw0KICAg
ICBDbGllbnQoKS5Eb2N1bWVudFN0YXJ0ZWQoKTsNCiB9DQpAQCAtMTMyNiw2ICsxMzI2LDEyIEBA
DQogDQogKi8NCiBFWFBPUlRfQw0KK05QT2JqZWN0KiBDV2ViQ29yZUJyaWRnZTo6V2luZG93U2Ny
aXB0TlBPYmplY3QoKQ0KK3sNCisgICAgcmV0dXJuIGlQYXJ0LT53aW5kb3dTY3JpcHROUE9iamVj
dCgpOw0KK30NCisNCitFWFBPUlRfQw0KIHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE5hbWUoY29u
c3QgVERlc0MmIGFOYW1lKQ0KIHsNCiAgICAgaVBhcnQtPktIVE1MUGFydDo6c2V0TmFtZShRU3Ry
aW5nOjpGcm9tRGVzKGFOYW1lKSk7DQpAQCAtMTQyNiwxMiArMTQzMiwxMiBAQA0KIFRQdHJDIENX
ZWJDb3JlQnJpZGdlOjpHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMKFRCb29sJiBhQ29u
dGludWUpDQogew0KIA0KLSAgICBpZigoIWlQYXJ0KSB8fCAoIWlQYXJ0LT54bWxEb2NJbXBsKCkp
KSANCisgICAgaWYoKCFpUGFydCkgfHwgKCFpUGFydC0+eG1sRG9jSW1wbCgpKSkNCiAgICAgICAg
IHsNCiAgICAgICAgIGFDb250aW51ZSA9IEVGYWxzZTsNCiAgICAgICAgIHJldHVybiBUUHRyQygp
Ow0KICAgICAgICAgfQ0KLSAgDQorDQogICAgIGlmIChpU21hcnRMaW5rTm9kZSA9PSBOVUxMKQ0K
ICAgICAgICAgew0KICAgICAgICAgaVNtYXJ0TGlua05vZGUgPSBpUGFydC0+eG1sRG9jSW1wbCgp
Ow0KQEAgLTE0NDEsMTAgKzE0NDcsMTAgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICAvL2Fk
ZCByZWYNCiAgICAgICAgIH0NCi0gICAgZWxzZSANCi0gICAgICAgIHsgICANCisgICAgZWxzZQ0K
KyAgICAgICAgew0KICAgICAgICAgRE9NOjpOb2RlSW1wbCogbm9kZVRlbXAgPSBpU21hcnRMaW5r
Tm9kZTsNCi0gICAgICAgIGlTbWFydExpbmtOb2RlID0gaVNtYXJ0TGlua05vZGUtPnRyYXZlcnNl
TmV4dE5vZGUoKTsgIA0KKyAgICAgICAgaVNtYXJ0TGlua05vZGUgPSBpU21hcnRMaW5rTm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSgpOw0KICAgICAgICAgaWYoaVNtYXJ0TGlua05vZGUpDQogICAgICAg
ICAgICAgew0KICAgICAgICAgICAgIGlTbWFydExpbmtOb2RlLT5yZWYoKTsNCkBAIC0xNDYwLDE2
ICsxNDY2LDE2IEBADQogICAgICAgICBpZihpU21hcnRMaW5rTm9kZS0+cmVuZGVyZXIoKS0+aXNU
ZXh0KCkpDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGFDb250aW51ZSA9IEVUcnVlOw0K
LSAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRl
clRleHQgKj4oaVNtYXJ0TGlua05vZGUtPnJlbmRlcmVyKCkpOyAgICAgICAgICAgDQorICAgICAg
ICAgICAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAq
PihpU21hcnRMaW5rTm9kZS0+cmVuZGVyZXIoKSk7DQogICAgICAgICAgICAgZGVsZXRlIGlTbWFy
dFRleHRCdWZmZXI7DQogICAgICAgICAgICAgaVNtYXJ0VGV4dEJ1ZmZlciA9IE5VTEw7DQotICAg
ICAgICAgICAgaVNtYXJ0VGV4dEJ1ZmZlciA9IHRleHRSZW5kZXJlci0+ZGF0YSgpLnN0cmluZygp
LkRlcygpLkFsbG9jTCgpOyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBpU21hcnRUZXh0
QnVmZmVyID0gdGV4dFJlbmRlcmVyLT5kYXRhKCkuc3RyaW5nKCkuRGVzKCkuQWxsb2NMKCk7DQog
ICAgICAgICAgICAgcmV0dXJuIGlTbWFydFRleHRCdWZmZXItPlB0cigpOw0KICAgICAgICAgICAg
IH0NCiAgICAgICAgIH0NCiANCiAgICAgRE9NOjpOb2RlSW1wbCogbm9kZVRlbXAgPSBpU21hcnRM
aW5rTm9kZTsNCi0gICAgaVNtYXJ0TGlua05vZGUgPSBpU21hcnRMaW5rTm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZSgpOyAgIA0KKyAgICBpU21hcnRMaW5rTm9kZSA9IGlTbWFydExpbmtOb2RlLT50cmF2
ZXJzZU5leHROb2RlKCk7DQogICAgIGlmKGlTbWFydExpbmtOb2RlKQ0KICAgICAgICAgew0KICAg
ICAgICAgaVNtYXJ0TGlua05vZGUtPnJlZigpOw0KQEAgLTE0NzksMTMgKzE0ODUsMTMgQEANCiAg
ICAgfQ0KIA0KICAgICBhQ29udGludWUgPSBFRmFsc2U7DQotICAgIHJldHVybiBUUHRyQygpOyAg
ICANCisgICAgcmV0dXJuIFRQdHJDKCk7DQogfQ0KIA0KIEVYUE9SVF9DDQogdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6R2V0UmVuZGVyVGV4dEFyZWEoY29uc3QgVERlc0MmIGFUZXh0LCBSQXJyYXk8VFJl
Y3Q+JiBhUmVjdCkNCiB7DQotICBpUGFydC0+Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShhVGV4dCwg
Tm9kZShpU21hcnRMaW5rTm9kZSksIGFSZWN0KTsgICANCisgIGlQYXJ0LT5nZXRSZW5kZXJUZXh0
UmVjdEFycmF5KGFUZXh0LCBOb2RlKGlTbWFydExpbmtOb2RlKSwgYVJlY3QpOw0KIH0NCiANCiAN
CkBAIC0yMDkzLDcgKzIwOTksNyBAQA0KICAgICAgICAgbmV3KEVMZWF2ZSkgQ0FycmF5UHRyRmxh
dDxDV2ViQ29yZVBhZ2VEYXRhSXRlbT4oMTApOw0KICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBp
dGVtQXJyYXkgKTsNCiAgICAgQ1dlYkNvcmVQYWdlRGF0YUl0ZW0qIGRhdGFJdGVtID0gTlVMTDsN
Ci0gICAgDQorDQogICAgIC8vIGdldCBwYWdlIG1hcmt1cCBkb2N1bWVudCBpZiByZXF1ZXN0ZWQN
CiAgICAgaWYoYVR5cGVNYXNrICYgQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OkVNYXJrdXApDQogICAg
ICAgICB7DQpAQCAtMjEwMSw4ICsyMTA3LDggQEANCiAgICAgICAgIGRhdGFJdGVtID0gQ1dlYkNv
cmVQYWdlRGF0YUl0ZW06Ok5ld0woQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OkVNYXJrdXApOw0KICAg
ICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZGF0YUl0ZW0gKTsNCiAgICAgICAgIGRhdGFJdGVt
LT5TZXRVcmxMKGlQYXJ0LT5yZXF1ZXN0ZWRVUkxTdHJpbmcoKS5EZXMoKSk7DQotICAgICAgICBk
YXRhSXRlbS0+U2V0Q29udGVudFR5cGVMKF9MKCJ0ZXh0L2h0bWwiKSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgDQotICAgICAgICBkYXRhSXRlbS0+U2V0Q2hhcnNldEwoX0woInVjcy0yIikpOyAN
CisgICAgICAgIGRhdGFJdGVtLT5TZXRDb250ZW50VHlwZUwoX0woInRleHQvaHRtbCIpKTsNCisg
ICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0TChfTCgidWNzLTIiKSk7DQogICAgICAgICBkYXRh
SXRlbS0+U2V0RGF0YUwoIHBhZ2VNYXJrdXBRLkRlcygpICk7DQogICAgICAgICBpdGVtQXJyYXkt
PkFwcGVuZEwoZGF0YUl0ZW0pOw0KICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoIGRhdGFJdGVt
ICk7DQpAQCAtMjEyNCw5ICsyMTMwLDkgQEANCiAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNr
OjpQdXNoTCggZGF0YUl0ZW0gKTsNCiAgICAgICAgICAgICAgICAgZGF0YUl0ZW0tPlNldFVybEwo
c2hlZXRVcmwuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0
Q29udGVudFR5cGVMKGRTdHlsZXNoZWV0LnR5cGUoKS5zdHJpbmcoKS5EZXMoKSk7DQotICAgICAg
ICAgICAgICAgIC8vQ2hhcnNldCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQgcGFnZXMuICAgDQorICAg
ICAgICAgICAgICAgIC8vQ2hhcnNldCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQgcGFnZXMuDQogICAg
ICAgICAgICAgICAgIGRhdGFJdGVtLT5TZXRDaGFyc2V0TChfTCgidWNzLTIiKSk7DQotICAgICAg
ICAgICAgICAgIGRhdGFJdGVtLT5TZXREYXRhTChrU3R5bGVTaGVldC0+c2hlZXQoKS5zdHJpbmco
KS5EZXMoKSk7ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0
RGF0YUwoa1N0eWxlU2hlZXQtPnNoZWV0KCkuc3RyaW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAg
ICAgICBpdGVtQXJyYXktPkFwcGVuZEwoZGF0YUl0ZW0gKTsNCiAgICAgICAgICAgICAgICAgQ2xl
YW51cFN0YWNrOjpQb3AoIGRhdGFJdGVtICk7DQogICAgICAgICAgICAgICAgIH0NCkBAIC0yMTUz
LDcgKzIxNTksNyBAQA0KICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBkYXRh
SXRlbSApOw0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0VXJsTChzY3JpcHRVcmwuc3Ry
aW5nKCkuRGVzKCkpOw0KICAgICAgICAgICAgICAgICBkYXRhSXRlbS0+U2V0Q29udGVudFR5cGVM
KF9MKCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSk7DQotICAgICAgICAgICAgICAgIC8vIENo
YXJzZXQgaXMgcmVxdWlyZWQgZm9yIHNhdmVkIHBhZ2VzLiANCisgICAgICAgICAgICAgICAgLy8g
Q2hhcnNldCBpcyByZXF1aXJlZCBmb3Igc2F2ZWQgcGFnZXMuDQogICAgICAgICAgICAgICAgIGRh
dGFJdGVtLT5TZXRDaGFyc2V0TChfTCgidWNzLTIiKSk7DQogICAgICAgICAgICAgICAgIGRhdGFJ
dGVtLT5TZXREYXRhTChrU2NyaXB0LT5zY3JpcHQoKS5zdHJpbmcoKS5EZXMoKSk7DQogICAgICAg
ICAgICAgICAgIGl0ZW1BcnJheS0+QXBwZW5kTChkYXRhSXRlbSk7DQpAQCAtMjg1OSwxNCArMjg2
NSwxNCBAQA0KIHsNCiAgICAgaWYoIWlQYXJ0IHx8ICFpUGFydC0+eG1sRG9jSW1wbCgpKSByZXR1
cm4gRUZhbHNlOw0KICAgICBpZihhSW5pdGlhbGl6ZSkgew0KLSAgICAgICAgDQorDQogICAgICAg
ICBpZiAoaVBhcnQtPnhtbERvY0ltcGwoKSAmJiBpUGFydC0+eG1sRG9jSW1wbCgpLT5mb2N1c05v
ZGUoKSl7DQogICAgICAgICAgICAgUVBvaW50IGNwKGlQYXJ0LT54bWxEb2NJbXBsKCktPmZvY3Vz
Tm9kZSgpLT5nZXRSZWN0KCkuY2VudGVyKCkpOw0KICAgICAgICAgICAgIGlQYXJ0LT5zZXRDdXJz
b3JQb3NpdGlvbihjcCk7DQogICAgICAgICAgICAgaVBhcnQtPnZpZXcoKS0+R2V0RG9jdW1lbnRW
aWV3KCkuU2V0Rm9jdXMoRVRydWUpOw0KICAgICAgICAgICAgIHJldHVybiBFVHJ1ZTsNCiAgICAg
ICAgIH0NCi0gICAgICAgIA0KKw0KICAgICAgICAgUVB0ckxpc3Q8S1BhcnRzOjpSZWFkT25seVBh
cnQ+IGNoaWxkUGFydExpc3QgPSBpUGFydC0+ZnJhbWVzKCk7DQogICAgICAgICBmb3IoS1BhcnRz
OjpSZWFkT25seVBhcnQqIGNoaWxkUGFydCA9IGNoaWxkUGFydExpc3QuZmlyc3QoKTtjaGlsZFBh
cnQ7Y2hpbGRQYXJ0ID0gY2hpbGRQYXJ0TGlzdC5uZXh0KCkpew0KICAgICAgICAgICAgIEtIVE1M
UGFydCAqa2h0bWxfcGFydCA9IHN0YXRpY19jYXN0PEtIVE1MUGFydCAqPihjaGlsZFBhcnQpOw0K
QEAgLTI4ODQsNyArMjg5MCw3IEBADQogICAgICAgICBpUGFydC0+dGFiYmVkTmF2aWdhdGlvbigw
LDEsYUVsVHlwZSwgYUluaXRpYWxpemUpOw0KICAgICAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9
DQotICAgIA0KKw0KICAgICBpbnQgbHIgPSAoYURpcmVjdGlvbiA9PSBFV2ViTmF2TGVmdCkgPyAt
MSA6IChhRGlyZWN0aW9uID09IEVXZWJOYXZSaWdodCkgPyAxIDogMCA7DQogICAgIGludCB0YiA9
IChsciAhPSAwKSA/IDA6IChhRGlyZWN0aW9uID09IEVXZWJOYXZVcCkgPyAtMSA6IDEgOw0KICAg
ICBib29sIGZvdW5kID0gaVBhcnQtPnRhYmJlZE5hdmlnYXRpb24obHIsdGIsYUVsVHlwZSxhSW5p
dGlhbGl6ZSk7DQpJbmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oCShyZXZpc2lvbiAxNzA2OSkN
CisrKyBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlQnJpZGdlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0x
MzMsNiArMTMzLDEzIEBADQogY2xhc3MgS0hUTUxWaWV3Ow0KIGNsYXNzIFJlbmRlckFyZW5hOw0K
IA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorbmFtZXNwYWNlIEtKUyB7DQorICAgIGNs
YXNzIEV4ZWNTdGF0ZTsNCisgICAgY2xhc3MgT2JqZWN0SW1wOw0KKyAgICBjbGFzcyBQcm90ZWN0
ZWRWYWx1ZTsNCit9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogbmFtZXNwYWNlIGto
dG1sIHsNCiAgICAgY2xhc3MgUmVuZGVyUGFydDsNCiAgICAgY2xhc3MgUmVuZGVyT2JqZWN0Ow0K
QEAgLTE1OSw2ICsxNjYsNyBAQA0KIA0KIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0Ow0K
IGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVtOw0KK2NsYXNzIE5QT2JqZWN0Ow0KIA0KIHR5cGVk
ZWYga2h0bWw6OlJlbmRlclBhcnQgS0hUTUxSZW5kZXJQYXJ0Ow0KIA0KQEAgLTI0NSw4ICsyNTMs
OCBAQA0KICAgICAgICAgSU1QT1JUX0MgVFB0ckMgUmVmZXJyZXIoKSBjb25zdDsNCiAgICAgICAg
IElNUE9SVF9DIFRQdHJDIERvbWFpbigpIGNvbnN0Ow0KICAgICAgICAgSU1QT1JUX0MgSEJ1ZkMq
IEdldFRleHRDb250ZW50TCgpOw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgIElNUE9SVF9D
IFRQdHJDIEdldE5leHRSZW5kZXJUZXh0Rm9yU21hcnRMaW5rc0woVEJvb2wmIGFLZWVwR29pbmcp
OyAgICANCisNCisgICAgICAgIElNUE9SVF9DIFRQdHJDIEdldE5leHRSZW5kZXJUZXh0Rm9yU21h
cnRMaW5rc0woVEJvb2wmIGFLZWVwR29pbmcpOw0KICAgICAgICAgSU1QT1JUX0Mgdm9pZCBHZXRS
ZW5kZXJUZXh0QXJlYShjb25zdCBURGVzQyYgYVRleHQsIFJBcnJheTxUUmVjdD4mIGFSZWN0KTsN
CiANCiAgICAgICAgIElNUE9SVF9DIHZvaWQgSW5zdGFsbEluRnJhbWUoTVdlYkNvcmVTY3JvbGxW
aWV3JiBhVmlldyk7DQpAQCAtNDQyLDYgKzQ1MCw3IEBADQogICAgICAgICAvL3ZvaWQgZW5zdXJl
Q2FyZXRWaXNpYmxlOw0KIA0KICAgICAgICAgLy8tIChXZWJTY3JpcHRPYmplY3QgKil3aW5kb3dT
Y3JpcHRPYmplY3Q7DQorICAgICAgICBJTVBPUlRfQyBOUE9iamVjdCogV2luZG93U2NyaXB0TlBP
YmplY3QoKTsNCiANCiAgICAgICAgIC8vLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdPcGVyYXRpb25G
b3JEcmFnZ2luZ0luZm8oaWQgPE5TRHJhZ2dpbmdJbmZvPilpbmZvOw0KICAgICAgICAgLy92b2lk
IGRyYWdFeGl0ZWRXaXRoRHJhZ2dpbmdJbmZvKGlkIDxOU0RyYWdnaW5nSW5mbz4paW5mbzsNCkBA
IC01MTIsMTEgKzUyMSwxMSBAQA0KICAgICAgICAgVEJvb2wgaVNob3VsZENyZWF0ZVJlbmRlcmVy
czsNCiAgICAgICAgIC8vIHBvaW50ZXIgdG8gdGhlIGNsaWVudCBzaWRlIGJyaWRnZSBpbnRlcmZh
Y2UNCiAgICAgICAgIE1XZWJDbGllbnRCcmlkZ2UqIGlDbGllbnRCcmlkZ2U7DQotICAgICAgICAv
L3BvaW50ZXIgZm9yIHJlbmRlciB0ZXh0IG9iamVjdCBmb3Igc21hcnQgbGluayBwYXJzaW5nIA0K
KyAgICAgICAgLy9wb2ludGVyIGZvciByZW5kZXIgdGV4dCBvYmplY3QgZm9yIHNtYXJ0IGxpbmsg
cGFyc2luZw0KICAgICAgICAgRE9NOjpOb2RlSW1wbCogaVNtYXJ0TGlua05vZGU7DQogICAgICAg
ICAvL3BvaW50ZXIgZm9yIHNtYXJ0IHRleHQgYnVmZmVyDQogICAgICAgICBIQnVmQyogaVNtYXJ0
VGV4dEJ1ZmZlcjsNCi0gICAgICAgIA0KKw0KICAgICB9Ow0KIA0KIA0KQEAgLTYxNCw3ICs2MjMs
NyBAQA0KICAgICB2aXJ0dWFsIFRCb29sIERlZmVyc0xvYWRpbmcoKSA9IDA7DQogICAgIHZpcnR1
YWwgdm9pZCBTZXREZWZlcnNMb2FkaW5nKFRCb29sIGFMb2FkaW5nKSA9IDA7DQogDQotICAgIHZp
cnR1YWwgdm9pZCBTYXZlRm9ybURhdGEoY29uc3QgQ0FycmF5UHRyRmxhdDxDV2ViQ29yZUZvcm1E
YXRhRWxlbWVudD4mIGFGb3JtRGF0YSkgPSAwOyANCisgICAgdmlydHVhbCB2b2lkIFNhdmVGb3Jt
RGF0YShjb25zdCBDQXJyYXlQdHJGbGF0PENXZWJDb3JlRm9ybURhdGFFbGVtZW50PiYgYUZvcm1E
YXRhKSA9IDA7DQogDQogICAgIHZpcnR1YWwgdm9pZCBTYXZlRG9jdW1lbnRTdGF0ZShjb25zdCBU
QXJyYXk8VFB0ckM+JiBhRG9jdW1lbnRTdGF0ZSkgPSAwOw0KICAgICB2aXJ0dWFsIFRBcnJheTxU
UHRyQz4qIERvY3VtZW50U3RhdGUoKSBjb25zdCA9IDA7DQpAQCAtNzE3LDYgKzcyNiwxMCBAQA0K
ICAgICB2aXJ0dWFsIHZvaWQgU2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNvbnN0IFREZXNDJiBh
TmFtZSwgY29uc3QgVERlc0MmIGFWYWx1ZSkgPSAwOw0KIA0KICAgICB2aXJ0dWFsIFRCb29sIENh
bmNlbEluUHJvZ3Jlc3MoKSA9IDA7DQorDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisg
ICAgdmlydHVhbCB2b2lkKiBjcmVhdGVXaWRnZXRPYmplY3Qodm9pZCogZXhlYykgPSAwOw0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIH07DQogDQogI2VuZGlmICAgICAgLy8gV0VCQ09S
RUJSSURHRV9IDQpJbmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29yZVdpZGdldC5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2ViQ29yZVdpZGdldC5oCShyZXZpc2lvbiAxNzA2OSkN
CisrKyBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkNCkBAIC01
Niw3ICs1Niw3IEBADQogDQogDQogLyoqDQotKiAgaW50ZXJmYWNlLCB1c2VkIGJ5IHdpZGdldCBj
bGFzc2VzIA0KKyogIGludGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3Nlcw0KICogIEBsaWIg
d2ViY29yZS5saWINCiAqICBAc2luY2UgMy4xDQogKi8NCkBAIC02NCw5ICs2NCw5IEBADQogICB7
DQogICBwdWJsaWM6DQogDQotICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJDb3JlR3JhcGhpY3ND
b250ZXh0JiAvKmFHYyovLCANCisgICAgdmlydHVhbCB2b2lkIERyYXcoQ1dlYkNvcmVHcmFwaGlj
c0NvbnRleHQmIC8qYUdjKi8sDQogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRSZWN0JiAv
KmFSZWN0Ki8pID0gMDsNCi0gICAgDQorDQogICAgIHZpcnR1YWwgVEJvb2wgSXNWaXNpYmxlKCkg
Y29uc3QgPSAwOw0KIA0KICAgICB2aXJ0dWFsIFRSZWN0IFJlY3QoKSBjb25zdCA9IDA7DQpAQCAt
ODEsMTIgKzgxLDEyIEBADQogDQogICAgIHZpcnR1YWwgdm9pZCBTZXRSZWN0KGNvbnN0IFRSZWN0
JiBhUmVjdCkgPSAwOw0KIA0KLSAgICB2aXJ0dWFsIHZvaWQgQWN0aXZhdGUoKSA9IDA7ICAgIA0K
LSAgICANCisgICAgdmlydHVhbCB2b2lkIEFjdGl2YXRlKCkgPSAwOw0KKw0KICAgICB2aXJ0dWFs
IHZvaWQgU2V0UGFyZW50KCBNV2ViQ29yZVNjcm9sbFZpZXcqIGFQYXJlbnQgKSA9ICAwOw0KIA0K
ICAgICB2aXJ0dWFsIHZvaWQgQ2xvc2UoKSA9IDA7DQotICAgIA0KKw0KICAgICB2aXJ0dWFsIFRC
b29sIElzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIEVGYWxzZTsgfQ0KIA0KICAgICB2aXJ0
dWFsIHZvaWQgU2V0UGFsZXR0ZShUV2ViQ29yZVBhbGV0dGUpIHt9DQpAQCAtOTQsMzIgKzk0LDM0
IEBADQogICAgIHZpcnR1YWwgdm9pZCBTZXRPdXRsaW5lV2lkdGgoVFVpbnQ4ICkge30NCiANCiAg
ICAgdmlydHVhbCB2b2lkIFNldFdyaXRpbmdEaXJlY3Rpb25SdGwoVEJvb2wpIHt9DQorDQorICAg
IHZpcnR1YWwgdm9pZCogUGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0NCiAg
IH07DQogDQogDQogLyoqDQotKiAgaW50ZXJmYWNlLCB1c2VkIGJ5IHdpZGdldCBjbGFzc2VzIA0K
KyogIGludGVyZmFjZSwgdXNlZCBieSB3aWRnZXQgY2xhc3Nlcw0KICogIEBsaWIgd2ViY29yZS5s
aWINCiAqICBAc2luY2UgMy4xDQogKi8NCiBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXc6IHB1Ymxp
YyBNV2ViQ29yZVdpZGdldA0KICAgew0KLSAgcHVibGljOiAgICAgIA0KLSAgDQorICBwdWJsaWM6
DQorDQogICAgIFRCb29sIElzU2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIEVUcnVlOyB9DQot
ICAgIA0KLSAgICB2aXJ0dWFsIFRTaXplIFNpemVIaW50KCkgY29uc3QgeyByZXR1cm4gVFNpemUo
KTsgfSAgICANCi0gICAgDQotICAgIHZpcnR1YWwgdm9pZCBEcmF3KENXZWJDb3JlR3JhcGhpY3ND
b250ZXh0JiAvKmFHYyovLCANCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFJlY3QmIC8q
YVJlY3QqLykgeyB9ICAgIA0KLSAgICANCi0gICAgdmlydHVhbCB2b2lkIEludmFsaWRhdGVSZWN0
KGNvbnN0IFRSZWN0JiAvKmFSZWN0Ki8sIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEJvb2wgLyphRHJhd05vdyovKSA9IDA7ICANCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisgICAgdmlydHVhbCBU
U2l6ZSBTaXplSGludCgpIGNvbnN0IHsgcmV0dXJuIFRTaXplKCk7IH0NCisNCisgICAgdmlydHVh
bCB2b2lkIERyYXcoQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQmIC8qYUdjKi8sDQorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRSZWN0JiAvKmFSZWN0Ki8pIHsgfQ0KKw0KKyAgICB2aXJ0dWFs
IHZvaWQgSW52YWxpZGF0ZVJlY3QoY29uc3QgVFJlY3QmIC8qYVJlY3QqLywNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRCb29sIC8qYURyYXdOb3cqLykgPSAwOw0KKw0KICAgICB2
aXJ0dWFsIHZvaWQgU2Nyb2xsVG8oVFBvaW50IC8qYVBvaW50Ki8pID0gMDsNCi0gICAgDQorDQog
ICAgIHZpcnR1YWwgVFJlY3QgVmlzaWJsZVJlY3QoKSBjb25zdCA9IDA7DQotICAgIA0KKw0KICAg
ICB2aXJ0dWFsIFRTaXplIENvbnRlbnRTaXplKCkgY29uc3QgPSAwOw0KIA0KICAgICB2aXJ0dWFs
IHZvaWQgUmVzaXplQ29udGVudChUU2l6ZSAvKmFTaXplKi8pID0gMDsNCkBAIC0xNDcsNyArMTQ5
LDcgQEANCiAgICAgdmlydHVhbCB2b2lkIFNldFNjcm9sbEJhcnNTdXBwcmVzc2VkKFRCb29sIC8q
YVN1cHByZXNzZWQqLywgVEJvb2wgLyphUmVwYWludE9uVW5zdXBwcmVzcyovKSA9IDA7DQogDQog
ICAgIHZpcnR1YWwgdm9pZCBBZGRDaGlsZChNV2ViQ29yZVdpZGdldCogLyphQ2hpbGQqLywgVElu
dCAvKmFYKi8gLCBUSW50IC8qYVkqLyApID0gMDsNCi0gICAgDQorDQogICAgIHZpcnR1YWwgVElu
dCBTY2FsaW5nRmFjdG9yKCkgY29uc3QgPSAwOw0KIA0KICAgICBpbmxpbmUgVFBvaW50IFRvRG9j
Q29vcmRzKGNvbnN0IFRQb2ludCYgYUZyb20pIGNvbnN0DQpAQCAtMTU1LDEzICsxNTcsMTMgQEAN
CiAgICAgICAgIFRJbnQgeiA9IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAgIHJldHVybiBUUG9p
bnQoYUZyb20uaVgqMTAwL3osYUZyb20uaVkqMTAwL3opOw0KICAgICAgICAgfQ0KLSAgICANCisN
CiAgICAgaW5saW5lIFRTaXplIFRvRG9jQ29vcmRzKGNvbnN0IFRTaXplJiBhRnJvbSkgY29uc3QN
CiAgICAgICAgIHsNCiAgICAgICAgIFRJbnQgeiA9IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAg
IHJldHVybiBUU2l6ZShhRnJvbS5pV2lkdGgqMTAwL3osYUZyb20uaUhlaWdodCoxMDAveik7DQot
ICAgICAgICB9ICAgIA0KLSAgICAgICAgDQorICAgICAgICB9DQorDQogICAgIGlubGluZSBUUmVj
dCBUb0RvY0Nvb3Jkcyhjb25zdCBUUmVjdCYgYUZyb20pIGNvbnN0DQogICAgICAgICB7DQogICAg
ICAgICByZXR1cm4gVFJlY3QoVG9Eb2NDb29yZHMoYUZyb20uaVRsKSxUb0RvY0Nvb3JkcyhhRnJv
bS5pQnIpKTsNCkBAIC0xNzIsMTggKzE3NCwxOCBAQA0KICAgICAgICAgVEludCB6ID0gU2NhbGlu
Z0ZhY3RvcigpOw0KICAgICAgICAgcmV0dXJuIFRQb2ludChhRnJvbS5pWCp6LzEwMCxhRnJvbS5p
WSp6LzEwMCk7DQogICAgICAgICB9DQotICAgIA0KKw0KICAgICBpbmxpbmUgVFNpemUgVG9WaWV3
Q29vcmRzKGNvbnN0IFRTaXplJiBhRnJvbSkgY29uc3QNCiAgICAgICAgIHsNCiAgICAgICAgIFRJ
bnQgeiA9IFNjYWxpbmdGYWN0b3IoKTsNCiAgICAgICAgIHJldHVybiBUU2l6ZShhRnJvbS5pV2lk
dGgqei8xMDAsYUZyb20uaUhlaWdodCp6LzEwMCk7DQotICAgICAgICB9ICAgIA0KLSAgICAgICAg
DQorICAgICAgICB9DQorDQogICAgIGlubGluZSBUUmVjdCBUb1ZpZXdDb29yZHMoY29uc3QgVFJl
Y3QmIGFGcm9tKSBjb25zdA0KICAgICAgICAgew0KICAgICAgICAgcmV0dXJuIFRSZWN0KFRvVmll
d0Nvb3JkcyhhRnJvbS5pVGwpLFRvVmlld0Nvb3JkcyhhRnJvbS5pQnIpKTsNCi0gICAgICAgIH0g
ICAgDQotICAgIA0KKyAgICAgICAgfQ0KKw0KICAgICBpbmxpbmUgVEJvb2wgSXNTY2FsZWQoKSBj
b25zdCB7IHJldHVybiBTY2FsaW5nRmFjdG9yKCkhPTEwMDsgfQ0KICAgfTsNCiANCkBAIC0xOTgs
MzIgKzIwMCwzMiBAQA0KIGNsYXNzIE1XZWJDb3JlT2JqZWN0V2lkZ2V0OiBwdWJsaWMgTVdlYkNv
cmVXaWRnZXQNCiAgICAgew0KICAgICBwdWJsaWM6IC8vIENvbnN0cnVjdG9yIGFuZCBEZWNvbnN0
cnV0b3INCi0gICAgDQorDQogICAgICAgICB2aXJ0dWFsIH5NV2ViQ29yZU9iamVjdFdpZGdldCgp
IHt9Ow0KLSAgICANCisNCiAgICAgcHVibGljOiAvLyBDbGFzcyBNZXRob2RzDQotICAgIA0KKw0K
ICAgICAgICAgLy8gT2JqZWN0L0VtYmVkIHJlbGF0ZWQgbWV0aG9kcw0KICAgICAvLyBSZXR1cm5z
IEVUcnVlIGlmIHRoZSB3aWRnZXQgaXMgYWN0aXZlDQogICAgIHZpcnR1YWwgVEJvb2wgSXNBY3Rp
dmUoKSBjb25zdCA9IDA7DQotICAgIA0KKw0KICAgICAvLyBEZWFjdGl2YXRlcyB0aGUgcGx1Z2lu
DQogICAgIHZpcnR1YWwgdm9pZCBEZUFjdGl2YXRlKCkgPSAwOw0KLSAgICANCisNCiAgICAgLy8g
U2V0cyB0aGUgZm9udA0KICAgICB2aXJ0dWFsIHZvaWQgU2V0Rm9udChDRm9udCogYUZvbnQpID0g
MDsNCi0gICAgDQorDQogICAgIC8vIFNvdW5kc3RhcnQgcmVsYXRlZCBtZXRob2RzDQogICAgIC8v
IFBsYXlzIHRoZSBjb250ZW50DQogICAgIHZpcnR1YWwgdm9pZCBQbGF5UGx1Z2luQ29udGVudChj
b25zdCBURGVzQyYgYVJlcXVlc3RVcmwpID0gMDsNCi0gICAgDQotICAgIC8vIFN0b3BzIHBsYXlp
bmcgdGhlIGNvbnRlbnQgICAgICAgIA0KKw0KKyAgICAvLyBTdG9wcyBwbGF5aW5nIHRoZSBjb250
ZW50DQogICAgIHZpcnR1YWwgdm9pZCBTdG9wUGx1Z2luQ29udGVudChjb25zdCBURGVzQyYgYVJl
cXVlc3RVcmwpID0gMDsNCi0gICAgDQotICAgIA0KLSAgICAvLyByZXR1cm4gRVRydWUgaWYgdGhl
IHBsdWdpbiBoYXMgcmVzaXplZCANCisNCisNCisgICAgLy8gcmV0dXJuIEVUcnVlIGlmIHRoZSBw
bHVnaW4gaGFzIHJlc2l6ZWQNCiAgICAgdmlydHVhbCBUQm9vbCBIYXNSZXNpemVkKCkgPSAwOw0K
LSAgICANCisNCiAgICAgLy8gY2hlY2sgaWYgdGhlIHBsdWdpbiBpcyBhYmxlIHRvIGFjY2VwdCBm
b2N1cyBldmVudA0KICAgICB2aXJ0dWFsIFRCb29sIElzRm9jdXNhYmxlKCkgY29uc3QgPSAwOw0K
IA0KSW5kZXg6IFdlYkNvcmUvQldJTlMvV0VCQ09SRVUuREVGDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9CV0lOUy9XRUJDT1JFVS5ERUYJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvQldJ
TlMvV0VCQ09SRVUuREVGCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwxNTkgKzEsMTYwIEBADQogRVhQ
T1JUUw0KLQk/PzFDV2ViQ29yZVNldHRpbmdzQEBVQUVAWFogQCAxIE5PTkFNRSA7IENXZWJDb3Jl
U2V0dGluZ3M6On5DV2ViQ29yZVNldHRpbmdzKHZvaWQpDQotCT9BY3RpdmF0ZUFjY2Vzc0tleXNA
Q1dlYkNvcmVCcmlkZ2VAQFFBRVhVVEtleUV2ZW50QEBAWiBAIDIgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6QWN0aXZhdGVBY2Nlc3NLZXlzKHN0cnVjdCBUS2V5RXZlbnQpDQotCT9BY3Rp
dmF0ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDMgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0aXZhdGVFdmVudChjbGFzcyBUUG9pbnQgJikNCi0JP0Fk
ZERhdGFAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgNCBOT05BTUUgOyB2b2lk
IENXZWJDb3JlQnJpZGdlOjpBZGREYXRhKGNsYXNzIFREZXNDOCBjb25zdCAmKQ0KLQk/QWRkSXRl
bVRvQ2FjaGVMQFRXZWJDb3JlQ2FjaGVAQFNBWEFBVk1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJ
bmZvQEBBQVZURGVzQzhAQEhAWiBAIDUgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUNhY2hlOjpBZGRJ
dGVtVG9DYWNoZUwoY2xhc3MgTVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlckluZm8gJiwgY2xhc3Mg
VERlc0M4ICYsIGludCkNCi0JP0FkZFRvQ29udGFjdHNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZU
UG9pbnRAQEBaIEAgNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpBZGRUb0NvbnRhY3Rz
KGNsYXNzIFRQb2ludCAmKQ0KLQk/QWRqdXN0Vmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhY
WiBAIDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRqdXN0Vmlld1NpemUodm9pZCkN
Ci0JP0FsdFRleHRAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgOCBO
T05BTUUgOyBjbGFzcyBUUHRyQzE2ICYgVFdlYkNvcmVJbWFnZUNhcnJpZXI6OkFsdFRleHQodm9p
ZCkNCi0JP0F1dG9SZWZyZXNoRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA5IE5P
TkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpBdXRvUmVmcmVzaEVuYWJsZWQodm9pZCkgY29u
c3QNCi0JP0JvZHlCYWNrZ3JvdW5kQ29sb3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9BVlRSZ2JAQFha
IEAgMTAgTk9OQU1FIDsgY2xhc3MgVFJnYiBDV2ViQ29yZUJyaWRnZTo6Qm9keUJhY2tncm91bmRD
b2xvcih2b2lkKQ0KLQk/Q2FuQ2FjaGVQYWdlQENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCAxMSBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkNhbkNhY2hlUGFnZSh2b2lkKSBjb25zdA0KLQk/
Q2xlYXJGaW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxMiBOT05BTUUgOyB2b2lkIENXZWJD
b3JlQnJpZGdlOjpDbGVhckZpbmQodm9pZCkNCi0JP0NsaWVudEBDV2ViQ29yZUJyaWRnZUBAUUFF
QUFWTVdlYkNsaWVudEJyaWRnZUBAWFogQCAxMyBOT05BTUUgOyBjbGFzcyBNV2ViQ2xpZW50QnJp
ZGdlICYgQ1dlYkNvcmVCcmlkZ2U6OkNsaWVudCh2b2lkKQ0KLQk/Q2xvc2VVUkxAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhYWiBAIDE0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNsb3NlVVJM
KHZvaWQpDQotCT9Db29raWVBZGFwdGVyQFRXZWJDb3JlQ29va2llRmFjdG9yeUBAU0FQQVZNV2Vi
Q29yZUNvb2tpZUFkYXB0ZXJAQFhaIEAgMTUgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVDb29raWVB
ZGFwdGVyICogVFdlYkNvcmVDb29raWVGYWN0b3J5OjpDb29raWVBZGFwdGVyKHZvaWQpDQotCT9D
cmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZA
QEhAWiBAIDE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZURvY3VtZW50V2l0
aEVuY29kaW5nKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50KQ0KLQk/Q3JlYXRlS0hUTUxWaWV3
QENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBISEBaIEAgMTcgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6Q3JlYXRlS0hUTUxWaWV3KGNsYXNzIE1XZWJDb3Jl
U2Nyb2xsVmlldyAmLCBpbnQsIGludCkNCi0JP0N1cnNpdmVGb250RmFtaWx5QENXZWJDb3JlU2V0
dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTggTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2Vi
Q29yZVNldHRpbmdzOjpDdXJzaXZlRm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/RGVBY3RpdmF0
ZUV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTkgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6RGVBY3RpdmF0ZUV2ZW50KGludCkNCi0JP0RlZmF1bHRGaXhlZEZvbnRTaXplQENX
ZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDIwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdz
OjpEZWZhdWx0Rml4ZWRGb250U2l6ZSh2b2lkKSBjb25zdA0KLQk/RGVmYXVsdEZvbnRTaXplQENX
ZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDIxIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdz
OjpEZWZhdWx0Rm9udFNpemUodm9pZCkgY29uc3QNCi0JP0RlZmF1bHRUZXh0RW5jb2RpbmdAQ1dl
YkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAyMiBOT05BTUUgOyBjbGFzcyBUUHRy
QzE2IENXZWJDb3JlU2V0dGluZ3M6OkRlZmF1bHRUZXh0RW5jb2Rpbmcodm9pZCkgY29uc3QNCi0J
P0RlZmVyc1RpbWVyc0BDV2ViQ29yZUJyaWRnZUBAU0FIWFogQCAyMyBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVCcmlkZ2U6OkRlZmVyc1RpbWVycyh2b2lkKQ0KLQk/RGV0ZXJtaW5lQ3Vyc29yUG9zaXRp
b25AQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEFB
VlRSZWN0QEAxQUFWVFBvaW50QEBIQFogQCAyNCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6
OkRldGVybWluZUN1cnNvclBvc2l0aW9uKGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUg
JiwgY2xhc3MgVFJlY3QgJiwgY2xhc3MgVFJlY3QgJiwgY2xhc3MgVFBvaW50ICYsIGludCkNCi0J
P0RpZE5vdE9wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDI1IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRpZE5vdE9wZW5VUkwoY2xhc3MgVERlc0MxNiBj
b25zdCAmKQ0KLQk/RG9tYWluQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDI2
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkRvbWFpbih2b2lkKSBjb25z
dA0KLQk/RHJhd1JlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZUUmVjdEBAQUFWQ1dlYkNvcmVH
cmFwaGljc0NvbnRleHRAQEBaIEAgMjcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RHJh
d1JlY3QoY2xhc3MgVFJlY3QgY29uc3QgJiwgY2xhc3MgQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQg
JikNCi0JP0R1bXBSZW5kZXJUcmVlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAyOCBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEdW1wUmVuZGVyVHJlZSh2b2lkKQ0KLQk/RW5kQENXZWJD
b3JlQnJpZGdlQEBRQUVYWFogQCAyOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpFbmQo
dm9pZCkNCi0JP0V4ZWN1dGVTY3JpcHRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBA
WiBAIDMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkV4ZWN1dGVTY3JpcHQoY2xhc3Mg
VERlc0MxNiBjb25zdCAmKQ0KLQk/RmFjdG9yeUBUV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBA
U0FQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAWFogQCAzMSBOT05BTUUgOyBjbGFzcyBN
V2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqIFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpG
YWN0b3J5KHZvaWQpDQotCT9GYWN0b3J5QFRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAQFNB
UEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAWFogQCAzMiBOT05BTUUgOyBjbGFzcyBN
V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5ICogVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9y
eTo6RmFjdG9yeSh2b2lkKQ0KLQk/RmFjdG9yeUBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlA
QFNBUEFWTVdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBYWiBAIDMzIE5PTkFNRSA7IGNsYXNz
IE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSAqIFRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9y
eTo6RmFjdG9yeSh2b2lkKQ0KLQk/RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BA
UUJFP0FWVFB0ckMxNkBAWFogQCAzNCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0
dGluZ3M6OkZhbnRhc3lGb250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9GYXN0Rmlyc3REaXNwbGF5
TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAgMzUgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJp
ZGdlOjpGYXN0Rmlyc3REaXNwbGF5TW9kZSh2b2lkKSBjb25zdA0KLQk/RmluZExpbmtzT2ZUeXBl
QENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlAVVRXZWJDb3JlTGlu
a0l0ZW1AQEBAQFogQCAzNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpGaW5kTGlua3NP
ZlR5cGUoY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBSQXJyYXk8c3RydWN0IFRXZWJDb3Jl
TGlua0l0ZW0+ICYpDQotCT9GaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FW
VFB0ckMxNkBAWFogQCAzNyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6
OkZpeGVkRm9udEZhbWlseSh2b2lkKSBjb25zdA0KLQk/Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3
U2l6ZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDM4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OkZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemUoaW50KQ0KLQk/R2V0UGFnZURhdGFM
QENXZWJDb3JlQnJpZGdlQEBRQUVQQVY/JENBcnJheVB0ckBWQ1dlYkNvcmVQYWdlRGF0YUl0ZW1A
QEBASEBaIEAgMzkgTk9OQU1FIDsgY2xhc3MgQ0FycmF5UHRyPGNsYXNzIENXZWJDb3JlUGFnZURh
dGFJdGVtPiAqIENXZWJDb3JlQnJpZGdlOjpHZXRQYWdlRGF0YUwoaW50KQ0KLQk/R2V0VGV4dENv
bnRlbnRMQENXZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBYWiBAIDQwIE5PTkFNRSA7IGNs
YXNzIEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0VGV4dENvbnRlbnRMKHZvaWQpDQotCT9H
ZXRVcmxPZk5vZGVJbkZvY3VzTEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWSEJ1ZkMxNkBAQUFWVFBv
aW50QEBAWiBAIDQxIE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0
VXJsT2ZOb2RlSW5Gb2N1c0woY2xhc3MgVFBvaW50ICYpIGNvbnN0DQotCT9IYXNQZW5kaW5nTGF5
b3V0QENXZWJDb3JlQnJpZGdlQEBRQkVIWFogQCA0MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6Okhhc1BlbmRpbmdMYXlvdXQodm9pZCkgY29uc3QNCi0JP0hpc3RvcnlQcm92aWRlckBUV2Vi
Q29yZUhpc3RvcnlAQFNBUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQFhaIEAgNDMgTk9OQU1F
IDsgY2xhc3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgKiBUV2ViQ29yZUhpc3Rvcnk6Okhpc3Rv
cnlQcm92aWRlcih2b2lkKQ0KLQk/SW1hZ2VDb3VudEBDV2ViQ29yZUJyaWRnZUBAUUFFSEhAWiBA
IDQ0IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VDb3VudChpbnQpDQotCT9JbWFn
ZVR5cGVAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgNDUgTk9OQU1F
IDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpJbWFnZVR5cGUodm9pZCkN
Ci0JP0ltYWdlc0luUmVjdEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlGaXhGbGF0QFZU
V2ViQ29yZUltYWdlQ2FycmllckBAQEBIQFogQCA0NiBOT05BTUUgOyBjbGFzcyBDQXJyYXlGaXhG
bGF0PGNsYXNzIFRXZWJDb3JlSW1hZ2VDYXJyaWVyPiAqIENXZWJDb3JlQnJpZGdlOjpJbWFnZXNJ
blJlY3QoaW50KQ0KLQk/SW5pdGlhbGl6ZVNldHRpbmdzQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJW
Q1dlYkNvcmVTZXR0aW5nc0BAQFogQCA0NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpJ
bml0aWFsaXplU2V0dGluZ3MoY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyBjb25zdCAmKQ0KLQk/SW5z
dGFsbEluRnJhbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZNV2ViQ29yZVNjcm9sbFZpZXdAQEBa
IEAgNDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5zdGFsbEluRnJhbWUoY2xhc3Mg
TVdlYkNvcmVTY3JvbGxWaWV3ICYpDQotCT9Jc0ZyYW1lU2V0QENXZWJDb3JlQnJpZGdlQEBRQkVI
WFogQCA0OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OklzRnJhbWVTZXQodm9pZCkgY29u
c3QNCi0JP0phdmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDUwIE5PTkFNRSA7
IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhRW5hYmxlZCh2b2lkKSBjb25zdA0KLQk/SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFog
QCA1MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseSh2b2lkKSBjb25zdA0KLQk/SmF2YVNjcmlwdEVuYWJsZWRAQ1dlYkNv
cmVTZXR0aW5nc0BAUUJFSFhaIEAgNTIgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Okph
dmFTY3JpcHRFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9KdW1wVG9TZWxlY3Rpb25AQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhYWiBAIDUzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6Okp1bXBUb1Nl
bGVjdGlvbih2b2lkKQ0KLQk/S2V5RXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhVVEtleUV2ZW50
QEBIQFogQCA1NCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OktleUV2ZW50KHN0cnVjdCBU
S2V5RXZlbnQsIGludCkNCi0JP0xvYWRJbWFnZXNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDU1
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkxvYWRJbWFnZXModm9pZCkNCi0JP0xvYWRl
ckNvbnRhaW5lckBUV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FQQVZNV2ViQ29yZUxvYWRlckNv
bnRhaW5lckBAWFogQCA1NiBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUxvYWRlckNvbnRhaW5lciAq
IFRXZWJDb3JlTG9hZGVyQ29udGFpbmVyOjpMb2FkZXJDb250YWluZXIodm9pZCkNCi0JP01pbmlt
dW1Gb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA1NyBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVTZXR0aW5nczo6TWluaW11bUZvbnRTaXplKHZvaWQpIGNvbnN0DQotCT9NaW5pbXVtTG9n
aWNhbEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDU4IE5PTkFNRSA7IGludCBD
V2ViQ29yZVNldHRpbmdzOjpNaW5pbXVtTG9naWNhbEZvbnRTaXplKHZvaWQpIGNvbnN0DQotCT9O
YW1lQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDU5IE5PTkFNRSA7IGNsYXNz
IFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6Ok5hbWUodm9pZCkgY29uc3QNCi0JP05hdmlnYWJsZU5v
ZGVVbmRlckN1cnNvckBDV2ViQ29yZUJyaWRnZUBAUUJFSEFBVlRQb2ludEBAQUFXNFRXZWJDb3Jl
Rm9jdXNlZEVsZW1lbnRUeXBlQEBBQVZUUmVjdEBAQFogQCA2MCBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVCcmlkZ2U6Ok5hdmlnYWJsZU5vZGVVbmRlckN1cnNvcihjbGFzcyBUUG9pbnQgJiwgZW51bSBU
V2ViQ29yZUZvY3VzZWRFbGVtZW50VHlwZSAmLCBjbGFzcyBUUmVjdCAmKSBjb25zdA0KLQk/TmVl
ZHNMYXlvdXRAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDYxIE5PTkFNRSA7IGludCBDV2ViQ29y
ZUJyaWRnZTo6TmVlZHNMYXlvdXQodm9pZCkgY29uc3QNCi0JP05ld0xAQ1dlYkNvcmVCcmlkZ2VA
QFNBUEFWMUBBQVZNV2ViQ2xpZW50QnJpZGdlQEBAWiBAIDYyIE5PTkFNRSA7IGNsYXNzIENXZWJD
b3JlQnJpZGdlICogQ1dlYkNvcmVCcmlkZ2U6Ok5ld0woY2xhc3MgTVdlYkNsaWVudEJyaWRnZSAm
KQ0KLQk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQEFBVkNGYnNCaXRHY0BA
UEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDYzIE5PTkFNRSA7IGNs
YXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5l
d0woY2xhc3MgQ0Zic0JpdEdjICYsIGNsYXNzIENGYnNCaXRtYXAgKiwgY2xhc3MgTVdlYkNvcmVT
Y3JvbGxWaWV3ICopDQotCT9OZXdMQENXZWJDb3JlR3JhcGhpY3NDb250ZXh0QEBTQVBBVjFAUEFW
Q0Zic0JpdG1hcERldmljZUBAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBA
WiBAIDY0IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVH
cmFwaGljc0NvbnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdG1hcERldmljZSAqLCBjbGFzcyBDRmJz
Qml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAqKQ0KLQk/TmV3TEBDV2ViQ29yZVNl
dHRpbmdzQEBTQVBBVjFAWFogQCA2NSBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZVNldHRpbmdzICog
Q1dlYkNvcmVTZXR0aW5nczo6TmV3TCh2b2lkKQ0KLQk/Tm90aWZ5RGVjb2RpbmdFcnJvckBDV2Vi
Q29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NiBOT05BTUUgOyB2b2lkIENXZWJD
b3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeURlY29kaW5nRXJyb3Iodm9pZCkNCi0JP05v
dGlmeUZpbmlzaGVkQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFBRVhYWiBAIDY3IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6Tm90aWZ5RmluaXNoZWQo
dm9pZCkNCi0JP05vdGlmeVVwZGF0ZUBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVY
WFogQCA2OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlm
eVVwZGF0ZSh2b2lkKQ0KLQk/TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzQENXZWJDb3JlQnJp
ZGdlQEBRQUVIWFogQCA2OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok51bVBlbmRpbmdP
ckxvYWRpbmdSZXF1ZXN0cyh2b2lkKQ0KLQk/T3BlblVSTEBDV2ViQ29yZUJyaWRnZUBAUUFFWEFC
VlREZXNDMTZAQEgwMEFCVlREYXRlVGltZUBAQFogQCA3MCBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBjbGFzcyBURGVzQzE2
IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERhdGVUaW1lIGNvbnN0ICYp
DQotCT9QbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FQQVZNV2ViQ29yZVBs
dWdpbkhhbmRsZXJAQFhaIEAgNzEgTk9OQU1FIDsgY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5kbGVy
ICogVFdlYkNvcmVQbHVnaW5IYW5kbGVyOjpQbHVnaW5IYW5kbGVyKHZvaWQpDQotCT9QbHVnaW5z
RW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA3MiBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQodm9pZCkgY29uc3QNCi0JP1BvaW50ZXJFdmVudEBD
V2ViQ29yZUJyaWRnZUBAUUFFWFVUUG9pbnRlckV2ZW50QEBAWiBAIDczIE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVudChzdHJ1Y3QgVFBvaW50ZXJFdmVudCkNCi0JP1Bv
aW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFc0VFR5cGVAVFBvaW50ZXJFdmVudEBAQUJW
VFBvaW50QEBAWiBAIDc0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVu
dChlbnVtIFRQb2ludGVyRXZlbnQ6OlRUeXBlLCBjbGFzcyBUUG9pbnQgY29uc3QgJikNCi0JP1By
ZXBhcmVGb3JFeGl0QENXZWJDb3JlQnJpZGdlQEBTQVhYWiBAIDc1IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OlByZXBhcmVGb3JFeGl0KHZvaWQpDQotCT9Qcm92aXNpb25hbExvYWRTdGFy
dGVkQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA3NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpQcm92aXNpb25hbExvYWRTdGFydGVkKHZvaWQpDQotCT9SYXdEYXRhQFRXZWJDb3JlSW1h
Z2VDYXJyaWVyQEBRQUVBQVZUUHRyQzhAQFhaIEAgNzcgTk9OQU1FIDsgY2xhc3MgVFB0ckM4ICYg
VFdlYkNvcmVJbWFnZUNhcnJpZXI6OlJhd0RhdGEodm9pZCkNCi0JP1JlYXBwbHlTdHlsZXNGb3JE
ZXZpY2VUeXBlQENXZWJDb3JlQnJpZGdlQEBRQUVYVzRUV2ViQ29yZURldmljZVR5cGVAQEBaIEAg
NzggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UmVhcHBseVN0eWxlc0ZvckRldmljZVR5
cGUoZW51bSBUV2ViQ29yZURldmljZVR5cGUpDQotCT9SZWZlcnJlckBDV2ViQ29yZUJyaWRnZUBA
UUJFP0FWVFB0ckMxNkBAWFogQCA3OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJp
ZGdlOjpSZWZlcnJlcih2b2lkKSBjb25zdA0KLQk/UmVtb3ZlRmlsZU5hbWVAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgODAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
UmVtb3ZlRmlsZU5hbWUoY2xhc3MgVFBvaW50ICYpDQotCT9SZW1vdmVGcm9tRnJhbWVAQ1dlYkNv
cmVCcmlkZ2VAQFFBRVhYWiBAIDgxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92
ZUZyb21GcmFtZSh2b2lkKQ0KLQk/UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWMGto
dG1sQEBYWiBAIDgyIE5PTkFNRSA7IGNsYXNzIGtodG1sOjpSZW5kZXJQYXJ0ICogQ1dlYkNvcmVC
cmlkZ2U6OlJlbmRlclBhcnQodm9pZCkgY29uc3QNCi0JP1JlbmRlcmVyQFRXZWJDb3JlSW1hZ2VD
YXJyaWVyQEBRQUVQQVZNV2ViQ29yZUltYWdlUmVuZGVyZXJAQFhaIEAgODMgTk9OQU1FIDsgY2xh
c3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyICogVFdlYkNvcmVJbWFnZUNhcnJpZXI6OlJlbmRlcmVy
KHZvaWQpDQotCT9SZXNvbHZlVXJsTEBDV2ViQ29yZUJyaWRnZUBAU0FQQVZIQnVmQzE2QEBBQlZU
RGVzQzE2QEAwQFogQCA4NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6
OlJlc29sdmVVcmxMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25zdCAm
KQ0KLQk/UmVzdG9yZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDg1IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlc3RvcmVEb2N1bWVudFN0YXRlKHZvaWQpDQot
CT9TYW5zU2VyaWZGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFha
IEAgODYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpTYW5zU2VyaWZG
b250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9TYXZlRG9jdW1lbnRTdGF0ZUBDV2ViQ29yZUJyaWRn
ZUBAUUFFWFhaIEAgODcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2F2ZURvY3VtZW50
U3RhdGUodm9pZCkNCi0JP1NhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVI
WFogQCA4OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2F2ZVJhd0RhdGFFbmFibGVk
KHZvaWQpIGNvbnN0DQotCT9TY2FsaW5nRmFjdG9yQ2hhbmdlZEBDV2ViQ29yZUJyaWRnZUBAUUFF
WEhAWiBAIDg5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNjYWxpbmdGYWN0b3JDaGFu
Z2VkKGludCkNCi0JP1Njcm9sbFRvQW5jaG9yQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERlc0Mx
NkBAQFogQCA5MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTY3JvbGxUb0FuY2hvcihj
bGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TY3JvbGxUb0FuY2hvcldpdGhVUkxAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDkxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OlNjcm9sbFRvQW5jaG9yV2l0aFVSTChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZWFy
Y2hBZ2FpbkBDV2ViQ29yZUJyaWRnZUBAUUFFSEFCVlREZXNDMTZAQEhISEBaIEAgOTIgTk9OQU1F
IDsgaW50IENXZWJDb3JlQnJpZGdlOjpTZWFyY2hBZ2FpbihjbGFzcyBURGVzQzE2IGNvbnN0ICYs
IGludCwgaW50LCBpbnQpDQotCT9TZWFyY2hGb3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVz
QzE2QEBISEhAWiBAIDkzIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoRm9yKGNs
YXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBpbnQsIGludCkNCi0JP1NlbGVjdGlvbkNvbG9yQENX
ZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdiQEBYWiBAIDk0IE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dl
YkNvcmVCcmlkZ2U6OlNlbGVjdGlvbkNvbG9yKHZvaWQpDQotCT9TZW5kUmVzaXplRXZlbnRAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDk1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNl
bmRSZXNpemVFdmVudCh2b2lkKQ0KLQk/U2VuZFNjcm9sbEV2ZW50QENXZWJDb3JlQnJpZGdlQEBR
QUVYWFogQCA5NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kU2Nyb2xsRXZlbnQo
dm9pZCkNCi0JP1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2
QEBYWiBAIDk3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2VyaWZG
b250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9TZXRBdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUFFWEhAWiBAIDk4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0
QXV0b1JlZnJlc2hFbmFibGVkKGludCkNCi0JP1NldENhbGxiYWNrQENXZWJDb3JlSW1hZ2VDYWxs
YmFja1dyYXBwZXJAQFFBRVhQQVZDYWNoZWRJbWFnZUNhbGxiYWNrQGtodG1sQEBAWiBAIDk5IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6U2V0Q2FsbGJhY2soY2xh
c3Mga2h0bWw6OkNhY2hlZEltYWdlQ2FsbGJhY2sgKikNCi0JP1NldENvb2tpZUFkYXB0ZXJAVFdl
YkNvcmVDb29raWVGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQEBaIEAgMTAw
IE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVDb29raWVGYWN0b3J5OjpTZXRDb29raWVBZGFwdGVyKGNs
YXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqKQ0KLQk/U2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAQ1dl
YkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTAxIE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVTZXR0aW5nczo6U2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAm
KQ0KLQk/U2V0RGVmYXVsdEZpeGVkRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDEwMiBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGaXhlZEZvbnRT
aXplKGludCkNCi0JP1NldERlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBa
IEAgMTAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVmYXVsdEZvbnRTaXpl
KGludCkNCi0JP1NldERlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFC
VlREZXNDMTZAQEBaIEAgMTA0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVm
YXVsdFRleHRFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXREZWZlcnNUaW1l
cnNAQ1dlYkNvcmVCcmlkZ2VAQFNBWEhAWiBAIDEwNSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpTZXREZWZlcnNUaW1lcnMoaW50KQ0KLQk/U2V0RHJhd3NCYWNrZ3JvdW5kQENXZWJDb3Jl
QnJpZGdlQEBRQUVYSEBaIEAgMTA2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldERy
YXdzQmFja2dyb3VuZChpbnQpDQotCT9TZXRGYW50YXN5Rm9udEZhbWlseUBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRp
bmdzOjpTZXRGYW50YXN5Rm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRG
YXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDEwOCBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRGYXN0Rmlyc3REaXNwbGF5TW9kZShpbnQpDQotCT9T
ZXRGaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAg
MTA5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0Rml4ZWRGb250RmFtaWx5KGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldEZvbnRTaXplTGV2ZWxAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhIQFogQCAxMTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0Rm9udFNpemVM
ZXZlbChpbnQpDQotCT9TZXRGb3JtQ29udHJvbFRleHRCeU5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhBQlZURGVzQzE2QEAwQFogQCAxMTEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0
Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KLQk/U2V0SGlzdG9yeVByb3ZpZGVyQFRXZWJDb3JlSGlzdG9yeUBAU0FYUEFW
TVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQEBaIEAgMTEyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVI
aXN0b3J5OjpTZXRIaXN0b3J5UHJvdmlkZXIoY2xhc3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIg
KikNCi0JP1NldEphdmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTMgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhRW5hYmxlZChpbnQpDQotCT9TZXRK
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhIQFogQCAxMTQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGludCkNCi0JP1NldEphdmFTY3JpcHRFbmFibGVk
QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNl
dHRpbmdzOjpTZXRKYXZhU2NyaXB0RW5hYmxlZChpbnQpDQotCT9TZXRNYXhCaWRpV2lkdGhAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
U2V0TWF4QmlkaVdpZHRoKGludCkNCi0JP1NldE1pbmltdW1Gb250U2l6ZUBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYSEBaIEAgMTE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0TWlu
aW11bUZvbnRTaXplKGludCkNCi0JP1NldE1pbmltdW1Mb2dpY2FsRm9udFNpemVAQ1dlYkNvcmVT
ZXR0aW5nc0BAUUFFWEhAWiBAIDExOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNl
dE1pbmltdW1Mb2dpY2FsRm9udFNpemUoaW50KQ0KLQk/U2V0TmFtZUBDV2ViQ29yZUJyaWRnZUBA
UUFFWEFCVlREZXNDMTZAQEBaIEAgMTE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNl
dE5hbWUoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0TmVlZHNMYXlvdXRAQ1dlYkNvcmVC
cmlkZ2VAQFFBRVhYWiBAIDEyMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROZWVk
c0xheW91dCh2b2lkKQ0KLQk/U2V0UGFyZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWMUBAWiBA
IDEyMSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRQYXJlbnQoY2xhc3MgQ1dlYkNv
cmVCcmlkZ2UgKikNCi0JP1NldFBsdWdpbnNFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhI
QFogQCAxMjIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRQbHVnaW5zRW5hYmxl
ZChpbnQpDQotCT9TZXRSZW5kZXJQYXJ0QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWUmVuZGVyUGFy
dEBraHRtbEBAQFogQCAxMjMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0UmVuZGVy
UGFydChjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqKQ0KLQk/U2V0U2Fuc1NlcmlmRm9udEZhbWls
eUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjQgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTYW5zU2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYg
Y29uc3QgJikNCi0JP1NldFNhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVY
SEBaIEAgMTI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2F2ZVJhd0RhdGFF
bmFibGVkKGludCkNCi0JP1NldFNlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVY
QUJWVERlc0MxNkBAQFogQCAxMjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRT
ZXJpZkZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0U2hvdWxkQ3JlYXRl
UmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTI3IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OlNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhpbnQpDQotCT9TZXRTaG91bGRQ
cmludEJhY2tncm91bmRzQENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMjggTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTaG91bGRQcmludEJhY2tncm91bmRzKGludCkNCi0J
P1NldFN0YW5kYXJkRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBA
QFogQCAxMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTdGFuZGFyZEZvbnRG
YW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bkBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMzAgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNsYXNzIFREZXND
MTYgY29uc3QgJikNCi0JP1NldFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAVFdlYkNvcmVGb3Jt
Q29udHJvbEZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBAWiBAIDEz
MSBOT05BTUUgOyB2b2lkIFRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5OjpTZXRXZWJDb3JlRm9y
bUNvbnRyb2xGYWN0b3J5KGNsYXNzIE1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5ICopDQotCT9T
ZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlAVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9y
eUBAU0FYUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAQFogQCAxMzIgTk9OQU1FIDsg
dm9pZCBUV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5OjpTZXRXZWJDb3JlSW1hZ2VSZW5kZXJl
ckZhY3RvcnkoY2xhc3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqKQ0KLQk/U2V0V2Vi
Q29yZUxvYWRlckNvbnRhaW5lckBUV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FYUEFWTVdlYkNv
cmVMb2FkZXJDb250YWluZXJAQEBaIEAgMTMzIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVMb2FkZXJD
b250YWluZXI6OlNldFdlYkNvcmVMb2FkZXJDb250YWluZXIoY2xhc3MgTVdlYkNvcmVMb2FkZXJD
b250YWluZXIgKikNCi0JP1NldFdlYkNvcmVQbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFu
ZGxlckBAU0FYUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBAWiBAIDEzNCBOT05BTUUgOyB2b2lk
IFRXZWJDb3JlUGx1Z2luSGFuZGxlcjo6U2V0V2ViQ29yZVBsdWdpbkhhbmRsZXIoY2xhc3MgTVdl
YkNvcmVQbHVnaW5IYW5kbGVyICopDQotCT9TZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBU
V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFj
dG9yeUBAQFogQCAxMzUgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6
OlNldFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVy
RmFjdG9yeSAqKQ0KLQk/U2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0
dGluZ3NAQFFBRVhIQFogQCAxMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRX
aWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkoaW50KQ0KLQk/U2hvdWxkQ3JlYXRlUmVuZGVyZXJz
QENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCAxMzcgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdl
OjpTaG91bGRDcmVhdGVSZW5kZXJlcnModm9pZCkNCi0JP1Nob3VsZFByaW50QmFja2dyb3VuZHNA
Q1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTM4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRp
bmdzOjpTaG91bGRQcmludEJhY2tncm91bmRzKHZvaWQpIGNvbnN0DQotCT9TaG93aW5nRmFzdFBy
ZXZpZXdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDEzOSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVC
cmlkZ2U6OlNob3dpbmdGYXN0UHJldmlldyh2b2lkKSBjb25zdA0KLQk/U3RhbmRhcmRGb250RmFt
aWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQwIE5PTkFNRSA7IGNs
YXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U3RhbmRhcmRGb250RmFtaWx5KHZvaWQpIGNv
bnN0DQotCT9UYWJiZWROYXZpZ2F0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVIVzRUV2ViTmF2RGly
ZWN0aW9uQEBBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEhAWiBAIDE0MSBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlRhYmJlZE5hdmlnYXRpb24oZW51bSBUV2ViTmF2RGlyZWN0
aW9uLCBlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGludCkNCi0JP1RleHRFbmNv
ZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUJFSVhaIEAgMTQyIE5PTkFNRSA7IHVuc2lnbmVkIGludCBD
V2ViQ29yZUJyaWRnZTo6VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQotCT9VUkxAQ1dlYkNvcmVC
cmlkZ2VAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQzIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dl
YkNvcmVCcmlkZ2U6OlVSTCh2b2lkKSBjb25zdA0KLQk/VVJMV2l0aFJlbGF0aXZlU3RyaW5nQENX
ZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBBQlZURGVzQzE2QEBAWiBAIDE0NCBOT05BTUUg
OyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OlVSTFdpdGhSZWxhdGl2ZVN0cmluZyhj
bGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9VcGRhdGVBbGxWaWV3c0BDV2ViQ29yZUJyaWRnZUBA
U0FYWFogQCAxNDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6VXBkYXRlQWxsVmlld3Mo
dm9pZCkNCi0JP1VybEBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFFQUFWVFB0ckMxNkBAWFogQCAx
NDYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpVcmwodm9p
ZCkNCi0JP1VzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0
ckMxNkBAWFogQCAxNDcgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpV
c2VyU3R5bGVTaGVldExvY2F0aW9uKHZvaWQpIGNvbnN0DQotCT9XaWxsTG9hZEltYWdlc0F1dG9t
YXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTQ4IE5PTkFNRSA7IGludCBDV2Vi
Q29yZVNldHRpbmdzOjpXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCi0J
P2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRp
ZmllckAyQEBaIEAgMTQ5IE5PTkFNRSA7IGJvb2wgS0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5
KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNzIEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBj
b25zdA0KLQk/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJ
ZGVudGlmaWVyQDJAQFogQCAxNTAgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVy
dHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgY2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYp
IGNvbnN0DQotCT9tYXJrZWRAVmFsdWVJbXBAS0pTQEBRQkVfTlhaIEAgMTUxIE5PTkFNRSA7IGJv
b2wgS0pTOjpWYWx1ZUltcDo6bWFya2VkKHZvaWQpIGNvbnN0DQotCT9jbGFzc0luZm9AT2JqZWN0
QEtKU0BAUUJFUEJVQ2xhc3NJbmZvQDJAWFogQCAxNTIgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xh
c3NJbmZvIGNvbnN0ICogS0pTOjpPYmplY3Q6OmNsYXNzSW5mbyh2b2lkKSBjb25zdA0KLQk/aGFz
T3duUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCAxNTMgTk9O
QU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KLQk/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJF
X05QQVZFeGVjU3RhdGVAMkBJQFogQCAxNTQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFz
UHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KLQk/
cHJvcExpc3RAT2JqZWN0QEtKU0BAUUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBBVkV4ZWNTdGF0ZUAy
QF9OQFogQCAxNTUgTk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0
Ojpwcm9wTGlzdChjbGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KLQk/R2V0TmV4dFJlbmRl
clRleHRGb3JTbWFydExpbmtzTEBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFB0ckMxNkBAQUFIQFog
QCAxNTYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRl
clRleHRGb3JTbWFydExpbmtzTChpbnQgJikNCi0JP0dldFJlbmRlclRleHRBcmVhQENXZWJDb3Jl
QnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlAVlRSZWN0QEBAQEBaIEAgMTU3IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKGNsYXNzIFREZXND
MTYgY29uc3QgJiwgY2xhc3MgUkFycmF5PGNsYXNzIFRSZWN0PiAmKQ0KKyAgICA/PzFDV2ViQ29y
ZVNldHRpbmdzQEBVQUVAWFogQCAxIE5PTkFNRSA7IENXZWJDb3JlU2V0dGluZ3M6On5DV2ViQ29y
ZVNldHRpbmdzKHZvaWQpDQorICAgID9BY3RpdmF0ZUFjY2Vzc0tleXNAQ1dlYkNvcmVCcmlkZ2VA
QFFBRVhVVEtleUV2ZW50QEBAWiBAIDIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWN0
aXZhdGVBY2Nlc3NLZXlzKHN0cnVjdCBUS2V5RXZlbnQpDQorICAgID9BY3RpdmF0ZUV2ZW50QENX
ZWJDb3JlQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDMgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUJyaWRnZTo6QWN0aXZhdGVFdmVudChjbGFzcyBUUG9pbnQgJikNCisgICAgP0FkZERhdGFAQ1dl
YkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgNCBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
QnJpZGdlOjpBZGREYXRhKGNsYXNzIFREZXNDOCBjb25zdCAmKQ0KKyAgICA/QWRkSXRlbVRvQ2Fj
aGVMQFRXZWJDb3JlQ2FjaGVAQFNBWEFBVk1XZWJDb3JlVXJsUmVzcG9uc2VIZWFkZXJJbmZvQEBB
QVZURGVzQzhAQEhAWiBAIDUgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUNhY2hlOjpBZGRJdGVtVG9D
YWNoZUwoY2xhc3MgTVdlYkNvcmVVcmxSZXNwb25zZUhlYWRlckluZm8gJiwgY2xhc3MgVERlc0M4
ICYsIGludCkNCisgICAgP0FkZFRvQ29udGFjdHNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZUUG9p
bnRAQEBaIEAgNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpBZGRUb0NvbnRhY3RzKGNs
YXNzIFRQb2ludCAmKQ0KKyAgICA/QWRqdXN0Vmlld1NpemVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhY
WiBAIDcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6QWRqdXN0Vmlld1NpemUodm9pZCkN
CisgICAgP0FsdFRleHRAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAg
OCBOT05BTUUgOyBjbGFzcyBUUHRyQzE2ICYgVFdlYkNvcmVJbWFnZUNhcnJpZXI6OkFsdFRleHQo
dm9pZCkNCisgICAgP0F1dG9SZWZyZXNoRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFog
QCA5IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpBdXRvUmVmcmVzaEVuYWJsZWQodm9p
ZCkgY29uc3QNCisgICAgP0JvZHlCYWNrZ3JvdW5kQ29sb3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9B
VlRSZ2JAQFhaIEAgMTAgTk9OQU1FIDsgY2xhc3MgVFJnYiBDV2ViQ29yZUJyaWRnZTo6Qm9keUJh
Y2tncm91bmRDb2xvcih2b2lkKQ0KKyAgICA/Q2FuQ2FjaGVQYWdlQENXZWJDb3JlQnJpZGdlQEBR
QkVIWFogQCAxMSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkNhbkNhY2hlUGFnZSh2b2lk
KSBjb25zdA0KKyAgICA/Q2xlYXJGaW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAxMiBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpDbGVhckZpbmQodm9pZCkNCisgICAgP0NsaWVudEBD
V2ViQ29yZUJyaWRnZUBAUUFFQUFWTVdlYkNsaWVudEJyaWRnZUBAWFogQCAxMyBOT05BTUUgOyBj
bGFzcyBNV2ViQ2xpZW50QnJpZGdlICYgQ1dlYkNvcmVCcmlkZ2U6OkNsaWVudCh2b2lkKQ0KKyAg
ICA/Q2xvc2VVUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDE0IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVCcmlkZ2U6OkNsb3NlVVJMKHZvaWQpDQorICAgID9Db29raWVBZGFwdGVyQFRXZWJDb3Jl
Q29va2llRmFjdG9yeUBAU0FQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQFhaIEAgMTUgTk9OQU1F
IDsgY2xhc3MgTVdlYkNvcmVDb29raWVBZGFwdGVyICogVFdlYkNvcmVDb29raWVGYWN0b3J5OjpD
b29raWVBZGFwdGVyKHZvaWQpDQorICAgID9DcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZ0BDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEhAWiBAIDE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVCcmlkZ2U6OkNyZWF0ZURvY3VtZW50V2l0aEVuY29kaW5nKGNsYXNzIFREZXNDMTYgY29uc3Qg
JiwgaW50KQ0KKyAgICA/Q3JlYXRlS0hUTUxWaWV3QENXZWJDb3JlQnJpZGdlQEBRQUVYQUFWTVdl
YkNvcmVTY3JvbGxWaWV3QEBISEBaIEAgMTcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
Q3JlYXRlS0hUTUxWaWV3KGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAmLCBpbnQsIGludCkNCisg
ICAgP0N1cnNpdmVGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFha
IEAgMTggTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpDdXJzaXZlRm9u
dEZhbWlseSh2b2lkKSBjb25zdA0KKyAgICA/RGVBY3RpdmF0ZUV2ZW50QENXZWJDb3JlQnJpZGdl
QEBRQUVYSEBaIEAgMTkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6RGVBY3RpdmF0ZUV2
ZW50KGludCkNCisgICAgP0RlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFC
RUhYWiBAIDIwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0Rml4ZWRGb250
U2l6ZSh2b2lkKSBjb25zdA0KKyAgICA/RGVmYXVsdEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NA
QFFCRUhYWiBAIDIxIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpEZWZhdWx0Rm9udFNp
emUodm9pZCkgY29uc3QNCisgICAgP0RlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5n
c0BAUUJFP0FWVFB0ckMxNkBAWFogQCAyMiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3Jl
U2V0dGluZ3M6OkRlZmF1bHRUZXh0RW5jb2Rpbmcodm9pZCkgY29uc3QNCisgICAgP0RlZmVyc1Rp
bWVyc0BDV2ViQ29yZUJyaWRnZUBAU0FIWFogQCAyMyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6OkRlZmVyc1RpbWVycyh2b2lkKQ0KKyAgICA/RGV0ZXJtaW5lQ3Vyc29yUG9zaXRpb25AQ1dl
YkNvcmVCcmlkZ2VAQFFBRUhBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEFBVlRSZWN0
QEAxQUFWVFBvaW50QEBIQFogQCAyNCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OkRldGVy
bWluZUN1cnNvclBvc2l0aW9uKGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgY2xh
c3MgVFJlY3QgJiwgY2xhc3MgVFJlY3QgJiwgY2xhc3MgVFBvaW50ICYsIGludCkNCisgICAgP0Rp
ZE5vdE9wZW5VUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDI1IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkRpZE5vdE9wZW5VUkwoY2xhc3MgVERlc0MxNiBjb25z
dCAmKQ0KKyAgICA/RG9tYWluQENXZWJDb3JlQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDI2
IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OkRvbWFpbih2b2lkKSBjb25z
dA0KKyAgICA/RHJhd1JlY3RAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZUUmVjdEBAQUFWQ1dlYkNv
cmVHcmFwaGljc0NvbnRleHRAQEBaIEAgMjcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
RHJhd1JlY3QoY2xhc3MgVFJlY3QgY29uc3QgJiwgY2xhc3MgQ1dlYkNvcmVHcmFwaGljc0NvbnRl
eHQgJikNCisgICAgP0R1bXBSZW5kZXJUcmVlQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAyOCBO
T05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpEdW1wUmVuZGVyVHJlZSh2b2lkKQ0KKyAgICA/
RW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCAyOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpFbmQodm9pZCkNCisgICAgP0V4ZWN1dGVTY3JpcHRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhB
QlZURGVzQzE2QEBAWiBAIDMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkV4ZWN1dGVT
Y3JpcHQoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29yZUZvcm1D
b250cm9sRmFjdG9yeUBAU0FQQVZNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeUBAWFogQCAzMSBO
T05BTUUgOyBjbGFzcyBNV2ViQ29yZUZvcm1Db250cm9sRmFjdG9yeSAqIFRXZWJDb3JlRm9ybUNv
bnRyb2xGYWN0b3J5OjpGYWN0b3J5KHZvaWQpDQorICAgID9GYWN0b3J5QFRXZWJDb3JlSW1hZ2VS
ZW5kZXJlckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAWFogQCAz
MiBOT05BTUUgOyBjbGFzcyBNV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5ICogVFdlYkNvcmVJ
bWFnZVJlbmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFjdG9yeUBUV2ViQ29y
ZVRleHRSZW5kZXJlckZhY3RvcnlAQFNBUEFWTVdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5QEBY
WiBAIDMzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSAqIFRXZWJD
b3JlVGV4dFJlbmRlcmVyRmFjdG9yeTo6RmFjdG9yeSh2b2lkKQ0KKyAgICA/RmFudGFzeUZvbnRG
YW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAzNCBOT05BTUUgOyBj
bGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkZhbnRhc3lGb250RmFtaWx5KHZvaWQpIGNv
bnN0DQorICAgID9GYXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUJFSFhaIEAg
MzUgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpGYXN0Rmlyc3REaXNwbGF5TW9kZSh2b2lk
KSBjb25zdA0KKyAgICA/RmluZExpbmtzT2ZUeXBlQENXZWJDb3JlQnJpZGdlQEBRQUVYQUJWVERl
c0MxNkBAQUFWPyRSQXJyYXlAVVRXZWJDb3JlTGlua0l0ZW1AQEBAQFogQCAzNiBOT05BTUUgOyB2
b2lkIENXZWJDb3JlQnJpZGdlOjpGaW5kTGlua3NPZlR5cGUoY2xhc3MgVERlc0MxNiBjb25zdCAm
LCBjbGFzcyBSQXJyYXk8c3RydWN0IFRXZWJDb3JlTGlua0l0ZW0+ICYpDQorICAgID9GaXhlZEZv
bnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAzNyBOT05BTUUg
OyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OkZpeGVkRm9udEZhbWlseSh2b2lkKSBj
b25zdA0KKyAgICA/Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUBDV2ViQ29yZUJyaWRnZUBA
UUFFWEhAWiBAIDM4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkZvcmNlTGF5b3V0QWRq
dXN0aW5nVmlld1NpemUoaW50KQ0KKyAgICA/R2V0UGFnZURhdGFMQENXZWJDb3JlQnJpZGdlQEBR
QUVQQVY/JENBcnJheVB0ckBWQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQEBASEBaIEAgMzkgTk9OQU1F
IDsgY2xhc3MgQ0FycmF5UHRyPGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVtPiAqIENXZWJDb3Jl
QnJpZGdlOjpHZXRQYWdlRGF0YUwoaW50KQ0KKyAgICA/R2V0VGV4dENvbnRlbnRMQENXZWJDb3Jl
QnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBYWiBAIDQwIE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBD
V2ViQ29yZUJyaWRnZTo6R2V0VGV4dENvbnRlbnRMKHZvaWQpDQorICAgID9HZXRVcmxPZk5vZGVJ
bkZvY3VzTEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWSEJ1ZkMxNkBAQUFWVFBvaW50QEBAWiBAIDQx
IE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUJyaWRnZTo6R2V0VXJsT2ZOb2RlSW5G
b2N1c0woY2xhc3MgVFBvaW50ICYpIGNvbnN0DQorICAgID9IYXNQZW5kaW5nTGF5b3V0QENXZWJD
b3JlQnJpZGdlQEBRQkVIWFogQCA0MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Okhhc1Bl
bmRpbmdMYXlvdXQodm9pZCkgY29uc3QNCisgICAgP0hpc3RvcnlQcm92aWRlckBUV2ViQ29yZUhp
c3RvcnlAQFNBUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQFhaIEAgNDMgTk9OQU1FIDsgY2xh
c3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgKiBUV2ViQ29yZUhpc3Rvcnk6Okhpc3RvcnlQcm92
aWRlcih2b2lkKQ0KKyAgICA/SW1hZ2VDb3VudEBDV2ViQ29yZUJyaWRnZUBAUUFFSEhAWiBAIDQ0
IE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6SW1hZ2VDb3VudChpbnQpDQorICAgID9JbWFn
ZVR5cGVAVFdlYkNvcmVJbWFnZUNhcnJpZXJAQFFBRUFBVlRQdHJDMTZAQFhaIEAgNDUgTk9OQU1F
IDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1hZ2VDYXJyaWVyOjpJbWFnZVR5cGUodm9pZCkN
CisgICAgP0ltYWdlc0luUmVjdEBDV2ViQ29yZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlGaXhGbGF0
QFZUV2ViQ29yZUltYWdlQ2FycmllckBAQEBIQFogQCA0NiBOT05BTUUgOyBjbGFzcyBDQXJyYXlG
aXhGbGF0PGNsYXNzIFRXZWJDb3JlSW1hZ2VDYXJyaWVyPiAqIENXZWJDb3JlQnJpZGdlOjpJbWFn
ZXNJblJlY3QoaW50KQ0KKyAgICA/SW5pdGlhbGl6ZVNldHRpbmdzQENXZWJDb3JlQnJpZGdlQEBR
QUVYQUJWQ1dlYkNvcmVTZXR0aW5nc0BAQFogQCA0NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpJbml0aWFsaXplU2V0dGluZ3MoY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyBjb25zdCAmKQ0K
KyAgICA/SW5zdGFsbEluRnJhbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQVZNV2ViQ29yZVNjcm9s
bFZpZXdAQEBaIEAgNDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6SW5zdGFsbEluRnJh
bWUoY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3ICYpDQorICAgID9Jc0ZyYW1lU2V0QENXZWJDb3Jl
QnJpZGdlQEBRQkVIWFogQCA0OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OklzRnJhbWVT
ZXQodm9pZCkgY29uc3QNCisgICAgP0phdmFFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhY
WiBAIDUwIE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhRW5hYmxlZCh2b2lkKSBj
b25zdA0KKyAgICA/SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkVIWFogQCA1MSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2
YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSh2b2lkKSBjb25zdA0KKyAgICA/SmF2
YVNjcmlwdEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgNTIgTk9OQU1FIDsgaW50
IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRFbmFibGVkKHZvaWQpIGNvbnN0DQorICAgID9K
dW1wVG9TZWxlY3Rpb25AQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDUzIE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVCcmlkZ2U6Okp1bXBUb1NlbGVjdGlvbih2b2lkKQ0KKyAgICA/S2V5RXZlbnRAQ1dl
YkNvcmVCcmlkZ2VAQFFBRUhVVEtleUV2ZW50QEBIQFogQCA1NCBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVCcmlkZ2U6OktleUV2ZW50KHN0cnVjdCBUS2V5RXZlbnQsIGludCkNCisgICAgP0xvYWRJbWFn
ZXNAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBAIDU1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlk
Z2U6OkxvYWRJbWFnZXModm9pZCkNCisgICAgP0xvYWRlckNvbnRhaW5lckBUV2ViQ29yZUxvYWRl
ckNvbnRhaW5lckBAU0FQQVZNV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAWFogQCA1NiBOT05BTUUg
OyBjbGFzcyBNV2ViQ29yZUxvYWRlckNvbnRhaW5lciAqIFRXZWJDb3JlTG9hZGVyQ29udGFpbmVy
OjpMb2FkZXJDb250YWluZXIodm9pZCkNCisgICAgP01pbmltdW1Gb250U2l6ZUBDV2ViQ29yZVNl
dHRpbmdzQEBRQkVIWFogQCA1NyBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6TWluaW11
bUZvbnRTaXplKHZvaWQpIGNvbnN0DQorICAgID9NaW5pbXVtTG9naWNhbEZvbnRTaXplQENXZWJD
b3JlU2V0dGluZ3NAQFFCRUhYWiBAIDU4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpN
aW5pbXVtTG9naWNhbEZvbnRTaXplKHZvaWQpIGNvbnN0DQorICAgID9OYW1lQENXZWJDb3JlQnJp
ZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDU5IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNv
cmVCcmlkZ2U6Ok5hbWUodm9pZCkgY29uc3QNCisgICAgP05hdmlnYWJsZU5vZGVVbmRlckN1cnNv
ckBDV2ViQ29yZUJyaWRnZUBAUUJFSEFBVlRQb2ludEBAQUFXNFRXZWJDb3JlRm9jdXNlZEVsZW1l
bnRUeXBlQEBBQVZUUmVjdEBAQFogQCA2MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6Ok5h
dmlnYWJsZU5vZGVVbmRlckN1cnNvcihjbGFzcyBUUG9pbnQgJiwgZW51bSBUV2ViQ29yZUZvY3Vz
ZWRFbGVtZW50VHlwZSAmLCBjbGFzcyBUUmVjdCAmKSBjb25zdA0KKyAgICA/TmVlZHNMYXlvdXRA
Q1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDYxIE5PTkFNRSA7IGludCBDV2ViQ29yZUJyaWRnZTo6
TmVlZHNMYXlvdXQodm9pZCkgY29uc3QNCisgICAgP05ld0xAQ1dlYkNvcmVCcmlkZ2VAQFNBUEFW
MUBBQVZNV2ViQ2xpZW50QnJpZGdlQEBAWiBAIDYyIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlQnJp
ZGdlICogQ1dlYkNvcmVCcmlkZ2U6Ok5ld0woY2xhc3MgTVdlYkNsaWVudEJyaWRnZSAmKQ0KKyAg
ICA/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQEFBVkNGYnNCaXRHY0BAUEFW
Q0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDYzIE5PTkFNRSA7IGNsYXNz
IENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5ld0wo
Y2xhc3MgQ0Zic0JpdEdjICYsIGNsYXNzIENGYnNCaXRtYXAgKiwgY2xhc3MgTVdlYkNvcmVTY3Jv
bGxWaWV3ICopDQorICAgID9OZXdMQENXZWJDb3JlR3JhcGhpY3NDb250ZXh0QEBTQVBBVjFAUEFW
Q0Zic0JpdG1hcERldmljZUBAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBA
WiBAIDY0IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVH
cmFwaGljc0NvbnRleHQ6Ok5ld0woY2xhc3MgQ0Zic0JpdG1hcERldmljZSAqLCBjbGFzcyBDRmJz
Qml0bWFwICosIGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAqKQ0KKyAgICA/TmV3TEBDV2ViQ29y
ZVNldHRpbmdzQEBTQVBBVjFAWFogQCA2NSBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZVNldHRpbmdz
ICogQ1dlYkNvcmVTZXR0aW5nczo6TmV3TCh2b2lkKQ0KKyAgICA/Tm90aWZ5RGVjb2RpbmdFcnJv
ckBDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyQEBRQUVYWFogQCA2NiBOT05BTUUgOyB2b2lk
IENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXI6Ok5vdGlmeURlY29kaW5nRXJyb3Iodm9pZCkN
CisgICAgP05vdGlmeUZpbmlzaGVkQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXJAQFFBRVhY
WiBAIDY3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6Tm90aWZ5
RmluaXNoZWQodm9pZCkNCisgICAgP05vdGlmeVVwZGF0ZUBDV2ViQ29yZUltYWdlQ2FsbGJhY2tX
cmFwcGVyQEBRQUVYWFogQCA2OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlSW1hZ2VDYWxsYmFja1dy
YXBwZXI6Ok5vdGlmeVVwZGF0ZSh2b2lkKQ0KKyAgICA/TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVl
c3RzQENXZWJDb3JlQnJpZGdlQEBRQUVIWFogQCA2OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6Ok51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh2b2lkKQ0KKyAgICA/T3BlblVSTEBDV2Vi
Q29yZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEgwMEFCVlREYXRlVGltZUBAQFogQCA3MCBOT05B
TUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpPcGVuVVJMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwg
aW50LCBjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3Mg
VERhdGVUaW1lIGNvbnN0ICYpDQorICAgID9QbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFu
ZGxlckBAU0FQQVZNV2ViQ29yZVBsdWdpbkhhbmRsZXJAQFhaIEAgNzEgTk9OQU1FIDsgY2xhc3Mg
TVdlYkNvcmVQbHVnaW5IYW5kbGVyICogVFdlYkNvcmVQbHVnaW5IYW5kbGVyOjpQbHVnaW5IYW5k
bGVyKHZvaWQpDQorICAgID9QbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFog
QCA3MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQodm9pZCkg
Y29uc3QNCisgICAgP1BvaW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBAUUFFWFVUUG9pbnRlckV2
ZW50QEBAWiBAIDczIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVudChz
dHJ1Y3QgVFBvaW50ZXJFdmVudCkNCisgICAgP1BvaW50ZXJFdmVudEBDV2ViQ29yZUJyaWRnZUBA
UUFFWFc0VFR5cGVAVFBvaW50ZXJFdmVudEBAQUJWVFBvaW50QEBAWiBAIDc0IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVCcmlkZ2U6OlBvaW50ZXJFdmVudChlbnVtIFRQb2ludGVyRXZlbnQ6OlRUeXBl
LCBjbGFzcyBUUG9pbnQgY29uc3QgJikNCisgICAgP1ByZXBhcmVGb3JFeGl0QENXZWJDb3JlQnJp
ZGdlQEBTQVhYWiBAIDc1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlByZXBhcmVGb3JF
eGl0KHZvaWQpDQorICAgID9Qcm92aXNpb25hbExvYWRTdGFydGVkQENXZWJDb3JlQnJpZGdlQEBR
QUVYWFogQCA3NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpQcm92aXNpb25hbExvYWRT
dGFydGVkKHZvaWQpDQorICAgID9SYXdEYXRhQFRXZWJDb3JlSW1hZ2VDYXJyaWVyQEBRQUVBQVZU
UHRyQzhAQFhaIEAgNzcgTk9OQU1FIDsgY2xhc3MgVFB0ckM4ICYgVFdlYkNvcmVJbWFnZUNhcnJp
ZXI6OlJhd0RhdGEodm9pZCkNCisgICAgP1JlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlQENXZWJD
b3JlQnJpZGdlQEBRQUVYVzRUV2ViQ29yZURldmljZVR5cGVAQEBaIEAgNzggTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUJyaWRnZTo6UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGUoZW51bSBUV2ViQ29y
ZURldmljZVR5cGUpDQorICAgID9SZWZlcnJlckBDV2ViQ29yZUJyaWRnZUBAUUJFP0FWVFB0ckMx
NkBAWFogQCA3OSBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlQnJpZGdlOjpSZWZlcnJl
cih2b2lkKSBjb25zdA0KKyAgICA/UmVtb3ZlRmlsZU5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhB
QVZUUG9pbnRAQEBaIEAgODAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6UmVtb3ZlRmls
ZU5hbWUoY2xhc3MgVFBvaW50ICYpDQorICAgID9SZW1vdmVGcm9tRnJhbWVAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhYWiBAIDgxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlbW92ZUZyb21G
cmFtZSh2b2lkKQ0KKyAgICA/UmVuZGVyUGFydEBDV2ViQ29yZUJyaWRnZUBAUUJFUEFWMGtodG1s
QEBYWiBAIDgyIE5PTkFNRSA7IGNsYXNzIGtodG1sOjpSZW5kZXJQYXJ0ICogQ1dlYkNvcmVCcmlk
Z2U6OlJlbmRlclBhcnQodm9pZCkgY29uc3QNCisgICAgP1JlbmRlcmVyQFRXZWJDb3JlSW1hZ2VD
YXJyaWVyQEBRQUVQQVZNV2ViQ29yZUltYWdlUmVuZGVyZXJAQFhaIEAgODMgTk9OQU1FIDsgY2xh
c3MgTVdlYkNvcmVJbWFnZVJlbmRlcmVyICogVFdlYkNvcmVJbWFnZUNhcnJpZXI6OlJlbmRlcmVy
KHZvaWQpDQorICAgID9SZXNvbHZlVXJsTEBDV2ViQ29yZUJyaWRnZUBAU0FQQVZIQnVmQzE2QEBB
QlZURGVzQzE2QEAwQFogQCA4NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlk
Z2U6OlJlc29sdmVVcmxMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25z
dCAmKQ0KKyAgICA/UmVzdG9yZURvY3VtZW50U3RhdGVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBA
IDg1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlJlc3RvcmVEb2N1bWVudFN0YXRlKHZv
aWQpDQorICAgID9TYW5zU2VyaWZGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQ
dHJDMTZAQFhaIEAgODYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpT
YW5zU2VyaWZGb250RmFtaWx5KHZvaWQpIGNvbnN0DQorICAgID9TYXZlRG9jdW1lbnRTdGF0ZUBD
V2ViQ29yZUJyaWRnZUBAUUFFWFhaIEAgODcgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
U2F2ZURvY3VtZW50U3RhdGUodm9pZCkNCisgICAgP1NhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29y
ZVNldHRpbmdzQEBRQkVIWFogQCA4OCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6U2F2
ZVJhd0RhdGFFbmFibGVkKHZvaWQpIGNvbnN0DQorICAgID9TY2FsaW5nRmFjdG9yQ2hhbmdlZEBD
V2ViQ29yZUJyaWRnZUBAUUFFWEhAWiBAIDg5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6
OlNjYWxpbmdGYWN0b3JDaGFuZ2VkKGludCkNCisgICAgP1Njcm9sbFRvQW5jaG9yQENXZWJDb3Jl
QnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCA5MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJp
ZGdlOjpTY3JvbGxUb0FuY2hvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TY3JvbGxU
b0FuY2hvcldpdGhVUkxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDkxIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNjcm9sbFRvQW5jaG9yV2l0aFVSTChjbGFzcyBU
RGVzQzE2IGNvbnN0ICYpDQorICAgID9TZWFyY2hBZ2FpbkBDV2ViQ29yZUJyaWRnZUBAUUFFSEFC
VlREZXNDMTZAQEhISEBaIEAgOTIgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTZWFyY2hB
Z2FpbihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQorICAgID9TZWFyY2hG
b3JAQ1dlYkNvcmVCcmlkZ2VAQFFBRUhBQlZURGVzQzE2QEBISEhAWiBAIDkzIE5PTkFNRSA7IGlu
dCBDV2ViQ29yZUJyaWRnZTo6U2VhcmNoRm9yKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBp
bnQsIGludCkNCisgICAgP1NlbGVjdGlvbkNvbG9yQENXZWJDb3JlQnJpZGdlQEBRQUU/QVZUUmdi
QEBYWiBAIDk0IE5PTkFNRSA7IGNsYXNzIFRSZ2IgQ1dlYkNvcmVCcmlkZ2U6OlNlbGVjdGlvbkNv
bG9yKHZvaWQpDQorICAgID9TZW5kUmVzaXplRXZlbnRAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhYWiBA
IDk1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNlbmRSZXNpemVFdmVudCh2b2lkKQ0K
KyAgICA/U2VuZFNjcm9sbEV2ZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYWFogQCA5NiBOT05BTUUg
OyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZW5kU2Nyb2xsRXZlbnQodm9pZCkNCisgICAgP1Nlcmlm
Rm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDk3IE5PTkFN
RSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U2VyaWZGb250RmFtaWx5KHZvaWQp
IGNvbnN0DQorICAgID9TZXRBdXRvUmVmcmVzaEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFF
WEhAWiBAIDk4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0QXV0b1JlZnJlc2hF
bmFibGVkKGludCkNCisgICAgP1NldENhbGxiYWNrQENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBw
ZXJAQFFBRVhQQVZDYWNoZWRJbWFnZUNhbGxiYWNrQGtodG1sQEBAWiBAIDk5IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjo6U2V0Q2FsbGJhY2soY2xhc3Mga2h0bWw6
OkNhY2hlZEltYWdlQ2FsbGJhY2sgKikNCisgICAgP1NldENvb2tpZUFkYXB0ZXJAVFdlYkNvcmVD
b29raWVGYWN0b3J5QEBTQVhQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQEBaIEAgMTAwIE5PTkFN
RSA7IHZvaWQgVFdlYkNvcmVDb29raWVGYWN0b3J5OjpTZXRDb29raWVBZGFwdGVyKGNsYXNzIE1X
ZWJDb3JlQ29va2llQWRhcHRlciAqKQ0KKyAgICA/U2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTAxIE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0K
KyAgICA/U2V0RGVmYXVsdEZpeGVkRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDEwMiBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRGaXhlZEZvbnRT
aXplKGludCkNCisgICAgP1NldERlZmF1bHRGb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVY
SEBaIEAgMTAzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RGVmYXVsdEZvbnRT
aXplKGludCkNCisgICAgP1NldERlZmF1bHRUZXh0RW5jb2RpbmdAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEFCVlREZXNDMTZAQEBaIEAgMTA0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0RGVmYXVsdFRleHRFbmNvZGluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9TZXRE
ZWZlcnNUaW1lcnNAQ1dlYkNvcmVCcmlkZ2VAQFNBWEhAWiBAIDEwNSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlQnJpZGdlOjpTZXREZWZlcnNUaW1lcnMoaW50KQ0KKyAgICA/U2V0RHJhd3NCYWNrZ3Jv
dW5kQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTA2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVC
cmlkZ2U6OlNldERyYXdzQmFja2dyb3VuZChpbnQpDQorICAgID9TZXRGYW50YXN5Rm9udEZhbWls
eUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMDcgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRGYW50YXN5Rm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNv
bnN0ICYpDQorICAgID9TZXRGYXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUJyaWRnZUBAUUFF
WEhAWiBAIDEwOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRGYXN0Rmlyc3REaXNw
bGF5TW9kZShpbnQpDQorICAgID9TZXRGaXhlZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEFCVlREZXNDMTZAQEBaIEAgMTA5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0Rml4ZWRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldEZvbnRT
aXplTGV2ZWxAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhIQFogQCAxMTAgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUJyaWRnZTo6U2V0Rm9udFNpemVMZXZlbChpbnQpDQorICAgID9TZXRGb3JtQ29udHJvbFRl
eHRCeU5hbWVAQ1dlYkNvcmVCcmlkZ2VAQFFBRVhBQlZURGVzQzE2QEAwQFogQCAxMTEgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNsYXNzIFRE
ZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0SGlzdG9yeVBy
b3ZpZGVyQFRXZWJDb3JlSGlzdG9yeUBAU0FYUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQEBa
IEAgMTEyIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVIaXN0b3J5OjpTZXRIaXN0b3J5UHJvdmlkZXIo
Y2xhc3MgTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXIgKikNCisgICAgP1NldEphdmFFbmFibGVkQENX
ZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRp
bmdzOjpTZXRKYXZhRW5hYmxlZChpbnQpDQorICAgID9TZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxMTQgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5KGludCkNCisgICAgP1NldEphdmFTY3JpcHRFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NA
QFFBRVhIQFogQCAxMTUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRKYXZhU2Ny
aXB0RW5hYmxlZChpbnQpDQorICAgID9TZXRNYXhCaWRpV2lkdGhAQ1dlYkNvcmVCcmlkZ2VAQFFB
RVhIQFogQCAxMTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0TWF4QmlkaVdpZHRo
KGludCkNCisgICAgP1NldE1pbmltdW1Gb250U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBa
IEAgMTE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0TWluaW11bUZvbnRTaXpl
KGludCkNCisgICAgP1NldE1pbmltdW1Mb2dpY2FsRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEhAWiBAIDExOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1M
b2dpY2FsRm9udFNpemUoaW50KQ0KKyAgICA/U2V0TmFtZUBDV2ViQ29yZUJyaWRnZUBAUUFFWEFC
VlREZXNDMTZAQEBaIEAgMTE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldE5hbWUo
Y2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0TmVlZHNMYXlvdXRAQ1dlYkNvcmVCcmlk
Z2VAQFFBRVhYWiBAIDEyMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXROZWVkc0xh
eW91dCh2b2lkKQ0KKyAgICA/U2V0UGFyZW50QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWMUBAWiBA
IDEyMSBOT05BTUUgOyB2b2lkIENXZWJDb3JlQnJpZGdlOjpTZXRQYXJlbnQoY2xhc3MgQ1dlYkNv
cmVCcmlkZ2UgKikNCisgICAgP1NldFBsdWdpbnNFbmFibGVkQENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhIQFogQCAxMjIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRQbHVnaW5zRW5h
YmxlZChpbnQpDQorICAgID9TZXRSZW5kZXJQYXJ0QENXZWJDb3JlQnJpZGdlQEBRQUVYUEFWUmVu
ZGVyUGFydEBraHRtbEBAQFogQCAxMjMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6U2V0
UmVuZGVyUGFydChjbGFzcyBraHRtbDo6UmVuZGVyUGFydCAqKQ0KKyAgICA/U2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjQgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTYW5zU2VyaWZGb250RmFtaWx5KGNsYXNz
IFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldFNhdmVSYXdEYXRhRW5hYmxlZEBDV2ViQ29yZVNl
dHRpbmdzQEBRQUVYSEBaIEAgMTI1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0
U2F2ZVJhd0RhdGFFbmFibGVkKGludCkNCisgICAgP1NldFNlcmlmRm9udEZhbWlseUBDV2ViQ29y
ZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjYgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZVNldHRpbmdzOjpTZXRTZXJpZkZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAg
ICA/U2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3JlQnJpZGdlQEBRQUVYSEBaIEAgMTI3
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OlNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhp
bnQpDQorICAgID9TZXRTaG91bGRQcmludEJhY2tncm91bmRzQENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhIQFogQCAxMjggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTaG91bGRQcmlu
dEJhY2tncm91bmRzKGludCkNCisgICAgP1NldFN0YW5kYXJkRm9udEZhbWlseUBDV2ViQ29yZVNl
dHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNl
dHRpbmdzOjpTZXRTdGFuZGFyZEZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAg
ICA/U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERl
c0MxNkBAQFogQCAxMzAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisgICAgP1NldFdlYkNvcmVG
b3JtQ29udHJvbEZhY3RvcnlAVFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnlAQFNBWFBBVk1XZWJD
b3JlRm9ybUNvbnRyb2xGYWN0b3J5QEBAWiBAIDEzMSBOT05BTUUgOyB2b2lkIFRXZWJDb3JlRm9y
bUNvbnRyb2xGYWN0b3J5OjpTZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5KGNsYXNzIE1XZWJD
b3JlRm9ybUNvbnRyb2xGYWN0b3J5ICopDQorICAgID9TZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZh
Y3RvcnlAVFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVJbWFnZVJl
bmRlcmVyRmFjdG9yeUBAQFogQCAxMzIgTk9OQU1FIDsgdm9pZCBUV2ViQ29yZUltYWdlUmVuZGVy
ZXJGYWN0b3J5OjpTZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkoY2xhc3MgTVdlYkNvcmVJ
bWFnZVJlbmRlcmVyRmFjdG9yeSAqKQ0KKyAgICA/U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5lckBU
V2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FYUEFWTVdlYkNvcmVMb2FkZXJDb250YWluZXJAQEBa
IEAgMTMzIE5PTkFNRSA7IHZvaWQgVFdlYkNvcmVMb2FkZXJDb250YWluZXI6OlNldFdlYkNvcmVM
b2FkZXJDb250YWluZXIoY2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKikNCisgICAgP1Nl
dFdlYkNvcmVQbHVnaW5IYW5kbGVyQFRXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FYUEFWTVdlYkNv
cmVQbHVnaW5IYW5kbGVyQEBAWiBAIDEzNCBOT05BTUUgOyB2b2lkIFRXZWJDb3JlUGx1Z2luSGFu
ZGxlcjo6U2V0V2ViQ29yZVBsdWdpbkhhbmRsZXIoY2xhc3MgTVdlYkNvcmVQbHVnaW5IYW5kbGVy
ICopDQorICAgID9TZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBUV2ViQ29yZVRleHRSZW5k
ZXJlckZhY3RvcnlAQFNBWFBBVk1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeUBAQFogQCAxMzUg
Tk9OQU1FIDsgdm9pZCBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk6OlNldFdlYkNvcmVUZXh0
UmVuZGVyZXJGYWN0b3J5KGNsYXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSAqKQ0KKyAg
ICA/U2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhI
QFogQCAxMzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRXaWxsTG9hZEltYWdl
c0F1dG9tYXRpY2FsbHkoaW50KQ0KKyAgICA/U2hvdWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3Jl
QnJpZGdlQEBRQUVIWFogQCAxMzcgTk9OQU1FIDsgaW50IENXZWJDb3JlQnJpZGdlOjpTaG91bGRD
cmVhdGVSZW5kZXJlcnModm9pZCkNCisgICAgP1Nob3VsZFByaW50QmFja2dyb3VuZHNAQ1dlYkNv
cmVTZXR0aW5nc0BAUUJFSFhaIEAgMTM4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpT
aG91bGRQcmludEJhY2tncm91bmRzKHZvaWQpIGNvbnN0DQorICAgID9TaG93aW5nRmFzdFByZXZp
ZXdAQ1dlYkNvcmVCcmlkZ2VAQFFCRUhYWiBAIDEzOSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVCcmlk
Z2U6OlNob3dpbmdGYXN0UHJldmlldyh2b2lkKSBjb25zdA0KKyAgICA/U3RhbmRhcmRGb250RmFt
aWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQwIE5PTkFNRSA7IGNs
YXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U3RhbmRhcmRGb250RmFtaWx5KHZvaWQpIGNv
bnN0DQorICAgID9UYWJiZWROYXZpZ2F0aW9uQENXZWJDb3JlQnJpZGdlQEBRQUVIVzRUV2ViTmF2
RGlyZWN0aW9uQEBBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEhAWiBAIDE0MSBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVCcmlkZ2U6OlRhYmJlZE5hdmlnYXRpb24oZW51bSBUV2ViTmF2RGly
ZWN0aW9uLCBlbnVtIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlICYsIGludCkNCisgICAgP1Rl
eHRFbmNvZGluZ0BDV2ViQ29yZUJyaWRnZUBAUUJFSVhaIEAgMTQyIE5PTkFNRSA7IHVuc2lnbmVk
IGludCBDV2ViQ29yZUJyaWRnZTo6VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQorICAgID9VUkxA
Q1dlYkNvcmVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTQzIE5PTkFNRSA7IGNsYXNzIFRQ
dHJDMTYgQ1dlYkNvcmVCcmlkZ2U6OlVSTCh2b2lkKSBjb25zdA0KKyAgICA/VVJMV2l0aFJlbGF0
aXZlU3RyaW5nQENXZWJDb3JlQnJpZGdlQEBRQUVQQVZIQnVmQzE2QEBBQlZURGVzQzE2QEBAWiBA
IDE0NCBOT05BTUUgOyBjbGFzcyBIQnVmQzE2ICogQ1dlYkNvcmVCcmlkZ2U6OlVSTFdpdGhSZWxh
dGl2ZVN0cmluZyhjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9VcGRhdGVBbGxWaWV3c0BD
V2ViQ29yZUJyaWRnZUBAU0FYWFogQCAxNDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
VXBkYXRlQWxsVmlld3Modm9pZCkNCisgICAgP1VybEBUV2ViQ29yZUltYWdlQ2FycmllckBAUUFF
QUFWVFB0ckMxNkBAWFogQCAxNDYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiAmIFRXZWJDb3JlSW1h
Z2VDYXJyaWVyOjpVcmwodm9pZCkNCisgICAgP1VzZXJTdHlsZVNoZWV0TG9jYXRpb25AQ1dlYkNv
cmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAxNDcgTk9OQU1FIDsgY2xhc3MgVFB0ckMx
NiBDV2ViQ29yZVNldHRpbmdzOjpVc2VyU3R5bGVTaGVldExvY2F0aW9uKHZvaWQpIGNvbnN0DQor
ICAgID9XaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFha
IEAgMTQ4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpXaWxsTG9hZEltYWdlc0F1dG9t
YXRpY2FsbHkodm9pZCkgY29uc3QNCisgICAgP2hhc093blByb3BlcnR5QE9iamVjdEBLSlNAQFFC
RV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQEBaIEAgMTQ5IE5PTkFNRSA7IGJvb2wg
S0pTOjpPYmplY3Q6Omhhc093blByb3BlcnR5KGNsYXNzIEtKUzo6RXhlY1N0YXRlICosIGNsYXNz
IEtKUzo6SWRlbnRpZmllciBjb25zdCAmKSBjb25zdA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0
QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFogQCAxNTAgTk9OQU1F
IDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwg
Y2xhc3MgS0pTOjpJZGVudGlmaWVyIGNvbnN0ICYpIGNvbnN0DQorICAgID9tYXJrZWRAVmFsdWVJ
bXBAS0pTQEBRQkVfTlhaIEAgMTUxIE5PTkFNRSA7IGJvb2wgS0pTOjpWYWx1ZUltcDo6bWFya2Vk
KHZvaWQpIGNvbnN0DQorICAgID9jbGFzc0luZm9AT2JqZWN0QEtKU0BAUUJFUEJVQ2xhc3NJbmZv
QDJAWFogQCAxNTIgTk9OQU1FIDsgc3RydWN0IEtKUzo6Q2xhc3NJbmZvIGNvbnN0ICogS0pTOjpP
YmplY3Q6OmNsYXNzSW5mbyh2b2lkKSBjb25zdA0KKyAgICA/aGFzT3duUHJvcGVydHlAT2JqZWN0
QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVAMkBJQFogQCAxNTMgTk9OQU1FIDsgYm9vbCBLSlM6Ok9i
amVjdDo6aGFzT3duUHJvcGVydHkoY2xhc3MgS0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50
KSBjb25zdA0KKyAgICA/aGFzUHJvcGVydHlAT2JqZWN0QEtKU0BAUUJFX05QQVZFeGVjU3RhdGVA
MkBJQFogQCAxNTQgTk9OQU1FIDsgYm9vbCBLSlM6Ok9iamVjdDo6aGFzUHJvcGVydHkoY2xhc3Mg
S0pTOjpFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW50KSBjb25zdA0KKyAgICA/cHJvcExpc3RAT2Jq
ZWN0QEtKU0BAUUFFP0FWUmVmZXJlbmNlTGlzdEAyQFBBVkV4ZWNTdGF0ZUAyQF9OQFogQCAxNTUg
Tk9OQU1FIDsgY2xhc3MgS0pTOjpSZWZlcmVuY2VMaXN0IEtKUzo6T2JqZWN0Ojpwcm9wTGlzdChj
bGFzcyBLSlM6OkV4ZWNTdGF0ZSAqLCBib29sKQ0KKyAgICA/R2V0TmV4dFJlbmRlclRleHRGb3JT
bWFydExpbmtzTEBDV2ViQ29yZUJyaWRnZUBAUUFFP0FWVFB0ckMxNkBAQUFIQFogQCAxNTYgTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUJyaWRnZTo6R2V0TmV4dFJlbmRlclRleHRGb3JT
bWFydExpbmtzTChpbnQgJikNCisgICAgP0dldFJlbmRlclRleHRBcmVhQENXZWJDb3JlQnJpZGdl
QEBRQUVYQUJWVERlc0MxNkBAQUFWPyRSQXJyYXlAVlRSZWN0QEBAQEBaIEAgMTU3IE5PTkFNRSA7
IHZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkdldFJlbmRlclRleHRBcmVhKGNsYXNzIFREZXNDMTYgY29u
c3QgJiwgY2xhc3MgUkFycmF5PGNsYXNzIFRSZWN0PiAmKQ0KKyAgICAgICAgP1dpbmRvd1Njcmlw
dE5QT2JqZWN0QENXZWJDb3JlQnJpZGdlQEBRQUVQQVZOUE9iamVjdEBAWFogQCAxNTggTk9OQU1F
IDsgY2xhc3MgTlBPYmplY3QgKiBDV2ViQ29yZUJyaWRnZTo6V2luZG93U2NyaXB0TlBPYmplY3Qo
dm9pZCkNCiANCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI5MikNCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQ0KQEAgLTEsMyArMSw4MSBAQA0KKzIwMDYtMTAtMjUgIHlhZGF2YWxsICA8c3Jp
cmFtLnlhZGF2YWxsaUBub2tpYS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBC
dWp0YXMgKHpidWp0YXNAZ21haWwuY29tKS4NCisgICAgICAgIERFU0M6IFNjcmlwdGFibGUgcGx1
Z2luICYgd2lkZ2V0IG9iamVjdCBpbXBsZW1lbnRhdGlvbg0KKyAgICAgICAgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDcNCisNCisgICAgICAgIFdBUk5JTkc6IE5P
IFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRA0KKw0KKyAgICAgICAgKiBCV0lOUy9XRUJDT1JF
VS5ERUY6DQorICAgICAgICAqIEVBQkkvV2ViQ29yZVUuREVGOg0KKyAgICAgICAgKiBicmlkZ2Uv
V2ViQ29yZUJyaWRnZS5jcHA6DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6On5DV2ViQ29yZUJy
aWRnZSk6DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OkNyZWF0ZURvY3VtZW50V2l0aEVuY29k
aW5nKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6V2luZG93U2NyaXB0TlBPYmplY3QpOg0K
KyAgICAgICAgKENXZWJDb3JlQnJpZGdlOjpHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NM
KToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6R2V0UmVuZGVyVGV4dEFyZWEpOg0KKyAgICAg
ICAgKENXZWJDb3JlQnJpZGdlOjpHZXRQYWdlRGF0YUwpOg0KKyAgICAgICAgKENXZWJDb3JlQnJp
ZGdlOjpUYWJiZWROYXZpZ2F0aW9uKToNCisgICAgICAgICogYnJpZGdlL1dlYkNvcmVCcmlkZ2Uu
aDoNCisgICAgICAgICogYnJpZGdlL1dlYkNvcmVXaWRnZXQuaDoNCisgICAgICAgIChNV2ViQ29y
ZVdpZGdldDo6UGx1Z2luU2NyaXB0YWJsZU9iamVjdCk6DQorICAgICAgICAqIGdyb3VwL0tIVE1M
Lm1tcDoNCisgICAgICAgICogZ3JvdXAvS1dRLm1tcDoNCisgICAgICAgICogZ3JvdXAvV2ViQ29y
ZS5tbXA6DQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwOg0KKyAgICAgICAg
KEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6OmlzR2xvYmFsT2JqZWN0KToNCisgICAgICAgIChLSlM6
OlNjcmlwdEludGVycHJldGVyOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUpOg0KKyAg
ICAgICAgKiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmg6DQorICAgICAgICAqIGtodG1sL2VjbWEv
a2pzX2RvbS5jcHA6DQorICAgICAgICAoRE9NTm9kZTo6bWFyayk6DQorICAgICAgICAoRE9NTm9k
ZTo6Z2V0VmFsdWVQcm9wZXJ0eSk6DQorICAgICAgICAoRE9NTm9kZTo6Z2V0TGlzdGVuZXIpOg0K
KyAgICAgICAgKERPTU5vZGVQcm90b0Z1bmM6OnRyeUNhbGwpOg0KKyAgICAgICAgKERPTU5vZGVM
aXN0OjpjYWxsKToNCisgICAgICAgIChET01Eb2N1bWVudDo6RE9NRG9jdW1lbnQpOg0KKyAgICAg
ICAgKERPTURvY3VtZW50UHJvdG9GdW5jOjp0cnlDYWxsKToNCisgICAgICAgIChET01FbGVtZW50
OjpET01FbGVtZW50KToNCisgICAgICAgIChET01FbGVtZW50UHJvdG9GdW5jOjp0cnlDYWxsKToN
CisgICAgICAgIChET01ET01JbXBsZW1lbnRhdGlvbjo6RE9NRE9NSW1wbGVtZW50YXRpb24pOg0K
KyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6RE9NTmFtZWROb2RlTWFwKToNCisgICAgICAgIChL
SlM6OmdldERPTURvY3VtZW50Tm9kZSk6DQorICAgICAgICAoS0pTOjpjaGVja05vZGVTZWN1cml0
eSk6DQorICAgICAgICAoS0pTOjpnZXRSdW50aW1lT2JqZWN0KToNCisgICAgICAgIChET01OYW1l
ZE5vZGVzQ29sbGVjdGlvbjo6dHJ5R2V0KToNCisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpE
T01DaGFyYWN0ZXJEYXRhKToNCisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhUHJvdG9GdW5jOjp0
cnlDYWxsKToNCisgICAgICAgIChET01UZXh0OjpET01UZXh0KToNCisgICAgICAgICoga2h0bWwv
ZWNtYS9ranNfd2luZG93LmNwcDoNCisgICAgICAgIChXaW5kb3c6OldpbmRvdyk6DQorICAgICAg
ICAoV2luZG93OjptYXJrKToNCisgICAgICAgIChXaW5kb3c6OmdldCk6DQorICAgICAgICAqIGto
dG1sL2VjbWEva2pzX3dpbmRvdy5oOg0KKyAgICAgICAgKEtKUzo6V2luZG93OjopOg0KKyAgICAg
ICAgKEtKUzo6U2VsZWN0aW9uOjopOg0KKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193aW5kb3cu
bHV0Lmg6DQorICAgICAgICAoS0pTOjopOg0KKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfb2Jq
ZWN0aW1wbC5jcHA6DQorICAgICAgICAoSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpnZXRBcHBsZXRJ
bnN0YW5jZSk6DQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudEltcGw6OkhUTUxFbWJlZEVsZW1l
bnRJbXBsKToNCisgICAgICAgIChIVE1MRW1iZWRFbGVtZW50SW1wbDo6Z2V0RW1iZWRJbnN0YW5j
ZSk6DQorICAgICAgICAqIGtodG1sL2h0bWwvaHRtbF9vYmplY3RpbXBsLmg6DQorICAgICAgICAq
IGt3cS9LV1FLSFRNTFBhcnQuY3BwOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6S1dRS0hUTUxQ
YXJ0KToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OnN1Ym1pdEZvcm0pOg0KKyAgICAgICAgKEtX
UUtIVE1MUGFydDo6YmluZGluZ1Jvb3RPYmplY3QpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6
Z2V0UmVuZGVyVGV4dFJlY3RBcnJheSk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjphZGRQbHVn
aW5Sb290T2JqZWN0KToNCisgICAgICAgIChLV1FLSFRNTFBhcnQ6OmNsZWFudXBQbHVnaW5Sb290
T2JqZWN0cyk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXROZXdUYWJiZWRDdXJzb3JQb3Np
dGlvbik6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0Ojp0YWJiZWROYXZpZ2F0aW9uKToNCisgICAg
ICAgIChLV1FLSFRNTFBhcnQ6OnByZXBhcmVGb3JVc2VyQWN0aW9uKToNCisgICAgICAgIChLV1FL
SFRNTFBhcnQ6OmNyZWF0ZVdpZGdldE9iamVjdCk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0Ojpn
ZXRFbWJlZEluc3RhbmNlRm9yVmlldyk6DQorICAgICAgICAoS1dRS0hUTUxQYXJ0OjpnZXRPYmpl
Y3RJbnN0YW5jZUZvclZpZXcpOg0KKyAgICAgICAgKEtXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0
TlBPYmplY3QpOg0KKyAgICAgICAgKiBrd3EvS1dRS0hUTUxQYXJ0Lmg6DQorICAgICAgICAoS1dR
S0hUTUxQYXJ0OjpnZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcpOg0KKw0KIDIwMDYtMTAtMjMgIG5h
Z3VvICA8Z2VvcmdlLmd1b0Bub2tpYS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBaYWxh
bi4NCkluZGV4OiBXZWJDb3JlL0VBQkkvV2ViQ29yZVUuREVGDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9FQUJJL1dlYkNvcmVVLkRFRgkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9FQUJJ
L1dlYkNvcmVVLkRFRgkod29ya2luZyBjb3B5KQ0KQEAgLTEsMTYyICsxLDE2MyBAQA0KIEVYUE9S
VFMNCi0JX1pOMTNUV2ViQ29yZUNhY2hlMTVBZGRJdGVtVG9DYWNoZUxFUjI5TVdlYkNvcmVVcmxS
ZXNwb25zZUhlYWRlckluZm9SNlREZXNDOGkgQCAxIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlMTBJbWFnZUNvdW50RWkgQCAyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTBMb2Fk
SW1hZ2VzRXYgQCAzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTFSZXNvbHZlVXJsTEVS
SzdURGVzQzE2UzJfIEAgNCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTExU2VhcmNoQWdh
aW5FUks3VERlc0MxNmlpaSBAIDUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMkRlZmVy
c1RpbWVyc0V2IEAgNiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTEyR2V0UGFnZURhdGFM
RWkgQCA3IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTJJbWFnZXNJblJlY3RFaSBAIDgg
Tk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxMlBvaW50ZXJFdmVudEUxM1RQb2ludGVyRXZl
bnQgQCA5IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTJQb2ludGVyRXZlbnRFTjEzVFBv
aW50ZXJFdmVudDVUVHlwZUVSSzZUUG9pbnQgQCAxMCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJy
aWRnZTEzQWN0aXZhdGVFdmVudEVSNlRQb2ludCBAIDExIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3Jl
QnJpZGdlMTNBZGRUb0NvbnRhY3RzRVI2VFBvaW50IEAgMTIgTk9OQU1FDQotCV9aTjE0Q1dlYkNv
cmVCcmlkZ2UxM0RpZE5vdE9wZW5VUkxFUks3VERlc0MxNiBAIDEzIE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlMTNFeGVjdXRlU2NyaXB0RVJLN1REZXNDMTYgQCAxNCBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTEzU2V0UmVuZGVyUGFydEVQTjVraHRtbDEwUmVuZGVyUGFydEUgQCAx
NSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0QWRqdXN0Vmlld1NpemVFdiBAIDE2IE5P
TkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTREdW1wUmVuZGVyVHJlZUV2IEAgMTcgTk9OQU1F
DQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNEluc3RhbGxJbkZyYW1lRVIxOE1XZWJDb3JlU2Nyb2xs
VmlldyBAIDE4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRQcmVwYXJlRm9yRXhpdEV2
IEAgMTkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFJlbW92ZUZpbGVOYW1lRVI2VFBv
aW50IEAgMjAgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNjcm9sbFRvQW5jaG9yRVJL
N1REZXNDMTYgQCAyMSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2VsZWN0aW9uQ29s
b3JFdiBAIDIyIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTRTZXROZWVkc0xheW91dEV2
IEAgMjMgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFVwZGF0ZUFsbFZpZXdzRXYgQCAy
NCBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE1Q3JlYXRlS0hUTUxWaWV3RVIxOE1XZWJD
b3JlU2Nyb2xsVmlld2lpIEAgMjUgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNURlQWN0
aXZhdGVFdmVudEVpIEAgMjYgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUZpbmRMaW5r
c09mVHlwZUVSSzdURGVzQzE2UjZSQXJyYXlJMTZUV2ViQ29yZUxpbmtJdGVtRSBAIDI3IE5PTkFN
RQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMTVHZXRUZXh0Q29udGVudExFdiBAIDI4IE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlMTVKdW1wVG9TZWxlY3Rpb25FdiBAIDI5IE5PTkFNRQ0KLQlf
Wk4xNENXZWJDb3JlQnJpZGdlMTVSZW1vdmVGcm9tRnJhbWVFdiBAIDMwIE5PTkFNRQ0KLQlfWk4x
NENXZWJDb3JlQnJpZGdlMTVTZW5kUmVzaXplRXZlbnRFdiBAIDMxIE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlMTVTZW5kU2Nyb2xsRXZlbnRFdiBAIDMyIE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlMTVTZXREZWZlcnNUaW1lcnNFaSBAIDMzIE5PTkFNRQ0KLQlfWk4xNENXZWJDb3Jl
QnJpZGdlMTVTZXRNYXhCaWRpV2lkdGhFaSBAIDM0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJp
ZGdlMTZTZXRGb250U2l6ZUxldmVsRWkgQCAzNSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRn
ZTE2VGFiYmVkTmF2aWdhdGlvbkUxNlRXZWJOYXZEaXJlY3Rpb25SMjZUV2ViQ29yZUZvY3VzZWRF
bGVtZW50VHlwZWkgQCAzNiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTE3U2F2ZURvY3Vt
ZW50U3RhdGVFdiBAIDM3IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMThBY3RpdmF0ZUFj
Y2Vzc0tleXNFOVRLZXlFdmVudCBAIDM4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMThJ
bml0aWFsaXplU2V0dGluZ3NFUksxNkNXZWJDb3JlU2V0dGluZ3MgQCAzOSBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTE4U2V0RHJhd3NCYWNrZ3JvdW5kRWkgQCA0MCBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTE5Qm9keUJhY2tncm91bmRDb2xvckV2IEAgNDEgTk9OQU1FDQotCV9a
TjE0Q1dlYkNvcmVCcmlkZ2UyMFJlc3RvcmVEb2N1bWVudFN0YXRlRXYgQCA0MiBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTIwU2NhbGluZ0ZhY3RvckNoYW5nZWRFaSBAIDQzIE5PTkFNRQ0K
LQlfWk4xNENXZWJDb3JlQnJpZGdlMjFTY3JvbGxUb0FuY2hvcldpdGhVUkxFUks3VERlc0MxNiBA
IDQ0IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjFTaG91bGRDcmVhdGVSZW5kZXJlcnNF
diBAIDQ1IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjFVUkxXaXRoUmVsYXRpdmVTdHJp
bmdFUks3VERlc0MxNiBAIDQ2IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdlMjJQcm92aXNp
b25hbExvYWRTdGFydGVkRXYgQCA0NyBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTIzRGV0
ZXJtaW5lQ3Vyc29yUG9zaXRpb25FUjI2VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVSNVRSZWN0
UzNfUjZUUG9pbnRpIEAgNDggTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UyM1NldEZhc3RG
aXJzdERpc3BsYXlNb2RlRWkgQCA0OSBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI0U2V0
Rm9ybUNvbnRyb2xUZXh0QnlOYW1lRVJLN1REZXNDMTZTMl8gQCA1MCBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTI0U2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzRWkgQCA1MSBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTI2Q3JlYXRlRG9jdW1lbnRXaXRoRW5jb2RpbmdFUks3VERlc0Mx
NmkgQCA1MiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZTI2UmVhcHBseVN0eWxlc0ZvckRl
dmljZVR5cGVFMThUV2ViQ29yZURldmljZVR5cGUgQCA1MyBOT05BTUUNCi0JX1pOMTRDV2ViQ29y
ZUJyaWRnZTI3TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzRXYgQCA1NCBOT05BTUUNCi0JX1pO
MTRDV2ViQ29yZUJyaWRnZTI4Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZUVpIEAgNTUgTk9O
QU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UzRW5kRXYgQCA1NiBOT05BTUUNCi0JX1pOMTRDV2Vi
Q29yZUJyaWRnZTROZXdMRVIxNk1XZWJDbGllbnRCcmlkZ2UgQCA1NyBOT05BTUUNCi0JX1pOMTRD
V2ViQ29yZUJyaWRnZTZDbGllbnRFdiBAIDU4IE5PTkFNRQ0KLQlfWk4xNENXZWJDb3JlQnJpZGdl
N0FkZERhdGFFUks2VERlc0M4IEAgNTkgTk9OQU1FDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2U3T3Bl
blVSTEVSSzdURGVzQzE2aVMyX1MyX1JLOVREYXRlVGltZSBAIDYwIE5PTkFNRQ0KLQlfWk4xNENX
ZWJDb3JlQnJpZGdlN1NldE5hbWVFUks3VERlc0MxNiBAIDYxIE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlOENsb3NlVVJMRXYgQCA2MiBOT05BTUUNCi0JX1pOMTRDV2ViQ29yZUJyaWRnZThE
cmF3UmVjdEVSSzVUUmVjdFIyM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0IEAgNjMgTk9OQU1FDQot
CV9aTjE0Q1dlYkNvcmVCcmlkZ2U4S2V5RXZlbnRFOVRLZXlFdmVudGkgQCA2NCBOT05BTUUNCi0J
X1pOMTRDV2ViQ29yZUJyaWRnZTlDbGVhckZpbmRFdiBAIDY1IE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlOVNlYXJjaEZvckVSSzdURGVzQzE2aWlpIEAgNjYgTk9OQU1FDQotCV9aTjE0Q1dl
YkNvcmVCcmlkZ2U5U2V0UGFyZW50RVBTXyBAIDY3IE5PTkFNRQ0KLQlfWk4xNVRXZWJDb3JlSGlz
dG9yeTE1SGlzdG9yeVByb3ZpZGVyRXYgQCA2OCBOT05BTUUNCi0JX1pOMTVUV2ViQ29yZUhpc3Rv
cnkxOFNldEhpc3RvcnlQcm92aWRlckVQMjNNV2ViQ29yZUhpc3RvcnlQcm92aWRlciBAIDY5IE5P
TkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxNFNldEphdmFFbmFibGVkRWkgQCA3MCBOT05B
TUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMTdTZXRQbHVnaW5zRW5hYmxlZEVpIEAgNzEgTk9O
QU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0RGVmYXVsdEZvbnRTaXplRWkgQCA3MiBO
T05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRGaXhlZEZvbnRGYW1pbHlFUks3VERl
c0MxNiBAIDczIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldE1pbmltdW1Gb250
U2l6ZUVpIEAgNzQgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0U2VyaWZGb250
RmFtaWx5RVJLN1REZXNDMTYgQCA3NSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjBT
ZXRDdXJzaXZlRm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzYgTk9OQU1FDQotCV9aTjE2Q1dlYkNv
cmVTZXR0aW5nczIwU2V0RmFudGFzeUZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDc3IE5PTkFNRQ0K
LQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNldEphdmFTY3JpcHRFbmFibGVkRWkgQCA3OCBOT05B
TUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRBdXRvUmVmcmVzaEVuYWJsZWRFaSBAIDc5
IE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldFNhdmVSYXdEYXRhRW5hYmxlZEVp
IEAgODAgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0U3RhbmRhcmRGb250RmFt
aWx5RVJLN1REZXNDMTYgQCA4MSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjJTZXRE
ZWZhdWx0VGV4dEVuY29kaW5nRVJLN1REZXNDMTYgQCA4MiBOT05BTUUNCi0JX1pOMTZDV2ViQ29y
ZVNldHRpbmdzMjJTZXRTYW5zU2VyaWZGb250RmFtaWx5RVJLN1REZXNDMTYgQCA4MyBOT05BTUUN
Ci0JX1pOMTZDV2ViQ29yZVNldHRpbmdzMjNTZXREZWZhdWx0Rml4ZWRGb250U2l6ZUVpIEAgODQg
Tk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0TWluaW11bUxvZ2ljYWxGb250U2l6
ZUVpIEAgODUgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0U2hvdWxkUHJpbnRC
YWNrZ3JvdW5kc0VpIEAgODYgTk9OQU1FDQotCV9aTjE2Q1dlYkNvcmVTZXR0aW5nczI1U2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbkVSSzdURGVzQzE2IEAgODcgTk9OQU1FDQotCV9aTjE2Q1dlYkNv
cmVTZXR0aW5nczMwU2V0V2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5RWkgQCA4OCBOT05BTUUN
Ci0JX1pOMTZDV2ViQ29yZVNldHRpbmdzNDBTZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRv
bWF0aWNhbGx5RWkgQCA4OSBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRpbmdzNE5ld0xFdiBA
IDkwIE5PTkFNRQ0KLQlfWk4xNkNXZWJDb3JlU2V0dGluZ3NEMEV2IEAgOTEgTk9OQU1FDQotCV9a
TjE2Q1dlYkNvcmVTZXR0aW5nc0QxRXYgQCA5MiBOT05BTUUNCi0JX1pOMTZDV2ViQ29yZVNldHRp
bmdzRDJFdiBAIDkzIE5PTkFNRQ0KLQlfWk4yMFRXZWJDb3JlSW1hZ2VDYXJyaWVyM1VybEV2IEAg
OTQgTk9OQU1FDQotCV9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI3QWx0VGV4dEV2IEAgOTUgTk9O
QU1FDQotCV9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI3UmF3RGF0YUV2IEAgOTYgTk9OQU1FDQot
CV9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI4UmVuZGVyZXJFdiBAIDk3IE5PTkFNRQ0KLQlfWk4y
MFRXZWJDb3JlSW1hZ2VDYXJyaWVyOUltYWdlVHlwZUV2IEAgOTggTk9OQU1FDQotCV9aTjIxVFdl
YkNvcmVDb29raWVGYWN0b3J5MTNDb29raWVBZGFwdGVyRXYgQCA5OSBOT05BTUUNCi0JX1pOMjFU
V2ViQ29yZUNvb2tpZUZhY3RvcnkxNlNldENvb2tpZUFkYXB0ZXJFUDIxTVdlYkNvcmVDb29raWVB
ZGFwdGVyIEAgMTAwIE5PTkFNRQ0KLQlfWk4yMVRXZWJDb3JlUGx1Z2luSGFuZGxlcjEzUGx1Z2lu
SGFuZGxlckV2IEAgMTAxIE5PTkFNRQ0KLQlfWk4yMVRXZWJDb3JlUGx1Z2luSGFuZGxlcjIzU2V0
V2ViQ29yZVBsdWdpbkhhbmRsZXJFUDIxTVdlYkNvcmVQbHVnaW5IYW5kbGVyIEAgMTAyIE5PTkFN
RQ0KLQlfWk4yM0NXZWJDb3JlR3JhcGhpY3NDb250ZXh0NE5ld0xFUDE2Q0Zic0JpdG1hcERldmlj
ZVAxMENGYnNCaXRtYXBQMThNV2ViQ29yZVNjcm9sbFZpZXcgQCAxMDMgTk9OQU1FDQotCV9aTjIz
Q1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0TmV3TEVSOUNGYnNCaXRHY1AxMENGYnNCaXRtYXBQMThN
V2ViQ29yZVNjcm9sbFZpZXcgQCAxMDQgTk9OQU1FDQotCV9aTjIzVFdlYkNvcmVMb2FkZXJDb250
YWluZXIxNUxvYWRlckNvbnRhaW5lckV2IEAgMTA1IE5PTkFNRQ0KLQlfWk4yM1RXZWJDb3JlTG9h
ZGVyQ29udGFpbmVyMjVTZXRXZWJDb3JlTG9hZGVyQ29udGFpbmVyRVAyM01XZWJDb3JlTG9hZGVy
Q29udGFpbmVyIEAgMTA2IE5PTkFNRQ0KLQlfWk4yNlRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5
MjhTZXRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5RVAyNk1XZWJDb3JlRm9ybUNvbnRyb2xGYWN0
b3J5IEAgMTA3IE5PTkFNRQ0KLQlfWk4yNlRXZWJDb3JlRm9ybUNvbnRyb2xGYWN0b3J5N0ZhY3Rv
cnlFdiBAIDEwOCBOT05BTUUNCi0JX1pOMjdUV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkyOVNl
dFdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5RVAyN01XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9y
eSBAIDEwOSBOT05BTUUNCi0JX1pOMjdUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rvcnk3RmFjdG9y
eUV2IEAgMTEwIE5PTkFNRQ0KLQlfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxMVNl
dENhbGxiYWNrRVBONWtodG1sMTlDYWNoZWRJbWFnZUNhbGxiYWNrRSBAIDExMSBOT05BTUUNCi0J
X1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTJOb3RpZnlVcGRhdGVFdiBAIDExMiBO
T05BTUUNCi0JX1pOMjhDV2ViQ29yZUltYWdlQ2FsbGJhY2tXcmFwcGVyMTROb3RpZnlGaW5pc2hl
ZEV2IEAgMTEzIE5PTkFNRQ0KLQlfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxOU5v
dGlmeURlY29kaW5nRXJyb3JFdiBAIDExNCBOT05BTUUNCi0JX1pOMjhUV2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5MzBTZXRXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnlFUDI4TVdlYkNvcmVJ
bWFnZVJlbmRlcmVyRmFjdG9yeSBAIDExNSBOT05BTUUNCi0JX1pOMjhUV2ViQ29yZUltYWdlUmVu
ZGVyZXJGYWN0b3J5N0ZhY3RvcnlFdiBAIDExNiBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlk
Z2UxMElzRnJhbWVTZXRFdiBAIDExNyBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMFJl
bmRlclBhcnRFdiBAIDExOCBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMU5lZWRzTGF5
b3V0RXYgQCAxMTkgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMTJDYW5DYWNoZVBhZ2VF
diBAIDEyMCBOT05BTUUNCi0JX1pOSzE0Q1dlYkNvcmVCcmlkZ2UxMlRleHRFbmNvZGluZ0V2IEAg
MTIxIE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTE2SGFzUGVuZGluZ0xheW91dEV2IEAg
MTIyIE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTE4U2hvd2luZ0Zhc3RQcmV2aWV3RXYg
QCAxMjMgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMjBGYXN0Rmlyc3REaXNwbGF5TW9k
ZUV2IEAgMTI0IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTIwR2V0VXJsT2ZOb2RlSW5G
b2N1c0xFUjZUUG9pbnQgQCAxMjUgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlMjROYXZp
Z2FibGVOb2RlVW5kZXJDdXJzb3JFUjZUUG9pbnRSMjZUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlw
ZVI1VFJlY3QgQCAxMjYgTk9OQU1FDQotCV9aTksxNENXZWJDb3JlQnJpZGdlM1VSTEV2IEAgMTI3
IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29yZUJyaWRnZTROYW1lRXYgQCAxMjggTk9OQU1FDQotCV9a
TksxNENXZWJDb3JlQnJpZGdlNkRvbWFpbkV2IEAgMTI5IE5PTkFNRQ0KLQlfWk5LMTRDV2ViQ29y
ZUJyaWRnZThSZWZlcnJlckV2IEAgMTMwIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MTFKYXZhRW5hYmxlZEV2IEAgMTMxIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTRQ
bHVnaW5zRW5hYmxlZEV2IEAgMTMyIE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTVE
ZWZhdWx0Rm9udFNpemVFdiBAIDEzMyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE1
Rml4ZWRGb250RmFtaWx5RXYgQCAxMzQgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3Mx
NU1pbmltdW1Gb250U2l6ZUV2IEAgMTM1IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MTVTZXJpZkZvbnRGYW1pbHlFdiBAIDEzNiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5n
czE3Q3Vyc2l2ZUZvbnRGYW1pbHlFdiBAIDEzNyBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0
aW5nczE3RmFudGFzeUZvbnRGYW1pbHlFdiBAIDEzOCBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVT
ZXR0aW5nczE3SmF2YVNjcmlwdEVuYWJsZWRFdiBAIDEzOSBOT05BTUUNCi0JX1pOSzE2Q1dlYkNv
cmVTZXR0aW5nczE4QXV0b1JlZnJlc2hFbmFibGVkRXYgQCAxNDAgTk9OQU1FDQotCV9aTksxNkNX
ZWJDb3JlU2V0dGluZ3MxOFNhdmVSYXdEYXRhRW5hYmxlZEV2IEAgMTQxIE5PTkFNRQ0KLQlfWk5L
MTZDV2ViQ29yZVNldHRpbmdzMThTdGFuZGFyZEZvbnRGYW1pbHlFdiBAIDE0MiBOT05BTUUNCi0J
X1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE5RGVmYXVsdFRleHRFbmNvZGluZ0V2IEAgMTQzIE5PTkFN
RQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTlTYW5zU2VyaWZGb250RmFtaWx5RXYgQCAxNDQg
Tk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMERlZmF1bHRGaXhlZEZvbnRTaXplRXYg
QCAxNDUgTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMk1pbmltdW1Mb2dpY2FsRm9u
dFNpemVFdiBAIDE0NiBOT05BTUUNCi0JX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczIyU2hvdWxkUHJp
bnRCYWNrZ3JvdW5kc0V2IEAgMTQ3IE5PTkFNRQ0KLQlfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJV
c2VyU3R5bGVTaGVldExvY2F0aW9uRXYgQCAxNDggTk9OQU1FDQotCV9aTksxNkNXZWJDb3JlU2V0
dGluZ3MyN1dpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUV2IEAgMTQ5IE5PTkFNRQ0KLQlfWk5L
MTZDV2ViQ29yZVNldHRpbmdzMzdKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
RXYgQCAxNTAgTk9OQU1FDQotCV9aVEkxNENXZWJDb3JlQnJpZGdlIEAgMTUxIE5PTkFNRSA7ICM8
VEk+Iw0KLQlfWlRJMTZDV2ViQ29yZVNldHRpbmdzIEAgMTUyIE5PTkFNRSA7ICM8VEk+Iw0KLQlf
WlRJMjBDV2ViQ29yZVBhZ2VEYXRhSXRlbSBAIDE1MyBOT05BTUUgOyAjPFRJPiMNCi0JX1pUSTIz
Q1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCAxNTQgTk9OQU1FIDsgIzxUST4jDQotCV9aVFYxNENX
ZWJDb3JlQnJpZGdlIEAgMTU1IE5PTkFNRSA7ICM8VlQ+Iw0KLQlfWlRWMTZDV2ViQ29yZVNldHRp
bmdzIEAgMTU2IE5PTkFNRSA7ICM8VlQ+Iw0KLQlfWlRWMjBDV2ViQ29yZVBhZ2VEYXRhSXRlbSBA
IDE1NyBOT05BTUUgOyAjPFZUPiMNCi0JX1pUVjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQgQCAx
NTggTk9OQU1FIDsgIzxWVD4jDQotCV9aTjE0Q1dlYkNvcmVCcmlkZ2UxN0dldFJlbmRlclRleHRB
cmVhRVJLN1REZXNDMTZSNlJBcnJheUk1VFJlY3RFIEAgMTU5IE5PTkFNRQ0KLQlfWk4xNENXZWJD
b3JlQnJpZGdlMzFHZXROZXh0UmVuZGVyVGV4dEZvclNtYXJ0TGlua3NMRVJpIEAgMTYwIE5PTkFN
RQ0KKyAgICBfWk4xM1RXZWJDb3JlQ2FjaGUxNUFkZEl0ZW1Ub0NhY2hlTEVSMjlNV2ViQ29yZVVy
bFJlc3BvbnNlSGVhZGVySW5mb1I2VERlc0M4aSBAIDEgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2UxMEltYWdlQ291bnRFaSBAIDIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxMExvYWRJbWFnZXNFdiBAIDMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxMVJl
c29sdmVVcmxMRVJLN1REZXNDMTZTMl8gQCA0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlMTFTZWFyY2hBZ2FpbkVSSzdURGVzQzE2aWlpIEAgNSBOT05BTUUNCisgICAgX1pOMTRDV2Vi
Q29yZUJyaWRnZTEyRGVmZXJzVGltZXJzRXYgQCA2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3Jl
QnJpZGdlMTJHZXRQYWdlRGF0YUxFaSBAIDcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UxMkltYWdlc0luUmVjdEVpIEAgOCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEy
UG9pbnRlckV2ZW50RTEzVFBvaW50ZXJFdmVudCBAIDkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNv
cmVCcmlkZ2UxMlBvaW50ZXJFdmVudEVOMTNUUG9pbnRlckV2ZW50NVRUeXBlRVJLNlRQb2ludCBA
IDEwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTNBY3RpdmF0ZUV2ZW50RVI2VFBv
aW50IEAgMTEgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0FkZFRvQ29udGFjdHNF
UjZUUG9pbnQgQCAxMiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTEzRGlkTm90T3Bl
blVSTEVSSzdURGVzQzE2IEAgMTMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxM0V4
ZWN1dGVTY3JpcHRFUks3VERlc0MxNiBAIDE0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlMTNTZXRSZW5kZXJQYXJ0RVBONWtodG1sMTBSZW5kZXJQYXJ0RSBAIDE1IE5PTkFNRQ0KKyAg
ICBfWk4xNENXZWJDb3JlQnJpZGdlMTRBZGp1c3RWaWV3U2l6ZUV2IEAgMTYgTk9OQU1FDQorICAg
IF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNER1bXBSZW5kZXJUcmVlRXYgQCAxNyBOT05BTUUNCisgICAg
X1pOMTRDV2ViQ29yZUJyaWRnZTE0SW5zdGFsbEluRnJhbWVFUjE4TVdlYkNvcmVTY3JvbGxWaWV3
IEAgMTggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFByZXBhcmVGb3JFeGl0RXYg
QCAxOSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0UmVtb3ZlRmlsZU5hbWVFUjZU
UG9pbnQgQCAyMCBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0U2Nyb2xsVG9BbmNo
b3JFUks3VERlc0MxNiBAIDIxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTRTZWxl
Y3Rpb25Db2xvckV2IEAgMjIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNFNldE5l
ZWRzTGF5b3V0RXYgQCAyMyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTE0VXBkYXRl
QWxsVmlld3NFdiBAIDI0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTVDcmVhdGVL
SFRNTFZpZXdFUjE4TVdlYkNvcmVTY3JvbGxWaWV3aWkgQCAyNSBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTE1RGVBY3RpdmF0ZUV2ZW50RWkgQCAyNiBOT05BTUUNCisgICAgX1pOMTRD
V2ViQ29yZUJyaWRnZTE1RmluZExpbmtzT2ZUeXBlRVJLN1REZXNDMTZSNlJBcnJheUkxNlRXZWJD
b3JlTGlua0l0ZW1FIEAgMjcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUdldFRl
eHRDb250ZW50TEV2IEAgMjggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNUp1bXBU
b1NlbGVjdGlvbkV2IEAgMjkgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVJlbW92
ZUZyb21GcmFtZUV2IEAgMzAgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNlbmRS
ZXNpemVFdmVudEV2IEAgMzEgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNlbmRT
Y3JvbGxFdmVudEV2IEAgMzIgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNldERl
ZmVyc1RpbWVyc0VpIEAgMzMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNVNldE1h
eEJpZGlXaWR0aEVpIEAgMzQgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNlNldEZv
bnRTaXplTGV2ZWxFaSBAIDM1IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTZUYWJi
ZWROYXZpZ2F0aW9uRTE2VFdlYk5hdkRpcmVjdGlvblIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRU
eXBlaSBAIDM2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTdTYXZlRG9jdW1lbnRT
dGF0ZUV2IEAgMzcgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxOEFjdGl2YXRlQWNj
ZXNzS2V5c0U5VEtleUV2ZW50IEAgMzggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2Ux
OEluaXRpYWxpemVTZXR0aW5nc0VSSzE2Q1dlYkNvcmVTZXR0aW5ncyBAIDM5IE5PTkFNRQ0KKyAg
ICBfWk4xNENXZWJDb3JlQnJpZGdlMThTZXREcmF3c0JhY2tncm91bmRFaSBAIDQwIE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMTlCb2R5QmFja2dyb3VuZENvbG9yRXYgQCA0MSBOT05B
TUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIwUmVzdG9yZURvY3VtZW50U3RhdGVFdiBAIDQy
IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjBTY2FsaW5nRmFjdG9yQ2hhbmdlZEVp
IEAgNDMgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMVNjcm9sbFRvQW5jaG9yV2l0
aFVSTEVSSzdURGVzQzE2IEAgNDQgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UyMVNo
b3VsZENyZWF0ZVJlbmRlcmVyc0V2IEAgNDUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlk
Z2UyMVVSTFdpdGhSZWxhdGl2ZVN0cmluZ0VSSzdURGVzQzE2IEAgNDYgTk9OQU1FDQorICAgIF9a
TjE0Q1dlYkNvcmVCcmlkZ2UyMlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWRFdiBAIDQ3IE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjNEZXRlcm1pbmVDdXJzb3JQb3NpdGlvbkVSMjZUV2Vi
Q29yZUZvY3VzZWRFbGVtZW50VHlwZVI1VFJlY3RTM19SNlRQb2ludGkgQCA0OCBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTIzU2V0RmFzdEZpcnN0RGlzcGxheU1vZGVFaSBAIDQ5IE5P
TkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjRTZXRGb3JtQ29udHJvbFRleHRCeU5hbWVF
Uks3VERlc0MxNlMyXyBAIDUwIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjRTZXRT
aG91bGRDcmVhdGVSZW5kZXJlcnNFaSBAIDUxIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJp
ZGdlMjZDcmVhdGVEb2N1bWVudFdpdGhFbmNvZGluZ0VSSzdURGVzQzE2aSBAIDUyIE5PTkFNRQ0K
KyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjZSZWFwcGx5U3R5bGVzRm9yRGV2aWNlVHlwZUUxOFRX
ZWJDb3JlRGV2aWNlVHlwZSBAIDUzIE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlMjdO
dW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHNFdiBAIDU0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJD
b3JlQnJpZGdlMjhGb3JjZUxheW91dEFkanVzdGluZ1ZpZXdTaXplRWkgQCA1NSBOT05BTUUNCisg
ICAgX1pOMTRDV2ViQ29yZUJyaWRnZTNFbmRFdiBAIDU2IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJD
b3JlQnJpZGdlNE5ld0xFUjE2TVdlYkNsaWVudEJyaWRnZSBAIDU3IE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlNkNsaWVudEV2IEAgNTggTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVC
cmlkZ2U3QWRkRGF0YUVSSzZURGVzQzggQCA1OSBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJy
aWRnZTdPcGVuVVJMRVJLN1REZXNDMTZpUzJfUzJfUks5VERhdGVUaW1lIEAgNjAgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U3U2V0TmFtZUVSSzdURGVzQzE2IEAgNjEgTk9OQU1FDQor
ICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U4Q2xvc2VVUkxFdiBAIDYyIE5PTkFNRQ0KKyAgICBfWk4x
NENXZWJDb3JlQnJpZGdlOERyYXdSZWN0RVJLNVRSZWN0UjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRl
eHQgQCA2MyBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZThLZXlFdmVudEU5VEtleUV2
ZW50aSBAIDY0IE5PTkFNRQ0KKyAgICBfWk4xNENXZWJDb3JlQnJpZGdlOUNsZWFyRmluZEV2IEAg
NjUgTk9OQU1FDQorICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2U5U2VhcmNoRm9yRVJLN1REZXNDMTZp
aWkgQCA2NiBOT05BTUUNCisgICAgX1pOMTRDV2ViQ29yZUJyaWRnZTlTZXRQYXJlbnRFUFNfIEAg
NjcgTk9OQU1FDQorICAgIF9aTjE1VFdlYkNvcmVIaXN0b3J5MTVIaXN0b3J5UHJvdmlkZXJFdiBA
IDY4IE5PTkFNRQ0KKyAgICBfWk4xNVRXZWJDb3JlSGlzdG9yeTE4U2V0SGlzdG9yeVByb3ZpZGVy
RVAyM01XZWJDb3JlSGlzdG9yeVByb3ZpZGVyIEAgNjkgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNv
cmVTZXR0aW5nczE0U2V0SmF2YUVuYWJsZWRFaSBAIDcwIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJD
b3JlU2V0dGluZ3MxN1NldFBsdWdpbnNFbmFibGVkRWkgQCA3MSBOT05BTUUNCisgICAgX1pOMTZD
V2ViQ29yZVNldHRpbmdzMThTZXREZWZhdWx0Rm9udFNpemVFaSBAIDcyIE5PTkFNRQ0KKyAgICBf
Wk4xNkNXZWJDb3JlU2V0dGluZ3MxOFNldEZpeGVkRm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzMg
Tk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczE4U2V0TWluaW11bUZvbnRTaXplRWkg
QCA3NCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMThTZXRTZXJpZkZvbnRGYW1p
bHlFUks3VERlc0MxNiBAIDc1IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMFNl
dEN1cnNpdmVGb250RmFtaWx5RVJLN1REZXNDMTYgQCA3NiBOT05BTUUNCisgICAgX1pOMTZDV2Vi
Q29yZVNldHRpbmdzMjBTZXRGYW50YXN5Rm9udEZhbWlseUVSSzdURGVzQzE2IEAgNzcgTk9OQU1F
DQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIwU2V0SmF2YVNjcmlwdEVuYWJsZWRFaSBAIDc4
IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMVNldEF1dG9SZWZyZXNoRW5hYmxl
ZEVpIEAgNzkgTk9OQU1FDQorICAgIF9aTjE2Q1dlYkNvcmVTZXR0aW5nczIxU2V0U2F2ZVJhd0Rh
dGFFbmFibGVkRWkgQCA4MCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjFTZXRT
dGFuZGFyZEZvbnRGYW1pbHlFUks3VERlc0MxNiBAIDgxIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJD
b3JlU2V0dGluZ3MyMlNldERlZmF1bHRUZXh0RW5jb2RpbmdFUks3VERlc0MxNiBAIDgyIE5PTkFN
RQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyMlNldFNhbnNTZXJpZkZvbnRGYW1pbHlFUks3
VERlc0MxNiBAIDgzIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3MyM1NldERlZmF1
bHRGaXhlZEZvbnRTaXplRWkgQCA4NCBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdz
MjVTZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkgQCA4NSBOT05BTUUNCisgICAgX1pOMTZDV2Vi
Q29yZVNldHRpbmdzMjVTZXRTaG91bGRQcmludEJhY2tncm91bmRzRWkgQCA4NiBOT05BTUUNCisg
ICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMjVTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRVJLN1RE
ZXNDMTYgQCA4NyBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29yZVNldHRpbmdzMzBTZXRXaWxsTG9h
ZEltYWdlc0F1dG9tYXRpY2FsbHlFaSBAIDg4IE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0
dGluZ3M0MFNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlFaSBAIDg5IE5P
TkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3M0TmV3TEV2IEAgOTAgTk9OQU1FDQorICAg
IF9aTjE2Q1dlYkNvcmVTZXR0aW5nc0QwRXYgQCA5MSBOT05BTUUNCisgICAgX1pOMTZDV2ViQ29y
ZVNldHRpbmdzRDFFdiBAIDkyIE5PTkFNRQ0KKyAgICBfWk4xNkNXZWJDb3JlU2V0dGluZ3NEMkV2
IEAgOTMgTk9OQU1FDQorICAgIF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXIzVXJsRXYgQCA5NCBO
T05BTUUNCisgICAgX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjdBbHRUZXh0RXYgQCA5NSBOT05B
TUUNCisgICAgX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjdSYXdEYXRhRXYgQCA5NiBOT05BTUUN
CisgICAgX1pOMjBUV2ViQ29yZUltYWdlQ2FycmllcjhSZW5kZXJlckV2IEAgOTcgTk9OQU1FDQor
ICAgIF9aTjIwVFdlYkNvcmVJbWFnZUNhcnJpZXI5SW1hZ2VUeXBlRXYgQCA5OCBOT05BTUUNCisg
ICAgX1pOMjFUV2ViQ29yZUNvb2tpZUZhY3RvcnkxM0Nvb2tpZUFkYXB0ZXJFdiBAIDk5IE5PTkFN
RQ0KKyAgICBfWk4yMVRXZWJDb3JlQ29va2llRmFjdG9yeTE2U2V0Q29va2llQWRhcHRlckVQMjFN
V2ViQ29yZUNvb2tpZUFkYXB0ZXIgQCAxMDAgTk9OQU1FDQorICAgIF9aTjIxVFdlYkNvcmVQbHVn
aW5IYW5kbGVyMTNQbHVnaW5IYW5kbGVyRXYgQCAxMDEgTk9OQU1FDQorICAgIF9aTjIxVFdlYkNv
cmVQbHVnaW5IYW5kbGVyMjNTZXRXZWJDb3JlUGx1Z2luSGFuZGxlckVQMjFNV2ViQ29yZVBsdWdp
bkhhbmRsZXIgQCAxMDIgTk9OQU1FDQorICAgIF9aTjIzQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ0
TmV3TEVQMTZDRmJzQml0bWFwRGV2aWNlUDEwQ0Zic0JpdG1hcFAxOE1XZWJDb3JlU2Nyb2xsVmll
dyBAIDEwMyBOT05BTUUNCisgICAgX1pOMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dDROZXdMRVI5
Q0Zic0JpdEdjUDEwQ0Zic0JpdG1hcFAxOE1XZWJDb3JlU2Nyb2xsVmlldyBAIDEwNCBOT05BTUUN
CisgICAgX1pOMjNUV2ViQ29yZUxvYWRlckNvbnRhaW5lcjE1TG9hZGVyQ29udGFpbmVyRXYgQCAx
MDUgTk9OQU1FDQorICAgIF9aTjIzVFdlYkNvcmVMb2FkZXJDb250YWluZXIyNVNldFdlYkNvcmVM
b2FkZXJDb250YWluZXJFUDIzTVdlYkNvcmVMb2FkZXJDb250YWluZXIgQCAxMDYgTk9OQU1FDQor
ICAgIF9aTjI2VFdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnkyOFNldFdlYkNvcmVGb3JtQ29udHJv
bEZhY3RvcnlFUDI2TVdlYkNvcmVGb3JtQ29udHJvbEZhY3RvcnkgQCAxMDcgTk9OQU1FDQorICAg
IF9aTjI2VFdlYkNvcmVGb3JtQ29udHJvbEZhY3Rvcnk3RmFjdG9yeUV2IEAgMTA4IE5PTkFNRQ0K
KyAgICBfWk4yN1RXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeTI5U2V0V2ViQ29yZVRleHRSZW5k
ZXJlckZhY3RvcnlFUDI3TVdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5IEAgMTA5IE5PTkFNRQ0K
KyAgICBfWk4yN1RXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeTdGYWN0b3J5RXYgQCAxMTAgTk9O
QU1FDQorICAgIF9aTjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjExU2V0Q2FsbGJhY2tF
UE41a2h0bWwxOUNhY2hlZEltYWdlQ2FsbGJhY2tFIEAgMTExIE5PTkFNRQ0KKyAgICBfWk4yOENX
ZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxMk5vdGlmeVVwZGF0ZUV2IEAgMTEyIE5PTkFNRQ0K
KyAgICBfWk4yOENXZWJDb3JlSW1hZ2VDYWxsYmFja1dyYXBwZXIxNE5vdGlmeUZpbmlzaGVkRXYg
QCAxMTMgTk9OQU1FDQorICAgIF9aTjI4Q1dlYkNvcmVJbWFnZUNhbGxiYWNrV3JhcHBlcjE5Tm90
aWZ5RGVjb2RpbmdFcnJvckV2IEAgMTE0IE5PTkFNRQ0KKyAgICBfWk4yOFRXZWJDb3JlSW1hZ2VS
ZW5kZXJlckZhY3RvcnkzMFNldFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeUVQMjhNV2ViQ29y
ZUltYWdlUmVuZGVyZXJGYWN0b3J5IEAgMTE1IE5PTkFNRQ0KKyAgICBfWk4yOFRXZWJDb3JlSW1h
Z2VSZW5kZXJlckZhY3Rvcnk3RmFjdG9yeUV2IEAgMTE2IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2Vi
Q29yZUJyaWRnZTEwSXNGcmFtZVNldEV2IEAgMTE3IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29y
ZUJyaWRnZTEwUmVuZGVyUGFydEV2IEAgMTE4IE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJy
aWRnZTExTmVlZHNMYXlvdXRFdiBAIDExOSBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlk
Z2UxMkNhbkNhY2hlUGFnZUV2IEAgMTIwIE5PTkFNRQ0KKyAgICBfWk5LMTRDV2ViQ29yZUJyaWRn
ZTEyVGV4dEVuY29kaW5nRXYgQCAxMjEgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdl
MTZIYXNQZW5kaW5nTGF5b3V0RXYgQCAxMjIgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJp
ZGdlMThTaG93aW5nRmFzdFByZXZpZXdFdiBAIDEyMyBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNv
cmVCcmlkZ2UyMEZhc3RGaXJzdERpc3BsYXlNb2RlRXYgQCAxMjQgTk9OQU1FDQorICAgIF9aTksx
NENXZWJDb3JlQnJpZGdlMjBHZXRVcmxPZk5vZGVJbkZvY3VzTEVSNlRQb2ludCBAIDEyNSBOT05B
TUUNCisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UyNE5hdmlnYWJsZU5vZGVVbmRlckN1cnNvckVS
NlRQb2ludFIyNlRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlUjVUUmVjdCBAIDEyNiBOT05BTUUN
CisgICAgX1pOSzE0Q1dlYkNvcmVCcmlkZ2UzVVJMRXYgQCAxMjcgTk9OQU1FDQorICAgIF9aTksx
NENXZWJDb3JlQnJpZGdlNE5hbWVFdiBAIDEyOCBOT05BTUUNCisgICAgX1pOSzE0Q1dlYkNvcmVC
cmlkZ2U2RG9tYWluRXYgQCAxMjkgTk9OQU1FDQorICAgIF9aTksxNENXZWJDb3JlQnJpZGdlOFJl
ZmVycmVyRXYgQCAxMzAgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxMUphdmFF
bmFibGVkRXYgQCAxMzEgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNFBsdWdp
bnNFbmFibGVkRXYgQCAxMzIgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxNURl
ZmF1bHRGb250U2l6ZUV2IEAgMTMzIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdz
MTVGaXhlZEZvbnRGYW1pbHlFdiBAIDEzNCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0
aW5nczE1TWluaW11bUZvbnRTaXplRXYgQCAxMzUgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3Jl
U2V0dGluZ3MxNVNlcmlmRm9udEZhbWlseUV2IEAgMTM2IE5PTkFNRQ0KKyAgICBfWk5LMTZDV2Vi
Q29yZVNldHRpbmdzMTdDdXJzaXZlRm9udEZhbWlseUV2IEAgMTM3IE5PTkFNRQ0KKyAgICBfWk5L
MTZDV2ViQ29yZVNldHRpbmdzMTdGYW50YXN5Rm9udEZhbWlseUV2IEAgMTM4IE5PTkFNRQ0KKyAg
ICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTdKYXZhU2NyaXB0RW5hYmxlZEV2IEAgMTM5IE5PTkFN
RQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMThBdXRvUmVmcmVzaEVuYWJsZWRFdiBAIDE0
MCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczE4U2F2ZVJhd0RhdGFFbmFibGVk
RXYgQCAxNDEgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MxOFN0YW5kYXJkRm9u
dEZhbWlseUV2IEAgMTQyIE5PTkFNRQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMTlEZWZh
dWx0VGV4dEVuY29kaW5nRXYgQCAxNDMgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGlu
Z3MxOVNhbnNTZXJpZkZvbnRGYW1pbHlFdiBAIDE0NCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNv
cmVTZXR0aW5nczIwRGVmYXVsdEZpeGVkRm9udFNpemVFdiBAIDE0NSBOT05BTUUNCisgICAgX1pO
SzE2Q1dlYkNvcmVTZXR0aW5nczIyTWluaW11bUxvZ2ljYWxGb250U2l6ZUV2IEAgMTQ2IE5PTkFN
RQ0KKyAgICBfWk5LMTZDV2ViQ29yZVNldHRpbmdzMjJTaG91bGRQcmludEJhY2tncm91bmRzRXYg
QCAxNDcgTk9OQU1FDQorICAgIF9aTksxNkNXZWJDb3JlU2V0dGluZ3MyMlVzZXJTdHlsZVNoZWV0
TG9jYXRpb25FdiBAIDE0OCBOT05BTUUNCisgICAgX1pOSzE2Q1dlYkNvcmVTZXR0aW5nczI3V2ls
bExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5RXYgQCAxNDkgTk9OQU1FDQorICAgIF9aTksxNkNXZWJD
b3JlU2V0dGluZ3MzN0phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlFdiBAIDE1
MCBOT05BTUUNCisgICAgX1pUSTE0Q1dlYkNvcmVCcmlkZ2UgQCAxNTEgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVEkxNkNXZWJDb3JlU2V0dGluZ3MgQCAxNTIgTk9OQU1FIDsgIzxUST4jDQorICAg
IF9aVEkyMENXZWJDb3JlUGFnZURhdGFJdGVtIEAgMTUzIE5PTkFNRSA7ICM8VEk+Iw0KKyAgICBf
WlRJMjNDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCBAIDE1NCBOT05BTUUgOyAjPFRJPiMNCisgICAg
X1pUVjE0Q1dlYkNvcmVCcmlkZ2UgQCAxNTUgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFYxNkNX
ZWJDb3JlU2V0dGluZ3MgQCAxNTYgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aVFYyMENXZWJDb3Jl
UGFnZURhdGFJdGVtIEAgMTU3IE5PTkFNRSA7ICM8VlQ+Iw0KKyAgICAgICAgX1pUVjIzQ1dlYkNv
cmVHcmFwaGljc0NvbnRleHQgQCAxNTggTk9OQU1FIDsgIzxWVD4jDQorICAgICAgICBfWk4xNENX
ZWJDb3JlQnJpZGdlMTdHZXRSZW5kZXJUZXh0QXJlYUVSSzdURGVzQzE2UjZSQXJyYXlJNVRSZWN0
RSBAIDE1OSBOT05BTUUNCisgICAgICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UzMUdldE5leHRSZW5k
ZXJUZXh0Rm9yU21hcnRMaW5rc0xFUmkgQCAxNjAgTk9OQU1FDQorICAgICAgICBfWk4xNENXZWJD
b3JlQnJpZGdlMjBXaW5kb3dTY3JpcHROUE9iamVjdEV2IEAgMTYxIE5PTkFNRQ0KIA0KSW5kZXg6
IFdlYkNvcmUvZ3JvdXAvS0hUTUwubW1wDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9ncm91cC9L
SFRNTC5tbXAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUvZ3JvdXAvS0hUTUwubW1wCSh3
b3JraW5nIGNvcHkpDQpAQCAtNTksNiArNTksNyBAQA0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5c
Li5cLg0KIFNZU1RFTUlOQ0xVREUgICAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVca2pzDQogU1lT
VEVNSU5DTFVERSAgICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxwY3JlDQorU1lTVEVNSU5DTFVE
RSAgICAgICAuLlwuLlxKYXZhU2NyaXB0Q29yZVxiaW5kaW5ncw0KIFNZU1RFTUlOQ0xVREUgICAg
ICAgLi5cLi5cTWVtb3J5TWFuYWdlclxJbmMNCiAjaWZuZGVmIF9fQlJPV1NFUl9TREsNCiBTWVNU
RU1JTkNMVURFICAgICAgIFxTNjBcbGlieG1sMnBhcnNlclx4bWxlbmdpbmVcaW5jXGxpYnhtbA0K
SW5kZXg6IFdlYkNvcmUvZ3JvdXAvS1dRLm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZ3Jv
dXAvS1dRLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29yZS9ncm91cC9LV1EubW1wCSh3
b3JraW5nIGNvcHkpDQpAQCAtNjIsNiArNjIsNyBAQA0KIFNZU1RFTUlOQ0xVREUgICAgIC4uXC4u
XEphdmFTY3JpcHRDb3JlDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVc
a2pzDQogU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVccGNyZQ0KK1NZU1RF
TUlOQ0xVREUgICAgIC4uXC4uXEphdmFTY3JpcHRDb3JlXGJpbmRpbmdzDQogU1lTVEVNSU5DTFVE
RSAgICAgLi5cLi5cTWVtb3J5TWFuYWdlclxJbmMNCiANCiBPUFRJT04gQ1cgLXByZWZpeCBwcmFn
bWFzLnByZWYNCkluZGV4OiBXZWJDb3JlL2dyb3VwL1dlYkNvcmUubW1wDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9ncm91cC9XZWJDb3JlLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViQ29y
ZS9ncm91cC9XZWJDb3JlLm1tcAkod29ya2luZyBjb3B5KQ0KQEAgLTYzLDYgKzYzLDcgQEANCiBT
WVNURU1JTkNMVURFICAgICAgIC4uXGtodG1sXGVkaXRpbmcNCiBTWVNURU1JTkNMVURFICAgICAu
LlwuLlxKYXZhU2NyaXB0Q29yZVxranMNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxKYXZhU2Ny
aXB0Q29yZVxwY3JlDQorU1lTVEVNSU5DTFVERSAgICAgLi5cLi5cSmF2YVNjcmlwdENvcmVcYmlu
ZGluZ3MNCiBTWVNURU1JTkNMVURFICAgICAuLlwuLlxNZW1vcnlNYW5hZ2VyXEluYw0KIA0KIA0K
SW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
MzYxLDEzICszNjEsMTMgQEANCiAgIHJldHVybiBmYWxzZTsKIH0KIAotI2lmIEFQUExFX0NIQU5H
RVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiBib29sIFNjcmlwdEludGVy
cHJldGVyOjppc0dsb2JhbE9iamVjdChjb25zdCBWYWx1ZSAmdikKIHsKICAgICBpZiAodi50eXBl
KCkgPT0gT2JqZWN0VHlwZSkgewotCU9iamVjdCBvID0gdi50b09iamVjdCAoZ2xvYmFsRXhlYygp
KTsKLQlpZiAoby5jbGFzc0luZm8oKSA9PSAmV2luZG93OjppbmZvKQotCSAgICByZXR1cm4gdHJ1
ZTsKKyAgICBPYmplY3QgbyA9IHYudG9PYmplY3QgKGdsb2JhbEV4ZWMoKSk7CisgICAgaWYgKG8u
Y2xhc3NJbmZvKCkgPT0gJldpbmRvdzo6aW5mbykKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTM4OSwxMSArMzg5LDEyIEBADQogewogICAgIHZv
aWQgKnJlc3VsdCA9IDA7CiAKKyNpZiAhTk9LSUFfQ0hBTkdFUwogICAgIGlmIChsYW5ndWFnZSA9
PSBCaW5kaW5nczo6SW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZSkKLQlyZXN1bHQgPSBjcmVh
dGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgdmFsdWUsIG9yaWdpbiwgY3VycmVudCk7Ci0K
KyAgICByZXN1bHQgPSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgdmFsdWUsIG9y
aWdpbiwgY3VycmVudCk7CisjZW5kaWYKICAgICBpZiAoIXJlc3VsdCkKLQlyZXN1bHQgPSBJbnRl
cnByZXRlcjo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlIChleGVjLCBsYW5ndWFnZSwg
dmFsdWUsIG9yaWdpbiwgY3VycmVudCk7CisgICAgcmVzdWx0ID0gSW50ZXJwcmV0ZXI6OmNyZWF0
ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSAoZXhlYywgbGFuZ3VhZ2UsIHZhbHVlLCBvcmlnaW4s
IGN1cnJlbnQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFdlYkNvcmUva2h0bWwv
ZWNtYS9ranNfYmluZGluZy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tq
c19iaW5kaW5nLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNf
YmluZGluZy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNyArMzEsNyBAQA0KICNpbmNsdWRlIDxr
anMvbG9va3VwLmg+CiAjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KIAotI2lmIEFQUExFX0NIQU5H
RVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvcnVudGltZS5oPgogI2VuZGlmCiAKQEAgLTE0MCw3ICsxNDAsNyBAQA0KIAogICAg
IERPTTo6RXZlbnQgKmdldEN1cnJlbnRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZ0OyB9CiAK
LSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwog
ICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdChjb25zdCBWYWx1ZSAmdik7CiAgICAgdmly
dHVhbCBJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXJGb3JHbG9iYWxPYmplY3QgKGNvbnN0IFZhbHVl
SW1wICppbXApOwogICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVTY3JpcHQgKGNvbnN0IEludGVycHJl
dGVyICp0YXJnZXQpOwpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19kb20uY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19kb20uY3BwCShyZXZpc2lvbiAxNzA2
OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBA
IC00Myw3ICs0Myw3IEBADQogCiAjaW5jbHVkZSAibWlzYy9odG1sdGFncy5oIgogCi0jaWYgQVBQ
TEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lX29iamVjdC5oPgogI2VuZGlmCiAKQEAgLTU4LDIxICs1
OCwyMSBAQA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8qIFNvdXJjZSBmb3IgRE9NTm9kZVByb3Rv
VGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTU5v
ZGVQcm90b1RhYmxlIDEzCi0gIGluc2VydEJlZm9yZQlET01Ob2RlOjpJbnNlcnRCZWZvcmUJRG9u
dERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlcGxhY2VDaGlsZAlET01Ob2RlOjpSZXBsYWNlQ2hpbGQJ
RG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHJlbW92ZUNoaWxkCURPTU5vZGU6OlJlbW92ZUNoaWxk
CURvbnREZWxldGV8RnVuY3Rpb24gMQotICBhcHBlbmRDaGlsZAlET01Ob2RlOjpBcHBlbmRDaGls
ZAlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgaGFzQXR0cmlidXRlcwlET01Ob2RlOjpIYXNBdHRy
aWJ1dGVzCURvbnREZWxldGV8RnVuY3Rpb24gMAotICBoYXNDaGlsZE5vZGVzCURPTU5vZGU6Okhh
c0NoaWxkTm9kZXMJRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIGNsb25lTm9kZQlET01Ob2RlOjpD
bG9uZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGluc2VydEJlZm9yZSAgRE9NTm9kZTo6
SW5zZXJ0QmVmb3JlICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHJlcGxhY2VDaGlsZCAgRE9N
Tm9kZTo6UmVwbGFjZUNoaWxkICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHJlbW92ZUNoaWxk
ICAgRE9NTm9kZTo6UmVtb3ZlQ2hpbGQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGFwcGVu
ZENoaWxkICAgRE9NTm9kZTo6QXBwZW5kQ2hpbGQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisg
IGhhc0F0dHJpYnV0ZXMgRE9NTm9kZTo6SGFzQXR0cmlidXRlcyAgRG9udERlbGV0ZXxGdW5jdGlv
biAwCisgIGhhc0NoaWxkTm9kZXMgRE9NTm9kZTo6SGFzQ2hpbGROb2RlcyAgRG9udERlbGV0ZXxG
dW5jdGlvbiAwCisgIGNsb25lTm9kZSBET01Ob2RlOjpDbG9uZU5vZGUgIERvbnREZWxldGV8RnVu
Y3Rpb24gMQogIyBET00yCi0gIG5vcm1hbGl6ZQlET01Ob2RlOjpOb3JtYWxpemUJRG9udERlbGV0
ZXxGdW5jdGlvbiAwCi0gIGlzU3VwcG9ydGVkICAgRE9NTm9kZTo6SXNTdXBwb3J0ZWQJRG9udERl
bGV0ZXxGdW5jdGlvbiAyCisgIG5vcm1hbGl6ZSBET01Ob2RlOjpOb3JtYWxpemUgIERvbnREZWxl
dGV8RnVuY3Rpb24gMAorICBpc1N1cHBvcnRlZCAgIERPTU5vZGU6OklzU3VwcG9ydGVkICAgIERv
bnREZWxldGV8RnVuY3Rpb24gMgogIyBmcm9tIHRoZSBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAg
YWRkRXZlbnRMaXN0ZW5lcglET01Ob2RlOjpBZGRFdmVudExpc3RlbmVyCURvbnREZWxldGV8RnVu
Y3Rpb24gMwotICByZW1vdmVFdmVudExpc3RlbmVyCURPTU5vZGU6OlJlbW92ZUV2ZW50TGlzdGVu
ZXIJRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIGRpc3BhdGNoRXZlbnQJCURPTU5vZGU6OkRpc3Bh
dGNoRXZlbnQJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGNvbnRhaW5zCURPTU5vZGU6OkNvbnRh
aW5zCQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgYWRkRXZlbnRMaXN0ZW5lciAgRE9NTm9kZTo6
QWRkRXZlbnRMaXN0ZW5lciAgIERvbnREZWxldGV8RnVuY3Rpb24gMworICByZW1vdmVFdmVudExp
c3RlbmVyICAgRE9NTm9kZTo6UmVtb3ZlRXZlbnRMaXN0ZW5lciAgICBEb250RGVsZXRlfEZ1bmN0
aW9uIDMKKyAgZGlzcGF0Y2hFdmVudCAgICAgRE9NTm9kZTo6RGlzcGF0Y2hFdmVudCAgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCisgIGNvbnRhaW5zICBET01Ob2RlOjpDb250YWlucyAgICAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDEKICMgIkRPTSBsZXZlbCAwIiAoZnJvbSBHZWNrbyBET00gcmVmZXJl
bmNlOyBhbHNvIGluIFdpbklFKQogICBpdGVtICAgICAgICAgIERPTU5vZGU6Okl0ZW0gICAgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogQGVuZApAQCAtMTEzLDcgKzExMyw3IEBADQogICAg
IERPTU9iamVjdDo6bWFyaygpOwogICAgIHJldHVybjsKICAgfQotICAKKwogICAvLyBUaGlzIGlz
IGEgbm9kZSBvdXRzaWRlIHRoZSBkb2N1bWVudCwgc28gZmluZCB0aGUgcm9vdCBvZiB0aGUgdHJl
ZSBpdCBpcyBpbiwKICAgLy8gYW5kIHN0YXJ0IG1hcmtpbmcgZnJvbSB0aGVyZS4KICAgTm9kZUlt
cGwgKnJvb3QgPSBub2RlLmhhbmRsZSgpOwpAQCAtMTYzLDc1ICsxNjMsNzUgQEANCiAKIC8qIFNv
dXJjZSBmb3IgRE9NTm9kZVRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0
ZS4KIEBiZWdpbiBET01Ob2RlVGFibGUgNjcKLSAgbm9kZU5hbWUJRE9NTm9kZTo6Tm9kZU5hbWUJ
RG9udERlbGV0ZXxSZWFkT25seQotICBub2RlVmFsdWUJRE9NTm9kZTo6Tm9kZVZhbHVlCURvbnRE
ZWxldGUKLSAgbm9kZVR5cGUJRE9NTm9kZTo6Tm9kZVR5cGUJRG9udERlbGV0ZXxSZWFkT25seQot
ICBwYXJlbnROb2RlCURPTU5vZGU6OlBhcmVudE5vZGUJRG9udERlbGV0ZXxSZWFkT25seQotICBw
YXJlbnRFbGVtZW50CURPTU5vZGU6OlBhcmVudEVsZW1lbnQJRG9udERlbGV0ZXxSZWFkT25seQot
ICBjaGlsZE5vZGVzCURPTU5vZGU6OkNoaWxkTm9kZXMJRG9udERlbGV0ZXxSZWFkT25seQotICBm
aXJzdENoaWxkCURPTU5vZGU6OkZpcnN0Q2hpbGQJRG9udERlbGV0ZXxSZWFkT25seQotICBsYXN0
Q2hpbGQJRE9NTm9kZTo6TGFzdENoaWxkCURvbnREZWxldGV8UmVhZE9ubHkKKyAgbm9kZU5hbWUg
IERPTU5vZGU6Ok5vZGVOYW1lICAgRG9udERlbGV0ZXxSZWFkT25seQorICBub2RlVmFsdWUgRE9N
Tm9kZTo6Tm9kZVZhbHVlICBEb250RGVsZXRlCisgIG5vZGVUeXBlICBET01Ob2RlOjpOb2RlVHlw
ZSAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgcGFyZW50Tm9kZSAgICBET01Ob2RlOjpQYXJlbnRO
b2RlIERvbnREZWxldGV8UmVhZE9ubHkKKyAgcGFyZW50RWxlbWVudCBET01Ob2RlOjpQYXJlbnRF
bGVtZW50ICBEb250RGVsZXRlfFJlYWRPbmx5CisgIGNoaWxkTm9kZXMgICAgRE9NTm9kZTo6Q2hp
bGROb2RlcyBEb250RGVsZXRlfFJlYWRPbmx5CisgIGZpcnN0Q2hpbGQgICAgRE9NTm9kZTo6Rmly
c3RDaGlsZCBEb250RGVsZXRlfFJlYWRPbmx5CisgIGxhc3RDaGlsZCBET01Ob2RlOjpMYXN0Q2hp
bGQgIERvbnREZWxldGV8UmVhZE9ubHkKICAgcHJldmlvdXNTaWJsaW5nICBET01Ob2RlOjpQcmV2
aW91c1NpYmxpbmcgRG9udERlbGV0ZXxSZWFkT25seQotICBuZXh0U2libGluZwlET01Ob2RlOjpO
ZXh0U2libGluZwlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGF0dHJpYnV0ZXMJRE9NTm9kZTo6QXR0
cmlidXRlcwlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5hbWVzcGFjZVVSSQlET01Ob2RlOjpOYW1l
c3BhY2VVUkkJRG9udERlbGV0ZXxSZWFkT25seQorICBuZXh0U2libGluZyAgIERPTU5vZGU6Ok5l
eHRTaWJsaW5nICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgYXR0cmlidXRlcyAgICBET01Ob2Rl
OjpBdHRyaWJ1dGVzIERvbnREZWxldGV8UmVhZE9ubHkKKyAgbmFtZXNwYWNlVVJJICBET01Ob2Rl
OjpOYW1lc3BhY2VVUkkgICBEb250RGVsZXRlfFJlYWRPbmx5CiAjIERPTTIKLSAgcHJlZml4CURP
TU5vZGU6OlByZWZpeAkJRG9udERlbGV0ZQotICBsb2NhbE5hbWUJRE9NTm9kZTo6TG9jYWxOYW1l
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgb3duZXJEb2N1bWVudAlET01Ob2RlOjpPd25lckRvY3Vt
ZW50CURvbnREZWxldGV8UmVhZE9ubHkKKyAgcHJlZml4ICAgIERPTU5vZGU6OlByZWZpeCAgICAg
RG9udERlbGV0ZQorICBsb2NhbE5hbWUgRE9NTm9kZTo6TG9jYWxOYW1lICBEb250RGVsZXRlfFJl
YWRPbmx5CisgIG93bmVyRG9jdW1lbnQgRE9NTm9kZTo6T3duZXJEb2N1bWVudCAgRG9udERlbGV0
ZXxSZWFkT25seQogIwotICBvbmFib3J0CURPTU5vZGU6Ok9uQWJvcnQJCURvbnREZWxldGUKLSAg
b25ibHVyCURPTU5vZGU6Ok9uQmx1cgkJCURvbnREZWxldGUKLSAgb25jaGFuZ2UJRE9NTm9kZTo6
T25DaGFuZ2UJCURvbnREZWxldGUKLSAgb25jbGljawlET01Ob2RlOjpPbkNsaWNrCQlEb250RGVs
ZXRlCi0gIG9uY29udGV4dG1lbnUJRE9NTm9kZTo6T25Db250ZXh0TWVudQkJRG9udERlbGV0ZQot
ICBvbmRibGNsaWNrCURPTU5vZGU6Ok9uRGJsQ2xpY2sJCURvbnREZWxldGUKLSAgb25iZWZvcmVj
dXQJRE9NTm9kZTo6T25CZWZvcmVDdXQJCURvbnREZWxldGUKKyAgb25hYm9ydCAgIERPTU5vZGU6
Ok9uQWJvcnQgICAgICAgIERvbnREZWxldGUKKyAgb25ibHVyICAgIERPTU5vZGU6Ok9uQmx1ciAg
ICAgICAgIERvbnREZWxldGUKKyAgb25jaGFuZ2UgIERPTU5vZGU6Ok9uQ2hhbmdlICAgICAgIERv
bnREZWxldGUKKyAgb25jbGljayAgIERPTU5vZGU6Ok9uQ2xpY2sgICAgICAgIERvbnREZWxldGUK
KyAgb25jb250ZXh0bWVudSBET01Ob2RlOjpPbkNvbnRleHRNZW51ICAgICAgRG9udERlbGV0ZQor
ICBvbmRibGNsaWNrICAgIERPTU5vZGU6Ok9uRGJsQ2xpY2sgICAgIERvbnREZWxldGUKKyAgb25i
ZWZvcmVjdXQgICBET01Ob2RlOjpPbkJlZm9yZUN1dCAgICAgICAgRG9udERlbGV0ZQogICBvbmN1
dCAgICAgICAgIERPTU5vZGU6Ok9uQ3V0ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotICBv
bmJlZm9yZWNvcHkJRE9NTm9kZTo6T25CZWZvcmVDb3B5CQlEb250RGVsZXRlCi0gIG9uY29weQlE
T01Ob2RlOjpPbkNvcHkgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgb25iZWZvcmVwYXN0
ZQlET01Ob2RlOjpPbkJlZm9yZVBhc3RlCQlEb250RGVsZXRlCi0gIG9ucGFzdGUJRE9NTm9kZTo6
T25QYXN0ZQkJRG9udERlbGV0ZQotICBvbmRyYWcJRE9NTm9kZTo6T25EcmFnCQkJRG9udERlbGV0
ZQotICBvbmRyYWdkcm9wCURPTU5vZGU6Ok9uRHJhZ0Ryb3AJCURvbnREZWxldGUKLSAgb25kcmFn
ZW5kCURPTU5vZGU6Ok9uRHJhZ0VuZAkJRG9udERlbGV0ZQotICBvbmRyYWdlbnRlcglET01Ob2Rl
OjpPbkRyYWdFbnRlcgkJRG9udERlbGV0ZQotICBvbmRyYWdsZWF2ZQlET01Ob2RlOjpPbkRyYWdM
ZWF2ZQkJRG9udERlbGV0ZQotICBvbmRyYWdvdmVyCURPTU5vZGU6Ok9uRHJhZ092ZXIJCURvbnRE
ZWxldGUKLSAgb25kcmFnc3RhcnQJRE9NTm9kZTo6T25EcmFnU3RhcnQJCURvbnREZWxldGUKLSAg
b25kcm9wCURPTU5vZGU6Ok9uRHJvcCAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotICBvbmVy
cm9yCURPTU5vZGU6Ok9uRXJyb3IJCURvbnREZWxldGUKLSAgb25mb2N1cwlET01Ob2RlOjpPbkZv
Y3VzICAgICAgIAkJRG9udERlbGV0ZQorICBvbmJlZm9yZWNvcHkgIERPTU5vZGU6Ok9uQmVmb3Jl
Q29weSAgICAgICBEb250RGVsZXRlCisgIG9uY29weSAgICBET01Ob2RlOjpPbkNvcHkgICAgICAg
ICAgICAgICAgIERvbnREZWxldGUKKyAgb25iZWZvcmVwYXN0ZSBET01Ob2RlOjpPbkJlZm9yZVBh
c3RlICAgICAgRG9udERlbGV0ZQorICBvbnBhc3RlICAgRE9NTm9kZTo6T25QYXN0ZSAgICAgICAg
RG9udERlbGV0ZQorICBvbmRyYWcgICAgRE9NTm9kZTo6T25EcmFnICAgICAgICAgRG9udERlbGV0
ZQorICBvbmRyYWdkcm9wICAgIERPTU5vZGU6Ok9uRHJhZ0Ryb3AgICAgIERvbnREZWxldGUKKyAg
b25kcmFnZW5kIERPTU5vZGU6Ok9uRHJhZ0VuZCAgICAgIERvbnREZWxldGUKKyAgb25kcmFnZW50
ZXIgICBET01Ob2RlOjpPbkRyYWdFbnRlciAgICAgICAgRG9udERlbGV0ZQorICBvbmRyYWdsZWF2
ZSAgIERPTU5vZGU6Ok9uRHJhZ0xlYXZlICAgICAgICBEb250RGVsZXRlCisgIG9uZHJhZ292ZXIg
ICAgRE9NTm9kZTo6T25EcmFnT3ZlciAgICAgRG9udERlbGV0ZQorICBvbmRyYWdzdGFydCAgIERP
TU5vZGU6Ok9uRHJhZ1N0YXJ0ICAgICAgICBEb250RGVsZXRlCisgIG9uZHJvcCAgICBET01Ob2Rl
OjpPbkRyb3AgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25lcnJvciAgIERPTU5vZGU6
Ok9uRXJyb3IgICAgICAgIERvbnREZWxldGUKKyAgb25mb2N1cyAgIERPTU5vZGU6Ok9uRm9jdXMg
ICAgICAgICAgICBEb250RGVsZXRlCiAgIG9uaW5wdXQgICAgICAgRE9NTm9kZTo6T25JbnB1dCAg
ICAgICAgICAgICAgICBEb250RGVsZXRlCi0gIG9ua2V5ZG93bglET01Ob2RlOjpPbktleURvd24J
CURvbnREZWxldGUKLSAgb25rZXlwcmVzcwlET01Ob2RlOjpPbktleVByZXNzCQlEb250RGVsZXRl
Ci0gIG9ua2V5dXAJRE9NTm9kZTo6T25LZXlVcAkJRG9udERlbGV0ZQotICBvbmxvYWQJRE9NTm9k
ZTo6T25Mb2FkCQkJRG9udERlbGV0ZQotICBvbm1vdXNlZG93bglET01Ob2RlOjpPbk1vdXNlRG93
bgkJRG9udERlbGV0ZQotICBvbm1vdXNlbW92ZQlET01Ob2RlOjpPbk1vdXNlTW92ZQkJRG9udERl
bGV0ZQotICBvbm1vdXNlb3V0CURPTU5vZGU6Ok9uTW91c2VPdXQJCURvbnREZWxldGUKLSAgb25t
b3VzZW92ZXIJRE9NTm9kZTo6T25Nb3VzZU92ZXIJCURvbnREZWxldGUKLSAgb25tb3VzZXVwCURP
TU5vZGU6Ok9uTW91c2VVcAkJRG9udERlbGV0ZQotICBvbm1vdXNld2hlZWwJRE9NTm9kZTo6T25N
b3VzZVdoZWVsCQlEb250RGVsZXRlCi0gIG9ubW92ZQlET01Ob2RlOjpPbk1vdmUJCQlEb250RGVs
ZXRlCi0gIG9ucmVzZXQJRE9NTm9kZTo6T25SZXNldAkJRG9udERlbGV0ZQotICBvbnJlc2l6ZQlE
T01Ob2RlOjpPblJlc2l6ZQkJRG9udERlbGV0ZQorICBvbmtleWRvd24gRE9NTm9kZTo6T25LZXlE
b3duICAgICAgRG9udERlbGV0ZQorICBvbmtleXByZXNzICAgIERPTU5vZGU6Ok9uS2V5UHJlc3Mg
ICAgIERvbnREZWxldGUKKyAgb25rZXl1cCAgIERPTU5vZGU6Ok9uS2V5VXAgICAgICAgIERvbnRE
ZWxldGUKKyAgb25sb2FkICAgIERPTU5vZGU6Ok9uTG9hZCAgICAgICAgIERvbnREZWxldGUKKyAg
b25tb3VzZWRvd24gICBET01Ob2RlOjpPbk1vdXNlRG93biAgICAgICAgRG9udERlbGV0ZQorICBv
bm1vdXNlbW92ZSAgIERPTU5vZGU6Ok9uTW91c2VNb3ZlICAgICAgICBEb250RGVsZXRlCisgIG9u
bW91c2VvdXQgICAgRE9NTm9kZTo6T25Nb3VzZU91dCAgICAgRG9udERlbGV0ZQorICBvbm1vdXNl
b3ZlciAgIERPTU5vZGU6Ok9uTW91c2VPdmVyICAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2V1
cCBET01Ob2RlOjpPbk1vdXNlVXAgICAgICBEb250RGVsZXRlCisgIG9ubW91c2V3aGVlbCAgRE9N
Tm9kZTo6T25Nb3VzZVdoZWVsICAgICAgIERvbnREZWxldGUKKyAgb25tb3ZlICAgIERPTU5vZGU6
Ok9uTW92ZSAgICAgICAgIERvbnREZWxldGUKKyAgb25yZXNldCAgIERPTU5vZGU6Ok9uUmVzZXQg
ICAgICAgIERvbnREZWxldGUKKyAgb25yZXNpemUgIERPTU5vZGU6Ok9uUmVzaXplICAgICAgIERv
bnREZWxldGUKICAgb25zY3JvbGwgICAgICBET01Ob2RlOjpPblNjcm9sbCAgICAgICAgICAgICAg
IERvbnREZWxldGUKICAgb25zZWFyY2ggICAgICBET01Ob2RlOjpPblNlYXJjaCAgICAgICAgICAg
ICAgIERvbnREZWxldGUKLSAgb25zZWxlY3QJRE9NTm9kZTo6T25TZWxlY3QJCURvbnREZWxldGUK
LSAgb25zZWxlY3RzdGFydAlET01Ob2RlOjpPblNlbGVjdFN0YXJ0CQlEb250RGVsZXRlCi0gIG9u
c3VibWl0CURPTU5vZGU6Ok9uU3VibWl0CQlEb250RGVsZXRlCi0gIG9udW5sb2FkCURPTU5vZGU6
Ok9uVW5sb2FkCQlEb250RGVsZXRlCisgIG9uc2VsZWN0ICBET01Ob2RlOjpPblNlbGVjdCAgICAg
ICBEb250RGVsZXRlCisgIG9uc2VsZWN0c3RhcnQgRE9NTm9kZTo6T25TZWxlY3RTdGFydCAgICAg
IERvbnREZWxldGUKKyAgb25zdWJtaXQgIERPTU5vZGU6Ok9uU3VibWl0ICAgICAgIERvbnREZWxl
dGUKKyAgb251bmxvYWQgIERPTU5vZGU6Ok9uVW5sb2FkICAgICAgIERvbnREZWxldGUKICMgSUUg
ZXh0ZW5zaW9ucwotICBvZmZzZXRMZWZ0CURPTU5vZGU6Ok9mZnNldExlZnQJCURvbnREZWxldGV8
UmVhZE9ubHkKLSAgb2Zmc2V0VG9wCURPTU5vZGU6Ok9mZnNldFRvcAkJRG9udERlbGV0ZXxSZWFk
T25seQotICBvZmZzZXRXaWR0aAlET01Ob2RlOjpPZmZzZXRXaWR0aAkJRG9udERlbGV0ZXxSZWFk
T25seQotICBvZmZzZXRIZWlnaHQJRE9NTm9kZTo6T2Zmc2V0SGVpZ2h0CQlEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIG9mZnNldFBhcmVudAlET01Ob2RlOjpPZmZzZXRQYXJlbnQJCURvbnREZWxldGV8
UmVhZE9ubHkKLSAgY2xpZW50V2lkdGgJRE9NTm9kZTo6Q2xpZW50V2lkdGgJCURvbnREZWxldGV8
UmVhZE9ubHkKLSAgY2xpZW50SGVpZ2h0CURPTU5vZGU6OkNsaWVudEhlaWdodAkJRG9udERlbGV0
ZXxSZWFkT25seQotICBzY3JvbGxMZWZ0CURPTU5vZGU6OlNjcm9sbExlZnQJCURvbnREZWxldGUK
LSAgc2Nyb2xsVG9wCURPTU5vZGU6OlNjcm9sbFRvcAkJRG9udERlbGV0ZQorICBvZmZzZXRMZWZ0
ICAgIERPTU5vZGU6Ok9mZnNldExlZnQgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb2Zmc2V0
VG9wIERPTU5vZGU6Ok9mZnNldFRvcCAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgb2Zmc2V0
V2lkdGggICBET01Ob2RlOjpPZmZzZXRXaWR0aCAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQor
ICBvZmZzZXRIZWlnaHQgIERPTU5vZGU6Ok9mZnNldEhlaWdodCAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5CisgIG9mZnNldFBhcmVudCAgRE9NTm9kZTo6T2Zmc2V0UGFyZW50ICAgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgY2xpZW50V2lkdGggICBET01Ob2RlOjpDbGllbnRXaWR0aCAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQorICBjbGllbnRIZWlnaHQgIERPTU5vZGU6OkNsaWVudEhl
aWdodCAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHNjcm9sbExlZnQgICAgRE9NTm9kZTo6
U2Nyb2xsTGVmdCAgICAgRG9udERlbGV0ZQorICBzY3JvbGxUb3AgRE9NTm9kZTo6U2Nyb2xsVG9w
ICAgICAgRG9udERlbGV0ZQogICBzY3JvbGxXaWR0aCAgIERPTU5vZGU6OlNjcm9sbFdpZHRoICAg
ICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBzY3JvbGxIZWlnaHQgIERPTU5vZGU6OlNj
cm9sbEhlaWdodCAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZApAQCAtMzE0LDkg
KzMxNCw5IEBADQogICBjYXNlIE9uTW91c2VPdmVyOgogICAgIHJldHVybiBnZXRMaXN0ZW5lcihE
T006OkV2ZW50SW1wbDo6TU9VU0VPVkVSX0VWRU5UKTsKICAgY2FzZSBPbk1vdXNlVXA6Ci0gICAg
cmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpNT1VTRVVQX0VWRU5UKTsgICAgICAK
KyAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudEltcGw6Ok1PVVNFVVBfRVZFTlQpOwog
ICBjYXNlIE9uTW91c2VXaGVlbDoKLSAgICByZXR1cm4gZ2V0TGlzdGVuZXIoRE9NOjpFdmVudElt
cGw6Ok1PVVNFV0hFRUxfRVZFTlQpOyAgICAgIAorICAgIHJldHVybiBnZXRMaXN0ZW5lcihET006
OkV2ZW50SW1wbDo6TU9VU0VXSEVFTF9FVkVOVCk7CiAgIGNhc2UgT25CZWZvcmVDdXQ6CiAgICAg
cmV0dXJuIGdldExpc3RlbmVyKERPTTo6RXZlbnRJbXBsOjpCRUZPUkVDVVRfRVZFTlQpOwogICBj
YXNlIE9uQ3V0OgpAQCAtNjAzLDkgKzYwMyw5IEBADQogICAgIERPTTo6RXZlbnRMaXN0ZW5lciAq
bGlzdGVuZXIgPSBub2RlLmhhbmRsZSgpLT5nZXRIVE1MRXZlbnRMaXN0ZW5lcihldmVudElkKTsK
ICAgICBKU0V2ZW50TGlzdGVuZXIgKmpzTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU0V2ZW50TGlz
dGVuZXIqPihsaXN0ZW5lcik7CiAgICAgaWYgKCBqc0xpc3RlbmVyICYmIGpzTGlzdGVuZXItPmxp
c3RlbmVyT2JqSW1wKCkgKQotCXJldHVybiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iaigpOworICAg
IHJldHVybiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iaigpOwogICAgIGVsc2UKLQlyZXR1cm4gTnVs
bCgpOworICAgIHJldHVybiBOdWxsKCk7CiB9CiAKIHZvaWQgRE9NTm9kZTo6cHVzaEV2ZW50SGFu
ZGxlclNjb3BlKEV4ZWNTdGF0ZSAqLCBTY29wZUNoYWluICYpIGNvbnN0CkBAIC02NTgsMTMgKzY1
OCwxMyBAQA0KICAgICBjYXNlIERPTU5vZGU6OkNvbnRhaW5zOgogICAgIHsKICAgICAgICAgaW50
IGV4Y2VwdGlvbmNvZGU9MDsKLQlET006Ok5vZGUgb3RoZXIgPSB0b05vZGUoYXJnc1swXSk7Ci0J
aWYgKCFvdGhlci5pc051bGwoKSAmJiBub2RlLm5vZGVUeXBlKCk9PURPTTo6Tm9kZTo6RUxFTUVO
VF9OT0RFKQotCXsKLQkgICAgRE9NOjpOb2RlQmFzZUltcGwgKmltcGwgPSBzdGF0aWNfY2FzdDxE
T006Ok5vZGVCYXNlSW1wbCAqPihub2RlLmhhbmRsZSgpKTsKLQkgICAgYm9vbCByZXR2YWwgPSAh
aW1wbC0+Y2hlY2tOb093bmVyKG90aGVyLmhhbmRsZSgpLGV4Y2VwdGlvbmNvZGUpOwotCSAgICBy
ZXR1cm4gQm9vbGVhbihyZXR2YWwgJiYgZXhjZXB0aW9uY29kZSA9PSAwKTsKLQl9CisgICAgRE9N
OjpOb2RlIG90aGVyID0gdG9Ob2RlKGFyZ3NbMF0pOworICAgIGlmICghb3RoZXIuaXNOdWxsKCkg
JiYgbm9kZS5ub2RlVHlwZSgpPT1ET006Ok5vZGU6OkVMRU1FTlRfTk9ERSkKKyAgICB7CisgICAg
ICAgIERPTTo6Tm9kZUJhc2VJbXBsICppbXBsID0gc3RhdGljX2Nhc3Q8RE9NOjpOb2RlQmFzZUlt
cGwgKj4obm9kZS5oYW5kbGUoKSk7CisgICAgICAgIGJvb2wgcmV0dmFsID0gIWltcGwtPmNoZWNr
Tm9Pd25lcihvdGhlci5oYW5kbGUoKSxleGNlcHRpb25jb2RlKTsKKyAgICAgICAgcmV0dXJuIEJv
b2xlYW4ocmV0dmFsICYmIGV4Y2VwdGlvbmNvZGUgPT0gMCk7CisgICAgfQogICAgICAgICByZXR1
cm4gVW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGNhc2UgRE9NTm9kZTo6SXRlbToKQEAgLTc0OSw4
ICs3NDksOCBAQA0KICAgICBPYmplY3QgZXJyID0gRXJyb3I6OmNyZWF0ZShleGVjLCBHZW5lcmFs
RXJyb3IsICJFeGNlcHRpb24gZnJvbSBET01Ob2RlTGlzdCIpOwogICAgIGV4ZWMtPnNldEV4Y2Vw
dGlvbihlcnIpOwogICAgIERPTTo6X2V4Y2VwdGlvbmNvZGUgPSAwOwotICB9ICAKLSNlbHNlICAg
ICAKKyAgfQorI2Vsc2UKICAgdHJ5IHsKICAgICB2YWwgPSB0cnlDYWxsKGV4ZWMsIHRoaXNPYmos
IGFyZ3MpOwogICB9CkBAIC03NTksNyArNzU5LDcgQEANCiAgICAgT2JqZWN0IGVyciA9IEVycm9y
OjpjcmVhdGUoZXhlYywgR2VuZXJhbEVycm9yLCAiRXhjZXB0aW9uIGZyb20gRE9NTm9kZUxpc3Qi
KTsKICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXJyKTsKICAgfQotI2VuZGlmICAKKyNlbmRpZgog
ICByZXR1cm4gdmFsOwogfQogCkBAIC04MDUsMTAgKzgwNSwxMCBAQA0KIAogLyogU291cmNlIGZv
ciBET01BdHRyVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJl
Z2luIERPTUF0dHJUYWJsZSA1Ci0gIG5hbWUJCURPTUF0dHI6Ok5hbWUJCURvbnREZWxldGV8UmVh
ZE9ubHkKLSAgc3BlY2lmaWVkCURPTUF0dHI6OlNwZWNpZmllZAlEb250RGVsZXRlfFJlYWRPbmx5
Ci0gIHZhbHVlCQlET01BdHRyOjpWYWx1ZVByb3BlcnR5CURvbnREZWxldGV8UmVhZE9ubHkKLSAg
b3duZXJFbGVtZW50CURPTUF0dHI6Ok93bmVyRWxlbWVudAlEb250RGVsZXRlfFJlYWRPbmx5Cisg
IG5hbWUgICAgICBET01BdHRyOjpOYW1lICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgc3Bl
Y2lmaWVkIERPTUF0dHI6OlNwZWNpZmllZCAgRG9udERlbGV0ZXxSZWFkT25seQorICB2YWx1ZSAg
ICAgRE9NQXR0cjo6VmFsdWVQcm9wZXJ0eSAgRG9udERlbGV0ZXxSZWFkT25seQorICBvd25lckVs
ZW1lbnQgIERPTUF0dHI6Ok93bmVyRWxlbWVudCAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQK
ICovCiBWYWx1ZSBET01BdHRyOjp0cnlHZXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlm
aWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC05MDcsMTQgKzkwNywxNCBAQA0KICovCiAKIERP
TURvY3VtZW50OjpET01Eb2N1bWVudChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IERPTTo6RG9jdW1l
bnQgJmQpCi0gIDogRE9NTm9kZShkKSAKLXsgCisgIDogRE9NTm9kZShkKQorewogICBzZXRQcm90
b3R5cGUoRE9NRG9jdW1lbnRQcm90bzo6c2VsZihleGVjKSk7CiB9CiAKIERPTURvY3VtZW50OjpE
T01Eb2N1bWVudChjb25zdCBET006OkRvY3VtZW50ICZkKQotICA6IERPTU5vZGUoZCkgCi17IAor
ICA6IERPTU5vZGUoZCkKK3sKIH0KIAogRE9NRG9jdW1lbnQ6On5ET01Eb2N1bWVudCgpCkBAIC0x
MDg4LDcgKzEwODgsNyBAQA0KICAgICAvLyAiSWYgbm90IHN1cHBvcnRlZCBbZm9yIGEgY29tbWFu
ZCBpZGVudGlmaWVyXSwgdGhpcyBtZXRob2QgcmV0dXJucyBhIEJvb2xlYW4gc2V0IHRvIGZhbHNl
LiIKICAgICBpZiAoY29tbWFuZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gQm9vbGVh
bihmYWxzZSk7Ci0gICAgZWxzZSAKKyAgICBlbHNlCiAgICAgICAgIHJldHVybiBTdHJpbmcoY29t
bWFuZFZhbHVlKTsKICAgfQogICBkZWZhdWx0OgpAQCAtMTEwMiwyMSArMTEwMiwyMSBAQA0KIAog
LyogU291cmNlIGZvciBET01FbGVtZW50UHJvdG9UYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMi
IHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRWxlbWVudFByb3RvVGFibGUgMTcKLSAgZ2V0QXR0
cmlidXRlCQlET01FbGVtZW50OjpHZXRBdHRyaWJ1dGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0g
IHNldEF0dHJpYnV0ZQkJRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlCURvbnREZWxldGV8RnVuY3Rp
b24gMgotICByZW1vdmVBdHRyaWJ1dGUJRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlCURvbnRE
ZWxldGV8RnVuY3Rpb24gMQotICBnZXRBdHRyaWJ1dGVOb2RlCURPTUVsZW1lbnQ6OkdldEF0dHJp
YnV0ZU5vZGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHNldEF0dHJpYnV0ZU5vZGUJRE9NRWxl
bWVudDo6U2V0QXR0cmlidXRlTm9kZQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcmVtb3ZlQXR0
cmlidXRlTm9kZQlET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1dGVOb2RlCURvbnREZWxldGV8RnVu
Y3Rpb24gMQotICBnZXRFbGVtZW50c0J5VGFnTmFtZQlET01FbGVtZW50OjpHZXRFbGVtZW50c0J5
VGFnTmFtZQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgaGFzQXR0cmlidXRlCQlET01FbGVtZW50
OjpIYXNBdHRyaWJ1dGUJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGdldEF0dHJpYnV0ZU5TCURP
TUVsZW1lbnQ6OkdldEF0dHJpYnV0ZU5TCURvbnREZWxldGV8RnVuY3Rpb24gMgotICBzZXRBdHRy
aWJ1dGVOUwlET01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOUwlEb250RGVsZXRlfEZ1bmN0aW9uIDMK
LSAgcmVtb3ZlQXR0cmlidXRlTlMJRE9NRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlTlMJRG9udERl
bGV0ZXxGdW5jdGlvbiAyCi0gIGdldEF0dHJpYnV0ZU5vZGVOUwlET01FbGVtZW50OjpHZXRBdHRy
aWJ1dGVOb2RlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIHNldEF0dHJpYnV0ZU5vZGVOUwlE
T01FbGVtZW50OjpTZXRBdHRyaWJ1dGVOb2RlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGdl
dEVsZW1lbnRzQnlUYWdOYW1lTlMgRE9NRWxlbWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWVOUwlE
b250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgaGFzQXR0cmlidXRlTlMJRE9NRWxlbWVudDo6SGFzQXR0
cmlidXRlTlMJRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGdldEF0dHJpYnV0ZSAgICAgIERPTUVs
ZW1lbnQ6OkdldEF0dHJpYnV0ZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgc2V0QXR0cmli
dXRlICAgICAgRE9NRWxlbWVudDo6U2V0QXR0cmlidXRlICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MgorICByZW1vdmVBdHRyaWJ1dGUgICBET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1dGUgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCisgIGdldEF0dHJpYnV0ZU5vZGUgIERPTUVsZW1lbnQ6OkdldEF0dHJp
YnV0ZU5vZGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHNldEF0dHJpYnV0ZU5vZGUgIERP
TUVsZW1lbnQ6OlNldEF0dHJpYnV0ZU5vZGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIHJl
bW92ZUF0dHJpYnV0ZU5vZGUgICBET01FbGVtZW50OjpSZW1vdmVBdHRyaWJ1dGVOb2RlIERvbnRE
ZWxldGV8RnVuY3Rpb24gMQorICBnZXRFbGVtZW50c0J5VGFnTmFtZSAgRE9NRWxlbWVudDo6R2V0
RWxlbWVudHNCeVRhZ05hbWUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIGhhc0F0dHJpYnV0
ZSAgICAgIERPTUVsZW1lbnQ6Okhhc0F0dHJpYnV0ZSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEK
KyAgZ2V0QXR0cmlidXRlTlMgICAgRE9NRWxlbWVudDo6R2V0QXR0cmlidXRlTlMgIERvbnREZWxl
dGV8RnVuY3Rpb24gMgorICBzZXRBdHRyaWJ1dGVOUyAgICBET01FbGVtZW50OjpTZXRBdHRyaWJ1
dGVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCisgIHJlbW92ZUF0dHJpYnV0ZU5TIERPTUVsZW1l
bnQ6OlJlbW92ZUF0dHJpYnV0ZU5TICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisgIGdldEF0dHJp
YnV0ZU5vZGVOUyAgICBET01FbGVtZW50OjpHZXRBdHRyaWJ1dGVOb2RlTlMgIERvbnREZWxldGV8
RnVuY3Rpb24gMgorICBzZXRBdHRyaWJ1dGVOb2RlTlMgICAgRE9NRWxlbWVudDo6U2V0QXR0cmli
dXRlTm9kZU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UyBET01FbGVtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZU5TIERvbnREZWxldGV8RnVuY3Rpb24g
MgorICBoYXNBdHRyaWJ1dGVOUyAgICBET01FbGVtZW50OjpIYXNBdHRyaWJ1dGVOUyAgRG9udERl
bGV0ZXxGdW5jdGlvbiAyCiAgIHNjcm9sbEludG9WaWV3ICAgICAgICBET01FbGVtZW50OjpTY3Jv
bGxJbnRvVmlldyAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogICBmb2N1cyAgICAgICAgICAg
ICAgICAgRE9NRWxlbWVudDo6RWxlbWVudEZvY3VzICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDAKICAgYmx1ciAgICAgICAgICAgICAgICAgIERPTUVsZW1lbnQ6OkVsZW1lbnRCbHVyICAgICAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCkBAIC0xMTM0LDE5ICsxMTM0LDE5IEBADQogY29uc3Qg
Q2xhc3NJbmZvIERPTUVsZW1lbnQ6OmluZm8gPSB7ICJFbGVtZW50IiwgJkRPTU5vZGU6OmluZm8s
ICZET01FbGVtZW50VGFibGUsIDAgfTsKIC8qIFNvdXJjZSBmb3IgRE9NRWxlbWVudFRhYmxlLiBV
c2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01FbGVtZW50VGFi
bGUgMwotICB0YWdOYW1lCURPTUVsZW1lbnQ6OlRhZ05hbWUgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQotICBzdHlsZQkJRE9NRWxlbWVudDo6U3R5bGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIHRhZ05hbWUgICBET01F
bGVtZW50OjpUYWdOYW1lICAgICAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8UmVhZE9u
bHkKKyAgc3R5bGUgICAgIERPTUVsZW1lbnQ6OlN0eWxlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIERPTUVsZW1lbnQ6OkRPTUVsZW1lbnQo
RXhlY1N0YXRlICpleGVjLCBjb25zdCBET006OkVsZW1lbnQgJmUpCi0gIDogRE9NTm9kZShlKSAK
KyAgOiBET01Ob2RlKGUpCiB7CiAgIHNldFByb3RvdHlwZShET01FbGVtZW50UHJvdG86OnNlbGYo
ZXhlYykpOwogfQogCiBET01FbGVtZW50OjpET01FbGVtZW50KGNvbnN0IERPTTo6RWxlbWVudCAm
ZSkKLSAgOiBET01Ob2RlKGUpIAoteyAKKyAgOiBET01Ob2RlKGUpCit7CiB9CiAKIFZhbHVlIERP
TUVsZW1lbnQ6OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3Bl
cnR5TmFtZSkgY29uc3QKQEAgLTEyMzEsNyArMTIzMSw3IEBADQogICAgICAgcmV0dXJuIGdldERP
TU5vZGVMaXN0KGV4ZWMsZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKGFyZ3NbMF0udG9T
dHJpbmcoZXhlYykuc3RyaW5nKCksYXJnc1sxXS50b1N0cmluZyhleGVjKS5zdHJpbmcoKSkpOwog
ICAgIGNhc2UgRE9NRWxlbWVudDo6SGFzQXR0cmlidXRlTlM6IC8vIERPTTIKICAgICAgIHJldHVy
biBCb29sZWFuKGVsZW1lbnQuaGFzQXR0cmlidXRlTlMoYXJnc1swXS50b1N0cmluZyhleGVjKS5z
dHJpbmcoKSxhcmdzWzFdLnRvU3RyaW5nKGV4ZWMpLnN0cmluZygpKSk7Ci0gICAgY2FzZSBET01F
bGVtZW50OjpTY3JvbGxJbnRvVmlldzogCisgICAgY2FzZSBET01FbGVtZW50OjpTY3JvbGxJbnRv
VmlldzoKICAgICAgIChhcmdzWzBdLnR5cGUoKSAhPSBVbmRlZmluZWRUeXBlICYmIGFyZ3NbMF0u
dHlwZSgpICE9IE51bGxUeXBlKSA/IGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoYXJnc1swXS50b0Jv
b2xlYW4oZXhlYykpIDogZWxlbWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTsKICAgICAgIHJldHVy
biBVbmRlZmluZWQoKTsKICAgICBjYXNlIERPTUVsZW1lbnQ6OlNjcm9sbEJ5TGluZXM6CkBAIC0x
MjQwLDcgKzEyNDAsNyBAQA0KICAgICAgICAgRE9NOjpEb2N1bWVudEltcGwqIGRvY2ltcGwgPSBu
b2RlLmhhbmRsZSgpLT5nZXREb2N1bWVudCgpOwogICAgICAgICBpZiAoZG9jaW1wbCkgewogICAg
ICAgICAgICAgZG9jaW1wbC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
Ci0gICAgICAgIH0gICAgICAgICAgICAKKyAgICAgICAgfQogICAgICAgICBraHRtbDo6UmVuZGVy
T2JqZWN0ICpyZW5kID0gbm9kZS5oYW5kbGUoKSA/IG5vZGUuaGFuZGxlKCktPnJlbmRlcmVyKCkg
OiAwTDsKICAgICAgICAgaWYgKHJlbmQgJiYgcmVuZC0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKICAg
ICAgICAgICAgIEtXUVNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24gPSBLV1FTY3JvbGxEb3duOwpA
QCAtMTI1Myw3ICsxMjUzLDcgQEANCiAgICAgICAgICAgICByZW5kLT5sYXllcigpLT5zY3JvbGwo
ZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIFVuZGVmaW5lZCgpOwotICAgICAgICAKKwogICAgIH0KICAgICBjYXNlIERPTUVsZW1l
bnQ6OkVsZW1lbnRGb2N1czoKICAgICAgICAgZWxlbWVudC5mb2N1cygpOwpAQCAtMTI3MCwxMSAr
MTI3MCwxMSBAQA0KIAogLyogU291cmNlIGZvciBET01ET01JbXBsZW1lbnRhdGlvblByb3RvVGFi
bGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTURPTUlt
cGxlbWVudGF0aW9uUHJvdG9UYWJsZSA1Ci0gIGhhc0ZlYXR1cmUJCURPTURPTUltcGxlbWVudGF0
aW9uOjpIYXNGZWF0dXJlCQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgaGFzRmVhdHVyZSAgICAg
ICAgRE9NRE9NSW1wbGVtZW50YXRpb246Okhhc0ZlYXR1cmUgICAgICAgIERvbnREZWxldGV8RnVu
Y3Rpb24gMgogIyBET00yCi0gIGNyZWF0ZUNTU1N0eWxlU2hlZXQJRE9NRE9NSW1wbGVtZW50YXRp
b246OkNyZWF0ZUNTU1N0eWxlU2hlZXQJRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGNyZWF0ZURv
Y3VtZW50VHlwZQlET01ET01JbXBsZW1lbnRhdGlvbjo6Q3JlYXRlRG9jdW1lbnRUeXBlCURvbnRE
ZWxldGV8RnVuY3Rpb24gMwotICBjcmVhdGVEb2N1bWVudAlET01ET01JbXBsZW1lbnRhdGlvbjo6
Q3JlYXRlRG9jdW1lbnQJCURvbnREZWxldGV8RnVuY3Rpb24gMworICBjcmVhdGVDU1NTdHlsZVNo
ZWV0ICAgRE9NRE9NSW1wbGVtZW50YXRpb246OkNyZWF0ZUNTU1N0eWxlU2hlZXQgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDIKKyAgY3JlYXRlRG9jdW1lbnRUeXBlICAgIERPTURPTUltcGxlbWVudGF0
aW9uOjpDcmVhdGVEb2N1bWVudFR5cGUgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCisgIGNyZWF0
ZURvY3VtZW50ICAgIERPTURPTUltcGxlbWVudGF0aW9uOjpDcmVhdGVEb2N1bWVudCAgICAgICAg
RG9udERlbGV0ZXxGdW5jdGlvbiAzCiAgIGNyZWF0ZUhUTUxEb2N1bWVudCAgICBET01ET01JbXBs
ZW1lbnRhdGlvbjo6Q3JlYXRlSFRNTERvY3VtZW50ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDEKIEBlbmQKICovCkBAIC0xMjg1LDggKzEyODUsOCBAQA0KIGNvbnN0IENsYXNzSW5mbyBET01E
T01JbXBsZW1lbnRhdGlvbjo6aW5mbyA9IHsgIkRPTUltcGxlbWVudGF0aW9uIiwgMCwgMCwgMCB9
OwogCiBET01ET01JbXBsZW1lbnRhdGlvbjo6RE9NRE9NSW1wbGVtZW50YXRpb24oRXhlY1N0YXRl
ICpleGVjLCBjb25zdCBET006OkRPTUltcGxlbWVudGF0aW9uICZpKQotICA6IGltcGxlbWVudGF0
aW9uKGkpIAoteyAKKyAgOiBpbXBsZW1lbnRhdGlvbihpKQorewogICBzZXRQcm90b3R5cGUoRE9N
RE9NSW1wbGVtZW50YXRpb25Qcm90bzo6c2VsZihleGVjKSk7CiB9CiAKQEAgLTEzMjgsMTMgKzEz
MjgsMTMgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NRG9jdW1lbnRUeXBlVGFibGUuIFVzZSAibWFr
ZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTURvY3VtZW50VHlwZVRhYmxl
IDYKLSAgbmFtZQkJCURPTURvY3VtZW50VHlwZTo6TmFtZQkJRG9udERlbGV0ZXxSZWFkT25seQot
ICBlbnRpdGllcwkJRE9NRG9jdW1lbnRUeXBlOjpFbnRpdGllcwlEb250RGVsZXRlfFJlYWRPbmx5
Ci0gIG5vdGF0aW9ucwkJRE9NRG9jdW1lbnRUeXBlOjpOb3RhdGlvbnMJRG9udERlbGV0ZXxSZWFk
T25seQorICBuYW1lICAgICAgICAgIERPTURvY3VtZW50VHlwZTo6TmFtZSAgICAgICBEb250RGVs
ZXRlfFJlYWRPbmx5CisgIGVudGl0aWVzICAgICAgRE9NRG9jdW1lbnRUeXBlOjpFbnRpdGllcyAg
IERvbnREZWxldGV8UmVhZE9ubHkKKyAgbm90YXRpb25zICAgICBET01Eb2N1bWVudFR5cGU6Ok5v
dGF0aW9ucyAgRG9udERlbGV0ZXxSZWFkT25seQogIyBET00yCi0gIHB1YmxpY0lkCQlET01Eb2N1
bWVudFR5cGU6OlB1YmxpY0lkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgc3lzdGVtSWQJCURPTURv
Y3VtZW50VHlwZTo6U3lzdGVtSWQJRG9udERlbGV0ZXxSZWFkT25seQotICBpbnRlcm5hbFN1YnNl
dAlET01Eb2N1bWVudFR5cGU6OkludGVybmFsU3Vic2V0CURvbnREZWxldGV8UmVhZE9ubHkKKyAg
cHVibGljSWQgICAgICBET01Eb2N1bWVudFR5cGU6OlB1YmxpY0lkICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBzeXN0ZW1JZCAgICAgIERPTURvY3VtZW50VHlwZTo6U3lzdGVtSWQgICBEb250RGVs
ZXRlfFJlYWRPbmx5CisgIGludGVybmFsU3Vic2V0ICAgIERPTURvY3VtZW50VHlwZTo6SW50ZXJu
YWxTdWJzZXQgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIERPTURvY3VtZW50VHlwZTo6
RE9NRG9jdW1lbnRUeXBlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRE9NOjpEb2N1bWVudFR5cGUg
JmR0KQpAQCAtMTM3MSwxNCArMTM3MSwxNCBAQA0KIAogLyogU291cmNlIGZvciBET01OYW1lZE5v
ZGVNYXBQcm90b1RhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBi
ZWdpbiBET01OYW1lZE5vZGVNYXBQcm90b1RhYmxlIDcKLSAgZ2V0TmFtZWRJdGVtCQlET01OYW1l
ZE5vZGVNYXA6OkdldE5hbWVkSXRlbQkJRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHNldE5hbWVk
SXRlbQkJRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW0JCURvbnREZWxldGV8RnVuY3Rpb24g
MQotICByZW1vdmVOYW1lZEl0ZW0JRE9NTmFtZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0ZW0JRG9u
dERlbGV0ZXxGdW5jdGlvbiAxCi0gIGl0ZW0JCQlET01OYW1lZE5vZGVNYXA6Okl0ZW0JCQlEb250
RGVsZXRlfEZ1bmN0aW9uIDEKKyAgZ2V0TmFtZWRJdGVtICAgICAgRE9NTmFtZWROb2RlTWFwOjpH
ZXROYW1lZEl0ZW0gICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHNldE5hbWVkSXRlbSAg
ICAgIERPTU5hbWVkTm9kZU1hcDo6U2V0TmFtZWRJdGVtICAgICAgIERvbnREZWxldGV8RnVuY3Rp
b24gMQorICByZW1vdmVOYW1lZEl0ZW0gICBET01OYW1lZE5vZGVNYXA6OlJlbW92ZU5hbWVkSXRl
bSAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyAgaXRlbSAgICAgICAgICBET01OYW1lZE5vZGVN
YXA6Okl0ZW0gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogIyBET00yCi0gIGdldE5h
bWVkSXRlbU5TCURPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJdGVtTlMJCURvbnREZWxldGV8RnVu
Y3Rpb24gMgotICBzZXROYW1lZEl0ZW1OUwlET01OYW1lZE5vZGVNYXA6OlNldE5hbWVkSXRlbU5T
CQlEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgcmVtb3ZlTmFtZWRJdGVtTlMJRE9NTmFtZWROb2Rl
TWFwOjpSZW1vdmVOYW1lZEl0ZW1OUwlEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgZ2V0TmFtZWRJ
dGVtTlMgICAgRE9NTmFtZWROb2RlTWFwOjpHZXROYW1lZEl0ZW1OUyAgICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAyCisgIHNldE5hbWVkSXRlbU5TICAgIERPTU5hbWVkTm9kZU1hcDo6U2V0TmFtZWRJ
dGVtTlMgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorICByZW1vdmVOYW1lZEl0ZW1OUyBET01O
YW1lZE5vZGVNYXA6OlJlbW92ZU5hbWVkSXRlbU5TICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKIEBl
bmQKICovCiBERUZJTkVfUFJPVE9UWVBFKCJOYW1lZE5vZGVNYXAiLCBET01OYW1lZE5vZGVNYXBQ
cm90bykKQEAgLTEzODgsOCArMTM4OCw4IEBADQogY29uc3QgQ2xhc3NJbmZvIERPTU5hbWVkTm9k
ZU1hcDo6aW5mbyA9IHsgIk5hbWVkTm9kZU1hcCIsIDAsIDAsIDAgfTsKIAogRE9NTmFtZWROb2Rl
TWFwOjpET01OYW1lZE5vZGVNYXAoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006Ok5hbWVkTm9k
ZU1hcCAmbSkKLSAgOiBtYXAobSkgCi17IAorICA6IG1hcChtKQorewogICBzZXRQcm90b3R5cGUo
RE9NTmFtZWROb2RlTWFwUHJvdG86OnNlbGYoZXhlYykpOwogfQogCkBAIC0xNDU5LDkgKzE0NTks
OSBAQA0KIAogLyogU291cmNlIGZvciBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYWJsZS4gVXNl
ICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uVGFibGUgMwotICB0YXJnZXQJRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpUYXJn
ZXQJRG9udERlbGV0ZXxSZWFkT25seQotICBkYXRhCQlET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OkRhdGEJCURvbnREZWxldGUKLSAgc2hlZXQJCURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6U2hl
ZXQJCURvbnREZWxldGV8UmVhZE9ubHkKKyAgdGFyZ2V0ICAgIERPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6VGFyZ2V0ICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgZGF0YSAgICAgIERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6RGF0YSAgICAgIERvbnREZWxldGUKKyAgc2hlZXQgICAgIERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6U2hlZXQgICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQK
ICovCiBWYWx1ZSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnRyeUdldChFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTE0OTksOCArMTQ5
OSw4IEBADQogCiAvKiBTb3VyY2UgZm9yIERPTU5vdGF0aW9uVGFibGUuIFVzZSAibWFrZSBoYXNo
dGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIERPTU5vdGF0aW9uVGFibGUgMgotICBwdWJs
aWNJZAkJRE9NTm90YXRpb246OlB1YmxpY0lkCURvbnREZWxldGV8UmVhZE9ubHkKLSAgc3lzdGVt
SWQJCURPTU5vdGF0aW9uOjpTeXN0ZW1JZAlEb250RGVsZXRlfFJlYWRPbmx5CisgIHB1YmxpY0lk
ICAgICAgRE9NTm90YXRpb246OlB1YmxpY0lkICAgRG9udERlbGV0ZXxSZWFkT25seQorICBzeXN0
ZW1JZCAgICAgIERPTU5vdGF0aW9uOjpTeXN0ZW1JZCAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBl
bmQKICovCiBWYWx1ZSBET01Ob3RhdGlvbjo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3Qg
SWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMTUyNyw5ICsxNTI3LDkgQEANCiAK
IC8qIFNvdXJjZSBmb3IgRE9NRW50aXR5VGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byBy
ZWdlbmVyYXRlLgogQGJlZ2luIERPTUVudGl0eVRhYmxlIDIKLSAgcHVibGljSWQJCURPTUVudGl0
eTo6UHVibGljSWQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgc3lzdGVtSWQJCURPTUVudGl0eTo6
U3lzdGVtSWQJCURvbnREZWxldGV8UmVhZE9ubHkKLSAgbm90YXRpb25OYW1lCQlET01FbnRpdHk6
Ok5vdGF0aW9uTmFtZQlEb250RGVsZXRlfFJlYWRPbmx5CisgIHB1YmxpY0lkICAgICAgRE9NRW50
aXR5OjpQdWJsaWNJZCAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBzeXN0ZW1JZCAgICAgIERP
TUVudGl0eTo6U3lzdGVtSWQgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgbm90YXRpb25OYW1l
ICAgICAgRE9NRW50aXR5OjpOb3RhdGlvbk5hbWUgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAog
Ki8KIFZhbHVlIERPTUVudGl0eTo6dHJ5R2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRp
ZmllciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMTU2OCw3ICsxNTY4LDcgQEANCiAgICAgcmV0
ID0gbmV3IERPTURvY3VtZW50KGV4ZWMsIG4pOwogCiAgIFZhbHVlIHZhbChyZXQpOwotICAKKwog
ICAvLyBNYWtlIHN1cmUgdGhlIGRvY3VtZW50IGlzIGtlcHQgYXJvdW5kIGJ5IHRoZSB3aW5kb3cg
b2JqZWN0LCBhbmQgd29ya3MgcmlnaHQgd2l0aCB0aGUKICAgLy8gYmFjay9mb3J3YXJkIGNhY2hl
LgogICBpZiAobi52aWV3KCkpIHsKQEAgLTE1ODMsNyArMTU4Myw3IEBADQogCiBib29sIEtKUzo6
Y2hlY2tOb2RlU2VjdXJpdHkoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006Ok5vZGUmIG4pCiB7
Ci0gIGlmICghbi5oYW5kbGUoKSkgCisgIGlmICghbi5oYW5kbGUoKSkKICAgICByZXR1cm4gZmFs
c2U7CiAKICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGludGVy
cHJldGVyIGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBzcGVjaWZpZWQgbm9kZQpAQCAtMTY2MCwx
MyArMTY2MCwxMiBAQA0KIAogVmFsdWUgS0pTOjpnZXRSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgRE9NOjpOb2RlICZub2RlKQogewotI2lmICFOT0tJQV9DSEFOR0VTICAKICAg
ICBET006OkhUTUxFbGVtZW50IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxET006OkhUTUxFbGVtZW50
Pihub2RlKTsKIAogICAgIGlmICghbm9kZS5pc051bGwoKSkgewogICAgICAgICBpZiAobm9kZS5o
YW5kbGUoKS0+aWQoKSA9PSBJRF9BUFBMRVQpIHsKICAgICAgICAgICAgIERPTTo6SFRNTEFwcGxl
dEVsZW1lbnRJbXBsICphcHBsZXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NOjpIVE1MQXBwbGV0
RWxlbWVudEltcGwgKj4oZWxlbWVudC5oYW5kbGUoKSk7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgaWYgKGFwcGxldEVsZW1lbnQtPmdldEFwcGxldEluc3RhbmNlKCkpIHsKICAgICAgICAg
ICAgICAgICAvLyBUaGUgaW5zdGFuY2UgaXMgb3duZWQgYnkgdGhlIGFwcGxldCBlbGVtZW50Lgog
ICAgICAgICAgICAgICAgIFJ1bnRpbWVPYmplY3RJbXAgKmFwcGxldEltcCA9IG5ldyBSdW50aW1l
T2JqZWN0SW1wKGFwcGxldEVsZW1lbnQtPmdldEFwcGxldEluc3RhbmNlKCksIGZhbHNlKTsKQEAg
LTE2NzUsNyArMTY3NCw3IEBADQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFu
ZGxlKCktPmlkKCkgPT0gSURfRU1CRUQpIHsKICAgICAgICAgICAgIERPTTo6SFRNTEVtYmVkRWxl
bWVudEltcGwgKmVtYmVkRWxlbWVudCA9IHN0YXRpY19jYXN0PERPTTo6SFRNTEVtYmVkRWxlbWVu
dEltcGwgKj4oZWxlbWVudC5oYW5kbGUoKSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
aWYgKGVtYmVkRWxlbWVudC0+Z2V0RW1iZWRJbnN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAg
UnVudGltZU9iamVjdEltcCAqcnVudGltZUltcCA9IG5ldyBSdW50aW1lT2JqZWN0SW1wKGVtYmVk
RWxlbWVudC0+Z2V0RW1iZWRJbnN0YW5jZSgpLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIFZhbHVlKHJ1bnRpbWVJbXApOwpAQCAtMTY4MywxNCArMTY4MiwxMyBAQA0KICAgICAgICAg
fQogICAgICAgICBlbHNlIGlmIChub2RlLmhhbmRsZSgpLT5pZCgpID09IElEX09CSkVDVCkgewog
ICAgICAgICAgICAgRE9NOjpIVE1MT2JqZWN0RWxlbWVudEltcGwgKm9iamVjdEVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET006OkhUTUxPYmplY3RFbGVtZW50SW1wbCAqPihlbGVtZW50LmhhbmRsZSgp
KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAob2JqZWN0RWxlbWVudC0+Z2V0T2Jq
ZWN0SW5zdGFuY2UoKSkgewogICAgICAgICAgICAgICAgIFJ1bnRpbWVPYmplY3RJbXAgKnJ1bnRp
bWVJbXAgPSBuZXcgUnVudGltZU9iamVjdEltcChvYmplY3RFbGVtZW50LT5nZXRPYmplY3RJbnN0
YW5jZSgpLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZhbHVlKHJ1bnRpbWVJbXAp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotI2VuZGlmICAgIAogICAgIC8vIElm
IHdlIGRvbid0IGhhdmUgYSBydW50aW1lIG9iamVjdCByZXR1cm4gdGhlIGEgVmFsdWUgdGhhdCBy
ZXBvcnRzIGlzTnVsbCgpID09IHRydWUuCiAgICAgcmV0dXJuIFZhbHVlKCk7CiB9CkBAIC0xNzEw
LDE4ICsxNzA4LDE4IEBADQogY29uc3QgQ2xhc3NJbmZvIE5vZGVDb25zdHJ1Y3Rvcjo6aW5mbyA9
IHsgIk5vZGVDb25zdHJ1Y3RvciIsIDAsICZOb2RlQ29uc3RydWN0b3JUYWJsZSwgMCB9OwogLyog
U291cmNlIGZvciBOb2RlQ29uc3RydWN0b3JUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRv
IHJlZ2VuZXJhdGUuCiBAYmVnaW4gTm9kZUNvbnN0cnVjdG9yVGFibGUgMTEKLSAgRUxFTUVOVF9O
T0RFCQlET006Ok5vZGU6OkVMRU1FTlRfTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQotICBBVFRS
SUJVVEVfTk9ERQlET006Ok5vZGU6OkFUVFJJQlVURV9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5
Ci0gIFRFWFRfTk9ERQkJRE9NOjpOb2RlOjpURVhUX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkK
LSAgQ0RBVEFfU0VDVElPTl9OT0RFCURPTTo6Tm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFCURvbnRE
ZWxldGV8UmVhZE9ubHkKLSAgRU5USVRZX1JFRkVSRU5DRV9OT0RFCURPTTo6Tm9kZTo6RU5USVRZ
X1JFRkVSRU5DRV9OT0RFCURvbnREZWxldGV8UmVhZE9ubHkKLSAgRU5USVRZX05PREUJCURPTTo6
Tm9kZTo6RU5USVRZX05PREUJCURvbnREZWxldGV8UmVhZE9ubHkKKyAgRUxFTUVOVF9OT0RFICAg
ICAgRE9NOjpOb2RlOjpFTEVNRU5UX05PREUgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgQVRU
UklCVVRFX05PREUgICAgRE9NOjpOb2RlOjpBVFRSSUJVVEVfTk9ERSAgICAgICBEb250RGVsZXRl
fFJlYWRPbmx5CisgIFRFWFRfTk9ERSAgICAgRE9NOjpOb2RlOjpURVhUX05PREUgICAgICAgIERv
bnREZWxldGV8UmVhZE9ubHkKKyAgQ0RBVEFfU0VDVElPTl9OT0RFICAgIERPTTo6Tm9kZTo6Q0RB
VEFfU0VDVElPTl9OT0RFICAgRG9udERlbGV0ZXxSZWFkT25seQorICBFTlRJVFlfUkVGRVJFTkNF
X05PREUgRE9NOjpOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREUgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBFTlRJVFlfTk9ERSAgICAgICBET006Ok5vZGU6OkVOVElUWV9OT0RFICAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQogICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgRE9NOjpOb2Rl
OjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgRG9udERlbGV0ZXxSZWFkT25seQotICBDT01N
RU5UX05PREUJCURPTTo6Tm9kZTo6Q09NTUVOVF9OT0RFCQlEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IERPQ1VNRU5UX05PREUJCURPTTo6Tm9kZTo6RE9DVU1FTlRfTk9ERQkJRG9udERlbGV0ZXxSZWFk
T25seQotICBET0NVTUVOVF9UWVBFX05PREUJRE9NOjpOb2RlOjpET0NVTUVOVF9UWVBFX05PREUJ
RG9udERlbGV0ZXxSZWFkT25seQotICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIERPTTo6Tm9kZTo6
RE9DVU1FTlRfRlJBR01FTlRfTk9ERQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIE5PVEFUSU9OX05P
REUJCURPTTo6Tm9kZTo6Tk9UQVRJT05fTk9ERQkJRG9udERlbGV0ZXxSZWFkT25seQorICBDT01N
RU5UX05PREUgICAgICBET006Ok5vZGU6OkNPTU1FTlRfTk9ERSAgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBET0NVTUVOVF9OT0RFICAgICBET006Ok5vZGU6OkRPQ1VNRU5UX05PREUgICAgICAg
IERvbnREZWxldGV8UmVhZE9ubHkKKyAgRE9DVU1FTlRfVFlQRV9OT0RFICAgIERPTTo6Tm9kZTo6
RE9DVU1FTlRfVFlQRV9OT0RFICAgRG9udERlbGV0ZXxSZWFkT25seQorICBET0NVTUVOVF9GUkFH
TUVOVF9OT0RFIERPTTo6Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgRG9udERlbGV0ZXxS
ZWFkT25seQorICBOT1RBVElPTl9OT0RFICAgICBET006Ok5vZGU6Ok5PVEFUSU9OX05PREUgICAg
ICAgIERvbnREZWxldGV8UmVhZE9ubHkKIEBlbmQKICovCiBWYWx1ZSBOb2RlQ29uc3RydWN0b3I6
OnRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkg
Y29uc3QKQEAgLTE3NzcsMjEgKzE3NzUsMjEgQEANCiAKIC8qIFNvdXJjZSBmb3IgRE9NRXhjZXB0
aW9uQ29uc3RydWN0b3JUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUu
CiBAYmVnaW4gRE9NRXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZSAxNQotICBJTkRFWF9TSVpFX0VS
UgkJRE9NOjpET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSCQlEb250RGVsZXRlfFJlYWRPbmx5
Ci0gIERPTVNUUklOR19TSVpFX0VSUgkJRE9NOjpET01FeGNlcHRpb246OkRPTVNUUklOR19TSVpF
X0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIEhJRVJBUkNIWV9SRVFVRVNUX0VSUgkJRE9NOjpE
T01FeGNlcHRpb246OkhJRVJBUkNIWV9SRVFVRVNUX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IFdST05HX0RPQ1VNRU5UX0VSUgkJRE9NOjpET01FeGNlcHRpb246OldST05HX0RPQ1VNRU5UX0VS
UglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIElOVkFMSURfQ0hBUkFDVEVSX0VSUgkJRE9NOjpET01F
eGNlcHRpb246OklOVkFMSURfQ0hBUkFDVEVSX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIE5P
X0RBVEFfQUxMT1dFRF9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpOT19EQVRBX0FMTE9XRURfRVJS
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSCURPTTo6
RE9NRXhjZXB0aW9uOjpOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIJRG9udERlbGV0ZXxSZWFk
T25seQotICBOT1RfRk9VTkRfRVJSCQkJRE9NOjpET01FeGNlcHRpb246Ok5PVF9GT1VORF9FUlIJ
CURvbnREZWxldGV8UmVhZE9ubHkKLSAgTk9UX1NVUFBPUlRFRF9FUlIJCURPTTo6RE9NRXhjZXB0
aW9uOjpOT1RfU1VQUE9SVEVEX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIElOVVNFX0FUVFJJ
QlVURV9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlVTRV9BVFRSSUJVVEVfRVJSCURvbnREZWxl
dGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9TVEFURV9FUlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZB
TElEX1NUQVRFX0VSUglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIFNZTlRBWF9FUlIJCQlET006OkRP
TUV4Y2VwdGlvbjo6U1lOVEFYX0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQotICBJTlZBTElEX01P
RElGSUNBVElPTl9FUlIJRE9NOjpET01FeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
UglEb250RGVsZXRlfFJlYWRPbmx5Ci0gIE5BTUVTUEFDRV9FUlIJCQlET006OkRPTUV4Y2VwdGlv
bjo6TkFNRVNQQUNFX0VSUgkJRG9udERlbGV0ZXxSZWFkT25seQotICBJTlZBTElEX0FDQ0VTU19F
UlIJCURPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX0FDQ0VTU19FUlIJRG9udERlbGV0ZXxSZWFk
T25seQorICBJTkRFWF9TSVpFX0VSUiAgICAgICAgRE9NOjpET01FeGNlcHRpb246OklOREVYX1NJ
WkVfRVJSICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgRE9NU1RSSU5HX1NJWkVfRVJSICAg
ICAgICBET006OkRPTUV4Y2VwdGlvbjo6RE9NU1RSSU5HX1NJWkVfRVJSICAgRG9udERlbGV0ZXxS
ZWFkT25seQorICBISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpI
SUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBXUk9OR19ET0NV
TUVOVF9FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpXUk9OR19ET0NVTUVOVF9FUlIgICBE
b250RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAgRE9NOjpET01F
eGNlcHRpb246OklOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICBEb250RGVsZXRlfFJlYWRPbmx5Cisg
IE5PX0RBVEFfQUxMT1dFRF9FUlIgICAgICAgRE9NOjpET01FeGNlcHRpb246Ok5PX0RBVEFfQUxM
T1dFRF9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSICAgRE9NOjpET01FeGNlcHRpb246Ok5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgRG9u
dERlbGV0ZXxSZWFkT25seQorICBOT1RfRk9VTkRfRVJSICAgICAgICAgRE9NOjpET01FeGNlcHRp
b246Ok5PVF9GT1VORF9FUlIgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgTk9UX1NVUFBP
UlRFRF9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpOT1RfU1VQUE9SVEVEX0VSUiAgICBEb250
RGVsZXRlfFJlYWRPbmx5CisgIElOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgRE9NOjpET01FeGNl
cHRpb246OklOVVNFX0FUVFJJQlVURV9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgSU5WQUxJ
RF9TVEFURV9FUlIgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX1NUQVRFX0VSUiAgICBE
b250RGVsZXRlfFJlYWRPbmx5CisgIFNZTlRBWF9FUlIgICAgICAgICAgICBET006OkRPTUV4Y2Vw
dGlvbjo6U1lOVEFYX0VSUiAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUiAgRE9NOjpET01FeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
UiBEb250RGVsZXRlfFJlYWRPbmx5CisgIE5BTUVTUEFDRV9FUlIgICAgICAgICBET006OkRPTUV4
Y2VwdGlvbjo6TkFNRVNQQUNFX0VSUiAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBJTlZB
TElEX0FDQ0VTU19FUlIgICAgICAgIERPTTo6RE9NRXhjZXB0aW9uOjpJTlZBTElEX0FDQ0VTU19F
UlIgICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCiAqLwogCkBAIC0xODc4LDE2ICsxODc2LDE2
IEBADQogICAgICAgRE9NOjpOb2RlIG5vZGUgPSAqaXQ7CiAgICAgICBET006Ok5hbWVkTm9kZU1h
cCBhdHRyaWJ1dGVzID0gbm9kZS5hdHRyaWJ1dGVzKCk7CiAgICAgICBpZiAoYXR0cmlidXRlcy5p
c051bGwoKSkgewotCWNvbnRpbnVlOworICAgIGNvbnRpbnVlOwogICAgICAgfQogCiAgICAgICBE
T006Ok5vZGUgaWRBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oImlkIik7CiAgICAgICBp
ZiAoaWRBdHRyLmlzTnVsbCgpKSB7Ci0JY29udGludWU7CisgICAgY29udGludWU7CiAgICAgICB9
CiAKICAgICAgIGlmIChpZEF0dHIubm9kZVZhbHVlKCkgPT0gcHJvcGVydHlOYW1lLnN0cmluZygp
KSB7Ci0JcmV0dXJuIGdldERPTU5vZGUoZXhlYyxub2RlKTsKKyAgICByZXR1cm4gZ2V0RE9NTm9k
ZShleGVjLG5vZGUpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTg5OCwxOCArMTg5NiwxOCBA
QA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIERPTUNoYXJhY3RlckRh
dGE6OmluZm8gPSB7ICJDaGFyYWN0ZXJJbXAiLAotCQkJCQkgICZET01Ob2RlOjppbmZvLCAmRE9N
Q2hhcmFjdGVyRGF0YVRhYmxlLCAwIH07CisgICAgICAgICAgICAgICAgICAgICAgJkRPTU5vZGU6
OmluZm8sICZET01DaGFyYWN0ZXJEYXRhVGFibGUsIDAgfTsKIC8qCiBAYmVnaW4gRE9NQ2hhcmFj
dGVyRGF0YVRhYmxlIDIKLSAgZGF0YQkJRE9NQ2hhcmFjdGVyRGF0YTo6RGF0YQkJRG9udERlbGV0
ZQotICBsZW5ndGgJRE9NQ2hhcmFjdGVyRGF0YTo6TGVuZ3RoCURvbnREZWxldGV8UmVhZE9ubHkK
KyAgZGF0YSAgICAgIERPTUNoYXJhY3RlckRhdGE6OkRhdGEgICAgICBEb250RGVsZXRlCisgIGxl
bmd0aCAgICBET01DaGFyYWN0ZXJEYXRhOjpMZW5ndGggICAgRG9udERlbGV0ZXxSZWFkT25seQog
QGVuZAogQGJlZ2luIERPTUNoYXJhY3RlckRhdGFQcm90b1RhYmxlIDcKLSAgc3Vic3RyaW5nRGF0
YQlET01DaGFyYWN0ZXJEYXRhOjpTdWJzdHJpbmdEYXRhCURvbnREZWxldGV8RnVuY3Rpb24gMgot
ICBhcHBlbmREYXRhCURPTUNoYXJhY3RlckRhdGE6OkFwcGVuZERhdGEJRG9udERlbGV0ZXxGdW5j
dGlvbiAxCi0gIGluc2VydERhdGEJRE9NQ2hhcmFjdGVyRGF0YTo6SW5zZXJ0RGF0YQlEb250RGVs
ZXRlfEZ1bmN0aW9uIDIKLSAgZGVsZXRlRGF0YQlET01DaGFyYWN0ZXJEYXRhOjpEZWxldGVEYXRh
CURvbnREZWxldGV8RnVuY3Rpb24gMgotICByZXBsYWNlRGF0YQlET01DaGFyYWN0ZXJEYXRhOjpS
ZXBsYWNlRGF0YQlEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgc3Vic3RyaW5nRGF0YSBET01DaGFy
YWN0ZXJEYXRhOjpTdWJzdHJpbmdEYXRhIERvbnREZWxldGV8RnVuY3Rpb24gMgorICBhcHBlbmRE
YXRhICAgIERPTUNoYXJhY3RlckRhdGE6OkFwcGVuZERhdGEgICAgRG9udERlbGV0ZXxGdW5jdGlv
biAxCisgIGluc2VydERhdGEgICAgRE9NQ2hhcmFjdGVyRGF0YTo6SW5zZXJ0RGF0YSAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDIKKyAgZGVsZXRlRGF0YSAgICBET01DaGFyYWN0ZXJEYXRhOjpEZWxl
dGVEYXRhICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgorICByZXBsYWNlRGF0YSAgIERPTUNoYXJh
Y3RlckRhdGE6OlJlcGxhY2VEYXRhICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCiBAZW5kCiAqLwog
REVGSU5FX1BST1RPVFlQRSgiRE9NQ2hhcmFjdGVyRGF0YSIsRE9NQ2hhcmFjdGVyRGF0YVByb3Rv
KQpAQCAtMTkxNywxMyArMTkxNSwxMyBAQA0KIElNUExFTUVOVF9QUk9UT1RZUEVfV0lUSF9QQVJF
TlQoRE9NQ2hhcmFjdGVyRGF0YVByb3RvLERPTUNoYXJhY3RlckRhdGFQcm90b0Z1bmMsIERPTU5v
ZGVQcm90bykKIAogRE9NQ2hhcmFjdGVyRGF0YTo6RE9NQ2hhcmFjdGVyRGF0YShFeGVjU3RhdGUg
KmV4ZWMsIGNvbnN0IERPTTo6Q2hhcmFjdGVyRGF0YSAmZCkKLSA6IERPTU5vZGUoZCkgCisgOiBE
T01Ob2RlKGQpCiB7CiAgIHNldFByb3RvdHlwZShET01DaGFyYWN0ZXJEYXRhUHJvdG86OnNlbGYo
ZXhlYykpOwogfQogCiBET01DaGFyYWN0ZXJEYXRhOjpET01DaGFyYWN0ZXJEYXRhKGNvbnN0IERP
TTo6Q2hhcmFjdGVyRGF0YSAmZCkKLSA6IERPTU5vZGUoZCkgCisgOiBET01Ob2RlKGQpCiB7CiB9
CiAKQEAgLTE5NzQsOSArMTk3Miw5IEBADQogICAgICAgICBET006Ol9leGNlcHRpb25jb2RlID0g
RE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgp
OwogICAgICAgfQotI2Vsc2UgICAgICAKKyNlbHNlCiAgICAgICAgIHRocm93IERPTUV4Y2VwdGlv
bihET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSKTsKLSNlbmRpZiAgICAgICAgCisjZW5kaWYK
ICAgICAgIHJldHVybiBnZXRTdHJpbmdPck51bGwoZGF0YS5zdWJzdHJpbmdEYXRhKGFyZ3NbMF0u
dG9JbnQzMihleGVjKSwgY291bnQpKTsKICAgICB9CiAgICAgY2FzZSBET01DaGFyYWN0ZXJEYXRh
OjpBcHBlbmREYXRhOgpAQCAtMTk5Myw5ICsxOTkxLDkgQEANCiAgICAgICAgIERPTTo6X2V4Y2Vw
dGlvbmNvZGUgPSBET01FeGNlcHRpb246OklOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm4g
VW5kZWZpbmVkKCk7CiAgICAgICB9Ci0jZWxzZSAgICAgCisjZWxzZQogICAgICAgICB0aHJvdyBE
T01FeGNlcHRpb24oRE9NRXhjZXB0aW9uOjpJTkRFWF9TSVpFX0VSUik7Ci0jZW5kaWYgIAorI2Vu
ZGlmCiAgICAgICBkYXRhLmRlbGV0ZURhdGEoYXJnc1swXS50b0ludDMyKGV4ZWMpLCBjb3VudCk7
CiAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtMjAwNyw5ICsyMDA1LDkgQEAN
CiAgICAgICAgIERPTTo6X2V4Y2VwdGlvbmNvZGUgPSBET01FeGNlcHRpb246OklOREVYX1NJWkVf
RVJSOwogICAgICAgICByZXR1cm4gVW5kZWZpbmVkKCk7CiAgICAgICB9Ci0jZWxzZSAgICAgIAor
I2Vsc2UKICAgICAgICAgdGhyb3cgRE9NRXhjZXB0aW9uKERPTUV4Y2VwdGlvbjo6SU5ERVhfU0la
RV9FUlIpOwotI2VuZGlmICAKKyNlbmRpZgogICAgICAgZGF0YS5yZXBsYWNlRGF0YShhcmdzWzBd
LnRvSW50MzIoZXhlYyksIGNvdW50LCBhcmdzWzJdLnRvU3RyaW5nKGV4ZWMpLnN0cmluZygpKTsK
ICAgICAgIHJldHVybiBVbmRlZmluZWQoKTsKICAgICB9CkBAIC0yMDIxLDEwICsyMDE5LDEwIEBA
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjb25zdCBDbGFzc0luZm8gRE9NVGV4dDo6aW5mbyA9
IHsgIlRleHQiLAotCQkJCSAmRE9NQ2hhcmFjdGVyRGF0YTo6aW5mbywgMCwgMCB9OworICAgICAg
ICAgICAgICAgICAmRE9NQ2hhcmFjdGVyRGF0YTo6aW5mbywgMCwgMCB9OwogLyoKIEBiZWdpbiBE
T01UZXh0UHJvdG9UYWJsZSAxCi0gIHNwbGl0VGV4dAlET01UZXh0OjpTcGxpdFRleHQJRG9udERl
bGV0ZXxGdW5jdGlvbiAxCisgIHNwbGl0VGV4dCBET01UZXh0OjpTcGxpdFRleHQgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQogQGVuZAogKi8KIERFRklORV9QUk9UT1RZUEUoIkRPTVRleHQiLERPTVRl
eHRQcm90bykKQEAgLTIwMzIsOCArMjAzMCw4IEBADQogSU1QTEVNRU5UX1BST1RPVFlQRV9XSVRI
X1BBUkVOVChET01UZXh0UHJvdG8sRE9NVGV4dFByb3RvRnVuYyxET01DaGFyYWN0ZXJEYXRhUHJv
dG8pCiAKIERPTVRleHQ6OkRPTVRleHQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBET006OlRleHQg
JnQpCi0gIDogRE9NQ2hhcmFjdGVyRGF0YSh0KSAKLXsgCisgIDogRE9NQ2hhcmFjdGVyRGF0YSh0
KQorewogICBzZXRQcm90b3R5cGUoRE9NVGV4dFByb3RvOjpzZWxmKGV4ZWMpKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJD
b3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMjIsNiAr
MzIyLDkgQEANCiAgICwgaGlzdG9yeSgwKQogICAsIGZyYW1lcygwKQogICAsIGxvYygwKQorI2lm
ZGVmIFJEX0JST1dTRVJfV0lER0VUUworICAsIG1fd2lkZ2V0KDApCisjZW5kaWYKICAgLCBtX3Nl
bGVjdGlvbigwKQogICAsIG1fbG9jYXRpb25iYXIoMCkKICAgLCBtX21lbnViYXIoMCkKQEAgLTQ4
Myw2ICs0ODYsMTAgQEANCiAgICAgbV9zdGF0dXNiYXItPm1hcmsoKTsKICAgaWYgKG1fdG9vbGJh
ciAmJiAhbV90b29sYmFyLT5tYXJrZWQoKSkKICAgICBtX3Rvb2xiYXItPm1hcmsoKTsKKyNpZmRl
ZiBSRF9CUk9XU0VSX1dJREdFVFMKKyAgaWYgKG1fd2lkZ2V0ICYmICFtX3dpZGdldC0+bWFya2Vk
KCkpCisgICAgbV93aWRnZXQtPm1hcmsoKTsKKyNlbmRpZgogfQogCiBVU3RyaW5nIFdpbmRvdzo6
dG9TdHJpbmcoRXhlY1N0YXRlICopIGNvbnN0CkBAIC04MDcsNiArODE0LDEyIEBADQogI2VuZGlm
CiAgICAgY2FzZSBMb2NhdGlvbmJhcjoKICAgICAgIHJldHVybiBWYWx1ZShsb2NhdGlvbmJhcihl
eGVjKSk7CisjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRTCisgICAgY2FzZSBfV2lkZ2V0OgorICAg
ICAgICByZXR1cm4gVmFsdWUobV93aWRnZXQgPyBtX3dpZGdldCA6CisgICAgICAgICAgICAgICAg
ICAgKGNvbnN0X2Nhc3Q8V2luZG93Kj4odGhpcyktPm1fd2lkZ2V0ID0gS1dRKG1fcGFydCktPmNy
ZWF0ZVdpZGdldE9iamVjdChleGVjKSkpOworCisjZW5kaWYKICAgICBjYXNlIE1lbnViYXI6CiAg
ICAgICByZXR1cm4gVmFsdWUobWVudWJhcihleGVjKSk7CiAgICAgY2FzZSBPZmZzY3JlZW5CdWZm
ZXJpbmc6CkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuaAkocmV2aXNpb24gMTcwNjkpDQor
KysgV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuaAkod29ya2luZyBjb3B5KQ0KQEAgLTEw
MSwxMyArMTAxLDEzIEBADQogICAgIGJvb2wgaGFzVGltZW91dHMoKTsKICAgICBRTWFwPGludCwg
U2NoZWR1bGVkQWN0aW9uKj4gKnBhdXNlVGltZW91dHMoY29uc3Qgdm9pZCAqa2V5KTsKICAgICB2
b2lkIHJlc3VtZVRpbWVvdXRzKFFNYXA8aW50LCBTY2hlZHVsZWRBY3Rpb24qPipzYSwgY29uc3Qg
dm9pZCAqa2V5KTsKLSAgICAKKwogICAgIEtKUzo6SW50ZXJwcmV0ZXIgKmludGVycHJldGVyKCkg
Y29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBpc1NhZmVTY3JpcHQgKGNvbnN0IEtKUzo6U2NyaXB0
SW50ZXJwcmV0ZXIgKm9yaWdpbiwgY29uc3QgS0pTOjpTY3JpcHRJbnRlcnByZXRlciAqdGFyZ2V0
KTsKICNlbmRpZgogICAgIHZvaWQgc2NoZWR1bGVDbG9zZSgpOwotICAgICAgICAKKwogICAgIGJv
b2wgaXNTYWZlU2NyaXB0KEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CiAgICAgTG9jYXRpb24gKmxv
Y2F0aW9uKCkgY29uc3Q7CiAgICAgU2VsZWN0aW9uICpzZWxlY3Rpb24oKSBjb25zdDsKQEAgLTE0
MSwxMyArMTQxLDE3IEBADQogICAgICAgICAgICBTY3JlZW5Ub3AsIFNjcmVlbkxlZnQsCiAgICAg
ICAgICAgIFNjcm9sbFRvLCBTY3JvbGxYLCBTY3JvbGxZLCBNb3ZlQnksIE1vdmVUbywgUmVzaXpl
QnksIFJlc2l6ZVRvLCBTZWxmLCBfV2luZG93LCBUb3AsIF9TY3JlZW4sCiAgICAgICAgICAgIElt
YWdlLCBPcHRpb24sIEFsZXJ0LCBDb25maXJtLCBQcm9tcHQsIE9wZW4sIFByaW50LCBTZXRUaW1l
b3V0LCBDbGVhclRpbWVvdXQsCi0gICAgICAgICAgIEZvY3VzLCBHZXRTZWxlY3Rpb24sIEJsdXIs
IENsb3NlLCBTZXRJbnRlcnZhbCwgQ2xlYXJJbnRlcnZhbCwgQ2FwdHVyZUV2ZW50cywgCisgICAg
ICAgICAgIEZvY3VzLCBHZXRTZWxlY3Rpb24sIEJsdXIsIENsb3NlLCBTZXRJbnRlcnZhbCwgQ2xl
YXJJbnRlcnZhbCwgQ2FwdHVyZUV2ZW50cywKICAgICAgICAgICAgUmVsZWFzZUV2ZW50cywgQWRk
RXZlbnRMaXN0ZW5lciwgUmVtb3ZlRXZlbnRMaXN0ZW5lciwgWE1MSHR0cFJlcXVlc3QsIFhNTFNl
cmlhbGl6ZXIsIERPTVBhcnNlciwKLSAgICAgT25hYm9ydCwgT25ibHVyLCBPbmNoYW5nZSwgT25j
bGljaywgT25kYmxjbGljaywgT25kcmFnZHJvcCwgT25lcnJvciwgCisgICAgIE9uYWJvcnQsIE9u
Ymx1ciwgT25jaGFuZ2UsIE9uY2xpY2ssIE9uZGJsY2xpY2ssIE9uZHJhZ2Ryb3AsIE9uZXJyb3Is
CiAgICAgIE9uZm9jdXMsIE9ua2V5ZG93biwgT25rZXlwcmVzcywgT25rZXl1cCwgT25sb2FkLCBP
bm1vdXNlZG93biwgT25tb3VzZW1vdmUsCiAgICAgICAgICAgIE9ubW91c2VvdXQsIE9ubW91c2Vv
dmVyLCBPbm1vdXNldXAsIE9uV2luZG93TW91c2VXaGVlbCwgT25tb3ZlLCBPbnJlc2V0LCBPbnJl
c2l6ZSwgT25zY3JvbGwsIE9uc2VhcmNoLAogICAgICAgICAgICBPbnNlbGVjdCwgT25zdWJtaXQs
IE9udW5sb2FkLCBPbmJlZm9yZXVubG9hZCwKLSAgICAgICAgICAgU3RhdHVzYmFyLCBUb29sYmFy
LCBGcmFtZUVsZW1lbnQsIFNob3dNb2RhbERpYWxvZyB9OworICAgICAgICAgICBTdGF0dXNiYXIs
IFRvb2xiYXIsIEZyYW1lRWxlbWVudCwgU2hvd01vZGFsRGlhbG9nCisjaWZkZWYgTk9LSUFfQ0hB
TkdFUworICAgICAgICAgICAsX1dpZGdldAorI2VuZGlmCisgICAgICAgICAgIH07CiAgIHByb3Rl
Y3RlZDoKICAgICBWYWx1ZSBnZXRMaXN0ZW5lcihFeGVjU3RhdGUgKmV4ZWMsIGludCBldmVudElk
KSBjb25zdDsKICAgICB2b2lkIHNldExpc3RlbmVyKEV4ZWNTdGF0ZSAqZXhlYywgaW50IGV2ZW50
SWQsIFZhbHVlIGZ1bmMpOwpAQCAtMTU1LDYgKzE1OSw5IEBADQogICAgIHZvaWQgdXBkYXRlTGF5
b3V0KGJvb2wgaWdub3JlU3R5bGVzaGVldHMgPSB0cnVlKSBjb25zdDsKIAogICAgIFFHdWFyZGVk
UHRyPEtIVE1MUGFydD4gbV9wYXJ0OworI2lmZGVmIFJEX0JST1dTRVJfV0lER0VUUworICAgIE9i
amVjdEltcCAqbV93aWRnZXQ7CisjZW5kaWYKICAgICBTY3JlZW4gKnNjcmVlbjsKICAgICBIaXN0
b3J5ICpoaXN0b3J5OwogICAgIEZyYW1lQXJyYXkgKmZyYW1lczsKQEAgLTI0MSw4ICsyNDgsOCBA
QA0KICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmll
ciAmcHJvcGVydHlOYW1lLCBjb25zdCBWYWx1ZSAmdmFsdWUsIGludCBhdHRyID0gTm9uZSk7CiAg
ICAgdmlydHVhbCBWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIFR5cGUgcHJlZmVy
cmVkKSBjb25zdDsKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlICpleGVj
KSBjb25zdDsKLSAgICBlbnVtIHsgQW5jaG9yTm9kZSwgQW5jaG9yT2Zmc2V0LCBGb2N1c05vZGUs
IEZvY3VzT2Zmc2V0LCBCYXNlTm9kZSwgQmFzZU9mZnNldCwgRXh0ZW50Tm9kZSwgRXh0ZW50T2Zm
c2V0LCAKLSAgICAgICAgICAgSXNDb2xsYXBzZWQsIF9UeXBlLCBFcXVhbEVxdWFsLCBDb2xsYXBz
ZSwgQ29sbGFwc2VUb0VuZCwgQ29sbGFwc2VUb1N0YXJ0LCBFbXB0eSwgVG9TdHJpbmcsIAorICAg
IGVudW0geyBBbmNob3JOb2RlLCBBbmNob3JPZmZzZXQsIEZvY3VzTm9kZSwgRm9jdXNPZmZzZXQs
IEJhc2VOb2RlLCBCYXNlT2Zmc2V0LCBFeHRlbnROb2RlLCBFeHRlbnRPZmZzZXQsCisgICAgICAg
ICAgIElzQ29sbGFwc2VkLCBfVHlwZSwgRXF1YWxFcXVhbCwgQ29sbGFwc2UsIENvbGxhcHNlVG9F
bmQsIENvbGxhcHNlVG9TdGFydCwgRW1wdHksIFRvU3RyaW5nLAogICAgICAgICAgICBTZXRCYXNl
QW5kRXh0ZW50LCBTZXRQb3NpdGlvbiwgTW9kaWZ5IH07CiAgICAgS0hUTUxQYXJ0ICpwYXJ0KCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJ0OyB9CiAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CkluZGV4OiBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX3dpbmRvdy5sdXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9r
anNfd2luZG93Lmx1dC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEv
a2pzX3dpbmRvdy5sdXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDEwICsyOSwxMCBAQA0KICAg
IHsgIkNTU1J1bGUiLCBXaW5kb3c6OkNTU1J1bGUsIERvbnREZWxldGUsIDAsICZXaW5kb3dUYWJs
ZUVudHJpZXNbMTEyXSB9LAogICAgeyAibGVuZ3RoIiwgV2luZG93OjpMZW5ndGgsIERvbnREZWxl
dGV8UmVhZE9ubHksIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9LAorICAgeyAid2lkZ2V0
IiwgV2luZG93OjpfV2lkZ2V0LCBEb250RGVsZXRlfEZ1bmN0aW9uLCAwLCAwIH0sCiAgICB7IDAs
IDAsIDAsIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9LAogICAgeyAwLCAwLCAwLCAwLCAw
IH0sCi0gICB7IDAsIDAsIDAsIDAsIDAgfSwKICAgIHsgInByaW50IiwgV2luZG93OjpQcmludCwg
RG9udERlbGV0ZXxGdW5jdGlvbiwgMiwgJldpbmRvd1RhYmxlRW50cmllc1sxMTFdIH0sCiAgICB7
ICJvcGVuZXIiLCBXaW5kb3c6Ok9wZW5lciwgRG9udERlbGV0ZXxSZWFkT25seSwgMCwgMCB9LAog
ICAgeyAicGFyZW50IiwgV2luZG93OjpQYXJlbnQsIERvbnREZWxldGV8UmVhZE9ubHksIDAsIDAg
fSwKSW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHAJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMTk5LDcgKzE5OSw2IEBADQogfQogCiAjaWYgQVBQTEVfQ0hBTkdFUwot
I2lmICFOT0tJQV9DSEFOR0VTCiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqSFRNTEFwcGxldEVs
ZW1lbnRJbXBsOjpnZXRBcHBsZXRJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgS0hUTUxQYXJ0KiBw
YXJ0ID0gZ2V0RG9jdW1lbnQoKS0+cGFydCgpOwpAQCAtMjA4LDcgKzIwNyw3IEBADQogCiAgICAg
aWYgKGFwcGxldEluc3RhbmNlKQogICAgICAgICByZXR1cm4gYXBwbGV0SW5zdGFuY2U7Ci0KKyNp
ZiAhTk9LSUFfQ0hBTkdFUwogICAgIFJlbmRlckFwcGxldCAqciA9IHN0YXRpY19jYXN0PFJlbmRl
ckFwcGxldCo+KG1fcmVuZGVyKTsKICAgICBpZiAocikgewogICAgICAgICByLT5jcmVhdGVXaWRn
ZXRJZk5lY2Vzc2FyeSgpOwpAQCAtMjE5LDkgKzIxOCw5IEBADQogICAgICAgICAgICAgYXBwbGV0
SW5zdGFuY2UgPSBLV1EocGFydCktPmdldEFwcGxldEluc3RhbmNlRm9yVmlldygoTlNWaWV3ICop
X3ZpZXcpOwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGFwcGxldEluc3Rh
bmNlOwogfQotI2VuZGlmCiAKIHZvaWQgSFRNTEFwcGxldEVsZW1lbnRJbXBsOjpjbG9zZVJlbmRl
cmVyKCkKIHsKQEAgLTI0Myw5ICsyNDIsNyBAQA0KIAogSFRNTEVtYmVkRWxlbWVudEltcGw6OkhU
TUxFbWJlZEVsZW1lbnRJbXBsKERvY3VtZW50UHRyICpkb2MpCiAgICAgOiBIVE1MRWxlbWVudElt
cGwoZG9jKQotI2lmICFOT0tJQV9DSEFOR0VTCiAgICAgLCBlbWJlZEluc3RhbmNlKDApCi0jZW5k
aWYKIHsKICNpZiBOT0tJQV9DSEFOR0VTCiAgIG5lZWRXaWRnZXRVcGRhdGUgPSBmYWxzZTsKQEAg
LTI2MSw3ICsyNTgsNyBAQA0KICAgICByZXR1cm4gSURfRU1CRUQ7CiB9CiAKLSNpZiBBUFBMRV9D
SEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2UgKkhUTUxFbWJlZEVsZW1lbnRJbXBsOjpnZXRFbWJlZEluc3RhbmNlKCkgY29u
c3QKIHsKICAgICBLSFRNTFBhcnQqIHBhcnQgPSBnZXREb2N1bWVudCgpLT5wYXJ0KCk7CkBAIC0y
NzcsMTAgKzI3NCwxNyBAQA0KICAgICAgICAgICAgIC8vIENhbGwgaW50byB0aGUgcGFydCAoYW5k
IG92ZXIgdGhlIGJyaWRnZSkgdG8gcHVsbCB0aGUgQmluZGluZ3M6Okluc3RhbmNlCiAgICAgICAg
ICAgICAvLyBmcm9tIHRoZSBndXRzIG9mIHRoZSBKYXZhIFZNLgogICAgICAgICAgICAgdm9pZCAq
X3ZpZXcgPSByLT53aWRnZXQoKS0+Z2V0VmlldygpOworI2lmIE5PS0lBX0NIQU5HRVMKKyAgICAg
ICAgICAgIGVtYmVkSW5zdGFuY2UgPSBLV1EocGFydCktPmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3
KChNV2ViQ29yZVdpZGdldCAqKV92aWV3KTsKKyAgICAgICAgICAgIC8vIEFwcGxldCBtYXkgc3Bl
Y2lmaWVkIHdpdGggPGVtYmVkPiB0YWcuCisgICAgICAgICAgICBpZiAoIWVtYmVkSW5zdGFuY2Up
CisgICAgICAgICAgICAgICAgZW1iZWRJbnN0YW5jZSA9IEtXUShwYXJ0KS0+Z2V0QXBwbGV0SW5z
dGFuY2VGb3JWaWV3KChNV2ViQ29yZVdpZGdldCAqKV92aWV3KTsKKyNlbHNlCiAgICAgICAgICAg
ICBlbWJlZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRFbWJlZEluc3RhbmNlRm9yVmlldygoTlNW
aWV3ICopX3ZpZXcpOwogICAgICAgICAgICAgLy8gQXBwbGV0IG1heSBzcGVjaWZpZWQgd2l0aCA8
ZW1iZWQ+IHRhZy4KICAgICAgICAgICAgIGlmICghZW1iZWRJbnN0YW5jZSkKICAgICAgICAgICAg
ICAgICBlbWJlZEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRBcHBsZXRJbnN0YW5jZUZvclZpZXco
KE5TVmlldyAqKV92aWV3KTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBl
bWJlZEluc3RhbmNlOwpAQCAtNTY4LDcgKzU3Miw3IEBADQogICAgIHJldHVybiBJRF9PQkpFQ1Q7
CiB9CiAKLSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hB
TkdFUwogS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKkhUTUxPYmplY3RFbGVtZW50SW1wbDo6Z2V0
T2JqZWN0SW5zdGFuY2UoKSBjb25zdAogewogICAgIEtIVE1MUGFydCogcGFydCA9IGdldERvY3Vt
ZW50KCktPnBhcnQoKTsKQEAgLTU4MSw3ICs1ODUsMTEgQEANCiAgICAgaWYgKFJlbmRlck9iamVj
dCAqciA9IG1fcmVuZGVyKSB7CiAgICAgICAgIGlmIChyLT5pc1dpZGdldCgpKSB7CiAgICAgICAg
ICAgICBpZiAoUVdpZGdldCAqd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyV2lkZ2V0ICo+KHIp
LT53aWRnZXQoKSkgeworI2lmIE5PS0lBX0NIQU5HRVMgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKE1XZWJDb3JlV2lkZ2V0ICp2aWV3ID0gd2lkZ2V0LT5nZXRWaWV3KCkpICB7
CisjZWxzZQogICAgICAgICAgICAgICAgIGlmIChOU1ZpZXcgKnZpZXcgPSB3aWRnZXQtPmdldFZp
ZXcoKSkgIHsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGludG8gdGhlIHBh
cnQgKGFuZCBvdmVyIHRoZSBicmlkZ2UpIHRvIHB1bGwgdGhlIEJpbmRpbmdzOjpJbnN0YW5jZQog
ICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBndXRzIG9mIHRoZSBwbHVnaW4uCiAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdEluc3RhbmNlID0gS1dRKHBhcnQpLT5nZXRPYmplY3RJbnN0
YW5jZUZvclZpZXcodmlldyk7CkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3Rp
bXBsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9vYmplY3RpbXBs
LmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX29iamVjdGlt
cGwuaAkod29ya2luZyBjb3B5KQ0KQEAgLTY0LDE5ICs2NCwxNiBAQA0KICNpZiBBUFBMRV9DSEFO
R0VTCiAgICAgdmlydHVhbCBib29sIGFsbFBhcmFtc0F2YWlsYWJsZSgpOwogICAgIHZvaWQgc2V0
dXBBcHBsZXQoKSBjb25zdDsKLSNpZiAhTk9LSUFfQ0hBTkdFUworCiAgICAgS0pTOjpCaW5kaW5n
czo6SW5zdGFuY2UgKmdldEFwcGxldEluc3RhbmNlKCkgY29uc3Q7CiAjZW5kaWYKLSNlbmRpZgog
CiBwcm90ZWN0ZWQ6CiAgICAga2h0bWw6OlZBbGlnbiB2YWxpZ247CiAKIHByaXZhdGU6CiAjaWYg
QVBQTEVfQ0hBTkdFUwotI2lmICFOT0tJQV9DSEFOR0VTCiAgICAgbXV0YWJsZSBLSlM6OkJpbmRp
bmdzOjpJbnN0YW5jZSAqYXBwbGV0SW5zdGFuY2U7Ci0jZW5kaWYKICAgICBib29sIG1fYWxsUGFy
YW1zQXZhaWxhYmxlOwogI2VuZGlmCiB9OwpAQCAtMTEzLDcgKzExMCw3IEBADQogICAgIHZpcnR1
YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50SW1wbCAqZXZ0KTsKICNlbmRpZgogCi0j
aWYgQVBQTEVfQ0hBTkdFUyAmJiAhTk9LSUFfQ0hBTkdFUworI2lmIEFQUExFX0NIQU5HRVMKICAg
ICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0RW1iZWRJbnN0YW5jZSgpIGNvbnN0OwogI2Vu
ZGlmCiAKQEAgLTEyNCw3ICsxMjEsNyBAQA0KICAgYm9vbCBuZWVkV2lkZ2V0VXBkYXRlOwogICAg
IEhUTUxJbWFnZUxvYWRlciogbV9pbWFnZUxvYWRlcjsKICNlbmRpZgotI2lmIEFQUExFX0NIQU5H
RVMgJiYgIU5PS0lBX0NIQU5HRVMKKyNpZiBBUFBMRV9DSEFOR0VTCiBwcml2YXRlOgogICAgIG11
dGFibGUgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UgKmVtYmVkSW5zdGFuY2U7CiAjZW5kaWYKQEAg
LTE4Niw3ICsxODMsNyBAQA0KIAogICAgIHZvaWQgcmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CiAK
LSNpZiBBUFBMRV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwog
ICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRPYmplY3RJbnN0YW5jZSgpIGNvbnN0Owog
I2VuZGlmCiAKQEAgLTE5Nyw3ICsxOTQsNyBAQA0KICAgICBib29sIG1fdXNlRmFsbGJhY2tDb250
ZW50IDogMTsKICAgICBIVE1MSW1hZ2VMb2FkZXIqIG1faW1hZ2VMb2FkZXI7CiAKLSNpZiBBUFBM
RV9DSEFOR0VTICYmICFOT0tJQV9DSEFOR0VTCisjaWYgQVBQTEVfQ0hBTkdFUwogcHJpdmF0ZToK
ICAgICBtdXRhYmxlIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpvYmplY3RJbnN0YW5jZTsKICNl
bmRpZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYkNv
cmUva3dxL0tXUUtIVE1MUGFydC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02Miw2ICs2Miw4IEBA
DQogI2luY2x1ZGUgImtqc193aW5kb3cuaCIKICNlbmRpZgogCisjaW5jbHVkZSAicHJvdGVjdC5o
IgorI2luY2x1ZGUgImtqc193aW5kb3cuaCIKICNpbmNsdWRlICJyZW5kZXJfY2FudmFzLmgiCiAj
aW5jbHVkZSAicmVuZGVyX2ZyYW1lcy5oIgogI2luY2x1ZGUgInJlbmRlcl9pbWFnZS5oIgpAQCAt
MjE5LDEwICsyMjEsOSBAQA0KICAgICAsIF91c2VzSW5hY3RpdmVUZXh0QmFja2dyb3VuZENvbG9y
KGZhbHNlKQogICAgICwgX3Nob3dzRmlyc3RSZXNwb25kZXIodHJ1ZSkKICAgICAsIF9kcmF3U2Vs
ZWN0aW9uT25seShmYWxzZSkKLSNpZiAhS0hUTUxfTk9fU0NSSVBUSU5HCi0vLyAgICAsIF9iaW5k
aW5nUm9vdCgwKQorICAgICwgX3dpbmRvd1NjcmlwdE5QT2JqZWN0KDApCisgICAgLCBfYmluZGlu
Z1Jvb3QoMCkKICAgICAsIF93aW5kb3dTY3JpcHRPYmplY3QoMCkKLSNlbmRpZgogLy8gICAgLCBf
ZHJhZ1NyYygwKQogLy8gICAgLCBfZHJhZ0NsaXBib2FyZCgwKQogICAgICwgX2VsZW1lbnRUb0Ry
YXcoMCkKQEAgLTc0OSw3ICs3NTAsNyBAQA0KICAgICAvLyBGSVhNRTogRnJhbWUgdGFyZ2V0aW5n
IGlzIG9ubHkgb25lIG9mIHRoZSB3YXlzIHRoZSBzdWJtaXNzaW9uIGNvdWxkIGVuZCB1cCBkb2lu
ZyBzb21ldGhpbmcgb3RoZXIKICAgICAvLyB0aGFuIHJlcGxhY2luZyB0aGlzIGZyYW1lJ3MgY29u
dGVudCwgc28gdGhpcyBjaGVjayBpcyBmbGF3ZWQuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgY2hl
Y2sgaXMgaGFyZGx5CiAgICAgLy8gbmVlZGVkIGFueSBtb3JlIG5vdyB0aGF0IHdlIHJlc2V0IF9z
dWJtaXR0ZWRGb3JtVVJMIG9uIGVhY2ggbW91c2Ugb3Iga2V5IGRvd24gZXZlbnQuCi0gICAgCisK
ICAgICBDV2ViQ29yZUJyaWRnZSAqdGFyZ2V0ID0gYXJncy5mcmFtZU5hbWUuaXNFbXB0eSgpID8g
X2JyaWRnZSA6IF9icmlkZ2UtPkNsaWVudCgpLkZpbmRGcmFtZU5hbWVkKGFyZ3MuZnJhbWVOYW1l
LkRlcygpKTsKICAgICBLSFRNTFBhcnQgKnRhcmdldFBhcnQgPSB0YXJnZXQtPlBhcnQoKTsKICAg
ICBib29sIHdpbGxSZXBsYWNlVGhpc0ZyYW1lID0gZmFsc2U7CkBAIC03NTksNyArNzYwLDcgQEAN
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmICh3
aWxsUmVwbGFjZVRoaXNGcmFtZSkgewogICAgICAgICBpZiAoX3N1Ym1pdHRlZEZvcm1VUkwgPT0g
dXJsKSB7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjYwLDggKzEyNjEsNyBAQA0KICAgfQog
fQogCi0jaWYgIUtIVE1MX05PX1NDUklQVElORwotLypLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0
ICpLV1FLSFRNTFBhcnQ6OmJpbmRpbmdSb290T2JqZWN0KCkKK0tKUzo6QmluZGluZ3M6OlJvb3RP
YmplY3QgKktXUUtIVE1MUGFydDo6YmluZGluZ1Jvb3RPYmplY3QoKQogewogICAgIGlmICghX2Jp
bmRpbmdSb290KSB7CiAgICAgICAgIF9iaW5kaW5nUm9vdCA9IG5ldyBLSlM6OkJpbmRpbmdzOjpS
b290T2JqZWN0KDApOyAgICAvLyBUaGUgcm9vdCBnZXRzIGRlbGV0ZWQgYnkgSmF2YVNjcmlwdENv
cmUuCkBAIC0xMjczLDcgKzEyNzMsOCBAQA0KICAgICByZXR1cm4gX2JpbmRpbmdSb290OwogfQog
Ci1XZWJTY3JpcHRPYmplY3QgKktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0T2JqZWN0KCkKKwor
LypXZWJTY3JpcHRPYmplY3QgKktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0T2JqZWN0KCkKIHsK
ICAgICBpZiAoIV93aW5kb3dTY3JpcHRPYmplY3QpIHsKICAgICAgICAgS0pTOjpPYmplY3RJbXAg
KndpbiA9IHN0YXRpY19jYXN0PEtKUzo6T2JqZWN0SW1wICo+KEtKUzo6V2luZG93OjpyZXRyaWV2
ZVdpbmRvdyh0aGlzKSk7CkBAIC0xMjgyLDcgKzEyODMsNiBAQA0KIAogICAgIHJldHVybiBfd2lu
ZG93U2NyaXB0T2JqZWN0OwogfSovCi0jZW5kaWYKIAogdm9pZCBLV1FLSFRNTFBhcnQ6OnBhcnRD
bGVhcmVkSW5CZWdpbigpCiB7CkBAIC0yOTU5LDQ2ICsyOTU5LDQ2IEBADQogCiB2b2lkIEtXUUtI
VE1MUGFydDo6Z2V0UmVuZGVyVGV4dFJlY3RBcnJheShjb25zdCBURGVzQyYgYVRleHRFbnRyeSwg
Y29uc3QgRE9NOjpOb2RlJiBhTm9kZSwgUkFycmF5PFRSZWN0PiYgYUVudHJ5UmVjdExpc3QpCiB7
Ci0gIAotICAgIFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZzo6RnJvbURlcyhhVGV4dEVudHJ5KTsg
ICAgCi0gICAgCisKKyAgICBRU3RyaW5nIHRhcmdldCA9IFFTdHJpbmc6OkZyb21EZXMoYVRleHRF
bnRyeSk7CisKICAgICBjb25zdCBsb25nIHN0YXJ0ID0gMDsKLSAgUmVuZGVyVGV4dCogdGV4dFJl
bmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihhTm9kZS5oYW5kbGUoKS0+cmVuZGVy
ZXIoKSk7ICAgICAgICAgICAKKyAgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gc3RhdGljX2Nh
c3Q8UmVuZGVyVGV4dCAqPihhTm9kZS5oYW5kbGUoKS0+cmVuZGVyZXIoKSk7CiAgIGNvbnN0IGxv
bmcgb2Zmc2V0ID0gdGV4dFJlbmRlcmVyLT5sZW5ndGgoKTsKLSAgICBSYW5nZSBzZWFyY2hSYW5n
ZShhTm9kZSwgc3RhcnQsIGFOb2RlLCBvZmZzZXQpOyAgICAgCi0gICAgICAgIAorICAgIFJhbmdl
IHNlYXJjaFJhbmdlKGFOb2RlLCBzdGFydCwgYU5vZGUsIG9mZnNldCk7CisKICAgICBSYW5nZSBy
ZXN1bHRSYW5nZSA9IGtodG1sOjpmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRy
dWUsIHRydWUpOwogCiAgIHdoaWxlICghcmVzdWx0UmFuZ2UuY29sbGFwc2VkKCkpCiAgICAgewot
ICAgICAgICAKKwogICAgIHNldFNlbGVjdGlvbihraHRtbDo6U2VsZWN0aW9uKHJlc3VsdFJhbmdl
LCBraHRtbDo6RE9XTlNUUkVBTSwga2h0bWw6OlNFTF9QUkVGRVJfVVBTVFJFQU1fQUZGSU5JVFkp
LCBmYWxzZSk7Ci0gICAgCi0gICAgCi0gICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNO
b3ROdWxsKCkpIAorCisKKyAgICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwo
KSkKICAgICAgIHsKLSAgICAgIGlmIChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVu
ZGVyZXIoKSAmJiBkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNU
ZXh0KCkpICAgICAgICAgICAgIAorICAgICAgaWYgKGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9k
ZSgpLT5yZW5kZXJlcigpICYmIGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJl
cigpLT5pc1RleHQoKSkKICAgICAgICAgewotICAgICAgICAvL2dldCB0aGUgc2VsZWN0aW9uIHJl
Y3QgICAgCi0gICAgICAgIFJlbmRlclRleHQgKnJ0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAq
PihkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSk7ICAgICAgCi0gICAg
ICAgICAgICAgIGlmIChydCkgCisgICAgICAgIC8vZ2V0IHRoZSBzZWxlY3Rpb24gcmVjdAorICAg
ICAgICBSZW5kZXJUZXh0ICpydCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9zZWxl
Y3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgICBpZiAocnQp
CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgUVJlY3QgclNlbGVjdGlvbiA9
IHJ0LT5zZWxlY3Rpb25SZWN0KCk7Ci0gICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVMaXN0
LT5hcHBlbmQoclNlbGVjdGlvbik7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
X2ZvY3VzYWJsZU5vZGVMaXN0LT5hcHBlbmQoclNlbGVjdGlvbik7CiAgICAgICAgICAgICAgICAg
ICBhRW50cnlSZWN0TGlzdC5BcHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rp
b24udG9wKCksIHJTZWxlY3Rpb24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20oKSkpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgfSAgICAgCi0gICAgICAKLSAgICAKLSAg
ICAgICAgc2VhcmNoUmFuZ2Uuc2V0U3RhcnQoYU5vZGUsIHJlc3VsdFJhbmdlLmVuZE9mZnNldCgp
KTsgICAgICAgICAgICAgCisgICAgICB9CisKKworICAgICAgICBzZWFyY2hSYW5nZS5zZXRTdGFy
dChhTm9kZSwgcmVzdWx0UmFuZ2UuZW5kT2Zmc2V0KCkpOwogICAgICAgICBzZWFyY2hSYW5nZS5z
ZXRFbmQoYU5vZGUsIG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgCi0gICAgICByZXN1
bHRSYW5nZSA9IGtodG1sOjpmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQsIHRydWUs
IHRydWUpOyAgICAKLSAgICB9ICAgCiAKKyAgICAgIHJlc3VsdFJhbmdlID0ga2h0bWw6OmZpbmRQ
bGFpblRleHQoc2VhcmNoUmFuZ2UsIHRhcmdldCwgdHJ1ZSwgdHJ1ZSk7CisgICAgfQorCiAgICAg
Y2xlYXJTZWxlY3Rpb24oKTsKLSAgICAgIAorCiB9CiAKIC8qCkBAIC0zMDA5LDUyICszMDA5LDUy
IEBADQogICAgICAgewogICAgICAgICBkLT5tX2ZpcnN0Rm91bmQgPSBkLT5tX3NlbGVjdGlvbjsK
ICAgICAgIH0KLSAgICBlbHNlIAotICAgICAgeyAgICAgICAgCisgICAgZWxzZQorICAgICAgewog
ICAgICAgICBkLT5tX2ZpcnN0Rm91bmQgPSBraHRtbDo6U2VsZWN0aW9uKCk7CiAgICAgICB9Ci0g
ICAgCisKICAga2h0bWw6OlNlbGVjdGlvbiBmaXJzdEZvdW5kKGQtPm1fZmlyc3RGb3VuZCk7CiAg
IGtodG1sOjpTZWxlY3Rpb24gbGFzdEZvdW5kKGQtPm1fbGFzdEZvdW5kKTsKICAga2h0bWw6OlNl
bGVjdGlvbiBjdXJzZWxlY3Rpb24oZC0+bV9zZWxlY3Rpb24pOwogCiAKICAgICBUSW50IHJlc3Vs
dCA9IEZpbmRTdHJpbmcoYVRleHRFbnRyeSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gIAor
CiAgIHdoaWxlIChyZXN1bHQgPT0gVEJyQ3RsRGVmczo6RUZpbmRNYXRjaCkKICAgICB7CiAKLSAg
ICBpZiAoZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSkgCisgICAgaWYgKGQtPm1f
c2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkpCiAgICAgICB7Ci0gICAgICBpZiAoZC0+bV9z
ZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZC0+bV9zZWxlY3Rpb24uc3Rh
cnQoKS5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGV4dCgpKSAgICAgICAgICAgICAKKyAgICAgIGlm
IChkLT5tX3NlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkLT5tX3NlbGVj
dGlvbi5zdGFydCgpLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpCiAgICAgICAgIHsKLSAg
ICAgICAgLy9nZXQgdGhlIHNlbGVjdGlvbiByZWN0ICAgIAotICAgICAgICBSZW5kZXJUZXh0ICpy
dCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4oZC0+bV9zZWxlY3Rpb24uc3RhcnQoKS5ub2Rl
KCktPnJlbmRlcmVyKCkpOyAgICAgIAotICAgICAgICAgICAgICBpZiAocnQpIAorICAgICAgICAv
L2dldCB0aGUgc2VsZWN0aW9uIHJlY3QKKyAgICAgICAgUmVuZGVyVGV4dCAqcnQgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJUZXh0ICo+KGQtPm1fc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5yZW5kZXJl
cigpKTsKKyAgICAgICAgICAgICAgaWYgKHJ0KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgIFFSZWN0IHJTZWxlY3Rpb24gPSBydC0+c2VsZWN0aW9uUmVjdCgpOwogCiAgICAg
ICAgICAgYm9vbCBiRXhpc3RzID0gRUZhbHNlOwotICAgICAgICAgICAgZm9yKGludCBpID0gMDtp
IDwgX2ZvY3VzYWJsZU5vZGVMaXN0LT5jb3VudCgpO2krKykgCisgICAgICAgICAgICBmb3IoaW50
IGkgPSAwO2kgPCBfZm9jdXNhYmxlTm9kZUxpc3QtPmNvdW50KCk7aSsrKQogICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgUVJlY3QgbnIgPSBfZm9jdXNhYmxlTm9kZUxpc3QtPm9wZXJh
dG9yW10oaSk7CiAgICAgICAgICAgICAgICAgaWYoIW5yLmludGVyc2VjdHMoclNlbGVjdGlvbikp
Ci0gICAgICAgICAgICAgICAgICB7ICAgICAKKyAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgIGJFeGlzdHMgPSBFVHJ1ZTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAKKwogICAgICAgICAgIGlmICghYkV4aXN0cykKLSAg
ICAgICAgICAgIHsgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgX2ZvY3VzYWJsZU5vZGVM
aXN0LT5hcHBlbmQoclNlbGVjdGlvbik7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICBfZm9jdXNhYmxlTm9kZUxpc3QtPmFwcGVuZChyU2VsZWN0aW9u
KTsKICAgICAgICAgICAgIH0KLSAgICAgIAorCiAgICAgICAgICAgICAgICAgICBhRW50cnlSZWN0
TGlzdC5BcHBlbmQoVFJlY3QoclNlbGVjdGlvbi5sZWZ0KCksIHJTZWxlY3Rpb24udG9wKCksIHJT
ZWxlY3Rpb24ucmlnaHQoKSwgclNlbGVjdGlvbi5ib3R0b20oKSkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgfQotICAgICAgCisKICAgICByZXN1bHQgPSBGaW5kU3RyaW5n
KGFUZXh0RW50cnksIHRydWUsIHRydWUsIHRydWUsIHRydWUpOwogICAgIH0KIApAQCAtMzA2Miw3
ICszMDYyLDcgQEANCiAgIGQtPm1fZmlyc3RGb3VuZCA9IGZpcnN0Rm91bmQ7CiAgIGQtPm1fbGFz
dEZvdW5kID0gbGFzdEZvdW5kOwogICBkLT5tX3NlbGVjdGlvbiA9IGN1cnNlbGVjdGlvbjsKLSAg
ICAgICAgCisKIH0KICovCiAvLyByZXR1cm5zIE5TUmVjdCBiZWNhdXNlIGdvaW5nIHRocm91Z2gg
UVJlY3Qgd291bGQgdHJ1bmNhdGUgYW55IGZsb2F0cwpAQCAtMzM1NiwyMyArMzM1NiwyMSBAQA0K
ICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYKIAogdm9pZCBLV1FLSFRNTFBhcnQ6OmFk
ZFBsdWdpblJvb3RPYmplY3QoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdCkK
IHsKICAgICByb290T2JqZWN0cy5hcHBlbmQgKHJvb3QpOwogfQotI2VuZGlmCiAKIHZvaWQgS1dR
S0hUTUxQYXJ0OjpjbGVhbnVwUGx1Z2luUm9vdE9iamVjdHMoKQogewogLy8gIyMjIE5PVCBJTVBM
RU1FTlRFRCBzY3JpcHRpbmcsIHBsdWdpbnMKLS8qCiAgICAgS0pTOjpCaW5kaW5nczo6Um9vdE9i
amVjdCAqcm9vdDsKICAgICB3aGlsZSAoKHJvb3QgPSByb290T2JqZWN0cy5nZXRMYXN0KCkpKSB7
CiAgICAgICAgIHJvb3QtPnJlbW92ZUFsbE5hdGl2ZVJlZmVyZW5jZXMgKCk7CiAgICAgICAgIHJv
b3RPYmplY3RzLnJlbW92ZUxhc3QoKTsKICAgICB9Ci0qLwogfQogCiAKQEAgLTM3OTMsNyArMzc5
MSw3IEBADQogICAgICAgICAgIFFQb2ludCBucCA9IG5lYXJlc3RQb2ludEluUmVjdChfY3Vyc29y
UG9zaXRpb24saW50ZXJzZWN0UmVjdCk7CiAgICAgICAgICAgaW50IHggPSAobnAueCgpIC0gX2N1
cnNvclBvc2l0aW9uLngoKSk7CiAgICAgICAgICAgaW50IHkgPSAobnAueSgpIC0gX2N1cnNvclBv
c2l0aW9uLnkoKSk7Ci0gICAgICAgICAgCisKICAgICAgICAgICBpZihsciAhPSAwICYmIEFicyh5
KSA+IHZpZXcoKS0+dmlzaWJsZUhlaWdodCgpLzQpIGNvbnRpbnVlOwogCiAgICAgICAgICAgaWYo
IWZvY3VzUmFuZ2UuaXNFbXB0eSgpICYmICFmb2N1c1JlY3QuaXNFbXB0eSgpKSB7CkBAIC0zOTgy
LDcgKzM5ODAsNyBAQA0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihmb2N1c1Jl
Y3QuaXNFbXB0eSgpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgCisKICAgICAgICBmb2N1c2VkRnJh
bWVQYXJ0LT5icmlkZ2UoKS0+UG9pbnRlckV2ZW50KFRQb2ludGVyRXZlbnQ6OkVNb3ZlLGZvY3Vz
UmVjdC5jZW50ZXIoKS5Qb2ludCgpKTsKIAogICAgICAgIFFSZWN0IHZpZXdSZWN0KGZvY3VzZWRG
cmFtZVBhcnQtPnZpZXcoKS0+Y29udGVudHNYKCksZm9jdXNlZEZyYW1lUGFydC0+dmlldygpLT5j
b250ZW50c1koKSwKQEAgLTQwNjQsNCArNDA2MiwzOCBAQA0KICAgICAvLyBSZXNldCB0aGUgbXVs
dGlwbGUgZm9ybSBzdWJtaXNzaW9uIHByb3RlY3Rpb24gY29kZS4KICAgICAvLyBXZSdsbCBsZXQg
eW91IHN1Ym1pdCB0aGUgc2FtZSBmb3JtIHR3aWNlIGlmIHlvdSBkbyB0d28gc2VwYXJhdGUgdXNl
ciBhY3Rpb25zLgogICAgIF9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOwotfQ0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlDQorfQorCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUworS0pT
OjpPYmplY3RJbXAqIEtXUUtIVE1MUGFydDo6Y3JlYXRlV2lkZ2V0T2JqZWN0KEtKUzo6RXhlY1N0
YXRlKiBleGVjKQoreworICAgIEtKUzo6T2JqZWN0SW1wKiBvYmpJbXBsID0gc3RhdGljX2Nhc3Q8
S0pTOjpPYmplY3RJbXAgKj4oX2JyaWRnZS0+Q2xpZW50KCkuY3JlYXRlV2lkZ2V0T2JqZWN0KCh2
b2lkKiApZXhlYykpOworICAgIHJldHVybiBvYmpJbXBsOworfQorI2VuZGlmCisKK0tKUzo6Qmlu
ZGluZ3M6Okluc3RhbmNlICpLV1FLSFRNTFBhcnQ6OmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3IChN
V2ViQ29yZVdpZGdldCAqYVZpZXcpCit7CisgICAgcmV0dXJuIGdldE9iamVjdEluc3RhbmNlRm9y
VmlldyhhVmlldyk7Cit9CisKK0tKUzo6QmluZGluZ3M6Okluc3RhbmNlICpLV1FLSFRNTFBhcnQ6
OmdldE9iamVjdEluc3RhbmNlRm9yVmlldyAoTVdlYkNvcmVXaWRnZXQgKmFWaWV3KQoreworICAg
IHZvaWQqIG9iamVjdCA9IGFWaWV3LT5QbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCk7CisgICAgaWYg
KG9iamVjdCkgeworICAgICAgICAvL0tKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKmV4ZWN1dGlv
bkNvbnRleHQgPSBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0OjpmaW5kUm9vdE9iamVjdEZvck5h
dGl2ZUhhbmRsZUZ1bmN0aW9uICgpKGFWaWV3KTsKKyAgICAgICAgLy9yZXR1cm4gS0pTOjpCaW5k
aW5nczo6SW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5ndWFnZUluc3RhbmNlIChLSlM6OkJp
bmRpbmdzOjpJbnN0YW5jZTo6Q0xhbmd1YWdlLCBvYmplY3QsIGV4ZWN1dGlvbkNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JM
YW5ndWFnZUluc3RhbmNlIChLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Q0xhbmd1YWdlLCBvYmpl
Y3QpOworICAgIH0KK30KKworTlBPYmplY3QgKktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0TlBP
YmplY3QoKQoreworICAgIGlmICghX3dpbmRvd1NjcmlwdE5QT2JqZWN0KSB7CisgICAgICAgIEtK
Uzo6T2JqZWN0SW1wICp3aW4gPSBzdGF0aWNfY2FzdDxLSlM6Ok9iamVjdEltcCAqPihLSlM6Oldp
bmRvdzo6cmV0cmlldmVXaW5kb3codGhpcykpOworICAgICAgICBfd2luZG93U2NyaXB0TlBPYmpl
Y3QgPSBfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoMCwgd2luLCBiaW5kaW5nUm9vdE9iamVjdCgp
LCBiaW5kaW5nUm9vdE9iamVjdCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gX3dpbmRvd1Njcmlw
dE5QT2JqZWN0OworfQorCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5oCShyZXZpc2lvbiAxNzA2OSkNCisr
KyBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM0LDYgKzM0
LDcgQEANCiAjaW5jbHVkZSAiZG9tX25vZGVpbXBsLmgiCiAjaW5jbHVkZSAiaHRtbF9mb3JtaW1w
bC5oIgogI2luY2x1ZGUgImh0bWxfdGFibGVpbXBsLmgiCisjaW5jbHVkZSAib2JqZWN0LmgiCiAK
ICNpbmNsdWRlICJXZWJDb3JlS2V5Ym9hcmRBY2Nlc3MuaCIKICNpbmNsdWRlICJXZWJDb3JlS2V5
VmFsdWVQYWlyLmgiCkBAIC00MSw2ICs0Miw5IEBADQogCiAjaW5jbHVkZSA8ZTMyYmFzZS5oPgog
I2luY2x1ZGUgPHczMnN0ZC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZS5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL05QX2pzb2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvcnVudGltZS5oPgogCiAjaW5jbHVkZSAiS1dRRGljdC5oIgogI2luY2x1ZGUg
IktXUUNsaXBib2FyZC5oIgpAQCAtNTgsNiArNjIsNyBAQA0KICAgICBjbGFzcyBTYXZlZFByb3Bl
cnRpZXM7CiAgICAgY2xhc3MgU2F2ZWRCdWlsdGluczsKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rp
b247CisgICAgY2xhc3MgUHJvdGVjdGVkVmFsdWU7CiB9CiAKIGNsYXNzIENXZWJDb3JlQnJpZGdl
OwpAQCAtMjAzLDcgKzIwOCw3IEBADQogCiAgICAgUVJlY3Qgc2VsZWN0aW9uUmVjdCgpIGNvbnN0
OwogICAgIHZvaWQgZ2V0UmVuZGVyVGV4dFJlY3RBcnJheShjb25zdCBURGVzQyYgYVRleHRFbnRy
eSwgY29uc3QgRE9NOjpOb2RlJiBhTm9kZSwgUkFycmF5PFRSZWN0PiYgYUVudHJ5UmVjdExpc3Qp
OwotICAgIAorCiAvLyAgICBOU1JlY3QgdmlzaWJsZVNlbGVjdGlvblJlY3QoKSBjb25zdDsKIC8v
ICAgIE5TSW1hZ2UgKnNlbGVjdGlvbkltYWdlKCkgY29uc3Q7CiAvLyAgICBOU0ltYWdlICpzbmFw
c2hvdERyYWdJbWFnZShET006Ok5vZGUgbm9kZSwgTlNSZWN0ICppbWFnZVJlY3QsIE5TUmVjdCAq
ZWxlbWVudFJlY3QpIGNvbnN0OwpAQCAtMjIyLDYgKzIyNyw5IEBADQogICAgIGJvb2wgS2V5RXZl
bnQoY29uc3QgVEtleUV2ZW50JiBldmVudCwgYm9vbCB1cCk7CiAgICAgLy9ib29sIExhc3RFdmVu
dElzTW91c2VVcCgpOwogCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUworICAgIEtKUzo6T2Jq
ZWN0SW1wKiBjcmVhdGVXaWRnZXRPYmplY3QoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpIDsKKyNlbmRp
ZiAvL1JEX0JST1dTRVJfV0lER0VUUwogCiAgICAgLy9NZXRob2RzIHRvIHVwZGF0ZSBmb2N1c2Fi
bGUgbm9kZSBsaXN0CiAgICAgdm9pZCB1cGRhdGVGb2N1c2FibGVSZWN0TGlzdCgpOwpAQCAtMjg5
LDkgKzI5NywxMyBAQA0KICAgICB2b2lkIGRpZFRlbGxCcmlkZ2VBYm91dExvYWQoY29uc3QgUVN0
cmluZyAmdXJsU3RyaW5nKTsKICAgICBib29sIGhhdmVUb2xkQnJpZGdlQWJvdXRMb2FkKGNvbnN0
IFFTdHJpbmcgJnVybFN0cmluZyk7CiAKLS8vICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpn
ZXRFbWJlZEluc3RhbmNlRm9yVmlldyAoTlNWaWV3ICphVmlldyk7Ci0vLyAgICBLSlM6OkJpbmRp
bmdzOjpJbnN0YW5jZSAqZ2V0QXBwbGV0SW5zdGFuY2VGb3JWaWV3IChOU1ZpZXcgKmFWaWV3KTsK
LS8vICAgIHZvaWQgYWRkUGx1Z2luUm9vdE9iamVjdChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290
T2JqZWN0ICpyb290KTsKKyAgICBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZSAqZ2V0RW1iZWRJbnN0
YW5jZUZvclZpZXcgKE1XZWJDb3JlV2lkZ2V0ICphVmlldyk7CisgICAgS0pTOjpCaW5kaW5nczo6
SW5zdGFuY2UgKmdldE9iamVjdEluc3RhbmNlRm9yVmlldyhNV2ViQ29yZVdpZGdldCAqYVZpZXcp
OworICAgIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpnZXRBcHBsZXRJbnN0YW5jZUZvclZpZXcg
KE1XZWJDb3JlV2lkZ2V0ICopIHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIGFkZFBsdWdpblJvb3RP
YmplY3QoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqcm9vdCk7CisgICAgS0pTOjpC
aW5kaW5nczo6Um9vdE9iamVjdCAqYmluZGluZ1Jvb3RPYmplY3QoKTsKKyAgICBLSlM6OkJpbmRp
bmdzOjpSb290T2JqZWN0ICpleGVjdXRpb25Db250ZXh0Rm9yRE9NKCk7CisgICAgTlBPYmplY3Qg
KndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAgICAgdm9pZCBjbGVhbnVwUGx1Z2luUm9vdE9iamVj
dHMoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhjb25zdCBraHRtbDo6RWRp
dENvbW1hbmRQdHIgJik7CkBAIC00MjcsOSArNDM5LDEwIEBADQogCiAgICAgZnJpZW5kIGNsYXNz
IEtIVE1MUGFydDsKIAotLy8gICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqX2JpbmRpbmdS
b290OyAgLy8gVGhlIHJvb3Qgb2JqZWN0IHVzZWQgZm9yIG9iamVjdHMKKyAgICBLSlM6OkJpbmRp
bmdzOjpSb290T2JqZWN0ICpfYmluZGluZ1Jvb3Q7ICAvLyBUaGUgcm9vdCBvYmplY3QgdXNlZCBm
b3Igb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBib3VuZCBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgcGx1Z2luLgotLy8gICAgUVB0ckxpc3Q8
S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gcm9vdE9iamVjdHM7CisgICAgTlBPYmplY3QgKl93
aW5kb3dTY3JpcHROUE9iamVjdDsKKyAgICBRUHRyTGlzdDxLSlM6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0PiByb290T2JqZWN0czsKICAgICBDV2ViU2NyaXB0T2JqZWN0ICpfd2luZG93U2NyaXB0T2Jq
ZWN0OwogCiAgICAgRE9NOjpOb2RlIF9kcmFnU3JjOyAgICAgLy8gZWxlbWVudCB0aGF0IG1heSBi
ZSBhIGRyYWcgc291cmNlLCBmb3IgdGhlIGN1cnJlbnQgbW91c2UgZ2VzdHVyZQpJbmRleDogV2Vi
S2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jy
b3dzZXJDb250cm9sL2luYy9CckN0bC5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvQnJv
d3NlckNvbnRyb2wvaW5jL0JyQ3RsLmgJKHdvcmtpbmcgY29weSkNCkBAIC02NDksNiArNjQ5LDE1
IEBADQogICAgICAgICAqLw0KICAgICAgICAgSU1QT1JUX0MgVEJyQ3RsRGVmczo6VEJyQ3RsRmlu
ZFJlc3BvbnNlIEZpbmRLZXl3b3JkQWdhaW4oIFRCb29sIGFGb3dhcmREaXJlY3Rpb24gKTsNCiAN
CisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIENy
ZWF0ZXMgdGhlIHdpZGdldCBleHRlbnNpb24gb2JqZWN0DQorICAgICAgICAqIEBzaW5jZSAzLjIN
CisgICAgICAgICogQHJldHVybiBNV2lkZ2V0RXh0ZW5zaW9uDQorICAgICAgICAqLw0KKyAgICAg
ICAgSU1QT1JUX0MgTVdpZGdldEV4dGVuc2lvbiogQ3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTChNV2lk
Z2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjaykgOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lE
R0VUUw0KKw0KICAgICBwdWJsaWM6IC8vIGZyb20gTUJyQ3RsTG9hZEV2ZW50T2JzZXJ2ZXINCiAN
CiAgICAgICAgIHZvaWQgSGFuZGxlQnJvd3NlckxvYWRFdmVudEwoIFRCckN0bERlZnM6OlRCckN0
bExvYWRFdmVudCBhQnJDdGxMb2FkRXZlbnQsDQpAQCAtNzIzLDYgKzczMiw3IEBADQogICAgICAg
ICAqLw0KICAgICAgICAgVEJvb2wgU2VuZENvbW1hbmRzVG9DbGllbnQoVEJyQ3RsRGVmczo6VEJy
Q3RsQ2xpZW50Q29tbWFuZHMgYUNvbW1hbmQsIGNvbnN0IENBcnJheUZpeDxUUHRyQz4mIGFBdHRy
aWJ1dGVzTmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENBcnJheUZpeDxUUHRyQz4mIGFBdHRyaWJ1dGVWYWx1ZXMpOw0KKw0KICAgICBwcm90ZWN0ZWQ6
ICAvLyBGdW5jdGlvbnMgZnJvbSBDQ29lQ29udHJvbA0KIA0KICAgICAgICAgLyoqDQpJbmRleDog
V2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bERlZnMuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxEZWZzLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysr
IFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxEZWZzLmgJKHdvcmtpbmcgY29weSkNCkBA
IC02MDMsNyArNjAzLDcgQEANCiANCiAgICAgICAgICAgICBFRWxlbWVudE1vdXNlQnV0dG9uTGlz
dGVuZXIsIC8vLzwgQSBNb3VzZSBidXR0b24gbGlzdGVuZXINCiAgICAgICAgICAgICBFRWxlbWVu
dFNjcm9sbEJhciwgICAgLy8vPCBBIHNjcm9sbCBiYXINCi0gICAgICAgICAgICANCisNCiAgICAg
ICAgICAgICBFRWxlbWVudFNtYXJ0TGlua1RlbCwgLy8vPCBBIHRlbGVwaG9uZSBudW1iZXIgaW4g
dGhlIHBhZ2UuDQogICAgICAgICAgICAgRUVsZW1lbnRTbWFydExpbmtFbWFpbCAvLy88IGFuIGVt
YWlsIGFkZHJlc3MgaW4gdGhlIHBhZ2UuDQogICAgICAgICB9Ow0KQEAgLTcxNiw2ICs3MTYsMTcg
QEANCiAgICAgICAgIEVDbGllbnRDb21tYW5kTGF1bmNoRmluZEtleXdvcmQgPSAwLA0KICAgICAg
ICAgRUNsaWVudENvbW1hbmRTdWJzY3JpYmVUb0ZlZWRzDQogICAgICAgICB9Ow0KKyNpZmRlZiAg
UkRfQlJPV1NFUl9XSURHRVRTDQorICAgIC8qKg0KKyAgICAqIFRoZSB3aWRnZXQgcGFyYW1zLg0K
KyAgICAqLw0KKyAgICBlbnVtIFRCckN0bFdpZGdldFBhcmFtcw0KKyAgICAgICAgew0KKyAgICAg
ICAgRVdpZGdldElkZW50aWZpZXIgPSAwLA0KKyAgICAgICAgRVdpZGdldEJ1bmRsZUlkLA0KKyAg
ICAgICAgRVdpZGdldEJhc2VQYXRoDQorICAgICAgICB9Ow0KKyNlbmRpZiAvL1JEX0JST1dTRVJf
V0lER0VUUw0KICAgICB9Ow0KIA0KICNlbmRpZiAgICAgIC8vIEJSQ1RMREVGU19IDQpJbmRleDog
V2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bEludGVyZmFjZS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bEludGVyZmFjZS5oCShyZXZpc2lvbiAx
NzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsSW50ZXJmYWNlLmgJKHdv
cmtpbmcgY29weSkNCkBAIC03MSw3ICs3MSwxMCBAQA0KIGNsYXNzIFRCckN0bFN1YnNjcmliZVRv
Ow0KIGNsYXNzIE1CckN0bFN0YXRlQ2hhbmdlT2JzZXJ2ZXI7DQogY2xhc3MgTUJyQ3RsQ29tbWFu
ZE9ic2VydmVyOw0KLQ0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorY2xhc3MgTVdpZGdl
dENhbGxiYWNrOw0KK2NsYXNzIE1XaWRnZXRFeHRlbnNpb247DQorI2VuZGlmIC8vUkRfQlJPV1NF
Ul9XSURHRVRTDQogY2xhc3MgQ0JyQ3RsSW50ZXJmYWNlOw0KIGNsYXNzIENQbHVnaW5JbmZvOw0K
IA0KQEAgLTU5Niw2ICs1OTksMTUgQEANCiAgICAgICAgICovDQogICAgICAgICBJTVBPUlRfQyB2
aXJ0dWFsIHZvaWQgUmVtb3ZlQ29tbWFuZE9ic2VydmVyKE1CckN0bENvbW1hbmRPYnNlcnZlciog
YUJyQ3RsQ29tbWFuZE9ic2VydmVyKSA9IDA7DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdF
VFMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBVbnJlZ2lzdGVyIGEgY2xpZW50IGNvbW1hbmQg
aW50ZXJmYWNlIGZvciB0aGUgYnJvd3NlciBlbmdpbmUNCisgICAgICAgICogQHNpbmNlIDMuMQ0K
KyAgICAgICAgKiBAcGFyYW0gVGhlIG9ic2VydmVyIHRvIHVucmVnaXN0ZXINCisgICAgICAgICog
QHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgSU1QT1JUX0MgdmlydHVhbCBNV2lk
Z2V0RXh0ZW5zaW9uKiBDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYgYVdp
ZGdldENhbGxiYWNrKSA9IDA7DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgIH07
DQogDQogDQpAQCAtODY4LDYgKzg4MCw0OSBAQA0KICAgICAgICAgdmlydHVhbCB2b2lkIEhhbmRs
ZUNvbW1hbmRMKFRCckN0bERlZnM6OlRCckN0bENsaWVudENvbW1hbmRzIGFDb21tYW5kLCBjb25z
dCBDQXJyYXlGaXg8VFB0ckM+JiBhQXR0cmlidXRlc05hbWVzLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDQXJyYXlGaXg8VFB0ckM+JiBhQXR0cmlidXRlVmFs
dWVzKSA9IDA7DQogICAgIH07DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisvLyBDTEFT
UyBERUNMQVJBVElPTg0KKy8qKg0KKyogIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBtZWNoYW5pc20g
Zm9yIHRoZSBicm93c2VyIGVuZ2luZSB0byBpbnRlcmFjdCB3aXRoIHRoZSB3aWRnZXQgaG9zdCBh
cHBsaWNhdGlvbg0KKyoNCisqICBAbGliIEJyb3dzZXJFbmdpbmUubGliDQorKiAgQHNpbmNlIDMu
Mg0KKyovDQorY2xhc3MgTVdpZGdldENhbGxiYWNrDQorICAgIHsNCisgICAgcHVibGljOiAvLyBO
ZXcgZnVuY3Rpb25zDQorDQorICAgICAgICAvL1RPIEJFIElNUExFTUVOVEVEDQorICAgIH07DQor
Ly8gQ0xBU1MgREVDTEFSQVRJT04NCisvKioNCisqICBUaGlzIGNsYXNzIHByb3ZpZGVzIGFuIGV4
dGVuc2lvbiBtZWNoYW5pc20gZm9yIHRoZSB3aWRnZXQgaG9zdCBhcHAgdG8gaW50ZXJhY3Qgd2l0
aCB0aGUgYnJvd3NlciBlbmdpbmUNCisqICBUaGlzIGNsYXNzIGluY2x1ZGVzIHRoZSBXaWRnZXQg
c3BlY2lmaWMgZXh0ZW5zaW9uIG5lZWRlZCBpbiB0aGUgYnJvd3NlciBlbmdpbmUNCisqICBAbGli
IEJyb3dzZXJFbmdpbmUubGliDQorKiAgQHNpbmNlIDMuMg0KKyovDQorY2xhc3MgTVdpZGdldEV4
dGVuc2lvbg0KKyAgICB7DQorICAgIHB1YmxpYzogLy8gTmV3IGZ1bmN0aW9ucw0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJvd3NlciBl
bmdpbmUNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHdpZGdl
dCBpZGVudGlmaWVyDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBwYXJhbWF0
ZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdmlydHVh
bCB2b2lkIFNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBhcmFtLCBj
b25zdCBURGVzQyYgYVZhbHVlKSA9IDA7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIHRvIHNldCBwYXJhbWV0ZXJzIGluIHRoZSBicm93c2VyIGVuZ2luZQ0KKyAgICAgICAgKiBA
c2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgd2lkZ2V0IHBhcmFtZXRlciBhUGFyYW0N
CisgICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBmb3IgdGhlIHBhcmFtYXRlcg0KKyAgICAgICAg
KiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFy
YW1MKFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIFRVaW50IGFWYWx1ZSkg
PSAwOw0KKyAgICB9Ow0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICNlbmRpZiAgICAg
IC8vIEJSQ1RMSU5URVJGQUNFX0gNCiANCiAvLyBFbmQgb2YgRmlsZQ0KSW5kZXg6IFdlYktpdC9C
cm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dz
ZXJDb250cm9sL3NyYy9CckN0bC5jcHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93
c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzcsNiArNzcsOSBA
QA0KICNpbmNsdWRlICJGYXZpY29uLmgiDQogI2luY2x1ZGUgIlVybFJlcXVlc3RJbmZvLmgiDQog
I2luY2x1ZGUgIlRvb2xCYXIuaCINCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyNpbmNs
dWRlICJXaWRnZXRFeHRlbnNpb24uaCINCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAN
CiAjaWZkZWYgUkRfMzJfQlJPV1NFUg0KICNpbmNsdWRlICJTbWFydExpbmtIYW5kbGVyLmgiDQpA
QCAtNDM1LDE0ICs0MzgsMTQgQEANCiAgICAgICAgIGRlbGV0ZSAoQ0JyQ3RsU2Nyb2xsaW5nUHJv
dmlkZXIqKWlCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOw0KICAgICAgICAgfQ0KIA0KLSAgICBpQnJD
dGxTb2Z0a2V5c09ic2VydmVyID0gTlVMTDsgICAgDQorICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2
ZXIgPSBOVUxMOw0KICAgICBpQnJDdGxTcGVjaWFsTG9hZE9ic2VydmVyID0gTlVMTDsNCi0gICAg
aUJyQ3RsTGF5b3V0T2JzZXJ2ZXIgPSBOVUxMOyAgICAgICAgDQorICAgIGlCckN0bExheW91dE9i
c2VydmVyID0gTlVMTDsNCiAgICAgaUJyQ3RsRGlhbG9nc1Byb3ZpZGVyID0gTlVMTDsNCiAgICAg
aUJyQ3RsV2luZG93T2JzZXJ2ZXIgPSBOVUxMOw0KICAgICBpQnJDdGxEb3dubG9hZE9ic2VydmVy
ID0gTlVMTDsNCi0gICAgaUJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIgPSBOVUxMOyAgICANCi0gICAg
DQorICAgIGlCckN0bFNjcm9sbGluZ1Byb3ZpZGVyID0gTlVMTDsNCisNCiAgICAgLy8NCiAgICAg
ZGVsZXRlIGlIdHRwTG9hZGVyRXZlbnRUb1VpTGlzdGVuZXI7DQogDQpAQCAtNDYzLDcgKzQ2Niw3
IEBADQogDQogICAgIC8vRGVsZXRlIHRoZSBXZWJraXRDb250cm9sDQogICAgIGRlbGV0ZSBpV2Vi
S2l0Q29udHJvbDsNCi0gICAgDQorDQogICAgIC8vIGNsb3NlIHRoZSBhcnJheXMsIGF2b2lkIG1l
bW9yeSBsZWFrcw0KICAgICBpTG9hZEV2ZW50T2JzZXJ2ZXJzQXJyYXkuQ2xvc2UoKTsNCiAgICAg
aVN0YXRlQ2hhbmdlT2JzZXJ2ZXJBcnJheS5DbG9zZSgpOw0KQEAgLTQ3Miw3ICs0NzUsNyBAQA0K
ICAgICBpU3Vic2NyaWJlVG9JdGVtcy5DbG9zZSgpOw0KICAgICBpV21sU2VydmljZU9wdGlvbi5D
bG9zZSgpOw0KIA0KLSAgICANCisNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQpAQCAtNzMzLDcgKzczNiw3IEBADQogICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgIGlXZWJLaXRDb250cm9sLT5XZWJLaXRWaWV3KCkuU2V0U21hcnRMaW5rTW9kZShFU21h
cnRMaW5rUGhvbmUpOw0KICAgICAgICAgICAgICAgICBpV2ViS2l0Q29udHJvbC0+V2ViS2l0Vmll
dygpLkZpbmROZXh0U21hcnRMaW5rKEVUcnVlKTsNCi0gICAgICAgICAgICAgICAgfSAgICANCisg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0NCiAg
ICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RUNvbW1hbmRGaW5kSXRlbUVNYWlsOg0KQEAgLTc0Myw5
ICs3NDYsOSBAQA0KICAgICAgICAgICAgICAgICBmb3IgKCBUSW50IGk9MDsgaTxpU3RhdGVDaGFu
Z2VPYnNlcnZlckFycmF5LkNvdW50KCk7IGkrKyApDQogICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICBpU3RhdGVDaGFuZ2VPYnNlcnZlckFycmF5W2ldLT5TdGF0ZUNo
YW5nZWQoIFRCckN0bERlZnM6OkVTdGF0ZVNtYXJ0VGV4dFZpZXcsIEVUcnVlKTsNCi0gICAgICAg
ICAgICAgICAgICAgIH0gICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5TZXRTbWFydExpbmtNb2Rl
KCBFU21hcnRMaW5rRW1haWwgKTsNCi0gICAgICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldl
YktpdFZpZXcoKS5GaW5kTmV4dFNtYXJ0TGluayggRVRydWUgKTsgICAgDQorICAgICAgICAgICAg
ICAgIGlXZWJLaXRDb250cm9sLT5XZWJLaXRWaWV3KCkuRmluZE5leHRTbWFydExpbmsoIEVUcnVl
ICk7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAg
fQ0KQEAgLTg3Niw2ICs4NzksMTcgQEANCiAgICAgICAgICAgICAgICAgVFBsdWdpbkNvbnRyb2wg
cGx1Z2luQ29udHJvbCgqaVdlYktpdENvbnRyb2wpOw0KICAgICAgICAgICAgICAgICBwbHVnaW5D
b250cm9sLkhhbmRsZVBsdWdpbkNvbW1hbmRMKGFDb21tYW5kKTsNCiAgICAgICAgICAgICAgICAg
fQ0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorICAgICAgICAgICAgZWxzZQ0KKyAgICAg
ICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQg
PSBpV2ViS2l0Q29udHJvbC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgICAgICAgICAgICAgIGlm
ICh3ZGd0RXh0KQ0KKyAgICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAg
d2RndEV4dC0+T3B0aW9uc01lbnVJdGVtU2VsZWN0ZWQoYUNvbW1hbmQpOw0KKyAgICAgICAgICAg
ICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0K
KyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICAgICAgICAgIGJyZWFrOw0KICAgICAg
ICAgICAgIH0NCiAgICAgICAgIH0gICAvLyBlbmQgb2Ygc3dpdGNoDQpAQCAtMTEwNiw2ICsxMTIw
LDEzIEBADQogICAgIC8vIEJhc2Ugd2UncmUgdXNpbmcgZm9yIHRoZSBwbHVnLWlucw0KICAgICBU
UGx1Z2luQ29udHJvbCBwbHVnaW5Db250cm9sKCppV2ViS2l0Q29udHJvbCk7DQogICAgIHBsdWdp
bkNvbnRyb2wuQWRkUGx1Z2luT3B0aW9uTWVudUl0ZW1zTChhTWVudVBhbmUsIFRCckN0bERlZnM6
OkVDb21tYW5kSWRQbHVnaW5CYXNlLCBhQWZ0ZXIpOw0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURH
RVRTDQorICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJvbC0+V2lk
Z2V0RXh0ZW5zaW9uKCk7DQorICAgIGlmICh3ZGd0RXh0KQ0KKyAgICAgICAgew0KKyAgICAgICAg
d2RndEV4dC0+QWRkT3B0aW9uTWVudUl0ZW1zTChhTWVudVBhbmUpOw0KKyAgICAgICAgfQ0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCkBAIC0xODkzLDcgKzE5MTQsNyBAQA0KICAgICBpZiAoaUJyQ3RsU29mdGtleXNPYnNl
cnZlcikNCiAgICAgICAgIHsNCiAgICAgICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXItPlVwZGF0
ZVNvZnRrZXlMKEVLZXlMZWZ0LCBLTnVsbERlc0MsIDAsIEVDaGFuZ2VSZWFzb25JZGxlKTsNCi0g
ICAgICAgIGlCckN0bFNvZnRrZXlzT2JzZXJ2ZXItPlVwZGF0ZVNvZnRrZXlMKEVLZXlSaWdodCwg
S051bGxEZXNDLCAwLCBFQ2hhbmdlUmVhc29uSWRsZSk7ICAgICAgICANCisgICAgICAgIGlCckN0
bFNvZnRrZXlzT2JzZXJ2ZXItPlVwZGF0ZVNvZnRrZXlMKEVLZXlSaWdodCwgS051bGxEZXNDLCAw
LCBFQ2hhbmdlUmVhc29uSWRsZSk7DQogICAgICAgICB9DQogICAgIH0NCiANCkBAIC0yMzYzLDQg
KzIzODQsMTYgQEANCiAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9DQogDQorI2lmZGVmICBSRF9C
Uk9XU0VSX1dJREdFVFMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENCckN0bDo6Q3Jl
YXRlV2lkZ2V0RXh0ZW5zaW9uDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQor
RVhQT1JUX0MgTVdpZGdldEV4dGVuc2lvbiogQ0JyQ3RsOjpDcmVhdGVXaWRnZXRFeHRlbnNpb25M
KE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKQ0KKyAgICB7DQorICAgIHJldHVybiBp
V2ViS2l0Q29udHJvbC0+Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTChhV2lkZ2V0Q2FsbGJhY2spOw0K
KyAgICB9DQorDQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogLy8gIEVuZCBvZiBGaWxl
DQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2UuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmgJKHJldmlzaW9uIDE3
MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yLDEzICsyLDEzIEBADQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqICBO
YW1lICAgICAgICA6IHdlYmtpdGJyaWRnZS5oDQogKiAgUGFydCBvZiAgICAgOiBXZWJraXQgLyBC
cm93c2VyVmlldw0KLSogIEludGVyZmFjZSAgIDogDQorKiAgSW50ZXJmYWNlICAgOg0KICogIERl
c2NyaXB0aW9uIDoNCiAqICBWZXJzaW9uICAgICA6IDMuMQ0KICoNCiAqICAgIENvcHlyaWdodCAo
YykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24NCiAqICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQot
KiAgDQorKg0KICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogKiAgIGFyZSBtZXQ6DQpA
QCAtMjIsNyArMjIsNyBAQA0KICogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5va2lh
IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQogKiAgICAgICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAg
ICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLg0KLSogIA0KKyoNCiAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KICogICAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KICog
ICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1INCkBAIC05MSw2ICs5MSwxMCBAQA0KIA0KICAgICBwdWJsaWM6IC8vIE1l
dGhvZHMgRnJvbSBNV2ViQ2xpZW50QnJpZGdlDQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdF
VFMNCisgICAgICAgIHZvaWQqIGNyZWF0ZVdpZGdldE9iamVjdCh2b2lkKiBleGVjKTsNCisjZW5k
aWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCisNCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBDaGls
ZEZyYW1lcw0KICAgICAgICAgKiBGcm9tIE1XZWJDbGllbnRCcmlkZ2UNCkBAIC0xMDI2LDcgKzEw
MzAsNyBAQA0KICAgICAgICAgQ1dlYktpdExvYWRlciogICAgICAgICAgaUxvYWRlcjsgICAgICAg
ICAgICAgIC8vIG93bmVkDQogICAgIC8vDQogICAgIENJZGxlKiAgICAgICAgICBpQ2xvc2VXaW5k
b3dDYWxsYmFjazsgLy9vd2VkDQotICAgIA0KKw0KICAgICAgICAgLy8gVmFyaWFibGVzIHRvIHN0
b3JlIHRoZSBzdGF0ZQ0KICAgICAgICAgSEJ1ZkMqIGlQYWdlVGl0bGU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBvd25lZA0KICAgICAgICAgSEJ1ZkMqIGlTdGF0dXNUZXh0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAwd25lZA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9pbmMv
V2ViS2l0Q29udHJvbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9X
ZWJLaXRDb250cm9sLmgJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9p
bmMvV2ViS2l0Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtOTAsNiArOTAsOSBAQA0KIGNs
YXNzIENIdHRwQ2FjaGVNYW5hZ2VyOw0KIGNsYXNzIENTdGF0aWNJbWFnZURlY29kZXI7DQogY2xh
c3MgQ1BsdWdpbkNvbnRlbnRQbGF5ZXI7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitj
bGFzcyBDV2lkZ2V0RXh0ZW5zaW9uOw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0K
IC8vIENMQVNTIERFQ0xBUkFUSU9ODQogLyoqDQpAQCAtMzExLDYgKzMxNCwxNiBAQA0KICAgICAg
ICAgKi8NCiAgICAgICAgIENXZWJLaXRWaWV3KiBDcmVhdGVXaW5kb3coY29uc3QgVERlc0MmIGFG
cmFtZU5hbWUsVEJvb2wgYVVzZXJJbml0aWF0ZWQpOw0KIA0KKyNpZmRlZiAgUkRfQlJPV1NFUl9X
SURHRVRTDQorICAgICAgICAvKioNCisgICAgICAgICogQ3JlYXRlV2lkZ2V0RXh0ZW5zaW9uDQor
ICAgICAgICAqIFB1cnBvc2U6IENyZWF0ZXMgdGhlIHdpZGdldCBleHRlbnNpb24gb2JqZWN0DQor
ICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIE1XaWRnZXRDYWxsYmFjayog
YVdpZGdldENhbGxiYWNrDQorICAgICAgICAqIEByZXR1cm4gTVdpZGdldEV4dGVuc2lvbioNCisg
ICAgICAgICovDQorICAgICAgICBNV2lkZ2V0RXh0ZW5zaW9uKiBDcmVhdGVXaWRnZXRFeHRlbnNp
b25MKE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKSA7DQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQogDQogICAgICAgICAvKioNCiAgICAgICAgICogRmluZFdpbmRvd05hbWVk
DQpAQCAtNDkzLDcgKzUwNiwxNiBAQA0KICAgICAgICAgKi8NCiAgICAgICAgIENCckN0bCYgQnJD
dGwoKSBjb25zdCB7IHJldHVybiAqaUJyQ3RsOyB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJ
REdFVFMNCiAgICAgICAgIC8qKg0KKyAgICAgICAgKiBBc3NvY2lhdGVkIGJyb3dzZXIgY29udHJv
bA0KKyAgICAgICAgKiBAc2luY2UgMy4wDQorICAgICAgICAqIEByZXR1cm4gQSByZWZlcmVuY2Ug
dG8gQnJDdGwNCisgICAgICAgICovDQorICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiBXaWRnZXRF
eHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBpV2lkZ2V0RXh0ZW5zaW9uOyB9DQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQorDQorICAgICAgICAvKioNCiAgICAgICAgICogUmVzb3VyY2Ug
bG9hZGVyIHNldHRpbmdzIGNvbnRyb2xsZXINCiAgICAgICAgICogQHNpbmNlIDMuMA0KICAgICAg
ICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlDQpAQCAtODkzLDYgKzkxNSw5IEBADQogICAgICAgICAv
LyBwbHVnaW4gcGxheWVyDQogICAgICAgICBDUGx1Z2luQ29udGVudFBsYXllciogICAgICAgaVBs
dWdpblBsYXllcjsNCiAjZW5kaWYNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyAgICAg
ICAgQ1dpZGdldEV4dGVuc2lvbiogaVdpZGdldEV4dGVuc2lvbjsNCisjZW5kaWYgLy9SRF9CUk9X
U0VSX1dJREdFVFMNCiAgICAgfTsNCiANCiAjZW5kaWYgICAgICAvLyBXRUJLSVRDT05UUk9MX0gN
CkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldEV4dGVuc2lvbi5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRFeHRlbnNpb24uaAkocmV2aXNp
b24gMCkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldEV4dGVuc2lvbi5oCShyZXZp
c2lvbiAwKQ0KQEAgLTAsMCArMSwzNTUgQEANCisvKg0KKyogPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQorKiAgTmFtZSAgICAgICAgOiBXZWJLaXRXaWRnZXRJbnRlcmZhY2UuaA0KKyogIFBhcnQgb2Yg
ICAgIDogV2ViRW5naW5lL1dlYktpdFdpZGdldEludGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoN
CisqICBWZXJzaW9uICAgICA6IDIuMS4xDQorKg0KKyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tp
YSBDb3Jwb3JhdGlvbi4NCisqICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlv
biBhbmQgYW55IHJlbGF0ZWQNCisqICBjb21wdXRlciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5
IGNvcHlyaWdodCBjb250cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgYXJlIHJlc2VydmVkLiBDb3B5aW5nLA0KKyogIGluY2x1ZGluZyByZXByb2R1Y2luZywgc3Rv
cmluZywgYWRhcHRpbmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1h
dGVyaWFsIHJlcXVpcmVzIHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBD
b3Jwb3JhdGlvbi4gVGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyog
IGluZm9ybWF0aW9uIHdoaWNoIG1heSBub3QgYmUgZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0
IHRoZQ0KKyogIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisq
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KKyovDQorDQorI2lmbmRlZiBfX1dJREdFVEVOR0lORUNB
TExCQUNLDQorI2RlZmluZSBfX1dJREdFVEVOR0lORUNBTExCQUNLDQorDQorLy8gIElOQ0xVREVT
DQorI2luY2x1ZGUgPGUzMmJhc2UuaD4NCisjaW5jbHVkZSA8ZTMyaGFzaHRhYi5oPg0KKyNpbmNs
dWRlIDxCckN0bEludGVyZmFjZS5oPg0KKyNpbmNsdWRlICJXaWRnZXRFbmdpbmVCcmlkZ2UuaCIN
CisNCisvLyBDT05TVEFOVFMNCisNCisvLyBNQUNST1MNCisNCisvLyBEQVRBIFRZUEVTDQorDQor
Ly8gRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIEZPUldBUkQgREVDTEFSQVRJT04NCitjbGFz
cyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2lkZ2V0UHJlZmVyZW5jZXM7DQorY2xhc3MgVFdpZGdl
dFJlbmRlcmVyOw0KK2NsYXNzIENFaWtNZW51UGFuZTsNCisNCisvLyBDTEFTUyBERUNMQVJBVElP
Tg0KKy8qKg0KKyogIENXaWRnZXRFeHRlbnNpb24NCisqDQorKiAgQGxpYiBicm93c2VyZW5naW5l
LmRsbA0KKyogIEBzaW5jZSAzLjINCisqLw0KK2NsYXNzIENXaWRnZXRFeHRlbnNpb246IHB1Ymxp
YyBDQmFzZSwgcHVibGljIE1XaWRnZXRFbmdpbmVDYWxsQmFjaywgcHVibGljIE1XaWRnZXRFeHRl
bnNpb24NCisgICAgew0KKyAgICBwdWJsaWM6DQorICAgICAgICAvKioNCisgICAgICAgICogQ29u
c3RydWN0b3INCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gV2Via2l0
Vmlldw0KKyAgICAgICAgKiBAcGFyYW0gV2lkZ2V0Q2FsbGJhY2sgaW50ZXJmYWNlDQorICAgICAg
ICAqIEByZXR1cm4gQ1dpZGdldEV4dGVuc2lvbiBvYmplY3QuDQorICAgICAgICAqLw0KKyAgICAg
ICAgc3RhdGljIENXaWRnZXRFeHRlbnNpb24qIE5ld0woQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3
LE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrKTsNCisNCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBEZXN0cnVjdG9yLg0KKyAgICAgICAgKi8NCisgICAgICAgIHZpcnR1YWwgfkNXaWRn
ZXRFeHRlbnNpb24oKTsNCisNCisgICAgcHVibGljOg0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IE1ldGhvZCBBZGRPcHRpb25NZW51SXRlbXNMDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAg
ICAgICogQHBhcmFtIFRoZSBvcHRpb25zIG1lbnUNCisgICAgICAgICogQHJldHVybiB2b2lkDQor
ICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBBZGRPcHRpb25NZW51SXRlbXNMKCBDRWlrTWVudVBh
bmUmIGFNZW51UGFuZSApOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBPcHRp
b25zTWVudUl0ZW1TZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBw
YXJhbSBUaGUgb3B0aW9ucyBtZW51IGNvbW1hbmQNCisgICAgICAgICogQHJldHVybiB2b2lkDQor
ICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBPcHRpb25zTWVudUl0ZW1TZWxlY3RlZCggVEludCBh
Q29tbWFuZCApOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBPbkhpZGVTZWxl
Y3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAg
ICAgICAgKi8NCisgICAgICAgIHZvaWQgT25IaWRlU2VsZWN0ZWQoKTsNCisNCisgICAgICAgIC8q
Kg0KKyAgICAgICAgKiBNZXRob2QgT25SZW1vdmVTZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2Ug
My4yDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQg
T25SZW1vdmVTZWxlY3RlZCgpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBP
blNob3dTZWxlY3RlZA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBU
aGUgd2lkZ2V0IGlkZW50aWZpZXINCisgICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBmb3IgdGhl
IHBhcmFtYXRlcg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAg
ICB2b2lkIE9uU2hvd1NlbGVjdGVkKCk7DQorDQorICAgIHB1YmxpYzogLy8gRnJvbSBNV2lkZ2V0
RW5naW5lQ2FsbEJhY2sNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgT3BlbkFw
cGxpY2F0aW9uDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIFRoZSBu
YW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBvcGVuDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0K
KyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgT3BlbkFwcGxpY2F0aW9uKGNvbnN0IFREZXNDJiBh
QXBwTmFtZSwgY29uc3QgVERlc0MmIGFQYXJhbSk7DQorDQorICAgICAgICAvKioNCisgICAgICAg
ICogTWV0aG9kIE9wZW5VcmwNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFy
YW0gVGhlIHVybCB0byBvcGVuDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8N
CisgICAgICAgIHZvaWQgT3BlblVybChjb25zdCBURGVzQyYgYVVybCk7DQorDQorICAgICAgICAv
KioNCisgICAgICAgICogTWV0aG9kIFByZWZlcmVuY2VGb3JLZXkNCisgICAgICAgICogQHNpbmNl
IDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVuY2Uga2V5DQorICAgICAgICAqIEBw
YXJhbSBUaGUgcHJlZmVyZW5jZSB2YWx1ZQ0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAg
ICAgICovDQorICAgICAgICBUSW50IFByZWZlcmVuY2VGb3JLZXkoY29uc3QgVERlc0MmIGFLZXks
IFRQdHJDJiBhVmFsdWUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBQcmVw
YXJlRm9yVHJhbnNpdGlvbg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJh
bSBUaGUgdHJhbnNpdGlvbiB0eXBlDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAg
Ki8NCisgICAgICAgIHZvaWQgUHJlcGFyZUZvclRyYW5zaXRpb24oY29uc3QgVERlc0MmIGFUcmFu
c2l0aW9uKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgUGVyZm9ybVRyYW5z
aXRpb24NCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisg
ICAgICAgICovDQorICAgICAgICB2b2lkIFBlcmZvcm1UcmFuc2l0aW9uKCk7DQorDQorICAgICAg
ICAvKioNCisgICAgICAgICogTWV0aG9kIFNldFByZWZlcmVuY2VGb3JLZXkNCisgICAgICAgICog
QHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVuY2Uga2V5DQorICAgICAg
ICAqIEBwYXJhbSBUaGUgcHJlZmVyZW5jZSB2YWx1ZQ0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQN
CisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldFByZWZlcmVuY2VGb3JLZXkoY29uc3QgVERl
c0MmIGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAg
ICAqIE1ldGhvZCBBZGRPcHRpb25zTWVudUl0ZW0NCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAg
ICAgICAgKiBAcGFyYW0gTmFtZSBvZiBvcHRpb25zIG1lbnUgaXRlbQ0KKyAgICAgICAgKiBAcmV0
dXJuIGNvbW1hbmQgaWQNCisgICAgICAgICovDQorICAgICAgICBUSW50IEFkZE9wdGlvbnNNZW51
SXRlbShjb25zdCBURGVzQyYgYU5hbWUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1l
dGhvZCBDbGVhck9wdGlvbnNNZW51DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICog
QHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBDbGVhck9wdGlvbnNNZW51
KCk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIEdldFdpZGdldElkDQorICAg
ICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiBUaGUgd2lkZ2V0IGlkZW50aWZp
ZXINCisgICAgICAgICovDQorICAgICAgICBURGVzQyYgR2V0V2lkZ2V0QnVuZGxlSWQoKSB7IHJl
dHVybiAqaVdpZGdldEJ1bmRsZUlkOyB9DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIFNldFNjcm9sbEJhcg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJh
bSBUQm9vbCB2aXNpYmxlDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisg
ICAgICAgIHZvaWQgU2V0U2Nyb2xsQmFyKFRCb29sIGFWaXNpYmxlKTsNCisNCisgICAgICAgIC8q
Kg0KKyAgICAgICAgKiBNZXRob2QgU2V0TmF2aWdhdGlvbkVuYWJsZWQNCisgICAgICAgICogQHNp
bmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVEJvb2wgZW5hYmxlZA0KKyAgICAgICAgKiBAcmV0
dXJuIHZvaWQNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldE5hdmlnYXRpb25FbmFibGVk
KFRCb29sIGFFbmFibGUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBTZXRP
cHRpb25zTWVudUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBh
cmFtIENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAg
ICAqLw0KKyAgICAgICAgdm9pZCBTZXRPcHRpb25zTWVudUxpc3RlbmVyKENXaWRnZXRFdmVudEhh
bmRsZXIqIGFDYWxsYmFjayk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFNl
dE9uSGlkZUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFt
IENXaWRnZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAq
Lw0KKyAgICAgICAgdm9pZCBTZXRPbkhpZGVMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5kbGVyKiBh
Q2FsbGJhY2spOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBTZXRPblJlbW92
ZUxpc3RlbmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIENXaWRn
ZXRFdmVudEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAg
ICAgICAgdm9pZCBTZXRPblJlbW92ZUxpc3RlbmVyKENXaWRnZXRFdmVudEhhbmRsZXIqIGFDYWxs
YmFjayk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFNldE9uU2hvd0xpc3Rl
bmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIENXaWRnZXRFdmVu
dEhhbmRsZXINCisgICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAg
dm9pZCBTZXRPblNob3dMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5kbGVyKiBhQ2FsbGJhY2spOw0K
Kw0KKyAgICBwdWJsaWM6DQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFdpZGdldFJl
bmRlcmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHJldHVybiB3aWRnZXQg
cmVuZGVyZXINCisgICAgICAgICovDQorICAgICAgICBUV2lkZ2V0UmVuZGVyZXIqIFdpZGdldFJl
bmRlcmVyKCkgY29uc3QgeyByZXR1cm4gaVdpZGdldFJlbmRlcmVyOyB9DQorDQorICAgICAgICAv
KioNCisgICAgICAgICogTWV0aG9kIFdpZGdldEVuZ2luZUJyaWRnZXQNCisgICAgICAgICogQHNp
bmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHdpZGdldCBlbmdpbmUgYnJpZGdlDQorICAgICAg
ICAqLw0KKyAgICAgICAgTVdpZGdldEVuZ2luZUJyaWRnZSYgV2lkZ2V0RW5naW5lQnJpZGdlKCkg
Y29uc3QgeyByZXR1cm4gKmlXaWRnZXRFbmdpbmVCcmlkZ2U7IH0NCisNCisgICAgICAgIC8qKg0K
KyAgICAgICAgKiBNZXRob2QgTmF2aWdhdGlvbkVuYWJsZWQNCisgICAgICAgICogQHNpbmNlIDMu
Mg0KKyAgICAgICAgKiBAcmV0dXJuIGJvb2wNCisgICAgICAgICovDQorICAgICAgICBUQm9vbCBO
YXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlOYXZpZ2F0aW9uRW5hYmxlZDsgfQ0K
Kw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBXaWRnZXRCYXNlUGF0aA0KKyAgICAg
ICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gVERlc0Mgd2lkZ2V0IGJhc2UgcGF0
aA0KKyAgICAgICAgKi8NCisgICAgICAgIFREZXNDJiBXaWRnZXRCYXNlUGF0aCgpIGNvbnN0IHsg
cmV0dXJuICppV2lkZ2V0QmFzZVBhdGg7IH0NCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBN
ZXRob2QgR2V0V2lkZ2V0SWQNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0
dXJuIFRoZSB3aWRnZXQgdWlkDQorICAgICAgICAqLw0KKyAgICAgICAgVEludCBHZXRXaWRnZXRJ
ZCgpIHsgcmV0dXJuIGlXaWRnZXRJZDsgfQ0KKw0KKyAgICBwdWJsaWM6IC8vIE5ldyBmdW5jdGlv
bnMNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgdG8gc2V0IHBhcmFtZXRlcnMg
aW4gdGhlIGJyb3dzZXIgZW5naW5lDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICog
QHBhcmFtIFRoZSB3aWRnZXQgaWRlbnRpZmllcg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHZhbHVl
IGZvciB0aGUgcGFyYW1hdGVyDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8N
CisgICAgICAgIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBh
UGFyYW0sIGNvbnN0IFREZXNDJiBhVmFsdWUpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IE1ldGhvZCB0byBzZXQgcGFyYW1ldGVycyBpbiB0aGUgYnJvd3NlciBlbmdpbmUNCisgICAgICAg
ICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gVGhlIHdpZGdldCBwYXJhbWV0ZXIgYVBh
cmFtDQorICAgICAgICAqIEBwYXJhbSBUaGUgdmFsdWUgZm9yIHRoZSBwYXJhbWF0ZXINCisgICAg
ICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXRQYXJhbUwo
VEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgVFVpbnQgYVZhbHVlKTsNCisN
CisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgY3JlYXRlV2lkZ2V0T2JqZWN0DQorICAg
ICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtDQorICAgICAgICAqIEByZXR1cm4g
dm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQqIGNyZWF0ZVdpZGdldE9iamVjdCh2b2lk
KiBleGVjKTsNCisNCisgICAgcHJpdmF0ZToNCisgICAgICAgICAvKioNCisgICAgICAgICogTWV0
aG9kIExvYWRXaWRnZXRFbmdpbmVEbGxMDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHJldHVybiB2b2lkDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBMb2FkV2lkZ2V0RW5n
aW5lRGxsTCgpOw0KKw0KKyAgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgQ3JlYXRlQXBw
SGFzaFRhYmxlTA0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gdm9p
ZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQ3JlYXRlQXBwSGFzaFRhYmxlTCgpOw0KKw0K
KyAgICAgICAgLyoNCisgICAgICAgICogTWV0aG9kIExhdW5jaEFwcGxpY2F0aW9uTA0KKyAgICAg
ICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBUaGUgbmFtZSBvZiB0aGUgYXBwbGlj
YXRpb24gdG8gb3Blbg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQNCisgICAgICAgICovDQorICAg
ICAgICB2b2lkIExhdW5jaEFwcGxpY2F0aW9uTChjb25zdCBUVWlkJiBhVWlkLCBjb25zdCBURGVz
QyYgYVBhcmFtKTsNCisNCisgICAgcHJvdGVjdGVkOg0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IDJuZCBwaGFzZSBjb25zdHJ1Y3Rvci4NCisgICAgICAgICovDQorICAgICAgICB2b2lkIENvbnN0
cnVjdEwoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBDKysgY29uc3RydWN0b3IuDQor
ICAgICAgICAqLw0KKyAgICAgICAgQ1dpZGdldEV4dGVuc2lvbiggQ1dlYktpdFZpZXcmIGFXZWJL
aXRWaWV3LE1XaWRnZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrICk7DQorDQorDQorICAgIHBy
aXZhdGU6DQorICAgICAgICBDV2ViS2l0VmlldyogaVdlYktpdFZpZXc7ICAgICAgICAgICAgICAg
ICAgICAvL25vdCBvd25lZA0KKw0KKyAgICAgICAgQ1dpZGdldFByZWZlcmVuY2VzKiBpUHJlZmVy
ZW5jZXM7DQorICAgICAgICBUV2lkZ2V0UmVuZGVyZXIqIGlXaWRnZXRSZW5kZXJlcjsNCisNCisg
ICAgICAgIHN0cnVjdCBUTWVudUl0ZW0NCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgSEJ1
ZkMqIGlUZXh0Ow0KKyAgICAgICAgICAgIFRJbnQgaUNtZElkOw0KKyAgICAgICAgICAgIH07DQor
DQorICAgICAgICBSQXJyYXk8VE1lbnVJdGVtPiBpTWVudUl0ZW1zOw0KKw0KKyAgICAgICAgVElu
dCAgICBpV2lkZ2V0SWQ7DQorICAgICAgICBUQm9vbCAgIGlOYXZpZ2F0aW9uRW5hYmxlZDsNCisg
ICAgICAgIFRCb29sICAgaVBhZ2VTY2FsZXJXYXNFbmFibGVkOw0KKyAgICAgICAgSEJ1ZkMqICBp
V2lkZ2V0QmFzZVBhdGg7DQorICAgICAgICBIQnVmQyogIGlXaWRnZXRCdW5kbGVJZDsNCisNCisg
ICAgICAgIE1XaWRnZXRFbmdpbmVCcmlkZ2UqIGlXaWRnZXRFbmdpbmVCcmlkZ2U7DQorICAgICAg
ICBNV2lkZ2V0Q2FsbGJhY2sqIGlXaWRnZXRDYWxsYmFjazsNCisNCisgICAgICAgIFJQdHJIYXNo
TWFwPFREZXNDLFRJbnQ+IGlBcHBVaWRNYXA7DQorICAgICAgICBSTGlicmFyeSBpTGlicmFyeTsN
CisNCisgICAgfTsNCisNCisjZW5kaWYNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dp
ZGdldFByZWZlcmVuY2VzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5j
L1dpZGdldFByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDApDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3
L2luYy9XaWRnZXRQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw3NCBAQA0K
Ky8qDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktpdFdp
ZGdldEludGVyZmFjZS5oDQorKiAgUGFydCBvZiAgICAgOiBXZWJFbmdpbmUvV2ViS2l0V2lkZ2V0
SW50ZXJmYWNlDQorKiAgRGVzY3JpcHRpb24gOg0KKyogIFZlcnNpb24gICAgIDogMi4xLjENCisq
DQorKiAgQ29weXJpZ2h0IChjKSAyMDA0IE5va2lhIENvcnBvcmF0aW9uLg0KKyogIFRoaXMgbWF0
ZXJpYWwsIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsYXRlZA0KKyogIGNvbXB1
dGVyIHByb2dyYW1zLCBpcyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGNvbnRyb2xsZWQgYnkNCisq
ICBOb2tpYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIENvcHlpbmcsDQor
KiAgaW5jbHVkaW5nIHJlcHJvZHVjaW5nLCBzdG9yaW5nLCBhZGFwdGluZyBvciB0cmFuc2xhdGlu
ZywgYW55DQorKiAgb3IgYWxsIG9mIHRoaXMgbWF0ZXJpYWwgcmVxdWlyZXMgdGhlIHByaW9yIHdy
aXR0ZW4gY29uc2VudCBvZg0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBUaGlzIG1hdGVyaWFsIGFs
c28gY29udGFpbnMgY29uZmlkZW50aWFsDQorKiAgaW5mb3JtYXRpb24gd2hpY2ggbWF5IG5vdCBi
ZSBkaXNjbG9zZWQgdG8gb3RoZXJzIHdpdGhvdXQgdGhlDQorKiAgcHJpb3Igd3JpdHRlbiBjb25z
ZW50IG9mIE5va2lhIENvcnBvcmF0aW9uLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8N
CisNCisjaWZuZGVmIF9fV0lER0VURU5HSU5FUFJFRkVSRU5DRVMNCisjZGVmaW5lIF9fV0lER0VU
RU5HSU5FUFJFRkVSRU5DRVMNCisNCisvLyAgSU5DTFVERVMNCisjaW5jbHVkZSA8ZTMyYmFzZS5o
Pg0KKyNpbmNsdWRlIDxlMzJoYXNodGFiLmg+DQorLy8gQ09OU1RBTlRTDQorDQorLy8gTUFDUk9T
DQorDQorLy8gREFUQSBUWVBFUw0KKw0KKy8vIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyBG
T1JXQVJEIERFQ0xBUkFUSU9ODQorY2xhc3MgQ1dpZGdldEV4dGVuc2lvbjsNCisNCisvLyBDTEFT
UyBERUNMQVJBVElPTg0KKy8qKg0KKyogIENXaWRnZXRQcmVmZXJlbmNlcw0KKyoNCisqICBAbGli
IHdpZGdldGVuZ2luZS5kbGwNCisqICBAc2luY2UgMy4xDQorKi8NCitjbGFzcyBDV2lkZ2V0UHJl
ZmVyZW5jZXMgOiBwdWJsaWMgQ0Jhc2UNCisgICAgew0KKw0KKyAgICBwdWJsaWM6DQorICAgICAg
ICBzdGF0aWMgQ1dpZGdldFByZWZlcmVuY2VzKiBOZXdMKENXaWRnZXRFeHRlbnNpb24mIGFXaWRn
ZXRFeHRlbnNpb24pOw0KKyAgICAgICAgc3RhdGljIENXaWRnZXRQcmVmZXJlbmNlcyogTmV3TEMo
Q1dpZGdldEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbik7DQorICAgICAgICB+Q1dpZGdldFBy
ZWZlcmVuY2VzKCk7DQorDQorICAgIHB1YmxpYzoNCisgICAgICAgIHZvaWQgTG9hZEwoKTsNCisg
ICAgICAgIHZvaWQgU2F2ZUwoKTsNCisgICAgICAgIFRJbnQgUHJlZmVyZW5jZUwoY29uc3QgVERl
c0MmIGFOYW1lLCBUUHRyQyYgYVZhbHVlKTsNCisgICAgICAgIHZvaWQgU2V0UHJlZmVyZW5jZUwo
Y29uc3QgVERlc0MmIGFOYW1lLCBjb25zdCBURGVzQyYgYVZhbHVlKTsNCisNCisgICAgcHJvdGVj
dGVkOg0KKyAgICAgICAgdm9pZCBFbXB0eSgpOw0KKyAgICAgICAgdm9pZCBDcmVhdGVGaWxlUGF0
aEwoKTsNCisgICAgICAgIEhCdWZDKiBNYWtlS2V5TEMoY29uc3QgVERlc0MmIGFOYW1lKTsNCisN
CisgICAgcHJvdGVjdGVkOg0KKyAgICAgICAgQ1dpZGdldFByZWZlcmVuY2VzKENXaWRnZXRFeHRl
bnNpb24mIGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICAgICAgdm9pZCBDb25zdHJ1Y3RMKCk7DQor
DQorICAgIHByaXZhdGU6DQorICAgICAgICBSUHRySGFzaE1hcDxURGVzQyxURGVzQz4gaU1hcDsN
CisgICAgICAgIEhCdWZDKiBpRmlsZVBhdGg7DQorICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiBp
V2lkZ2V0RXh0ZW5zaW9uOyAvL25vdCBvd25lZA0KKw0KKyAgICB9Ow0KKw0KKyNlbmRpZg0KSW5k
ZXg6IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0UmVuZGVyZXIuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0UmVuZGVyZXIuaAkocmV2aXNpb24gMCkN
CisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldFJlbmRlcmVyLmgJKHJldmlzaW9uIDAp
DQpAQCAtMCwwICsxLDc4IEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5h
bWUgICAgICAgIDogV2lkZ2V0RW5naW5lUmVuZGVyZXIuaA0KKyogIFBhcnQgb2YgICAgIDogV2Vi
RW5naW5lL1dlYktpdFdpZGdldEludGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJz
aW9uICAgICA6IDIuMS4xDQorKg0KKyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3Jh
dGlvbi4NCisqICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55
IHJlbGF0ZWQNCisqICBjb21wdXRlciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdo
dCBjb250cm9sbGVkIGJ5DQorKiAgTm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJl
c2VydmVkLiBDb3B5aW5nLA0KKyogIGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRh
cHRpbmcgb3IgdHJhbnNsYXRpbmcsIGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJl
cXVpcmVzIHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlv
bi4gVGhpcyBtYXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0
aW9uIHdoaWNoIG1heSBub3QgYmUgZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyog
IHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KKyovDQorDQorI2lmbmRlZiBfX1dJREdFVEVOR0lORVJFTkRFUkVSDQor
I2RlZmluZSBfX1dJREdFVEVOR0lORVJFTkRFUkVSDQorDQorLy8gIElOQ0xVREVTDQorI2luY2x1
ZGUgPGUzMmJhc2UuaD4NCisvLyBDT05TVEFOVFMNCisNCisvLyBNQUNST1MNCisNCisvLyBEQVRB
IFRZUEVTDQorDQorLy8gRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIEZPUldBUkQgREVDTEFS
QVRJT04NCitjbGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2luZG93R2M7DQorY2xhc3MgQ0Zi
c0JpdG1hcDsNCisNCisvLyBDTEFTUyBERUNMQVJBVElPTg0KKw0KKy8qKg0KKyogIFRXaWRnZXRS
ZW5kZXJlcg0KKyoNCisqICBAbGliIHdpZGdldGVuZ2luZS5kbGwNCisqICBAc2luY2UgMy4xDQor
Ki8gICAgDQorY2xhc3MgVFdpZGdldFJlbmRlcmVyDQorICAgIHsNCisNCisgICAgcHVibGljOg0K
KyAgICAgICAgVFdpZGdldFJlbmRlcmVyKENXZWJLaXRWaWV3JiBhV2ViS2l0Vmlldyk7DQorICAg
ICAgICB+VFdpZGdldFJlbmRlcmVyKCk7DQorDQorICAgIHB1YmxpYzogICAgDQorICAgICAgICB2
b2lkIFByZXBhcmVGb3JUcmFuc2l0aW9uTChjb25zdCBURGVzQyYgYVRyYW5zaXRpb24pOw0KKyAg
ICAgICAgdm9pZCBQZXJmb3JtVHJhbnNpdGlvbkwoKTsNCisgICAgICAgIA0KKyAgICBwdWJsaWM6
DQorICAgICAgICB2b2lkIFRyYW5zaXRpb25DYigpOw0KKyAgICAgICAgVEJvb2wgVHJhbnNpdGlv
bkluUHJvZ3Jlc3MoKSB7IHJldHVybiBpVHJhbnNpdGlvbkJpdG1hcCE9MDsgfQ0KKyAgICAgICAg
dm9pZCBEcmF3VHJhbnNpdGlvbihDV2luZG93R2MmIGdjLCBDRmJzQml0bWFwKiBhQ3VycmVudEJp
dG1hcCk7DQorDQorICAgIHByb3RlY3RlZDoNCisgICAgICAgIHZvaWQgQ3JlYXRlVHJhbnNpdGlv
bkJpdG1hcEwoKTsNCisgICAgICAgIHZvaWQgRGVzdHJveVRyYW5zaXRpb25CaXRtYXAoKTsNCisg
ICAgICAgIHZvaWQgQ3JlYXRlRmFkZU1hc2tMKCk7DQorICAgICAgICB2b2lkIERlc3Ryb3lGYWRl
TWFzaygpOw0KKyAgICAgICAgdm9pZCBEcmF3RmFkZU1hc2tMKCk7DQorDQorICAgIHByaXZhdGU6
DQorICAgICAgICBDV2ViS2l0VmlldyogaVdlYktpdFZpZXc7DQorICAgICAgICBDRmJzQml0bWFw
KiBpVHJhbnNpdGlvbkJpdG1hcDsNCisgICAgICAgIENGYnNCaXRtYXAqIGlGYWRlTWFzazsNCisg
ICAgICAgIENQZXJpb2RpYyogaVRyYW5zaXRpb25UaW1lcjsNCisgICAgICAgIFRJbnQgaVRyYW5z
aXRpb25Db3VudDsgICAgICAgIA0KKyAgICAgICAgICAgICAgICANCisgICAgfTsNCisgICAgICAg
IA0KKyNlbmRpZg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvd2Via2l0YnJpZGdlLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvd2Via2l0YnJpZGdlLmNw
cAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy93ZWJraXRicmlk
Z2UuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNiArNTEsOSBAQA0KICNpbmNsdWRlICJIaXN0
b3J5Q29udHJvbGxlci5oIg0KICNpbmNsdWRlICJMb2FkZXJVdGlscy5oIg0KICNpbmNsdWRlICJX
ZWJLaXRMb2dnZXIuaCINCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKyNpbmNsdWRlICJX
aWRnZXRFeHRlbnNpb24uaCINCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAvL0NP
TlNUQU5UUw0KIF9MSVQoS0RhdGVTdHJpbmcsICIlLUIlOjAlSiU6MSVUJToyJVMlLiUqQzQlOjMl
K0IiKTsNCkBAIC05MTgsNyArOTIxLDcgQEANCiANCiAgIGlmKGlGcmFtZS0+V2ViS2l0Vmlldygp
LldlYktpdENvbnRyb2woKS5CckN0bCgpLkNhcGFiaWxpdGllcygpICYgVEJyQ3RsRGVmczo6RUNh
cGFiaWxpdHlHcmFwaGljYWxQYWdlKQ0KICAgICB7DQotICAgIFRSQVBfSUdOT1JFKGlmKCBpRnJh
bWUtPldlYktpdFZpZXcoKS5QYWdlU2NhbGVyKCkgKSANCisgICAgVFJBUF9JR05PUkUoaWYoIGlG
cmFtZS0+V2ViS2l0VmlldygpLlBhZ2VTY2FsZXIoKSApDQogICAgICAgICAgICAgICAgICAgICBp
RnJhbWUtPldlYktpdFZpZXcoKS5QYWdlU2NhbGVyKCktPkRvY3VtZW50Q2hhbmdlZEwoKSk7DQog
ICAgIH0NCiAgICAgLy8gZG9jdW1lbnQgaXMgcGFyc2VkIGFuZCBubyBwZW5kaW5nIHRyYW5zYWN0
aW9uIG1lYW4gdGhhdA0KQEAgLTEzNTAsNCArMTM1MywxNSBAQA0KICAgICB9DQogICB9DQogDQor
I2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCit2b2lkKiBDV2ViS2l0QnJpZGdlOjpjcmVhdGVX
aWRnZXRPYmplY3Qodm9pZCogZXhlYykNCisgICAgew0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3
ZGd0RXh0ID0gaUZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpLldpZGdldEV4dGVu
c2lvbigpOw0KKyAgICBpZih3ZGd0RXh0KQ0KKyAgICAgICB7DQorICAgICAgIHJldHVybiB3ZGd0
RXh0LT5jcmVhdGVXaWRnZXRPYmplY3QoZXhlYyk7DQorICAgICAgIH0NCisgICAgcmV0dXJuIDA7
DQorICAgIH0NCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAvLyBlbmQgb2YgZmlsZQ0K
SW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Q29udHJvbC5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wuY3BwCShyZXZpc2lv
biAxNzA2OSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wuY3BwCSh3
b3JraW5nIGNvcHkpDQpAQCAtODEsNiArODEsOSBAQA0KICNpbmNsdWRlICJXZWJDb3JlSGlzdG9y
eS5oIg0KICNpbmNsdWRlICJIdHRwQ2FjaGVNYW5hZ2VyLmgiDQogI2luY2x1ZGUgIlN0YXRpY0lt
YWdlRGVjb2Rlci5oIg0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorI2luY2x1ZGUgIldp
ZGdldEV4dGVuc2lvbi5oIg0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0KICNpZmRl
ZiBSRF8zMl9CUk9XU0VSDQogI2luY2x1ZGUgIlBsdWdpbkNvbnRlbnRQbGF5ZXIuaCINCkBAIC02
MjcsNiArNjMwLDkgQEANCiANCiAgICAgLy8gY2xlYXVwIHRoZSBzdGF0aWMgb2JqZWN0DQogICAg
IENTdGF0aWNPYmplY3RDb250YWluZXI6Okluc3RhbmNlKCkuRGVyZWYoKTsNCisjaWZkZWYgIFJE
X0JST1dTRVJfV0lER0VUUw0KKyAgICBkZWxldGUgaVdpZGdldEV4dGVuc2lvbjsNCisjZW5kaWYg
Ly9SRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQpAQCAtMjA5MCw2ICsyMDk2LDIyIEBADQogICAgICAgICBDV2ViQ29yZUJyaWRnZTo6U2V0RGVm
ZXJzVGltZXJzKCBFRmFsc2UgKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KKyNpZmRlZiAgUkRfQlJP
V1NFUl9XSURHRVRTDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2ViS2l0Q29udHJv
bDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vDQorTVdpZGdldEV4dGVuc2lvbiogQ1dlYktpdENvbnRyb2w6OkNyZWF0ZVdpZGdldEV4dGVu
c2lvbkwoTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spDQorICAgIHsNCisgICAgaWYo
ICFpV2lkZ2V0RXh0ZW5zaW9uICkNCisgICAgICAgIHsNCisgICAgICAgIGlXaWRnZXRFeHRlbnNp
b24gPSBDV2lkZ2V0RXh0ZW5zaW9uOjpOZXdMKCppV2ViS2l0VmlldyxhV2lkZ2V0Q2FsbGJhY2sp
Ow0KKyAgICAgICAgfQ0KKyAgICBQbHVnaW5IYW5kbGVyKCkuTG9hZFBsdWdpbnNTeW5jTCgpOw0K
KyAgICByZXR1cm4gaVdpZGdldEV4dGVuc2lvbjsNCisgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dT
RVJfV0lER0VUUw0KICNpZmRlZiBSRF8zMl9CUk9XU0VSDQogLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogLy8gQ2FsbGVkIHdoZW4gdXNlciBjbGlja3MgYSBwbHVnaW4gd2hpY2ggaXMgYWJsZSB0
byBhY2NlcHQgdXNlciBpbnB1dCwNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktp
dFZpZXcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRW
aWV3LmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJL
aXRWaWV3LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDYgKzYwLDExIEBADQogI2luY2x1ZGUg
IldlYktpdFN1cmZhY2UuaCINCiAjaW5jbHVkZSAiV2ViS2l0VG9vbEJhckludGVyZmFjZS5oIg0K
ICNpbmNsdWRlICJUb29sQmFyLmgiDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisjaW5j
bHVkZSAiV2lkZ2V0RXh0ZW5zaW9uLmgiDQorI2luY2x1ZGUgIldpZGdldEVuZ2luZUJyaWRnZS5o
Ig0KKyNpbmNsdWRlICJXaWRnZXRSZW5kZXJlci5oIg0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lE
R0VUUw0KICNpbmNsdWRlICJGZWF0TWdyLmgiDQogDQogDQpAQCAtNjEzLDYgKzYxOCwxNyBAQA0K
ICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgfQ0KICAgICBTZXRWaWV3VmlzaWJsZShhVmlzaWJs
ZSk7DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgQ1dpZGdldEV4dGVuc2lvbiog
d2RndEV4dCA9IGlXZWJLaXRDb250cm9sLT5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgaWYoIHdk
Z3RFeHQgKQ0KKyAgICAgICAgew0KKyAgICAgICAgTVdpZGdldEVuZ2luZUJyaWRnZSogd2RndEJy
aWRnZSA9ICZ3ZGd0RXh0LT5XaWRnZXRFbmdpbmVCcmlkZ2UoKTsNCisgICAgICAgIGlmKCB3ZGd0
QnJpZGdlICkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgd2RndEJyaWRnZS0+U2V0V2lk
Z2V0VmlzaWJpbGl0eShhVmlzaWJsZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyNl
bmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KICAgICB9DQogDQogLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQpAQCAtODc0LDYgKzg5MCwxNyBAQA0KICAgICAvLyBwdXQgb2Zmc2NyZWVuIGJpdG1h
cCBvbnRvIHRoZSBzY3JlZW4NCiAgIGlSZW5kZXJUYXJnZXQtPkZsaXAoIFJlY3QoKS5pVGwsIGdj
ICk7DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgQ1dpZGdldEV4dGVuc2lv
biogd2RndEV4dCA9IGlXZWJLaXRDb250cm9sLT5XaWRnZXRFeHRlbnNpb24oKTsNCisgICAgaWYg
KHdkZ3RFeHQpDQorICAgICAgICB7DQorICAgICAgICBUV2lkZ2V0UmVuZGVyZXIqIHdpZGdldFJl
bmRlcmVyID0gaVdlYktpdENvbnRyb2wtPldpZGdldEV4dGVuc2lvbigpLT5XaWRnZXRSZW5kZXJl
cigpOw0KKyAgICAgICAgaWYgKHdpZGdldFJlbmRlcmVyICYmIHdpZGdldFJlbmRlcmVyLT5UcmFu
c2l0aW9uSW5Qcm9ncmVzcygpKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICB3aWRnZXRS
ZW5kZXJlci0+RHJhd1RyYW5zaXRpb24oZ2MsIE9mZnNjcmVlbkJpdG1hcCgpKTsNCisgICAgICAg
ICAgICB9DQorICAgICAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogICAgIGlm
IChpSXNQYWdlU2NhbGVyRW5hYmxlZCkNCiAgICAgICAgIHsNCiAgICAgICAgIGlQYWdlU2NhbGVy
LT5EcmF3KCBnYyxhUmVjdCApOw0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0
RXh0ZW5zaW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lk
Z2V0RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvc3Jj
L1dpZGdldEV4dGVuc2lvbi5jcHAJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDUxMCBAQA0KKy8q
DQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqICBOYW1lICAgICAgICA6IFdlYktpdFdpZGdl
dEludGVyZmFjZS5jcHANCisqICBQYXJ0IG9mICAgICA6IFdlYkVuZ2luZS9XZWJLaXRXaWRnZXRJ
bnRlcmZhY2UNCisqICBEZXNjcmlwdGlvbiA6DQorKiAgVmVyc2lvbiAgICAgOiAyLjEuMQ0KKyoN
CisqICBDb3B5cmlnaHQgKGMpIDIwMDQgTm9raWEgQ29ycG9yYXRpb24uDQorKiAgVGhpcyBtYXRl
cmlhbCwgaW5jbHVkaW5nIGRvY3VtZW50YXRpb24gYW5kIGFueSByZWxhdGVkDQorKiAgY29tcHV0
ZXIgcHJvZ3JhbXMsIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgY29udHJvbGxlZCBieQ0KKyog
IE5va2lhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIGFyZSByZXNlcnZlZC4gQ29weWluZywNCisq
ICBpbmNsdWRpbmcgcmVwcm9kdWNpbmcsIHN0b3JpbmcsIGFkYXB0aW5nIG9yIHRyYW5zbGF0aW5n
LCBhbnkNCisqICBvciBhbGwgb2YgdGhpcyBtYXRlcmlhbCByZXF1aXJlcyB0aGUgcHJpb3Igd3Jp
dHRlbiBjb25zZW50IG9mDQorKiAgTm9raWEgQ29ycG9yYXRpb24uIFRoaXMgbWF0ZXJpYWwgYWxz
byBjb250YWlucyBjb25maWRlbnRpYWwNCisqICBpbmZvcm1hdGlvbiB3aGljaCBtYXkgbm90IGJl
IGRpc2Nsb3NlZCB0byBvdGhlcnMgd2l0aG91dCB0aGUNCisqICBwcmlvciB3cml0dGVuIGNvbnNl
bnQgb2YgTm9raWEgQ29ycG9yYXRpb24uDQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqLw0K
Kw0KKy8vIElOQ0xVREUgRklMRVMNCisjaW5jbHVkZSA8ZTMyc3RkLmg+DQorI2luY2x1ZGUgPGVp
a2Vudi5oPg0KKyNpbmNsdWRlIDxhcGdjbGkuaD4NCisjaW5jbHVkZSA8YXBndGFzay5oPg0KKyNp
bmNsdWRlIDxicm93c2VybGF1bmNoZXIuaD4NCisNCisjaW5jbHVkZSAiV2lkZ2V0RXh0ZW5zaW9u
LmgiDQorI2luY2x1ZGUgIldpZGdldFByZWZlcmVuY2VzLmgiDQorI2luY2x1ZGUgIldpZGdldFJl
bmRlcmVyLmgiDQorI2luY2x1ZGUgIldpZGdldEV2ZW50SGFuZGxlci5oIg0KKyNpbmNsdWRlICJX
ZWJDb3JlV2lkZ2V0LmgiDQorI2luY2x1ZGUgIldlYktpdENvbnRyb2wuaCINCisjaW5jbHVkZSAi
V2ViS2l0Q3Vyc29yLmgiDQorI2luY2x1ZGUgIldlYktpdEZyYW1lLmgiDQorI2luY2x1ZGUgIldl
YktpdFZpZXcuaCINCisjaW5jbHVkZSAiQnJDdGwuaCINCisjaW5jbHVkZSAiQnJDdGxTY3JvbGxp
bmdQcm92aWRlci5oIg0KKy8vI2luY2x1ZGUgIlNjcm9sbGJhci5oIg0KKw0KKy8vIEVYVEVSTkFM
IERBVEEgU1RSVUNUVVJFUw0KKw0KKy8vIEVYVEVSTkFMIEZVTkNUSU9OIFBST1RPVFlQRVMNCisN
CisvLyBDT05TVEFOVFMNCisNCisvLyBNQUNST1MNCisNCisvLyBMT0NBTCBDT05TVEFOVFMgQU5E
IE1BQ1JPUw0KK2NvbnN0IFRJbnQgS09wdGlvbnNDbWRJZCA9IDYwMDA7DQorY29uc3QgVEludCBL
TWF4T3B0aW9uc01lbnUgPSAyNTsNCitjb25zdCBUSW50IEtNYXhPcHRpb25zTWVudUl0ZW1TaXpl
ID0gMjU2OyAvL2J5dGVzDQorDQorDQorLy8vDQorY29uc3QgVEludCBLTWVkaWFHYWxsZXJ5VWlk
ID0gMHgxMDFGODU5OTsNCitfTElUKEtNZWRpYUdhbGxlcnksIm1lZGlhZ2FsbGVyeSIpOw0KK2Nv
bnN0IFRJbnQgS1dlYkJyb3dzZXJVaWQgPSAweDEwMDA4RDM5Ow0KK19MSVQoS1dlYkJyb3dzZXIs
IndlYmJyb3dzZXIiKTsNCitjb25zdCBUSW50IEtDYW1BcHBFbmdpbmVVaWQgPSAweDEwMUY4NTdB
Ow0KK19MSVQoS0NhbUFwcEVuZ2luZSwiY2FtZXJhIik7DQorDQorLy8gTU9EVUxFIERBVEEgU1RS
VUNUVVJFUw0KK3VzaW5nIG5hbWVzcGFjZSBLSlM7DQorDQorLy8gTE9DQUwgRlVOQ1RJT04gUFJP
VE9UWVBFUw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RW5naW5lQ2Fs
bEJhY2s6Ok5ld0wNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1dp
ZGdldEV4dGVuc2lvbiogQ1dpZGdldEV4dGVuc2lvbjo6TmV3TCgNCisgICAgQ1dlYktpdFZpZXcm
IGFXZWJLaXRWaWV3LA0KKyAgICBNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjayApDQor
ICAgIHsNCisgICAgQ1dpZGdldEV4dGVuc2lvbiogc2VsZiA9IG5ldyAoRUxlYXZlKSBDV2lkZ2V0
RXh0ZW5zaW9uKGFXZWJLaXRWaWV3LGFXaWRnZXRDYWxsYmFjayk7DQorICAgIENsZWFudXBTdGFj
azo6UHVzaEwoc2VsZik7DQorICAgIHNlbGYtPkNvbnN0cnVjdEwoKTsNCisgICAgQ2xlYW51cFN0
YWNrOjpQb3AoKTsNCisgICAgcmV0dXJuIHNlbGY7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6Q1dpZGdldEV4dGVuc2lvbg0KKy8vDQor
Ly8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0RXh0ZW5zaW9uOjpDV2lk
Z2V0RXh0ZW5zaW9uKA0KKyAgICBDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsDQorICAgIE1XaWRn
ZXRDYWxsYmFjayYgYVdpZGdldENhbGxiYWNrICkNCisgICAgOmlXZWJLaXRWaWV3KCZhV2ViS2l0
VmlldyksDQorICAgIGlXaWRnZXRDYWxsYmFjaygmYVdpZGdldENhbGxiYWNrKQ0KKyAgICB7DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
fkNXaWRnZXRFeHRlbnNpb24NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorQ1dpZGdldEV4dGVuc2lvbjo6fkNXaWRnZXRFeHRlbnNpb24oKQ0KKyAgICB7DQorICAgIGlm
IChpUHJlZmVyZW5jZXMpDQorICAgICAgICB7DQorICAgICAgICBUUkFQX0lHTk9SRShpUHJlZmVy
ZW5jZXMtPlNhdmVMKCkpOw0KKyAgICAgICAgfQ0KKyAgICBkZWxldGUgaVByZWZlcmVuY2VzOw0K
KyAgICBkZWxldGUgaVdpZGdldFJlbmRlcmVyOw0KKyAgICBkZWxldGUgaVdpZGdldEVuZ2luZUJy
aWRnZTsNCisgICAgZGVsZXRlIGlXaWRnZXRCYXNlUGF0aDsNCisgICAgZGVsZXRlIGlXaWRnZXRC
dW5kbGVJZDsNCisgICAgaUFwcFVpZE1hcC5SZXNldEFuZERlc3Ryb3koKTsNCisgICAgaUxpYnJh
cnkuQ2xvc2UoKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lk
Z2V0RXh0ZW5zaW9uOjpDb25zdHJ1Y3RMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6Q29uc3RydWN0TCgpDQorICAgIHsNCisN
CisgICAgaVByZWZlcmVuY2VzID0gQ1dpZGdldFByZWZlcmVuY2VzOjpOZXdMKCp0aGlzKTsNCisg
ICAgaVdpZGdldFJlbmRlcmVyID0gbmV3IChFTGVhdmUpIFRXaWRnZXRSZW5kZXJlcigqaVdlYktp
dFZpZXcpOw0KKyAgICBMb2FkV2lkZ2V0RW5naW5lRGxsTCgpOw0KKyAgICBpV2lkZ2V0RW5naW5l
QnJpZGdlLT5TZXRPYnNlcnZlcigqdGhpcyk7DQorICAgIENyZWF0ZUFwcEhhc2hUYWJsZUwoKTsN
CisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpDcmVhdGVBcHBIYXNoVGFibGVMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6Q3JlYXRlQXBwSGFzaFRhYmxlTCgpDQor
ICAgIHsNCisgICAgVEludCogdWlkbWcgPSBuZXcgVEludChLTWVkaWFHYWxsZXJ5VWlkKTsNCisg
ICAgSEJ1ZkMqIGJ1Zm1lZGlhID0gSEJ1ZkM6Ok5ld0woVFB0ckMoS01lZGlhR2FsbGVyeSkuTGVu
Z3RoKCkpOw0KKyAgICAqYnVmbWVkaWEgPSBLTWVkaWFHYWxsZXJ5Ow0KKw0KKyAgICBUSW50KiB1
aWR3ZWIgPSBuZXcgVEludChLV2ViQnJvd3NlclVpZCk7DQorICAgIEhCdWZDKiBidWZ3ZWIgPSBI
QnVmQzo6TmV3TChUUHRyQyhLV2ViQnJvd3NlcikuTGVuZ3RoKCkpOw0KKyAgICAqYnVmd2ViID0g
S1dlYkJyb3dzZXI7DQorDQorICAgIFRJbnQqIHVpZGNhbSA9IG5ldyBUSW50KEtDYW1BcHBFbmdp
bmVVaWQpOw0KKyAgICBIQnVmQyogYnVmY2FtID0gSEJ1ZkM6Ok5ld0woVFB0ckMoS0NhbUFwcEVu
Z2luZSkuTGVuZ3RoKCkpOw0KKyAgICAqYnVmY2FtID0gS0NhbUFwcEVuZ2luZTsNCisNCisgICAg
aUFwcFVpZE1hcC5JbnNlcnRMKGJ1Zm1lZGlhLHVpZG1nKTsNCisgICAgaUFwcFVpZE1hcC5JbnNl
cnRMKGJ1ZndlYix1aWR3ZWIpOw0KKyAgICBpQXBwVWlkTWFwLkluc2VydEwoYnVmY2FtLHVpZGNh
bSk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVu
c2lvbjo6TGF1bmNoQXBwbGljYXRpb25MDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6TGF1bmNoQXBwbGljYXRpb25MKGNvbnN0
IFRVaWQmIGFVaWQsIGNvbnN0IFREZXNDJiBhUGFyYW0pDQorICAgIHsNCisNCisgICAgUkFwYUxz
U2Vzc2lvbiBhcGFMc1Nlc3Npb247DQorICAgIFRBcGFUYXNrTGlzdCB0YXNrTGlzdChDRWlrb25F
bnY6OlN0YXRpYygpLT5Xc1Nlc3Npb24oKSk7DQorICAgIFRBcGFUYXNrIHRhc2sgPSB0YXNrTGlz
dC5GaW5kQXBwKGFVaWQpOw0KKyAgICBpZiAodGFzay5FeGlzdHMoKSkNCisgICAgICAgIHsNCisg
ICAgICAgIHRhc2suQnJpbmdUb0ZvcmVncm91bmQoKTsNCisgICAgICAgIGlmIChhUGFyYW0uTGVu
Z3RoKCkgPiAwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBIQnVmQzgqIHBhcmFtOCA9
IEhCdWZDODo6TmV3TEMoYVBhcmFtLkxlbmd0aCgpKTsNCisgICAgICAgICAgICBwYXJhbTgtPkRl
cygpLkFwcGVuZChhUGFyYW0pOw0KKyAgICAgICAgICAgIHRhc2suU2VuZE1lc3NhZ2UoVFVpZDo6
VWlkKDApLCpwYXJhbTgpOw0KKyAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJv
eShwYXJhbTgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgZWxzZQ0KKyAgICAg
ICAgew0KKyAgICAgICAgVEludCBlQ29ubmVjdCA9IEtFcnJOb25lOw0KKyAgICAgICAgaWYgKCFh
cGFMc1Nlc3Npb24uSGFuZGxlKCkpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGVDb25u
ZWN0ID0gYXBhTHNTZXNzaW9uLkNvbm5lY3QoKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAg
ICBpZiAoZUNvbm5lY3QgPT0gS0Vyck5vbmUpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAg
IFRUaHJlYWRJZCB0aHJlYWRJZDsNCisgICAgICAgICAgICBhcGFMc1Nlc3Npb24uU3RhcnREb2N1
bWVudChhUGFyYW0sIGFVaWQsIHRocmVhZElkKTsNCisgICAgICAgICAgICBhcGFMc1Nlc3Npb24u
Q2xvc2UoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorDQorICAgIH0NCisNCisNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T3BlbkFwcGxpY2F0
aW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdl
dEV4dGVuc2lvbjo6T3BlbkFwcGxpY2F0aW9uKGNvbnN0IFREZXNDJiBhQXBwTmFtZSwgY29uc3Qg
VERlc0MmIGFQYXJhbSkNCisgICAgew0KKw0KKyAgICBUSW50KiB1aWQgPSBpQXBwVWlkTWFwLkZp
bmQoYUFwcE5hbWUpOw0KKyAgICBpZiAodWlkKQ0KKyAgICAgICAgew0KKyAgICAgICAgVFVpZCB1
aWRBcHAgPSBUVWlkOjpVaWQoKnVpZCk7DQorICAgICAgICBMYXVuY2hBcHBsaWNhdGlvbkwodWlk
QXBwLGFQYXJhbSk7DQorICAgICAgICB9DQorDQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T3BlblVybA0KKy8vDQorLy8NCisvLw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9wZW5VcmwoY29u
c3QgVERlc0MmIGFVcmwpDQorICAgIHsNCisgICAgSEJ1ZkMqIHBhcmFtID0gSEJ1ZkM6Ok5ld0xD
KGFVcmwuTGVuZ3RoKCkrMik7DQorICAgIHBhcmFtLT5EZXMoKS5BcHBlbmQoX0woIjQgIikpOw0K
KyAgICBwYXJhbS0+RGVzKCkuQXBwZW5kKGFVcmwpOw0KKyAgICBUUkFQX0lHTk9SRShMYXVuY2hB
cHBsaWNhdGlvbkwoVFVpZDo6VWlkKEtXZWJCcm93c2VyVWlkKSwgKnBhcmFtKSk7DQorICAgIENs
ZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveShwYXJhbSk7DQorICAgIH0NCisNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6UHJlZmVyZW5jZUZvcktleQ0KKy8v
DQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitUSW50IENXaWRnZXRFeHRlbnNp
b246OlByZWZlcmVuY2VGb3JLZXkoY29uc3QgVERlc0MmIGFLZXksIFRQdHJDJiBhVmFsdWUpDQor
ICAgIHsNCisgICAgcmV0dXJuIGlQcmVmZXJlbmNlcy0+UHJlZmVyZW5jZUwoYUtleSwgYVZhbHVl
KTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpQcmVwYXJlRm9yVHJhbnNpdGlvbg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlByZXBhcmVGb3JUcmFuc2l0aW9uKGNv
bnN0IFREZXNDJiBhVHJhbnNpdGlvbikNCisgICAgew0KKyAgICBpV2lkZ2V0UmVuZGVyZXItPlBy
ZXBhcmVGb3JUcmFuc2l0aW9uTChhVHJhbnNpdGlvbik7DQorICAgIH0NCisNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6UGVyZm9ybVRyYW5zaXRpb24NCisv
Lw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0RXh0ZW5z
aW9uOjpQZXJmb3JtVHJhbnNpdGlvbigpDQorICAgIHsNCisgICAgaVdpZGdldFJlbmRlcmVyLT5Q
ZXJmb3JtVHJhbnNpdGlvbkwoKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQcmVmZXJlbmNlRm9yS2V5DQorLy8NCisvLw0KKy8v
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0UHJl
ZmVyZW5jZUZvcktleShjb25zdCBURGVzQyYgYUtleSwgY29uc3QgVERlc0MmIGFWYWx1ZSkNCisg
ICAgew0KKyAgICBpUHJlZmVyZW5jZXMtPlNldFByZWZlcmVuY2VMKGFLZXksIGFWYWx1ZSk7DQor
ICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lv
bjo6U2V0U2Nyb2xsQmFyDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
K3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0U2Nyb2xsQmFyKFRCb29sIC8qYVZpc2libGUqLykN
CisgICAgew0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRF
eHRlbnNpb246OlNldE5hdmlnYXRpb25FbmFibGVkDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0TmF2aWdhdGlvbkVuYWJs
ZWQoVEJvb2wgYUVuYWJsZSkNCisgICAgew0KKyAgICBpTmF2aWdhdGlvbkVuYWJsZWQgPSBhRW5h
YmxlOw0KKyAgICBpV2ViS2l0Vmlldy0+U2V0VGFiYmVkTmF2aWdhdGlvbiggIWFFbmFibGUgKTsN
CisgICAgaWYgKCBpV2ViS2l0Vmlldy0+Q3Vyc29yKCkgKQ0KKyAgICAgICAgew0KKyAgICAgICAg
aVdlYktpdFZpZXctPkN1cnNvcigpLT5DdXJzb3JVcGRhdGUoIGFFbmFibGUgKTsNCisgICAgICAg
IH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpBZGRPcHRpb25zTWVudUl0ZW0NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorVEludCBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25zTWVudUl0ZW0oY29uc3Qg
VERlc0MmIGFUZXh0KQ0KKyAgICB7DQorICAgIFRJbnQgY21kSWQgPSAoVEJyQ3RsRGVmczo6RUNv
bW1hbmRJZEJhc2UgKyBUQnJDdGxEZWZzOjpFQ29tbWFuZElkU3Vic2NyaWJlVG9CYXNlICsgS09w
dGlvbnNDbWRJZCkgKyBpTWVudUl0ZW1zLkNvdW50KCk7DQorDQorICAgIGlmIChpTWVudUl0ZW1z
LkNvdW50KCkgPD0gS01heE9wdGlvbnNNZW51ICYmDQorICAgICAgICBhVGV4dC5MZW5ndGgoKSA+
IDAgJiYgYVRleHQuTGVuZ3RoKCkgPD0gS01heE9wdGlvbnNNZW51SXRlbVNpemUgKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgVE1lbnVJdGVtIGl0ZW07DQorICAgICAgICBpdGVtLmlUZXh0ID0gYVRl
eHQuQWxsb2MoKTsNCisgICAgICAgIGl0ZW0uaUNtZElkID0gY21kSWQ7DQorICAgICAgICBpTWVu
dUl0ZW1zLkFwcGVuZChpdGVtKTsNCisgICAgICAgIH0NCisNCisgICAgcmV0dXJuIGNtZElkOw0K
KyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246
OkNsZWFyT3B0aW9uc01lbnUNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpDbGVhck9wdGlvbnNNZW51KCkNCisgICAgew0KKw0K
KyAgICBmb3IgKFRJbnQgbj0wOyBuPGlNZW51SXRlbXMuQ291bnQoKTsgbisrKQ0KKyAgICAgICAg
ew0KKyAgICAgICAgZGVsZXRlIGlNZW51SXRlbXNbbl0uaVRleHQ7DQorICAgICAgICB9DQorDQor
ICAgIGlNZW51SXRlbXMuUmVzZXQoKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25NZW51SXRlbXNMDQorLy8NCisvLw0K
Ky8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6QWRk
T3B0aW9uTWVudUl0ZW1zTChDRWlrTWVudVBhbmUmIGFNZW51UGFuZSkNCisgICAgew0KKw0KKyAg
ICBpZiAoIGFNZW51UGFuZS5OdW1iZXJPZkl0ZW1zSW5QYW5lKCkgPiAxKQ0KKyAgICAgICAgew0K
KyAgICAgICAgYU1lbnVQYW5lLkRlbGV0ZUJldHdlZW5NZW51SXRlbXMoIDAsIGFNZW51UGFuZS5O
dW1iZXJPZkl0ZW1zSW5QYW5lKCktMiApOw0KKyAgICAgICAgfQ0KKw0KKw0KKyAgICBmb3IgKFRJ
bnQgbj1pTWVudUl0ZW1zLkNvdW50KCktMTsgbj49MDsgbi0tKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgQ0Vpa01lbnVQYW5lSXRlbTo6U0RhdGEgbWVudURhdGE7DQorICAgICAgICBtZW51RGF0YS5p
Q29tbWFuZElkID0gaU1lbnVJdGVtc1tuXS5pQ21kSWQ7DQorICAgICAgICBtZW51RGF0YS5pQ2Fz
Y2FkZUlkID0gMDsNCisgICAgICAgIG1lbnVEYXRhLmlGbGFncyA9IDA7DQorICAgICAgICBtZW51
RGF0YS5pVGV4dCA9ICppTWVudUl0ZW1zW25dLmlUZXh0Ow0KKyAgICAgICAgYU1lbnVQYW5lLklu
c2VydE1lbnVJdGVtTChtZW51RGF0YSwwKTsNCisgICAgICAgIH0NCisNCisgICAgfQ0KKw0KKw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPcHRpb25zTWVu
dUl0ZW1TZWxlY3RlZA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2
b2lkIENXaWRnZXRFeHRlbnNpb246Ok9wdGlvbnNNZW51SXRlbVNlbGVjdGVkKFRJbnQgYUNvbW1h
bmQpDQorICAgIHsNCisgICAgaWYgKGlXaWRnZXRFbmdpbmVCcmlkZ2UpDQorICAgICAgICB7DQor
ICAgICAgICBUSW50IG4gPSBhQ29tbWFuZC0oVEJyQ3RsRGVmczo6RUNvbW1hbmRJZEJhc2UgKyBU
QnJDdGxEZWZzOjpFQ29tbWFuZElkU3Vic2NyaWJlVG9CYXNlICsgS09wdGlvbnNDbWRJZCk7DQor
ICAgICAgICBpZiAobj49MCAmJiBuPGlNZW51SXRlbXMuQ291bnQoKSkNCisgICAgICAgICAgICB7
DQorICAgICAgICAgICAgSEJ1ZkMqIGl0ZW1UZXh0ID0gaU1lbnVJdGVtc1tuXS5pVGV4dDsNCisg
ICAgICAgICAgICBpV2lkZ2V0RW5naW5lQnJpZGdlLT5PcHRpb25zTWVudUl0ZW1TZWxlY3RlZCgq
aXRlbVRleHQpOw0KKyAgICAgICAgICAgIE9uU2hvd1NlbGVjdGVkKCk7DQorICAgICAgICAgICAg
fQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENX
aWRnZXRFeHRlbnNpb246Ok9uSGlkZVNlbGVjdGVkDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6T25IaWRlU2VsZWN0ZWQoKQ0K
KyAgICB7DQorICAgIGlmIChpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0V2lkZ2V0VmlzaWJpbGl0eShFRmFsc2UpOw0KKyAg
ICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRF
eHRlbnNpb246Ok9uU2hvd1NlbGVjdGVkDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6T25TaG93U2VsZWN0ZWQoKQ0KKyAgICB7
DQorICAgIGlmKGlXaWRnZXRFbmdpbmVCcmlkZ2UpDQorICAgICAgICB7DQorICAgICAgICBpV2lk
Z2V0RW5naW5lQnJpZGdlLT5TZXRXaWRnZXRWaXNpYmlsaXR5KEVUcnVlKTsNCisgICAgICAgIH0N
CisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpjcmVhdGVXaWRnZXRPYmplY3QNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQordm9pZCogQ1dpZGdldEV4dGVuc2lvbjo6Y3JlYXRlV2lkZ2V0T2JqZWN0KHZvaWQq
IGV4ZWMpDQorICAgIHsNCisgICAgaWYoIGlXaWRnZXRFbmdpbmVCcmlkZ2UgKQ0KKyAgICAgICAg
ew0KKyAgICAgICAgcmV0dXJuIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPldpZGdldChleGVjKTsNCisg
ICAgICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkxvYWRXaWRnZXRFbmdpbmVEbGxMDQorLy8N
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpM
b2FkV2lkZ2V0RW5naW5lRGxsTCgpDQorICAgIHsNCisNCisgICAgaWYoIWlXaWRnZXRFbmdpbmVC
cmlkZ2UpDQorICAgICAgICB7DQorDQorICAgICAgICBfTElUKCBLQnJvd3NlcldpZGdldEVuZ2lu
ZU5hbWUsICJ3aWRnZXRlbmdpbmUuZGxsIiApOw0KKyAgICAgICAgVXNlcjo6TGVhdmVJZkVycm9y
KCBpTGlicmFyeS5Mb2FkKCBLQnJvd3NlcldpZGdldEVuZ2luZU5hbWUgKSApOw0KKw0KKyAgICAg
ICAgVExpYnJhcnlGdW5jdGlvbiBlbnRyeSA9IGlMaWJyYXJ5Lkxvb2t1cCgxKTsNCisNCisgICAg
ICAgIGlmICghZW50cnkpDQorICAgICAgICAgICAgVXNlcjo6TGVhdmUoS0Vyck5vdEZvdW5kKTsN
CisNCisgICAgICAgIC8vQ2FsbCB0aGUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgaW5zdGFuY2Ugb2Yg
Y2xhc3MNCisgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UgPSAoTVdpZGdldEVuZ2luZUJyaWRn
ZSopIGVudHJ5KCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTA0KKy8vDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0UGFyYW1MKFRCckN0
bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIGNvbnN0IFREZXNDJiBhVmFsdWUpDQor
ICAgIHsNCisgICAgc3dpdGNoKGFQYXJhbSkNCisgICAgICAgIHsNCisgICAgICAgIGNhc2UgVEJy
Q3RsRGVmczo6RVdpZGdldEJhc2VQYXRoOg0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBp
V2lkZ2V0QmFzZVBhdGggPSBhVmFsdWUuQWxsb2NMKCk7DQorICAgICAgICAgICAgaVByZWZlcmVu
Y2VzLT5Mb2FkTCgpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAg
ICAgICBjYXNlIFRCckN0bERlZnM6OkVXaWRnZXRCdW5kbGVJZDoNCisgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgaVdpZGdldEJ1bmRsZUlkID0gYVZhbHVlLkFsbG9jTCgpOw0KKyAgICAgICAg
ICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAg
ICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTA0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0UGFyYW1MKFRCckN0bERl
ZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIFRVaW50IGFWYWx1ZSkNCisgICAgew0KKyAg
ICBzd2l0Y2goYVBhcmFtKQ0KKyAgICAgICAgew0KKyAgICAgICAgY2FzZSBUQnJDdGxEZWZzOjpF
V2lkZ2V0SWRlbnRpZmllcjoNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgaVdpZGdldElk
ID0gYVZhbHVlOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAg
IGRlZmF1bHQ6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisNCisv
L0VORCBPRiBGSUxFDQorDQorDQorDQorDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9X
aWRnZXRQcmVmZXJlbmNlcy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcv
c3JjL1dpZGdldFByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMCkNCisrKyBXZWJLaXQvQnJvd3Nl
clZpZXcvc3JjL1dpZGdldFByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEs
MjkxIEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5hbWUgICAgICAgIDog
V2ViS2l0V2lkZ2V0SW50ZXJmYWNlLmNwcA0KKyogIFBhcnQgb2YgICAgIDogV2ViRW5naW5lL1dl
YktpdFdpZGdldEludGVyZmFjZQ0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6
IDIuMS4xDQorKg0KKyogIENvcHlyaWdodCAoYykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbi4NCisq
ICBUaGlzIG1hdGVyaWFsLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGF0ZWQN
CisqICBjb21wdXRlciBwcm9ncmFtcywgaXMgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBjb250cm9s
bGVkIGJ5DQorKiAgTm9raWEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBD
b3B5aW5nLA0KKyogIGluY2x1ZGluZyByZXByb2R1Y2luZywgc3RvcmluZywgYWRhcHRpbmcgb3Ig
dHJhbnNsYXRpbmcsIGFueQ0KKyogIG9yIGFsbCBvZiB0aGlzIG1hdGVyaWFsIHJlcXVpcmVzIHRo
ZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YNCisqICBOb2tpYSBDb3Jwb3JhdGlvbi4gVGhpcyBt
YXRlcmlhbCBhbHNvIGNvbnRhaW5zIGNvbmZpZGVudGlhbA0KKyogIGluZm9ybWF0aW9uIHdoaWNo
IG1heSBub3QgYmUgZGlzY2xvc2VkIHRvIG90aGVycyB3aXRob3V0IHRoZQ0KKyogIHByaW9yIHdy
aXR0ZW4gY29uc2VudCBvZiBOb2tpYSBDb3Jwb3JhdGlvbi4NCisqID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KKyovDQorDQorLy8gSU5DTFVERSBGSUxFUw0KKyNpbmNsdWRlIDxlMzJzdGQuaD4NCisj
aW5jbHVkZSA8UzMyRklMRS5IPg0KKyNpbmNsdWRlIDxmMzJmaWxlLmg+DQorI2luY2x1ZGUgPHVy
aTE2Lmg+DQorI2luY2x1ZGUgIldpZGdldFByZWZlcmVuY2VzLmgiDQorI2luY2x1ZGUgIldpZGdl
dEV4dGVuc2lvbi5oIg0KKw0KKy8vIEVYVEVSTkFMIERBVEEgU1RSVUNUVVJFUw0KKw0KKy8vIEVY
VEVSTkFMIEZVTkNUSU9OIFBST1RPVFlQRVMNCisNCisvLyBDT05TVEFOVFMNCitjb25zdCBUSW50
IEtNYXhJbnRMZW5ndGggPSAxMDsNCitjb25zdCBUSW50IEtNYXhLZXlWYWx1ZVNpemUgPSA0MDk2
OyAvLzQgaw0KKw0KK19MSVQoIEtLZXlGb3JtYXQsICIlZC4lUyIgKTsNCitfTElUKCBLUHJlZnNG
aWxlLCJwcmVmcy5kYXQiICk7DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRn
ZXRQcmVmZXJlbmNlczo6TmV3TA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCitDV2lkZ2V0UHJlZmVyZW5jZXMqIENXaWRnZXRQcmVmZXJlbmNlczo6TmV3TChDV2lkZ2V0
RXh0ZW5zaW9uJiBhV2lkZ2V0RXh0ZW5zaW9uKQ0KKyAgICB7DQorICAgIENXaWRnZXRQcmVmZXJl
bmNlcyogc2VsZiA9IE5ld0xDKGFXaWRnZXRFeHRlbnNpb24pOw0KKyAgICBDbGVhbnVwU3RhY2s6
OlBvcCggc2VsZiApOw0KKyAgICByZXR1cm4gc2VsZjsNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0xDDQorLy8NCisvLw0K
Ky8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NXaWRnZXRQcmVmZXJlbmNlcyogQ1dpZGdl
dFByZWZlcmVuY2VzOjpOZXdMQyhDV2lkZ2V0RXh0ZW5zaW9uJiBhV2lkZ2V0RXh0ZW5zaW9uKQ0K
KyAgICB7DQorICAgIENXaWRnZXRQcmVmZXJlbmNlcyogc2VsZiA9IG5ldyAoIEVMZWF2ZSApIENX
aWRnZXRQcmVmZXJlbmNlcyhhV2lkZ2V0RXh0ZW5zaW9uKTsNCisgICAgQ2xlYW51cFN0YWNrOjpQ
dXNoTCggc2VsZiApOw0KKyAgICBzZWxmLT5Db25zdHJ1Y3RMKCk7DQorICAgIHJldHVybiBzZWxm
Ow0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRQcmVmZXJl
bmNlczo6Q1dpZGdldFByZWZlcmVuY2VzDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KK0NXaWRnZXRQcmVmZXJlbmNlczo6Q1dpZGdldFByZWZlcmVuY2VzKENXaWRnZXRF
eHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24pDQorICAgIDogaVdpZGdldEV4dGVuc2lvbigmYVdp
ZGdldEV4dGVuc2lvbikNCisgICAgew0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIENXaWRnZXRQcmVmZXJlbmNlczo6fkNXaWRnZXRQcmVmZXJlbmNlcw0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDV2lkZ2V0UHJlZmVyZW5jZXM6On5DV2lk
Z2V0UHJlZmVyZW5jZXMoKQ0KKyAgICB7DQorICAgIGlNYXAuUmVzZXRBbmREZXN0cm95KCk7DQor
ICAgIGlNYXAuQ2xvc2UoKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDV2lkZ2V0UHJlZmVyZW5jZXM6OkNvbnN0cnVjdEwNCisvLw0KKy8vDQorLy8NCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0UHJlZmVyZW5jZXM6OkNvbnN0cnVjdEwoKQ0K
KyAgICB7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFBy
ZWZlcmVuY2VzOjpQcmVmZXJlbmNlTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCitUSW50IENXaWRnZXRQcmVmZXJlbmNlczo6UHJlZmVyZW5jZUwoY29uc3QgVERlc0Mm
IGFLZXksIFRQdHJDJiBhVmFsdWUpDQorICAgIHsNCisNCisgICAgVEludCByU3VjY2VzcyA9IEtF
cnJOb3RGb3VuZDsNCisNCisgICAgaWYgKGFLZXkuTGVuZ3RoKCkgPD0gS01heEtleVZhbHVlU2l6
ZSkNCisgICAgICAgIHsNCisgICAgICAgIEhCdWZDKiBrZXkgPSBIQnVmQzo6TmV3TEMoYUtleS5M
ZW5ndGgoKStLTWF4SW50TGVuZ3RoKzEpOw0KKyAgICAgICAga2V5LT5EZXMoKS5Gb3JtYXQoIEtL
ZXlGb3JtYXQsIGlXaWRnZXRFeHRlbnNpb24tPkdldFdpZGdldElkKCksICZhS2V5ICk7DQorDQor
ICAgICAgICBURGVzQyogcmVzID0gaU1hcC5GaW5kKCprZXkpOw0KKyAgICAgICAgaWYgKHJlcykN
CisgICAgICAgICAgICB7DQorICAgICAgICAgICAgYVZhbHVlLlNldCgqcmVzKTsNCisgICAgICAg
ICAgICByU3VjY2VzcyA9IEtFcnJOb25lOw0KKyAgICAgICAgICAgIH0NCisNCisNCisgICAgICAg
IENsZWFudXBTdGFjazo6UG9wKGtleSk7DQorDQorICAgICAgICB9DQorDQorICAgICByZXR1cm4g
clN1Y2Nlc3M7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdl
dFByZWZlcmVuY2VzOjpTZXRQcmVmZXJlbmNlTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldFByZWZlcmVu
Y2VzOjpTZXRQcmVmZXJlbmNlTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCit2b2lkIENXaWRnZXRQcmVmZXJlbmNlczo6U2V0UHJlZmVyZW5jZUwoY29uc3QgVERlc0Mm
IGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUpDQorICAgIHsNCisNCisgICAgaWYgKGFLZXkuTGVu
Z3RoKCkgPD0gS01heEtleVZhbHVlU2l6ZSkNCisgICAgICAgIHsNCisNCisgICAgICAgIEhCdWZD
KiBrZXkgPSBIQnVmQzo6TmV3TEMoYUtleS5MZW5ndGgoKStLTWF4SW50TGVuZ3RoKzEpOw0KKyAg
ICAgICAga2V5LT5EZXMoKS5Gb3JtYXQoIEtLZXlGb3JtYXQsIGlXaWRnZXRFeHRlbnNpb24tPkdl
dFdpZGdldElkKCksICZhS2V5ICk7DQorDQorICAgICAgICBpZiAoYVZhbHVlLkxlbmd0aCgpIDw9
IEtNYXhLZXlWYWx1ZVNpemUpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIEhCdWZDKiB2
YWx1ZSA9IGFWYWx1ZS5BbGxvY0xDKCk7DQorICAgICAgICAgICAgaU1hcC5JbnNlcnRMKGtleSx2
YWx1ZSk7DQorICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AodmFsdWUpOw0KKyAgICAgICAg
ICAgIENsZWFudXBTdGFjazo6UG9wKGtleSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgZWxz
ZQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBpTWFwLlJlbW92ZShrZXkpOw0KKyAgICAg
ICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveShrZXkpOw0KKyAgICAgICAgICAgIH0N
CisNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNhdmUNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQordm9pZCBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNhdmVMKCkNCisgICAgew0KKyAg
ICBSRnMgZnM7DQorICAgIGlmICggZnMuQ29ubmVjdCgpID09IEtFcnJOb25lICkNCisgICAgICAg
IHsNCisNCisgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKCBmcyApOw0KKw0KKyAgICAgICAgSEJ1
ZkMqIGZpbGVQYXRoID0gZmlsZVBhdGggPSBIQnVmQzo6TmV3TEMoaVdpZGdldEV4dGVuc2lvbi0+
V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgoKSAgKyBLUHJlZnNGaWxlKCkuTGVuZ3RoKCkpOw0KKw0K
KyAgICAgICAgVFB0ciBmTmFtZShmaWxlUGF0aC0+RGVzKCkpOw0KKyAgICAgICAgZk5hbWUuQXBw
ZW5kKGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkpOw0KKyAgICAgICAgZk5hbWUu
QXBwZW5kKEtQcmVmc0ZpbGUpOw0KKw0KKyAgICAgICAgUkZpbGVXcml0ZVN0cmVhbSB3cml0ZVN0
cmVhbTsNCisgICAgICAgIFRJbnQgZmlsZWVycm9yID0gd3JpdGVTdHJlYW0uUmVwbGFjZSggZnMs
ICpmaWxlUGF0aCwgRUZpbGVXcml0ZSApOw0KKw0KKyAgICAgICAgaWYgKGZpbGVlcnJvciAhPSBL
RXJyTm9uZSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgZnMuQ3JlYXRlUHJpdmF0ZVBh
dGgoRURyaXZlQyk7DQorICAgICAgICAgICAgZmlsZWVycm9yID0gd3JpdGVTdHJlYW0uQ3JlYXRl
KCBmcywgKmZpbGVQYXRoLCBFRmlsZVdyaXRlIHwgRUZpbGVTaGFyZUV4Y2x1c2l2ZSApOw0KKyAg
ICAgICAgICAgIH0NCisNCisgICAgICAgIGlmIChmaWxlZXJyb3IgPT0gS0Vyck5vbmUpDQorICAg
ICAgICAgICAgew0KKyAgICAgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKHdyaXRlU3RyZWFtKTsN
CisNCisgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUludDMyTChpTWFwLkNvdW50KCkpOw0K
KyAgICAgICAgICAgIFRQdHJIYXNoTWFwSXRlcjxURGVzQyxURGVzQz4gaXQoaU1hcCk7DQorICAg
ICAgICAgICAgY29uc3QgVERlc0MqIGtleTsNCisgICAgICAgICAgICBjb25zdCBURGVzQyogdmFs
dWU7DQorICAgICAgICAgICAgd2hpbGUgKChrZXkgPSBpdC5OZXh0S2V5KCkpICE9IDApDQorICAg
ICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFsdWUgPSBpdC5DdXJyZW50VmFsdWUo
KTsNCisgICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVJbnQzMkwoa2V5LT5MZW5ndGgo
KSk7DQorICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlTCgqa2V5KTsNCisgICAgICAg
ICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVJbnQzMkwodmFsdWUtPkxlbmd0aCgpKTsNCisgICAg
ICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVMKCp2YWx1ZSk7DQorICAgICAgICAgICAgICAg
IH0NCisNCisgICAgICAgICAgICB3cml0ZVN0cmVhbS5Db21taXRMKCk7DQorICAgICAgICAgICAg
Q2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vd3JpdGVTdHJlYW0NCisgICAgICAgICAg
ICB9DQorDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgLy9maWxlUGF0
aA0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZnMNCisgICAgICAg
IH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0UHJlZmVy
ZW5jZXM6OkxvYWRMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3Zv
aWQgQ1dpZGdldFByZWZlcmVuY2VzOjpMb2FkTCgpDQorICAgIHsNCisNCisgICAgUkZzIGZzOw0K
KyAgICBpZiAoZnMuQ29ubmVjdCgpID09IEtFcnJOb25lKQ0KKyAgICAgICAgew0KKyAgICAgICAg
Q2xlYW51cENsb3NlUHVzaEwoIGZzICk7DQorDQorICAgICAgICBIQnVmQyogZmlsZVBhdGggPSBI
QnVmQzo6TmV3TEMoaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgoKSAg
KyBLUHJlZnNGaWxlKCkuTGVuZ3RoKCkpOw0KKw0KKyAgICAgICAgVFB0ciBmTmFtZShmaWxlUGF0
aC0+RGVzKCkpOw0KKyAgICAgICAgZk5hbWUuQXBwZW5kKGlXaWRnZXRFeHRlbnNpb24tPldpZGdl
dEJhc2VQYXRoKCkpOw0KKyAgICAgICAgZk5hbWUuQXBwZW5kKEtQcmVmc0ZpbGUpOw0KKw0KKyAg
ICAgICAgUkZpbGVSZWFkU3RyZWFtIHJlYWRTdHJlYW07DQorICAgICAgICBpZiAocmVhZFN0cmVh
bS5PcGVuKCBmcywgKmZpbGVQYXRoLCBFRmlsZVJlYWQgKSA9PSBLRXJyTm9uZSkNCisgICAgICAg
ICAgICB7DQorICAgICAgICAgICAgQ2xlYW51cENsb3NlUHVzaEwocmVhZFN0cmVhbSk7DQorDQor
ICAgICAgICAgICAgVEludCBjb3VudCggcmVhZFN0cmVhbS5SZWFkSW50MzJMKCkgKTsNCisgICAg
ICAgICAgICBmb3IoIFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCisgICAgICAgICAgICAg
ICAgew0KKw0KKyAgICAgICAgICAgICAgICBUSW50IGxlbiA9IHJlYWRTdHJlYW0uUmVhZEludDMy
TCgpOw0KKyAgICAgICAgICAgICAgICBpZiAobGVuPjApDQorICAgICAgICAgICAgICAgICAgICB7
DQorDQorICAgICAgICAgICAgICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xDKGxlbik7
DQorICAgICAgICAgICAgICAgICAgICBUUHRyIHB0cmtleSA9IGtleS0+RGVzKCk7DQorICAgICAg
ICAgICAgICAgICAgICByZWFkU3RyZWFtLlJlYWRMKHB0cmtleSxsZW4pOw0KKyAgICAgICAgICAg
ICAgICAgICAgbGVuID0gcmVhZFN0cmVhbS5SZWFkSW50MzJMKCk7DQorDQorICAgICAgICAgICAg
ICAgICAgICBpZiAobGVuPD1LTWF4S2V5VmFsdWVTaXplKQ0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBIQnVmQyogdmFsdWUgPSBIQnVmQzo6TmV3
TEMobGVuKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBUUHRyIHB0cnZhbHVlID0gdmFsdWUt
PkRlcygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0uUmVhZEwocHRydmFs
dWUsbGVuKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpTWFwLkluc2VydEwoa2V5LHZhbHVl
KTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcCh2YWx1ZSk7
DQorICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3Aoa2V5KTsNCisgICAg
ICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBlbHNlDQorICAgICAg
ICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFj
azo6UG9wQW5kRGVzdHJveShrZXkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAg
ICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAg
ICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAg
ICB9DQorICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBv
cEFuZERlc3Ryb3koKTsgLy9yZWFkU3RyZWFtDQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAg
Q2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZmlsZVBhdGgNCisgICAgICAgIENsZWFu
dXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL2ZzDQorICAgICAgICB9DQorDQorICAgIH0NCisN
CkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldFJlbmRlcmVyLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UmVuZGVyZXIuY3BwCShyZXZp
c2lvbiAwKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvV2lkZ2V0UmVuZGVyZXIuY3BwCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwyMjggQEANCisvKg0KKyogPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQorKiAgTmFtZSAgICAgICAgOiBXaWRnZXRFbmdpbmVSZW5kZXJlci5jcHANCisqICBQYXJ0
IG9mICAgICA6IFdlYkVuZ2luZS9XZWJLaXRXaWRnZXRJbnRlcmZhY2UNCisqICBEZXNjcmlwdGlv
biA6DQorKiAgVmVyc2lvbiAgICAgOiAyLjEuMQ0KKyoNCisqICBDb3B5cmlnaHQgKGMpIDIwMDQg
Tm9raWEgQ29ycG9yYXRpb24uDQorKiAgVGhpcyBtYXRlcmlhbCwgaW5jbHVkaW5nIGRvY3VtZW50
YXRpb24gYW5kIGFueSByZWxhdGVkDQorKiAgY29tcHV0ZXIgcHJvZ3JhbXMsIGlzIHByb3RlY3Rl
ZCBieSBjb3B5cmlnaHQgY29udHJvbGxlZCBieQ0KKyogIE5va2lhIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIGFyZSByZXNlcnZlZC4gQ29weWluZywNCisqICBpbmNsdWRpbmcgcmVwcm9kdWNpbmcs
IHN0b3JpbmcsIGFkYXB0aW5nIG9yIHRyYW5zbGF0aW5nLCBhbnkNCisqICBvciBhbGwgb2YgdGhp
cyBtYXRlcmlhbCByZXF1aXJlcyB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mDQorKiAgTm9r
aWEgQ29ycG9yYXRpb24uIFRoaXMgbWF0ZXJpYWwgYWxzbyBjb250YWlucyBjb25maWRlbnRpYWwN
CisqICBpbmZvcm1hdGlvbiB3aGljaCBtYXkgbm90IGJlIGRpc2Nsb3NlZCB0byBvdGhlcnMgd2l0
aG91dCB0aGUNCisqICBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YgTm9raWEgQ29ycG9yYXRpb24u
DQorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisqLw0KKw0KKy8vIElOQ0xVREUgRklMRVMNCisj
aW5jbHVkZSA8ZWlrbWVudWIuaD4NCisjaW5jbHVkZSA8Z2RpLmg+DQorI2luY2x1ZGUgPGJpdGRl
di5oPg0KKw0KKyNpbmNsdWRlICJXaWRnZXRSZW5kZXJlci5oIg0KKyNpbmNsdWRlICJXZWJLaXRW
aWV3LmgiDQorDQorLy8gRVhURVJOQUwgREFUQSBTVFJVQ1RVUkVTDQorDQorLy8gRVhURVJOQUwg
RlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0KKy8vIENPTlNUQU5UUw0KK2NvbnN0IFRJbnQgTWF4VHJh
bnNpdGlvbkNvdW50ID0gMzA7DQorDQorLy8gTE9DQUwgRlVOQ1RJT04gUFJPVE9UWVBFUw0KKw0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUcmFuc2l0aW9uQ2INCisvLw0KKy8vDQor
Ly8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVEludCBUcmFuc2l0aW9uQ2IoIFRBbnkqIGFQ
dHIgKQ0KKyAgICB7DQorICAgIHN0YXRpY19jYXN0PFRXaWRnZXRSZW5kZXJlcio+KGFQdHIpLT5U
cmFuc2l0aW9uQ2IoKTsNCisgICAgcmV0dXJuIEVUcnVlOw0KKyAgICB9DQorDQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6VFdpZGdldFJlbmRlcmVyDQor
Ly8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RXaWRnZXRSZW5kZXJlcjo6
VFdpZGdldFJlbmRlcmVyKENXZWJLaXRWaWV3JiBhV2ViS2l0VmlldykgOiBpV2ViS2l0Vmlldygm
YVdlYktpdFZpZXcpLCBpVHJhbnNpdGlvbkJpdG1hcCgwKSwgaUZhZGVNYXNrKDApLCBpVHJhbnNp
dGlvblRpbWVyKDApLCBpVHJhbnNpdGlvbkNvdW50KDApICAgDQorICAgIHsNCisgICAgfQ0KKw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6On5UV2lkZ2V0UmVu
ZGVyZXINCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVFdpZGdldFJl
bmRlcmVyOjp+VFdpZGdldFJlbmRlcmVyKCkNCisgICAgew0KKyAgICB9DQorDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6UHJlcGFyZUZvclRyYW5zaXRpb24N
CisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lkZ2V0UmVu
ZGVyZXI6OlByZXBhcmVGb3JUcmFuc2l0aW9uTChjb25zdCBURGVzQyYgLyphVHJhbnNpdGlvbiov
KQ0KKyAgICB7ICAgDQorICAgIGlUcmFuc2l0aW9uQ291bnQgPSAwOyAgICAgICAgDQorICAgIERl
c3Ryb3lUcmFuc2l0aW9uQml0bWFwKCk7DQorICAgIENyZWF0ZVRyYW5zaXRpb25CaXRtYXBMKCk7
ICAgICAgICAgICAgICAgICAgICANCisgICAgRGVzdHJveUZhZGVNYXNrKCk7DQorICAgIENyZWF0
ZUZhZGVNYXNrTCgpOw0KKyAgICBEcmF3RmFkZU1hc2tMKCk7ICAgICAgICANCisgICAgfQ0KKw0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OlBlcmZvcm1UcmFu
c2l0aW9uTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lkIFRX
aWRnZXRSZW5kZXJlcjo6UGVyZm9ybVRyYW5zaXRpb25MKCkNCisgICAgew0KKyAgICANCisgICAg
ZGVsZXRlIGlUcmFuc2l0aW9uVGltZXI7DQorICAgIGlUcmFuc2l0aW9uVGltZXIgPSAwOw0KKyAg
ICBUUkFQX0lHTk9SRShpVHJhbnNpdGlvblRpbWVyID0gQ1BlcmlvZGljOjpOZXdMKCBDQWN0aXZl
OjpFUHJpb3JpdHlMb3cgKSk7DQorICAgIGlUcmFuc2l0aW9uQ291bnQgPSAwOw0KKyAgICBpVHJh
bnNpdGlvblRpbWVyLT5TdGFydCggMjAsIDIwLCBUQ2FsbEJhY2soICY6OlRyYW5zaXRpb25DYiwg
dGhpcyApICk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVFdpZGdl
dFJlbmRlcmVyOjpUcmFuc2l0aW9uQ2INCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQordm9pZCBUV2lkZ2V0UmVuZGVyZXI6OlRyYW5zaXRpb25DYigpDQorICAgIHsNCisg
ICAgDQorICAgIGlUcmFuc2l0aW9uQ291bnQrKzsNCisgICAgDQorICAgIGlmIChpVHJhbnNpdGlv
bkNvdW50PT1NYXhUcmFuc2l0aW9uQ291bnQpDQorICAgICAgICB7DQorICAgICAgICBEZXN0cm95
VHJhbnNpdGlvbkJpdG1hcCgpOw0KKyAgICAgICAgaVRyYW5zaXRpb25UaW1lci0+Q2FuY2VsKCk7
DQorICAgICAgICBEZXN0cm95RmFkZU1hc2soKTsNCisgICAgICAgIH0NCisNCisgICAgVFJBUF9J
R05PUkUoRHJhd0ZhZGVNYXNrTCgpKTsNCisgICAgaVdlYktpdFZpZXctPkRyYXdEZWZlcnJlZCgp
Ow0KKyAgICANCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0
UmVuZGVyZXI6OkNyZWF0ZVRyYW5zaXRpb25CaXRtYXBMDQorLy8NCisvLw0KKy8vDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpDcmVhdGVUcmFuc2l0aW9u
Qml0bWFwTCgpDQorICAgIHsNCisgICAgaVRyYW5zaXRpb25CaXRtYXAgPSBuZXcgKEVMZWF2ZSkg
Q0Zic0JpdG1hcCgpOw0KKyAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoaVRyYW5zaXRpb25CaXRtYXAt
PkNyZWF0ZSggaVdlYktpdFZpZXctPk9mZnNjcmVlbkJpdG1hcCgpLT5TaXplSW5QaXhlbHMoKSwg
IGlXZWJLaXRWaWV3LT5EaXNwbGF5TW9kZSgpKSk7DQorICAgIENGYnNCaXRtYXBEZXZpY2UqIGRl
diA9IENGYnNCaXRtYXBEZXZpY2U6Ok5ld0woaVRyYW5zaXRpb25CaXRtYXApOw0KKyAgICBDbGVh
bnVwU3RhY2s6OlB1c2hMKGRldik7DQorICAgIENGYnNCaXRHYyogZ2M7DQorICAgIFVzZXI6Okxl
YXZlSWZFcnJvcihkZXYtPkNyZWF0ZUNvbnRleHQoZ2MpKTsNCisgICAgZ2MtPkJpdEJsdChUUG9p
bnQoMCwwKSxpV2ViS2l0Vmlldy0+T2Zmc2NyZWVuQml0bWFwKCkpOw0KKyAgICBkZWxldGUgZ2M7
DQorICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOw0KKyAgICB9DQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6RGVzdHJveVRyYW5zaXRpb25C
aXRtYXANCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBUV2lk
Z2V0UmVuZGVyZXI6OkRlc3Ryb3lUcmFuc2l0aW9uQml0bWFwKCkNCisgICAgew0KKyAgICBkZWxl
dGUgaVRyYW5zaXRpb25CaXRtYXA7DQorICAgIGlUcmFuc2l0aW9uQml0bWFwID0gMDsNCisgICAg
fQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkNyZWF0
ZUZhZGVNYXNrTA0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lk
IFRXaWRnZXRSZW5kZXJlcjo6Q3JlYXRlRmFkZU1hc2tMKCkNCisgICAgew0KKyAgICBpRmFkZU1h
c2sgPSBuZXcgKEVMZWF2ZSkgQ0Zic0JpdG1hcCgpOw0KKyAgICBpRmFkZU1hc2stPkNyZWF0ZShp
VHJhbnNpdGlvbkJpdG1hcC0+U2l6ZUluUGl4ZWxzKCksRUdyYXkyNTYpOw0KKyAgICB9DQorDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFRXaWRnZXRSZW5kZXJlcjo6RGVzdHJveUZhZGVN
YXNrDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdl
dFJlbmRlcmVyOjpEZXN0cm95RmFkZU1hc2soKQ0KKyAgICB7DQorICAgIGRlbGV0ZSBpRmFkZU1h
c2s7DQorICAgIGlGYWRlTWFzayA9IDA7DQorICAgIH0NCisNCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gVFdpZGdldFJlbmRlcmVyOjpEcmF3RmFkZU1hc2tMDQorLy8NCisvLw0KKy8v
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdpZGdldFJlbmRlcmVyOjpEcmF3RmFk
ZU1hc2tMKCkNCisgICAgew0KKyAgICBpZiAoaUZhZGVNYXNrKQ0KKyAgICAgICAgeyAgICAgICAg
DQorICAgICAgICBDRmJzQml0bWFwRGV2aWNlKiBkZXYgPSBDRmJzQml0bWFwRGV2aWNlOjpOZXdM
KGlGYWRlTWFzayk7DQorICAgICAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKGRldik7DQorICAgICAg
ICBDRmJzQml0R2MqIGdjOw0KKyAgICAgICAgVXNlcjo6TGVhdmVJZkVycm9yKGRldi0+Q3JlYXRl
Q29udGV4dChnYykpOw0KKyAgICAgICAgaUZhZGVNYXNrLT5Mb2NrSGVhcCgpOw0KKyAgICAgICAg
VFNpemUgcyA9IGlGYWRlTWFzay0+U2l6ZUluUGl4ZWxzKCk7DQorICAgICAgICBUVWludDgqIGRh
dGEgPSAoVFVpbnQ4KilpRmFkZU1hc2stPkRhdGFBZGRyZXNzKCk7DQorICAgICAgICBUVWludDgq
IGVuZCA9IGRhdGEgKyBzLmlXaWR0aCpzLmlIZWlnaHQ7DQorICAgICAgICB3aGlsZSAoIGRhdGE8
ZW5kICkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgKihkYXRhKyspID0gKDI1NSppVHJh
bnNpdGlvbkNvdW50L01heFRyYW5zaXRpb25Db3VudCk7DQorICAgICAgICAgICAgfQ0KKyAgICAg
ICAgaUZhZGVNYXNrLT5VbmxvY2tIZWFwKCk7DQorICAgICAgICBkZWxldGUgZ2M7DQorICAgICAg
ICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0K
Kw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUV2lkZ2V0UmVuZGVyZXI6OkRyYXdUcmFu
c2l0aW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK3ZvaWQgVFdp
ZGdldFJlbmRlcmVyOjpEcmF3VHJhbnNpdGlvbihDV2luZG93R2MmIGdjLCBDRmJzQml0bWFwKiBh
Q3VycmVudEJpdG1hcCkNCisgICAgew0KKw0KKyAgICBpZiAoIWlUcmFuc2l0aW9uQml0bWFwIHx8
ICFhQ3VycmVudEJpdG1hcCB8fCAhaUZhZGVNYXNrKQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICAN
CisgICAgVFNpemUgcyA9IGlUcmFuc2l0aW9uQml0bWFwLT5TaXplSW5QaXhlbHMoKTsNCisgICAg
Z2MuQml0Qmx0KFRQb2ludCgwLDApLGlUcmFuc2l0aW9uQml0bWFwKTsNCisgICAgZ2MuQml0Qmx0
TWFza2VkKFRQb2ludCgwLDApLGFDdXJyZW50Qml0bWFwLCBUUmVjdChzKSwgaUZhZGVNYXNrLCBF
RmFsc2UpOw0KKw0KKyAgICB9DQorDQpJbmRleDogV2ViS2l0L0NoYW5nZUxvZw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjkyKQ0KKysrIFdlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsNjQgQEANCisyMDA2LTEwLTI1ICB5YWRh
dmFsbCAgPHNyaXJhbS55YWRhdmFsbGlAbm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2FjaGluIFBhZG1hIChzYWNoaW4ucGFkbWFAbm9raWEuY29tKS4NCisgICAgICAgIERFU0M6
IFNjcmlwdGFibGUgcGx1Z2luICYgd2lkZ2V0IG9iamVjdCBpbXBsZW1lbnRhdGlvbg0KKyAgICAg
ICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDcNCisNCisgICAg
ICAgICogQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsLmg6DQorICAgICAgICAqIEJyb3dzZXJDb250
cm9sL2luYy9CckN0bERlZnMuaDoNCisgICAgICAgIChUQnJDdGxEZWZzOjopOg0KKyAgICAgICAg
KiBCcm93c2VyQ29udHJvbC9pbmMvQnJDdGxJbnRlcmZhY2UuaDoNCisgICAgICAgICogQnJvd3Nl
ckNvbnRyb2wvc3JjL0JyQ3RsLmNwcDoNCisgICAgICAgIChDQnJDdGw6On5DQnJDdGwpOg0KKyAg
ICAgICAgKENCckN0bDo6SGFuZGxlQ29tbWFuZEwpOg0KKyAgICAgICAgKENCckN0bDo6QWRkT3B0
aW9uTWVudUl0ZW1zTCk6DQorICAgICAgICAoQ0JyQ3RsOjpVcGRhdGVEZWZhdWx0U29mdGtleXNM
KToNCisgICAgICAgIChDQnJDdGw6OkNyZWF0ZVdpZGdldEV4dGVuc2lvbkwpOg0KKyAgICAgICAg
KiBCcm93c2VyVmlldy9pbmMvV2ViS2l0Q29udHJvbC5oOg0KKyAgICAgICAgKENXZWJLaXRDb250
cm9sOjpXaWRnZXRFeHRlbnNpb24pOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9pbmMvd2Via2l0
YnJpZGdlLmg6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9LZXlFdmVudEhhbmRsZXIuY3Bw
Og0KKyAgICAgICAgKENLZXlFdmVudEhhbmRsZXI6OkhhbmRsZUFjdGl2YXRlS2V5c0wpOg0KKyAg
ICAgICAgKiBCcm93c2VyVmlldy9zcmMvV2ViS2l0Q29udHJvbC5jcHA6DQorICAgICAgICAoQ1dl
YktpdENvbnRyb2w6On5DV2ViS2l0Q29udHJvbCk6DQorICAgICAgICAoQ1dlYktpdENvbnRyb2w6
OkNyZWF0ZVdpZGdldEV4dGVuc2lvbkwpOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9zcmMvV2Vi
S2l0Vmlldy5jcHA6DQorICAgICAgICAoQ1dlYktpdFZpZXc6Ok1ha2VWaXNpYmxlKToNCisgICAg
ICAgIChDV2ViS2l0Vmlldzo6RHJhdyk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy93ZWJr
aXRicmlkZ2UuY3BwOg0KKyAgICAgICAgKENXZWJLaXRCcmlkZ2U6OkxheW91dENoYW5nZWQpOg0K
KyAgICAgICAgKENXZWJLaXRCcmlkZ2U6OmNyZWF0ZVdpZGdldE9iamVjdCk6DQorICAgICAgICAq
IFBsdWdpbi9pbmMvUGx1Z2luSGFuZGxlci5oOg0KKyAgICAgICAgKiBQbHVnaW4vaW5jL1BsdWdp
blNraW4uaDoNCisgICAgICAgIChDUGx1Z2luU2tpbjo6V2ViS2l0Q29udHJvbCk6DQorICAgICAg
ICAoQ1BsdWdpblNraW46OkZyYW1lKToNCisgICAgICAgICogUGx1Z2luL2luYy9QbHVnaW5XaW4u
aDoNCisgICAgICAgICogUGx1Z2luL2luYy9ucGFwaS5oOg0KKyAgICAgICAgKiBQbHVnaW4vc3Jj
L05wbkltcGxlbWVudGF0aW9uLmNwcDoNCisgICAgICAgIChOcG5HZXRWYWx1ZSk6DQorICAgICAg
ICAqIFBsdWdpbi9zcmMvUGx1Z2luSGFuZGxlci5jcHA6DQorICAgICAgICAoQ1BsdWdpbkluZm86
OlBhcnNlRGVmYXVsdERhdGFMKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6TG9hZFBsdWdp
bnNTeW5jTCk6DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkxvYWRQbHVnaW5zTCk6DQorICAg
ICAgICAoQ1BsdWdpbkhhbmRsZXI6OlJlbG9hZFBsdWdpbnMpOg0KKyAgICAgICAgKENQbHVnaW5I
YW5kbGVyOjpHZXRQbHVnaW5OYW1lKToNCisgICAgICAgIChDUGx1Z2luSGFuZGxlcjo6R2V0UGx1
Z2luRmlsZU5hbWUpOg0KKyAgICAgICAgKENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5EZXNjcmlw
dGlvbik6DQorICAgICAgICAoQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbkNvdW50KToNCisgICAg
ICAgIChDUGx1Z2luSGFuZGxlcjo6UmVsb2FkUGx1Z2luc0wpOg0KKyAgICAgICAgKiBQbHVnaW4v
c3JjL1BsdWdpblNraW4uY3BwOg0KKyAgICAgICAgKENQbHVnaW5Ta2luOjpDb25zdHJ1Y3RMKToN
CisgICAgICAgIChDUGx1Z2luU2tpbjo6Q3JlYXRlUGx1Z2luV2luTCk6DQorICAgICAgICAoQ1Bs
dWdpblNraW46OlNlbGVjdFZpZXdlckFuZERvd25sb2FkTCk6DQorICAgICAgICAoQ1BsdWdpblNr
aW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QpOg0KKyAgICAgICAgKiBQbHVnaW4vc3JjL1BsdWdp
bldpbi5jcHA6DQorICAgICAgICAoQ1BsdWdpbldpbjo6V2luZG93U2NyaXB0TlBPYmplY3QpOg0K
KyAgICAgICAgKENQbHVnaW5XaW46OlBsdWdpblNjcmlwdGFibGVPYmplY3QpOg0KKyAgICAgICAg
KiBncm91cC9Ccm93c2VyVmlldy5tbXA6DQorICAgICAgICAqIGdyb3VwL1BsdWdpbi5tbXA6DQor
ICAgICAgICAqIGdyb3VwL3dlYmtpdC5tbXA6DQorICAgICAgICAqIHJvbS93ZWJraXQuaWJ5Og0K
Kw0KIDIwMDYtMTAtMjMgIG5hZ3VvICA8Z2VvcmdlLmd1b0Bub2tpYS5jb20+DQogDQogICAgICAg
ICBSZXZpZXdlZCBieSBTYWNoaW4uDQpJbmRleDogV2ViS2l0L2dyb3VwL0Jyb3dzZXJWaWV3Lm1t
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC9Ccm93c2VyVmlldy5tbXAJKHJldmlzaW9u
IDE3MDY5KQ0KKysrIFdlYktpdC9ncm91cC9Ccm93c2VyVmlldy5tbXAJKHdvcmtpbmcgY29weSkN
CkBAIC03Nyw2ICs3NywxMiBAQA0KIFNPVVJDRSAgICAgICAgICBTbWFydExpbmtIYW5kbGVyLmNw
cA0KIFNPVVJDRSAgICAgICAgICBTbWFydExpbmtNYXAuY3BwDQogI2VuZGlmDQorI2lmZGVmICBS
RF9CUk9XU0VSX1dJREdFVFMNCitTT1VSQ0UgICAgICAgICAgV2lkZ2V0RXh0ZW5zaW9uLmNwcA0K
K1NPVVJDRSAgICAgICAgICBXaWRnZXRQcmVmZXJlbmNlcy5jcHANCitTT1VSQ0UgICAgICAgICAg
V2lkZ2V0UmVuZGVyZXIuY3BwDQorU1lTVEVNSU5DTFVERSAgICAgICAgLi5cLi5cLi5cV2lkZ2V0
RW5naW5lXGluYw0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIFVTRVJJTkNMVURFICAg
ICAuLlxSZXNvdXJjZUxvYWRlclxJbmMNCiBVU0VSSU5DTFVERSAgICAgLi5cUmVzb3VyY2VMb2Fk
ZXJcY2FjaGVJbmMNCiBVU0VSSU5DTFVERSAgICAgLi5cQnJvd3NlclZpZXdcSW5jDQpJbmRleDog
V2ViS2l0L2dyb3VwL1BsdWdpbi5tbXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvZ3JvdXAvUGx1
Z2luLm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L2dyb3VwL1BsdWdpbi5tbXAJKHdv
cmtpbmcgY29weSkNCkBAIC02MCw2ICs2MCw5IEBADQogVVNFUklOQ0xVREUgICAgIC4uXFJlc291
cmNlTG9hZGVyXEluYw0KICNpZm5kZWYgX19CUk9XU0VSX1NESw0KIFVTRVJJTkNMVURFICAgICAu
LlwuLlwuLlxQYWdlU2NhbGVyXEluYw0KKyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorVVNF
UklOQ0xVREUgICAgIFxTNjBcbXdcd2ViXFdlYkVuZ2luZVxXaWRnZXRFbmdpbmVcSW5jDQorI2Vu
ZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogI2VuZGlmDQogVVNFUklOQ0xVREUgICAgIC4uXC4u
XFdFQkNPUkVcYnJpZGdlDQogDQpJbmRleDogV2ViS2l0L2dyb3VwL3dlYmtpdC5tbXANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvZ3JvdXAvd2Via2l0Lm1tcAkocmV2aXNpb24gMTcwNjkpDQorKysg
V2ViS2l0L2dyb3VwL3dlYmtpdC5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC0xMTUsNiArMTE1LDkg
QEANCiBTWVNURU1JTkNMVURFIFxFcG9jMzJcaW5jbHVkZSBcRXBvYzMyXGluY2x1ZGVcb2VtDQog
I2VuZGlmDQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCitVU0VSSU5DTFVERSAgIC4u
XC4uXC4uXFdpZGdldEVuZ2luZVxpbmMNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAv
Ly0tDQogDQogU1lTVEVNSU5DTFVERSBcRXBvYzMyXGluY2x1ZGVcaHR0cA0KSW5kZXg6IFdlYktp
dC9QbHVnaW4vaW5jL25wYXBpLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL2luYy9u
cGFwaS5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL2luYy9ucGFwaS5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMTQsNyArMTQsNyBAQA0KICAqDQogICogVGhlIE9yaWdpbmFsIENv
ZGUgaXMgbW96aWxsYS5vcmcgY29kZS4NCiAgKg0KLSAqIFRoZSBJbml0aWFsIERldmVsb3BlciBv
ZiB0aGUgT3JpZ2luYWwgQ29kZSBpcyANCisgKiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhl
IE9yaWdpbmFsIENvZGUgaXMNCiAgKiBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlv
bi4NCiAgKiBQb3J0aW9ucyBjcmVhdGVkIGJ5IHRoZSBJbml0aWFsIERldmVsb3BlciBhcmUgQ29w
eXJpZ2h0IChDKSAxOTk4DQogICogdGhlIEluaXRpYWwgRGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJl
c2VydmVkLg0KQEAgLTczLDEyICs3MywxMiBAQA0KICNlbmRpZg0KICNlbmRpZg0KIA0KLS8qIA0K
LSAqIE5PX05TUFJfMTBfU1VQUE9SVCBkaXNhYmxlcyB0aGUgaW5jbHVzaW9uIA0KLSAqIG9mIG9i
c29sZXRlL3Byb3R5cGVzLmgsIHdob3NlIGludDE2LCB1aW50MTYsIA0KLSAqIGludDMyLCBhbmQg
dWludDMyIHR5cGVkZWZzIGNvbmZsaWN0IHdpdGggdGhvc2UgDQotICogaW4gdGhpcyBmaWxlLiAN
Ci0gKi8gDQorLyoNCisgKiBOT19OU1BSXzEwX1NVUFBPUlQgZGlzYWJsZXMgdGhlIGluY2x1c2lv
bg0KKyAqIG9mIG9ic29sZXRlL3Byb3R5cGVzLmgsIHdob3NlIGludDE2LCB1aW50MTYsDQorICog
aW50MzIsIGFuZCB1aW50MzIgdHlwZWRlZnMgY29uZmxpY3Qgd2l0aCB0aG9zZQ0KKyAqIGluIHRo
aXMgZmlsZS4NCisgKi8NCiAjaWZuZGVmIE5PX05TUFJfMTBfU1VQUE9SVA0KICNkZWZpbmUgTk9f
TlNQUl8xMF9TVVBQT1JUDQogI2VuZGlmDQpAQCAtMTIwLDcgKzEyMCw3IEBADQogICAjaW5jbHVk
ZSA8RXZlbnRzLmg+DQogI2VuZGlmDQogDQotI2lmIGRlZmluZWQoWFBfVU5JWCkgDQorI2lmIGRl
ZmluZWQoWFBfVU5JWCkNCiAjIGluY2x1ZGUgPHN0ZGlvLmg+DQogIyBpZiBkZWZpbmVkKE1PWl9Y
MTEpDQogIyAgIGluY2x1ZGUgPFgxMS9YbGliLmg+DQpAQCAtMjk4LDExICsyOTgsMTEgQEANCiAg
IHVpbnQxNiByaWdodDsNCiB9IE5QUmVjdDsNCiANCi10eXBlZGVmIHN0cnVjdCBfTlBTaXplIA0K
LXsgDQotICBpbnQzMiB3aWR0aDsgDQotICBpbnQzMiBoZWlnaHQ7IA0KLX0gTlBTaXplOyANCit0
eXBlZGVmIHN0cnVjdCBfTlBTaXplDQorew0KKyAgaW50MzIgd2lkdGg7DQorICBpbnQzMiBoZWln
aHQ7DQorfSBOUFNpemU7DQogDQogI2lmZGVmIFhQX1VOSVgNCiAvKg0KQEAgLTM0NSwyMSArMzQ1
LDIxIEBADQogDQogDQogLyoNCi0gKiAgIFRoZSBmb2xsb3dpbmcgbWFza3MgYXJlIGFwcGxpZWQg
b24gY2VydGFpbiBwbGF0Zm9ybXMgdG8gTlBOViBhbmQgDQotICogICBOUFBWIHNlbGVjdG9ycyB0
aGF0IHBhc3MgYXJvdW5kIHBvaW50ZXJzIHRvIENPTSBpbnRlcmZhY2VzLiBOZXdlciANCi0gKiAg
IGNvbXBpbGVycyBvbiBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFy
ZSBub3QgDQotICogICBjb21wYXRpYmxlIHdpdGggb2xkZXIgY29tcGlsZXJzLiBUbyBwcmV2ZW50
IG9sZGVyIHBsdWdpbnMgZnJvbSANCi0gKiAgIG5vdCB1bmRlcnN0YW5kaW5nIGEgbmV3IGJyb3dz
ZXIncyBBQkksIHRoZXNlIG1hc2tzIGNoYW5nZSB0aGUgDQorICogICBUaGUgZm9sbG93aW5nIG1h
c2tzIGFyZSBhcHBsaWVkIG9uIGNlcnRhaW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kDQorICogICBO
UFBWIHNlbGVjdG9ycyB0aGF0IHBhc3MgYXJvdW5kIHBvaW50ZXJzIHRvIENPTSBpbnRlcmZhY2Vz
LiBOZXdlcg0KKyAqICAgY29tcGlsZXJzIG9uIHNvbWUgcGxhdGZvcm1zIG1heSBnZW5lcmF0ZSB2
dGFibGVzIHRoYXQgYXJlIG5vdA0KKyAqICAgY29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVy
cy4gVG8gcHJldmVudCBvbGRlciBwbHVnaW5zIGZyb20NCisgKiAgIG5vdCB1bmRlcnN0YW5kaW5n
IGEgbmV3IGJyb3dzZXIncyBBQkksIHRoZXNlIG1hc2tzIGNoYW5nZSB0aGUNCiAgKiAgIHZhbHVl
cyBvZiB0aG9zZSBzZWxlY3RvcnMgb24gdGhvc2UgcGxhdGZvcm1zLiBUbyByZW1haW4gYmFja3dh
cmRzDQotICogICBjb21wYXRpYmxlIHdpdGggZGlmZmVyZW5ldCB2ZXJzaW9ucyBvZiB0aGUgYnJv
d3NlciwgcGx1Z2lucyBjYW4gDQorICogICBjb21wYXRpYmxlIHdpdGggZGlmZmVyZW5ldCB2ZXJz
aW9ucyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4NCiAgKiAgIHVzZSB0aGVzZSBtYXNrcyB0
byBkeW5hbWljYWxseSBkZXRlcm1pbmUgYW5kIHVzZSB0aGUgY29ycmVjdCBDKysNCi0gKiAgIEFC
SSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBX
aW5kb3dzIA0KKyAqICAgQUJJIHRoYXQgdGhlIGJyb3dzZXIgaXMgZXhwZWN0aW5nLiBUaGlzIGRv
ZXMgbm90IGFwcGx5IHRvIFdpbmRvd3MNCiAgKiAgIGFzIE1pY3Jvc29mdCdzIENPTSBBQkkgd2ls
bCBsaWtlbHkgbm90IGNoYW5nZS4NCiAgKi8NCiANCiAjZGVmaW5lIE5QX0FCSV9HQ0MzX01BU0sg
IDB4MTAwMDAwMDANCiAvKg0KLSAqICAgZ2NjIDMueCBnZW5lcmF0ZWQgdnRhYmxlcyBvbiBVTklY
IGFuZCBPU1ggYXJlIGluY29tcGF0aWJsZSB3aXRoIA0KKyAqICAgZ2NjIDMueCBnZW5lcmF0ZWQg
dnRhYmxlcyBvbiBVTklYIGFuZCBPU1ggYXJlIGluY29tcGF0aWJsZSB3aXRoDQogICogICBwcmV2
aW91cyBjb21waWxlcnMuDQogICovDQogI2lmIChkZWZpbmVkIChYUF9VTklYKSAmJiBkZWZpbmVk
KF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykpDQpAQCAtMzc1LDcgKzM3NSw3IEBADQogICog
ICBkaWZmZXJlbnQgdGhhbiBDRk0uIEluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGRpZmZlcmVudA0K
ICAqICAgQysrIEFCSSwgaXQgYWxzbyBoYXMgaGFzIGRpZmZlcmVudCBDIGNhbGxpbmcgY29udmVu
dGlvbi4NCiAgKiAgIFlvdSBtdXN0IHVzZSBnbHVlIGNvZGUgd2hlbiBjYWxsaW5nIGJldHdlZW4g
Q0ZNIGFuZA0KLSAqICAgTWFjaC1PIEMgZnVuY3Rpb25zLiANCisgKiAgIE1hY2gtTyBDIGZ1bmN0
aW9ucy4NCiAgKi8NCiAjaWYgKGRlZmluZWQoVEFSR0VUX1JUX01BQ19NQUNITykpDQogI2RlZmlu
ZSBfTlBfQUJJX01JWElOX0ZPUl9NQUNITyBOUF9BQklfTUFDSE9fTUFTSw0KQEAgLTQwNCwxMSAr
NDA0LDE0IEBADQogICAvKiAxMiBhbmQgb3ZlciBhcmUgYXZhaWxhYmxlIG9uIE1vemlsbGEgYnVp
bGRzIHN0YXJ0aW5nIHdpdGggMC45LjkgKi8NCiAgIE5QUFZqYXZhc2NyaXB0UHVzaENhbGxlckJv
b2wgPSAxMiwNCiAgIE5QUFZwbHVnaW5LZWVwTGlicmFyeUluTWVtb3J5ID0gMTMsICAgLyogYXZh
aWxhYmxlIGluIE1vemlsbGEgMS4wICovDQotICAvKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpZmlj
IHRvIE5va2lhLCBzbyB2YWx1ZSBpcyANCi0gICAqIHN0YXJ0ZWQgZnJvbSAxMDAuIFRoZSBudW1i
ZXJzIDEzIHRvIDEwMDAgYXJlIGxlZnQNCisjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRTDQorICBO
UFBWcGx1Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4g
V2ViS2l0ICovDQorICAgLyogc3RhcnRlZCBmcm9tIDEwMC4gVGhlIG51bWJlcnMgMTMgdG8gMTAw
MCBhcmUgbGVmdA0KICAgICogZm9yIHN0YW5kYXJpemF0aW9uIGFuZCBvdGhlciBmdXR1cmUgdXNl
LiBWYWx1ZSByZXR1cm4gaXMgemVybyBmb3INCiAgICAqIGluZXRlcmFjdGl2ZSBhbmQgJ29uZScg
Zm9yIG5vbi1pbnRlcmFjdGl2ZS4NCiAgICAqLw0KKyAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9i
amVjdCAgPSAxNSwNCisjZW5kaWYNCiAgIE5QUFZwbHVnaW5JbnRlcmFjdGl2ZUJvb2wgPSAxMDAw
DQogfSBOUFBWYXJpYWJsZTsNCiANCkBAIC00MjcsNiArNDMwLDE2IEBADQogICBOUE5Wc2Vydmlj
ZU1hbmFnZXIgPSAoMTAgfCBOUF9BQklfTUFTSyksDQogICBOUE5WRE9NRWxlbWVudCAgICAgPSAo
MTEgfCBOUF9BQklfTUFTSyksICAgLyogYXZhaWxhYmxlIGluIE1vemlsbGEgMS4yICovDQogICBO
UE5WRE9NV2luZG93ICAgICAgPSAoMTIgfCBOUF9BQklfTUFTSykNCisjaWZkZWYgUkRfQlJPV1NF
Ul9XSURHRVRTDQorICAsTlBOVlRvb2xraXQgICAgICAgID0gKDEzIHwgTlBfQUJJX01BU0spLCAg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0KKyAgTlBOVlN1cHBvcnRzWEVtYmVkQm9v
bCA9IDE0LCAgICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLw0KKw0K
KyAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUgYnJvd3NlciB3aW5kb3cuICov
DQorICBOUE5WV2luZG93TlBPYmplY3QgPSAxNSwNCisNCisgICAgLyogR2V0IHRoZSBOUE9iamVj
dCB3cmFwcGVyIGZvciB0aGUgcGx1Z2lucyBET00gZWxlbWVudC4gKi8NCisgIE5QTlZQbHVnaW5F
bGVtZW50TlBPYmplY3QgICAgICAgICAgICAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJL
aXQgKi8NCisjZW5kaWYNCiB9IE5QTlZhcmlhYmxlOw0KIA0KIC8qDQpJbmRleDogV2ViS2l0L1Bs
dWdpbi9pbmMvUGx1Z2luSGFuZGxlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9p
bmMvUGx1Z2luSGFuZGxlci5oCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQvUGx1Z2luL2lu
Yy9QbHVnaW5IYW5kbGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xMzcsNiArMTM3LDE2IEBADQog
ICAgICAgICAqLw0KICAgICAgICAgVFVpbnQgR2V0SW5kZXhGcm9tSGFuZGxlKFRJbnQgYUhhbmRs
ZSk7DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAgICAg
ICAgKiBHZXQgdGhlIGluZGV4IG9mIHBsdWdpbiBpbmZvIGZyb20gaXRzIGhhbmRsZS4NCisgICAg
ICAgICoNCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcGFyYW0gYUhhbmRsZSBU
aGUgaGFuZGxlIG9mIHRoZSBwbHVnaW4sIHJldHVybmVkIGZyb20gRmluZFBsdWdpbi4NCisgICAg
ICAgICogQHJldHVybiB0aGUgaW5kZXggb2YgdGhlIHBsdWdpbiBpbmZvLg0KKyAgICAgICAgKi8N
CisgICAgICAgIFRCb29sIExvYWRQbHVnaW5zU3luY0woKTsNCisjZW5kaWYgLy9SRF9CUk9XU0VS
X1dJREdFVFMNCiAgICAgcHVibGljOiAvL0Zyb20gTVdlYkNvcmVQbHVnaW5IYW5kbGVyDQogICAg
ICAgICAvKioNCiAgICAgICAgICogU2NhbnMgZm9yIG5ldyBwbHVnaW5zLg0KSW5kZXg6IFdlYktp
dC9QbHVnaW4vaW5jL1BsdWdpblNraW4uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9QbHVnaW4v
aW5jL1BsdWdpblNraW4uaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9pbmMv
UGx1Z2luU2tpbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTY4LDcgKzE2OCwxNCBAQA0KICAgICAg
ICAgKiBAc2luY2UgMy4xDQogICAgICAgICAqIEByZXR1cm4gVGhlIFdlYktpdENvbnRyb2wgb2Jq
ZWN0DQogICAgICAgICAqLw0KLSAgICAgICAgQ1dlYktpdENvbnRyb2wqIFdlYktpdENvbnRyb2wo
KSB7IHJldHVybiAmaVdlYktpdEZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpOyB9
DQorICAgICAgICBDV2ViS2l0Q29udHJvbCogV2ViS2l0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJu
ICZpV2ViS2l0RnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRDb250cm9sKCk7IH0NCisgICAgICAg
IC8qKg0KKyAgICAgICAgKiBGcmFtZQ0KKyAgICAgICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byBX
ZWJLaXRGcmFtZSBvYmplY3QuDQorICAgICAgICAqIEBzaW5jZSAzLjENCisgICAgICAgICogQHJl
dHVybiBUaGUgV2ViS2l0Q29udHJvbCBvYmplY3QNCisgICAgICAgICovDQorICAgICAgICBDV2Vi
S2l0RnJhbWUqIEZyYW1lKCkgY29uc3QgeyByZXR1cm4gaVdlYktpdEZyYW1lOyB9IA0KIA0KICAg
ICAgICAgLyoqDQogICAgICAgICAqIEhhc1Jlc2l6ZWQNCkBAIC0zNjIsNiArMzY5LDE1IEBADQog
ICAgICAgICBUQm9vbCBDYW5JbnRlcmFjdCgpIGNvbnN0ICAgICAgICAgICB7IHJldHVybiBpQ2Fu
UGx1Z2luSW50ZXJhY3Q7IH0NCiAjZW5kaWYNCiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VU
Uw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEdldCB0aGUgc2NyaXB0aW5nIG9iamVjdCBmcm9t
IHBsdWdpbg0KKyAgICAgICAgKiBTZXRzIHRoZSBmb250DQorICAgICAgICAqIEBzaW5jZSAzLjEN
CisgICAgICAgICogQHJldHVybg0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgKlBsdWdpblNj
cmlwdGFibGVPYmplY3QoKTsgDQorI2VuZGlmDQogICBwdWJsaWM6IC8vIEZ1bmN0aW9ucyBmcm9t
IE1WaWV3Rm9jdXNPYnNlcnZlcg0KIA0KICAgICAgICAgLyoqDQpJbmRleDogV2ViS2l0L1BsdWdp
bi9pbmMvUGx1Z2luV2luLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL2luYy9QbHVn
aW5XaW4uaAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9pbmMvUGx1Z2luV2lu
LmgJKHdvcmtpbmcgY29weSkNCkBAIC01Nyw2ICs1Nyw5IEBADQogY2xhc3MgQ1dlYktpdENvbnRy
b2w7DQogY2xhc3MgQ1BsdWdpblNraW47DQogY2xhc3MgQ1BsdWdpbkhhbmRsZXI7DQorI2lmZGVm
ICBSRF9CUk9XU0VSX1dJREdFVFMNCitjbGFzcyBOUE9iamVjdDsNCisjZW5kaWYgLy9SRF9CUk9X
U0VSX1dJREdFVFMNCiANCiAvLyBMT0NBTCBDT05TVEFOVFMgQU5EIE1BQ1JPUw0KIC8vIFRoZXNl
IGFyZSB1c2VkIHRvIGRlc2lnbmF0ZSB0aGUgaGFuZGxpbmcgb2YgaW5jb21pbmcgY29udGVudCBh
bmQgbG9hZGluZyBQbHVnaW5zDQpAQCAtNDY2LDYgKzQ2OSwyMSBAQA0KICAgICAgICAgKi8NCiAg
ICAgdm9pZCBIYW5kbGVMb3NpbmdGb3JlZ3JvdW5kKCk7DQogDQorI2lmZGVmICBSRF9CUk9XU0VS
X1dJREdFVFMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBSZXR1cm4gd2luZG93IG9iamVjdCB1
c2FibGUgZnJvbSBzY3JpcHRhYmxlIHBsdWdpbnMgDQorICAgICAgICAqIEBzaW5jZSAzLjENCisg
ICAgICAgICogQHJldHVybiBub25lDQorICAgICAgICAqLyAgICAgICAgDQorICAgICAgICBOUE9i
amVjdCogV2luZG93U2NyaXB0TlBPYmplY3QoKTsgDQorICAgICAgICAvKioNCisgICAgICAgICog
R2V0IHRoZSBzY3JpcHRpbmcgb2JqZWN0IGZyb20gcGx1Z2luDQorICAgICAgICAqIFNldHMgdGhl
IGZvbnQNCisgICAgICAgICogQHNpbmNlIDMuMQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAg
ICAqLw0KKyAgICAgICAgdm9pZCAqUGx1Z2luU2NyaXB0YWJsZU9iamVjdCgpOyAgICAgICAgIA0K
KyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0KICAgICBwcm90ZWN0ZWQ6IC8vIE5ldyBm
dW5jdGlvbnMNCiANCkluZGV4OiBXZWJLaXQvUGx1Z2luL3NyYy9OcG5JbXBsZW1lbnRhdGlvbi5j
cHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL3NyYy9OcG5JbXBsZW1lbnRhdGlvbi5j
cHAJKHJldmlzaW9uIDE3MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vc3JjL05wbkltcGxlbWVudGF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQyNSw3ICs0MjUsMjAgQEANCiAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICB9DQogICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAg
DQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisgICAgICAgIGNhc2UgTlBOVldpbmRvd05Q
T2JqZWN0Og0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBDUGx1Z2luV2luKiBwbHVnaW5X
aW4gPSAoQ1BsdWdpbldpbiopYUluc3RhbmNlLT5uZGF0YTsNCisgICAgICAgICAgICBOUE9iamVj
dCogd2luZG93T2JqZWN0ID0gcGx1Z2luV2luLT5XaW5kb3dTY3JpcHROUE9iamVjdCgpOw0KKyAg
ICAgICAgICAgIGlmICh3aW5kb3dPYmplY3QpDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICAgICAgdm9pZCAqKnYgPSAodm9pZCAqKilhUmV0VmFsdWU7DQorICAgICAgICAgICAgICAg
ICp2ID0gd2luZG93T2JqZWN0Ow0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUjsNCisgICAgICAgICAgICB9DQorI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQog
ICAgICAgICBjYXNlIE5QTlZET01XaW5kb3c6DQogICAgICAgICBjYXNlIE5QTlZ4RGlzcGxheTog
ICAgICAgICAgLy8gVW5peCBvbmx5OiBSZXR1cm5zIHRoZSBjdXJyZW50IERpc3BsYXkNCiAgICAg
ICAgIGNhc2UgTlBOVnh0QXBwQ29udGV4dDogICAgICAvLyBVbml4IG9ubHk6IFJldHVybnMgdGhl
IGFwcGxpY2F0aW9uJ3MgWHRBcHBDb250ZXh0DQpJbmRleDogV2ViS2l0L1BsdWdpbi9zcmMvUGx1
Z2luSGFuZGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvUGx1Z2luL3NyYy9QbHVnaW5I
YW5kbGVyLmNwcAkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2lu
SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xMCw5ICsxMCw5IEBADQogKiAgICBDb3B5
cmlnaHQgKGMpIDIwMDYsIE5va2lhIENvcnBvcmF0aW9uDQogKiAgICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLg0KICogIA0KLSogIAlSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0qICAJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQotKiAgCWFyZSBtZXQ6
DQorKiAgICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dA0KKyogICAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisqICAgICAgYXJlIG1ldDoN
CiAqICANCiAqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCkBAIC0yNCwxOCArMjQsMTgg
QEANCiAqICAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQNCiAqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKiAgDQotKiAgCVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMNCi0qICAJIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QNCi0qICAJTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQotKiAgCUEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQot
KiAgCU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLA0KLSogIAlTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQotKiAgCUxJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KLSogIAlE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkNCi0qICAJVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KLSogIAkoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0KLSogIAlVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
DQotKiAgCURBTUFHRS4NCisqICAgICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKyogICAgICAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyog
ICAgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1INCisqICAgICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisqICAgICAgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsDQorKiAgICAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QNCisqICAgICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorKiAgICAgIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQ0KKyogICAgICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorKiAgICAgIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFDQorKiAgICAgIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0gNCisqICAgICAgREFNQUdFLg0KICogIA0KICogICAgUGxlYXNlIHNlZSBmaWxlIHBhdGVu
dGxpY2Vuc2UudHh0IGZvciBmdXJ0aGVyIGdyYW50cy4NCiAqID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KQEAgLTMyNSw4ICszMjUsOCBAQA0KICAgICAgICAgICAgIGlmIChpID4gbWFya2VyKQ0KICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgIFRQdHJDOCBtaW1lRmlsZUV4dDgoYU1J
TUVEZXNjcmlwdGlvbi5NaWQobWFya2VyLGktbWFya2VyKSk7DQotCSAgICAgICAgICAgIG5ld01p
bWVGaWxlRXh0RW50cnkgPSBIQnVmQzo6TmV3TEMoaS1tYXJrZXIpOw0KLQkgICAgICAgICAgICBu
ZXdNaW1lRmlsZUV4dEVudHJ5LT5EZXMoKS5Db3B5KG1pbWVGaWxlRXh0OCk7DQorICAgICAgICAg
ICAgICAgIG5ld01pbWVGaWxlRXh0RW50cnkgPSBIQnVmQzo6TmV3TEMoaS1tYXJrZXIpOw0KKyAg
ICAgICAgICAgICAgICBuZXdNaW1lRmlsZUV4dEVudHJ5LT5EZXMoKS5Db3B5KG1pbWVGaWxlRXh0
OCk7DQogICAgICAgICAgICAgICAgIFVzZXI6OkxlYXZlSWZFcnJvcihpTWltZUZpbGVFeHRlbnNp
b25zLkFwcGVuZChuZXdNaW1lRmlsZUV4dEVudHJ5KSk7DQogICAgICAgICAgICAgICAgIENsZWFu
dXBTdGFjazo6UG9wKCk7IC8vcG9wIG5ld01pbWVGaWxlRXh0RW50cnkNCiANCkBAIC0zNjYsOCAr
MzY2LDggQEANCiAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgIC8v
IENyZWF0ZSBuZXcgbWltZURlc2NyaXB0aW9uIGVudHJ5DQogICAgICAgICAgICAgICAgICAgICBU
UHRyQzggbWltZURlc2M4KGFNSU1FRGVzY3JpcHRpb24uTWlkKG1hcmtlcixpLW1hcmtlcikpOw0K
LQkJICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnkgPSBIQnVmQzo6TmV3TEMoaS1t
YXJrZXIpOw0KLQkJICAgICAgICAgICAgbmV3TWltZURlc2NyaXB0aW9uRW50cnktPkRlcygpLkNv
cHkobWltZURlc2M4KTsNCisgICAgICAgICAgICAgICAgICAgIG5ld01pbWVEZXNjcmlwdGlvbkVu
dHJ5ID0gSEJ1ZkM6Ok5ld0xDKGktbWFya2VyKTsNCisgICAgICAgICAgICAgICAgICAgIG5ld01p
bWVEZXNjcmlwdGlvbkVudHJ5LT5EZXMoKS5Db3B5KG1pbWVEZXNjOCk7DQogDQogICAgICAgICAg
ICAgICAgICAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoaU1pbWVEZXNjcmlwdGlvbnMuQXBwZW5kKG5l
d01pbWVEZXNjcmlwdGlvbkVudHJ5KSk7DQogICAgICAgICAgICAgICAgICAgICBDbGVhbnVwU3Rh
Y2s6OlBvcCgpOyAgLy9wb3AgbmV3TWltZURlc2NyaXB0aW9uRW50cnkNCkBAIC01MjEsNyArNTIx
LDI4IEBADQogICAgIHJldHVybiBkb25lSW5pdDsNCiAgICAgfQ0KIA0KKyNpZmRlZiAgUkRfQlJP
V1NFUl9XSURHRVRTDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDUGx1Z2luSGFuZGxl
cjo6SW5pdGlhbGl6ZQ0KKy8vDQorLy8gSW5pdGlhbGl6ZXMgdGhlIFBsdWdpbkhhbmRsZXIsIHBv
c3NpYmx5IGFzeW5jaHJvbm91c2x5DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK1RC
b29sIENQbHVnaW5IYW5kbGVyOjpMb2FkUGx1Z2luc1N5bmNMKCkNCisgICAgew0KKyAgICBpZigg
aVBsdWdpbkluZm9BcnJheS5Db3VudCgpICE9IDAgKQ0KKyAgICAgICAgew0KKyAgICAgICAgcmV0
dXJuIEVUcnVlOw0KKyAgICAgICAgfQ0KKw0KKyAgICAvL0NhbmNlbCB0aGUgZWFybGllciByZXF1
ZXN0IGFuZCBsb2FkIHBsdWdpbnMgbm93DQorICAgIGlmKCBpSWRsZSApDQorICAgICAgICB7DQor
ICAgICAgICBpSWRsZS0+Q2FuY2VsKCk7DQorICAgICAgICB9DQorICAgIHJldHVybiBMb2FkUGx1
Z2luc0woKTsNCisgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIC8vIENQbHVn
aW5IYW5kbGVyOjpMb2FkUGx1Z2luc0wNCiAvLw0KIC8vIExvYWRzIGFsbCB0aGUgcGx1Z2lucyBh
bmQgcXVlcnkgdGhlbSBmb3IgZGV0YWlscy4NCkBAIC01MzUsMzIgKzU1NiwzMiBAQA0KICAgICAv
LyBDcmVhdGUgdGhlIEVDb20gaW5mbyBhcnJheSwgY29udGFpbnMgdGhlIHBsdWdpbiBpbmZvcm1h
dGlvbg0KICAgICBSSW1wbEluZm9QdHJBcnJheSBlY29tUGx1Z2luSW5mb0FycmF5Ow0KIA0KLQkv
LyBHZXQgbGlzdCBvZiBFQ09NIHBsdWdpbnMgdGhhdCBtYXRjaCB0aGUgS05Ccm93c2VyUGx1Z2lu
SW50ZXJmYWNlVWlkDQotCVJFQ29tU2Vzc2lvbjo6TGlzdEltcGxlbWVudGF0aW9uc0woS0Jyb3dz
ZXJQbHVnaW5JbnRlcmZhY2VVaWQsIGVjb21QbHVnaW5JbmZvQXJyYXkpOw0KKyAgICAvLyBHZXQg
bGlzdCBvZiBFQ09NIHBsdWdpbnMgdGhhdCBtYXRjaCB0aGUgS05Ccm93c2VyUGx1Z2luSW50ZXJm
YWNlVWlkDQorICAgIFJFQ29tU2Vzc2lvbjo6TGlzdEltcGxlbWVudGF0aW9uc0woS0Jyb3dzZXJQ
bHVnaW5JbnRlcmZhY2VVaWQsIGVjb21QbHVnaW5JbmZvQXJyYXkpOw0KIA0KLQkvLyBMb29wIHRo
cm91Z2ggYWxsIHRoZSBOZXRzY2FwZSBwbHVnaW5zIGZvdW5kIGJ5IEVDb20gYW5kIHBvcHVsYXRl
IHRoZQ0KLQkvLyBpUGx1Z2luSW5mb0FycmF5DQotCWNvbnN0IFRJbnQgcGx1Z2luQ291bnQgPSBl
Y29tUGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQotCWZvciAoVEludCBpbmRleD0wOyBpbmRleDxw
bHVnaW5Db3VudDsgKytpbmRleCkNCisgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgTmV0c2Nh
cGUgcGx1Z2lucyBmb3VuZCBieSBFQ29tIGFuZCBwb3B1bGF0ZSB0aGUNCisgICAgLy8gaVBsdWdp
bkluZm9BcnJheQ0KKyAgICBjb25zdCBUSW50IHBsdWdpbkNvdW50ID0gZWNvbVBsdWdpbkluZm9B
cnJheS5Db3VudCgpOw0KKyAgICBmb3IgKFRJbnQgaW5kZXg9MDsgaW5kZXg8cGx1Z2luQ291bnQ7
ICsraW5kZXgpDQogICAgICAgICB7DQotCQlDUGx1Z2luSW5mbyogcGx1Z2luSW5mbyA9IG5ldyhF
TGVhdmUpIENQbHVnaW5JbmZvOw0KLQkgICAgcGx1Z2luSW5mby0+aUhhbmRsZSA9IGlOZXh0SGFu
ZGxlKys7DQotCSAgICBDbGVhbnVwU3RhY2s6OlB1c2hMKHBsdWdpbkluZm8pOw0KKyAgICAgICAg
Q1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBuZXcoRUxlYXZlKSBDUGx1Z2luSW5mbzsNCisgICAg
ICAgIHBsdWdpbkluZm8tPmlIYW5kbGUgPSBpTmV4dEhhbmRsZSsrOw0KKyAgICAgICAgQ2xlYW51
cFN0YWNrOjpQdXNoTChwbHVnaW5JbmZvKTsNCiANCi0JICAgIC8vIFNldCB0aGUgcGx1Z2luIHBy
b3BlcnRpZXMNCi0JICAgIHBsdWdpbkluZm8tPmlQbHVnaW5JbmZvID0gZWNvbVBsdWdpbkluZm9B
cnJheVtpbmRleF07DQotCSAgICAvLyBSZWFkIHRoZSBwbHVnaW4ncyBuYW1lIGFuZCBwbHVnaW4g
RmlsZU5hbWUgKGRpc3BsYXlfbmFtZSkgZnJvbSB0aGUgSU1QTEVNRU5UQVRJT05fSU5GTw0KLQkg
ICAgcGx1Z2luSW5mby0+UGFyc2VEaXNwbGF5TmFtZUwocGx1Z2luSW5mby0+aVBsdWdpbkluZm8t
PkRpc3BsYXlOYW1lKCkpOw0KLQkgICAgcGx1Z2luSW5mby0+aURlc2NyaXB0aW9uID0gSEJ1ZkM6
Ok5ld0wocGx1Z2luSW5mby0+aVBsdWdpbkluZm8tPk9wYXF1ZURhdGEoKS5MZW5ndGgoKSk7DQot
CSAgICBwbHVnaW5JbmZvLT5pRGVzY3JpcHRpb24tPkRlcygpLkNvcHkocGx1Z2luSW5mby0+aVBs
dWdpbkluZm8tPk9wYXF1ZURhdGEoKSk7DQotCSAgICBwbHVnaW5JbmZvLT5pVWlkID0gcGx1Z2lu
SW5mby0+aVBsdWdpbkluZm8tPkltcGxlbWVudGF0aW9uVWlkKCk7DQotCSAgICAvLyBQYXJzZXMg
dGhlIGFNSU1FRGVzY3JpcHRpb24gc3RyaW5nIHRvIHBvcHVsYXRlIHRoZSBtaW1lVHlwZXMsIG1p
bWVFeHRlbnNpb25zLA0KLQkgICAgLy8gYW5kIG1pbWVEZXNjcmlwdGlvbnMgYXJyYXlzLg0KLQkg
ICAgcGx1Z2luSW5mby0+UGFyc2VEZWZhdWx0RGF0YUwocGx1Z2luSW5mby0+aVBsdWdpbkluZm8t
PkRhdGFUeXBlKCkpOw0KKyAgICAgICAgLy8gU2V0IHRoZSBwbHVnaW4gcHJvcGVydGllcw0KKyAg
ICAgICAgcGx1Z2luSW5mby0+aVBsdWdpbkluZm8gPSBlY29tUGx1Z2luSW5mb0FycmF5W2luZGV4
XTsNCisgICAgICAgIC8vIFJlYWQgdGhlIHBsdWdpbidzIG5hbWUgYW5kIHBsdWdpbiBGaWxlTmFt
ZSAoZGlzcGxheV9uYW1lKSBmcm9tIHRoZSBJTVBMRU1FTlRBVElPTl9JTkZPDQorICAgICAgICBw
bHVnaW5JbmZvLT5QYXJzZURpc3BsYXlOYW1lTChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+RGlz
cGxheU5hbWUoKSk7DQorICAgICAgICBwbHVnaW5JbmZvLT5pRGVzY3JpcHRpb24gPSBIQnVmQzo6
TmV3TChwbHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+T3BhcXVlRGF0YSgpLkxlbmd0aCgpKTsNCisg
ICAgICAgIHBsdWdpbkluZm8tPmlEZXNjcmlwdGlvbi0+RGVzKCkuQ29weShwbHVnaW5JbmZvLT5p
UGx1Z2luSW5mby0+T3BhcXVlRGF0YSgpKTsNCisgICAgICAgIHBsdWdpbkluZm8tPmlVaWQgPSBw
bHVnaW5JbmZvLT5pUGx1Z2luSW5mby0+SW1wbGVtZW50YXRpb25VaWQoKTsNCisgICAgICAgIC8v
IFBhcnNlcyB0aGUgYU1JTUVEZXNjcmlwdGlvbiBzdHJpbmcgdG8gcG9wdWxhdGUgdGhlIG1pbWVU
eXBlcywgbWltZUV4dGVuc2lvbnMsDQorICAgICAgICAvLyBhbmQgbWltZURlc2NyaXB0aW9ucyBh
cnJheXMuDQorICAgICAgICBwbHVnaW5JbmZvLT5QYXJzZURlZmF1bHREYXRhTChwbHVnaW5JbmZv
LT5pUGx1Z2luSW5mby0+RGF0YVR5cGUoKSk7DQogDQotCSAgICAvLyBBZGQgdGhlIGZpbHRlciBp
bmZvcm1hdGlvbiB0byB0aGUgbGlzdA0KLQkgICAgVXNlcjo6TGVhdmVJZkVycm9yKGlQbHVnaW5J
bmZvQXJyYXkuQXBwZW5kKHBsdWdpbkluZm8pKTsNCi0JICAgIENsZWFudXBTdGFjazo6UG9wKCk7
ICAgIC8vIHBsdWdpbkluZm8NCisgICAgICAgIC8vIEFkZCB0aGUgZmlsdGVyIGluZm9ybWF0aW9u
IHRvIHRoZSBsaXN0DQorICAgICAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoaVBsdWdpbkluZm9BcnJh
eS5BcHBlbmQocGx1Z2luSW5mbykpOw0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsgICAg
Ly8gcGx1Z2luSW5mbw0KICAgICAgICAgfQ0KIA0KICAgICAvLyBDbGVhbiB1cCB0aGUgRUNvbSBp
bmZvIGFycmF5DQpAQCAtNzE5LDcgKzc0MCw3IEBADQogLy8NCiB2b2lkIENQbHVnaW5IYW5kbGVy
OjpSZWxvYWRQbHVnaW5zKFRCb29sIGFSZWxvYWRQYWdlcywgIE1XZWJDbGllbnRCcmlkZ2UmIGFX
ZWJDbGllbnRCcmlkZ2UpDQogICAgew0KLQlUUkFQX0lHTk9SRSggUmVsb2FkUGx1Z2luc0woYVJl
bG9hZFBhZ2VzLCBhV2ViQ2xpZW50QnJpZGdlKSk7DQorICAgIFRSQVBfSUdOT1JFKCBSZWxvYWRQ
bHVnaW5zTChhUmVsb2FkUGFnZXMsIGFXZWJDbGllbnRCcmlkZ2UpKTsNCiAgICB9DQogDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC03MjksMTIgKzc1MCwxMiBAQA0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogVFB0ckMgQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdpbk5hbWUoVEludCBh
SW5kZXgpDQogICAgIHsNCi0gCUNQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9B
cnJheVthSW5kZXhdOw0KLSAJaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aU5hbWUpDQot
IAkgICB7DQotIAkgICByZXR1cm4gcGx1Z2luSW5mby0+TmFtZSgpLT5EZXMoKTsNCi0gCSAgIH0N
Ci0gCXJldHVybiBUUHRyQygpOw0KKyAgICAgQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1
Z2luSW5mb0FycmF5W2FJbmRleF07DQorICAgICBpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZv
LT5pTmFtZSkNCisgICAgICAgIHsNCisgICAgICAgIHJldHVybiBwbHVnaW5JbmZvLT5OYW1lKCkt
PkRlcygpOw0KKyAgICAgICAgfQ0KKyAgICAgcmV0dXJuIFRQdHJDKCk7DQogICAgIH0NCiANCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTc0NCwxMiArNzY1LDEyIEBADQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiBUUHRyQyBDUGx1Z2luSGFuZGxlcjo6R2V0UGx1Z2luRmlsZU5hbWUo
VEludCBhSW5kZXgpDQogICAgIHsNCi0gCUNQbHVnaW5JbmZvKiBwbHVnaW5JbmZvID0gaVBsdWdp
bkluZm9BcnJheVthSW5kZXhdOw0KLSAJaWYgKHBsdWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aUZp
bGVOYW1lKQ0KLSAJICAgew0KLSAJICAgcmV0dXJuIHBsdWdpbkluZm8tPkZpbGVOYW1lKCktPkRl
cygpOw0KLSAJICAgfQ0KLSAJcmV0dXJuIFRQdHJDKCk7DQorICAgICBDUGx1Z2luSW5mbyogcGx1
Z2luSW5mbyA9IGlQbHVnaW5JbmZvQXJyYXlbYUluZGV4XTsNCisgICAgIGlmIChwbHVnaW5JbmZv
ICYmIHBsdWdpbkluZm8tPmlGaWxlTmFtZSkNCisgICAgICAgIHsNCisgICAgICAgIHJldHVybiBw
bHVnaW5JbmZvLT5GaWxlTmFtZSgpLT5EZXMoKTsNCisgICAgICAgIH0NCisgICAgIHJldHVybiBU
UHRyQygpOw0KICAgICB9DQogDQogDQpAQCAtNzYwLDEyICs3ODEsMTIgQEANCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIFRQdHJDIENQbHVnaW5IYW5kbGVyOjpHZXRQbHVnaW5EZXNjcmlwdGlv
bihUSW50IGFJbmRleCkNCiAgICAgew0KLSAJQ1BsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBpUGx1
Z2luSW5mb0FycmF5W2FJbmRleF07DQotIAlpZiAocGx1Z2luSW5mbyAmJiBwbHVnaW5JbmZvLT5p
RGVzY3JpcHRpb24pDQotIAkgICB7DQotIAkgICByZXR1cm4gcGx1Z2luSW5mby0+RGVzY3JpcHRp
b24oKS0+RGVzKCk7DQotIAkgICB9DQotIAlyZXR1cm4gVFB0ckMoKTsNCisgICAgIENQbHVnaW5J
bmZvKiBwbHVnaW5JbmZvID0gaVBsdWdpbkluZm9BcnJheVthSW5kZXhdOw0KKyAgICAgaWYgKHBs
dWdpbkluZm8gJiYgcGx1Z2luSW5mby0+aURlc2NyaXB0aW9uKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgcmV0dXJuIHBsdWdpbkluZm8tPkRlc2NyaXB0aW9uKCktPkRlcygpOw0KKyAgICAgICAgfQ0K
KyAgICAgcmV0dXJuIFRQdHJDKCk7DQogICAgIH0NCiANCiANCkBAIC03NzcsOCArNzk4LDggQEAN
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIFRJbnQgQ1BsdWdpbkhhbmRsZXI6OkdldFBsdWdp
bkNvdW50KCkNCiAgICAgew0KLQlyZXR1cm4gaVBsdWdpbkluZm9BcnJheS5Db3VudCgpOw0KLQl9
DQorICAgIHJldHVybiBpUGx1Z2luSW5mb0FycmF5LkNvdW50KCk7DQorICAgIH0NCiANCiANCiAN
CkBAIC05MDYsNyArOTI3LDcgQEANCiAgICAgdG1wUGx1Z2luSW5mb0FycmF5LkNsb3NlKCk7DQog
ICAgIGlmIChhUmVsb2FkUGFnZXMpDQogICAgICAgICB7DQotCQlhV2ViQ2xpZW50QnJpZGdlLlJl
bG9hZCgpOw0KKyAgICAgICAgYVdlYkNsaWVudEJyaWRnZS5SZWxvYWQoKTsNCiAgICAgICAgIH0N
CiAgICAgfQ0KIA0KSW5kZXg6IFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpblNraW4uY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L1BsdWdpbi9zcmMvUGx1Z2luU2tpbi5jcHAJKHJldmlzaW9uIDE3
MDY5KQ0KKysrIFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpblNraW4uY3BwCSh3b3JraW5nIGNvcHkp
DQpAQCAtNjksNiArNjksOSBAQA0KICNpbmNsdWRlICJXZWJLaXRWaWV3LmgiDQogI2luY2x1ZGUg
IldlYktpdENvbnRyb2wuaCINCiAjaW5jbHVkZSAiV2ViQ29yZUdyYXBoaWNzQ29udGV4dC5oIg0K
KyNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQorI2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5o
Ig0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KIA0KIC8vIENPTlNUQU5UUw0KIC8vIHNj
aGVtZSBmb3IgUlRTUCB1cmwNCkBAIC0xNTUsNyArMTU4LDcgQEANCiAjZW5kaWYNCiAgICAgcmVw
LT5HZXQoIEtCcm93c2VyVXNCdWlsZCwgdmFsdWUgKTsNCiAgICAgZGVsZXRlIHJlcDsNCi0gICAg
DQorDQogICAgIGlmICggIXZhbHVlIHx8IGFDYW5QbHVnaW5JbnRlcmFjdCApDQogICAgICAgICB7
DQogICAgICAgICBpQ2FuUGx1Z2luSW50ZXJhY3QgPSBFVHJ1ZTsNCkBAIC0yMDQsNyArMjA3LDEy
IEBADQogICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7ICAvLyB1cmxT
Y2hlbWUNCiAgICAgICAgICAgICB9DQogDQorI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCisg
ICAgICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0RnJhbWUtPldlYktpdFZp
ZXcoKS5XZWJLaXRDb250cm9sKCkuV2lkZ2V0RXh0ZW5zaW9uKCk7DQorICAgICAgICBpZiAoIGJS
dHNwRm91bmQgfHwgKHdkZ3RFeHQgJiYgYVVybC5MZW5ndGgoKSA9PSAwKSkNCisjZWxzZQ0KICAg
ICAgICAgaWYgKCBiUnRzcEZvdW5kICkNCisjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgLy8gSWYgcnRzcCBzY2hlbWUgaW4gdXJsLCBwYXNz
IHRvIHBsdWdpbiBkaXJlY3RseSwNCiAgICAgICAgICAgICAvLyBhZnRlciB0aGUgYXR0cmlidXRl
IGFycmF5cyBpbml0aWFsaXplZA0KQEAgLTU1NSw3ICs1NjMsNyBAQA0KICAgICB7DQogICAgIC8v
IFRoZSBhTG9hZE1vZGUgaXMgbm90IGN1cnJlbnRseSB1c2VkLiAgSXQgd291bGQgYmUgdXNlZCBm
b3IgY2hlY2tpbmcgdGhlDQogICAgIC8vIGxvYWQgbW9kZSBhbmQgZGV0ZXJtaW5pbmcgaWYgdGhl
IHBsdWdpbiBzaG91bGQgYmUgZGVsZXRlZCBhbmQgcmVjcmVhdGVkLg0KLSAgICANCisNCiAgICAg
Ly8gQ3JlYXRlIHRoZSBQbHVnaW5XaW4sIGlmIGl0IGRvZXNuJ3QgZXhpc3QsDQogICAgIGlmICgg
IWlQbHVnaW5XaW4gKQ0KICAgICAgICAgew0KQEAgLTU2Myw3ICs1NzEsNyBAQA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICppQXR0cmlidXRlTmFtZXMsICppQXR0cmlidXRl
VmFsdWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0aGlzLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlXZWJLaXRGcmFtZS0+V2ViS2l0Vmll
dygpLldlYktpdENvbnRyb2woKSkgKTsNCi0gICAgICAgIA0KKw0KICAgICAgICAgaWYgKCBlcnIg
IT0gS0Vyck5vbmUgKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICBpZiAoIGVyciA9PSBL
RXJyTm90U3VwcG9ydGVkICkNCkBAIC01NzUsNyArNTgzLDcgQEANCiAgICAgICAgICAgICAgICAg
VXNlcjo6TGVhdmUoIGVyciApOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0K
LSAgICAgICAgICAgIA0KKw0KICAgICAgICAgaWYgKCAhaUlzU291bmRzdGFydCApDQogICAgICAg
ICAgICAgew0KICAgICAgICAgICAgIC8vIFJlZnJlc2gNCkBAIC02MTgsNyArNjI2LDcgQEANCiAg
ICAgQ0FycmF5Rml4RmxhdDxUQnJDdGxTZWxlY3RPcHRpb25EYXRhPiogb2JqTGlzdCA9IG5ldyAo
RUxlYXZlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0FycmF5Rml4RmxhdDxUQnJDdGxTZWxlY3RPcHRpb25EYXRhPigyKTsNCiAgICAgQ2xlYW51cFN0
YWNrOjpQdXNoTChvYmpMaXN0KTsNCi0gICAgDQorDQogICAgIC8vIEFkZCBvYmplY3QgbGlzdCBl
bnRyeQ0KICAgICBmb3IgKGludCBpPTA7IGk8MjsgaSsrKQ0KICAgICAgICAgew0KQEAgLTY1MCwx
MCArNjU4LDEwIEBADQogICAgIG9iakxpc3QtPlJlc2V0KCk7DQogICAgIENsZWFudXBTdGFjazo6
UG9wQW5kRGVzdHJveSggNCApOy8vIG9iakxpc3QsIHRleHQsIHRleHQsIHRpdGxlDQogICAgIH0N
Ci0gICAgDQorDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDUGx1Z2luU2tpbjo6SXNG
b2N1c2FibGUNCi0vLyANCisvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUQm9v
bCBDUGx1Z2luU2tpbjo6SXNGb2N1c2FibGUoKSBjb25zdA0KQEAgLTY2NCwzICs2NzIsMTAgQEAN
CiAgICAgICAgIHJldHVybiBFRmFsc2U7DQogICAgIH0NCiANCisjaWZkZWYgIFJEX0JST1dTRVJf
V0lER0VUUw0KK3ZvaWQqIENQbHVnaW5Ta2luOjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCkNCisg
ICAgew0KKyAgICByZXR1cm4gaVBsdWdpbldpbj9pUGx1Z2luV2luLT5QbHVnaW5TY3JpcHRhYmxl
T2JqZWN0KCk6MDsNCisgICAgfQ0KKyNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KKw0KSW5k
ZXg6IFdlYktpdC9QbHVnaW4vc3JjL1BsdWdpbldpbi5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvUGx1Z2luL3NyYy9QbHVnaW5XaW4uY3BwCShyZXZpc2lvbiAxNzA2OSkNCisrKyBXZWJLaXQv
UGx1Z2luL3NyYy9QbHVnaW5XaW4uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTMsNiArNTMsNyBA
QA0KICNpbmNsdWRlICJQbHVnaW5Ta2luLmgiDQogI2luY2x1ZGUgIlBsdWdpbkhhbmRsZXIuaCIN
CiAjaW5jbHVkZSAiV2ViS2l0Q29udHJvbC5oIg0KKyNpbmNsdWRlICJXZWJLaXRCcmlkZ2UuaCIN
CiANCiAvLyBDT05TVEFOVFMNCiBjb25zdCBUSW50IEtQbHVnaW5HcmFudWxhcml0eSA9IDM7DQpA
QCAtMTE5OSw4ICsxMjAwLDMzIEBADQogICAgICAgICB9ICAgICAgICAgICAgICAgICANCiAgIH0N
CiANCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8gIA0KK05QT2JqZWN0KiBDUGx1Z2luV2luOjpXaW5kb3dTY3JpcHROUE9iamVjdCgpDQor
ICAgIHsNCisgICAgcmV0dXJuIGlQbHVnaW5Ta2luLT5GcmFtZSgpLT5XZWJLaXRCcmlkZ2UoKS5X
ZWJDb3JlQnJpZGdlKCkuV2luZG93U2NyaXB0TlBPYmplY3QoKTsNCisgICAgfQ0KIA0KKw0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1BsdWdpbldpbjo6UGx1Z2luU2NyaXB0YWJsZU9i
amVjdCANCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICANCit2b2lkKiBDUGx1Z2luV2lu
OjpQbHVnaW5TY3JpcHRhYmxlT2JqZWN0KCkNCisgICAgew0KKyAgICBpZiAoaVBsdWdpbkZ1bmNz
LT5nZXR2YWx1ZSkgew0KKyAgICAgICAgdm9pZCAqdmFsdWUgPSAwOw0KKyAgICAgICAgTlBFcnJv
ciBucEVyciA9IGlQbHVnaW5GdW5jcy0+Z2V0dmFsdWUoIGlJbnN0YW5jZSwgTlBQVnBsdWdpblNj
cmlwdGFibGVOUE9iamVjdCwgKHZvaWQgKikmdmFsdWUpOw0KKyAgICAgICAgaWYgKG5wRXJyID09
IE5QRVJSX05PX0VSUk9SKSB7DQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOw0KKyAgICAgICAg
fQ0KKyAgICB9DQorICAgIHJldHVybiAodm9pZCAqKTA7ICAgIA0KKyAgICB9DQorI2VuZGlmIC8v
UkRfQlJPV1NFUl9XSURHRVRTDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDUGx1
Z2luV2luOjpJc0NvbnRlbnRJbnRlcmFjdGl2ZSgpDQogLy8gVGVsbHMgIHRoYXQgcGx1Z2luIGNv
bnRlbnQgY2FuIGFjY2VwdCB1c2VyIGludGVyYWN0aW9uLiANCiAvLyBUaGUgcmV0dXJuIHZhbHVl
IG9mIGlQbHVnaW5GdW5jcy0+Z2V0dmFsdWUgIjAiIG9yIGZhbHNlIG1lYW5zICBwbHVnaW4gaXMg
aW50ZXJhY3RpdmUuIA0KSW5kZXg6IFdlYktpdC9yb20vd2Via2l0LmlieQ0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9yb20vd2Via2l0LmlieQkocmV2aXNpb24gMTcwNjkpDQorKysgV2ViS2l0L3Jv
bS93ZWJraXQuaWJ5CSh3b3JraW5nIGNvcHkpDQpAQCAtNTgsNiArNTgsOSBAQA0KIGZpbGU9QUJJ
X0RJUlxCVUlMRF9ESVJcQnJvd3NlckNhY2hlLmRsbCAgICAgICAgICAgICAgICAgU0hBUkVEX0xJ
Ql9ESVJcQnJvd3NlckNhY2hlLmRsbA0KIGZpbGU9QUJJX0RJUlxCVUlMRF9ESVJcSGlzdG9yeVBy
b3ZpZGVyLmRsbCAgICAgICAgICAgICAgU0hBUkVEX0xJQl9ESVJcSGlzdG9yeVByb3ZpZGVyLmRs
bA0KIGZpbGU9QUJJX0RJUlxCVUlMRF9ESVJcVG9vbEJhci5kbGwgICAgICAgICAgICAgICAgICAg
ICAgU0hBUkVEX0xJQl9ESVJcVG9vbEJhci5kbGwNCisjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VU
Uw0KK2ZpbGU9QUJJX0RJUlxCVUlMRF9ESVJcV2lkZ2V0RW5naW5lLmRsbCAgICAgICAgICAgICAg
ICAgICAgICBTSEFSRURfTElCX0RJUlxXaWRnZXRFbmdpbmUuZGxsDQorI2VuZGlmIC8vUkRfQlJP
V1NFUl9XSURHRVRTDQogDQogRUNPTV9QTFVHSU4oQnJvd3NlclJlYy5kbGwsIDAxMDA1QTAyLnJz
YykNCiBFQ09NX1BMVUdJTihNZW1vcnlQbHVnaW4uZGxsLCBtZW1vcnlwbHVnaW4uUlNDKQ0K
</data>
<flag name="review"
          id="3851"
          type_id="1"
          status="+"
          setter="Sachin.Padma"
    />
          </attachment>
      

    </bug>

</bugzilla>